Compare commits

...

2082 Commits

Author SHA1 Message Date
Andy Miller
bcd93c321b try again
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-11-24 22:18:43 +00:00
Andy Miller
8bd711f6b1 fixes for versions
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-11-24 21:42:03 +00:00
Andy Miller
fa707eb7eb vendor updates
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-11-24 21:38:55 +00:00
Andy Miller
18d285ec36 Merge branch 'develop' of github.com:getgrav/grav into develop 2025-11-24 21:06:07 +00:00
Andy Miller
04c6bdf287 disallow xref/xhref in SVGs
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-11-24 21:05:53 +00:00
pmoreno.rodriguez
3ddc548d51 Add new Twig filter/function array_group_by for grouping arrays and collections (#3970) 2025-11-23 18:09:12 +00:00
Andy Miller
48343d7714 fix range requests for partial content in Utils::downloads() - Fixes #3990
Signed-off-by: Andy Miller <rhuk@mac.com>

# Conflicts:
#	system/src/Grav/Common/Utils.php
2025-11-23 18:03:28 +00:00
Andy Miller
9c27496cc1 test fixes + major/minor plugin warnings
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-11-12 13:05:37 +00:00
Andy Miller
fd51d33d3f added configurable snapshot pruning amount
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-11-11 19:30:05 +00:00
Andy Miller
7304612d3a some installer fixes
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-11-11 17:55:14 +00:00
Andy Miller
e6025670ea checkout correct version
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-11-11 15:16:47 +00:00
Andy Miller
92b3d5b1f8 preflight integration for cli
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-11-11 15:03:48 +00:00
Andy Miller
2ee3ff074c ui things
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-11-10 19:42:16 +00:00
Andy Miller
4fab5f99bb added back snapshots in Install.php
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-11-10 19:34:46 +00:00
Andy Miller
1d5d1357b8 simplified safe-upgrade
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-11-10 11:40:13 +00:00
Andy Miller
eb649c35a3 more simplification
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-11-09 21:55:01 +00:00
Andy Miller
9b75d96bbf simplify copy/permission process + fix safe-upgrade check
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-11-09 21:25:34 +00:00
Andy Miller
41d771da7c Merge tag '1.7.50.9' into develop
Release v1.7.50.9

# -----BEGIN PGP SIGNATURE-----
#
# iQIzBAABCAAdFiEEwbiolRD/eEYBHGp5nyzziuvbCuAFAmkQuXIACgkQnyzziuvb
# CuCQiQ/+NvgdESE8Rppn4V+nLkbHL2urMD+2y2TxGqS+hiCg4t3LIJNDPQ16sXoF
# xaWWsoHjcP+JBwktG/wgmYKetZGWEUpRoiu0n8MjfbeZEg69vabNt9GSEBV0x/vl
# 3z1QUd6ZBSg794ZKL8EtEsQlApjqUg8l3VDtp+0jhmXHFjvULYazHR96Pk5jLrH7
# 35VF1d74dCcpJzkZVHqScSpofQkPsOiPe/WqD4j3HP7YaC3GT7ET4xS6bnWVDCOQ
# UYZjj23HAhiuzV5yLcsq3LK0X3jG/cArdvNjzJvYiswtURp/FmxlQ4Yph36esPAH
# os/4L6pFs608fhrJdWQ5/HE+1xf9SKDryRRynADxdMfsqmMJ1L9eS6uqeR6dIoTl
# 79cn/0yf6dipUbhErR3Mgaa/6Z3lo3O2uwJ0oUEEWT1Kqd7if9Bt6akD7HWxEsle
# hAn3NPSvB1O25Xye9gIq03ulkqOEKBQ3kODDXGbVYr227vlO8c/8JjMhXIum8EuI
# PdvXniaTYPPh93AnF7GIjmnZTpT9N9xT8hpyMMfXbEkigOHiBwEG5WFMQcpuoyG5
# vDOBPMVeiz+44tJFWfe+dGTS+kE+3FK3Quy2sfp7uAN/HUHlTlNpRirdcAUzPJDu
# JGy0itWQMuBUnOohlLBa2ytogLr6OOSjUwe0+KrAEAXUpPDzvO8=
# =iopS
# -----END PGP SIGNATURE-----
# gpg: Signature made Sun Nov  9 15:55:30 2025 GMT
# gpg:                using RSA key C1B8A89510FF7846011C6A799F2CF38AEBDB0AE0
# gpg: Good signature from "Andy Miller <rhuk@mac.com>" [ultimate]
2025-11-09 15:55:30 +00:00
Andy Miller
7e3fccce54 Merge branch 'release/1.7.50.9' 2025-11-09 15:55:30 +00:00
Andy Miller
48c6d2eb93 prepare for release
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-11-09 15:55:20 +00:00
Andy Miller
e86820d438 update changelog
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-11-09 15:54:44 +00:00
Andy Miller
4c324ef4b8 don’t error when trying to force —safe
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-11-09 15:50:42 +00:00
Andy Miller
a07a1b332a test fixes
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-11-09 13:11:41 +00:00
Andy Miller
c8204f442a major/minor upgrade warnings
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-11-09 12:52:04 +00:00
Andy Miller
ba479007ac less confusing messages
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-11-09 12:07:46 +00:00
Andy Miller
38494b2c1c fall back to safe upgrade
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-11-08 19:54:20 +00:00
Andy Miller
ba3e0686a6 revert testing repo
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-11-08 12:17:49 +00:00
Andy Miller
f0ed8e0ea0 some more fixes
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-11-08 11:43:50 +00:00
Andy Miller
02fbe27efd fix some errors after upgrade
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-11-08 11:08:45 +00:00
Andy Miller
cfa18a8fd1 mostly working
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-11-08 11:03:50 +00:00
Andy Miller
89f44631bd Merge branch 'release/1.7.50.8' 2025-11-06 18:56:04 +00:00
Andy Miller
2f2f1e518d Merge tag '1.7.50.8' into develop
Release v1.7.50.8

# -----BEGIN PGP SIGNATURE-----
#
# iQIzBAABCAAdFiEEwbiolRD/eEYBHGp5nyzziuvbCuAFAmkM70QACgkQnyzziuvb
# CuCj0Q/7Bscki0vFiumTFx7GUg/MQ+N29qbAsEoDe/VDoaFn73P/kqioNN6EPMBm
# 3rqo9J679nQWWCfEfXw2KdvzxiP1aHf+KFnQUD4M5sw/wYdJ/SBH5R+CI9/7NNgM
# YC+ZDqf32d9fr/iGH7fdGwzxbt+GWJD+turD/40TMuZUT49LY5gymXE4X8Q7f2qS
# 6aCHLfjo+pZWkcOH34j0jRFUUM20+Tbzyea3Y7cSRVSf/DnkGIhBAhcsHYTc5dez
# b1NLLBLPuYCcOBFxWHDBTaOiYzV8ZlxuKbWOop1y6Ak2Q5fzGhrewAbhGtT6RXOj
# 90BTjeN1M0A9VOGCjdlhoK+zLzjy2BDmEh/qGeXwGg8GXe7eOxeZok4/DQisl3Uz
# nVUj/VZk9czv2QdmsC3D4jPCOSoqzM9lsJ/HSoSAqfxlQf8Li/YwLYYHw2vold3P
# xqv/KO/uoLV30oR3Q/btvZN+//cIFb6wAA9MoASQ0FjRMe4vHQMcRQFyMX3lnHDV
# MTFSJwmEmSwZCQkr+L9Y4QdX0+6YIgJv0WO9sIj29V9VLLD2VGkDWXdBE1ntx54j
# ozCBrTBBydpDlcEgfprecBjObfA+jc80EGg5YFYLNOT8PJQ3/wRMelYZ8DM9/w8D
# nr9pM4l9/CIFG/Qt7JU5VlrNYsvKEBTx3niy6H8bk8x2sLnju1s=
# =qREv
# -----END PGP SIGNATURE-----
# gpg: Signature made Thu Nov  6 18:56:04 2025 GMT
# gpg:                using RSA key C1B8A89510FF7846011C6A799F2CF38AEBDB0AE0
# gpg: Good signature from "Andy Miller <rhuk@mac.com>" [ultimate]
2025-11-06 18:56:04 +00:00
Andy Miller
682109bf3b prepare for release
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-11-06 18:55:56 +00:00
Andy Miller
f420db0eea has some legit uses - this is actually causing problems
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-11-06 18:36:57 +00:00
Andy Miller
c6764f9815 removed check causing false positives
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-11-06 18:36:57 +00:00
Andy Miller
a2f944e6c7 Merge branch 'release/1.7.50.7' 2025-11-05 23:39:36 +00:00
Andy Miller
68ff6ae342 Merge tag '1.7.50.7' into develop
Release 1.7.50.7

# -----BEGIN PGP SIGNATURE-----
#
# iQIzBAABCAAdFiEEwbiolRD/eEYBHGp5nyzziuvbCuAFAmkL4DgACgkQnyzziuvb
# CuCoSw//UiX7orbI5Qcel8ZUELHJJDhyq2AGmfg58gvyaUC/VqKY4HdAOGesDNgr
# Qo/FsJ56wKgizXlv1G4k955MZas6oN6IkGTPDl0xjnvYq3Nuxoe3m5zYRAmitgk6
# j8BA2aTdK4erGuxDa9WKJMLOGaen4OrGKIO9WfpuKKs8sP80Z69uPXFnVZIqWPx2
# 5N0yUfo0nnBsigumFBrMbsxLxi56iMRIxpJQ6p7iRRSoXdridO+LVlHlj8l6oWrN
# B1AUYbltUUnX5yJwyoxyktT9kOJ7FEY5OnUw+Cg0hthS07TukymmrrZM+tDjM2Lc
# gKTTH8tQRwao3PFyvoVnMB2Ox+hkqoZMzsivsccQxVNle1wdydvrZ1pwGWh0ynlg
# S42hFEVnpE4o3mbAt2NzCerx5vdjkrUSMBITG6bol2jmyglZx3fy0lNLwMUo9WGV
# djg+yzk8MW/qtTwhGcBr4nfD2bTM9LhSjHHTjanqiWPf+nM19rmhoWQsRI477br4
# Do7XCfvk6/GN6aOfgoJE1DumwMQO+lm23HxzwZ888i3N5mqrk8JixPRt1a1HbMLX
# anoXSlAtqwy4m2Ql1KsTmM8CgLU+ZDsp2uTsTQ9gTpfgoYBTrrZN7v/9Yb2YT9rf
# 1769MwoNQq1Wumnpl7SNv29kcMeq2XZNP1AU0LvtML+vBGMigMA=
# =VlDG
# -----END PGP SIGNATURE-----
# gpg: Signature made Wed Nov  5 23:39:36 2025 GMT
# gpg:                using RSA key C1B8A89510FF7846011C6A799F2CF38AEBDB0AE0
# gpg: Good signature from "Andy Miller <rhuk@mac.com>" [ultimate]
2025-11-05 23:39:36 +00:00
Andy Miller
505fc208bb prepare for release
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-11-05 23:39:25 +00:00
Andy Miller
cd50bd6d63 update clean commant
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-11-05 23:38:31 +00:00
Andy Miller
0278eb17cb Merge branch 'release/1.7.50.7' 2025-11-05 23:25:26 +00:00
Andy Miller
14fba5170e Merge tag '1.7.50.7' into develop
Release 1.7.50.7

# -----BEGIN PGP SIGNATURE-----
#
# iQIzBAABCAAdFiEEwbiolRD/eEYBHGp5nyzziuvbCuAFAmkL3OYACgkQnyzziuvb
# CuBXag/+Lo9xqsP8XsArdYjyjxAaKFOJikXKEtEwwyYpPgfPFLvX29TJHitqRsJ0
# /Dhd+gSWDzQ1jectvl1Acbffelb3PE95SWLB7pnc/TKlFGLd2JB6p36hb9jO+Moo
# MB9h3X2jTnf0GzxRCBa8Ih+sTvE2ski1DDscavaQ4yyEqpJrkW6hyat6io4ZAAQT
# Th68wgcSBoYRTgt2zbj+W8lOU9sS46rF3sFZn5ysfAl+bH8s+dFSZZMIi4NyhCcB
# O+C3DxQbIvwHO+LT5OPiDHI+2JhSeW/QM5eTD5fqATBSyBjYH55LuOHc8iWOHEyw
# 6oA89Egxxd+EKhwblIOCNvQa0ZOiABefup9oYp+60K/WDtV6lmEFRIttFflyOuwT
# P038XnvitQp1aKL664G4WqjNrOYgSaQvRPUQkDyD9lQQbZ5g7AwsgYztt9d9yNQO
# dXOhwyScK9yMU0roKNYEvknzHCkd8OwXXa4o54xwElRHid/T0FKNPpeEz7LVNLeY
# UKKzWt7AaXTkde/A0JM+OSD+bfRHShGc802dgNaRXuyaCVHPmNtbzluCAJ/YrDh8
# Vby/nBvZVBYLFN2A4pJ/URGb1JN3TpFW8KfMBdfY/PVF/T1kHEDWtOlh2smX/qG2
# YcxsZEmqvo7JwA9wBKgUyhgamE1K/SUSOrv8RgZPNlLD5n1CF30=
# =GlG4
# -----END PGP SIGNATURE-----
# gpg: Signature made Wed Nov  5 23:25:26 2025 GMT
# gpg:                using RSA key C1B8A89510FF7846011C6A799F2CF38AEBDB0AE0
# gpg: Good signature from "Andy Miller <rhuk@mac.com>" [ultimate]
2025-11-05 23:25:26 +00:00
Andy Miller
5af47f0634 prepare for release
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-11-05 23:25:15 +00:00
Andy Miller
6263a34c09 update changelog
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-11-05 23:24:46 +00:00
Andy Miller
5a6c00f68c ignore .github and .phan folders, fixed path check
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-11-05 23:23:18 +00:00
Andy Miller
52a8854f6b Merge branch 'release/1.7.50.6' 2025-11-05 21:27:00 +00:00
Andy Miller
945cd6aa8f Merge tag '1.7.50.6' into develop
Release v1.7.50.6

# -----BEGIN PGP SIGNATURE-----
#
# iQIzBAABCAAdFiEEwbiolRD/eEYBHGp5nyzziuvbCuAFAmkLwSQACgkQnyzziuvb
# CuBW1BAAsRPsRLDq2LOVC8pUcHlzJFV+0Yiz3752xchS/4nubg7xO4cjvdkvqtoL
# MOu/s7/DpbEQYP5nGjEQVmo1pug1YnybPprlTGcoT1Swfw0YIrHPnO8WmpPaPYKp
# zKUhkD+n6FNVKA+GhvjXcK7JsB1EbtIC4348uTNKen8zzSSs0EV+k3GhQ0CMxAft
# XgnIHddn4evlJ9MaV1JswJNZs2+BextRd3M4zEdDbvTfnsAZZsb7MOrQSfgl8VbI
# QLAA6ZAQBWlDUkHTMWa2n1ocZAbm12kl8OGfR1hgPjodCQ1eEwE6HQK1Cg4W3M2d
# 6EGI8Iteb5yMTGMa1CN5M9YfPFDM83ngTMYHdAJrztfOD3Bctibg+14oHsdYB5c8
# LbPTxlVIc/9JVyS+cfKtNtCtWLFxzlEs3EMvBaBbFIQze6GxTsw9Dq6GQwqA8CA6
# hCKl4stQwTCCv+UMPB1eEbljAYM5TmVzCndTSTTw6urIyb6to/ITPcofbFzzfwgn
# tFJxTG+p3OFLd1lOp4rxb2UWqNTq1T/TEPtxZD1zijgX+0N4kdgVTY8U1p/GNduF
# m4tXlGzBX+mHPIwkJIGZoJJwH9TmWm/tviRgXNDIM2bHTzY9NmYGnQC7zbv3LzE1
# pGbc2Z11P3faC0xPFlY2nFOBKv+n6hPEGBifPWjJwKiB+s4V35k=
# =/gqY
# -----END PGP SIGNATURE-----
# gpg: Signature made Wed Nov  5 21:27:00 2025 GMT
# gpg:                using RSA key C1B8A89510FF7846011C6A799F2CF38AEBDB0AE0
# gpg: Good signature from "Andy Miller <rhuk@mac.com>" [ultimate]
2025-11-05 21:27:00 +00:00
Andy Miller
070b53180d prepare for release
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-11-05 21:26:47 +00:00
Andy Miller
042b845b8d don’t copy non-upgrade root folders
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-11-05 21:23:23 +00:00
Andy Miller
84b3a9e68e Merge branch 'release/1.7.50.5' 2025-11-05 18:39:40 +00:00
Andy Miller
70a2e668ec Merge tag '1.7.50.5' into develop
Release v1.7.50.5

# -----BEGIN PGP SIGNATURE-----
#
# iQIzBAABCAAdFiEEwbiolRD/eEYBHGp5nyzziuvbCuAFAmkLmewACgkQnyzziuvb
# CuC3sBAAqBgVbWmZbwB7GsTYphx3teLPIvEz+GG80LL4w97oGnoxi7IhoRKDUqPd
# QAOMV81J7+R8DLS7+WJyGwZtdjc5rNVicyJgH4+A8PLXJwxt5Dsw/uE6DfOWtfTp
# oNBznCgi1ocva5VFUg1ypPAevyfb2pM2XrwWNjPDcwpXFUZhB8SwA6aGQfwQMTHq
# CdAyEw6GNqzA4LN0Ko8jEipquWrqeQterT0UkGy4VNAs222D03vhhU3G5SQ7qDt6
# ExoNdAjhMq5lRhAJavFsO1vb67OaNCoiYk0XN0t8xM8GqBqDu6+Kliecmq2G6i8T
# KlL2W2vM3C69ScsR/vDqa4ITnDxyVUbXVdPhS8zQPymFG/E641O7vaVparPs75bt
# wvTZEcqgt4w2KCHwLkVqtw5khduUT10tBfogfuCRj4FpPMgbwOUMhpjgyRYNMx/K
# PaeZT0GJTI3m+p8oXb+Dph0zAGrqwJZlfxLeLXd9lGMZdvdM5yZob356ppaYKR9H
# tUwGkuolBNxJ40EuqHIptAPvztexPuatD/cu/GPqqBl6zAQByBA7beFEEdKKrvaX
# XGrHMl64wRmE1sxf6sAuFQUnpDJ546cuIry49lNtM48wY08ulpatcq5BkxKb6V4/
# w5LjCMzAdlNiE5Ztrq3taoSHcVGOjqIuOQjtgYvnrX3+yryKHOA=
# =Tb9i
# -----END PGP SIGNATURE-----
# gpg: Signature made Wed Nov  5 18:39:40 2025 GMT
# gpg:                using RSA key C1B8A89510FF7846011C6A799F2CF38AEBDB0AE0
# gpg: Good signature from "Andy Miller <rhuk@mac.com>" [ultimate]
2025-11-05 18:39:40 +00:00
Andy Miller
e04391484e prepare for release
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-11-05 18:39:30 +00:00
Andy Miller
6d72867bef more safeupgrade fixes
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-11-05 18:30:42 +00:00
Andy Miller
7e8c0e3f6f selfupgrade fix
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-11-04 14:13:03 +00:00
Andy Miller
4adc7672ac add preflight command and —safe and —legacy for self-upgrade
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-11-04 14:08:25 +00:00
Andy Miller
dd89d7e25b improved js assets pipline handling to support defer
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-11-03 23:49:20 +00:00
Andy Miller
ce817c1bd1 Merge branch 'release/1.7.50.4' 2025-10-31 19:12:03 +00:00
Andy Miller
918bfc6f2b Merge tag '1.7.50.4' into develop
Release v1.7.50.4

# -----BEGIN PGP SIGNATURE-----
#
# iQIzBAABCAAdFiEEwbiolRD/eEYBHGp5nyzziuvbCuAFAmkFCgMACgkQnyzziuvb
# CuBcMRAAlWFsBs1sXbLrm6x/nX1gwWWZ/PPYvCp7Hl00cylAa4WnaUxTqcTyobld
# LoXwOZARivW7Vxxj1FTFBFtCAx4v2V2UcIJ0EZCMDBPpV6YIoIryggqghO3IMJaH
# H44bnKahRrVQMdfcXtM0A9RZY3zU4HVXe2loybINAGl86TPMINGdfWEf2ePJlmdO
# lrv/ACuBXiF++lHjBqor6uSltHTIPmq0AVEbd3jnvnGF1isikPi2CN5mECf9pd0p
# 74rU3eNhiHCrkj2eN0NsmOkxaaY4Ri20OMgP6OE+sotNy3O47FlHNn2o7pZ3kt4i
# ejRHbsrcqvEEi35+xsXiz2kNFJ7PyHJIgsTLtjrXvVd7dTsJTJEoG3cXuv1ZsPhg
# w0Nd/eWCwuWBLzrU5+/gaaIlSODAdIzJHjW7g2WxhUcHYaKnxqs13hSzaIGgyBzN
# xXMrXSMNoPaXu7z5UI/nEjWfAxJkcc+nJxHHgXICtpMcHAXlgqPT8ZPy23lCqfVg
# qihPI1zpEWq97R8Gl0SH8NQLtgAoz5TfomTlnXSIVtOu6V7htoFErmVSSzyH73iX
# 2BvxRiSWk4y9Vei6LAVkRWZ5WiCKUTTID3VDI98D8FpgzNZaDnUqEJTOgAlHAfxo
# OSIDOmvp9IkRyHnrluuBrRh97iTxC3N24qMRuwUqeb2QHSy472Q=
# =1FsF
# -----END PGP SIGNATURE-----
# gpg: Signature made Fri Oct 31 19:12:03 2025 GMT
# gpg:                using RSA key C1B8A89510FF7846011C6A799F2CF38AEBDB0AE0
# gpg: Good signature from "Andy Miller <rhuk@mac.com>" [ultimate]
2025-10-31 19:12:03 +00:00
Andy Miller
0afbce518d prepare for release
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-10-31 19:11:50 +00:00
Andy Miller
ff0de91bab more fixes for safe upgrade
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-10-31 19:08:48 +00:00
Andy Miller
2a18c07a64 Merge branch 'release/1.7.50.3' 2025-10-22 21:16:20 -06:00
Andy Miller
16b0b562fb Merge tag '1.7.50.3' into develop
Release v1.7.50.3

# -----BEGIN PGP SIGNATURE-----
#
# iQIzBAABCAAdFiEEwbiolRD/eEYBHGp5nyzziuvbCuAFAmj5ngQACgkQnyzziuvb
# CuCJ+Q//cS9O8FMLU3rQ28HLNj7pkWj4R6XEWMX/OezRKQzCRXgAXDUL4t8L1Psm
# o3p/pm3HUmMhcp00Qo3yQdDktvIa1t3/HY7jN0mPBjmv3dPtnHFgDZC+GPymkxWs
# 1KGH8MWVkQxuBC9FqaxrYN1WonPjj7frR21tpJ72yaGtuGCxmRqQOkU/uiOHr6uE
# IlXsC5Bmlg1LYcbmkDR/fNhahfCBZFcB8u/M3lqTzjpVKZCR/OJFXPvFt8FCsjA8
# i6Z1aXIQU4vdFMnHU9U4ksl7Ftd5pfovVY75yKPhY1Uk3WJkOi/+G7sL72O6lRj9
# 8JNXQoqHPe1MiXe/MsbGmSpJGsUo4/6fl79iJTlI69Y6LOfYGG8zh3PJKItev9lp
# CW8eWmsO6oUb4V3KbMfhyK3TQsVntffN4hB9KnCCfcEiRoLaQyJsMBIM1QpFKh5o
# T4Rz2k5SAtaLqK64clUV0uY6CEA/r/potf0w8VFxQgdBH/aXhLvm9kjcFeWdyyps
# hSMef5spzSX2vHlc919A8YIvXwsH5ZaXBR5ENUnSjLdjiz+RWoaWtrgmAH6LTXnD
# q+aVfx8fu1l/z+fDkTKEz64O358bF43jAvkdRZuq8RWuiE8HOHO5vDnp1suKPoXD
# MygVnzf3FUBzZjwv5PnUS+4ypDoMWlbE0ooL1kxd58o5kZ7Tajs=
# =mDao
# -----END PGP SIGNATURE-----
# gpg: Signature made Wed Oct 22 21:16:20 2025 MDT
# gpg:                using RSA key C1B8A89510FF7846011C6A799F2CF38AEBDB0AE0
# gpg: Good signature from "Andy Miller <rhuk@mac.com>" [ultimate]
2025-10-22 21:16:20 -06:00
Andy Miller
ef48476c88 prepare for release
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-10-22 21:16:07 -06:00
Andy Miller
f73df193ad reset system.yaml to default
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-10-22 21:15:06 -06:00
Andy Miller
8c1e4252f2 update ignore
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-10-21 13:59:10 -06:00
Andy Miller
de260489ee remove phpstan file
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-10-21 13:59:01 -06:00
Andy Miller
1c5c2ac08d Merge tag '1.7.50.2' into develop
Release v1.7.50.2

# -----BEGIN PGP SIGNATURE-----
#
# iQIzBAABCAAdFiEEwbiolRD/eEYBHGp5nyzziuvbCuAFAmj33WQACgkQnyzziuvb
# CuD9iw/9FQH9MTS8wiQnLJWYkFPqzK9fxdIEwawU/p9hYSMd3K0XbdAav3iSsrYV
# 5vBljWRGXgWOyEauBSnajQeL+fFLnpXKZYymsHNu0y7fM76jJ3sSYiTwJ/mtsi9O
# 7UK4mTDkVqlO7Ad+2ujP+B7LrmN25seusxrHzgrG0AG9wS7eCQitXjxuhOLOv671
# VzXfeZJF4Hja+85thv6r2Jco49tXAxafn4n7NC9fv8XypeBrVFryhSwzzahxC36u
# TCIyuusV5VppMYyQWhHpOqNqv5Vl1fusexPAgvS3sJ8XDVBfWv0Sdt9XbsQNhcJ1
# dBdrKOQTsPXL7UrBU2Us+tHnfwklqNkHsKUo/5fwfY9SLKo1Y1wQ7sh61599fiyb
# dUmA78aWy8TrEE7RoL/eUuTo4nCQoB2CaImN2d7kp568VP+xl3uJor5oJ6anQxAQ
# T1MGHg+ViXD4yFiZANjFWB+WpjF8ZSkjIAolZMOhXrAegh+AfYYAnXWx24GwH3oI
# EVNV/l/E5rN0ZY6xT96j0Z2hqb3wVck94h5oIfBtaHeC+gzHTAz/d07HBm2bPhD4
# fnMHS9gpiogSenqrZ+uBVx3i1/ShkfNaMNQEpqubJKpjGT++SY0eXsRxi5DlpHui
# 6lnxz/3j8NqQb9MT9TeVzxrm2v73/WDTUDkp6dUDHxfgCGUw4yw=
# =IG5K
# -----END PGP SIGNATURE-----
# gpg: Signature made Tue Oct 21 13:22:12 2025 MDT
# gpg:                using RSA key C1B8A89510FF7846011C6A799F2CF38AEBDB0AE0
# gpg: Good signature from "Andy Miller <rhuk@mac.com>" [ultimate]
2025-10-21 13:22:12 -06:00
Andy Miller
841259ca2a Merge branch 'release/1.7.50.2' 2025-10-21 13:22:11 -06:00
Andy Miller
20809f3fea prepare for release
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-10-21 13:22:01 -06:00
Andy Miller
1b75df73ef fix for #3966
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-10-21 13:19:00 -06:00
Andy Miller
a620556e4c Merge branch 'release/1.7.50.1' 2025-10-20 13:38:28 -06:00
Andy Miller
975a2a8dd3 Merge tag '1.7.50.1' into develop
Release 1.7.50.1

# -----BEGIN PGP SIGNATURE-----
#
# iQIzBAABCAAdFiEEwbiolRD/eEYBHGp5nyzziuvbCuAFAmj2j7QACgkQnyzziuvb
# CuC/Iw//SuM31uHMaVCk0aVKXrLQtTHGwmXJq3A6cE+su0ODSXJyp2T/Jj+ydUa3
# vsDp0rK4Dw7YoO1v5upTc1GY+AlGBEIO+6AFzusN/yTz7ihL1hddua2TtjN0sxUQ
# kz8p5CSxQMz87plC1jtTsWRh18J28/g7z76FoBInDninoB8+EKp1Lm30XUsMsrv0
# hU0+DbUI5GO7C8T7bAWGRh+WGh8RwGiNfbiSaUoeDKyT1kFrnOrDN4OtCvUk/Y52
# 2J8sUtEUlwPqNZxa6UtwRf4nLMKKv+6oJMZCL6Sg6bHlhVfpNwlg5LzRQuS0CaIN
# q+crP145IK038RI9DMyq6cfYX574i12iEzqGlrM4kPfpIxHNtCRJT33/b9+g/64j
# 9RT0PPxHBzqHTjp2WmjMzyZkYmPRBORUuYckmxTIT02Fa+H9Rv0pJQQBXvN1UDsk
# qDbfdOS01IIvOIo1Dyj+5EUZDOa1pWIEqs/1HoMHns9txBXIy7qW7OAIsIwvagm/
# ctPfm2lrZ1nPBcW9oEn+SM2mGHj71K6a+TvaeLAqkgd1vnOfJ5vPyNaqtXOpCdnB
# eUjp/ReYgmf0UAoxHWg2pOQjltmOzPLTU9vaULmONs7B+I0Gwc+dDH/k9FlI5ITd
# xU6AKR1ERsu3Oo26jtzhZp+NId5zFn6wPoMx+YKH5RkRimlcVIw=
# =xZ8q
# -----END PGP SIGNATURE-----
# gpg: Signature made Mon Oct 20 13:38:28 2025 MDT
# gpg:                using RSA key C1B8A89510FF7846011C6A799F2CF38AEBDB0AE0
# gpg: Good signature from "Andy Miller <rhuk@mac.com>" [ultimate]
2025-10-20 13:38:28 -06:00
Andy Miller
915991ac6a prepare for release
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-10-20 13:38:14 -06:00
Andy Miller
3fad2a8173 fix for GRAV_ROOT
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-10-20 13:34:42 -06:00
Andy Miller
06471eb8cf sync with 1.8 changes
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-10-20 13:23:50 -06:00
Andy Miller
71eb774a39 support labels in recovery mode
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-10-19 21:43:58 -06:00
Andy Miller
65689101ab fix recovery mode
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-10-19 21:09:16 -06:00
Andy Miller
23d92e6a41 jump into recovery mode
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-10-19 20:47:34 -06:00
Andy Miller
1982717272 more recovery manage fixes
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-10-19 18:36:50 -06:00
Andy Miller
e82a0ce8bd more recovery fixes
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-10-19 18:17:59 -06:00
Andy Miller
38840ff080 recovery/command fixes
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-10-19 17:54:15 -06:00
Andy Miller
3cf616e609 more fixes for recovery.window and recovery.flag
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-10-19 17:32:55 -06:00
Andy Miller
ea5ba5dda3 Merge branch 'release/1.7.50' 2025-10-19 16:47:51 -06:00
Andy Miller
f437235eb9 Merge tag '1.7.50' into develop
Release v1.7.50

# -----BEGIN PGP SIGNATURE-----
#
# iQIzBAABCAAdFiEEwbiolRD/eEYBHGp5nyzziuvbCuAFAmj1apcACgkQnyzziuvb
# CuAfWA/8D21MkMWNjirnjc/osndB/SiEkSD2tB1TAIv3099vcGb4n1+OQ4hV0Cr+
# zixeH/bBZJwi1s1nrb6MKnDJMuzOpBOxgfFPWjU3FhG6pBhx7i1YXCH4CvANVFnP
# HNY9mI9PV8ZZ1ymjZF4I3dhOJqKzY9cY1F8RwUTS/iM03cMgrE8V66uMJIYF2Ti7
# d9QcH9ICCOv5en/u26vWRUDkRA+OseSOrc0FMbzMb9x0yqbTDFq4zjOoa6urAwj4
# kMXf8fBdE2N47DkyBr5aEPJqh7fd0xqCfBPQneHciZcBfGGKG4j4PT7IiFq7X6yA
# 4fCJ5+VuSUYP2aSUBugngwTledzh0JfMa0pRP6q6S97HAJwqYJ1eNm3NCI5xplpK
# n4ck/z//06qrYTvxx/ZTLQGGVRvP7OH/Zs1JfYbLb5TNGCTYL18v/t2xeThoGZBo
# vYsv6wXXSlELV5XVCzIsUwsilRgIwa+b2RvEcyEL6JG5QRRvDo4GcBBTHdZ6NVLH
# qkWId9bSlNBYMHuz0AR+LCTrr4KvMwLobLORu2yBP+qtiQ9x3sxapmCJ1iCQE0SZ
# Bxbdd8PPiQ/pANT6snLqM/IXTJcZn4dCGp0yaFkOeNkXOFJAFUGwW9AYQJU3fEHq
# nDu57yI9c0g4GCmnzmcZ2bLvG69C073ciRZIl+f5lGGn2Xp31pM=
# =Va0w
# -----END PGP SIGNATURE-----
# gpg: Signature made Sun Oct 19 16:47:51 2025 MDT
# gpg:                using RSA key C1B8A89510FF7846011C6A799F2CF38AEBDB0AE0
# gpg: Good signature from "Andy Miller <rhuk@mac.com>" [ultimate]
2025-10-19 16:47:51 -06:00
Andy Miller
80b8389432 prepare for release
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-10-19 16:47:42 -06:00
Andy Miller
5815c8cae5 move recover.flag
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-10-19 16:03:25 -06:00
Andy Miller
0ac77271cc updated changelog
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-10-19 14:59:42 -06:00
Andy Miller
269bf78084 ignore unpublished plugins - part 2 2025-10-19 11:04:18 -06:00
Andy Miller
cd5f3842ed ignore unpublished plugins 2025-10-19 10:51:23 -06:00
Andy Miller
997bdfff07 fix test
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-10-18 19:09:26 -06:00
Andy Miller
da0fbf9dd6 better label handling for snapshots
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-10-18 19:06:27 -06:00
Andy Miller
6a4ab16529 more restore bin fixes
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-10-18 18:55:33 -06:00
Andy Miller
c9640d7258 create adhoc snapshot
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-10-18 18:42:08 -06:00
Andy Miller
7325eb2cfe run / restore feature
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-10-18 13:48:02 -06:00
Andy Miller
f30cd26956 bin/restore enhancement
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-10-17 22:18:54 -06:00
Andy Miller
17706d5647 stop cache clearing snapshots
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-10-17 21:08:08 -06:00
Andy Miller
a0b64b6d88 more refactoring of safe install
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-10-17 20:47:48 -06:00
Andy Miller
4650bd073e filter out extra folders
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-10-17 19:54:05 -06:00
Andy Miller
4cab0a7ba1 optimized staged package
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-10-17 19:33:03 -06:00
Andy Miller
44fd1172b8 more granular install for self upgrade
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-10-17 18:18:53 -06:00
Andy Miller
920642411c move back to cp instead of mv for snapshots
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-10-17 17:53:48 -06:00
Andy Miller
2999c06a3a change snapshot storage 2025-10-17 16:49:42 -06:00
Andy Miller
d97b2d70bd logic fixes 2025-10-17 16:18:40 -06:00
Andy Miller
5e7b482972 test fix
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-10-17 11:34:35 -06:00
Andy Miller
9230a5a40f ingore recovery window
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-10-17 11:32:38 -06:00
Andy Miller
286b5a5179 fix for binary permissions in CLI 2025-10-17 11:26:43 -06:00
Andy Miller
70d6aec1a7 another fix for safe upgrade 2025-10-17 11:07:17 -06:00
Andy Miller
9dd507b717 route safeupgrade status 2025-10-16 23:31:05 -06:00
Andy Miller
b6a37cfff3 preserver root files 2025-10-16 23:17:34 -06:00
Andy Miller
09aa2fb8fd ensureJobResult
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-10-16 21:28:08 -06:00
Andy Miller
3f0b204728 Add new SafeUpgradeRun CLI command
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-10-16 17:32:43 -06:00
Andy Miller
f10894fe47 fixes for permission retention
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-10-16 15:24:12 -06:00
Andy Miller
b68872e3fd Monolog 3 compatible shim to handle upgrades
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-10-16 14:32:05 -06:00
Andy Miller
43126b09e4 fixes for 1.8 upgrades
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-10-16 14:19:16 -06:00
Andy Miller
2c4b69f9ec Merge branch 'develop' of github.com:getgrav/grav into develop 2025-10-16 12:01:14 -06:00
Andy Miller
d6cbc263e7 source fix in restore bin + missing dot files after upgrade
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-10-16 11:56:40 -06:00
Andy Miller
c56d24c0d7 timelimt on recovery status
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-10-16 09:08:53 -06:00
Andy Miller
7192cfe549 synced restore changes
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-10-16 08:09:47 -06:00
Andy Miller
a5c6f1dbe9 Merge branch 'feature/installer-rewrite' into develop 2025-10-15 20:15:29 -06:00
Andy Miller
c8227b38fc standalone grav-restore fixes
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-10-15 20:14:15 -06:00
Andy Miller
77114ecdd0 grav/restore dedicated binary
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-10-15 14:20:30 -06:00
Andy Miller
23da92d0ff honor staging_root
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-10-15 13:49:36 -06:00
Andy Miller
f88c09adca update GRAV_VERSION for testing
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-10-15 13:12:28 -06:00
Andy Miller
7dd5c8a0ba staging root config option
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-10-15 13:00:05 -06:00
Andy Miller
cf2ac28be2 bugfixes in safeupgradeservice
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-10-15 12:50:54 -06:00
Andy Miller
43ddf45057 latest tweak
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-10-15 12:42:38 -06:00
Andy Miller
57212ec9a5 better plugin checks
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-10-15 11:24:50 -06:00
Andy Miller
b55e86a8ba force upgrades before updating
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-10-15 11:00:54 -06:00
Andy Miller
2b1a7d3fb6 upgrade manager fix
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-10-15 10:44:19 -06:00
Andy Miller
250568bae5 initial safeupgrade work 2025-10-15 10:29:26 -06:00
Nakkouch Tarek
75d8356f1b Fixed Twig Sandbox Bypass due to nested expression (#3939) 2025-10-13 13:36:49 -06:00
pmoreno.rodriguez
c82645a42a wordCount Filter for Grav (#3957) 2025-10-13 13:35:33 -06:00
Andy Miller
3664096550 Merge branch 'release/1.7.49.5' 2025-09-10 14:16:51 -06:00
Andy Miller
03849923d4 Merge tag '1.7.49.5' into develop
Release v1.7.49.5

# -----BEGIN PGP SIGNATURE-----
#
# iQIzBAABCAAdFiEEwbiolRD/eEYBHGp5nyzziuvbCuAFAmjB3LMACgkQnyzziuvb
# CuC9CQ/8CURB0sfbeDcjZbFIxNei0nGSCQkD8Wqp8IWOpSQ4iu5KiS6y6aQu7OIn
# LzvM6/wlbxJ6BhcYjt7uwMLQOH9mA4uPYMF7SQd5ElZZnoIp0zLcZ3CgDvznwOQj
# m2Kcuij3z749ORl8HjG56uhDwP5pk1C6u8OriGbb/z7uLTirLwxGE9yOoNJjlvWv
# K4ddGYcxF0OphRrIBmwbnMFwx+CoRBB1wg9pWtIba4cpgwu2OUYU9orNcVxGxPMI
# 8kXglIPrQZCKbzkjW2TNxdOVlycLKvw4J0jq+E8zgHVYFuS8yFX8JMR21wBxgCgH
# iCtigNUNwApvQafTpqWNhk+kY7nA2823NjaLNqIRRjEr3jQS7/zNorlRoaGyM7MB
# 8utneW8bH0Km2s6V4KDAKJex1Q3iE8KzFTIdM8kZ/Xnani8unrstHBAkcGkTWz0x
# NgKGEjB8moYb9+t+yRdXj7hcqHh4VkaRXm1Ac1UitaEfeEP+WwfyeBhOWBvIPDHQ
# vrdoSDWGvBHngR6Iq0cXKph7NzzQsxGVAPvKYVMlCtkFRDYNAsQOksVl5UunF5P9
# gpuLkANT7hr0WDWhCi7OMHgQW8IAMkiApp+phfrTK0GNBU2P7O+0MkeJ8LKd7mAi
# cOmZ/FDvtAzZUlwVpTiWuMq2MknwwfTU1BJblXxKGvt5Ysmx7HA=
# =gegb
# -----END PGP SIGNATURE-----
# gpg: Signature made Wed Sep 10 14:16:51 2025 MDT
# gpg:                using RSA key C1B8A89510FF7846011C6A799F2CF38AEBDB0AE0
# gpg: Good signature from "Andy Miller <rhuk@mac.com>" [ultimate]
2025-09-10 14:16:51 -06:00
Andy Miller
6664d98de8 prepare for release
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-09-10 14:16:37 -06:00
Andy Miller
17323ec76c prepare for release
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-09-10 14:16:04 -06:00
Andy Miller
9b9079bdd7 Backup not honoring ignored paths - fixes #3952
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-09-03 18:09:17 -06:00
Andy Miller
db3df738e8 Merge tag '1.7.49.4' into develop
Release v1.7.49.4

# -----BEGIN PGP SIGNATURE-----
#
# iQIzBAABCAAdFiEEwbiolRD/eEYBHGp5nyzziuvbCuAFAmi40TMACgkQnyzziuvb
# CuDw6g//edg76Q77jQBXrdYyuR+WChQrGE3G+AOBJmTjff7YMdQQZG3dl4bUK0L3
# 52Ft0q5dQHdn1gUyAgwxJBnH19TxNrjCC/GqBXFWFOnmJSiKzAwqB2FeWtgKTMY4
# 5RS7AmzCGEGDvqTzhIB9N1x1omHAFZDlKplevUhyTzQ+12/GKd1hIJ3V5JrlVmt2
# HRrOU403mOHEqfGH5Z4kPFM2nCddeHLGqBA/3kosh0Dq548pYgE26o3A02z537F0
# KwulRDITSoR8lN3fwq2MDjhCOJzu9MLiRcWl3s3nMcVC6LhYmZUdZjRvuBF6DmSH
# SdkZ3K1aibdknwWcm1cCPD23QwLblXr9zhTaXNvHEkSY7n8elKLxEVekh7OKDTFF
# gDdtIsaMHb891TucaF/Ejo0fFdwzacaoph4Lr+CYX/Xfs9eh2V+8+Y6hrG2ZOHdd
# M4GvI+U9+LjBbN3pKAbzRF6jiXCXl5qjJSrp7DQd4SBxXCOhO/VfTanXm+8I9f58
# Srhn9kzb2/EqQA64sGjZIZwrV7/yXfqoF5dBpVrsEi1sH4zzm0g9/DCwqGxAhH+b
# zNrxVlHu845wW7K8pWDQX0YbnvYcE83mzOhEYiP5qFUew03fDSIPs30QflApmy+8
# qfXLc4kM/XTMKYnq9febhmjLg2RXBMorxUovCaNPjHGXa0UaK4Q=
# =1m/V
# -----END PGP SIGNATURE-----
# gpg: Signature made Wed Sep  3 17:37:23 2025 MDT
# gpg:                using RSA key C1B8A89510FF7846011C6A799F2CF38AEBDB0AE0
# gpg: Good signature from "Andy Miller <rhuk@mac.com>" [ultimate]
2025-09-03 17:37:23 -06:00
Andy Miller
38075f9c86 Merge branch 'release/1.7.49.4' 2025-09-03 17:37:22 -06:00
Andy Miller
b0dac5f4b4 prepare for release
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-09-03 17:36:39 -06:00
Andy Miller
f7c77d1173 fix for cron force running
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-09-03 17:32:48 -06:00
Andy Miller
0fd734c8df Merge tag '1.7.49.3' into develop
Release v1.7.49.3

# -----BEGIN PGP SIGNATURE-----
#
# iQIzBAABCAAdFiEEwbiolRD/eEYBHGp5nyzziuvbCuAFAmi3XKUACgkQnyzziuvb
# CuCOzw//SUVGgXNxcvWvBGFya/vKhsO9V39buLzDx7DZk5acYA2E0SHN5aRucGmq
# 3p4GaXjHQ9aSRwIB3DTNoW9fWPGd8DFURLGTti7vh4EkvQclF1fI+22sNdlXrs6P
# uRO2DvuJ+5VFDNv7LzyNhx8HdYXlANrC8jFmBS2ehAgkTUQDI3T1JmY+/H/ayyik
# pFmzty9y3jy1IG/8qAhL+g8VPWccDIHTvxM+6EQjJvCQzHybrUk1nb3zjFGqsjQD
# ocIu+jwx05qvymmqvb0S5ULlqK6BBZTz2zBH3xF4viSF4ZF9YqDLhepOrA5wsVs+
# rNRSjUvMs05tIzA7stxwapxTB8s6C8Bm8mSu3XA+0ERtde5F3E40bhptDCwhlCLI
# dTgKb0+UaEcDPl1E7VSZJ8UlrZtvO3dtg5fTt7Ieebv0b1fbRoyxWNldhxbEcgDo
# HaeZAHNu8RMuTq36ACH7vgx2BEghAfe1/qXNfHtGokNdRxQSdvCUPGl8FS5hpBYG
# JVLOkS9mABKNENpqzWyp0pYJ0MORdrv74GnhY62/ue9mG4+Eo/kFcsZtoTUsFiHI
# 7eIhZTdazWxW27BkeI94g/B6sPxcQGFs8qHhaiOZLvveKvRJHynZez5zdHnm2X1G
# 4qa5m2ebjGpxhKK8zDF1nlZEKPsaK6ZZQid4o8LL1nv6PwRcsIk=
# =xk/M
# -----END PGP SIGNATURE-----
# gpg: Signature made Tue Sep  2 15:07:49 2025 MDT
# gpg:                using RSA key C1B8A89510FF7846011C6A799F2CF38AEBDB0AE0
# gpg: Good signature from "Andy Miller <rhuk@mac.com>" [ultimate]
2025-09-02 15:07:49 -06:00
Andy Miller
b642b2c999 Merge branch 'release/1.7.49.3' 2025-09-02 15:07:48 -06:00
Andy Miller
ae147fa53b prepare for release
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-09-02 15:07:38 -06:00
Andy Miller
9e6df39bff fix duplicate job issue
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-09-02 15:05:38 -06:00
Andy Miller
8ac6076f88 allow you to run -r and -d in command line together
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-09-02 15:05:30 -06:00
Andy Miller
cef7812472 fix an error in ZipArchive that sometimes occurs
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-09-02 15:04:51 -06:00
Andy Miller
6f461395a7 update changelog
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-09-02 14:41:40 -06:00
Andy Miller
162fe1acc2 namespace change for cron expression
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-09-02 14:40:44 -06:00
Andy Miller
332748a1f9 removed hardcoded setup commands
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-09-02 14:08:46 -06:00
Andy Miller
1a9a60115d Merge branch 'release/1.7.49.2' 2025-08-28 11:37:21 -06:00
Andy Miller
a55052b8b0 Merge tag '1.7.49.2' into develop
Release v1.7.49.2

# -----BEGIN PGP SIGNATURE-----
#
# iQIzBAABCAAdFiEEwbiolRD/eEYBHGp5nyzziuvbCuAFAmiwk9EACgkQnyzziuvb
# CuDx/A//dPvNxTkFAMbAy6j7W1UrinLF8QZV7jnSR8ig8LYN6gprwRVWKOT8Oui2
# vyfgvt9NfOHaW29EDXGdHRIeuqORTxztHOY/PrsRdP7zKQzZcNTJ4LjEcR2uGc1S
# UndhkPr4KL2hOq66JgoFif8O7Z0zl7EjLshy2d9pA7PU0LXxbLzYhNEmvkZjdLSZ
# RBmq0GmpQGTFV7l+4Rrsr0nK9KX8D/YgbBXwOo9oxIHMQzcH0i0MXFCIZdKX6V6V
# iKPbbA5A4xq7+F3zufUld2PSMIyfsdyPuoA2uJKeMGIdj4hjPUHhsOY2688EUyyf
# MRqLwoX/ZSeT5dIacXitNrS9vhLWwmxvIbNrGbZn/Jrppmwcj6r6ACkbJwkOPjaN
# kSSu6gU6SFEc7gILZXhNH1e5DCE7r1VjTDr/BoebQGZHQWafr9PG5lMMXhZRWpo+
# zPvn5cRKtI8/zDZwwR9RzJx/lUkaO7pJNg5tW5z4oo/XBmtwxYoD++JMxF3BqQvy
# Q1e+uyWhi01YpG+ofPKA5tRbD0H1++N5e5gghqhqdmazLZV3Doz2igRQUy6eVwxL
# KoSZdweJLDIFPIoSMCchU0O9wR+ZAVNNdYuQe9snezNYiBJqXcXOq3nLiEJhMVV+
# CySVvLrM85Yq0cOq6FXsVsYwHhnH8PeW8ebs7+c8EPmzxrLHAdk=
# =qw1P
# -----END PGP SIGNATURE-----
# gpg: Signature made Thu Aug 28 11:37:21 2025 MDT
# gpg:                using RSA key C1B8A89510FF7846011C6A799F2CF38AEBDB0AE0
# gpg: Good signature from "Andy Miller <rhuk@mac.com>" [ultimate]
2025-08-28 11:37:21 -06:00
Andy Miller
dc7354e7e1 prepare for release
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-08-28 11:37:09 -06:00
pmoreno.rodriguez
afc1513aad Fix translation key for image adapter label and help (#3944) 2025-08-25 18:56:12 +01:00
Andy Miller
466b2a16e8 Merge branch 'release/1.7.49.1' 2025-08-25 14:16:45 +01:00
Andy Miller
a21640ace6 Merge tag '1.7.49.1' into develop
Release v1.7.49.1

# -----BEGIN PGP SIGNATURE-----
#
# iQIzBAABCAAdFiEEwbiolRD/eEYBHGp5nyzziuvbCuAFAmisYj0ACgkQnyzziuvb
# CuA6NxAAmqhEkRNcLhnyVDyZrwcinrANkYvD/Z9MKoy9NQfUaQaQmb5v7rl2Qj+T
# etmPUj9qNQI1KpDrwB2lYVAvvrQoVt73Y72GsnX/6OwNtsVNWCT2NhWN8MkRwu5d
# 6h+k7jhiotVAGMGDiI+Srk7v1LbXj+Y29pOalUDA+fZFRVHdXmQGFrYafV7LmMvH
# 7kMRS3Sj8oPII9BTBAWCiBEQ/DVil9Q+RuKwL35u76RRbh3yYJRO6fZym+IWD4YW
# ARXaWDsfG7ayoW12dg+Ufj4yooCxIghLFEXyPBr/2FqXn9/iAndQlEINGN5dSya/
# PvmhWer0bH2Wz3NUFqkTpBoK8QPjaPJThGhl2C6O2RscXIIrAvKa+VViWzNE7AU4
# Jdx7quFyC3xuElxBEPF99vabBpisxdzdtyu5v5VhlpTClNTQswbnRjax7qrUKHt8
# SLzp6tdM3SKE/AN+nXtexpVWjZTUaskl241/MPjRORtatniWSnemddjbfU9aBPmF
# /B8HjRFzGT+UFHt8b+AnP02Bt032JEdPvL8TfEAmfO55WiMpK6+Qutr2oogOznrN
# zn2D+1rUNs+8V3lKKJwaGe4nNe/BVZ1yoPQXWu3q8Z2cxJXRY2+4L66y5RdoNoew
# 1S2HyESWInAjVwHKIoyGoeabnnhVTHJpSLb8fiLNp017BTIISto=
# =LlNI
# -----END PGP SIGNATURE-----
# gpg: Signature made Mon Aug 25 14:16:45 2025 BST
# gpg:                using RSA key C1B8A89510FF7846011C6A799F2CF38AEBDB0AE0
# gpg: Good signature from "Andy Miller <rhuk@mac.com>" [ultimate]
2025-08-25 14:16:45 +01:00
Andy Miller
09920deabc prepare for release
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-08-25 14:16:32 +01:00
Andy Miller
0bd72f4bb9 Merge tag '1.7.49' into develop
Release v1.7.49

# -----BEGIN PGP SIGNATURE-----
#
# iQIzBAABCAAdFiEEwbiolRD/eEYBHGp5nyzziuvbCuAFAmisWskACgkQnyzziuvb
# CuDTlg//TOFe5VqIBV03SDHVFW3frF/nK+2pOGUXgfLXN9sfPHrT8F89drsPDBar
# YwxTynix8NvPXumt/DeeGvEtDJOZt8UYDUiAlTc++F3duNGjCBId/H1XqRKk91jL
# jilxrXPboemQ+nqzVFTcACFi5/GjYKXvscOVPJ6Pflr/EsLjUfzIF11zXG2vCJsv
# rdI2W3J+cGS6VoaxvGF8vfC9k1g+rC9E1bKcj5wSI98bVQf5HCR8kLRxfyfz4fvX
# w0mLvI9qCqJ4CsIa7kLw5AxPI3bFLBQjhQtiuH6WJMNkUNvcUJ51MmU5S4hEZMLt
# BSQAD4xfG5Hb98YZaQyISBVMw3ed4rA3MLYfHVi6kYmL5FHl3lTSIL8RTe9sQSqI
# cojdIlCNJTAOL65TQik78BqmjjfMzi28B8DBCfKF5ZL5SrpHDYNqcKojzSscbytJ
# S7h9mucquI5MaMDKdMi79vZHPrmbk21ML6DbuefVxpGHDQbLGflVIpyDRzMOgvzs
# MPtYVo8gG7ljlD0EcVkUO4lZgSrImw2Ko6U8RccF8rzSG2ZmrlQEik10t/e6SorO
# g20CbctHKYgWq38rkgZmmJ+mUrtpHaYI2N/HrCTPqaaqDV0toG8lvM2/TyKq7TKh
# Aq9Kwhqz9mqDnMqMqb0l0SjA2DFdIKc9Y3Uzqi/VXRgxOmjDoq8=
# =3bpd
# -----END PGP SIGNATURE-----
# gpg: Signature made Mon Aug 25 13:44:57 2025 BST
# gpg:                using RSA key C1B8A89510FF7846011C6A799F2CF38AEBDB0AE0
# gpg: Good signature from "Andy Miller <rhuk@mac.com>" [ultimate]
2025-08-25 13:44:58 +01:00
Andy Miller
ec55a80183 Merge branch 'release/1.7.49' 2025-08-25 13:44:57 +01:00
Andy Miller
d07ac5b6ea prepare for release
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-08-25 13:44:47 +01:00
Andy Miller
fa29f6672a updated changelog + vendor libs again
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-08-25 13:37:44 +01:00
Andy Miller
006d8c85a0 Merge branch 'feature/modern-scheduler' into develop 2025-08-25 13:27:37 +01:00
Andy Miller
c608ed10cf implement a better purge strategy
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-08-25 13:27:23 +01:00
Andy Miller
9d71de8e54 more scheduler improvements
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-08-25 12:53:47 +01:00
Andy Miller
89764a51fb more scheduler fixes
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-08-25 12:36:06 +01:00
Andy Miller
b851d9bf9d added scheduler logging
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-08-24 23:58:28 +01:00
Andy Miller
a0679fc050 scheduler improvements
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-08-24 22:23:18 +01:00
Andy Miller
e497a93da6 simplify extended jobs logic
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-08-24 22:14:14 +01:00
Andy Miller
56cc894c1d initial improved schedular functionality
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-08-24 20:27:28 +01:00
Andy Miller
d07f3770bc chagne order
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-08-17 13:12:08 +01:00
Andy Miller
3baaf19c31 update lock file
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-08-16 13:00:39 +01:00
Andy Miller
7236862a15 Add Imagick adapter support
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-08-16 12:52:55 +01:00
Andy Miller
8811b7aad0 revert PHP 8.4 fixes
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-06-12 10:41:38 -06:00
Andy Miller
4a22f3dc8d better match
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-06-05 11:22:28 -06:00
Andy Miller
fa56984dc3 use lang string
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-03-31 19:26:01 -06:00
Andy Miller
90fd68d4a5 handle empty value on require with ignore
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-03-31 14:12:05 -06:00
Andy Miller
7613e38b6d Add support for validate match
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-03-31 14:11:35 -06:00
Andy Miller
830a442faa update vendor libs
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-03-30 15:23:22 -06:00
Andy Miller
8d7b658aa6 Some fixes that impacted file uploads
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-03-30 15:22:45 -06:00
Andy Miller
83d098b891 throws error
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-03-07 12:06:58 -07:00
Rotzbua
d798859acd chore(ci): update GH Actions php test (#3867)
- php versions should be strings
- caching updated to current recommendation
- fixed env var name
2025-02-05 11:16:51 -07:00
Andy Miller
08d74df6e3 Fix parse error: #3894
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-01-24 15:23:06 -07:00
Olivier Dolbeau
2620e836d4 Update code blocks in README (#3886) 2025-01-18 12:39:11 +00:00
Andy Miller
7e723eb7f5 actions/cache@v4 cache for tests
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-01-13 12:30:17 +00:00
Rotzbua
1d1d8da431 fix: twig filter exif_read_data throws critical error (#3878) 2025-01-07 13:53:09 +00:00
Andy Miller
4097d85daa updated copyright date to current year
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-01-06 14:14:42 +00:00
Andy Miller
2e975dfa90 bug in AbastractLazyCollection
Signed-off-by: Andy Miller <rhuk@mac.com>
2024-12-03 15:33:32 -07:00
Bob Conan
a1e583f657 Updated SECURITY.md, fix typo(s) (#3870) 2024-11-13 14:01:07 -07:00
Andy Miller
5cf7ef864b Merge tag '1.7.48' into develop
Release v1.7.48

# -----BEGIN PGP SIGNATURE-----
#
# iQIzBAABCAAdFiEEwbiolRD/eEYBHGp5nyzziuvbCuAFAmcfdcoACgkQnyzziuvb
# CuBypA/+KweJfAVBOokFPS1iFKoQ1mrBQ0jpy4zlYLP2dFdI9OBjIXOyv15dPEkJ
# +9kxQpgsjTV4sc3WmdTUw7OVLdEqhuVZA/xhlZV3x9g3ehYSgx0guvmZTLCWqyex
# b4H4xvWHcIqF7OuNO7jv4vRZijLWTeXE9F8KQajjMIoZvG6z3GVnk20mLKzvV9KD
# mn3PWd8pnXT171TtL59WLcM47rZ93C8vqcInGjHXC2ww0+4ky63/KQbcGi+fSc6U
# /7LyWOqGXuoc8DylLVXXwpDiFGQZoyQKDxH/C9RejgnKdP/fysugBwiSsMpmQPFU
# 1KfU3BZhB74L8pRLbbAbPB0B7qhKxMlOF+S/Gr/HAjmpMwOy7JsfF10E8dIkx3FO
# R9K8awpTg08xzpLXTyeSR5CcN52/rBEgAxASF30t2QWl/t6rmMWZOfaDlPseFdtb
# d1Bz7HrtFdCYLtWGkkxF1ZhI233cR4BnxuvKml9zpjHOTnonlZTo7N2j/zG0hAom
# sFxHmtrDa0sYoWlGvAbwBa0T5SVGe0Y8DbIskud1IKepRRJROOquqtyGpLKL53HJ
# NfNPszfwiN49z9kl1afYq/dK8f497sk2DAok0AhXgVMbes99LaqsPBNZwwioSMkD
# o94p3yW7aR6rzTcqkLr/FyZAa/Iyl58h6ZFlgYTatbMFKi/haDw=
# =XhZk
# -----END PGP SIGNATURE-----
# gpg: Signature made Mon Oct 28 11:30:18 2024 GMT
# gpg:                using RSA key C1B8A89510FF7846011C6A799F2CF38AEBDB0AE0
# gpg: Good signature from "Andy Miller <rhuk@mac.com>" [ultimate]
2024-10-28 11:30:18 +00:00
Andy Miller
199cdd4364 Merge branch 'release/1.7.48' 2024-10-28 11:30:18 +00:00
Andy Miller
2896aea30a prepare for release 2024-10-28 11:30:04 +00:00
Andy Miller
3952491ce9 updated changelog 2024-10-27 12:24:46 +00:00
Andy Miller
6b07088189 cli Alias support in 1.7 2024-10-27 12:24:39 +00:00
Artyom Mezin
a0614dc3eb Resolving style conflict for other tooltips (#3861) 2024-10-25 10:44:26 +01:00
pmoreno.rodriguez
346d194125 New Trait for fetchPriority attribute in images (#3850) 2024-10-25 10:42:20 +01:00
Andy Miller
964e37c6f0 Merge branch 'release/1.7.47' 2024-10-23 13:02:17 +01:00
Andy Miller
c55f2bed4a Merge tag '1.7.47' into develop
Release 1.7.47

# -----BEGIN PGP SIGNATURE-----
#
# iQIzBAABCAAdFiEEwbiolRD/eEYBHGp5nyzziuvbCuAFAmcY5ckACgkQnyzziuvb
# CuDjiQ//aAyIya3K+mJOMB4AkKiT24eIq9FPSBCw2tOCsF+YcoAd5WxPe6eE2BKF
# qjrTK99hB5Adig8tkIdecIxvd3FKiDyVyjkQXDkO0UTDLQT++G3S/OBN/2tLfskc
# zJ+Esqco2QJZrKXUj1lttM4z52XFV0eiXZ1qQmnQngaa1uXCgUIKR8MuqjiMl0kF
# IT0a8Y8nHZmy2dDqw186c61cZn90qDE4foSQTJt5Rouy3qmoOzR5J0u6WKWSCbJH
# HkLwbfdDj4ZaOJ0a0hBuoxo/SzalOi3mkwaTqLIYACiMNf/NLuP/K0GJJFIY60lB
# yHa136Hi+nYlAmInGzTiAmhaWJNodB3mIJWc4gjZrDyMHfYD2BxYpjSYd1nDIJ7M
# omUPB37SQufotb58hJf5LRIDrKd2k70joRfiGlb+x0P5AuMOmhZQo0yYqqM7pNPs
# AHNf6Q01wVRu0OUws77BUBEnaNcr/APGHjw4bkucE0VaCoG3tRF9FXM6EoDdLwDy
# tIUh7peuEqhz05ViczqMtWl4YgCKpjU+bBriWUB7ge85YJIZuH8IkNy/PJnLnvfF
# U23zmClG2h+Ke4ACzzAUOjccxxCFPCqcNKrZPkiLx4R7N+abHYHRiwEcH31KVhm4
# GUJlYWLEPtAO80z4igKJibaTeEA/FTm5K79yMUAxs/4iUTVGr/w=
# =oUN6
# -----END PGP SIGNATURE-----
# gpg: Signature made Wed Oct 23 13:02:17 2024 BST
# gpg:                using RSA key C1B8A89510FF7846011C6A799F2CF38AEBDB0AE0
# gpg: Good signature from "Andy Miller <rhuk@mac.com>" [ultimate]
2024-10-23 13:02:17 +01:00
Andy Miller
ecf664c8e6 prepare for release 2024-10-23 13:02:02 +01:00
Andy Miller
e2257a9783 logic fix 2024-10-22 15:29:47 +01:00
Andy Miller
6fa63197a0 Fallback to extension on Flex-Objects json check 2024-10-22 14:10:18 +01:00
Andy Miller
f686e0ac64 Added extra checks in Uri::getContentType() 2024-10-22 14:10:03 +01:00
Andy Miller
5a741d9b10 updated changelog 2024-10-22 12:05:21 +01:00
Ricardo Verdugo
16a50767dd Fix JSON output comments check with content type (#3859)
* Update FlexCollection.php

* Update FlexObject.php (#3858)
2024-10-22 10:54:40 +01:00
Artyom Mezin
d72fca121f Annoying output comments fix for json Flex (#3856) 2024-10-22 10:32:54 +01:00
Andy Miller
e0ff168cf3 Utils::toAscii() should be static 2024-10-21 14:20:05 +01:00
Andy Miller
bbfc3b5658 updated changelog 2024-10-14 17:28:48 +01:00
Andy Miller
106dc58329 more improvements for clockwork-web support 2024-10-08 17:29:39 +01:00
Andy Miller
ca1e5ebb8a fixes for clockwork web UI 2024-10-08 15:54:59 +01:00
Andy Miller
6a585857b0 vendor updates 2024-10-08 12:50:05 +01:00
Andy Miller
f81a4ca008 Merge branch 'develop' of github.com:getgrav/grav into develop 2024-08-22 15:16:11 +01:00
Andy Miller
8c1b4448e9 fix for exif_imagetype() throwing exception when file !exists 2024-08-22 15:15:57 +01:00
pmoreno.rodriguez
f73813103d Support to Fediverse Creator meta tag (#3844) 2024-07-12 15:04:45 -06:00
Andy Miller
9c697f178d composer update 2024-06-04 14:57:02 +01:00
Raphaël Droz
20ca44fd53 Include modulars for last modification date computation (#3562)
* Include modulars for last modification date computation

Fix #3561

* use ->modified()

---------

Co-authored-by: Andy Miller <1084697+rhukster@users.noreply.github.com>
2024-06-04 14:46:58 +01:00
Rotzbua
24cd0e133f Update jquery-3.x.min.js to v3.7.1 (#3827)
Source: https://code.jquery.com/jquery-3.7.1.min.js
2024-06-04 14:38:48 +01:00
Rotzbua
9f4a86317b fix(composer): remove unused dependency (#3828) 2024-06-04 14:37:32 +01:00
Andy Miller
25ace6458b Utils::toAscii() func 2024-06-04 14:36:47 +01:00
Andy Miller
856a478bd6 fixes #3831 2024-06-04 14:35:33 +01:00
Andy Miller
faa8ee5fe1 Merge branch 'release/1.7.46' 2024-05-15 17:16:00 +01:00
Andy Miller
785f641ea5 Merge tag '1.7.46' into develop
Release v1.7.46
2024-05-15 17:16:00 +01:00
Andy Miller
013ff7ee1b prepare for release 2024-05-15 17:15:30 +01:00
Andy Miller
c97a0ffb16 reworked to use the modified Uri::parseUrl(), plus better fix for multi slashes 2024-05-08 12:45:52 +01:00
Andy Miller
51623ee0da Added custom_base test 2024-05-08 12:35:16 +01:00
Andy Miller
8c941cc6d3 update changelog 2024-05-06 12:48:52 +01:00
Andy Miller
b6bba9eb99 fixes #GHSA-f8v5-jmfh-pr69 2024-05-06 12:48:45 +01:00
Andy Miller
77adfcb831 missed a check in MediaUploadTrait::checkFileMetadata() 2024-05-06 11:31:23 +01:00
Andy Miller
ee8d783d05 better support for external urls in Utils::url() 2024-04-20 15:42:42 +01:00
thebodzio
d184e25f05 Handle the situation when GRAV_ROOT or GRAV_WEBROOT are / (#3667)
* Handle the situation when GRAV_ROOT or GARV_WEBROOT are `/`

* Update defines.php

Replaced `/` with `DS`

* Update Backups.php

Replaced `/` with `DS` in `backup` function
2024-04-16 11:52:38 -06:00
pmoreno.rodriguez
04f9385aa8 Fixed "news" to "new" in Changelog V1.7.45 (#3810) 2024-04-16 11:51:22 -06:00
Andy Miller
afb5b02e57 Fixes for multilang taxonomy 2024-03-21 15:08:44 -06:00
Andy Miller
4187a04235 Merge branch 'release/1.7.45' 2024-03-18 11:35:28 -06:00
Andy Miller
26a6cb75ad Merge tag '1.7.45' into develop
Release v1.7.45
2024-03-18 11:35:28 -06:00
Andy Miller
37d0498e1b prepare for release 2024-03-18 11:35:20 -06:00
Andy Miller
dd8d610ae0 updates + changelog 2024-03-18 11:34:37 -06:00
Andy Miller
b9529d0010 minor lang updates 2024-03-18 11:20:51 -06:00
Andy Miller
4149c81339 fix for safe_functions attack #GHSA-c9gp-64c4-2rrh 2024-03-06 14:53:53 -07:00
Andy Miller
2da91d9c8b Update SECURITY.md 2024-03-04 15:55:29 -07:00
Andy Miller
d69adcf347 Update SECURITY.md 2024-03-04 15:54:54 -07:00
Andy Miller
45e2c27c66 Update SECURITY.md 2024-03-04 15:54:11 -07:00
Andy Miller
f77df43d7a Update SECURITY.md 2024-03-04 15:49:48 -07:00
Andy Miller
de1ccfa12d Mitigate various SSTI injections 2024-03-04 15:41:30 -07:00
Andy Miller
5928411b86 fixed path traversal by santize checking fiilename 2024-03-04 13:39:50 -07:00
Andy Miller
15dc7568a5 typo 2024-03-04 13:31:40 -07:00
Andy Miller
b435d2b884 upgraded built-in composer to 2.7.1 2024-02-13 12:47:21 -07:00
Andy Miller
dbedb60634 update vendor libs 2024-02-13 12:47:00 -07:00
Andy Miller
f9f5781af8 fix for bad page dates + changelog update 2024-02-03 13:45:35 -07:00
pmoreno.rodriguez
ad8b1b79bd New Trait for decoding attribute in images (#3796)
* New Trait for decoding attribute in images

* Update comments info

* decoding default in system/config/system.yaml and system/blueprints/config/system.yaml for the images.defaults.decoding value

* Fixed predefined option in the decoding attribute
2024-02-03 13:24:12 -07:00
Andy Miller
cd2a7d8d98 changelog updated 2024-01-19 12:41:54 +00:00
Andy Miller
1dc6866eab fix other multibyte issues in inflector 2024-01-19 12:40:55 +00:00
Andy Miller
0b16401a91 fix special-chars in titleize - fixes #732 2024-01-19 12:39:24 +00:00
Andy Miller
78b8125eae Merge branch 'release/1.7.44' 2024-01-05 12:43:46 +00:00
Andy Miller
0d7cd64d0d Merge tag '1.7.44' into develop
Release v1.7.44
2024-01-05 12:43:46 +00:00
Andy Miller
3ea86e1794 remvoed outdated PR as it was DRAFT 2024-01-05 12:43:27 +00:00
Andy Miller
6df03063c8 remove test 2024-01-05 12:34:59 +00:00
Andy Miller
e5990f431d Revert "Added 'outdated' option to scheduler command (#3771)"
This reverts commit a71403f158.

# Conflicts:
#	tests/unit/Grav/Common/Scheduler/SchedulerTest.php
2024-01-05 12:31:53 +00:00
Andy Miller
b3d55ca81a remove a debug 2024-01-05 12:26:08 +00:00
Andy Miller
a0e728b540 Merge tag '1.7.44' into develop
Releaese v1.7.44
2024-01-05 11:59:45 +00:00
Andy Miller
171a5c074c Merge branch 'release/1.7.44' 2024-01-05 11:59:44 +00:00
Andy Miller
f33e89fa45 prepare for release 2024-01-05 11:59:37 +00:00
Andy Miller
e33d71e4b9 updated changelog 2024-01-05 11:58:34 +00:00
Andy Miller
ddbb1362dc updated composer again 2024-01-05 11:58:23 +00:00
maelanleborgne
a71403f158 Added 'outdated' option to scheduler command (#3771) 2024-01-05 11:46:14 +00:00
Ron Wardenier
88eb9f915a Allow empty and maolformed links in markdown (#3782)
When a user adds an invalid link in a page in markdown for example [](https://) and that page is parsed to be shown in a blog listing page that blog listing page crashes with a CRITICAL error. Instead of throwing an error the URL is now ignored. See also https://discord.com/channels/501836936584101899/506916956637495306/1185616779486167141
2024-01-05 11:44:44 +00:00
Andy Miller
70e5262512 Merge branch 'develop' of github.com:getgrav/grav into develop 2024-01-05 11:44:00 +00:00
Andy Miller
a1c116dd82 update copyright year 2024-01-05 11:43:52 +00:00
Rotzbua
cc08da0c74 add php 8.3 to test (#3778)
https://www.php.net/releases/8.3/en.php
2024-01-05 11:43:34 +00:00
Andy Miller
f7eab6b163 composer updates 2024-01-05 11:27:02 +00:00
Andy Miller
f59fa9a291 language updates 2024-01-05 11:26:45 +00:00
Andy Miller
458c64086e Revert "Use new groupNames method"
This reverts commit 470b69c775.
2024-01-05 11:20:40 +00:00
Andy Miller
345086538c updated composer and vendor libraries 2023-11-09 12:38:20 +00:00
Andy Miller
c62e173955 updated changelog 2023-11-09 12:37:02 +00:00
JS Media Creation
1b8e267d0a Add mime type for vCards (.vcf files) (#3772)
Adds support for vCards (.vcf files) in case of e.g. scanning a qr-code with the direct url to the file, so that it can be downloaded. 

Only a thumb-vcf.png should be added then too.
2023-11-08 12:06:04 +00:00
Andy Miller
eb72cb32bb updated changelog 2023-11-06 16:52:28 +00:00
Andy Miller
4e01398545 Added debugger output when routes conflict 2023-11-06 16:50:27 +00:00
Andy Miller
b0dd2358f4 Updated packages (including dom-sanitizer 1.0.7) 2023-11-06 16:50:15 +00:00
Djamil Legato
0c9333e60d Revert "fix whitespace encoding in urls" (#3764)
* Revert "fix whitespace encoding in urls (#3719)"

This reverts commit 6a9b1f2214.

* Revert change
2023-10-27 23:58:08 -07:00
Andy Miller
0b53609fa0 updated changelog 2023-10-25 14:49:52 +01:00
Andy Miller
cfa510e7f7 Merge branch 'master' into develop 2023-10-25 12:38:41 +01:00
Andy Miller
6d5f0ff9ba validaiton math rounding - fixes #3761 2023-10-25 12:38:12 +01:00
Angela Ugrinovska
71939e18be Fixed too few arguments exception thrown in the admin with using flex objects (#3658)
Going through older PRs, thanks for this.
2023-10-24 10:33:58 +01:00
Junky Junkerson
45f8fe4d0b Correcting comment in about custom site.yaml value (#3659)
Corrected blog: route: '/blog' comment from system.blog.route to site.blog.route
2023-10-24 10:32:49 +01:00
Vital
2179ef33a7 Fixed exception: "Property 'jsmodule_pipeline_include_externals' does not exist in the object!" (#3661)
Co-authored-by: Artemkin_V <avr@vital-web.ru>
2023-10-24 10:32:19 +01:00
Rotzbua
d0ae677e61 Update jquery-3.x.min.js to v3.6.4 (#3713)
Source: https://code.jquery.com/jquery-3.6.4.min.js
2023-10-24 10:30:19 +01:00
dirkjf
6a9b1f2214 fix whitespace encoding in urls (#3719)
* fix broken src url encoding

* remove redundant code

* Revert "remove redundant code"

This reverts commit 4e0020114e.

* Revert "fix broken src url encoding"

This reverts commit 3e8259da3a.

* encode whitespaces in url paths
2023-10-24 10:30:00 +01:00
yiwu
b1117e45c9 Update system.yaml (#3721)
add ISO 8601 dateformat
2023-10-24 10:28:44 +01:00
Ricardo Verdugo
382a836d80 Fix invalid input to foreach (#3724)
* Fix invalid input to foreach

This happens with discord oauth, possibly others

* Update UserGroupObject.php

---------

Co-authored-by: Andy Miller <1084697+rhukster@users.noreply.github.com>
2023-10-24 10:28:23 +01:00
Raffael Herrmann
db3e39f0cb Added detection of external triggers of the scheduler (#3726)
Added extension to the isCrontabSetup method to detect external triggers of the scheduler, so that in the admin interface the error message is hidden when the scheduler is called by an external trigger.
2023-10-24 10:25:44 +01:00
Jeremy Angele
80ce87e4a9 Update dangerous extensions (#3756)
Thanks for this!
2023-10-24 10:20:22 +01:00
Jeff
f0f29891d6 Update Inflector::ordinalize() (#3759)
put the init() call before the $ordinals test
2023-10-24 10:19:24 +01:00
Andy Miller
c66da5bedb Merge tag '1.7.43' into develop
Release 1.7.43
2023-10-02 10:41:37 -06:00
Andy Miller
1f21d259ea Merge branch 'release/1.7.43' 2023-10-02 10:41:36 -06:00
Andy Miller
21b218e464 prepare for release 2023-10-02 10:41:26 -06:00
Andy Miller
3b2fb023b8 change version number 2023-10-02 10:36:33 -06:00
Andy Miller
92babda742 updated changelog 2023-10-02 10:30:31 -06:00
pamtbaau
3cdbc5890a Fix url of @import not being rewritten (#3750)
Looks good.  thanks.
2023-10-02 10:04:29 -06:00
Andy Miller
a8042a666c updated composer - fixes #3748 2023-10-02 09:52:50 -06:00
Andy Miller
79f9640b12 move language debug to debugger - fixes #3752 2023-10-02 09:51:22 -06:00
Andy Miller
65aeb82e21 add ability to override modified date via frontmatter 2023-10-02 09:36:22 -06:00
Andy Miller
e3b0aa0c50 inlcude phar in dangerous extensions 2023-08-22 11:57:13 +01:00
Andy Miller
7e617a632e updated security.md 2023-08-22 09:24:41 +01:00
Andy Miller
fb5dd14875 Merge branch 'release/1.7.42.3' 2023-07-18 12:41:08 -06:00
Andy Miller
490bdd6ce7 Merge tag '1.7.42.3' into develop
Release v1.7.42.3
2023-07-18 12:41:08 -06:00
Andy Miller
893b1dd1db prepare for release 2023-07-18 12:40:57 -06:00
Andy Miller
1146959806 fixed a typo 2023-07-18 12:40:27 -06:00
Andy Miller
45103f81b4 Merge branch 'release/1.7.42.2' 2023-07-18 10:50:51 -06:00
Andy Miller
c426f4a9cc Merge tag '1.7.42.2' into develop
Release v1.7.42.2
2023-07-18 10:50:51 -06:00
Andy Miller
0d27f2d77e prepare for release 2023-07-18 10:50:36 -06:00
Andy Miller
b4c62101a4 SSTI attack mitigation - GHSA-9436-3gmp-4f53 2023-07-18 10:49:47 -06:00
Andy Miller
950cd0854f updated vendor libs 2023-06-15 15:32:06 -06:00
Andy Miller
4cd137830b Merge branch 'release/1.7.42.1' 2023-06-15 12:57:56 -06:00
Andy Miller
aa19bcdcbe Merge tag '1.7.42.1' into develop
Release v1.7.42.1
2023-06-15 12:57:56 -06:00
Andy Miller
cf6bf7d1ec prepare for release 2023-06-15 12:57:46 -06:00
Andy Miller
47665dbddb Fixes #3727 - filter field being a closure 2023-06-15 09:03:12 -06:00
Andy Miller
dc209453d0 Merge branch 'release/1.7.42' 2023-06-14 14:19:10 -06:00
Andy Miller
5b89091f13 Merge tag '1.7.42' into develop
Release 1.7.42
2023-06-14 14:19:10 -06:00
Andy Miller
50ee844759 prepare for release 2023-06-14 14:19:00 -06:00
Andy Miller
244758d438 also handle SSTI in reduce twig filter + function 2023-06-14 11:08:17 -06:00
Andy Miller
71bbed12f9 more SSTI fixes in Utils::isDangerousFunction() 2023-06-13 17:57:11 -06:00
Andy Miller
8c2c1cb726 better SSTI in |map and |filter 2023-06-13 17:45:40 -06:00
Andy Miller
9d01140a63 Fix for dangerous tags in |map filter 2023-06-13 17:07:39 -06:00
Andy Miller
259e775db8 Added languages debug option 2023-06-08 14:50:52 -06:00
Andy Miller
d4c617ff19 Merge branch 'release/1.7.41.2' 2023-06-01 15:19:12 -06:00
Andy Miller
c7680bb50a Merge tag '1.7.41.2' into develop
Release v1.7.41.2
2023-06-01 15:19:12 -06:00
Andy Miller
722ce55ccb prepare for release 2023-06-01 15:18:53 -06:00
Andy Miller
5b950ce73f update changelog 2023-06-01 15:17:47 -06:00
Andy Miller
8dfa2110bf fix for special chars in slugs causing redirect loops 2023-06-01 15:16:56 -06:00
Andy Miller
31aeaf6309 improved the Twig Cache Tag with customizable key (lang specific if needed) 2023-05-23 15:54:48 -06:00
Andy Miller
d96b023d72 Merge branch 'release/1.7.41.1' 2023-05-10 08:34:58 -06:00
Andy Miller
4de3cab522 Merge tag '1.7.41.1' into develop
Release v1.7.41.1
2023-05-10 08:34:58 -06:00
Andy Miller
b34f70f91d prepare for release 2023-05-10 08:34:45 -06:00
Andy Miller
9da8cad7fe truncator fix 2023-05-10 08:34:09 -06:00
Andy Miller
e4a30f5966 Merge branch 'release/1.7.41' 2023-05-09 12:44:53 -06:00
Andy Miller
814a050858 Merge tag '1.7.41' into develop
Release v1.7.41
2023-05-09 12:44:53 -06:00
Andy Miller
b6179bd2de prepare for release 2023-05-09 12:44:44 -06:00
Andy Miller
e5ac37e3cf FILTER_SANITIZE_STRING + Toolbox 1.6.5 2023-05-09 12:13:46 -06:00
Andy Miller
66463ddff3 more FILTER_SANITIZE_STRING fixes 2023-05-09 12:13:32 -06:00
Andy Miller
956c2993ae more filter fixes 2023-05-09 11:22:28 -06:00
Andy Miller
3cf67cb2fd deprecation fix 2023-05-09 11:18:36 -06:00
Andy Miller
36afa9d848 won’t work internally in Parsedown 2023-05-08 19:31:37 -06:00
Andy Miller
694ab76d1e added parse_url to the list of Grav Twig functions 2023-05-08 19:03:29 -06:00
Andy Miller
369c2e9ffa remove filter_input in favor of htmlspecialchars + strip_tags 2023-05-08 18:42:52 -06:00
Andy Miller
95ae35216a various cast fixes 2023-05-08 18:41:19 -06:00
Andy Miller
9c0477fa52 fix dynamic class value 2023-05-08 18:41:04 -06:00
Andy Miller
e1ab15e323 another cast fix 2023-05-08 17:44:52 -06:00
Andy Miller
ff77d58acb more casting fixes 2023-05-08 17:37:42 -06:00
Andy Miller
adfbd5730b changelog updated 2023-05-08 17:31:26 -06:00
Andy Miller
bf175983ec various deprecated fixes 2023-05-08 17:31:15 -06:00
Andy Miller
470b69c775 Use new groupNames method 2023-05-08 17:27:54 -06:00
Andy Miller
60648c43db Update to latest getgrav/image package 2023-05-08 17:27:43 -06:00
Andy Miller
75cd4f4306 Various casting fixes for deprecated messages 2023-05-08 17:27:03 -06:00
Andy Miller
2412115f41 TwigDeferredExtension updates 2023-05-08 17:26:22 -06:00
Andy Miller
598836d656 fix parsedown dynamic properties 2023-05-08 12:39:35 -06:00
Andy Miller
e1019c4420 remove FILTER_SANITIZE_STRING as deprecated 2023-05-08 12:21:09 -06:00
Djamil Legato
a8a6c0c520 Better and generic ignore pattern for security.yaml (fixes #3706) 2023-04-06 10:29:35 -07:00
Andy Miller
685d76231a Merge branch 'release/1.7.40' 2023-03-22 11:30:00 -06:00
Andy Miller
0f9b9f780f Merge tag '1.7.40' into develop
Release 1.7.40
2023-03-22 11:30:00 -06:00
Andy Miller
1e2792874d prepare for release 2023-03-22 11:29:52 -06:00
Andy Miller
0a061ce95e bugfix for timestamp logic 2023-03-22 10:18:07 -06:00
Andy Miller
d82ee029e1 updated changelog 2023-03-22 10:09:06 -06:00
Andy Miller
3b83c8204d Merge branch 'develop' of github.com:getgrav/grav into develop 2023-03-22 10:07:18 -06:00
Andy Miller
9ab7a4759a Added timestamp: true|false option for assets 2023-03-22 10:07:14 -06:00
Vilius Šumskas
c261d0d3f7 Fix force_ssl redirect in case of undefined hostname (#3702) 2023-03-17 08:53:45 -06:00
Andy Miller
940415dddb updated changelog 2023-03-07 10:47:55 -07:00
Andy Miller
60506e6f34 fixed duplicate page paths 2023-03-07 10:45:01 -07:00
Djamil Legato
bd7a74d79e Coerce ignore validation to array to cover both array/non-array values 2023-03-06 11:01:15 -08:00
Djamil Legato
5fcf690918 Fixed BlueprintSchema:flattenData to properly handle ignored fields 2023-03-06 10:40:36 -08:00
Anael Mobilia
904ec46a9f Update robots.txt reflecting actual folders (#3625)
* Update robots.txt

"grav" folder no longer exists

* Add folders now existing
2023-03-06 10:21:03 -07:00
Vilius Šumskas
259c148edb Fix whoami command usage (#3695)
Passing process as a string is deprecated since Symfony 4.2.
2023-03-06 10:19:23 -07:00
Rotzbua
0ae980062f Remove outdated setting xcache (#3615)
Already removed in commit ba2c37c216
2023-03-06 10:18:57 -07:00
Ari Cooper Davis
a888f19ad1 Fix LogViewer regex to reduce greediness (#3684) 2023-03-06 09:25:12 -07:00
Andy Miller
479b89134d Update composer.json 2023-02-23 18:46:44 -07:00
Andy Miller
d0d083d985 not just 7.3! 2023-02-23 18:01:01 -07:00
Andy Miller
396b412dda Merge tag '1.7.39.4' into develop
Release v1.7.39.4
2023-02-22 09:20:28 -07:00
Andy Miller
8be02e44c6 Merge branch 'release/1.7.39.4' 2023-02-22 09:20:27 -07:00
Andy Miller
ec115a6a64 prepare for release 2023-02-22 09:20:07 -07:00
Andy Miller
3b92c1aca4 updated changelog 2023-02-22 09:19:24 -07:00
Andy Miller
2d9df03766 Revert "move account info under account section"
This reverts commit 1fae4504a2.
2023-02-22 09:16:54 -07:00
Andy Miller
f086f84ff2 Merge branch 'release/1.7.39.3' 2023-02-21 15:12:34 -07:00
Andy Miller
a2b23ad80e Merge tag '1.7.39.3' into develop
Release 1.7.39.3
2023-02-21 15:12:34 -07:00
Andy Miller
88350d9090 prepare for release 2023-02-21 15:12:24 -07:00
Andy Miller
b2f27fbdf2 cleaner fix for template bug 2023-02-21 12:55:50 -07:00
Andy Miller
72b769aa63 fix for rendering specific templates fixes #3698 2023-02-21 09:39:14 -07:00
Andy Miller
8a7e38751a Merge branch 'release/1.7.39.2' 2023-02-20 14:31:42 -07:00
Andy Miller
3e6c719441 Merge tag '1.7.39.2' into develop
Release v1.7.39.2
2023-02-20 14:31:42 -07:00
Andy Miller
8efb000801 prepare for release 2023-02-20 14:31:30 -07:00
Andy Miller
6d6e92048e flex accounts session fix 2023-02-20 14:02:13 -07:00
Andy Miller
8c365d45a4 Merge branch 'release/1.7.39.1'
# Conflicts:
#	CHANGELOG.md
2023-02-20 11:52:11 -07:00
Andy Miller
ee6448c307 prepare for release 2023-02-20 11:51:36 -07:00
Andy Miller
f8c9e9ada4 css fix for phpdebugbar 2023-02-20 11:49:47 -07:00
Andy Miller
87ab3ae4a7 Fix for debugbar rendering 2023-02-20 10:01:30 -07:00
Andy Miller
68dc461bc0 Merge tag '1.7.39' into develop
Release v1.7.39
2023-02-19 14:52:00 -07:00
Andy Miller
4dd98610a4 Merge branch 'release/1.7.39' 2023-02-19 14:51:59 -07:00
Andy Miller
0358e55aed Merge branch 'master' into develop 2023-02-19 14:51:07 -07:00
Andy Miller
9e5ed10925 typo in types 2023-02-19 14:50:16 -07:00
Andy Miller
3b7eb198cf Merge tag '1.7.39' into develop
Release v1.7.39
2023-02-19 14:44:21 -07:00
Andy Miller
81ed7379a9 Merge branch 'release/1.7.39' 2023-02-19 14:44:21 -07:00
Andy Miller
e1950e985b prepare for release 2023-02-19 14:44:10 -07:00
Andy Miller
84c61af807 updated changelog 2023-02-19 14:43:34 -07:00
Andy Miller
93755c7329 fix UtilsTest for PHPUnit 10 2023-02-19 13:48:13 -07:00
Andy Miller
5329918e2f Merge branch 'develop' of github.com:getgrav/grav into develop 2023-02-19 13:27:58 -07:00
Andy Miller
efd7726646 update packages 2023-02-19 13:27:52 -07:00
Rotzbua
4c762c0ac3 add php 8.2 to test (#3662)
now released https://www.php.net/releases/8.2/en.php
2023-02-19 13:27:19 -07:00
Andy Miller
81a911572c more PHP 8.2 fixes 2023-02-19 13:26:17 -07:00
Andy Miller
c56bb86b61 php 8.2 fixes 2023-02-19 12:07:58 -07:00
Andy Miller
ea010f19f0 Fix for bad rendering of modules 2023-02-17 16:00:46 -07:00
Andy Miller
1fae4504a2 move account info under account section 2023-02-15 15:24:03 -07:00
Andy Miller
d99c84d9f8 empty date to avoid confusion 2023-02-10 15:26:15 -07:00
Andy Miller
c732bfaeef Merge branch 'develop' of github.com:getgrav/grav into develop 2023-01-11 16:16:57 -07:00
Andy Miller
4f0fee684a fix for email validation 2023-01-11 16:16:52 -07:00
Daniel Mason
884faa91bb Update php-fpm socket file to use generic socket file instead of pinning to version (#3669) 2023-01-02 16:19:05 -07:00
Andy Miller
8c261a05cc Merge tag '1.7.38' into develop
Release v1.7.38
2023-01-02 11:24:06 -07:00
Andy Miller
95aa57ca50 Merge branch 'release/1.7.38' 2023-01-02 11:24:05 -07:00
Andy Miller
0bc0e58707 prepare for release 2023-01-02 11:23:56 -07:00
Andy Miller
a86e0d4b96 Update copyright date 2023-01-02 11:09:32 -07:00
Andy Miller
44c819b021 Added new onBeforeSessionStart() Event 2023-01-02 10:46:32 -07:00
Andy Miller
3f13d81c6f Get around a bug where messages were not always being set on session during redirect 2023-01-01 13:10:58 -07:00
Andy Miller
720a965c7e update changelog 2022-12-02 12:23:04 -07:00
Alex
f0e263a404 GitHub Workflows security hardening (#3624)
* build: harden build.yaml permissions

Signed-off-by: Alex <aleksandrosansan@gmail.com>

* build: harden trigger-skeletons.yml permissions

Signed-off-by: Alex <aleksandrosansan@gmail.com>

* build: harden tests.yaml permissions

Signed-off-by: Alex <aleksandrosansan@gmail.com>

Signed-off-by: Alex <aleksandrosansan@gmail.com>
2022-11-30 17:13:49 -08:00
Andy Miller
ad33a63ad2 Revert "dont’ fail hard if pages recurse with same path"
This reverts commit 9c5b8b6496.

# Conflicts:
#	system/src/Grav/Common/Page/Pages.php
2022-10-25 18:20:08 -06:00
Andy Miller
f7b7f3337d fix 2022-10-25 18:01:42 -06:00
Andy Miller
983fcc5e40 Merge branch 'develop' of github.com:getgrav/grav into develop 2022-10-25 17:47:08 -06:00
Andy Miller
9c5b8b6496 dont’ fail hard if pages recurse with same path 2022-10-25 17:47:03 -06:00
Djamil Legato
71fc4eb16b Added .env and .gravenv to gitignore, most likely you don't want them pushed 2022-10-10 14:32:25 -07:00
Andy Miller
ea2858ea2b Merge branch 'develop' of github.com:getgrav/grav into develop 2022-10-05 15:10:37 -06:00
Andy Miller
d080578e83 Upgrade composer to 2.4.2 - fixes #3627 2022-10-05 15:10:32 -06:00
Andy Miller
8427eb6d3e Upgrade composer to 2.4.2 - fixes #3637 2022-10-05 15:09:58 -06:00
Andy Miller
e3a342dabd Merge tag '1.7.37.1' into develop
Release v1.7.37.1
2022-10-05 15:06:23 -06:00
Andy Miller
00b13d1093 Merge branch 'release/1.7.37.1' 2022-10-05 15:06:22 -06:00
Andy Miller
7e5ff71623 prepare for release 2022-10-05 15:06:11 -06:00
Andy Miller
72ba7ccab6 Merge tag '1.7.37' into develop
Release v1.7.37
2022-10-05 11:31:48 -06:00
Andy Miller
ea9c9fdca8 Merge branch 'release/1.7.37' 2022-10-05 11:31:48 -06:00
Andy Miller
5e379bfa39 prepare for release 2022-10-05 11:31:38 -06:00
Matias Griese
fb1e31d0e4 Force user index file to be updated to fix email addresses [getgrav/grav-plugin-login#229] 2022-10-05 19:16:18 +03:00
Andy Miller
8e6b823833 massive change! 2022-10-05 06:38:32 -06:00
Andy Miller
6fcc4ec5d0 Added Pages:: getSimplePagesHash() method 2022-10-05 06:34:16 -06:00
Andy Miller
3e9866920b updated changelog 2022-10-04 17:59:01 -06:00
Andy Miller
3a00ca0457 temp workaround for windows issue - Fixes #2299 2022-10-04 17:55:21 -06:00
Andy Miller
2f6e4b1ad8 Merge branch 'feature/multiple-page-paths' into develop 2022-10-04 11:46:08 -06:00
Andy Miller
01d627e8f7 composer update 2022-10-04 11:45:41 -06:00
Andy Miller
51a386e252 Fix bad default page stream 2022-09-22 17:40:35 -06:00
Andy Miller
30502e8042 fixed composer.json 2022-09-22 12:38:27 -06:00
Andy Miller
01264ef70d initial commit 2022-09-22 12:36:36 -06:00
Andy Miller
de642df06e Added new onPageHeaders() event 2022-09-13 14:28:58 -06:00
Andy Miller
dd8945124e Merge branch 'release/1.7.36' 2022-09-08 11:59:58 -06:00
Andy Miller
0b6428ec29 Merge tag '1.7.36' into develop
Release v1.7.36
2022-09-08 11:59:58 -06:00
Andy Miller
840862c26d prepare for release 2022-09-08 11:59:44 -06:00
Matias Griese
f799a71001 Fixed loggin with a capitalised email address when using old users [getgrav/grav-plugin-login#229] 2022-09-05 21:14:37 +03:00
Matias Griese
3f10c05840 Added support for flex-ignore@ to hide all the nested fields in the blueprint 2022-09-02 19:36:22 +03:00
Matias Griese
dbca0b451c Typo 2022-09-02 19:02:32 +03:00
Matias Griese
6882037b85 Added authorize-*@: support for Flex blueprints 2022-09-02 13:16:19 +03:00
Matias Griese
5d2dc6c329 Composer update 2022-08-18 13:24:34 +03:00
Andy Miller
e9f28ab824 Merge tag '1.7.35' into develop
Release v1.7.35
2022-08-04 15:29:36 -06:00
Andy Miller
186eb8ae6c Merge branch 'release/1.7.35' 2022-08-04 15:29:35 -06:00
Andy Miller
2258adcb05 prepare for release 2022-08-04 15:29:22 -06:00
Andy Miller
20c4cdefe8 minor vendor updates 2022-07-26 12:16:23 -06:00
Matias Griese
aba6382f2e Added variables $environment (string), $request (PSR-7 ServerRequestInterface|null) and $uri (PSR-7 Uri|null) to be used in setup.php 2022-06-30 12:56:31 +03:00
Matias Griese
32dd550178 Fixed FlexDirectory::reloadIndex() to actually get the items from the filesystem 2022-06-29 21:32:50 +03:00
Matias Griese
ec3175fc89 Changelog update 2022-06-29 13:11:14 +03:00
Matias Griese
dac1614306 Composer update 2022-06-29 13:10:26 +03:00
Matias Griese
37e92e4f55 Merge branch 'feature/api' of github.com:getgrav/grav into develop 2022-06-29 13:07:19 +03:00
Matias Griese
1b0c3d1fce Fix phpstan error 2022-06-29 13:06:43 +03:00
Matias Griese
00cb9c3540 Make the new relationships code to work in PHP 7.3 2022-06-29 12:45:16 +03:00
Paweł Bogusławski
b9800b7c35 Allow to configure syslog tag (#3596)
* Allow to configure syslog tag

Author-Change-Id: IB#1120629

* Update InitializeProcessor.php
2022-06-15 10:38:59 -06:00
Matias Griese
b5ab00639b Merge branch 'develop' of github.com:getgrav/grav into feature/api 2022-06-15 14:38:39 +03:00
Andy Miller
cf38cccda1 Merge branch 'release/1.7.34' 2022-06-14 11:09:32 -06:00
Andy Miller
024964eafb Merge tag '1.7.34' into develop
Release v1.7.34
2022-06-14 11:09:32 -06:00
Andy Miller
f8d736b24a prepare for release 2022-06-14 11:09:20 -06:00
Matias Griese
62c4f3c768 Ignore phpstan error 2022-06-14 20:08:04 +03:00
Matias Griese
31920bb153 Composer update 2022-06-14 19:57:42 +03:00
Matias Griese
b18b49a239 Fixed login and user search by email not being case-insensitive when using Flex Users 2022-06-14 10:43:46 +03:00
Matias Griese
9d6a2dba09 Fixed Twig |filter() allowing code execution 2022-06-13 21:11:33 +03:00
Matias Griese
de4af5dbcc Fixed bin/grav install command with arbitrary destination folder name 2022-06-13 20:38:16 +03:00
Matias Griese
f31541250f Fixed broken phpstan tests 2022-06-13 19:29:42 +03:00
Matias Griese
f570cea3bd Fixed alias class references 2022-06-13 19:19:00 +03:00
Matias Griese
0b54a7b4bc Ignore upcoming media.json file in media 2022-06-13 18:22:03 +03:00
Matias Griese
f464492582 Composer update 2022-06-10 11:51:28 +03:00
Matias Griese
81aa4601e4 Changelog update 2022-06-06 11:37:10 +03:00
Yankl-Peretz Blum
6b57f29511 Add Eastern Yiddish
'yi' actually refers to a macrolanguage. The only language in current use in this category is Eastern Yiddish, with language code 'ydd'
2022-06-06 11:14:17 +03:00
yankl
74296a80d0 Add back Yiddish to Language Codes 2022-06-06 11:14:17 +03:00
Matias Griese
8dbc394ae7 Composer update 2022-05-20 16:42:06 +03:00
Matias Griese
89709a7190 Merge branch 'develop' of github.com:getgrav/grav into feature/api
 Conflicts:
	CHANGELOG.md
	composer.lock
2022-05-20 16:41:30 +03:00
Matias Griese
e6320fa327 Changelog update (typo) 2022-05-20 16:40:54 +03:00
Matias Griese
3bf979bd0f Changelog update 2022-05-20 15:57:03 +03:00
Matias Griese
6fa96ca554 Regression: Fixed saving page with a new language causing cache corruption [#2282] 2022-05-20 15:55:38 +03:00
Matias Griese
60ce105fa5 Improved flash media handling in MediaIdentifier 2022-05-20 11:58:09 +03:00
Matias Griese
ec16b5184e Fixed creating empty uploaded file 2022-05-20 10:59:53 +03:00
Matias Griese
a7a9b5d132 Fixed a potential fatal error when using watermark in images 2022-05-13 17:04:56 +03:00
Matias Griese
460ca49f9b Composer update 2022-05-06 17:34:00 +03:00
Matias Griese
32a486f1d4 Added ToManyRelationship::getNthIdentifier() 2022-05-05 11:03:06 +03:00
Matias Griese
1237f0a6d6 Added support for multipart/form-data content type in PUT and PATCH requests 2022-05-04 14:45:59 +03:00
Matias Griese
9ec3e7d731 Minor fix on account relationships 2022-05-03 16:28:02 +03:00
Matias Griese
d6dcd96301 Added relationships support for user accounts 2022-05-03 13:18:57 +03:00
Matias Griese
2957077935 Added relationship logic for flex 2022-05-03 10:27:50 +03:00
Matias Griese
6ba1cff114 Added classes for defining relationships 2022-04-28 13:55:25 +03:00
Matias Griese
6218a4b366 Revert accidental PHP requirement update 2022-04-26 12:30:34 +03:00
Matias Griese
28c4305d46 Composer update 2022-04-26 09:09:14 +03:00
Andy Miller
a2413718f3 Merge branch 'release/1.7.33' 2022-04-25 14:52:04 -06:00
Andy Miller
767a17bf50 Merge tag '1.7.33' into develop
Release v1.7.33
2022-04-25 14:52:04 -06:00
Andy Miller
d75c87ca5e prepare for release 2022-04-25 14:51:51 -06:00
Andy Miller
c2a8145f2c prepare for release 2022-04-25 14:50:34 -06:00
Matias Griese
26e4768bc5 Fixed default collection ordering in pages admin 2022-04-25 18:27:21 +03:00
Matias Griese
4464f29169 Composer update 2022-04-19 10:56:41 +03:00
Matias Griese
2ea39309b6 Composer update 2022-03-31 11:30:35 +03:00
Matias Griese
1c0ed43afa Fixed XSS check not detecting onX events without quotes 2022-03-30 13:26:11 +03:00
Matias Griese
a092aed4ed When saving yaml and markdown, create also a cached version of the file and recompile it in opcache 2022-03-30 12:00:59 +03:00
Matias Griese
7c2b21fb60 Fixed missing changes in yaml & markdown files if saved multiple times during the same second because of a caching issue 2022-03-29 21:35:02 +03:00
Andy Miller
e1ca3c2f70 Merge tag '1.7.32' into develop
Release v1.7.32
2022-03-28 11:36:58 -06:00
Andy Miller
0da5ccb3e1 Merge branch 'release/1.7.32' 2022-03-28 11:36:57 -06:00
Andy Miller
2830ba9120 prepare for release 2022-03-28 11:36:48 -06:00
Matias Griese
5a355fb94e Fixed page search not working with selected language [#3316] 2022-03-25 10:33:05 +02:00
Matias Griese
b0add67cdd Flex search() optimizations 2022-03-25 10:32:34 +02:00
Matias Griese
236c38e65d Changelog update 2022-03-23 15:49:12 +02:00
Matias Griese
c9c23c6c4f Better fix for system.cache.gzip: true 2022-03-23 15:47:45 +02:00
Matias Griese
8f0443a73d Fixed phpstan issues, composer update 2022-03-23 13:05:54 +02:00
Matias Griese
c9271c80a7 Create method cleanOutputBuffers() and use it 2022-03-23 10:49:19 +02:00
Andy Miller
62d9db7650 gzip fixes for downloading 2022-03-22 17:30:55 -06:00
Matias Griese
4f7dad2872 Changelog update 2022-03-21 12:21:12 +02:00
Andy Miller
57d6be0f78 Expose parse_url via parseurl() Twig function 2022-03-20 19:02:36 -06:00
Andy Miller
ae55b4794f Fix for multi-lang issues with Security report 2022-03-20 18:22:12 -06:00
Andy Miller
d82851af10 changelog updated 2022-03-18 13:18:54 -06:00
Andy Miller
730231b8b7 Merge branch 'develop' of github.com:getgrav/grav into develop 2022-03-18 13:15:44 -06:00
Andy Miller
82015d4ae7 gzip enabled breaking in close() 2022-03-18 13:15:37 -06:00
Matias Griese
4376c8ce57 Better multi-byte support for replace_last() filter 2022-03-18 20:39:10 +02:00
Matias Griese
aa1e1bc0ad Optimization for Utils::url() 2022-03-18 20:38:33 +02:00
Matias Griese
35d4d00429 Better fix for multilang URLs in Utils::url() 2022-03-17 16:55:34 +02:00
Matias Griese
3e7f67f589 Set default maximum length for text fields 2022-03-17 13:04:06 +02:00
Matias Griese
c08341046b Added |replace_last(search, replace) filter 2022-03-17 12:15:05 +02:00
Andy Miller
010753bdd6 typo 2022-03-16 14:29:05 -06:00
Andy Miller
d36bc4b8a2 Fix for multilang URLs in Utils::url() 2022-03-16 14:28:07 -06:00
Andy Miller
847f09a2ac Merge branch 'release/1.7.31' 2022-03-14 11:34:43 -06:00
Andy Miller
28469a6bf6 Merge tag '1.7.31' into develop
Release v1.7.31
2022-03-14 11:34:43 -06:00
Andy Miller
0d19bc6e97 prepare for release 2022-03-14 11:34:33 -06:00
Matias Griese
492cc1d2f1 Added XSS check for uploaded SVG files before they get stored (in Form plugin) 2022-03-14 18:55:56 +02:00
Matias Griese
4d4efb31e3 Escape root url pattern in Utils::url() 2022-03-09 12:25:46 +02:00
Andy Miller
c7bc5f5b59 hash for multiavatar only 2022-03-08 14:00:06 -07:00
Andy Miller
41b8fbb0e0 Update changelog + Accounts in sidebar 2022-03-08 10:45:44 -07:00
Djamil Legato
e60ba13d75 Fixed issue with URL method not escaping subpaths slashes 2022-03-08 09:32:28 -08:00
Matias Griese
e0deeeb551 Make new avatar logic more robust 2022-03-08 19:15:46 +02:00
Matias Griese
499b25aad8 Composer update 2022-03-08 19:07:55 +02:00
Andy Miller
9fd580c49b Alternative Multiavatar Approach (#3551)
* Support multiavatar by default

* Support custom hash string
2022-03-08 09:45:41 -07:00
Andy Miller
e09bae918c fix for empty $root 2022-03-05 11:20:54 -07:00
Andy Miller
0abde01442 better fix 2022-03-05 09:22:12 -07:00
Andy Miller
03f71fa49d rolled back but fixed the Utils::url() functionality 2022-03-04 15:37:03 -07:00
Andy Miller
4f92568171 Added system config option legacy_url_root_behavior 2022-03-03 13:16:48 -07:00
Andy Miller
b80fcca0cf fixes for Utils::url() 2022-03-03 12:35:17 -07:00
Andy Miller
879eb27540 updated changelog 2022-03-03 11:21:36 -07:00
Andy Miller
7b7235297e Merge branch 'develop' of github.com:getgrav/grav into develop 2022-03-03 11:21:06 -07:00
Andy Miller
34ab8408fa fix for url() function breaking when path contains root 2022-03-03 11:21:03 -07:00
Matias Griese
f19297d5f7 Added XSS check for uploaded SVG files before they get stored 2022-03-02 13:37:51 +02:00
Matias Griese
78b8051627 Fixed avatar save location when account:// stream points to custom directory 2022-03-02 12:24:27 +02:00
Djamil Legato
3dd0cabeac Fixed entity sanitization for XSS detection 2022-02-23 14:57:36 -08:00
Matias Griese
b992d7f185 Composer update 2022-02-22 11:33:27 +02:00
Matias Griese
a7e82f279a Fixed non-standard video html atributes generated by {{ media.html() }} [#3540] 2022-02-22 11:30:33 +02:00
Matias Griese
6d0d6c22d3 Fixed new Utils::pathinfo() and Utils::basename() being too strict for legacy use [#3542] 2022-02-22 09:46:29 +02:00
Matias Griese
7e52112b21 Fixed phpstan issues (All level 2, Framework level 5) 2022-02-19 12:01:50 +02:00
xaver
a900b89795 Remove variable duplicate (#3539) 2022-02-18 08:39:20 -07:00
Xaver Maierhofer
cad8510dae Merge index exceptions with same handling 2022-02-16 15:52:26 +02:00
Matias Griese
7cafeb2870 Composer update 2022-02-16 09:53:11 +02:00
Matias Griese
b3b5fca16c Fixed 'mbstring' extension is not loaded error, use Polyfill instead [#3504] 2022-02-14 09:38:22 +02:00
Matias Griese
ec884997ef Improve vector image code [#3533] 2022-02-12 10:49:52 +02:00
Matias Griese
3a45748ce6 Added auto_sizes support for SVG vector images [#3533] 2022-02-12 10:41:34 +02:00
Xaver Maierhofer
c4e10cf59f Add Vector image auto_sizes support 2022-02-12 10:26:18 +02:00
Matias Griese
2c252c43b4 Composer update 2022-02-08 12:15:17 +02:00
Matias Griese
382756f79b Fixed pimple link #3527 2022-02-08 08:40:59 +02:00
Andy Miller
11013cbb57 Merge branch 'release/1.7.30' 2022-02-07 12:12:11 -07:00
Andy Miller
2377be9a2b Merge tag '1.7.30' into develop
Release v1.7.30
2022-02-07 12:12:11 -07:00
Andy Miller
b1938c9790 prepare for release 2022-02-07 12:12:03 -07:00
Rotzbua
5d842349e5 add composer suggestion for exif extension 2022-02-07 13:43:23 +02:00
Rotzbua
0323a898cb Normalize variable names 2022-02-07 11:20:16 +02:00
Rotzbua
d275532cf8 Fix documentation of return type 2022-02-07 11:20:16 +02:00
Matias Griese
7306f164e9 Fixed groups filter not matching against readableName [getgrav/grav-plugin-admin#2224] 2022-02-07 10:30:25 +02:00
Matias Griese
3ca58e9ae1 Composer update 2022-02-07 10:11:45 +02:00
Matias Griese
88219fbf0e Fixed accounts filter only matches against email address [getgrav/grav-plugin-admin#2224] 2022-02-07 10:07:00 +02:00
Djamil Legato
5eefc91781 Fixed "Page Authors" field in Security tab, wrongly loading and saving the value (fixes #3525) 2022-02-04 11:23:09 -08:00
Matias Griese
67ef9b221a Fixed error while deleting retina image in admin 2022-02-04 19:58:23 +02:00
Matias Griese
c82a35cea0 Added twig filter |field_parent to get parent field name 2022-02-03 19:51:46 +02:00
Matias Griese
840441bc9b Composer update 2022-02-03 19:50:02 +02:00
Andy Miller
9556e47874 Merge branch 'release/1.7.29.1' 2022-01-31 11:52:21 -07:00
Andy Miller
45fd533186 Merge tag '1.7.29.1' into develop
Release v1.7.29.1
2022-01-31 11:52:21 -07:00
Andy Miller
5248519c37 prepare for release 2022-01-31 11:52:12 -07:00
Matias Griese
5b9a0fb237 Fixed Call to undefined method error when upgrading from Grav 1.6 [#3523] 2022-01-31 11:26:35 +02:00
Matias Griese
389ffe1c7a Composer update 2022-01-31 11:20:09 +02:00
Andy Miller
7b39a1bd8f Merge branch 'release/1.7.29' 2022-01-28 13:08:43 -07:00
Andy Miller
4c5c5925b2 Merge tag '1.7.29' into develop
Release v1.7.29
2022-01-28 13:08:43 -07:00
Andy Miller
96df7deaf4 prepare for release 2022-01-28 13:08:36 -07:00
Matias Griese
7666651324 Fixed error on thumbnail image creation 2022-01-28 19:13:26 +02:00
Djamil Legato
b9db2f3322 Fixed MimeType for gzip (application/x-gzip) 2022-01-27 16:24:50 -08:00
Matias Griese
84a1ab6ca5 Added unicode-safe Utils::basename() and Utils::pathinfo() methods and use them everywhere 2022-01-26 13:54:33 +02:00
Matias Griese
3b89377570 Improved Filesystem::basename() and Filesystem::pathinfo() to be UTF-8 safe 2022-01-26 13:16:35 +02:00
Matias Griese
c3c31880b0 Added support for registering assets from HtmlBlock 2022-01-26 11:06:05 +02:00
Andy Miller
52449246e5 Merge branch 'release/1.7.28' 2022-01-24 11:40:47 -07:00
Andy Miller
b03de18304 Merge tag '1.7.28' into develop
Release v1.7.28
2022-01-24 11:40:47 -07:00
Andy Miller
9bb6f5366e prepare for release 2022-01-24 11:40:25 -07:00
Matias Griese
d126d1b656 Composer update 2022-01-21 11:32:29 +02:00
Matias Griese
6f2fa9311a Fixed XSS check not detecting escaped &#58 2022-01-18 12:34:52 +02:00
Matias Griese
61061220d7 Compoer update, fixed phpstan errors 2022-01-17 09:37:59 +02:00
Matias Griese
aa7e64f2b7 Merge remote-tracking branch 'origin/develop' into develop
# Conflicts:
#	CHANGELOG.md
2022-01-14 11:25:40 +02:00
Matias Griese
b58210de1a Added HtmlBlock support for {% style %}, {% script %} and {% link %} tags 2022-01-14 11:25:21 +02:00
Andy Miller
0bb52c75ce page-level override for redirect_default_route 2022-01-13 06:20:38 -07:00
Matias Griese
da6b41f8a6 Added twig tag for links: {% link icon 'theme://images/favicon.png' priority: 20 with { type: 'image/png' } %} 2022-01-13 13:06:19 +02:00
Matias Griese
1ab2f7083c Added module support for twig script tag: {% script module 'theme://js/module.mjs' %} 2022-01-13 12:52:23 +02:00
Matias Griese
707710d679 Added links and modules support to HtmlBlock class 2022-01-13 12:24:05 +02:00
Andy Miller
bab83ed977 Merge branch 'release/1.7.27.1' 2022-01-12 15:26:38 -07:00
Andy Miller
c103efea22 Merge tag '1.7.27.1' into develop
Release v1.7.27.1
2022-01-12 15:26:38 -07:00
Andy Miller
3e784a2f15 prepare for release 2022-01-12 15:26:29 -07:00
Andy Miller
21f76a1e34 Fixed typo causing ; to join files in CSS 2022-01-12 15:23:28 -07:00
Andy Miller
a8c4e730f6 Merge branch 'release/1.7.27' 2022-01-12 12:31:42 -07:00
Andy Miller
c1a9a7d648 Merge tag '1.7.27' into develop
Release v1.7.27
2022-01-12 12:31:42 -07:00
Andy Miller
d329df2bb0 prepare for release 2022-01-12 12:31:34 -07:00
Andy Miller
f90232e511 typo 2022-01-12 12:29:43 -07:00
Andy Miller
57bd3c9cb5 fixed js module import when pipelined 2022-01-12 12:21:18 -07:00
Andy Miller
419692b9e4 Merge branch 'develop' of github.com:getgrav/grav into develop 2022-01-12 11:10:16 -07:00
Andy Miller
b422d9585c small size for field 2022-01-12 11:10:12 -07:00
Matias Griese
67b9623d6c Numeric sort for sizes: MediaObjectTrait::getAlternatives() 2022-01-12 13:29:18 +02:00
Matias Griese
bda6b26896 Added Medium::getAlternatives() to be able to list all the retina sizes 2022-01-12 12:00:41 +02:00
Andy Miller
9b2af98b0b Merge branch 'develop' of github.com:getgrav/grav into develop 2022-01-11 12:03:22 -07:00
Andy Miller
b07bf96ad9 Support for YubiKey OTP 2-Factor authenticator 2022-01-11 12:03:13 -07:00
Rotzbua
fb2c4f48f7 add php 8.1 to test (#3504)
now released https://www.php.net/releases/8.1/en.php
2022-01-11 09:55:45 -07:00
pmoreno.rodriguez
308383b093 Update README.md (#3517)
Changed the Twig Templating address to https://twig.symfony.com/.
2022-01-11 09:55:24 -07:00
Matias Griese
f8f5502c40 Added Media::getRoute() and Media::getRawRoute() methods to get page route if available 2022-01-11 14:34:35 +02:00
Matias Griese
55b45fcf2f Fixed scaled image medium filename when using non-existing retina file 2022-01-10 22:12:09 +02:00
Matias Griese
bd471cb61b Added Utils::getExtensionsByMime() method to get all the registered extensions for the specific mime type 2022-01-10 19:40:00 +02:00
Andy Miller
2ac38d39ea updated changelog 2022-01-09 21:24:45 -07:00
Andy Miller
7bb8d10b22 Asset blueprint refactor 2022-01-09 21:23:19 -07:00
Andy Miller
f9fcdd6c51 Revert "simplify asset collections in a single array"
This reverts commit 756b088ada.

# Conflicts:
#	system/src/Grav/Common/Assets.php
2022-01-09 21:12:39 -07:00
Andy Miller
3febaaa802 minor method typo 2022-01-09 17:03:03 -07:00
Andy Miller
178cc9c5ea Merge branch 'feature/js-module-assets' into develop 2022-01-09 16:23:37 -07:00
Andy Miller
8d51911873 updated changelog 2022-01-09 16:22:35 -07:00
Andy Miller
99ceb40c5f improvements 2022-01-09 16:14:20 -07:00
Andy Miller
8767bfb9b0 refactoring and generic link support 2022-01-09 15:51:00 -07:00
Andy Miller
756b088ada simplify asset collections in a single array 2022-01-09 14:35:16 -07:00
Andy Miller
c962201bae initial js module support in assets 2022-01-09 13:29:40 -07:00
Matias Griese
2335271472 Second attempt to fix CLI --env, now works with bin/plugins 2022-01-07 21:42:25 +02:00
Matias Griese
47d7927bac Improved onPageFallBackUrl event 2022-01-06 18:10:24 +02:00
Matias Griese
d15542e553 SVG files do not have higher quality alternative 2022-01-06 16:01:53 +02:00
Matias Griese
e6447f7203 Improved Utils::download() method to allow overrides on download name, mime and expires header 2022-01-06 15:36:29 +02:00
Djamil Legato
fbcaf991aa cleanup 2022-01-05 12:00:12 -08:00
Matias Griese
cc8ec10098 Fixed CLI --env and --lang options having no effect if they aren't added before all the other options 2022-01-05 19:52:57 +02:00
Andy Miller
92824f44e6 Merge branch 'release/1.7.26.1' 2022-01-04 11:01:33 -07:00
Andy Miller
c4eefc13a7 Merge tag '1.7.26.1' into develop
Release v1.7.26.1
2022-01-04 11:01:33 -07:00
Andy Miller
d541808604 prepare for release 2022-01-04 11:01:21 -07:00
Matias Griese
231c8a0f4c Fixed UserObject::getAccess() after cloning the object 2022-01-04 18:47:45 +02:00
Andy Miller
ea39587329 Merge branch 'release/1.7.26' 2022-01-03 09:50:49 -07:00
Andy Miller
8f3ac75afd Merge tag '1.7.26' into develop
Release v1.7.26
2022-01-03 09:50:49 -07:00
Andy Miller
b40b543790 prepare for release 2022-01-03 09:50:34 -07:00
Andy Miller
3b7921b698 updated copyright year 2022-01-03 09:14:00 -07:00
Matias Griese
6af1ee48a5 Fixed PHP 8.1 issue in Media, minor optimization 2022-01-03 16:38:11 +02:00
Matias Griese
4519971a76 Fixed Flex directory configuration creating environment configuration when it should not 2021-12-22 21:28:26 +02:00
Matias Griese
26295d5cf2 Fixed FlexIndex::call() to return null instead of failing to call undefined method 2021-12-20 14:46:20 +02:00
Andy Miller
bfc9e26f26 renamed method 2021-12-18 17:53:19 -07:00
Andy Miller
d939b1e563 Merge branch 'develop' of github.com:getgrav/grav into develop 2021-12-18 17:46:59 -07:00
Andy Miller
8343cfb278 new Plugin::upstreamConfigVar 2021-12-18 17:46:55 -07:00
Matias Griese
290a28109e When symlinking Grav install, include also tests 2021-12-17 19:42:02 +02:00
Matias Griese
5bec5db5e1 Fixed Plugin::config() returning null in some cases 2021-12-16 14:25:51 +02:00
Matias Griese
a6fb0a14f0 Fix bad docblocks 2021-12-16 13:59:13 +02:00
Matias Griese
7cb62ddc75 Merge remote-tracking branch 'origin/develop' into develop 2021-12-16 13:55:43 +02:00
Matias Griese
0f85b831b5 Minor fixes 2021-12-16 13:55:36 +02:00
dani
530e6a4399 Update pages.yaml
i believe this is a mistake, the unclosed `<small>` tag is rendering the entire form this way.
2021-12-16 11:16:58 +02:00
dani
c7700c2e16 Update es.yaml
missing accents
2021-12-16 11:16:58 +02:00
Matias Griese
89acc59ac3 Improved UserObject cloning 2021-12-16 10:57:10 +02:00
Matias Griese
9a25c88471 Merge remote-tracking branch 'origin/develop' into develop 2021-12-16 08:49:57 +02:00
Matias Griese
4ccbdafe8a Update Toolbox library for PHP 8.1 support 2021-12-16 08:49:45 +02:00
Djamil Legato
74096e836f Updated OpenCollective tiers 2021-12-15 12:19:01 -08:00
Matias Griese
1c51bf8a66 Added UserObject::$isAuthorizedCallable to allow $user->isAuthorized() customization 2021-12-15 18:00:50 +02:00
Matias Griese
a4beb9b8bd Fixed UserObject::$authorizeCallable binding to the user object 2021-12-15 18:00:27 +02:00
Matias Griese
484a41e42a Added second parameter to UserObject::isMyself() method 2021-12-15 13:28:03 +02:00
Matias Griese
def62ec2a2 Fixed message about user groups not being cached 2021-12-15 12:48:02 +02:00
Matias Griese
fae431bc39 Composer update 2021-12-14 17:13:55 +02:00
Matias Griese
25bc1edf31 Update Twig optimization to reflect upstream code 2021-12-10 16:20:19 +02:00
Matias Griese
945b90fa46 Changelog update 2021-12-10 12:46:55 +02:00
Matias Griese
420a4e3566 Add comment into TwigEnvironment 2021-12-09 21:18:10 +02:00
Matias Griese
f2a7833933 Restore debug info for flex 2021-12-09 21:12:47 +02:00
Matias Griese
491252476d Fixed Twig being very slow when templates do not exist 2021-12-09 21:09:23 +02:00
Matias Griese
6ed453890d Disabled pretty debug info for Flex as it slows down Twig rendering 2021-12-09 15:45:25 +02:00
Matias Griese
432f0eb9e5 Fixed some deprecation notices in flex 2021-12-09 15:07:37 +02:00
Matias Griese
236c068d70 Improve typehints 2021-12-09 14:06:58 +02:00
dani
3f3503e0f3 Update external.yaml (#3493) 2021-12-08 22:27:38 -07:00
Matias Griese
bc70c9b93c Added session.secure_https to system blueprint 2021-12-08 17:40:30 +02:00
Matias Griese
90f5ff7c74 Use secure session cookies in HTTPS by default (system.session.secure_https: true) 2021-12-08 17:38:16 +02:00
Matias Griese
3bfbb1a4ef Composer 2 checks for minimum PHP version, remove duplicated checks 2021-12-08 15:17:28 +02:00
Matias Griese
1f3f1828c2 Block .json files in web server configs 2021-12-08 15:07:42 +02:00
Matias Griese
6c7064db93 Fix phpstan issues 2021-12-08 14:34:38 +02:00
Matias Griese
9df7b35c65 DomIterator keys were off-by-one 2021-12-08 12:49:13 +02:00
Matias Griese
5552ea2d70 Replace unmaintained DOMIterators by our own versions (fixes PHP 8.1 warnings) 2021-12-08 12:34:54 +02:00
Matias Griese
6079562c90 More minor fixes for PHP 8.1 2021-12-08 10:58:38 +02:00
Matias Griese
a56453cf0a Update clockwork 2021-12-08 10:15:26 +02:00
Matias Griese
c2f394de17 Minor fix 2021-12-07 16:46:42 +02:00
Matias Griese
878de339e5 Improved FileSystem::pathinfoInternal() 2021-12-07 13:56:19 +02:00
Matias Griese
86cfba3bc9 Minor fix 2021-12-07 13:47:35 +02:00
Matias Griese
ad1e20abb7 Fixed phpstan level 4 issues in Framework 2021-12-07 13:34:36 +02:00
Matias Griese
2165743810 Fixed phpstan level 2 issues in Framework 2021-12-07 13:20:57 +02:00
Matias Griese
f3789bb17e Changelog update 2021-12-07 13:14:07 +02:00
Matias Griese
8f2f5e3373 Fixed RequestHandlers NotFoundException having empty request 2021-12-07 13:13:35 +02:00
Matias Griese
70c0dc6419 Improve Framework code 2021-12-07 13:10:19 +02:00
Matias Griese
5b84213fce Improved Framework File classes 2021-12-07 13:08:05 +02:00
Matias Griese
3ad68d6d5a Improve flex classes 2021-12-07 13:03:09 +02:00
Matias Griese
627a1510dc Simplify exception handling for Framework Cache classses 2021-12-07 12:52:42 +02:00
Matias Griese
042d4a4603 Improved ACL classes 2021-12-07 12:50:59 +02:00
Matias Griese
b2cfc4ef5f Fixed bad key lookup in FlexRelatedDirectoryTrait::getCollectionByProperty() 2021-12-07 12:47:09 +02:00
Matias Griese
1c148ab6fb Composer update 2021-12-07 12:43:54 +02:00
Matias Griese
cf6159ffe3 Fixed PHP 8.1 deprecated warning 2021-12-07 12:43:40 +02:00
Matias Griese
f04f13723d Silence PHP 8.1 deprecation notices for Twig 1 2021-12-03 14:52:52 +02:00
Matias Griese
5fd4f5f3eb Composer update 2021-12-03 13:12:25 +02:00
Matias Griese
512c2e5d9d Better typehints for Framework classes 2021-12-02 21:22:10 +02:00
Matias Griese
da3e32f945 PHP 8.1: Use strict parameters in Session class 2021-12-02 15:05:29 +02:00
Matias Griese
ae74f29b69 Minor fixes for Grav updater 2021-12-02 14:32:06 +02:00
Matias Griese
ecb2d31df0 PHP 8.1 2021-12-02 13:52:51 +02:00
Matias Griese
2355d799f2 PHP 8.1 fixes 2021-12-02 12:05:41 +02:00
Matias Griese
589f75b60d Phpstan test updates 2021-12-01 17:03:41 +02:00
Matias Griese
6aebbc2be4 Also Grav::exit() and Grav::redirect() never returns (typehint) 2021-12-01 16:45:45 +02:00
Matias Griese
fb4bce36cb Grav::close() never returns (typehint) 2021-12-01 16:25:39 +02:00
Matias Griese
3321f49253 Interface fixes 2021-12-01 15:46:36 +02:00
Matias Griese
5c6fd0453b Changelog update 2021-12-01 15:02:27 +02:00
Matias Griese
179dec4c3b More phpstan fixes 2021-12-01 14:59:22 +02:00
Matias Griese
d59a4c63db Added translated() method to PageTranslateInterface 2021-12-01 14:57:27 +02:00
Matias Griese
4c3daf6e6f PHP 8.1 return type fixes 2021-11-30 21:20:17 +02:00
Matias Griese
c220b6e0c2 ControllerResponseTrait: Redirect response should be json if the extension is .json 2021-11-30 19:08:49 +02:00
Matias Griese
e4f79dbfce Minor fixes 2021-11-30 19:02:42 +02:00
Matias Griese
d220812f5e Minor code improvements 2021-11-30 18:59:44 +02:00
Matias Griese
d4a23c1fbe Fixed assert 2021-11-30 18:54:03 +02:00
Matias Griese
a57c18f63f Fixed some phpstan errors 2021-11-30 15:26:21 +02:00
Matias Griese
8256af5cfa Fix some phpstan level 2 errors 2021-11-30 14:49:50 +02:00
Matias Griese
eae3668aee Fixed phpstan issue 2021-11-30 14:09:14 +02:00
Matias Griese
8d04330dc5 Upgraded 2021-11-30 13:56:36 +02:00
Matias Griese
b7ab1df4e3 Toolbox update 2021-11-25 21:57:04 +02:00
Matias Griese
664c95e95a Composer update 2021-11-25 11:28:25 +02:00
Matias Griese
a8d292a0d9 Added third $name parameter to Blueprint::flattenData() method, useful for flattening repeating data 2021-11-25 11:07:20 +02:00
Andy Miller
6e9f6e8f7a php 8.1 compatibility 2021-11-17 10:40:38 -07:00
Andy Miller
d0604a055f Merge branch 'feature/php-81' into develop 2021-11-17 10:40:03 -07:00
Matias Griese
193475a0b6 Made Grav::redirect() to accept Route class 2021-11-17 10:49:39 +02:00
Andy Miller
47b444a742 pimple fix 2021-11-16 19:57:34 -07:00
Andy Miller
3c3b44d6de Merge branch 'release/1.7.25' 2021-11-16 10:34:56 -07:00
Andy Miller
88c2b40ec7 Merge tag '1.7.25' into develop
Release v1.7.25
2021-11-16 10:34:56 -07:00
Andy Miller
88ffa163c4 prepare for release 2021-11-16 10:34:46 -07:00
Matias Griese
956ed013cf Improved redirects: send redirect response in JSON if the request was in JSON 2021-11-12 12:08:13 +02:00
Matias Griese
061ebf06c6 Composer update 2021-11-12 11:02:24 +02:00
Matias Griese
e6911ce24a Improved form validation JSON responses to contain list of failed fields with their error messages 2021-11-12 09:36:54 +02:00
Matias Griese
d9c9f6a5eb Fixed form validation exceptions to use 400 Bad Request instead of 500 Internal Server Error 2021-11-12 09:35:26 +02:00
Matias Griese
2a04628459 Added FlexObject::getDiff() to see difference to the saved object 2021-11-11 20:06:24 +02:00
Matias Griese
33b473c290 Fixed FlexObject::getChanges() always returning empty array 2021-11-11 15:48:18 +02:00
Matias Griese
58b48c2f26 Do not escape ValidationException 2021-11-09 19:12:39 +02:00
Matias Griese
ad003a0fc4 Updated phpstan to v1.0 2021-11-04 08:55:53 +02:00
Matias Griese
8f9c417c04 Fixed path traversal vulnerability when using bin/grav server 2021-11-03 14:06:42 +02:00
Matias Griese
8bbf7a849b Fixed |t(variable) twig filter in admin 2021-11-03 13:10:10 +02:00
Matias Griese
a723bcdb46 Fixed unescaped error messages in JSON error responses 2021-11-03 11:50:23 +02:00
Matias Griese
3d0d836d92 Composer update 2021-11-02 15:27:53 +02:00
Andy Miller
67ea6c8066 Merge branch 'develop' of github.com:getgrav/grav into develop
# Conflicts:
#	CHANGELOG.md
2021-10-29 10:53:40 -06:00
Andy Miller
cd1dc5b43d better vardump variable 2021-10-29 10:53:01 -06:00
Matias Griese
1d1c10f0a6 Added method Page::initialize() 2021-10-27 14:59:23 +03:00
Matias Griese
125f2a8662 Improved page cloning 2021-10-27 14:24:16 +03:00
Matias Griese
4046fed60f Changelog update 2021-10-27 14:23:39 +03:00
Andy Miller
78ca2f68cc Merge tag '1.7.24' into develop
Release v1.7.24
2021-10-26 13:45:45 -06:00
Andy Miller
18fcf80b4f Merge branch 'release/1.7.24' 2021-10-26 13:45:44 -06:00
Andy Miller
4db28bf47e prepare for release 2021-10-26 13:45:30 -06:00
Andy Miller
917aa9407d updated vendor libs 2021-10-26 13:44:43 -06:00
Andy Miller
6fc2bc4f91 Merge branch 'develop' of github.com:getgrav/grav into develop 2021-10-26 11:39:19 -06:00
Andy Miller
7dc6b71252 whitespace 2021-10-26 11:39:15 -06:00
Matias Griese
53c7f4c119 Changelog update 2021-10-26 19:25:41 +03:00
Matias Griese
af4243aff2 User authorize() now checks user groups before superuser, allowing deny rules to work 2021-10-26 19:22:56 +03:00
Matias Griese
afc69a3229 Fixed XSS detection with &colon; 2021-10-25 20:37:59 +03:00
Matias Griese
17dfd130b6 Changelog update 2021-10-22 15:08:28 +03:00
Matias Griese
05101650ce Merge remote-tracking branch 'origin/develop' into develop 2021-10-22 15:07:51 +03:00
Matias Griese
715477586c Added support to disable a form, making it readonly 2021-10-22 15:07:42 +03:00
Ricardo Verdugo
fd61f82f5a Watermark Media Action (#3308)
* added gregwar merge media action and watermark media function

* remove the dump left by accident

* added scaling to the watermark

Co-authored-by: Ricardo <ricardo@urbansquid.london>
Co-authored-by: Andy Miller <1084697+rhukster@users.noreply.github.com>
2021-10-21 06:31:33 -06:00
Matias Griese
8b0a6906c7 Composer update 2021-10-20 20:27:11 +03:00
Matias Griese
be44bf0b55 Fixed deprecated warnings on ArrayAccess in PHP 8.1 2021-10-20 18:56:21 +03:00
Matias Griese
d2536379e5 Changelog update (#3464) 2021-10-20 12:31:27 +03:00
Nicolas Busseneau
08d7ad80df fix session_store_active functionality
At the moment and since 1.7.19, the `system.languages.session_store_active`
setting has no effect.

Session must be initialized before URI for `$language->setActiveFromUri($uri)`
(called from `$this->initializeUri($config) -> $uri->init()`) to
properly retrieve / store `active_language` in Session.

This was previously detected in #3269 as per the code comment, but got
reversed in 2e9fe80e33.
2021-10-20 12:24:10 +03:00
Matias Griese
33a5709903 Fixed a bug in PermissionsReader in PHP 7.3 2021-10-20 10:24:00 +03:00
Andreas Becker
280cbc2330 Update LanguageCodes.php (#3469)
Adding 
my - Myanmar Burmese
sw - Swahili
lo - Lao
km - Khmer
2021-10-18 20:59:21 -06:00
Andy Miller
746e75b9e4 Merge branch 'develop' of github.com:getgrav/grav into develop 2021-10-07 08:16:38 -06:00
Andy Miller
11decd5889 Use client now 2021-10-07 08:16:14 -06:00
Matias Griese
be136d3ce4 Added support for custom form field options validation with validate: options: key|ignore 2021-10-07 14:00:17 +03:00
Matias Griese
60fd4ec516 Added UserObject::isMyself() method to check if flex user is currently logged in 2021-10-07 12:49:14 +03:00
Matias Griese
b136480669 Composer update 2021-10-06 10:40:31 +03:00
Andy Miller
07bd1e03d0 Better backwards compatibility 2021-10-01 11:42:41 -06:00
Andy Miller
75ef1341eb Added new HTTP\Client class for more general use 2021-09-30 17:39:49 -06:00
Andy Miller
ed6b60429c Merge branch 'release/1.7.23' 2021-09-29 14:22:22 -06:00
Andy Miller
2edb12bc18 Merge tag '1.7.23' into develop
Release v1.7.23
2021-09-29 14:22:22 -06:00
Andy Miller
5843e226c3 prepare for release 2021-09-29 14:22:03 -06:00
Andy Miller
4fc73fdc35 update to latest dom-sanitizer 2021-09-29 14:20:42 -06:00
Andy Miller
78fbc787a4 Updated vendor libs + changelog 2021-09-29 10:59:20 -06:00
Andy Miller
8af71742a0 Merge branch 'develop' of github.com:getgrav/grav into develop 2021-09-29 10:58:20 -06:00
Andy Miller
22e550820d updated language strings 2021-09-29 10:57:42 -06:00
Matias Griese
372f81a09e Added BlueprintSchema::getNestedRules() method 2021-09-29 08:38:42 +03:00
Matias Griese
22f5ba4bb1 Changelog update 2021-09-24 15:14:34 +03:00
Matias Griese
028e247df8 Fixed form reset causing image uploads to fail when using Flex 2021-09-24 15:09:27 +03:00
Matias Griese
4038c0649c Fixed some phpstan issues (all code level 1, Framework level 3) 2021-09-24 13:28:32 +03:00
Matias Griese
8aee574069 Phpstan fixes 2021-09-24 13:18:26 +03:00
Matias Griese
c220aa746a Phpstan fix for Deferred Twig extension compat mode 2021-09-24 12:26:05 +03:00
Matias Griese
da00dd9eec Further attempt to fix :0 port [#3439] 2021-09-24 12:24:14 +03:00
Matias Griese
30b55ae150 Phpstan fixes 2021-09-24 12:19:41 +03:00
Matias Griese
6b70826961 Add variable-length argument list to GravExtension::translate() 2021-09-24 10:58:05 +03:00
Djamil Legato
ae8dfde69d Added true unique Utils::uniqueId() / {{ unique_id() }}utilities with length, prefix, and suffix support. 2021-09-23 21:40:21 -07:00
Andy Miller
63661a40e3 updated clean command 2021-09-23 19:24:57 -06:00
Andy Miller
b76ee25d49 replaced svg-sanitizer with dom-sanitizer 2021-09-23 19:22:24 -06:00
Andy Miller
3f7c7692ab Merge branch 'develop' of github.com:getgrav/grav into develop 2021-09-23 19:19:08 -06:00
Andy Miller
e34d896278 remove svg-sanitizer 2021-09-23 19:19:02 -06:00
Andy Miller
3e90baef02 only require PHP 7.3 2021-09-23 19:10:15 -06:00
Matias Griese
7ed87f87e0 Use composer 2 in Github workflows 2021-09-23 14:06:26 +03:00
Matias Griese
35af0aa4b0 Changelog update 2021-09-21 13:44:15 +03:00
Matias Griese
370b0674bd Fixed Folder::move() throwing an error when target folder is changed by only appending characters to the end [#3445] 2021-09-21 13:42:18 +03:00
Matias Griese
e0c3e28809 Added method Pages::referrerRoute() to get the referrer route and language 2021-09-20 17:09:32 +03:00
Matias Griese
53302ac082 Changelog update #3411 2021-09-20 15:55:35 +03:00
Matias Griese
9ff605e08b Uri::referrer() docblock update 2021-09-20 15:52:27 +03:00
Matias Griese
5593327dbc Uri::referrer() now accepts third parameter, if set to true, it returns route without base or language code 2021-09-20 15:39:09 +03:00
Matias Griese
31b0510bbd Composer update 2021-09-20 10:18:50 +03:00
Matias Griese
beba9c029d Better Twig 3 support 2021-09-17 15:46:10 +03:00
Matias Griese
243053659c Update to customized version of Twig DeferredExtension, improve Twig 2 compatibility 2021-09-17 15:39:16 +03:00
Andy Miller
f2d30e3680 Merge branch 'release/1.7.22' 2021-09-16 13:49:46 -06:00
Andy Miller
76d881bac1 Merge tag '1.7.22' into develop
Release v1.7.22
2021-09-16 13:49:46 -06:00
Andy Miller
c5fd282653 prepare for release 2021-09-16 13:49:38 -06:00
Matias Griese
d276af6fa9 Register plugin autoloaders into plugin objects 2021-09-16 18:22:09 +03:00
Matias Griese
ba19ce4919 Fixed conflicting $_original variable in Flex Pages 2021-09-15 12:40:06 +03:00
Andy Miller
d86a7a1653 Merge tag '1.7.21' into develop
Release v1.7.21
2021-09-14 12:59:37 -06:00
Andy Miller
f3c82f85c8 Merge branch 'release/1.7.21' 2021-09-14 12:59:36 -06:00
Andy Miller
b17eaba8bf prepare for release 2021-09-14 12:59:29 -06:00
Matias Griese
0600d6a4d8 Merge remote-tracking branch 'origin/develop' into develop 2021-09-14 18:28:16 +03:00
Matias Griese
c51fb1779b Fixed Session::setFlashCookieObject() to use the same options as the main session cookie 2021-09-14 18:28:07 +03:00
Andy Miller
34b7a28fbe update changelog 2021-09-13 17:42:30 -06:00
Andy Miller
a446152631 Merge branch 'develop' of github.com:getgrav/grav into develop 2021-09-13 17:41:08 -06:00
Andy Miller
61c2abee35 use a simple cron text field as custom one was confusing 2021-09-13 17:40:55 -06:00
Andy Miller
c1d520f1cf Add date/time to text file output of scheduler 2021-09-13 17:40:39 -06:00
Matias Griese
3bd9e44155 Remove extra space #3432 2021-09-13 16:51:06 +03:00
Matias Griese
7311517d65 Fixed incorrect port :0 with nginx unix socket setup [#3439] 2021-09-13 12:34:42 +03:00
Matias Griese
4568a197e7 Fixed excessive security.yaml file creation [#3432] 2021-09-13 11:53:12 +03:00
Matias Griese
350134b256 Renamed conflicting $object->getOriginal() to $object->getOriginalData() 2021-09-10 19:09:56 +03:00
Matias Griese
1350cf5675 Added $object->getOriginal() to get flex objects data before it was modified with update() 2021-09-09 14:14:42 +03:00
Matias Griese
21db2e7d4a Added support for flex-required@: not exists and flex-required@: '!exists' in blueprints 2021-09-09 14:14:16 +03:00
Matias Griese
cda08242f1 Added file upload/remove support for Flex Forms 2021-09-08 14:34:15 +03:00
Matias Griese
fc8936986f Cast data.search.options to array 2021-09-07 18:28:36 +03:00
Matias Griese
ec37fd065f Throwing exceptions from Twig templates fires onDisplayErrorPage.[code] event allowing better error pages 2021-09-03 18:39:41 +03:00
Matias Griese
47875a4525 Added route and request to onPageNotFound event 2021-09-03 12:23:48 +03:00
Matias Griese
61adb1e6cf More robust way to check number step [#3433] 2021-09-02 20:34:17 +03:00
Matias Griese
907e46631c Added |yaml filter to convert input to YAML 2021-09-02 20:02:07 +03:00
Matias Griese
aedf8cda47 Changelog update [#3433] 2021-09-02 10:57:10 +03:00
Matias Griese
7a1f5539ed Fixed validation of number type 2021-09-02 10:55:27 +03:00
Matias Griese
49087e9a53 Fixed escaping in PageIndex::getLevelListing() 2021-09-02 10:20:26 +03:00
Andy Miller
a128c7f18d Merge branch 'release/1.7.20' 2021-09-01 10:39:40 -06:00
Andy Miller
c6704d8129 Merge tag '1.7.20' into develop
Release v1.7.20
2021-09-01 10:39:40 -06:00
Andy Miller
c43b375d3b prepare for release 2021-09-01 10:39:23 -06:00
Matias Griese
9523bab910 Merge remote-tracking branch 'origin/develop' into develop 2021-08-31 22:25:15 +03:00
Matias Griese
a8fe62a829 Added support for task and action inside JSON request body 2021-08-31 22:25:02 +03:00
Andy Miller
4708a46ec9 Merge branch 'release/1.7.19' 2021-08-31 13:08:46 -06:00
Andy Miller
7a99aaa53f Merge tag '1.7.19' into develop
Release v1.7.19
2021-08-31 13:08:46 -06:00
Andy Miller
e54e488f80 Merge tag '1.7.19' into develop
Release v1.7.19
2021-08-31 12:21:42 -06:00
Andy Miller
bf471cc3fa Merge branch 'release/1.7.19' 2021-08-31 12:21:42 -06:00
Andy Miller
fd8c44ba90 prepare for release 2021-08-31 12:21:31 -06:00
Matias Griese
f9e7f1c08e Flex: Use str_replace() and not strtr() 2021-08-30 09:55:21 +03:00
Andy Miller
8042caee57 fixed svgImageFunction() 2021-08-27 10:26:00 -06:00
Matias Griese
3f3f63f411 Fixed Flex object types not implementing MediaInterface 2021-08-25 18:50:08 +03:00
Matias Griese
292687ea00 Fixed wrong form issue with flex objects after cache clear 2021-08-25 18:31:58 +03:00
Andy Miller
aa47cb7b97 ignore cli/security.yaml 2021-08-18 14:04:21 -06:00
Djamil Legato
794237bf30 Minor indentation config tweaks 2021-08-18 09:31:15 -07:00
Rotzbua
de3aa16aca add mime for .avif image format
new image format developed by google

references:
https://codelabs.developers.google.com/codelabs/avif#0
https://caniuse.com/avif
2021-08-18 11:19:38 +03:00
Rotzbua
34d001cbef fix typo mime type of .aif (#3423)
mime type should be `audio/aiff`
reference: https://en.wikipedia.org/wiki/Audio_Interchange_File_Format
2021-08-13 10:58:35 -04:00
Andy Miller
21bd51aef9 remove sensio 2021-08-13 09:59:03 -04:00
Matias Griese
f45afd1f54 Added support for multiple mime-types per file extension [#3422] 2021-08-13 13:05:32 +03:00
Matias Griese
c975f894ae Composer update 2021-08-11 09:07:57 +03:00
Matias Griese
a9b59596d8 Fixed flex-options@ in blueprints duplicating items in array 2021-08-10 12:38:07 +03:00
Matias Griese
9333fcc1d6 Generalize FolderStorage templating 2021-08-09 21:38:01 +03:00
Matias Griese
b3426f86a3 Merge remote-tracking branch 'origin/develop' into develop 2021-08-09 19:36:23 +03:00
Matias Griese
b3e9682511 Generalize FolderStorage templating 2021-08-09 19:36:14 +03:00
Rotzbua
b3af6c9920 Change mime-type to text/javascript (#3415)
Recommended by whatwg and draft-ietf-dispatch-javascript-mjs-09 (obsoletes RFC4329)
2021-07-31 14:29:22 -06:00
Matias Griese
2e9fe80e33 Initialize $grav['uri] before session 2021-07-30 09:31:33 +03:00
Matias Griese
def389356e Added UserObject::$authorizeCallable to allow $user->authorize() customization 2021-07-29 23:09:25 +03:00
Matias Griese
c5dfa65994 Fixed FlexDirectoryForm serialization 2021-07-29 22:14:45 +03:00
Matias Griese
c9159695aa Fixed FlexForm serialization 2021-07-29 19:59:42 +03:00
Matias Griese
17d1786e5c Fixed broken Twig try tag when catch has not been defined or is empty 2021-07-29 16:12:14 +03:00
Matias Griese
5437d2db1a Fixed Flex Object missing key field value when using FolderStorage 2021-07-28 14:31:55 +03:00
Matias Griese
e390e9901e Allow customization of security.yaml 2021-07-28 14:29:10 +03:00
Matias Griese
7c946c59f8 Include request in onPageTask and onPageAction events (defaults to null) 2021-07-26 17:27:30 +03:00
Matias Griese
506c74de55 Include active form in onPageTask and onPageAction events (defaults to null) 2021-07-26 14:39:40 +03:00
Matias Griese
ab9783102e Fixed broken environment:// stream when it doesn't have configuration 2021-07-23 21:51:17 +03:00
Matias Griese
a8a8cce25f Fixed GPM not using non-standard cache path [#3410] 2021-07-23 09:39:21 +03:00
Matias Griese
d62e869044 Add changelog [#3398] 2021-07-22 17:17:15 +03:00
Karmalakas
6dd5e0fd20 Change key setting in a loop
#531
2021-07-22 17:13:42 +03:00
Karmalakas
c57a29c23f Add setCurrent() method to Page Collection
#531
2021-07-22 17:13:42 +03:00
Matias Griese
2866a51326 Added meta support for UploadedFile class 2021-07-22 17:01:55 +03:00
Matias Griese
21f5488d3b Make MediaUploadTrait::getUploadSettings() public 2021-07-22 17:00:16 +03:00
Matias Griese
7b1a188cfe Fixed error in loadDirectoryConfig() if configuration hasn't been saved [#3409] 2021-07-22 16:59:42 +03:00
Matias Griese
fdcf7026d2 Changelog for #3408 2021-07-20 10:48:22 +03:00
Andy Miller
b8ada23e2b fixes #3408 2021-07-19 22:35:57 -06:00
Andy Miller
5def813a2e Merge branch 'release/1.7.18' 2021-07-19 12:16:38 -06:00
Andy Miller
551a8251f9 Merge tag '1.7.18' into develop
Release v1.7.18
2021-07-19 12:16:38 -06:00
Andy Miller
951ce6f9f8 prepare for release 2021-07-19 12:15:54 -06:00
Matias Griese
c9448870fa Fixed open_basedir() error with some forms 2021-07-08 14:00:53 +03:00
Andy Miller
1d552ab603 updated changelog 2021-07-06 17:46:08 -06:00
Andy Miller
e39d01e139 Support cloudflare + better x-forwarded-for 2021-07-06 17:44:49 -06:00
Robert Bak
d4805bc709 Fixes issue with Symfony local server detection (#3400)
I was just doing the same thing!
2021-07-06 14:40:12 -06:00
Matias Griese
35db2f61f7 Added method FlexObject::resetBlueprints() 2021-07-06 21:39:14 +03:00
Andy Miller
8af1229f65 qurantine bad SVGs 2021-07-01 15:36:26 -06:00
Matias Griese
9aa6f5b1f7 Fixed Failed to save entry: Forbidden when moving a page to a visible page [#3389] 2021-07-01 14:45:24 +03:00
Matias Griese
da8e374443 Fixed Admin becoming unusable when GPM cannot be reached [#3383] 2021-06-24 17:04:04 +03:00
Matias Griese
95851e8f52 Improve page search to include slug [#3316] 2021-06-24 15:34:14 +03:00
Matias Griese
d2350b6786 Fixed error when using Flex SimpleStorage with no entries 2021-06-23 14:45:56 +03:00
Matias Griese
08a2abb713 Added support for loading Flex Directory configuration from main configuration 2021-06-16 21:35:43 +03:00
Andy Miller
ac62f54aa5 Merge branch 'release/1.7.17' 2021-06-15 13:11:35 -06:00
Andy Miller
fb189a3ce4 Merge tag '1.7.17' into develop
Release v1.7.17
2021-06-15 13:11:35 -06:00
Andy Miller
7e41938317 prepare for release 2021-06-15 13:11:26 -06:00
Andy Miller
d90b28a399 fix jquery in tests 2021-06-15 10:20:57 -06:00
Andy Miller
90f5635478 Switch to JQuery 3.x rather than 2.x 2021-06-15 10:15:12 -06:00
Djamil Legato
acf8724402 Added tests for new params support in collections (#3358) 2021-06-14 16:03:22 -07:00
Djamil Legato
f1c623c14b Fixed mutability issue when adding multiple assets with different params (#3358) 2021-06-14 11:55:14 -07:00
Djamil Legato
ee40ad59f2 Ensure simple second argument for priority is also supported in multi-collections with params (fixes #3358) 2021-06-14 10:25:16 -07:00
Matias Griese
845fac8adf Fixed permission check when moving a page [#3382] 2021-06-10 16:27:30 +03:00
Matias Griese
896695b30f Interface FlexDirectoryInterface now extends FlexAuthorizeInterface 2021-06-10 13:55:12 +03:00
Matias Griese
fbfa88739d Changelog update 2021-06-10 13:19:47 +03:00
Matias Griese
ea191602da Fixed missing styles when CSS/JS Pipeline is used and assets/ folder is missing 2021-06-10 13:16:20 +03:00
Matias Griese
564287eb21 Composer update 2021-06-10 09:23:41 +03:00
Matias Griese
28790197aa File frontmatter.yaml isn't part of media, ignore it 2021-06-08 09:28:30 +03:00
Djamil Legato
1db66fd43d Ported support for multi-parameter assignment in asset collection to method add (fixes #3358) 2021-06-04 11:21:17 -07:00
Djamil Legato
8d506db73c Added support specifying custom attributes to assets in a collection (fixes #3358) 2021-06-03 15:59:01 -07:00
Djamil Legato
c288d4bd0b Allow to unset an asset attribute by specifying null (ie, ’defer’ => null) 2021-06-03 15:51:24 -07:00
Djamil Legato
39247ac7ef Updated blueprints inline-docs for clear_images_by_default 2021-06-02 23:35:04 -07:00
Andy Miller
47b5b10bf4 Merge tag '1.7.16' into develop
Release v1.7.16
2021-06-02 12:23:38 -06:00
Andy Miller
ad1cf15d7c Merge branch 'release/1.7.16' 2021-06-02 12:23:37 -06:00
Andy Miller
6339d9f3cd prepare for release 2021-06-02 12:23:27 -06:00
Andy Miller
fc36a76fc0 updated changelog 2021-06-02 12:22:42 -06:00
phmg701
18d7fd4c7d Adding the addFrame method to ImageMedium (#3323)
* Update ImageMediaTrait.php

Add needed magic actions to enable image frame creation.

* Update ImageMedium.php

Adds addFrame method that can be (recursively) called from Twig.
2021-06-01 16:38:40 -06:00
Djamil Legato
76e44a1043 More regex fixes for URI 2021-06-01 15:16:39 -07:00
Andy Miller
4c0d107562 stupid fix for homebrew PHP 7.4.18+ 2021-06-01 14:25:52 -06:00
Djamil Legato
d359120d81 Fixed SRI trying to calculate remote assets, only ever set integrity for local files. Use the SRI provided by the remote source and manually add it in the addJs/addCss call for remote support. (fixes #3358)
Also Fixed wrong SRI paths invoked when Grav instance as a sub folder
2021-05-27 12:26:25 -07:00
Matias Griese
278671deec Fixed flex pages using wrong type in onBlueprintCreated event [#3157] 2021-05-27 14:18:12 +03:00
Matias Griese
e28360f86a Fixed flex pages search using only folder name [#3316] 2021-05-27 13:17:24 +03:00
Matias Griese
75cef03644 Improve error on bad nested form data [#3364] 2021-05-26 11:43:20 +03:00
Matias Griese
33be6946f7 Fixed the first visible child page getting ordering number 999999. [#3365] 2021-05-26 11:16:31 +03:00
Andy Miller
7f23b088a4 set clear_images_by_default to false by default 2021-05-25 11:27:13 -06:00
Matias Griese
c56f9f3277 Fixed pathinfo() twig filter in PHP 7 2021-05-24 10:01:24 +03:00
Matias Griese
6198d5abf3 Improve Plugin and Theme initialization to fix PHP8 bug [#3368] 2021-05-22 12:28:15 +03:00
Andy Miller
3f8c51cc01 Merge tag '1.7.15' into develop
Release v1.7.15
2021-05-19 13:22:30 -06:00
Andy Miller
b693ed4071 Merge branch 'release/1.7.15' 2021-05-19 13:22:29 -06:00
Andy Miller
5621f5cdb0 prepare for release 2021-05-19 13:22:18 -06:00
Andy Miller
83f2097f40 trim extra line breaks 2021-05-18 21:58:37 -06:00
Matias Griese
879de1d95e Rename property for onOutputGenerated and onOutputRendered events 2021-05-12 14:52:41 +03:00
Matias Griese
ec018f40aa Minor update for onOutputGenerated and onOutputRendered events 2021-05-12 14:51:11 +03:00
Matias Griese
0866753617 Added page and content properties to onOutputGenerated and onOutputRendered events 2021-05-12 14:49:34 +03:00
Matias Griese
5f66f2c4a9 Fixed uploading images into Flex Object if field destination is not set 2021-05-12 10:36:25 +03:00
Matias Griese
40f08a7f8b Flex: Mark uploaded media as uploaded 2021-05-10 20:08:18 +03:00
Matias Griese
c274337fed Minor fix on user avatar upload 2021-05-10 18:03:56 +03:00
Matias Griese
7d01977a89 Fixed missing and commonly used methods when using system.twig.undefined_functions = false 2021-05-10 12:27:11 +03:00
Matias Griese
d058c1d4fc Fixed copying page without changing the slug 2021-05-10 11:43:16 +03:00
Matias Griese
1a28155f1c Update docblocks to return the actual type [#3350] 2021-05-07 13:26:24 +03:00
Matias Griese
7ca7d8e045 Allow optional start date in page collections [#3350] 2021-05-07 13:23:38 +03:00
Thibaut HENIN
ec98ddc2df Improve PageCollectionInterface::dateRange signature and documentation. Report changes into implementations. 2021-05-07 13:19:09 +03:00
Thibaut HENIN
72b520745a Simplify Collection::dateRange (same structure as PageCollection::dateRange) 2021-05-07 13:19:09 +03:00
Thibaut HENIN
9b4f0ca951 Fix dateRange when startDate is not provided (value of 0) 2021-05-07 13:19:09 +03:00
Matias Griese
a761df80db Fixed markdown media operations not working when using image:// stream [#3333] [#3349] 2021-05-07 13:09:34 +03:00
Matias Griese
9059904c1a Fixed fatal error with some markdown links 2021-05-07 11:53:32 +03:00
Matias Griese
568e728d20 Fixed twig deprecated TwigFilter messages [#3348] 2021-05-06 15:02:54 +03:00
Andy Miller
e56d414357 better uploader to allow rebuilds 2021-05-05 15:14:45 -06:00
Andy Miller
668f8ccdbf Merge branch 'release/1.7.14' 2021-04-29 10:22:27 -06:00
Andy Miller
9281be57fc Merge tag '1.7.14' into develop
Release v1.7.14
2021-04-29 10:22:27 -06:00
Andy Miller
d1e58eb95e prepare for release 2021-04-29 10:22:16 -06:00
Matias Griese
9f5a15f00a Updating a theme should always keep the custom files 2021-04-29 15:37:44 +03:00
Matias Griese
3aa47043c9 Added option to set flash folder in FlexForm 2021-04-28 13:58:08 +03:00
Matias Griese
8532db70d2 Merge remote-tracking branch 'origin/develop' into develop 2021-04-28 12:44:33 +03:00
Matias Griese
f8106a48ae Added MediaUploadTrait::checkFileMetadata() method 2021-04-28 12:44:21 +03:00
Ricardo
2813934d21 fix for when no valid link attributes are present 2021-04-26 21:20:19 +01:00
Matias Griese
defb793b0b Hide phpstan deprecation errors on Doctrine Cache 2021-04-26 10:54:39 +03:00
Matias Griese
1fd2162d4f Fixed broken exif_imagetype() twig function, composer update 2021-04-26 10:50:35 +03:00
Matias Griese
094a1bd5ee Changelog update 2021-04-26 09:56:39 +03:00
Matias Griese
2cf7a5f281 Fixed broken numeric language codes in Flex Pages [#2131] 2021-04-26 09:53:21 +03:00
Andy Miller
2ed451130c Merge branch 'release/1.7.13' 2021-04-23 12:55:38 -06:00
Andy Miller
4d1f88627a Merge tag '1.7.13' into develop
Release v1.7.13
2021-04-23 12:55:38 -06:00
Andy Miller
ed7e51480b prepare for release 2021-04-23 12:55:28 -06:00
Matias Griese
3e91be9a4d Added support for getting translated collection of Flex Pages using $collection->withTranslated('de') 2021-04-23 15:14:02 +03:00
Matias Griese
3e9bfad78f Added support for user provided folder in Flex $page->copy() 2021-04-23 15:10:43 +03:00
Matias Griese
fd34fce3c1 Fixed a bug in Flex Object refresh() method 2021-04-22 13:49:11 +03:00
Matias Griese
0cf684300d Fixed text field maxlength validation newline issue [#3324] 2021-04-22 11:44:11 +03:00
Djamil Legato
fe1c808dfd Have folder field for pages blueprints use the new folder-slug filed type 2021-04-20 15:53:51 -07:00
Andy Miller
aa8c67061c typo 2021-04-20 14:47:12 -06:00
Andy Miller
8e8de1eeec minor improvement in XSS invalid_protocol regex - #3298 2021-04-20 14:36:53 -06:00
Djamil Legato
b9fb284a52 Moved gregwar/Image and gregwar/Cache in-house to official getgrav/Image and getgrav/Cache packagist packages. This will help environments with very strict proxy setups that don't allow VCS setup. (fixes #3289) 2021-04-19 23:15:22 -07:00
Matias Griese
5efe447861 Fixed The "Grav/Common/Twig/TwigExtension" extension is not enabled when using markdown twig tag [#3317] 2021-04-19 10:20:26 +03:00
Andy Miller
b9ab491cbb Merge branch 'release/1.7.12' 2021-04-15 12:03:43 -06:00
Andy Miller
fb8d76922a Merge tag '1.7.12' into develop
Release v1.7.12
2021-04-15 12:03:43 -06:00
Andy Miller
1a97986bd2 prepare for release 2021-04-15 12:03:32 -06:00
Matias Griese
a2bb650518 Improve JSON support for the request 2021-04-15 15:28:22 +03:00
Matias Griese
f4398a0867 Fixed adding tags in admin after upgrading Grav [#3315] 2021-04-14 23:13:45 +03:00
Matias Griese
b44a1ce939 Fixed absolute path support for Windows [#3297] 2021-04-14 17:04:40 +03:00
Andy Miller
59fb9b2202 fixed changelog link 2021-04-13 12:44:54 -06:00
Andy Miller
86ba7333ad Merge branch 'release/1.7.11' 2021-04-13 12:27:56 -06:00
Andy Miller
7e7eac0c75 Merge tag '1.7.11' into develop
Release v1.7.11
2021-04-13 12:27:56 -06:00
Andy Miller
ad50017235 prepare for release 2021-04-13 12:27:42 -06:00
Matias Griese
aeb2e3a715 Add back alias for moved class 2021-04-13 21:11:05 +03:00
Matias Griese
3d10282567 Merge remote-tracking branch 'security/advisory-fix-1' into develop 2021-04-13 20:51:21 +03:00
Matias Griese
9e89666a24 Composer update, rename clearcache 2021-04-13 20:41:35 +03:00
Matias Griese
953cf65223 Added some documentation #3297 2021-04-13 12:40:08 +03:00
Matias Griese
371eb76b2b Typo #3297 2021-04-13 12:12:05 +03:00
Matias Griese
75c63704f6 Further improve defined paths #3297 2021-04-13 12:05:01 +03:00
Matias Griese
16dab2c9f1 Redirect /admin/groups to /admin/accounts/groups and blacklist it for admin controller 2021-04-12 18:38:12 +03:00
Matias Griese
7fdaf62684 Restrict filesystem Twig functions to accept only local filesystem and grav streams 2021-04-12 16:07:36 +03:00
Matias Griese
312c11b8da Allow GRAV_WEBROOT to be devined in env, USER_DIR is always under webroot 2021-04-10 11:14:11 +03:00
Matias Griese
2ef4c28401 Added configuration options to allow PHP methods to be used in Twig functions 2021-04-09 21:31:45 +03:00
Matias Griese
27dc8ffb45 Fixed fatal error if system.pages.types is not an array [#2984](https://github.com/getgrav/grav/issues/2984) 2021-04-09 14:45:05 +03:00
Matias Griese
c5296cd7e0 Fixed system.languages.session_store_active not having any effect [#3269] 2021-04-09 13:11:08 +03:00
Matias Griese
029b408915 Fixed fatal error when using markdown links with image:// stream [#3285] 2021-04-09 12:53:05 +03:00
Matias Griese
4fdff81762 Changelog update 2021-04-09 11:40:37 +03:00
Matias Griese
f3e4f9d311 Fixed deleting page with language code not removing the folder if it was the last language [#3305] 2021-04-09 11:13:51 +03:00
Matias Griese
74a667bbef Merge remote-tracking branch 'origin/develop' into develop
# Conflicts:
#	CHANGELOG.md
2021-04-09 10:34:18 +03:00
Matias Griese
7f8263318e Minor code cleanup in Utils 2021-04-09 10:33:32 +03:00
Djamil Legato
e0fc832621 Better GPM detection of unauthorized installations 2021-04-08 21:21:27 -07:00
Matias Griese
34aea14ff9 Fixed nxinx appending repeating ?url= in some redirects 2021-04-08 10:24:55 +03:00
Andy Miller
284d9ea22b Merge branch 'release/1.7.10' 2021-04-06 11:16:10 -06:00
Andy Miller
1e2d86f054 Merge tag '1.7.10' into develop
Releaese 1.7.10
2021-04-06 11:16:10 -06:00
Andy Miller
aa81350b6f prepare for release 2021-04-06 11:16:02 -06:00
pamtbaau
e02d298ff4 Add option images.defaults.size to set default height/width (#3272)
* Add option images.defaults.size to set default height/width

- Add option to config/system.yaml
- Add option to blueprints/config/system.yaml
- Add ImageSizeTrait.php
- Add ImageSizeTrait to ImageMedium.php
- Add Unit tests

* moved width/height to rendering phase

* Add test: height/width should be of resized image.

* Added optional apsect-ratio variable

* more improvements

* Added aspectRatio and retinaScale image functions

* remove use for old trait

* reset the CLS variables after calling reset on the image

Co-authored-by: Andy Miller <rhuk@mac.com>
2021-04-05 11:21:03 -06:00
Matias Griese
67f172b741 Phpstan fixes 2021-03-31 22:11:55 +03:00
Matias Griese
e97fe9de86 Fixed phpstan generics 2021-03-31 22:11:11 +03:00
Matias Griese
770bf15342 Composer update 2021-03-31 22:09:19 +03:00
Matias Griese
38b1556ee0 Fix unit test #2184 2021-03-31 21:29:59 +03:00
Matias Griese
0af33850a6 Fixed incorrect routing if url path looks like a domain name [#2184] 2021-03-31 20:08:39 +03:00
Matias Griese
edafa68414 Revert "Plugin class phpstan fix"
This reverts commit f78debe7
2021-03-31 14:29:50 +03:00
Matias Griese
f78debe768 Plugin class phpstan fix 2021-03-31 14:02:57 +03:00
Matias Griese
4f0f7876a8 Better support absolute GRAV_SYSTEM_PATH [#3297] 2021-03-31 10:26:46 +03:00
Matias Griese
2a4376b7cb Fixed undefined variable (regression) 2021-03-31 08:55:19 +03:00
Andy Miller
1d3d2a0bf9 Merge branch 'develop' of github.com:getgrav/grav into develop
# Conflicts:
#	CHANGELOG.md
2021-03-30 11:53:44 -06:00
Andy Miller
bbddb0a036 system blueprints not getting scanned. Fixes #3296 2021-03-30 11:53:27 -06:00
Matias Griese
a8e6aedd04 Fixed missing onAdminAfterDelete event call in Flex Pages 2021-03-30 19:14:49 +03:00
Matias Griese
1b9fd6276e Added initial support for running Grav library from outside the webroot [#3297] 2021-03-30 16:58:19 +03:00
Matias Griese
e229ab191f Improved password handling when saving a user 2021-03-26 10:53:14 +02:00
Matias Griese
42084ea0cb Fixed UserIndex not implementing UserCollectionInterface 2021-03-23 12:58:11 +02:00
Matias Griese
35468bb417 Minor docblock fix 2021-03-23 10:31:10 +02:00
Matias Griese
9eb20e37c8 Fixed Folder::move() deleting the folder if you move folder into itself, created empty file instead 2021-03-23 10:16:26 +02:00
Matias Griese
fa819064ef Improve move page into itself check 2021-03-23 09:45:31 +02:00
Matias Griese
eb89c00bd5 Fixed PageStorage detecting files as pages 2021-03-23 09:20:21 +02:00
Matias Griese
0491bd1a76 Fixed moving page to itself causing the page folder to be lost (converted to an empty file) 2021-03-23 09:18:43 +02:00
Matias Griese
802ae5b712 Ignore errors when using set_time_limit also in GPM\Response classes [#3023] 2021-03-20 08:48:30 +02:00
Andy Miller
38a393d605 ignore error during set_time_limit in Archiver - fixes #3023 2021-03-19 17:22:50 -06:00
Andy Miller
ba8b91ad29 Merge branch 'release/1.7.9' 2021-03-19 14:14:58 -06:00
Andy Miller
4b88122ab2 Merge tag '1.7.9' into develop
Release 1.7.9
2021-03-19 14:14:58 -06:00
Andy Miller
0a9b0c107f prepare for release 2021-03-19 14:14:50 -06:00
Matias Griese
ff1bc03361 Merge remote-tracking branch 'origin/develop' into develop 2021-03-19 21:56:28 +02:00
Matias Griese
3967862f10 Found the cause of #3280 in Windows 2021-03-19 21:55:56 +02:00
Andy Miller
70ab9b4b1b updated the security email 2021-03-19 11:53:10 -06:00
Matias Griese
50682d73dc Fixed redirects using wrong redirect code 2021-03-19 17:35:55 +02:00
Matias Griese
3926a61528 Fixed the list of pages not showing up in admin [#3280] 2021-03-19 10:31:21 +02:00
Matias Griese
9082cd5b17 Fixed the list of pages not showing up in admin [#3280] 2021-03-19 09:59:15 +02:00
Matias Griese
1c24f9f473 Fixed Flex Page CRUD ACL when creating a new page (needs Flex Objects plugin update) 2021-03-18 16:24:24 +02:00
Matias Griese
0d1c63f0fd Fixed Page::activeChild() throwing an error [#3276] 2021-03-18 11:17:11 +02:00
Matias Griese
29a4c66364 Changelog update for #3266 2021-03-17 22:31:21 +02:00
Matias Griese
73bb1f3046 Merge branch 'develop' of github.com:getgrav/grav into bugfix/redirects-2435
 Conflicts:
	CHANGELOG.md
2021-03-17 22:23:36 +02:00
Matias Griese
86169bbf7c Changelog update 2021-03-17 22:20:35 +02:00
Matias Griese
bde65bf056 Merge remote-tracking branch 'origin/develop' into develop 2021-03-17 22:07:59 +02:00
Matias Griese
0ab7d3ca63 Fixed broken media upload in Flex with @self/path, @page and @theme destinations [#3275] 2021-03-17 22:07:48 +02:00
Matias Griese
644a54e441 Added Utils::getPathFromToken() method which works also with Flex Objects 2021-03-17 21:54:26 +02:00
Matias Griese
62ff25f96d Fixed onAdminSave original page having empty header [#3259] 2021-03-17 21:33:57 +02:00
Djamil Legato
dabb4402a7 Handle skeletons rebuild manually only 2021-03-17 12:27:19 -07:00
Matias Griese
4ae9c42cc6 Composer update 2021-03-17 21:12:15 +02:00
Andy Miller
be3d49163d Merge branch 'release/1.7.8' 2021-03-17 11:44:48 -06:00
Andy Miller
0cf39a07f5 Merge tag '1.7.8' into develop
Release v1.7.8
2021-03-17 11:44:48 -06:00
Andy Miller
8697a79df0 prepare for release 2021-03-17 11:44:31 -06:00
Matias Griese
f5e6a1f3de Fixed onAdminSave original page having empty header [#3259] 2021-03-15 19:12:14 +02:00
Matias Griese
7a0ec5f51c Composer update 2021-03-15 19:07:09 +02:00
Matias Griese
dfcda95642 Fixed Path cannot be empty when viewing non-existent log file [#3270] 2021-03-15 19:06:58 +02:00
Matias Griese
047ae7b033 Fixed Uncaught ValueError: Path cannot be empty when failing to upload a file [#3265] 2021-03-15 19:06:51 +02:00
Matias Griese
fad681430e Composer update 2021-03-15 19:05:33 +02:00
Matias Griese
4f1af3709e Fixed Path cannot be empty when viewing non-existent log file [#3270] 2021-03-15 18:50:28 +02:00
Matias Griese
2681a8196b Fixed Uncaught ValueError: Path cannot be empty when failing to upload a file [#3265] 2021-03-12 12:45:41 +02:00
Matias Griese
25e7f6c5e8 Method $pages->find() should never redirect 2021-03-12 11:45:00 +02:00
Matias Griese
a67a538dfd Fixed site redirect with redirect code failing when redirecting to sub-pages [#3035] 2021-03-11 18:39:18 +02:00
Matias Griese
6dd7044786 Also support language redirects [#3130] 2021-03-11 17:43:04 +02:00
Matias Griese
16eaba1774 Also support system.pages.append_url_extension [#3130] 2021-03-11 17:07:30 +02:00
Matias Griese
054805349c Remove bad redirect code from configuration options, translate 2021-03-11 16:27:31 +02:00
Matias Griese
ec661d2c15 Fixed page.html returning duplicated content with system.pages.redirect_default_route turned on [#3130] 2021-03-11 16:19:57 +02:00
Matias Griese
58533c495c Added full blueprint support and Theme::getFormFieldTypes() just like in plugins 2021-03-11 12:34:37 +02:00
NicoHood
5c1c68c553 Fixed Uri::isValidExtension() returning false positives 2021-03-10 18:38:15 +02:00
NicoHood
a9c01926e8 Fix page extension validation 2021-03-10 15:27:04 +02:00
Matias Griese
8ef52d87f5 Composer update, minor phpstan fix 2021-03-10 15:12:18 +02:00
Matias Griese
35296f9f82 Changelog update 2021-03-10 15:00:11 +02:00
pamtbaau
898759b3b9 Add unit tests for system.images.defaults.loading 2021-03-10 14:58:58 +02:00
pamtbaau
7cbd067daf Fix Markdown image attr. 'loading' 2021-03-10 14:58:58 +02:00
Miguel Sales Pereira
3b6f5353fd Add SRI integrity hash to assets (#3256)
* Added default setting to enable/disable assets SRI

* Added system options to enable/disable assets SRI

* Added integrityHash function to create asset SRI

* Output SRI integrity hash on CSS assets

* Output SRI integrity hash for JS assets

* Updated integrityHash visibility (protected => public)

* Add SRI integrity hash to CSS and JS pipelines

* Made integrityHash static
2021-03-08 10:51:51 -07:00
Matias Griese
47bc6b0411 Fixed disappearing pages on save if pages:// stream resolves to multiple folders where the preferred folder doesn't exist 2021-03-08 18:29:47 +02:00
Matias Griese
b56ff0c31c Improve memory management for flex 2021-03-08 18:28:04 +02:00
Matias Griese
5376ce0909 Fixed FlexIndex::sortBy(['key' => 'ASC']) having no effect 2021-03-05 19:25:11 +02:00
Matias Griese
807df2ac55 Fixed default Flex Pages collection ordering to order by filesystem path 2021-03-05 16:03:28 +02:00
Matias Griese
2727f92a53 Fixed Grav using blueprints and form fields from disabled plugins 2021-03-05 15:08:57 +02:00
Matias Griese
1297114b3e Make sure that variable is defined in PageIndex::getLevelListing() 2021-03-04 17:10:02 +02:00
Matias Griese
1ba35f0bc3 Fixed missing Flex Pages in site if multi-language support has been enabled 2021-03-04 15:12:57 +02:00
Matias Griese
f5a6f51abc Fixed missing method translated() in Flex Pages 2021-03-04 14:34:39 +02:00
Djamil Legato
8431452f73 Update SECURITY.md 2021-03-03 10:52:33 -08:00
Matias Griese
27aff76b20 Optimized saving visible/ordered pages when there are a lot of siblings [#3231] 2021-03-01 14:47:51 +02:00
Matias Griese
e767e00a82 Clearing cache now deletes all clockwork files 2021-02-26 13:47:09 +02:00
Matias Griese
aab17ca79a Reduce memory use in Flex 2021-02-26 12:58:09 +02:00
Matias Griese
94876d1019 Optimized Flex Pages for speed 2021-02-25 22:10:59 +02:00
Matias Griese
7d7726e345 Flex Pages optimizations (part 2) 2021-02-25 21:08:22 +02:00
Matias Griese
d16a65ebd7 Flex Pages optimizations 2021-02-25 17:39:41 +02:00
Matias Griese
e802d0098f Added ControllerResponseTrait::createDownloadResponse() method 2021-02-25 14:03:58 +02:00
Djamil Legato
62fd24bcfb More quietness tests 2021-02-24 16:07:40 -08:00
Djamil Legato
02185145c9 I really do want this silent! 2021-02-24 16:04:40 -08:00
Djamil Legato
4acb0f15ad Try silencing cURL again 2021-02-24 15:36:20 -08:00
Djamil Legato
c8d0b4dd3f Silence curl 2021-02-24 15:34:05 -08:00
Djamil Legato
4802bce06d Trigger develop branches of skeletons instead of master 2021-02-24 15:32:58 -08:00
Djamil Legato
5bec0ee6b6 Typo 2021-02-24 15:29:00 -08:00
Djamil Legato
a938a3a350 Update trigger-skeletons.yml 2021-02-24 15:26:01 -08:00
Djamil Legato
04567817b2 Created workflow to trigger rebuild of all grav skeletons 2021-02-24 15:00:56 -08:00
Andy Miller
061a65f730 Merge branch 'release/1.7.7' 2021-02-23 15:02:18 -07:00
Andy Miller
470894577d Merge tag '1.7.7' into develop
Release 1.7.7
2021-02-23 15:02:18 -07:00
Andy Miller
7db4da4154 prepare for release 2021-02-23 15:02:08 -07:00
Matias Griese
78b5f6ef5c Fixed typo #3233 2021-02-22 18:53:57 +02:00
Matias Griese
340f478bfa Improved Pagination class to allow custom pagination query parameter 2021-02-22 14:51:14 +02:00
Matias Griese
2108af8f36 Added Utils::arrayToQueryParams() to convert an array into query params 2021-02-22 14:49:23 +02:00
Djamil Legato
1728b6c8bf Updated changelog 2021-02-19 13:42:27 -08:00
Djamil Legato
bbfd514342 Removed special space character 2021-02-19 13:41:20 -08:00
Matias Griese
e42ae65355 Fixed avatar of the user not being saved 2021-02-19 11:29:17 +02:00
Andy Miller
a58298bb01 Merge branch 'release/1.7.6' 2021-02-17 11:36:45 -07:00
Andy Miller
0e8e00ddd7 Merge tag '1.7.6' into develop
Release v1.7.6
2021-02-17 11:36:45 -07:00
Andy Miller
e492dfe12c prepare for release 2021-02-17 11:36:35 -07:00
Matias Griese
7f533c7121 Composer update 2021-02-17 20:12:29 +02:00
Matias Griese
7e4c189136 Fixed bug in page content with both markdown and twig enabled [#3223] 2021-02-17 16:07:05 +02:00
Matias Griese
a591b657fa Merge remote-tracking branch 'origin/develop' into develop
# Conflicts:
#	CHANGELOG.md
2021-02-17 11:02:08 +02:00
Matias Griese
7ec8fd2003 Added option for FlexForm constructor to reset the form 2021-02-17 11:01:47 +02:00
Andy Miller
20e22f015a fixed some issues with chinese langs 2021-02-16 18:02:21 -07:00
Andy Miller
cec781ad72 updated changelog 2021-02-16 17:42:35 -07:00
Andy Miller
9faf42c5da updated languages 2021-02-16 17:41:10 -07:00
Andy Miller
bf895820b3 minor composer update 2021-02-16 14:39:23 -07:00
Andy Miller
f4180584d6 updated changelog 2021-02-16 12:53:33 -07:00
Stephan Strate
66c653b6f5 read all language files from theme stream (#3226) 2021-02-16 12:50:51 -07:00
Matias Griese
5f596fb4fd Fixed UserObject after interface change 2021-02-16 21:22:04 +02:00
Matias Griese
a1306d9eb4 Fixed broken attachment image in Flex Objects Admin when destination: self@ used [#3225] 2021-02-16 12:44:30 +02:00
Matias Griese
2195bf2307 Fixed modular content with missing template file ending up using non-modular template [#3218] 2021-02-11 13:43:23 +02:00
Matias Griese
c4296121b1 Reverse subject <-> pattern parameter order in new twig methods 2021-02-11 11:24:30 +02:00
Matias Griese
3871196246 Merge branch 'feature/twig_preg_match_split' of https://github.com/thexmanxyz/grav into thexmanxyz-feature/twig_preg_match_split
# Conflicts:
#	system/src/Grav/Common/Twig/TwigExtension.php
2021-02-11 11:17:14 +02:00
Matias Griese
c626b1599e Fixed root page to always contain trailing slash [#3127] 2021-02-11 10:46:13 +02:00
Matias Griese
129fd7fdad Added Plugins::getPlugins() and Plugins::getPlugin($name) to make it easier to access plugin instances [#2277] 2021-02-11 10:10:50 +02:00
Matias Griese
49fca0da2b Added support for setting session domain [#2040] 2021-02-10 18:46:43 +02:00
Matias Griese
8c00a0bc00 Fixed behavior of opposite filters in Pages::getCollection() to match Grav 1.6 [#3216] 2021-02-10 10:58:17 +02:00
Czcibor Bohusz-Dobosz
45cea4fc4b Fixed removing inclusive filters in getCollection 2021-02-10 10:31:42 +02:00
Andy Miller
13f8b65e08 manually merged new attribute() method #3065 2021-02-09 13:09:31 -07:00
Matias Griese
6ed28c5fb8 Composer update with phpstan fix 2021-02-09 21:56:08 +02:00
Matias Griese
b534fbb364 Changelog update 2021-02-09 21:44:20 +02:00
Tina Burschka
1cfcf1ded0 Flattr requires name instead property. 2021-02-09 21:42:32 +02:00
Matias Griese
87a01bbe0a Fixed trailing slash redirect to use 301 status code [#3127] 2021-02-09 21:36:54 +02:00
Matias Griese
5a9477a402 Only redirect GET/HEAD if system.pages.redirect_trailing_slash is true and request has a trailing slash 2021-02-09 21:23:23 +02:00
Matias Griese
bd97e817c2 Merge branch 'NicoHood-asset_order_fix' into develop 2021-02-09 21:10:15 +02:00
Matias Griese
1fcc049db7 Merge branch 'asset_order_fix' of https://github.com/NicoHood/grav into NicoHood-asset_order_fix 2021-02-09 21:09:48 +02:00
Matias Griese
92fdaed81b Fix for $blueprint->flattenData() on list properties 2021-02-09 20:35:53 +02:00
Matias Griese
feee0e62cc Merge remote-tracking branch 'origin/develop' into develop 2021-02-08 21:27:55 +02:00
Matias Griese
3ee9e65f2d Added second parameter to $blueprint->flattenData() to include every field, including those which have no data 2021-02-08 21:27:47 +02:00
Andy Miller
f004451740 Merge branch 'develop' of github.com:getgrav/grav into develop 2021-02-08 11:45:26 -07:00
Andy Miller
9964285cae Fixed issue with content-security-policy not being properly supported with http-equiv + support single quotes 2021-02-08 11:45:22 -07:00
Matias Griese
6b25a9f00c Fixed wrong values in Admin pages list [#3214] 2021-02-08 18:46:47 +02:00
Matias Griese
99c870c5cc Changelog update 2021-02-08 16:54:56 +02:00
Matias Griese
e520cf949a Fixed save error when editing accounts that have been created with capital letters in their username [#3211] 2021-02-08 16:46:30 +02:00
Matias Griese
96aac79eb2 Fixed broken min/max validation for field type: int 2021-02-08 14:40:51 +02:00
Matias Griese
11d0103f0d Fixed lowering uppercase characters in usernames when saving from frontend [#2565] 2021-02-08 14:21:10 +02:00
Matias Griese
c7dcb9144c Added $grav->getVersion() or grav.version in twig to get the current Grav version [#3142] 2021-02-08 13:47:23 +02:00
Matias Griese
8ea4216672 Added ability to filter enabled or disabled with bin/gpm index [#3187] 2021-02-08 13:40:39 +02:00
Matias Griese
79640283f3 Merge branch 'feature/gpm-index-enhancements' of https://github.com/jgonyea/grav into jgonyea-feature/gpm-index-enhancements 2021-02-08 13:18:10 +02:00
Matias Griese
1347c76594 Fixed error on bin/gpm plugin uninstall [#3207] 2021-02-08 12:51:55 +02:00
Matias Griese
7d95fb7169 Changelog update 2021-02-08 12:43:04 +02:00
Matias Griese
d710205355 Merge branch 'pierrejoye-develop' into develop 2021-02-08 12:41:41 +02:00
Matias Griese
afc5f5a13f Merge branch 'develop' of https://github.com/pierrejoye/grav into pierrejoye-develop 2021-02-08 12:40:49 +02:00
Djamil Legato
d91e91128c Removed Travis tests badge in favor of GitHub Actions 2021-02-07 17:31:58 -08:00
travis00001
3d73e92058 update system blueprint to include Redis Database ID (#3209) 2021-02-07 09:34:10 -08:00
Andy Miller
aa8778a0fb added optional password/database attributes 2021-02-06 14:39:21 -07:00
travis00001
51cc9cd13e Support selecting Redis database ID (#3208) 2021-02-06 13:35:50 -07:00
Matias Griese
c3ebd529c1 Improved session fixation handling in PHP 7.4+ (cookie fix for invalidate) 2021-02-05 21:38:11 +02:00
Matias Griese
322d310843 Improved session fixation handling in PHP 7.4+ (use only one cookie) 2021-02-05 21:28:52 +02:00
Matias Griese
09f5c0ffc1 Improved session fixation handling in PHP 7.4+ (handle unsupported id change) 2021-02-05 20:12:51 +02:00
Matias Griese
7d6ed94e2d Improved session fixation handling in PHP 7.4+ (better version) 2021-02-05 20:07:23 +02:00
Matias Griese
1292f40710 Improved session fixation handling in PHP 7.4+ (cannot fix it in PHP 7.3 due to PHP bug) 2021-02-05 19:44:05 +02:00
Matias Griese
830fa40bb7 Fixed Flex Pages using only default language in frontend 2021-02-05 15:19:47 +02:00
Djamil Legato
25f8b787b6 Oh, don’t mind me… just bringing Grav to 2021! 🎆 2021-02-04 21:09:42 -08:00
Djamil Legato
ca6600bebf Updated COC to Contributor Covenant COC v2 2021-02-04 20:46:32 -08:00
Djamil Legato
100babc11b Updated bundled composer.phar binary to latest version 2.0.9 2021-02-04 20:42:23 -08:00
Matias Griese
ef00b0d14d Added abstract FlexObject, FlexCollection and FlexIndex classes to \Grav\Common\Flex namespace 2021-02-04 13:13:20 +02:00
Andy Miller
359f6c82c5 Merge branch 'develop' of github.com:getgrav/grav into develop
# Conflicts:
#	CHANGELOG.md
2021-02-02 14:37:29 -07:00
Andy Miller
a376c37a91 backup + security CLI commands not styling colors Fixes #3198 2021-02-02 14:36:48 -07:00
Matias Griese
16f610bfdf Working fix for page save failing because of uploaded images [#3191] 2021-02-02 07:54:16 +02:00
Andy Miller
02e41ae7ce Merge tag '1.7.5' into develop
Release v1.7.5
2021-02-01 21:36:24 -07:00
Andy Miller
ae9b096ab0 Merge branch 'release/1.7.5' 2021-02-01 21:36:23 -07:00
Andy Miller
84d0b5e35d prepare for release 2021-02-01 21:36:14 -07:00
Andy Miller
a0fd46edb8 revert #3191 fix - breaking save 2021-02-01 21:35:34 -07:00
Andy Miller
b681a86646 Revert "Fixed page save failing because of uploaded images [#3191]"
This reverts commit 2c866f3c10.

# Conflicts:
#	CHANGELOG.md
2021-02-01 21:33:26 -07:00
Pierre Joye
6c3c068485 add test for multiple parts using folder 2021-02-02 07:27:54 +07:00
Pierre Joye
caf431d22e add faker for multiple parts with folder 2021-02-02 07:27:21 +07:00
Pierre Joye
2044a649ba add another test with subfolder 2021-02-02 07:25:58 +07:00
Andy Miller
7def7af8ff comment out slack 2021-02-01 15:50:16 -07:00
Andy Miller
e85121f35a comment out composer update / validate 2021-02-01 15:48:32 -07:00
Andy Miller
dbfc108fec Merge branch 'release/1.7.4' 2021-02-01 15:35:00 -07:00
Andy Miller
4e01de183f Merge tag '1.7.4' into develop
Release v1.7.4
2021-02-01 15:35:00 -07:00
Andy Miller
e8612833c3 prepare for release 2021-02-01 15:34:50 -07:00
Matias Griese
953b500fa0 Merge remote-tracking branch 'origin/develop' into develop 2021-02-01 19:15:02 +02:00
Matias Griese
1aa15b24a2 Fixed expert mode issue 2021-02-01 19:14:53 +02:00
NicoHood
b6d720791a Set twig autoescaping to true
I think this value get overwritten anyways. Maybe we should remove it completely?
2021-02-01 18:48:47 +02:00
Matias Griese
21c6b56a27 Fixed incorrect config lookup for loading in ImageLoadingTrait [#3192] 2021-02-01 18:11:01 +02:00
Pierre Joye
b20838531c Resolved merge conflict 2021-02-01 22:43:28 +07:00
Matias Griese
2c866f3c10 Fixed page save failing because of uploaded images [#3191] 2021-02-01 16:19:10 +02:00
Matias Griese
3d510a338e Fixed untranslated module pages showing up in the menu 2021-02-01 15:40:54 +02:00
Matias Griese
95c4438091 Fixed page redirect to the first visible child page 2021-02-01 15:24:09 +02:00
Matias Griese
76e887e3fb Fixed wrong ordering in page collections if intl extension has been enabled [#3167] 2021-02-01 14:59:03 +02:00
Matias Griese
72b1a18744 Fixed cache clear on GPM uninstall command [#3172] 2021-02-01 14:44:29 +02:00
Matias Griese
679a27a5ff Updated CleanCommand 2021-02-01 12:16:48 +02:00
Matias Griese
55241864bc Removed fzaninotto/faker library 2021-02-01 11:27:08 +02:00
Matias Griese
a8a960d10b Updated unit tests 2021-02-01 11:14:53 +02:00
Pierre Joye
4ce3ff52bf Add the test translated pages 2021-01-31 07:21:44 +07:00
Pierre Joye
10be5d5a7c fix text if language is found and is part as enabled languages 2021-01-31 07:14:33 +07:00
Pierre Joye
711d7b122d Add fixture for translatedLanguages 2021-01-30 21:22:39 +07:00
Pierre Joye
ea758e9dca Add test for this translatedLanguages 2021-01-30 20:50:20 +07:00
Jeremy Gonyea
ee379a512a Added ability to filter enabled or disabled with bin/gpm index 2021-01-29 23:06:20 -05:00
Andy Miller
ea519c66f2 Switch back to GITHUB_TOKEN for tests 2021-01-29 17:59:42 -07:00
Matias Griese
51bff9f1f0 Simplify GPM class 2021-01-29 13:40:09 +02:00
Matias Griese
aeb9777972 Improved GPM error handling 2021-01-29 11:31:44 +02:00
Matias Griese
3b61aedc66 Composer update 2021-01-29 10:13:29 +02:00
Pierre Joye
cb2c9616d7 Initialize route and raw_route, fix empty route as values 2021-01-29 14:48:20 +07:00
Matias Griese
a35b9b1279 Fixed onBlueprintCreated event being called multiple times in Flex Pages 2021-01-28 20:12:33 +02:00
Karmalakas
0ba23ca278 Fix Lithuanian nativeName (#3141)
That deleted second word literally means _language_, which is completely unnecessary in language choosing context (like for all other languages)
2021-01-26 11:15:34 -07:00
Matias Griese
2a67b5b827 Fixed saving page in expert mode [#3174] 2021-01-26 11:08:43 +02:00
Matias Griese
0918419191 Added FlexForm::setSubmitMethod() to customize form submit action [#3174] 2021-01-26 11:05:33 +02:00
Matias Griese
a4481bfd33 Fixed cannot change image format [#3173] 2021-01-25 15:25:02 +02:00
Matias Griese
fcf24a40e2 Fixed login: visibility_requires_access not working [#3176] 2021-01-25 15:09:49 +02:00
Matias Griese
59a70e0077 Fix phpstan tests for gantry 2021-01-22 20:39:41 +02:00
Matias Griese
5037941897 Fixed bin/gpm uninstall script not working because of bad typehint [#3172] 2021-01-22 20:39:26 +02:00
Matias Griese
3dfbe8e49c Composer update 2021-01-22 12:57:10 +02:00
Matias Griese
1cd34736ed Added Composer SemVer library 2021-01-22 12:56:06 +02:00
Andy Miller
1b6e4d4300 Merge branch 'release/1.7.3' 2021-01-21 15:19:11 -07:00
Andy Miller
b598f8f972 Merge tag '1.7.3' into develop
Release v1.7.3
2021-01-21 15:19:11 -07:00
Andy Miller
7c145c7b1e prepare for release 2021-01-21 15:19:01 -07:00
Matias Griese
38030c348d Fixed installer bugs, reverted GPM config post-install hook for now 2021-01-21 23:45:42 +02:00
Matias Griese
625aa3f1bd Fixed a bug in post-install methods 2021-01-21 23:00:34 +02:00
Andy Miller
8e337647a2 Merge tag '1.7.2' into develop
Release v1.7.2
2021-01-21 11:57:17 -07:00
Andy Miller
7cfc8dc00e Merge branch 'release/1.7.2' 2021-01-21 11:57:16 -07:00
Andy Miller
30195b6c9e prepare for release 2021-01-21 11:57:00 -07:00
Matias Griese
a628cb6775 Typo 2021-01-21 16:21:35 +02:00
Matias Griese
531ce433fe Added support for running post-install scripts in bin/gpm selfupgrade if Grav was updated manually 2021-01-21 16:18:58 +02:00
Matias Griese
849097921a Fixed GPM releases on testing if updating from Grav 1.7 RCs [#3163] 2021-01-21 16:17:04 +02:00
Matias Griese
c8af0d8a38 Fixed Unsupported option "curl" passed to "Symfony\Component\HttpClient\CurlHttpClient" in bin/gpm selfupdate [#3165] 2021-01-21 15:20:27 +02:00
Matias Griese
9a1ab6ee0b Support force in environment:// stream 2021-01-21 14:59:02 +02:00
Matias Griese
04615b3a17 Fixed Clockwork debugger in sub-folder multi-site setups 2021-01-21 14:23:10 +02:00
Matias Griese
70ff5c2e94 Fixed broken stream initialization if environment:// paths aren't streams 2021-01-21 13:52:33 +02:00
Matias Griese
b82d51e3cc Added support for bin/grav install -p myplugin or -t mytheme and hebe.json file support 2021-01-21 12:26:32 +02:00
Andy Miller
4d26acfd66 change testing -> stable in system.yaml 2021-01-20 12:55:20 -07:00
Andy Miller
42f976c82a Merge branch 'release/1.7.1' 2021-01-20 12:03:35 -07:00
Andy Miller
6477d13bea Merge tag '1.7.1' into develop
Release v1.7.1
2021-01-20 12:03:35 -07:00
Andy Miller
ba1e106aaf prepare for release 2021-01-20 12:03:21 -07:00
Andy Miller
5f9fa481cb better getPageFormat() 2021-01-20 10:23:19 -07:00
Matias Griese
84554ae71f Fixed page metadata being double-escaped [#3121] 2021-01-20 18:53:38 +02:00
Matias Griese
5f9c434aea Fixed lighttpd.conf access-deny rule [#1876] 2021-01-20 15:50:07 +02:00
Matias Griese
a0c3140e6d Fixed twig parsing errors in pages where twig is parsed after markdown [#3162] 2021-01-20 15:36:48 +02:00
Matias Griese
440fa263c2 Oops, fixed bug #3160 2021-01-20 15:22:02 +02:00
Matias Griese
f5b10564ca Fixed bin/gpm selfupgrade error on Call to undefined method [#3160] 2021-01-20 14:03:04 +02:00
Matias Griese
eb98597220 Flex Pages: Fixed fatal error when trying to move a page to Root (/) [#3161] 2021-01-20 12:24:40 +02:00
Matias Griese
6992d52767 Fixed bin/gpm selfupgrade failing to report failed Grav update [#3116] 2021-01-20 10:33:11 +02:00
Matias Griese
3a31d54600 Fixed bin/gpm index erroring out [#3158] 2021-01-20 09:58:31 +02:00
Andy Miller
3d5b54515a Fix for non-standard extension via Page::template_format() 2021-01-19 15:21:07 -07:00
Matias Griese
b9f1741ea1 Fixed fatal error when site.taxonomies contains a bad value 2021-01-20 00:05:56 +02:00
Andy Miller
0fa5273c56 Merge tag '1.7.0' into develop
Release v1.7.0
2021-01-19 13:13:22 -07:00
Andy Miller
916b7cfc44 Merge branch 'release/1.7.0' 2021-01-19 13:13:21 -07:00
Andy Miller
317efc182a Prepare for release 2021-01-19 13:13:10 -07:00
Andy Miller
4bcfcfc4f8 Merge tag '1.7.0' into develop
Release v1.7.0
2021-01-19 12:54:16 -07:00
Andy Miller
02b3b9a4d7 Merge branch 'release/1.7.0' 2021-01-19 12:54:16 -07:00
Andy Miller
57d0fc3774 switch to 0.2.3 2021-01-19 12:45:23 -07:00
Andy Miller
2d1bca11df use github secrets token 2021-01-19 12:28:01 -07:00
Andy Miller
ac0de93139 Merge tag '1.7.0' into develop
Release v1.7.0
2021-01-19 12:10:16 -07:00
Andy Miller
9e39860868 Merge branch 'release/1.7.0' 2021-01-19 12:10:15 -07:00
Andy Miller
b13a4d331c Prepare for release 2021-01-19 12:10:05 -07:00
Andy Miller
065cd5b7b7 Prepare for release 2021-01-19 12:08:10 -07:00
Andy Miller
1d34b5389e wrong workflow! 2021-01-19 08:37:10 -07:00
Andy Miller
23df7cc90d Try different token 2021-01-19 08:34:59 -07:00
Andy Miller
c9a5d5a406 Merge branch '1.7' of github.com:getgrav/grav into 1.7 2021-01-19 08:33:46 -07:00
Andy Miller
a5d2c86e59 set token 2021-01-19 08:33:42 -07:00
Andy Miller
f095cc760b fix periods 2021-01-19 08:33:34 -07:00
Matias Griese
c256b0675d Updated README.md, removed UPGRADE-1.7.md 2021-01-19 11:27:14 +02:00
Matias Griese
a7af12d026 Added support for locking the start and limit in a Page Collection 2021-01-19 11:14:55 +02:00
Matias Griese
d7995e9be4 Fixed page collection pagination not behaving as it did in Grav 1.6 2021-01-19 10:48:04 +02:00
Matias Griese
af2f4b66b9 Fixed ERR_TOO_MANY_REDIRECTS with HTTPS = 'On' [#3155] 2021-01-18 20:38:58 +02:00
Matias Griese
15464aa10c Fixed ignore parent in BlueprintSchema 2021-01-18 20:22:08 +02:00
Matias Griese
7cfc02e7d9 Use PHP 7.3 in build 2021-01-18 20:10:13 +02:00
Matias Griese
c6b0a50e4e Composer update 2021-01-18 20:09:50 +02:00
Matias Griese
ac4f093590 Fixed streams in setup.php being overridden by system/streams.yaml [#2450] 2021-01-18 11:20:21 +02:00
Matias Griese
a03746145b Merge branch 'develop' of github.com:getgrav/grav into 1.7 2021-01-15 22:29:49 +02:00
Matias Griese
3a3b84af61 Fixed page collections containing dummy items for untranslated default language [#2985] 2021-01-15 22:21:39 +02:00
Matias Griese
3ba68bf5c5 Fixed multiple issues with system.language.translations: false 2021-01-15 20:36:58 +02:00
NicoHood
42daf75124 Fix documentation for asset array variable 2021-01-15 15:04:10 +01:00
Matias Griese
454e9c1d8e Fixed Flex Pages cache not invalidating if saving an old Page object [#3152] 2021-01-15 15:44:49 +02:00
Nico
ee9fb4aeec Add german translations for GRAV.YES and GRAV.NO 2021-01-15 09:52:29 +02:00
Matias Griese
ba2c224d5d Changelog update 2021-01-14 22:53:26 +02:00
Matias Griese
515eab7dad Fixed ordering when changing parent of new page 2021-01-14 22:43:20 +02:00
Matias Griese
18b0e01a3e Fixed version history issue 2021-01-14 20:50:40 +02:00
Matias Griese
57c6414d1c Fixed PageObject::getRoute() with pages which have no route 2021-01-14 20:49:37 +02:00
Matias Griese
fdfcaaeb39 Merge branch 'develop' of github.com:getgrav/grav into 1.7
 Conflicts:
	system/src/Grav/Common/Processors/ConfigurationProcessor.php
2021-01-14 17:16:27 +02:00
Matias Griese
561b91894c Fixed version history 2021-01-14 17:13:58 +02:00
Andy Miller
aea01a3937 missed a change in regular pages 2021-01-11 16:32:10 -07:00
Andy Miller
9b34178332 Merge branch 'develop' into 1.7
# Conflicts:
#	composer.lock
#	system/defines.php
#	system/src/Grav/Common/Page/Medium/ImageMedium.php
#	system/src/Grav/Common/Page/Page.php
#	system/src/Grav/Common/Twig/TwigExtension.php
2021-01-11 16:29:39 -07:00
Matias Griese
eced8facb8 Merge remote-tracking branch 'origin/1.7' into 1.7 2021-01-12 00:51:52 +02:00
Matias Griese
074e13325e Fixed Inflector methods when translation is missing GRAV.INFLECTOR_* translations 2021-01-12 00:51:43 +02:00
angusmcb
d7378f87c5 Added 'format' to magic actions for images (#3144) 2021-01-11 15:49:37 -07:00
Andy Miller
4091c16e97 don’t use array_support 2021-01-11 15:36:03 -07:00
Andy Miller
56408b37ac Fix for string->array conversion with translations: false admin#1896 2021-01-11 15:10:25 -07:00
Nico
fd18eeb62c Add grav twig extensions to its own evaluate and evaluate_twig filters (#3139)
I wanted to use `evaluate_twig()` with a template the uses `theme_var()` or also a simpler twig function `string`. I made them available with this simple call.
2021-01-11 12:47:43 -07:00
Nico
cbd4ed311f Set twig_first setting to the correct default (#3138)
I've also verified this via code, the correct default is `false`. It is also documented here:
https://learn.getgrav.org/16/basics/grav-configuration#pages
2021-01-11 12:46:37 -07:00
Andy Miller
8122703e3b Initialize pages + themes so email will work 2021-01-11 11:40:43 -07:00
Andy Miller
2920b6143b improve scheduler 2021-01-11 11:30:18 -07:00
Matias Griese
8870463afc Composer update 2021-01-11 10:49:50 +02:00
NicoHood
f8972f812a Fix asset unit test 2021-01-09 22:02:01 +01:00
Matias Griese
23fa2324a8 Minor tweaks on phpstan 2021-01-09 09:58:03 +02:00
Matias Griese
0df1082778 Keep on fixing CLI commands 2021-01-07 12:39:38 +02:00
Matias Griese
6647b8da3c Composer update 2021-01-07 11:59:37 +02:00
Matias Griese
f0b9411e19 Fix Console::addOption() breaking --env and --lang 2021-01-06 20:27:46 +02:00
Matias Griese
5c1cc5cdd7 Changelog update 2021-01-06 19:36:52 +02:00
Matias Griese
df9eb60ffa Remove duplicated --env in yamllinter console command 2021-01-06 19:23:32 +02:00
Matias Griese
9893792768 Improve all console commands 2021-01-06 19:13:19 +02:00
Matias Griese
379033aae4 Further improve CLI commands 2021-01-06 13:45:19 +02:00
Matias Griese
193ab52a35 Better --env support for bin/grav and bin/gpm console commands 2021-01-06 13:11:43 +02:00
Matias Griese
9eb6662db8 Changelog update 2021-01-06 11:12:36 +02:00
Matias Griese
5e48146f59 Simplify QFN 2021-01-05 18:50:28 +02:00
Matias Griese
627702a3a1 Merge remote-tracking branch 'origin/1.7' into 1.7 2021-01-05 12:02:00 +02:00
Matias Griese
d9ee6de3d0 Phpstan phpdoc improvements 2021-01-05 11:59:19 +02:00
Andy Miller
14df5a6d5f updated robots.txt 2021-01-04 13:41:32 -07:00
NicoHood
a809fb8c41 Fix #2781 asset manager pipeline order. Patch taken from @pamtbaau 2021-01-03 13:42:26 +01:00
Andy Miller
2738107b1e composer update for matthiasmullie/minify 2020-12-28 11:04:24 -07:00
Andy Miller
e53f26ca13 composer update for matthiasmullie/minify 2020-12-28 11:03:45 -07:00
thekenshow
d3e80d62e5 Fixed Link to XSS Security Docs (#3115)
* Fixed Link to XSS Security Docs

Was linking to .local server.

* Fixed link reference

Co-authored-by: Djamil Legato <djamil+github@djamil.it>
2020-12-28 08:13:29 -08:00
Andy Miller
b7aa20ed88 vendor updates 2020-12-24 11:33:37 -07:00
Andy Miller
26da4a1aa3 Updated minify library to include calc() fix 2020-12-24 11:32:23 -07:00
Matias Griese
4345a629f1 Added FlexCollection::getDistinctValues() to get all the assigned values from the field 2020-12-23 21:05:58 +02:00
Matias Griese
5bb4ca7822 Fixed Clockwork missing dumped arrays and objects 2020-12-23 21:03:36 +02:00
Matias Griese
79ee06f518 Fixed Clockwork missing dumped arrays and objects 2020-12-23 20:21:55 +02:00
Matias Griese
bc2435efe9 Fixed Flex sorting issues 2020-12-23 19:23:53 +02:00
Matias Griese
504a29f496 Added support for relative paths in PageObject::getLevelListing() [#3110] 2020-12-23 14:09:55 +02:00
Matias Griese
0948e9db9d Fixed Filesystem::normalize() with dot-dot paths 2020-12-23 13:46:49 +02:00
Matias Griese
c298464314 Composer update 2020-12-23 11:44:30 +02:00
Matias Griese
67a00a799c Return value fixes for Session class 2020-12-23 11:40:32 +02:00
Matias Griese
589c9e4445 Enabled ETag setting by default for 304 responses 2020-12-22 18:43:13 +02:00
Matias Griese
d1925c8935 Fixed pages with session messages should never be cached [#3108] 2020-12-22 18:06:28 +02:00
Matias Griese
2923658bb9 Use PHP 7.4 serialization 2020-12-22 15:12:09 +02:00
Matias Griese
c333da60d6 Fixed unserialize Framework\File classes 2020-12-22 15:10:33 +02:00
Matias Griese
cf62db1329 Fixed unserialize in MarkdownFormatter class 2020-12-22 13:53:19 +02:00
Matias Griese
625a39a892 Merge remote-tracking branch 'origin/1.7' into 1.7 2020-12-18 20:53:47 +02:00
Matias Griese
ffc93a77a9 Make it possible to use an absolute path when loading a blueprint 2020-12-18 20:53:38 +02:00
Andy Miller
0cee2b6a97 hide errors with exif 2020-12-17 21:12:15 -07:00
Matias Griese
a24ec2c433 Better fix for system.custom_base_url, which does not affect other urls 2020-12-17 10:02:55 +02:00
Matias Griese
e5727462e7 Fixed port issue with system.custom_base_url 2020-12-16 20:54:56 +02:00
Matias Griese
c1cb4e192f Added support for overriding configuration by using environment variables 2020-12-16 16:38:15 +02:00
Andy Miller
b0c12063a1 should skip release of prerelease 2020-12-15 11:12:54 -07:00
Andy Miller
e4b1e87b9a prepare for rc release 2020-12-15 10:57:10 -07:00
Andy Miller
6e136bf83f Try adding php8 back in to tests 2020-12-15 10:45:35 -07:00
Matias Griese
36504d7123 Merge remote-tracking branch 'origin/1.7' into 1.7 2020-12-15 19:26:21 +02:00
Matias Griese
8ac4615117 Fixed missing parenthesis in Setup.php 2020-12-15 19:25:34 +02:00
Andy Miller
7ed04ed3b0 composer update 2020-12-15 10:07:54 -07:00
Andy Miller
c5b2440488 remove composer update 2020-12-15 10:04:12 -07:00
Andy Miller
37ce236a43 try forcing token 2020-12-15 10:02:50 -07:00
Andy Miller
31ab55558c remove PHP 8 2020-12-15 09:52:42 -07:00
Matias Griese
c51830feec Fix bug in Setup.php 2020-12-15 18:30:21 +02:00
Matias Griese
291e91891a Improved multi-site customization 2020-12-15 15:53:24 +02:00
Matias Griese
307ede3183 Fix for subfolder install [#2964] 2020-12-15 08:37:07 +02:00
Andy Miller
d4a20c71c2 Merge branch 'release/1.6.31' 2020-12-14 21:28:53 -07:00
Andy Miller
ec68068b97 Merge tag '1.6.31' into develop
Release v1.6.31
2020-12-14 21:28:53 -07:00
Andy Miller
d9c1445542 prepare for release 2020-12-14 21:28:42 -07:00
Matias Griese
26f4d05e87 Fixed dropped query params when ? is preceded with / [#2964] 2020-12-11 15:32:09 +02:00
Matias Griese
b6c941fc3e Fixed twig script/style tag {% script 'file.js' at 'bottom' %}, replaces broken in operator [#3084] 2020-12-11 14:29:13 +02:00
Matias Griese
cedcc845d5 Fixed uppercase Assets\*::Class (should be in lower case) 2020-12-11 11:34:52 +02:00
Matias Griese
02a3ed2e0e Fixed missing return value in TwigExtension::svgImageFunction(), some code cleanup 2020-12-11 11:32:43 +02:00
Matias Griese
a729daa3d3 Use return types in Twig node and token classes 2020-12-11 11:30:34 +02:00
Matias Griese
ba23cceae7 Fixed StaticResizeTrait::resize() bad image height/width attributes if null values are passed to the method 2020-12-11 11:25:37 +02:00
Matias Griese
d3e9083869 Fixed deprecated method call for Whoops 2020-12-11 11:16:22 +02:00
Matias Griese
09d92ebab6 Fixed wrong (but working) method call for Whoops 2020-12-11 11:04:41 +02:00
Matias Griese
2777bedb51 Updated a lot of docblocks 2020-12-10 23:15:02 +02:00
Matias Griese
f181e1d237 Merge remote-tracking branch 'origin/1.7' into 1.7 2020-12-10 21:47:06 +02:00
Matias Griese
8f7dc43e1f Changelog update [#3101] 2020-12-10 21:46:57 +02:00
Djamil Legato
249c2f1e69 Update composer first thing 2020-12-10 11:24:28 -08:00
Djamil Legato
6a4686d17b Update composer first thing 2020-12-10 11:19:27 -08:00
Andy Miller
3529943bb0 Merge branch 'develop' into 1.7
# Conflicts:
#	system/src/Grav/Common/Twig/TwigExtension.php
2020-12-10 10:55:54 -07:00
Andy Miller
1c63f4bf46 Fix Twig svg_image() issue with classes applied to all elements #3068 2020-12-10 10:54:38 -07:00
Andy Miller
380177b777 Merge branch 'develop' into 1.7 2020-12-10 10:41:57 -07:00
Andy Miller
bc22c8d2b1 Allow all css and js to be seached via robots.txt by default 2020-12-10 10:41:42 -07:00
Matias Griese
c5cdeaef07 Changelog update [#3101] 2020-12-10 15:09:15 +02:00
Matias Griese
a1fb4a2487 Merge remote-tracking branch 'origin/1.7' into 1.7 2020-12-10 15:07:57 +02:00
Matias Griese
d34593928d Fixed Argument 1 passed to Grav\Common\User\DataUser\User::filterUsername() must be of the type string [#1992] 2020-12-10 15:07:38 +02:00
Andy Miller
5184f8e6a3 automated testing for Grav 1.7 commits/prs 2020-12-09 12:08:47 -07:00
Matias Griese
ea358c239f Restored samesite cookies after merge from develop 2020-12-09 15:42:46 +02:00
Matias Griese
2cf90cc60b Merge branch 'develop' of github.com:getgrav/grav into 1.7
 Conflicts:
	CHANGELOG.md
	composer.json
	composer.lock
	system/blueprints/config/system.yaml
	system/defines.php
	system/src/Grav/Common/Page/Pages.php
2020-12-09 15:33:37 +02:00
Matias Griese
db24d3e53e Fixed pages field escaping issues, needs admin update, too 2020-12-09 15:28:48 +02:00
Matias Griese
6a0caebe2e Fixed unimplemented PageObject::getOriginal() call [#3098] 2020-12-09 14:02:33 +02:00
Matias Griese
ac85946e0f Added support for setting GRAV_ENVIRONMENT by using environment variable or a constant 2020-12-08 13:41:05 +02:00
Matias Griese
fc55a8e49b Added support for setting GRAV_SETUP_PATH by using environment variable 2020-12-08 13:27:53 +02:00
Matias Griese
b093aa9fa6 Fix symfony bug (part 2) 2020-12-08 12:13:08 +02:00
Matias Griese
e60e9fa3dd Fix symfony bug 2020-12-08 11:59:09 +02:00
Andy Miller
29bcbf042f Added slack on failure 2020-12-07 16:19:34 -07:00
Andy Miller
19719ecac1 Added slack to tests 2020-12-07 16:14:16 -07:00
Matias Griese
4d288ad2ee CLI command cleanup 2020-12-07 19:40:10 +02:00
Matias Griese
eccaf4acff CLI command cleanup 2020-12-07 13:36:51 +02:00
Matias Griese
c2a2ef212e Fixed broken list in bin/gpm index, CLI/GPM command failures returning success [#3092, #3017] 2020-12-07 12:56:47 +02:00
Djamil Legato
47ab76c7e3 🎉 Moved Travis releases builds to Github Actions 🎉 2020-12-05 16:53:14 -08:00
Andy Miller
dd30b96210 auto-escape change 2020-12-05 11:34:40 -07:00
Andy Miller
3e053784c2 ignore versions.yaml 2020-12-04 14:26:42 -07:00
Andy Miller
7b97cd0cf1 ignore versions.yaml 2020-12-04 12:21:42 -07:00
Djamil Legato
809767883b Disable develop branch from triggering travis
Temporary, while we move to GitHub Actions.
2020-12-04 10:07:48 -08:00
Matias Griese
d8e38665f1 Changelog update 2020-12-04 20:06:57 +02:00
Matias Griese
f25ea8f056 Updated unit tests 2020-12-04 20:01:28 +02:00
Matias Griese
7c0ba80530 Fixed potential error when upgrading Grav 2020-12-04 19:29:07 +02:00
Andy Miller
6eb083bebe Merge tag '1.6.30' into develop
Release v1.6.30
2020-12-04 05:30:11 -07:00
Andy Miller
3a822f7bc4 Merge branch 'release/1.6.30' 2020-12-04 05:30:10 -07:00
Andy Miller
9a2268a54e prepare for release 2020-12-04 05:29:56 -07:00
Andy Miller
611171371b fix for travis build 2020-12-04 05:26:29 -07:00
Andy Miller
e1d4fe36f4 Merge branch 'release/1.6.30' 2020-12-04 03:42:37 -07:00
Andy Miller
079d8c19a4 Merge tag '1.6.30' into develop
Release v1.6.30
2020-12-04 03:42:37 -07:00
Andy Miller
418c6dd7f8 prepare for release 2020-12-04 03:42:02 -07:00
Andy Miller
08304d5064 Revert "Allow to set SameSite from system.yaml (#3063)"
This reverts commit 0b41eea2bb.
2020-12-04 03:34:26 -07:00
Andy Miller
5cdeb28e6b Revert "better handle cookie_samesite if null"
This reverts commit fd0c9823fa.
2020-12-04 03:33:59 -07:00
Andy Miller
c5efd17a9c GA Slack WIP 2020-12-03 22:16:56 -07:00
Andy Miller
6276ead820 removed deprecated values 2020-12-03 22:10:36 -07:00
Andy Miller
b5cdc12478 GA WIP 2020-12-03 22:02:46 -07:00
Andy Miller
ff511b8968 GA testing 2020-12-03 21:58:32 -07:00
Andy Miller
037a84c46f Added GA Test workflow 2020-12-03 20:49:02 -07:00
Andy Miller
3d0f29a172 removed deleted repo 2020-12-03 20:48:38 -07:00
Andy Miller
85c239bc18 Fix for PHP8 2020-12-03 17:43:33 -07:00
Andy Miller
1fb6a39d9d prepare for rc.19 release 2020-12-03 17:12:55 -07:00
Andy Miller
9aeac93c9a composer update 2020-12-03 16:10:54 -07:00
Andy Miller
6188076fe6 prepare for rc.18 release 2020-12-03 14:31:25 -07:00
Andy Miller
0fc7fd3411 Merge branch 'develop' into 1.7
# Conflicts:
#	system/defines.php
2020-12-03 14:27:38 -07:00
Andy Miller
078c8d23d5 Merge branch 'release/1.6.29' 2020-12-03 14:22:52 -07:00
Andy Miller
8c845c77c1 Merge tag '1.6.29' into develop
Release v1.6.29
2020-12-03 14:22:52 -07:00
Andy Miller
cb373dae59 prepare for release 2020-12-03 14:22:38 -07:00
Matias Griese
0a42a889ec Sort by numeric in Cron::cronToArray() 2020-12-02 21:51:34 +02:00
Matias Griese
e8f5080f35 Updated Gregwar to our own version 2020-12-02 16:09:10 +02:00
Matias Griese
00f73957dd Fixed doctrine collection sorting to be natural and case insensitive 2020-12-02 10:56:18 +02:00
Matias Griese
3a0480e0d8 Fixed plugin/theme priority ordering to be numeric 2020-12-02 10:45:11 +02:00
Matias Griese
0cee7bcdc8 Fixed Page ordering to be natural and case insensitive 2020-12-02 10:41:10 +02:00
Matias Griese
30401df4b7 Fixed Flex ordering to be natural and case insensitive 2020-12-02 10:37:51 +02:00
Matias Griese
f5d1e98491 Use previous version of Symfony YAML because of a bug 2020-12-01 11:57:08 +02:00
Matias Griese
8f9b2d22c1 Fixed event timeline in clockwork 2020-12-01 10:33:37 +02:00
Matias Griese
2b17767b53 Merge branch 'develop' of github.com:getgrav/grav into 1.7
 Conflicts:
	system/src/Grav/Common/Backup/Backups.php
2020-12-01 09:35:35 +02:00
Matias Griese
00a7094802 Update getBackupDownloadUrl() method to not pass the path 2020-12-01 09:33:55 +02:00
Andy Miller
6eaf44e397 Merge branch 'develop' into 1.7 2020-11-30 16:14:01 -07:00
Andy Miller
24b52c77fe update changelog 2020-11-30 16:13:51 -07:00
Andy Miller
7a9b906925 update changelog 2020-11-30 16:13:25 -07:00
Andy Miller
53bef264e7 XSS fix for grav-ghsa-cvmr-6428-87w9 2020-11-30 16:11:22 -07:00
Andy Miller
75b74c4ab3 XSS fix for grav-ghsa-cvmr-6428-87w9 2020-11-30 16:10:56 -07:00
Matias Griese
ca3a9aecd6 Do not create the new user/env folder if environment already exists elsewhere 2020-11-30 18:21:13 +02:00
Matias Griese
8f7902af94 Installer improvements 2020-11-30 16:13:24 +02:00
Andy Miller
8df3fa31fb updated with new toolbox 2020-11-27 13:53:33 -07:00
Matias Griese
ff7a1b861e Flex improvements 2020-11-27 14:56:50 +02:00
Matias Griese
d6a82e5c56 Fixed minor installer issues 2020-11-27 14:49:47 +02:00
Matias Griese
f714e6fa14 PHP 8 fixes (part 2) 2020-11-27 14:13:59 +02:00
Matias Griese
6817133819 Merge branch 'develop' of github.com:getgrav/grav into 1.7
 Conflicts:
	composer.json
	composer.lock
2020-11-27 14:01:56 +02:00
Matias Griese
76670e47a1 PHP 8 fixes 2020-11-27 13:49:10 +02:00
Matias Griese
961b24a019 Fixed exception in CLI GPM and backup commands when php-zip is not enabled [#3075] 2020-11-24 19:52:11 +02:00
Matias Griese
068de42e83 Fixed |safe_email filter to return safe and escaped UTF-8 HTML [#3072] 2020-11-24 19:36:35 +02:00
Matias Griese
75f9c0a892 Fixed bin/grav yamllinter -a and -f not following symlinks [#3080] 2020-11-24 16:42:00 +02:00
Matias Griese
3a1b301b32 FlexObject::refresh() should return boolean status 2020-11-24 14:52:52 +02:00
Matias Griese
9bb1d99ae4 Added FlexObject::refresh() method to make sure object is up to date 2020-11-24 14:48:12 +02:00
Matias Griese
cf052b5bd4 Updated Clockwork to v5.0 [#3072] 2020-11-24 11:47:31 +02:00
Matias Griese
65a18fd270 Update user/config/version.yaml before copying the files to avoid frontend from setting the version schema. 2020-11-23 22:30:13 +02:00
Matias Griese
d4775cc970 Merge branch 'develop' of github.com:getgrav/grav into 1.7
 Conflicts:
	system/src/Grav/Common/Processors/ConfigurationProcessor.php
2020-11-23 21:54:07 +02:00
Matias Griese
07ee5b42f7 Added basic support for user/config/versions.yaml 2020-11-23 21:53:28 +02:00
Matias Griese
d5048fea10 Composer update 2020-11-23 21:39:00 +02:00
Matias Griese
f3149068e3 Create version.yaml when initializing configuration 2020-11-23 21:36:54 +02:00
Matias Griese
f5d3a5132a Change version.yaml nesting 2020-11-23 21:00:17 +02:00
Matias Griese
70e0ecfef5 Add version information when upgrading Grav 2020-11-23 20:46:41 +02:00
Matias Griese
631e0e0f3f New sites have compatibility features turned off by default, upgrading from older versions will keep the settings on 2020-11-23 19:09:55 +02:00
Matias Griese
b66287cbb9 Fixed CLI self-upgrade from Grav 1.6 [#3079] 2020-11-23 09:50:30 +02:00
Matias Griese
9e6d38bc1a Added support for having all sites / environments under user/env folder [#3072] 2020-11-23 08:50:19 +02:00
Matias Griese
6cbe4aeec4 Fixed system:// stream is causing issues in Admin, making Media tab to disappear and possibly causing other issues [#3072] 2020-11-23 08:42:17 +02:00
Djamil Legato
e219f56ff4 Merge branch 'develop' into 1.7 2020-11-21 14:08:49 -08:00
Djamil Legato
e16b29c566 Better handling of missing repository index (grav-plugin-admin#1916) 2020-11-21 14:05:29 -08:00
Djamil Legato
1b3e3ede4d Better handling of missing repository index (grav-plugin-admin#1916) 2020-11-20 15:40:58 -08:00
Djamil Legato
0a601f10c0 Fixed Purge successful message only working in Scheduler but broken in CLI and Admin (fixes #1935) 2020-11-20 12:16:37 -08:00
1tsi
56ce4ab0f2 Update media.yaml (#3070)
fixed MIME types for .docx, .pptx and .xlsx
2020-11-18 12:10:23 -07:00
Matias Griese
1f6c2f5a0a Add per field configuration options to customize XSS detection 2020-11-18 13:54:42 +02:00
Andy Miller
5f3ddd9389 Merge branch 'develop' into 1.7 2020-11-17 15:24:54 -07:00
Andy Miller
fd0c9823fa better handle cookie_samesite if null 2020-11-17 15:24:08 -07:00
Andy Miller
d23588a217 Merge branch 'develop' into 1.7
# Conflicts:
#	system/blueprints/config/system.yaml
#	system/src/Grav/Common/GPM/Response.php
2020-11-17 12:07:11 -07:00
Andy Miller
ca53b8afca Merge branch '1.7' of github.com:getgrav/grav into 1.7
# Conflicts:
#	CHANGELOG.md
2020-11-17 12:01:56 -07:00
Andy Miller
053bc03a54 fixed blueprintschema for config-default-@ 2020-11-17 12:00:55 -07:00
Matias Griese
78dc70bcdc Turn off xss detection on unset fields 2020-11-17 19:10:13 +02:00
Matias Griese
ea00c044d3 Added XSS detection to all forms (use check_xss: false to disable it per field) 2020-11-17 18:54:03 +02:00
randoum
11cd2b086e Allow to set SameSite from system.yaml (#3063)
* Update system.yaml
* Update SessionServiceProvider.php
* Update Session.php
* Update system.yaml
2020-11-17 13:10:12 +02:00
Stephan Strate
ae6f0b5505 Check exact extension in checkFilename utility (#3061)
* Fix uploads_dangerous_extensions checking (#3060)
* Remove redundant prefixing of `.` to extension (#3060)
2020-11-17 13:07:33 +02:00
Vilius Šumskas
247d1a9aa6 Fix failing example custom job. (#3050)
* Since Symfony 4.2 passing chained shell commands to the Process component is not supported anymore and a working directory needs to be set by passing it as a completely separate parameter.

Unless somebody finds a way to use Process() for this and fixes it in the code, rework example custom job.

Related info: https://symfony.com/blog/new-in-symfony-4-2-important-deprecations#deprecated-process-commands-as-strings

* One more place to fix Symfony 4.2 compatibility.
2020-11-17 13:03:30 +02:00
Djamil Legato
6273c2395d Minor tweak to pages list tree ui 2020-11-16 20:24:09 -08:00
Djamil Legato
1396525251 Escape titles in Flex pages list (flex-objects#84) 2020-11-15 12:00:47 -08:00
Andy Miller
de46afff1c vendor library updates 2020-11-13 16:02:52 -07:00
Andy Miller
54fd54d3f0 Set minimum requirements to PHP 7.3.6 2020-11-13 16:01:26 -07:00
randoum
0b41eea2bb Allow to set SameSite from system.yaml (#3063)
* Update system.yaml

* Update SessionServiceProvider.php

* Update Session.php

* Update system.yaml
2020-11-12 13:40:39 -07:00
Matias Griese
63207d370b Fixed updated media missing from media when editing Flex Object after page reload 2020-11-12 21:19:45 +02:00
Matias Griese
e92d88df8b Fixed fatal error in CompiledFile if the cached version is broken 2020-11-12 13:35:36 +02:00
Matias Griese
a9e6d3665f Fixed potential fatal error when creating flex index using cache [#3062] 2020-11-12 13:26:25 +02:00
Matias Griese
2453927ba3 Fixed Utils::isFunctionDisabled() method if there are spaces in disable_functions [#3023] 2020-11-12 13:14:17 +02:00
Matias Griese
94e6cb02f3 Fixed header.admin.children_display_order in Flex Pages to work just like with regular pages 2020-11-12 12:58:26 +02:00
Stephan Strate
9b2b909139 Check exact extension in checkFilename utility (#3061)
* Fix uploads_dangerous_extensions checking (#3060)

* Remove redundant prefixing of `.` to extension (#3060)
2020-11-11 10:30:57 -07:00
Matias Griese
c9a3f349ad Merge remote-tracking branch 'origin/1.7' into 1.7 2020-11-11 14:51:56 +02:00
Matias Griese
439b539dcb Added FormFlashFile::getField() method 2020-11-11 14:51:48 +02:00
Andy Miller
ab7f0a2e95 Address errors in CLI when accidentally initializing twice 2020-11-09 14:25:04 -07:00
Matias Griese
b50dbf3ff0 Fixed sorting by groups in Flex Users 2020-11-09 20:44:37 +02:00
Matias Griese
d3f1f833ab Fixed sorting by groups in Flex Users 2020-11-09 19:47:00 +02:00
Matias Griese
3df099a0e3 Fixed typo in composer.json 2020-11-05 10:45:15 +02:00
Vilius Šumskas
54dccd11ef Fix failing example custom job. (#3050)
* Since Symfony 4.2 passing chained shell commands to the Process component is not supported anymore and a working directory needs to be set by passing it as a completely separate parameter.

Unless somebody finds a way to use Process() for this and fixes it in the code, rework example custom job.

Related info: https://symfony.com/blog/new-in-symfony-4-2-important-deprecations#deprecated-process-commands-as-strings

* One more place to fix Symfony 4.2 compatibility.
2020-11-04 15:40:32 -07:00
Matias Griese
77ec847e20 Tighten requirements (require PHP 8 support for libraries) 2020-11-04 18:31:04 +02:00
Matias Griese
8bf5fcb8ec Improve Flex configuration: gather views together in blueprint 2020-11-04 18:30:15 +02:00
Matias Griese
ff41d76501 Added search option same_as to Flex Objects 2020-11-03 09:11:58 +02:00
Matias Griese
d9772ed5c6 Hide Flex Pages frontend configuration (not ready for production use) 2020-11-02 15:52:27 +02:00
Matias Griese
8dba1b37c7 Update composer 2020-11-02 15:44:45 +02:00
Matias Griese
8b017dc647 Update composer 2020-10-30 22:17:14 +02:00
Matias Griese
c8ee05d671 Set minimum requirements to PHP 7.2.5 2020-10-30 21:52:04 +02:00
Djamil Legato
40216e310d Create SECURITY.md
Added security policy
2020-10-30 12:03:34 -07:00
Grant
6a6f99e9ae Add option for timeout in selfupgrade command (#3013)
* Add option for timeout in selfupgrade command

* Raise the default timeout
2020-10-30 07:48:03 -06:00
Djamil Legato
14ad7cf3ac Set grav_cli as referer when coming from CLI 2020-10-29 15:58:32 -07:00
Djamil Legato
ce327dca42 Set grav_cli as referer when coming from CLI 2020-10-29 15:56:20 -07:00
Djamil Legato
ded7670ac3 Forward a sid to GPM when downloading a premium package via CLI 2020-10-29 15:49:36 -07:00
Djamil Legato
5bf1ec0fd9 Forward a sid to GPM when downloading a premium package via CLI 2020-10-29 15:48:34 -07:00
Matias Griese
306c0505a6 Merge branch 'develop' of github.com:getgrav/grav into 1.7
 Conflicts:
	CHANGELOG.md
2020-10-29 11:10:33 +02:00
Matias Griese
325cb69a65 Merge remote-tracking branch 'origin/develop' into develop 2020-10-29 11:03:37 +02:00
Matias Griese
c3df9b6484 Added .htaccess rule to block attempts to use Twig in the request URL 2020-10-29 11:03:28 +02:00
Andy Miller
db6bfc00fc Upgraded bin/composer.phar to composer 2 2020-10-26 11:37:24 -06:00
Andy Miller
51b5d7a939 Fix compatibility with Symfony 4.2 and up. (#3048) 2020-10-26 11:34:52 -06:00
Matias Griese
9490f62dee Composer update 2020-10-26 14:58:49 +02:00
Vilius Šumskas
1661dc9ef7 Fix compatibility with Symfony 4.2 and up. (#3048)
This enables running scheduled *shell* commands again because Symfony 4.2 deprecated passing commands as a string to the Process component: https://symfony.com/blog/new-in-symfony-4-2-important-deprecations#deprecated-process-commands-as-strings

One also needs to catch all possible exceptions from the Process component, though. These exceptions are never displayed or sent to any of the logs and I've spent hours trying to debug why my scheduled tasks are failing.
2020-10-23 14:40:35 -06:00
Matias Griese
aa7731dc5d Merge remote-tracking branch 'origin/1.7' into 1.7 2020-10-23 14:45:24 +03:00
Matias Griese
4150564538 Added FlexDirectoryInterface interface 2020-10-23 14:45:16 +03:00
Andy Miller
38043ebade Merge branch 'develop' of github.com:getgrav/grav into develop
# Conflicts:
#	CHANGELOG.md
2020-10-18 15:10:01 -06:00
Andy Miller
9a694a8d3d updated jquery 3.x 2020-10-18 15:08:59 -06:00
Andy Miller
f6997f54eb Merge branch '1.7' of github.com:getgrav/grav into 1.7 2020-10-18 15:07:19 -06:00
Andy Miller
2631c18484 updated jquery 2020-10-18 15:07:13 -06:00
Matias Griese
c0d819b97a Fixed print_r() in twig 2020-10-18 20:17:17 +03:00
Matias Griese
972d32c969 Added deprecation notice when using system.pages_fallback_only 2020-10-16 12:29:37 +03:00
Matias Griese
7f0e51f92f Minor fix to upgrade guide 2020-10-15 13:41:50 +03:00
Matias Griese
6f78c2288f Added missing languages.content_fallback configuration variable to system.yaml 2020-10-15 11:12:30 +03:00
Matias Griese
b331ba42b8 Merge branch 'develop' of github.com:getgrav/grav into 1.7
 Conflicts:
	CHANGELOG.md
2020-10-14 11:02:46 +03:00
Matias Griese
fb3efba204 Fixed hardcoded system folder in blueprints, config and language streams 2020-10-14 11:01:45 +03:00
Matias Griese
58e09dcff4 Composer update 2020-10-14 10:38:13 +03:00
Matias Griese
747055f60e Fixed hardcoded system folder in blueprints, config and language streams 2020-10-14 10:37:59 +03:00
Matias Griese
aa07c64440 Missing method 2020-10-14 10:37:45 +03:00
Matias Griese
6b9f1d8414 Fixed bug in collections where filter type: false did not work 2020-10-13 20:54:20 +03:00
Matias Griese
b4bc1d292a Tweak pages collection filters 2020-10-13 20:29:09 +03:00
Matias Griese
c98553d19b Missed few cases (deprecated methods) 2020-10-13 19:18:10 +03:00
Matias Griese
1ace31216f Renamed PageCollectionInterface::nonModular() into PageCollectionInterface::pages() and deprecate the old method
Renamed `PageCollectionInterface::modular()` into `PageCollectionInterface::modules()` and deprecate the old method
2020-10-13 19:01:43 +03:00
Matias Griese
495cec930c Updated upgrade docs 2020-10-12 17:34:16 +03:00
Andy Miller
44ad0ca1ea Menu Visibility Requires Access setting wrong frontmatter login#265 2020-10-11 14:19:15 -06:00
Matias Griese
4ba8e9e99d Fixed media crashing on a bad image 2020-10-08 22:17:12 +03:00
Matias Griese
1eb85b366d Accessing page with unsupported file extension (jpg, pdf, xsl) will use wrong mime type [#3031] 2020-10-08 13:02:47 +03:00
Andy Miller
3821ae441f prepare for rc release 2020-10-07 17:43:25 -06:00
Andy Miller
b01e5f7366 Merge branch 'develop' into 1.7
# Conflicts:
#	system/defines.php
#	system/src/Grav/Common/Helpers/Excerpts.php
2020-10-07 17:41:13 -06:00
Andy Miller
b375a543ec Merge tag '1.6.28' into develop
Release v1.6.28
2020-10-07 17:26:16 -06:00
Andy Miller
2c9d848af5 Merge branch 'release/1.6.28' 2020-10-07 17:26:15 -06:00
Andy Miller
8d65c5c2c0 prepare for release 2020-10-07 17:25:32 -06:00
Matias Griese
0af731b6a2 Fixed bug in FlexMediaTrait::getMediaFieldSettings() 2020-10-07 13:56:19 +03:00
Andy Miller
9d870b2c45 Backported folder::countChildren() from 1.7 2020-10-06 16:06:10 -06:00
Matias Griese
82abf87f75 Improve media rename errors 2020-10-06 13:12:14 +03:00
Matias Griese
81ef023b37 Composer update 2020-10-06 10:23:06 +03:00
Matias Griese
776fffb2dc Merge branch 'develop' of github.com:getgrav/grav into 1.7
 Conflicts:
	composer.lock
	system/src/Grav/Common/Grav.php
2020-10-06 10:21:33 +03:00
Andy Miller
cfd5d9e209 improved compatibility 2020-10-05 18:44:59 -06:00
Matias Griese
23716ff729 Do not cache 404 [#3025] 2020-10-05 11:16:17 +03:00
Matias Griese
18921a4f14 Composer update 2020-10-05 10:57:02 +03:00
Andy Miller
569c42724b more docs 2020-10-04 18:28:24 -06:00
Andy Miller
18abf7d644 Caddyfile more friendly for local development 2020-10-04 18:28:18 -06:00
Andy Miller
12efdb9fe4 Merge branch 'develop' into 1.7 2020-10-04 16:36:07 -06:00
Cant_Aim
fdf884036d Update to Caddyfile using Caddy 2 changes. (#2963) 2020-10-04 16:35:37 -06:00
Matias Griese
998018af3e Phpstan fixes 2020-10-02 13:34:51 +03:00
Matias Griese
cae71f3d60 Composer update 2020-10-02 13:24:45 +03:00
Matias Griese
f7e43fab35 Added clearCache() to storages 2020-10-02 13:21:07 +03:00
Matias Griese
4f7a4ac1e2 PhpStan fixes 2020-10-02 13:12:47 +03:00
Matias Griese
5fc7b34ce7 Added reload argument to FlexStorageIngerface::getMetaData() 2020-10-02 12:06:46 +03:00
Andy Miller
cbf73b2290 Merge branch 'develop' into 1.7
# Conflicts:
#	CHANGELOG.md
#	system/src/Grav/Common/GPM/Response.php
#	system/src/Grav/Common/Twig/Node/TwigNodeCache.php
#	system/src/Grav/Common/Twig/TokenParser/TwigTokenParserCache.php
#	system/src/Grav/Common/Twig/TwigExtension.php
#	system/src/Grav/Common/Utils.php
2020-09-30 10:26:51 -06:00
Matias Griese
f344a8166e Changelog update 2020-09-30 14:38:47 +03:00
Matias Griese
9532317928 Fixed fatal error in toggled fields 2020-09-30 14:38:29 +03:00
Matias Griese
4cf85c462d Merge remote-tracking branch 'origin/1.7' into 1.7
# Conflicts:
#	CHANGELOG.md
2020-09-30 14:35:52 +03:00
Matias Griese
6fe2964f37 Flex User: make multiple file/image fields to work 2020-09-30 14:35:29 +03:00
Djamil Legato
2108a902c2 Fixed Referer reference for GPM calls 2020-09-28 17:37:08 -07:00
Andy Miller
1520eec677 Merge branch '1.7' of github.com:getgrav/grav into 1.7 2020-09-28 18:35:06 -06:00
Andy Miller
e3ba3a3ea4 added Uri::getAllHeaders() compatibility 2020-09-28 18:35:01 -06:00
Djamil Legato
1c104f9358 Updated Changelog 2020-09-28 16:38:11 -07:00
Djamil Legato
f8b9536eb8 Fixed Referer reference for GPM calls 2020-09-28 16:37:18 -07:00
Matias Griese
0e34628c6f Flex User: make multiple file/image fields to work 2020-09-25 15:03:15 +03:00
Matias Griese
614bc0b254 Make MediaUploadTrait easier to override 2020-09-25 13:55:46 +03:00
Matias Griese
cc6eafdb09 Fixed Flex User avatar when using folder storage
Fixed bug in `Flex Form` making it impossible to set nested values
2020-09-25 11:08:53 +03:00
Matias Griese
df4cbdcc09 Do not log deprecated messages for now (too much into in clockwork) 2020-09-23 16:18:16 +03:00
Matias Griese
f5e53a9a4c Fixed FlexObject::freeMedia() method causing media to become null 2020-09-23 16:17:25 +03:00
Matias Griese
46f654fcee Fixed unset() in ObjectProperty class 2020-09-23 16:15:39 +03:00
Matias Griese
aa3a3f4a17 Fixed media upload failing with custom folders 2020-09-23 11:52:42 +03:00
Andy Miller
59b3b6cc02 initialize page blueprint first 2020-09-21 15:00:51 -06:00
Matias Griese
6d4b8e8401 Fixed onBlueprintCreated firing multiple times recursively 2020-09-21 23:49:45 +03:00
Matias Griese
9ac7a60835 Make sure that onBlueprintCreated gets called only once 2020-09-21 23:40:08 +03:00
Matias Griese
790dbd381d Added missing onBlueprintCreated event for Flex Pages 2020-09-21 23:20:44 +03:00
Matias Griese
ac6c8a985b Improve MediaUploadTrait 2020-09-21 16:50:22 +03:00
Matias Griese
fea22e0409 Remove typehint from UserObject 2020-09-21 10:40:52 +03:00
Matias Griese
ac7d595a2d Merge branch '1.7' of github.com:getgrav/grav into 1.7
 Conflicts:
	system/src/Grav/Common/Twig/Twig.php
2020-09-21 10:14:04 +03:00
Matias Griese
819e412e09 Improve docblocks in Grav\Common, improve code readability 2020-09-20 22:04:40 +03:00
Jeremy Gonyea
bdfec68340 Custom nginx-ddev-site.conf no longer required (#3011) 2020-09-18 20:43:51 -06:00
Andy Miller
0b7ef6c8fb Merge branch '1.7' of github.com:getgrav/grav into 1.7
# Conflicts:
#	CHANGELOG.md
2020-09-18 12:51:00 -06:00
Andy Miller
9880ce977a Added default templates in Grav itself 2020-09-18 12:49:10 -06:00
Matias Griese
e88f924274 Phpstan fixes 2020-09-18 09:57:56 +03:00
Matias Griese
fe53dc88e5 Improve Media classes 2020-09-18 09:20:27 +03:00
Matias Griese
fdfd6558f2 Composer update 2020-09-18 09:17:28 +03:00
Matias Griese
6d9e3dcad1 Merge branch '1.7' of github.com:getgrav/grav into 1.7 2020-09-15 10:34:51 +03:00
Andy Miller
20c4468edd safety check in Utils::svgImageFunction() 2020-09-11 14:48:50 -06:00
Matias Griese
7f80e650b1 Improve Media classes 2020-09-11 14:13:06 +03:00
Andy Miller
1995837b3f composer udpate 2020-09-10 19:46:30 -06:00
Andy Miller
88c0617279 update changelog 2020-09-10 15:55:33 -06:00
Andy Miller
b8b1bed7ed backported theme_var enhanced logic from 1.7 2020-09-10 15:52:52 -06:00
Andy Miller
03c6e74c4d backported {{ cache }} from 1.7 2020-09-10 15:49:25 -06:00
Andy Miller
71639de5ec Added Utils::fullPath() helper method 2020-09-10 15:43:57 -06:00
Andy Miller
39310cd4af Added svg_image twig function 2020-09-10 15:43:47 -06:00
Matias Griese
582352b2d2 Fixed infinite loop in blueprints with extend@ to a parent stream 2020-09-08 23:15:36 +03:00
Matias Griese
f2c271f66d Fixed Security::sanitizeSVG() creating an empty file if SVG file cannot be parsed 2020-09-08 15:15:25 +03:00
Matias Griese
d99e1f519e Added Filesystem::basename() method 2020-09-07 13:09:07 +03:00
Matias Griese
c53e2843be Minor MediaFileTrait update to support external URLs 2020-09-04 14:24:31 +03:00
Matias Griese
f438ce04fb Merge branch '1.7' of github.com:getgrav/grav into 1.7 2020-09-02 12:41:42 +03:00
Matias Griese
8be5952b92 Upgrade guide update 2020-09-02 10:45:01 +03:00
Andy Miller
cfc8610a16 prepare for rc release 2020-09-01 14:46:52 -06:00
Andy Miller
ad8a5d9870 Merge branch 'develop' into 1.7
# Conflicts:
#	CHANGELOG.md
#	system/defines.php
2020-09-01 14:46:05 -06:00
Andy Miller
75cb4e392d Merge branch 'release/1.6.27' 2020-09-01 14:35:38 -06:00
Andy Miller
ec9dd14cb4 Merge tag '1.6.27' into develop
Release v1.6.27
2020-09-01 14:35:38 -06:00
Andy Miller
6e8c852bfa prepare for release 2020-09-01 14:35:29 -06:00
Andy Miller
f204979ada Merge branch '1.7' of github.com:getgrav/grav into 1.7 2020-08-31 13:58:28 -06:00
Andy Miller
6275327b0a strip <xml> and optionally <style> 2020-08-31 13:58:24 -06:00
Matias Griese
f1126e63b1 Flex: Improve row rename logic 2020-08-31 15:25:02 +03:00
Matias Griese
7157ed08f9 Fixed Flex Pages bug where renaming slug causes bad ordering range after save [#2997] 2020-08-28 21:50:18 +03:00
Matias Griese
d33627f1fe Composer update 2020-08-28 14:26:18 +03:00
Matias Griese
c2611cfeaf Fixed Flex Pages bug where changing a modular page template added duplicate file [admin#1899] 2020-08-28 14:26:07 +03:00
Matias Griese
056614fa6b Fixed Flex Pages bug where onAdminSave passes page as $event['page'] instead of $event['object'] [#2995] 2020-08-28 12:18:02 +03:00
Matias Griese
4c19226959 Include route in Flex Pages edit title 2020-08-28 09:42:41 +03:00
Matias Griese
d41a31f614 Added MediaUploadInterface::renameFile() method 2020-08-28 09:41:50 +03:00
Matias Griese
d83dc07368 Added MediaUploadInterface::renameFile() method 2020-08-28 09:37:44 +03:00
Andy Miller
f30d8748f1 tidy up grav instance reference 2020-08-27 11:02:00 -06:00
Andy Miller
b4710c292f Added themes to cached bluerprints + configs 2020-08-27 11:01:35 -06:00
Andy Miller
c3cd399087 allow null for classes 2020-08-26 14:08:31 -06:00
Andy Miller
f8a2c94903 Added a fullPath() helper method 2020-08-26 14:05:42 -06:00
Andy Miller
747b081809 added svg_image() twig function 2020-08-25 14:47:17 -06:00
Andy Miller
55903dab11 composer updates
Signed-off-by: Andy Miller <rhuk@mac.com>
2020-08-24 11:53:16 -06:00
Andy Miller
a6c094f9aa fix error when no parent exists
Signed-off-by: Andy Miller <rhuk@mac.com>
2020-08-13 11:43:55 -06:00
Andy Miller
b9b978e452 deprecate header_var + enhance theme_var
Signed-off-by: Andy Miller <rhuk@mac.com>
2020-08-12 17:23:27 -06:00
Andy Miller
bad24f8a85 support returning object
Signed-off-by: Andy Miller <rhuk@mac.com>
2020-08-03 20:25:01 -06:00
Andy Miller
57cffbc4c8 support climbing up the page structure looking for a header variable
Signed-off-by: Andy Miller <rhuk@mac.com>
2020-08-03 18:10:13 -06:00
Andy Miller
86d71bf37f Support current page context
Signed-off-by: Andy Miller <rhuk@mac.com>
2020-08-03 18:09:54 -06:00
Matias Griese
c6dd169916 Added MediaUploadInterface::renameFile() method 2020-08-03 16:11:15 +03:00
Matias Griese
cbc85b7a09 Improve medium objects 2020-07-28 17:29:10 +03:00
Matias Griese
016af0f419 Minor improvements for backups 2020-07-28 17:26:55 +03:00
Dominik Scholz-Schulze
1903d44bf8 Fixed enviroment name mapping for localhost (#2924)
Co-authored-by: Dominik Scholz-Schulze <dominik.scholz-schulze@iserv.eu>
2020-07-27 11:11:32 -06:00
Matias Griese
351c270e0e Do not check file size limit when updating object 2020-07-24 11:24:23 +03:00
Matias Griese
ab3d9f89ec Improved media 2020-07-24 11:17:26 +03:00
Andy Miller
97220a27df prepare for rc release
Signed-off-by: Andy Miller <rhuk@mac.com>
2020-07-22 11:08:23 -06:00
Andy Miller
0310fdf99f Sanity checks
Signed-off-by: Andy Miller <rhuk@mac.com>
2020-07-21 16:38:02 -06:00
Andy Miller
f1a535b7d4 uppdated changelog
Signed-off-by: Andy Miller <rhuk@mac.com>
2020-07-21 16:18:24 -06:00
Andy Miller
6879d8b6ce fix for broken exif reading
Signed-off-by: Andy Miller <rhuk@mac.com>
2020-07-21 14:57:19 -06:00
Matias Griese
046c5f69ac Changelog update 2020-07-21 16:30:37 +03:00
Matias Griese
40687f8cc0 Fixed caching issues with Flex index file 2020-07-21 15:24:54 +03:00
Andy Miller
b8f27ecfd0 sanity check
Signed-off-by: Andy Miller <rhuk@mac.com>
2020-07-20 23:03:57 -06:00
Andy Miller
16dd2ef9d0 moved fixOrientation() into ImageMediaTrait
Signed-off-by: Andy Miller <rhuk@mac.com>
2020-07-20 22:47:33 -06:00
Andy Miller
aaff2f486f set default for auto-fix-orientation to true
Signed-off-by: Andy Miller <rhuk@mac.com>
2020-07-20 19:09:58 -06:00
Andy Miller
d9a62373b8 fix issue with ‘’ set in defaults
Signed-off-by: Andy Miller <rhuk@mac.com>
2020-07-20 19:09:00 -06:00
Andy Miller
bef4f6a0db Fix orientation when auto_fix_orientation option is enabled
Signed-off-by: Andy Miller <rhuk@mac.com>
2020-07-20 19:08:45 -06:00
Matias Griese
a66c282ee5 Composer update 2020-07-17 19:41:06 +03:00
Matias Griese
2d50cc2b2d Fixed bug in clearing Flex index (partial fix) 2020-07-17 19:40:57 +03:00
Andy Miller
82f1182503 Prepare for rc release
Signed-off-by: Andy Miller <rhuk@mac.com>
2020-07-09 10:43:17 -06:00
Andy Miller
360bed8697 Merge branch 'develop' into 1.7 2020-07-09 10:32:02 -06:00
Andy Miller
e4a833b59e cleanup
Signed-off-by: Andy Miller <rhuk@mac.com>
2020-07-09 10:28:47 -06:00
Matias Griese
f8809d5d62 Fixed missing const CSS_IMPORT_REGEX in BaseAsset 2020-07-09 10:05:33 +03:00
Matias Griese
8adffb8714 Fixed page media only accepting images [#2943] 2020-07-09 09:57:11 +03:00
Andy Miller
9b6649174c fixes complex css imports #2958
Signed-off-by: Andy Miller <rhuk@mac.com>
2020-07-08 10:39:48 -06:00
Andy Miller
7f03f7c844 Updated changelog
Signed-off-by: Andy Miller <rhuk@mac.com>
2020-07-07 12:31:01 -06:00
Andy Miller
843596944f Merge branch '1.7' of github.com:getgrav/grav into 1.7 2020-07-07 12:28:14 -06:00
Andy Miller
0f6c5fe49d Asset test compatibility
Signed-off-by: Andy Miller <rhuk@mac.com>
2020-07-07 12:28:04 -06:00
Ricardo Verdugo
b94c4e775a added optional options to noprocess (#2954)
* added optional options to noprocess

* fix minor bug with skip and better naming

* Added tests

Signed-off-by: Andy Miller <rhuk@mac.com>

* Added some tests

Signed-off-by: Andy Miller <rhuk@mac.com>

Co-authored-by: Ricardo <ricardo@urbansquid.london>
Co-authored-by: Andy Miller <rhuk@mac.com>
2020-07-07 12:27:32 -06:00
torohill
fc97e88928 Left pad scheduler times with zeros. (#2921) 2020-07-07 11:17:15 -06:00
Andy Miller
5b47e6130c update changelog
Signed-off-by: Andy Miller <rhuk@mac.com>
2020-07-03 21:20:28 -06:00
Andy Miller
86edc18f21 Safer solution for getExcerptsFromHtml
Signed-off-by: Andy Miller <rhuk@mac.com>
2020-07-03 21:19:39 -06:00
Andy Miller
5ee36e786a UTF-8 safe in Excerpts::getExcerptFromHtml()
Signed-off-by: Andy Miller <rhuk@mac.com>
2020-07-03 21:18:36 -06:00
Matias Griese
c4e2e5da8d Changelog update 2020-07-02 16:22:45 +03:00
Matias Griese
2c14ec0abd Reverted Language::getDefault() returning false again as plugins use it (updated docblocks) 2020-07-02 16:18:41 +03:00
Matias Griese
5b782fd04c Regression: Default language fix broke Language::getLanguageURLPrefix() and Language::isIncludeDefaultLanguage() methods 2020-07-02 13:58:58 +03:00
Andy Miller
bdd579ad2d prepare for rc release
Signed-off-by: Andy Miller <rhuk@mac.com>
2020-07-01 14:30:43 -06:00
Andy Miller
d94fa8d2de updated changelog
Signed-off-by: Andy Miller <rhuk@mac.com>
2020-07-01 14:30:37 -06:00
Andy Miller
c0f1d4e2da Don’t validate, let user’s overriden language work even if no other languages set
Signed-off-by: Andy Miller <rhuk@mac.com>
2020-07-01 14:04:28 -06:00
Andy Miller
e82f49bdab fall back to ‘en’ by default if no other lang specified
Signed-off-by: Andy Miller <rhuk@mac.com>
2020-07-01 14:03:31 -06:00
Matias Griese
b65d48541d Fixed Language::getDefault() returning false and not null 2020-07-01 20:54:22 +03:00
Matias Griese
e2f68194d7 Docblock fixes in Language 2020-07-01 20:10:43 +03:00
Matias Griese
bd6f8f4ae6 Docblock fixes in Language 2020-07-01 20:09:55 +03:00
Matias Griese
9d4cce93fc Tabs in account blueprint break flex listing 2020-07-01 15:12:09 +03:00
Matias Griese
28ce18f8f0 Improved CvsFormatter to attempt to encode non-scalar variables into JSON before giving up 2020-07-01 14:51:27 +03:00
Matias Griese
c060d1a36e Fixed new User Group allowing bad group name to be saved 2020-07-01 14:30:56 +03:00
Matias Griese
3a05dcf659 Fixed missing onAdminSave and onAdminAfterSave events when using Flex Pages and Flex Users 2020-07-01 14:20:14 +03:00
Matias Griese
291ed38a5a Added page actions for admin 2020-06-30 22:42:19 +03:00
Matias Griese
411d689a48 Fixed broken Flex Page authorization for groups 2020-06-30 21:10:43 +03:00
Matias Griese
df279f879f UserObject: allow incomplete file properties 2020-06-30 14:50:53 +03:00
Matias Griese
9e58bccd49 Documentation updates on Page::topPage() 2020-06-30 10:08:32 +03:00
Matias Griese
092f3b4e24 Fix for FlexPage::topParent() 2020-06-30 01:20:06 +03:00
Matias Griese
005bb77f55 Merge remote-tracking branch 'origin/1.7' into 1.7 2020-06-30 01:09:43 +03:00
Matias Griese
258840d198 Updated UPGRADE-1.7.md 2020-06-30 01:09:34 +03:00
Andy Miller
c483da9efe fix for Page:topParent()
Signed-off-by: Andy Miller <rhuk@mac.com>
2020-06-29 15:53:53 -06:00
Matias Griese
4b3f202c6f Changelog update 2020-06-29 09:29:57 +03:00
Andy Miller
07571465a7 make sure plugins are properly initialized in CLI
Signed-off-by: Andy Miller <rhuk@mac.com>
2020-06-28 16:23:03 -06:00
Andy Miller
7d7590b914 Added a new onAfterCacheClear event
Signed-off-by: Andy Miller <rhuk@mac.com>
2020-06-28 12:54:35 -06:00
Andy Miller
f965961401 udpated bundled composer to 2.0.0-dev
Signed-off-by: Andy Miller <rhuk@mac.com>
2020-06-27 11:51:49 -06:00
Andy Miller
814ea7f81a composer update
Signed-off-by: Andy Miller <rhuk@mac.com>
2020-06-27 11:51:37 -06:00
Matias Griese
91a0790695 Fixed retina images not working in Flex [flex-objects 64] 2020-06-26 13:10:24 +03:00
Matias Griese
2b8a6c6a89 Changelog fix 2020-06-26 12:27:33 +03:00
Matias Griese
55648d3452 Changelog update [#1867] 2020-06-26 12:26:09 +03:00
Matias Griese
60316d1b75 Fixed Trying to get property 'username' of non-object error in Flex 2020-06-26 11:54:38 +03:00
Matias Griese
7826608384 Changelog updates 2020-06-25 18:40:30 +03:00
Matias Griese
de151c8a9d Fixed uploading media in non-existing flex object (part 2) 2020-06-25 18:34:31 +03:00
Matias Griese
b0a1effaf9 Fixed uploading media in non-existing object 2020-06-25 15:58:18 +03:00
Matias Griese
fd52d124dd Changelog update 2020-06-23 14:37:46 +03:00
Matias Griese
b772864f2d Merge branch 'feature/1.7-media' of github.com:getgrav/grav into 1.7 2020-06-23 14:35:46 +03:00
Matias Griese
cdb10cfc1f Removed deprecation from a few FlexMediaTrait methods to simplify logic 2020-06-23 12:57:40 +03:00
Matias Griese
da7f0b7dce Fixed MediaUploadTrait::copyUploadedFile() not adding uploaded media to the collection 2020-06-23 12:43:27 +03:00
jackthomasatl
25461f7ca8 Adjusted asset types to enable extension of assets class (#2937)
Co-authored-by: Jack Thomas <Jack.Thomas@elavon.com>
2020-06-22 14:26:03 -06:00
Andy Miller
da7df9f865 needed for cache clear event
Signed-off-by: Andy Miller <rhuk@mac.com>
2020-06-22 08:57:58 -06:00
Fabien Basmaison
00c5dba210 Use proper ellipsis for summary. (#2939) 2020-06-17 08:28:32 -06:00
Andy Miller
f30219d85a move image loading into it’s own trait to be used in image+static images
Signed-off-by: Andy Miller <rhuk@mac.com>
2020-06-10 09:58:06 -06:00
Andy Miller
223e75d326 handle non-text links in getExcerptFromHtml
Signed-off-by: Andy Miller <rhuk@mac.com>
2020-06-10 09:30:20 -06:00
Andy Miller
46d4f4a481 right-trim route for safety
Signed-off-by: Andy Miller <rhuk@mac.com>
2020-06-09 10:43:21 -06:00
Andy Miller
419ebeafa8 Fix for trailing / in routes
Signed-off-by: Andy Miller <rhuk@mac.com>
2020-06-08 16:33:55 -06:00
Andy Miller
4be7917d41 prepare for rc release
Signed-off-by: Andy Miller <rhuk@mac.com>
2020-06-08 15:53:28 -06:00
Andy Miller
191686dffe Merge branch 'develop' into 1.7
Signed-off-by: Andy Miller <rhuk@mac.com>

# Conflicts:
#	system/defines.php
2020-06-08 15:51:08 -06:00
Andy Miller
fa791ed4ab Merge branch 'release/1.6.26' 2020-06-08 15:50:24 -06:00
Andy Miller
e29f8a9657 Merge tag '1.6.26' into develop
Release v1.6.26
2020-06-08 15:50:24 -06:00
Andy Miller
e66f6583b1 prepare for release
Signed-off-by: Andy Miller <rhuk@mac.com>
2020-06-08 15:49:51 -06:00
Andy Miller
399d90e6cd Merge branch '1.7' into feature/1.7-media 2020-06-08 14:50:27 -06:00
Andy Miller
ec2eaae0d3 Merge branch 'develop' into 1.7
Signed-off-by: Andy Miller <rhuk@mac.com>

# Conflicts:
#	system/src/Grav/Common/GPM/Response.php
2020-06-07 19:47:58 -06:00
Andy Miller
12389b1e0d JSON Route of homepage with no ‘route’ set is valid [form#425]
Signed-off-by: Andy Miller <rhuk@mac.com>
2020-06-07 19:46:18 -06:00
Florian Körner
ff6e5a20c3 Fix: case-insensitive search of location header (#2932)
looks good!
2020-06-07 15:42:29 -06:00
Andy Miller
7d6526f962 Merge branch '1.7' into feature/1.7-media
Signed-off-by: Andy Miller <rhuk@mac.com>

# Conflicts:
#	CHANGELOG.md
2020-06-07 15:26:10 -06:00
Andy Miller
b8fad8452b JSON route on homepage with no ‘route’ is valid grav-plugin-form#425
Signed-off-by: Andy Miller <rhuk@mac.com>
2020-06-07 15:23:01 -06:00
Matias Griese
5e9107f376 Merge branch '1.7' of github.com:getgrav/grav into feature/1.7-media
 Conflicts:
	system/src/Grav/Common/Page/Medium/ImageMedium.php
2020-06-05 22:03:53 +03:00
Andy Miller
7faaff304a PSR fix
Signed-off-by: Andy Miller <rhuk@mac.com>
2020-06-05 12:26:30 -06:00
Matias Griese
94acbf6005 Fixed saving nested file fields in Flex Objects 2020-06-05 10:11:19 +03:00
Andy Miller
a65c21acba Merge branch 'develop' into 1.7
Signed-off-by: Andy Miller <rhuk@mac.com>

# Conflicts:
#	CHANGELOG.md
#	system/blueprints/config/system.yaml
2020-06-04 14:46:54 -06:00
Andy Miller
bfbe4ce1b8 option to control supported attributes in markdown links
Signed-off-by: Andy Miller <rhuk@mac.com>
2020-06-04 14:42:38 -06:00
Andy Miller
aaa636f357 cleaner handling of cropZoom
Signed-off-by: Andy Miller <rhuk@mac.com>
2020-06-04 14:31:22 -06:00
Matias Griese
d0241ba7ee Changelog update 2020-06-04 22:33:29 +03:00
Matias Griese
b2230225cc Fixed media field saving issues in Flex Pages 2020-06-04 22:01:23 +03:00
Matias Griese
e063718e4f Add media support for Flex UserGroupObject 2020-06-04 16:43:00 +03:00
Matias Griese
03436a670f Add media support for Flex GenericObject 2020-06-04 16:26:40 +03:00
Matias Griese
8be508de5d Fixed typo in class name 2020-06-04 16:16:27 +03:00
Matias Griese
9370a86246 Moved common methods in both Media and GlobalMedia to AbstractMedia 2020-06-04 15:47:28 +03:00
Matias Griese
6c5237cdd8 Added missing methods into GlobalMedia 2020-06-04 15:45:51 +03:00
Matias Griese
2cf5ecd212 Implemented working media fields in FlexMediaTrait 2020-06-04 15:17:52 +03:00
Matias Griese
8e9125772e Add missing functionality to MediaUploadTrait 2020-06-04 12:47:48 +03:00
Matias Griese
62e863dec0 Improve Media handling in Flex 2020-06-03 18:06:37 +03:00
Matias Griese
e00098ea6a Merge branches '1.7' and 'feature/1.7-media' of github.com:getgrav/grav into feature/1.7-media 2020-06-02 13:29:17 +03:00
Matias Griese
f12bd1b51f Added support for case sensitive usernames 2020-06-02 11:57:55 +03:00
Matias Griese
93942a74cf Fixed Flex Object request cache clear when saving object 2020-06-01 13:48:58 +03:00
Matias Griese
401fd04379 Fix minor media bugs 2020-05-29 08:51:27 +03:00
Matias Griese
4fd54f1692 Added MediaUploadTrait 2020-05-28 17:31:49 +03:00
Matias Griese
9565994e5c Move image loading() method into trait 2020-05-28 15:21:03 +03:00
Matias Griese
6876e1a38a Merge branch '1.7' of github.com:getgrav/grav into feature/1.7-media
 Conflicts:
	system/src/Grav/Common/Page/Medium/ImageMedium.php
2020-05-28 15:16:43 +03:00
Matias Griese
7a8e737802 Minor code updates 2020-05-27 13:25:26 +03:00
Andy Miller
9f968611b1 typo
Signed-off-by: Andy Miller <rhuk@mac.com>
2020-05-26 08:36:40 -06:00
Andy Miller
3bd4f9499a cherry picked #1925 fix from 1.7 to 1.6
Signed-off-by: Andy Miller <rhuk@mac.com>
2020-05-26 08:35:49 -06:00
Andy Miller
069ef7b12c Fixed system.pages.hide_empty_folders #2925
Signed-off-by: Andy Miller <rhuk@mac.com>
2020-05-26 08:32:03 -06:00
Andy Miller
9d6207f80e update changelog
Signed-off-by: Andy Miller <rhuk@mac.com>
2020-05-26 08:17:19 -06:00
Andy Miller
22b493996c renamed markdown_editor to content_editor
Signed-off-by: Andy Miller <rhuk@mac.com>
2020-05-26 08:16:37 -06:00
Andy Miller
5284717570 Added markdown editor option to user profile blueprint
Signed-off-by: Andy Miller <rhuk@mac.com>
2020-05-25 14:03:40 -06:00
Matias Griese
96d11e4ffa Fixed new Flex User erroring out on save (thanks @mikebi42) 2020-05-25 22:18:30 +03:00
Matias Griese
a156247dc3 Fixed blueprint value filtering in lists [#2923] 2020-05-22 23:08:02 +03:00
Matias Griese
0e4a88d538 Fixed new Flex Page not having correct form fields for the page type 2020-05-22 21:44:23 +03:00
Andy Miller
a2d1cdfc13 rename hasChildren to countChildren
Signed-off-by: Andy Miller <rhuk@mac.com>
2020-05-22 10:31:30 -06:00
Andy Miller
dcb0c490ba return count of children rather simple boolean
Signed-off-by: Andy Miller <rhuk@mac.com>
2020-05-22 10:29:29 -06:00
Andy Miller
7687bdf751 vendor updates
Signed-off-by: Andy Miller <rhuk@mac.com>
2020-05-20 11:56:16 -06:00
Andy Miller
85ef04abc4 handle images inside link excerpts
Signed-off-by: Andy Miller <rhuk@mac.com>
2020-05-15 10:44:25 -06:00
Andy Miller
69ae59b933 prepare for rc.11 release
Signed-off-by: Andy Miller <rhuk@mac.com>
2020-05-14 15:47:01 -06:00
Andy Miller
c5e538421e Merge branch 'develop' into 1.7
Signed-off-by: Andy Miller <rhuk@mac.com>

# Conflicts:
#	CHANGELOG.md
#	system/defines.php
2020-05-14 15:43:22 -06:00
Andy Miller
d7b1689047 Merge tag '1.6.25' into develop
Release 1.6.25
2020-05-14 15:41:45 -06:00
Andy Miller
bd8396ba6e Merge branch 'release/1.6.25' 2020-05-14 15:41:44 -06:00
Andy Miller
859aff590b Prepare for release
Signed-off-by: Andy Miller <rhuk@mac.com>
2020-05-14 15:41:34 -06:00
Andy Miller
73d8a844d9 updated changelog
Signed-off-by: Andy Miller <rhuk@mac.com>
2020-05-14 15:24:33 -06:00
Andy Miller
5db395799d Changelog updated
Signed-off-by: Andy Miller <rhuk@mac.com>
2020-05-14 15:17:02 -06:00
Andy Miller
ad1ecf21c3 Merge branch 'develop' into 1.7
Signed-off-by: Andy Miller <rhuk@mac.com>

# Conflicts:
#	system/blueprints/config/system.yaml
#	system/config/system.yaml
#	system/src/Grav/Common/Uri.php
2020-05-14 14:46:14 -06:00
Andy Miller
497ca2a5cd Advanced Customization options for HTTP_X_FORWARDED headers 2020-05-14 14:43:52 -06:00
Andy Miller
4e578ed95e Advanced Customization options for HTTP_X_FORWARDED headers 2020-05-14 14:32:07 -06:00
Andy Miller
8b258c8828 updated changelog 2020-05-14 12:36:50 -06:00
Andy Miller
148117edcb Support for native lazy loading of images #2910 2020-05-14 12:33:46 -06:00
Andy Miller
a57358f311 fix for & errors in URL 2020-05-14 10:47:36 -06:00
Matias Griese
ee0ad1126d Merge moved code 2020-05-12 20:35:04 +03:00
Matias Griese
2db0002ffd Merge branch '1.7' of github.com:getgrav/grav into feature/1.7-media
 Conflicts:
	system/src/Grav/Common/Page/Medium/ImageMedium.php
2020-05-12 20:34:26 +03:00
Matias Griese
a74e07c491 Docblock update 2020-05-08 13:24:10 +03:00
Matias Griese
8a12abf795 Flex: Added PageCollection::all() to mimick Pages class 2020-05-08 12:53:56 +03:00
Matias Griese
62c7cfcd10 Tighten vendor requirements 2020-05-08 10:30:11 +03:00
Matias Griese
9257d6982f Merge branch 'develop' of github.com:getgrav/grav into 1.7
 Conflicts:
	composer.json
	composer.lock
2020-05-08 10:21:51 +03:00
Jesse Donat
58da1cd489 Updates donatj/phpuseragentparser to 1.0.0 2020-05-08 10:18:31 +03:00
Andy Miller
69078aaf49 Fix for uppercase image extensions 2020-05-06 11:59:15 -06:00
Matias Griese
33aa0737a4 Improve docblocks 2020-05-06 13:01:47 +03:00
Matias Griese
8b47608cc0 Split Medium classes into traits, define Media interfaces 2020-05-06 12:23:49 +03:00
Matias Griese
d25014779d Fixed some phpstan issues 2020-05-05 19:35:09 +03:00
Matias Griese
5f0380f547 Fixed unit test 2020-05-05 19:04:56 +03:00
Andy Miller
bdbd392c6e Merge branch 'develop' into 1.7 2020-04-30 17:33:57 -06:00
Andy Miller
d53a594971 updated to 1.13 2020-04-30 17:33:41 -06:00
Andy Miller
2604da4b04 Merge branch 'develop' into 1.7 2020-04-30 16:23:47 -06:00
Djamil Legato
77bc8029bb Updated reference to github-release go app 2020-04-30 15:21:48 -07:00
Andy Miller
11e4a4cad8 Updated changelog to ref HttpClient inetgration 2020-04-30 14:48:47 -06:00
Andy Miller
e37f634a38 prepare for rc release 2020-04-30 14:46:14 -06:00
Matias Griese
0a18502c2c Merge remote-tracking branch 'origin/1.7' into 1.7 2020-04-30 22:16:24 +03:00
Matias Griese
b8c81c72e4 Copying Flex Page in admin does nothing 2020-04-30 22:16:16 +03:00
Andy Miller
37c2219b87 Updated changelog 2020-04-30 12:12:58 -06:00
Andy Miller
62f6f3910a Merge branch '1.7' of github.com:getgrav/grav into 1.7 2020-04-30 12:12:03 -06:00
Andy Miller
b450e6998e Added new Excerpts::processLinkHtml() method 2020-04-30 12:11:56 -06:00
Matias Griese
10800a0896 Merge remote-tracking branch 'origin/1.7' into 1.7 2020-04-30 16:30:23 +03:00
Matias Griese
cf61525130 Fixed saving non-numeric-prefix Flex Page changing to numeric-prefix 2020-04-30 16:30:14 +03:00
Andy Miller
24db65cd90 switch to Symfony HTTPClient (#2901) 2020-04-29 15:36:51 -06:00
Matias Griese
daf7e66ec3 Missing use 2020-04-29 22:11:18 +03:00
Matias Griese
18c9a1793e Merge remote-tracking branch 'origin/1.7' into 1.7 2020-04-29 21:41:34 +03:00
Matias Griese
2b0f235e23 Fixed Grav Pages admin with PHP intl extension enabled when using custom page order 2020-04-29 21:41:25 +03:00
Andy Miller
24eca428a6 Force response % to be 0 - 100 only 2020-04-28 17:37:21 -06:00
Andy Miller
677b0b7055 prepare for rc release 2020-04-27 16:10:47 -06:00
Andy Miller
10bd72ad51 Merge branch 'develop' into 1.7
# Conflicts:
#	CHANGELOG.md
#	system/defines.php
2020-04-27 16:09:53 -06:00
Andy Miller
4ddc98b2b6 Merge branch 'release/1.6.24' 2020-04-27 16:08:40 -06:00
Andy Miller
c1f18f5ecf Merge tag '1.6.24' into develop
Release v1.6.24
2020-04-27 16:08:40 -06:00
Andy Miller
d16a88e731 prepare for release 2020-04-27 16:08:28 -06:00
A----
39d0d640e6 Support for the X-Forwarded-Host (#2891) 2020-04-27 10:38:36 -06:00
Matias Griese
bfb55f0e1d Fixed broken Plugin::config() method 2020-04-27 19:21:02 +03:00
Matias Griese
44b07712d5 Move method inside file 2020-04-24 18:21:31 +03:00
Matias Griese
c8ae9e4dcc Fixed creating new Flex User with file storage 2020-04-24 18:19:21 +03:00
Matias Griese
52d1412e4c Fixed creating new Flex User with file storage 2020-04-24 16:18:03 +03:00
Matias Griese
b820130636 Fixed Flex Pages not updating empty content on save [#2890] 2020-04-24 14:30:26 +03:00
Matias Griese
7d4ecd4272 Changelog update 2020-04-24 13:40:25 +03:00
Matias Griese
f907b589e1 Merge remote-tracking branch 'origin/1.7' into 1.7 2020-04-24 13:30:19 +03:00
Matias Griese
a9d80d73d6 Fixed Flex Pages with 00.home page not having ordering set 2020-04-24 13:30:10 +03:00
Andy Miller
fe0ad9c9c2 Added support for webp (must be defined in media.yaml) #1168 2020-04-23 12:35:05 -06:00
Matias Griese
dfa8ce1ad4 Fixed Flex Page parent header.admin.children_display_order setting being ignored in Admin [#2881] 2020-04-23 15:51:58 +03:00
Matias Griese
1ea5dad728 Implemented missing Flex $pageCollection->batch() and $pageCollection->order() methods 2020-04-23 15:51:10 +03:00
Matias Griese
a2b81c9378 Added new plugin/theme blueprint options to upgrade guide 2020-04-23 11:24:33 +03:00
Matias Griese
01b0b1602b Fixed Pages::instances() returning null values when using Flex Pages [#2889] 2020-04-23 10:41:42 +03:00
Andy Miller
7d4aef0f3b Fixed Gregwar Image library using .jpeg for cached images, rather use .jpg 2020-04-22 17:31:31 -06:00
Andy Miller
5485893c8b fix PHP 7.4 Clockwork error 2020-04-20 10:32:55 -06:00
Andy Miller
124543f4a7 minor vendor updates 2020-04-20 10:22:11 -06:00
Matias Griese
e84488e126 Support symlinks when saving File 2020-04-17 10:06:04 +03:00
Matias Griese
ed2cf5174d Improved error response creation 2020-04-08 18:56:22 +03:00
Matias Griese
d0d0a6c224 Composer update 2020-04-07 20:23:25 +03:00
Matias Griese
b04f4f0001 Added Route::getBase() method 2020-04-07 20:23:10 +03:00
Matias Griese
c822920c36 Fixed user avatar creation for new Flex Users when using folder storage 2020-04-04 18:32:36 +03:00
ricardo118
e6354236c1 Using ->menu() over ->title() for Admin Pages (#2871) 2020-03-28 15:11:35 -06:00
Matias Griese
068948e1a2 Fixed response for .json being HTML 2020-03-25 15:08:00 +02:00
Matias Griese
f8bf7ba010 Fixed flex objects with integer keys not working [#2863] 2020-03-23 10:18:51 +02:00
Andy Miller
586105907d disable XDebug for Travis builds 2020-03-19 14:56:03 -06:00
Andy Miller
abd56ffee3 disable XDebug in Travis builds 2020-03-19 14:55:19 -06:00
Andy Miller
5678b4d067 Revert "created aliases for direct \Parsedown and \ParsedownExtra references"
This reverts commit 1ce0176ab6.
2020-03-19 14:32:57 -06:00
Andy Miller
1abb940318 Merge branch 'develop' into 1.7 2020-03-19 14:31:35 -06:00
Andy Miller
15af5bfae7 Merge branch 'release/1.6.23' 2020-03-19 14:27:39 -06:00
Andy Miller
d550a016a9 Merge tag '1.6.23' into develop
Release v1.6.23
2020-03-19 14:27:39 -06:00
Andy Miller
9c8df27bf1 Updated changelog 2020-03-19 14:27:25 -06:00
Andy Miller
1ce0176ab6 created aliases for direct \Parsedown and \ParsedownExtra references 2020-03-19 14:25:08 -06:00
Andy Miller
5bc46c49d2 prepare for rc.8 release 2020-03-19 12:50:09 -06:00
Andy Miller
292d45a7db minor composer updates 2020-03-19 12:47:56 -06:00
Andy Miller
2d375954ab Merge branch '1.7' of github.com:getgrav/grav into 1.7 2020-03-19 12:46:59 -06:00
Andy Miller
7ff6d2a828 Merge branch 'develop' into 1.7
# Conflicts:
#	composer.lock
#	system/defines.php
2020-03-19 12:46:47 -06:00
Andy Miller
ccac8a93bc Merge branch 'release/1.6.23' 2020-03-19 12:46:08 -06:00
Andy Miller
bcbfa0e32a Merge tag '1.6.23' into develop
Release v1.6.23
2020-03-19 12:46:08 -06:00
Andy Miller
453cd62a51 prepare for release 2020-03-19 12:45:58 -06:00
Andy Miller
56e1cbc78e updated composer to pickup toolbox 1.4.7 2020-03-19 12:39:36 -06:00
Matias Griese
58cd77449c Composer update 2020-03-19 20:28:45 +02:00
Andy Miller
db92c7b32d Upgraded jQuery to 3.4.1 - fixes #2859 2020-03-19 11:31:10 -06:00
Matias Griese
6ba54d2b3d Better Content-Encoding handling in Apache when content compression is disabled [#2619] 2020-03-19 11:31:24 +02:00
Andy Miller
987429208c Merge branch 'develop' into 1.7
# Conflicts:
#	CHANGELOG.md
#	composer.json
#	composer.lock
2020-03-18 17:34:58 -06:00
Andy Miller
2eae104c7a Fix for user reported CVE path-based open redirect 2020-03-18 17:32:46 -06:00
Andy Miller
6f2be2a2d2 Updated changelog 2020-03-18 11:50:23 -06:00
Andy Miller
e75960fee3 php 7.4 fixes for ParsedownExtra 2020-03-18 11:44:23 -06:00
Andy Miller
ec71ccdd0d moved parsedown 1.6 and parsedown-extra 0.7 into framework for fixes 2020-03-18 11:39:08 -06:00
Matias Griese
a5d47a36f0 Implemented missing Flex $page->move() method 2020-03-18 14:54:01 +02:00
Matias Griese
866b63530a Fixed some bugs in Flex root page methods 2020-03-18 14:06:04 +02:00
Matias Griese
57feac985c Update installer recommended versions 2020-03-18 11:52:33 +02:00
Andy Miller
c72c980ad2 fixes #2847 2020-03-13 11:15:15 -06:00
Matias Griese
790d29cbfb Fixed some more flex page inconsistencies with the old pages 2020-03-09 20:33:49 +02:00
Matias Griese
b9947f6984 Fixed bad default redirect code in ControllerResponseTrait::createRedirectResponse() 2020-03-09 19:31:44 +02:00
Matias Griese
79b7c3c38f Fixed some bugs in Flex root page methods 2020-03-09 19:29:56 +02:00
Matias Griese
a9df896538 Flex Pages: added has-children to getLevelListing() response 2020-03-09 10:17:11 +02:00
Andy Miller
ad713a1342 update changelog 2020-03-06 12:35:13 -07:00
Andy Miller
b58479cba6 Merge branch '1.7' of github.com:getgrav/grav into 1.7 2020-03-06 12:34:37 -07:00
Andy Miller
107341f33f Fast check to see if a dir has child dirs 2020-03-06 12:34:33 -07:00
Matias Griese
1ed0fcb379 Fixed creating new Flex User when folder storage has been selected 2020-03-06 15:42:33 +02:00
Matias Griese
63892782b4 Save memory when updating large flex indexes 2020-03-06 15:32:22 +02:00
Matias Griese
f5a480c72e Added MediaTrait::freeMedia() method to free media (and memory) 2020-03-06 13:41:03 +02:00
Matias Griese
d80a29b34d Flex storages: added support for custom key length 2020-03-06 10:21:49 +02:00
Andy Miller
5aefc60f2e prepare for rc.7 release 2020-03-05 13:29:11 -07:00
Matias Griese
683c1fe477 Improve dynamic config field 2020-03-05 22:27:30 +02:00
Matias Griese
6b4692f6c7 Minor code refactor 2020-03-05 21:44:50 +02:00
Matias Griese
1351f11551 Added field validation for array of lines 2020-03-05 21:43:53 +02:00
Matias Griese
58280b8d3f Updated UPGRADE-1.7.md 2020-03-05 21:43:14 +02:00
Matias Griese
652ca75f40 Composer update 2020-03-05 21:41:28 +02:00
Matias Griese
4b5f1590aa Merge branch 'develop' of github.com:getgrav/grav into 1.7
 Conflicts:
	composer.json
	composer.lock
	system/defines.php
2020-03-05 21:39:59 +02:00
Andy Miller
152c987ed4 Merge branch 'release/1.6.22' 2020-03-05 10:39:00 -07:00
Andy Miller
19311c7ec1 Merge tag '1.6.22' into develop
Release v1.6.22
2020-03-05 10:39:00 -07:00
Andy Miller
eec2d122cc prepare for release 2020-03-05 10:38:50 -07:00
Andy Miller
62f39fe39c Negotiation update to fix #2513 2020-03-04 10:57:43 -07:00
Andy Miller
394fce3825 composer update 2020-03-04 10:54:32 -07:00
Matias Griese
9c6934c0aa Changelog update 2020-03-03 21:03:26 +02:00
Matias Griese
993bc5170b Fixed changing page template in Flex Pages 2020-03-03 21:00:24 +02:00
Matias Griese
d285eda4c2 Fixed reordering flex pages 2020-03-03 20:17:44 +02:00
Matias Griese
0bcbe39521 User accounts/groups: Update title by values entered to the form 2020-03-03 13:17:01 +02:00
Matias Griese
78502b2026 Fixed fatal error on storing flex flash using new object without a key 2020-03-03 13:12:25 +02:00
Matias Griese
df0c806381 Added UserObject::onPrepareRegistration() method to initialize permissions 2020-03-03 11:42:26 +02:00
Matias Griese
d089a1d9c8 Regression: Fixed unchecking toggleable having no effect in Flex forms 2020-03-02 21:02:44 +02:00
Matias Griese
e41072c448 Merge branch 'develop' of github.com:getgrav/grav into 1.7 2020-03-02 10:54:04 +02:00
Matias Griese
36d18d531c Minor fix on CLI command 2020-02-27 14:36:04 +02:00
Matias Griese
fb18412fb3 Updated CLI commands to use the new methods to initialize Grav 2020-02-27 14:14:28 +02:00
Matias Griese
9a8c2b9aa5 Add CLI notes to UPGRADE-1.7.md 2020-02-26 18:37:16 +02:00
Matias Griese
678b39a170 Tiny fix in FlexDirectory::getDirectoryBlueprint() 2020-02-25 14:04:43 +02:00
Matias Griese
d03b0d92f4 * Fixed Blueprint::extend() and Blueprint::embed() not initializing dynamic properties 2020-02-25 13:11:56 +02:00
Matias Griese
11f9ba74e8 Added configuration option system.strict_mode.blueprint_compat to maintain old validation: strict behavior [#1273] 2020-02-24 20:24:25 +02:00
Matias Griese
f4f5bffcd9 Fixed broken ordering sometimes when saving/moving visible Flex Page, ordering being lost when saving modular Flex Page 2020-02-24 14:55:39 +02:00
Matias Griese
d763f9c63e Upgrade doc: Added mention of PageInterface and UserInterface 2020-02-24 09:37:15 +02:00
Matias Griese
44acd3a969 Improved Flex events 2020-02-20 08:58:11 +02:00
Matias Griese
4d7510dc11 Fixed Flex Pages having broken isFirst(), isLast(), prevSibling(), nextSibling() and adjacentSibling() 2020-02-19 12:58:23 +02:00
Matias Griese
f4a3efc3bc Update UPGRADE-1.7.md file 2020-02-19 11:20:33 +02:00
Rotzbua
40bc980084 [travis] add php 7.4 to test 2020-02-19 10:46:49 +02:00
Matias Griese
cf62d1dfa2 Update UPGRADE-1.7.md file 2020-02-18 13:19:54 +02:00
Matias Griese
378e59563d Merge branch 'develop' of github.com:getgrav/grav into 1.7
 Conflicts:
	system/src/Grav/Common/Data/BlueprintSchema.php
	tests/unit/Grav/Common/Data/BlueprintTest.php
	tests/unit/data/blueprints/strict.yaml
2020-02-18 13:15:03 +02:00
Matias Griese
1196e06dd6 Reverted validation: strict fix as it breaks sites, see [#1273] 2020-02-18 13:14:09 +02:00
Matias Griese
028bbf08c6 Grav 1.7 edition: Fixed validation: strict not working in blueprints [#1273] 2020-02-18 13:09:14 +02:00
Matias Griese
1d6a474b31 Added Session::regenerateId() method to properly prevent session fixation issues 2020-02-18 12:26:45 +02:00
Matias Griese
79e68eb5df Composer update 2020-02-17 15:17:12 +02:00
Matias Griese
13a1c7cfee Merge remote-tracking branch 'origin/1.7' into 1.7 2020-02-17 14:04:39 +02:00
Matias Griese
a3812141dd Fixed issues reported in phpstan 2020-02-17 14:04:31 +02:00
Andy Miller
5833f1e2da missing lang object 2020-02-14 15:21:32 -07:00
Andy Miller
88311f21cf Merge branch 'develop' into 1.7
# Conflicts:
#	system/src/Grav/Common/Page/Pages.php
2020-02-14 14:31:31 -07:00
Andy Miller
64b33d60f4 updated changelog 2020-02-14 08:36:04 -07:00
Andy Miller
8ccbcf0488 set baseRoute with activelang if available 2020-02-14 08:14:57 -07:00
Matias Griese
4fb485d1dd Merge branch 'develop' of github.com:getgrav/grav into 1.7
 Conflicts:
	CHANGELOG.md
2020-02-14 14:47:56 +02:00
Matias Griese
244c34a536 Page::getCacheKey() method should be public 2020-02-14 13:55:31 +02:00
Matias Griese
52a704e53d Fixed issue with search plugins not being able to switch between page translations 2020-02-14 13:55:06 +02:00
Andy Miller
5852ca4179 Better support for bin/grav server 2020-02-12 18:27:30 -07:00
Andy Miller
04820b8adc prepare for rc.6 release 2020-02-11 17:31:09 -07:00
Andy Miller
5be92b7a8a Merge branch 'develop' into 1.7
# Conflicts:
#	system/defines.php
2020-02-11 17:28:52 -07:00
Andy Miller
addecbbb22 Merge branch 'release/1.6.21' 2020-02-11 17:17:29 -07:00
Andy Miller
ec8bf9357a Merge tag '1.6.21' into develop
Release v1.6.21
2020-02-11 17:17:29 -07:00
Andy Miller
432b4b1e68 prepare for release 2020-02-11 17:17:20 -07:00
Andy Miller
ea5935b1d1 vendor updates 2020-02-11 17:15:07 -07:00
Andy Miller
65db6ea26c prepare for rc.6 release 2020-02-11 17:14:14 -07:00
Andy Miller
a77b5e69e7 updated vendors 2020-02-11 17:14:04 -07:00
Andy Miller
c9da739ea3 Merge branch 'develop' into 1.7
# Conflicts:
#	system/src/Grav/Common/Service/PagesServiceProvider.php
2020-02-11 17:10:48 -07:00
Andy Miller
fa3c9095c7 caught silly bug that broke routing 2020-02-11 17:09:54 -07:00
Matias Griese
9e4ee6ec91 Merge branch 'develop' of github.com:getgrav/grav into 1.7
 Conflicts:
	system/src/Grav/Common/Service/PagesServiceProvider.php
2020-02-11 20:53:48 +02:00
Matias Griese
95442ef0b5 Fixed page initialization in CLI 2020-02-11 20:53:02 +02:00
Matias Griese
1f92ec715a Merge branch 'develop' of github.com:getgrav/grav into 1.7 2020-02-11 20:28:22 +02:00
Matias Griese
f81503dd70 Fixed page initialization in CLI 2020-02-11 20:27:57 +02:00
Matias Griese
0642e34a77 Post-merge fixes 2020-02-11 19:45:56 +02:00
Matias Griese
4e8e3e1865 Merge branch 'develop' of github.com:getgrav/grav into 1.7
 Conflicts:
	system/src/Grav/Common/Processors/InitializeProcessor.php
2020-02-11 19:43:15 +02:00
Matias Griese
48170d2fa0 Fixed bin/plugin CLI calling $themes->init() way too early
Added `ConsoleCommand::setLanguage()` method to set language to be used from CLI
Added `ConsoleCommand::initializeGrav()` method to properly set up Grav instance to be used from CLI
Added `ConsoleCommand::initializePlugins()`method to properly set up all plugins to be used from CLI
Added `ConsoleCommand::initializeThemes()`method to properly set up current theme to be used from CLI
Added `ConsoleCommand::initializePages()` method to properly set up pages to be used from CLI
2020-02-11 19:41:28 +02:00
Matias Griese
8936e82e9b More bin/plugin improvements 2020-02-11 18:39:46 +02:00
Matias Griese
e0162d276d Improve Grav initialization 2020-02-11 14:55:05 +02:00
Matias Griese
14ff7fae33 CLI: Added $grav->initializeCli() method 2020-02-11 14:20:46 +02:00
Matias Griese
2c78b3efca Fixed Flex Page cache key not taking account active language 2020-02-11 12:09:27 +02:00
Matias Griese
5104bde6d4 Changelog update 2020-02-11 10:29:22 +02:00
Matias Griese
59f05ec8a2 Fixed bin/plugin initialization 2020-02-11 10:24:06 +02:00
Andy Miller
20047fbdaf Helpful stuff for bin/grav server 2020-02-10 14:16:44 -07:00
Matias Griese
81dd33c2e9 Fixed custom Flex directories in grav/plugin commands 2020-02-10 21:58:33 +02:00
Matias Griese
1cf390206e Regression: Fixed fatal error in cli/plugin command 2020-02-10 19:51:59 +02:00
Matias Griese
8169a6f3f8 Fixed regression in Grav 1.7 (#2154) 2020-02-10 17:43:40 +02:00
Matias Griese
2165ded8d4 Merge branch 'develop' of github.com:getgrav/grav into 1.7
 Conflicts:
	system/src/Grav/Common/Page/Page.php
2020-02-10 17:42:21 +02:00
Matias Griese
ef80e28d1d Fixed regression (#2154) 2020-02-10 17:41:13 +02:00
Matias Griese
234abb38d9 Fixed FlexObject::triggerEvent() does not emit events [#2816] 2020-02-10 14:48:18 +02:00
Matias Griese
3a722ba44e Fixed encoding problems when PHP INI setting default_charset is not utf-8 (Grav 1.7 edition) [#2154] 2020-02-10 10:19:11 +02:00
Matias Griese
3f56c5a727 Merge branch 'develop' of github.com:getgrav/grav into 1.7
 Conflicts:
	CHANGELOG.md
	system/src/Grav/Common/Page/Page.php
2020-02-10 10:14:55 +02:00
Matias Griese
e55b239536 Fixed encoding problems when PHP INI setting default_charset is not utf-8 [#2154] 2020-02-10 09:50:39 +02:00
Andreas Amos
c2f374f0db Truncator: encoding problems solves #2154
As I am not a developer somebody should review the change.
2020-02-10 09:28:13 +02:00
Florian Schlittenbauer
29c6a70611 [BUGFIX] .editorconfig not picking up .yml files (#2808) 2020-02-08 13:47:17 -07:00
Matias Griese
0bbbe96ae0 Regression: Fixed flex user index with folder storage 2020-02-07 12:27:02 +02:00
Matias Griese
40010f7ff7 Fixed deprecated debugbar method 2020-02-07 12:26:11 +02:00
Matias Griese
49aae0c50e Clockwork update 2020-02-07 12:25:38 +02:00
Matias Griese
5ea7ec1013 Flex Directory: Implemented customizable configuration 2020-02-06 16:53:54 +02:00
Matias Griese
75ee0670f6 Fixed saving Flex configuration with ignored values becoming null 2020-02-06 16:52:52 +02:00
Matias Griese
6e327880a3 Flex Storages: Added support for renaming directory entries 2020-02-06 11:54:28 +02:00
Matias Griese
ceaa20d5d4 Flex SimpleStorage: added support for prefix (keeps items under nested array) 2020-02-06 11:52:51 +02:00
Matias Griese
10589e7940 Flex SimpleStorage: added support for prefix (keeps items under nested array) 2020-02-06 10:34:39 +02:00
Matias Griese
5e9a7a112a Plugins & Themes: Call $plugin->autoload() and $theme->autoload() automatically when object gets initialized 2020-02-04 18:41:24 +02:00
Matias Griese
a672a765b4 Remove deprecated RocketTheme\Toolbox\Event\EventSubscriberInterface from Plugin, Themes 2020-02-04 17:58:58 +02:00
Matias Griese
4794097992 Phpstan rules update 2020-02-04 14:24:41 +02:00
Matias Griese
f012d2d13a Regression: Fixed bad method call in FlexDirectory::getAuthorizeRule() 2020-02-04 10:59:26 +02:00
Matias Griese
d0a22ad416 Regression: fatal error in blueprints [#2811] 2020-02-04 10:50:59 +02:00
Andy Miller
6dee662b40 prepare for rc.5 release 2020-02-03 12:36:15 -07:00
Matias Griese
1d8b87e33f Fixed Flex Pages allowing root page to be deleted 2020-02-03 21:16:38 +02:00
Matias Griese
5db91538c6 Changelog update (version) 2020-02-03 20:53:50 +02:00
Matias Griese
7d6fb9eee6 Changelog update 2020-02-03 20:51:57 +02:00
Matias Griese
694b14511d Save user: clear flex cache even if not using flex 2020-02-03 20:47:59 +02:00
Matias Griese
bbab97137f Fixed accidental PHP 7.3 constant 2020-02-03 20:39:43 +02:00
Andy Miller
3408db0c9b typo in changelog date 2020-02-03 10:14:53 -07:00
Andy Miller
1bbf8dffeb prepare for rc.4 release 2020-02-03 10:10:26 -07:00
Andy Miller
887b34dd31 Use toolbox ~1.5 2020-02-03 10:09:22 -07:00
Andy Miller
0f5166d690 Merge branch 'develop' into 1.7
# Conflicts:
#	system/defines.php
2020-02-03 10:06:02 -07:00
Andy Miller
e507300134 Merge branch 'release/1.6.20' 2020-02-03 10:04:38 -07:00
Andy Miller
e38c5cac4a Merge tag '1.6.20' into develop
Release v1.6.20
2020-02-03 10:04:38 -07:00
Andy Miller
463a55897c prepare for release 2020-02-03 10:04:26 -07:00
Andy Miller
192cc4eb9b minor symfony updates 2020-02-03 10:00:40 -07:00
Matias Griese
e5fe28b720 Added support for legacy access settings from admin 2020-02-03 13:20:33 +02:00
Matias Griese
defc70e656 Fixed some admin related ACL issues 2020-02-03 12:53:41 +02:00
Matias Griese
d589dbcbea Fix phpstan issues 2020-02-03 11:19:22 +02:00
Matias Griese
3ed8620d7a Remove publish from CRUD for now 2020-01-31 22:03:05 +02:00
Matias Griese
bc5501eecb Moved PluginsLoadedEvent into Plugins::init() call for better backwards compatibility 2020-01-31 12:23:27 +02:00
Matias Griese
2ae6bac390 Fixed loading group permissions if saved in CRUD mode 2020-01-31 11:55:18 +02:00
Matias Griese
118621cb8b Finish root page blueprints 2020-01-31 00:10:22 +02:00
Matias Griese
3118ed5f56 Added support for security@: or: [admin.super, admin.pages] in blueprints (nested AND/OR mode support) 2020-01-31 00:09:58 +02:00
Matias Griese
ac17fc8efd Minor code cleanup 2020-01-30 23:32:17 +02:00
Matias Griese
85c1ec67c2 Fixed filtering ignored (eg. security@: admin.super) fields and Flex Objects losing data on save 2020-01-30 23:31:32 +02:00
Matias Griese
959a2ec379 Clockwork fixes (beta) 2020-01-30 19:23:40 +02:00
Matias Griese
1372c9b1cc Renamed flex types for simplicity 2020-01-30 11:11:55 +02:00
Matias Griese
67dd5f256d Fixed unit test for parsedown link &amp; 2020-01-30 09:15:26 +02:00
Matias Griese
2c3ced3fba Merge branch 'develop' of github.com:getgrav/grav into 1.7 2020-01-30 09:11:53 +02:00
Matias Griese
a592f6fe0b Fixed unit test for Uri::currentPage(): it only returns integers now 2020-01-30 09:11:19 +02:00
Matias Griese
9123cb7796 Flex Pages: Allow only users with admin.configuration.pages to access page permissions 2020-01-29 22:39:53 +02:00
Matias Griese
df09c01a25 Minor improvement on please install flex admin pages 2020-01-29 20:28:37 +02:00
Matias Griese
b97301d82d Merge branch 'develop' of github.com:getgrav/grav into 1.7 2020-01-29 19:35:06 +02:00
Matias Griese
6b887a98cd Fixed site.metadata saving issues [#2615] 2020-01-29 18:55:44 +02:00
Matias Griese
18a26b42e2 Fixed Assets::addInlineJs() parameter type mismatch between v1.5 and v1.6 [#2659] 2020-01-29 18:40:58 +02:00
Matias Griese
85de4ed0e3 Fixed regression (odd use case) 2020-01-29 15:08:58 +02:00
Matias Griese
80125ce298 Fixed system.translations: false breaking Inflector methods 2020-01-29 14:58:50 +02:00
Matias Griese
27542d4fa4 Merge branch 'develop' of github.com:getgrav/grav into 1.7
 Conflicts:
	composer.json
	composer.lock
2020-01-29 13:24:04 +02:00
Matias Griese
a47e446b60 Composer update (and lock rockettheme/toolbox to 1.4.x) 2020-01-29 13:23:28 +02:00
Matias Griese
471fb4da6f Changelog update 2020-01-29 11:50:45 +02:00
Matias Griese
a2a6888982 Merge branch 'develop' of github.com:getgrav/grav into 1.7
 Conflicts:
	system/src/Grav/Common/Data/Data.php
2020-01-29 11:49:57 +02:00
Matias Griese
864a938f8d Fixed Data::filter() removing empty fields (such as empty list) by default [#2805] 2020-01-29 11:48:59 +02:00
Matias Griese
bdd30238bf Fixed fatal error with non-integer page param value, Grav 1.7 [#2803] 2020-01-29 11:35:19 +02:00
Matias Griese
528ce7131e Merge branch 'develop' of github.com:getgrav/grav into 1.7
 Conflicts:
	system/src/Grav/Common/Page/Page.php
2020-01-29 11:34:13 +02:00
Matias Griese
53bd1641bb Fixed fatal error with non-integer page param value [#2803] 2020-01-29 11:32:40 +02:00
Matias Griese
b10725cebc Fixed misleading 'Show sensitive data' configuration option wording 2020-01-29 11:18:14 +02:00
Djamil Legato
719cc5466a Removed validation for permissions groups 2020-01-28 17:10:55 -08:00
Djamil Legato
e373cf18e0 Fixed groups field 2020-01-28 15:17:40 -08:00
Matias Griese
7ef5fa5630 Validation: added new filter option for array keys 2020-01-28 22:23:49 +02:00
Matias Griese
d139b0388a Fixed bad result on testing isPage() when using Flex Pages 2020-01-28 20:57:54 +02:00
Matias Griese
014ab5d7ee Fixed PageStorage with multiple page locations 2020-01-28 14:49:34 +02:00
Matias Griese
64f3949967 Fixed Route instance in multi-site setups 2020-01-28 14:49:02 +02:00
Matias Griese
7913edd34b Improve Acl\Actions 2020-01-28 12:34:10 +02:00
Djamil Legato
2136dc34fe fixed new permissions field title/desc 2020-01-27 13:05:36 -08:00
Matias Griese
c559b42151 User/group authorize is session based 2020-01-27 19:59:54 +02:00
Matias Griese
a33d974c74 Changelog update 2020-01-27 15:44:05 +02:00
Matias Griese
ede7af6b9d Flex: Control authorization from the directory 2020-01-27 15:35:07 +02:00
Matias Griese
5cd4bf5c98 Flex: Fixed event firing too early 2020-01-27 14:24:48 +02:00
Matias Griese
045fae9b6f Flex: Blueprint updates 2020-01-27 14:03:56 +02:00
Matias Griese
bbd46644e0 Added flatten_array filter to form field validation 2020-01-24 22:10:48 +02:00
Matias Griese
3e67c0a878 Fixed Cannot use a scalar value as an array error in Utils::arrayUnflattenDotNotation(), ignore nested structure instead 2020-01-24 22:08:53 +02:00
Matias Griese
924f01158d Composer update 2020-01-23 22:29:14 +02:00
Djamil Legato
8d5dd60fb4 Added multi data_type for acl_picker (previously page_access). added dummy group2 for development 2020-01-22 14:26:39 -08:00
Djamil Legato
958ea586ec Removed old permissions reference 2020-01-22 12:46:30 -08:00
Matias Griese
5f6cc58186 Merge remote-tracking branch 'origin/1.7' into 1.7 2020-01-22 10:26:44 +02:00
Matias Griese
426f59e41a Added support for Flex Directory specific configuration 2020-01-22 10:26:34 +02:00
Matias Griese
fff9fa0ca5 Added Blueprint::getDefaultValue() method 2020-01-22 10:13:40 +02:00
Andy Miller
57aced69cf vendor updates 2020-01-21 17:30:34 -07:00
Matias Griese
afac6baa11 Twig url() takes now third parameter (true) to return URL on non-existing file instead of returning false 2020-01-21 22:35:02 +02:00
Matias Griese
b4630aeb38 Fixed Blueprint::filter() returning null instead of array if there is nothing to return 2020-01-21 21:38:36 +02:00
Matias Griese
cac02663e6 Fixed twig url() failing if stream has extra slash in it (e.g. user:///data) 2020-01-21 21:33:32 +02:00
Matias Griese
e59f1e5a82 Improve FlexFormFlash 2020-01-21 11:24:42 +02:00
Matias Griese
90d077d7c2 Start using $grav['flex'] 2020-01-21 10:09:48 +02:00
Matias Griese
a77d6bcfa0 Event improvements 2020-01-21 10:08:02 +02:00
Matias Griese
bee5abfbf0 Added $grav['flex'] to access all registered Flex Directories 2020-01-21 10:06:58 +02:00
Matias Griese
664447a67b Added Flex cache configuration options 2020-01-21 10:02:29 +02:00
Vladimir Tikunov
b850443090 Updated the parameter type in getCleanedHTML (#2793)
Co-authored-by: Andy Miller <1084697+rhukster@users.noreply.github.com>
2020-01-17 12:11:39 -07:00
Matias Griese
98d0c760a9 Flex types configure: use default values from the plugin config 2020-01-17 15:26:18 +02:00
Matias Griese
76bb7fe4af Added support for loading flex type configuration 2020-01-17 15:07:57 +02:00
Matias Griese
26584b9909 Update Flex type blueprints 2020-01-17 00:50:05 +02:00
Matias Griese
6a9724dd3e Fixed Data::filter() removing empty fields (such as empty list) by default 2020-01-16 20:56:13 +02:00
Matias Griese
c7a41ddfda Use spaceship operator in user sort functions 2020-01-16 19:22:24 +02:00
Matias Griese
2df05dd16d Set permissions for all flex types 2020-01-16 15:18:42 +02:00
Matias Griese
50c2c55554 Added Plugin::__debugInfo() and Plugins::__debugInfo() 2020-01-16 14:51:55 +02:00
Matias Griese
d72b99c5b2 Added PluginsLoadedEvent which triggers after plugins have been loaded but not yet initialized 2020-01-16 14:48:16 +02:00
Matias Griese
5adadfdb40 Added SessionStartEvent which triggers when session is started 2020-01-16 14:44:52 +02:00
Matias Griese
7574195ca2 Added support for custom permissions in configuration 2020-01-15 20:04:08 +02:00
Matias Griese
5b5ef98495 Implemented Permissions::hasAction() method 2020-01-15 16:10:36 +02:00
Matias Griese
226e5350b7 Improve handling user account type changes 2020-01-15 14:30:44 +02:00
Matias Griese
b9b83c3b16 Rename Flex Accounts to Flex User Accounts 2020-01-15 14:04:45 +02:00
Matias Griese
971fb2b19a Grav 1.7: Require Flex-Objects Plugin to edit Flex Accounts 2020-01-15 13:07:26 +02:00
Matias Griese
378b60783c Grav 1.7: Fixed Flex Pages unserialize issues if Flex-Objects Plugin has not been installed 2020-01-15 11:55:40 +02:00
Matias Griese
d901558481 Flex Pages: Added methods to track acl inheritance 2020-01-14 20:58:40 +02:00
Matias Griese
1515ee9193 Access: Added inheritance 2020-01-14 20:57:25 +02:00
Matias Griese
9c34471800 Composer update 2020-01-14 18:49:44 +02:00
Matias Griese
6f16f6f134 Merge branch 'develop' of github.com:getgrav/grav into 1.7 2020-01-14 17:54:46 +02:00
Matias Griese
7c0dcd6808 Fixed special case [#1273] 2020-01-14 17:54:19 +02:00
Matias Griese
33790dbb33 Merge branch 'develop' of github.com:getgrav/grav into 1.7
 Conflicts:
	system/src/Grav/Common/Data/BlueprintSchema.php
	system/src/Grav/Common/Data/Validation.php
	system/src/Grav/Framework/Session/Session.php
2020-01-14 15:11:50 +02:00
Matias Griese
ea8b7b7a3a Oops, changelog update [#1273] 2020-01-14 14:48:02 +02:00
Matias Griese
8714aa9202 Fixed validation: strict not working in blueprints [#1273] 2020-01-14 14:46:19 +02:00
Matias Griese
3731d61b78 Fixed checkbox field not being saved, requires also Form v4.0.2 [#1225] 2020-01-14 11:40:39 +02:00
Matias Griese
927e99fcb3 Minor flex blueprint update 2020-01-14 11:35:35 +02:00
Djamil Legato
ef6ec100f2 Added custom field page_access for new access selector 2020-01-10 15:17:36 -08:00
Matias Griese
386a39e274 Fixed Permissions::getAccess() when there's no ACL to be passed 2020-01-10 20:53:38 +02:00
Matias Griese
38d3b5cf43 Added support for more advanced ACL 2020-01-10 20:25:27 +02:00
Matias Griese
5718299210 Added $grav->dispatchEvent() method for PSR-14 events 2020-01-10 20:23:39 +02:00
Matias Griese
2e64d560b1 Fixed twig {{ false|string }} to return '0' instead of '' 2020-01-10 13:18:14 +02:00
Djamil Legato
82270e0c13 Initial custom field based off of permissions field 2020-01-09 17:04:28 -08:00
Matias Griese
ca22b56148 Rework security tab for pages 2020-01-08 20:25:57 +02:00
Matias Griese
eca3896bfc Improve array of bools filtering 2020-01-08 16:03:26 +02:00
Matias Griese
1c2c38545a Minor improvement against latest admin (user/group permissions) 2020-01-08 15:43:36 +02:00
Matias Griese
464e1fc6c7 Added flex page permissions to the blueprints (for admin) 2020-01-08 15:37:30 +02:00
Matias Griese
02b8499b0c Blueprint validation: Added validate: value_type: bool|int|float|string|trim to array to filter all the values inside the array 2020-01-08 15:34:20 +02:00
thex
490662152a added twig extension for preg_match and preg_split 2020-01-08 12:19:22 +01:00
Matias Griese
b5caa41386 Fixed ignore_empty: true not removing empty values in blueprint filtering 2020-01-08 12:33:05 +02:00
Matias Griese
a8ff0e3892 Fixed new Flex Users being stored with wrong filename, login issues [#2785] 2020-01-08 10:07:20 +02:00
Andy Miller
ebab884441 updated changelog 2020-01-07 12:05:43 -07:00
Andy Miller
2c95992eb1 Updated vendor 2020-01-06 17:10:16 -07:00
Matias Griese
1666774a1e Composer update 2020-01-06 17:20:04 +02:00
Matias Griese
3cc0dc08db Fixed PHP 7.4 compatibility issue with Stream 2020-01-06 15:05:48 +02:00
Matias Griese
f9bcf48700 Fixed blueprint loading issues [#2782] 2020-01-06 13:43:06 +02:00
Matias Griese
7b5d6f7031 Fixed session not restarting if user was invalid (downgrading from Grav 1.7) 2019-12-13 13:13:52 +02:00
661 changed files with 55925 additions and 16850 deletions

View File

@@ -7,11 +7,11 @@ root = true
[*]
charset = utf-8
end_of_line = lf
trim_trailing_whitespace = true
insert_final_newline = true
indent_style = space
indent_size = 4
trim_trailing_whitespace = true
# 2 space indentation
[*.{yaml,.yml}]
[*.{yaml,yml,vue,js,css}]
indent_size = 2

81
.github/workflows/build.yaml vendored Normal file
View File

@@ -0,0 +1,81 @@
name: Release Builds
on:
release:
types: [published]
permissions: {}
jobs:
build:
permissions:
contents: write # for release creation (svenstaro/upload-release-action)
if: "!github.event.release.prerelease"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
ref: ${{ github.ref }}
- name: Extract Tag
run: echo "PACKAGE_VERSION=${{ github.ref }}" >> $GITHUB_ENV
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: 7.3
extensions: opcache, gd
tools: composer:v2
coverage: none
env:
COMPOSER_TOKEN: ${{ secrets.GLOBAL_TOKEN }}
- name: Install Dependencies
run: |
sudo apt-get -y update -qq < /dev/null > /dev/null
sudo apt-get -y install -qq git zip < /dev/null > /dev/null
- name: Retrieval of Builder Scripts
run: |
# Real Grav URL
curl --silent -H "Authorization: token ${{ secrets.GLOBAL_TOKEN }}" -H "Accept: application/vnd.github.v3.raw" ${{ secrets.BUILD_SCRIPT_URL }} --output build-grav.sh
# Development Local URL
# curl ${{ secrets.BUILD_SCRIPT_URL }} --output build-grav.sh
- name: Grav Builder
run: |
bash ./build-grav.sh
- name: Upload packages to release
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
tag: ${{ env.PACKAGE_VERSION }}
file: ./grav-dist/*.zip
overwrite: true
file_glob: true
slack:
permissions:
actions: read # to list jobs for workflow run (technote-space/workflow-conclusion-action)
name: Slack
needs: build
runs-on: ubuntu-latest
if: always()
steps:
- uses: technote-space/workflow-conclusion-action@v2
- uses: 8398a7/action-slack@v3
with:
status: failure
fields: repo,message,author,action
icon_emoji: ':octocat:'
author_name: 'Github Action Build'
text: '🚚 Automated Build Failure'
env:
GITHUB_TOKEN: ${{ secrets.GLOBAL_TOKEN }}
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
if: env.WORKFLOW_CONCLUSION == 'failure'

68
.github/workflows/tests.yaml vendored Normal file
View File

@@ -0,0 +1,68 @@
name: PHP Tests
on:
push:
branches: [ develop ]
pull_request:
branches: [ develop ]
permissions:
contents: read # to fetch code (actions/checkout)
jobs:
unit-tests:
strategy:
matrix:
php: ['8.3', '8.2', '8.1', '8.0', '7.4', '7.3']
os: [ubuntu-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- name: Setup PHP ${{ matrix.php }}
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php }}
extensions: opcache, gd
tools: composer:v2
coverage: none
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Get composer cache directory
id: composer-cache
run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
- name: Cache dependencies
uses: actions/cache@v4
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
restore-keys: ${{ runner.os }}-composer-
- name: Install dependencies
run: composer install --prefer-dist --no-progress
- name: Run test suite
run: vendor/bin/codecept run
# slack:
# name: Slack
# needs: unit-tests
# runs-on: ubuntu-latest
# if: always()
# steps:
# - uses: technote-space/workflow-conclusion-action@v2
# - uses: 8398a7/action-slack@v3
# with:
# status: failure
# fields: repo,message,author,action
# icon_emoji: ':octocat:'
# author_name: 'Github Action Tests'
# text: '💥 Automated Test Failure'
# env:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
# if: env.WORKFLOW_CONCLUSION == 'failure'

48
.github/workflows/trigger-skeletons.yml vendored Normal file
View File

@@ -0,0 +1,48 @@
name: Trigger Skeletons Build
on:
workflow_dispatch:
inputs:
version:
description: 'Which Grav release to use'
required: true
default: 'latest'
admin:
description: 'Create also a package with Admin'
required: true
default: true
permissions:
contents: read # to fetch code (actions/checkout)
jobs:
build:
runs-on: ubuntu-latest
env:
WORKFLOW: "build-skeleton.yml"
AUTH: ":${{secrets.GLOBAL_TOKEN}}"
steps:
- uses: actions/checkout@v2
- name: Make it rain ☔️
run: |
SKELETONS=`curl -s "${{secrets.SKELETONS_JSON_LIST}}"`
echo "$SKELETONS" | jq -cr '.[]' | while read SKELETON; do
KEY=$(echo "$SKELETON" | jq -cr 'keys[0]')
VERSION=$(echo "$SKELETON" | jq -cr '.[]')
URL="https://api.github.com/repos/${KEY}/actions/workflows/${WORKFLOW}/dispatches"
curl -X POST \
-u "${AUTH}" \
-H "Accept: application/vnd.github.everest-preview+json" \
-H "Content-Type: application/json" \
-sS \
${URL} \
--data '{ "ref": "develop",
"inputs": {
"tag": "'"$VERSION"'",
"version": "'"$INPUT_VERSION"'",
"admin": "'"$INPUT_ADMIN"'"
}
}' > /dev/null
echo "Dispatched Worfklow for ${KEY}@$VERSION"
done

12
.gitignore vendored
View File

@@ -25,8 +25,11 @@ user/plugins/*
!user/plugins/.*
user/themes/*
!user/themes/.*
user/localhost/config/security.yaml
user/config/security.yaml
user/**/config/security.yaml
# Environments
.env
.gravenv
# OS Generated
.DS_Store*
@@ -44,3 +47,8 @@ tests/_support/_generated/*
tests/cache/*
tests/error.log
system/templates/testing/*
/user/config/versions.yaml
/system/recovery.window
tmp/*
#needs_fixing.txt
/AGENTS.md

View File

@@ -27,6 +27,9 @@ RewriteEngine On
# If you experience problems on your site block out the operations listed below
# This attempts to block the most common type of exploit `attempts` to Grav
#
# Block out any script trying to use twig tags in URL.
RewriteCond %{REQUEST_URI} ({{|}}|{%|%}) [OR]
RewriteCond %{QUERY_STRING} ({{|}}|{%25|%25}) [OR]
# Block out any script trying to base64_encode data within the URL.
RewriteCond %{QUERY_STRING} base64_encode[^(]*\([^)]*\) [OR]
# Block out any script that includes a <script> tag in URL.
@@ -56,9 +59,9 @@ RewriteRule .* index.php [L]
# Block all direct access for these folders
RewriteRule ^(\.git|cache|bin|logs|backup|webserver-configs|tests)/(.*) error [F]
# Block access to specific file types for these system folders
RewriteRule ^(system|vendor)/(.*)\.(txt|xml|md|html|yaml|yml|php|pl|py|cgi|twig|sh|bat)$ error [F]
RewriteRule ^(system|vendor)/(.*)\.(txt|xml|md|html|json|yaml|yml|php|pl|py|cgi|twig|sh|bat)$ error [F]
# Block access to specific file types for these user folders
RewriteRule ^(user)/(.*)\.(txt|md|yaml|yml|php|pl|py|cgi|twig|sh|bat)$ error [F]
RewriteRule ^(user)/(.*)\.(txt|md|json|yaml|yml|php|pl|py|cgi|twig|sh|bat)$ error [F]
# Block all direct access to .md files:
RewriteRule \.md$ error [F]
# Block all direct access to files and folders beginning with a dot

View File

@@ -3,10 +3,9 @@ php:
- '7.1'
- '7.2'
- '7.3'
- '7.4'
branches:
only:
- develop
- master
- build_test
notifications:
email:
@@ -45,10 +44,11 @@ before_install:
- if [ $TRAVIS_BRANCH == 'develop' ] || [ $TRAVIS_PULL_REQUEST != 'false' ]; then
composer install --dev --prefer-dist;
fi
- if [ $TRAVIS_BRANCH != 'develop' ] && [ $TRAVIS_PHP_VERSION == "7.1" ] && [ $TRAVIS_PULL_REQUEST == "false" ]; then
export TRAVIS_TAG=$(curl --fail --user "${GH_API_USER}" -s https://api.github.com/repos/getgrav/grav/releases/latest | grep tag_name | head -n 1 | cut -d '"' -f 4);
eval "$(curl -sL https://raw.githubusercontent.com/travis-ci/gimme/master/gimme | GIMME_GO_VERSION=1.8 bash)";
go get github.com/aktau/github-release;
- |
if [ $TRAVIS_BRANCH != 'develop' ] && [ $TRAVIS_PHP_VERSION == "7.1" ] && [ $TRAVIS_PULL_REQUEST == "false" ]; then
export TRAVIS_TAG=$(curl -H "Authorization: token ${GH_TOKEN}" --fail -s https://api.github.com/repos/getgrav/grav/releases/latest | grep tag_name | head -n 1 | cut -d '"' -f 4);
eval "$(curl -sL https://raw.githubusercontent.com/travis-ci/gimme/master/gimme | GIMME_GO_VERSION=1.13 bash)";
go get github.com/github-release/github-release;
git clone --quiet --depth=50 --branch=master https://${BB_TOKEN}bitbucket.org/rockettheme/grav-devtools.git $RT_DEVTOOLS &>/dev/null;
if [ ! -z "$TRAVIS_TAG" ]; then
cd ${RT_DEVTOOLS};
@@ -56,7 +56,7 @@ before_install:
fi;
fi
before_script:
- if [ $TRAVIS_PHP_VERSION != 'hhvm' ]; then phpenv config-rm xdebug.ini; fi
- phpenv config-rm xdebug.ini
script:
- if [ $TRAVIS_BRANCH == 'develop' ] || [ $TRAVIS_PULL_REQUEST != 'false' ]; then
vendor/bin/codecept run;

File diff suppressed because it is too large Load Diff

View File

@@ -1,46 +1,133 @@
# Contributor Covenant Code of Conduct
## Our Pledge
In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.
We as members, contributors, and leaders pledge to make participation in our
community a harassment-free experience for everyone, regardless of age, body
size, visible or invisible disability, ethnicity, sex characteristics, gender
identity and expression, level of experience, education, socio-economic status,
nationality, personal appearance, race, religion, or sexual identity
and orientation.
We pledge to act and interact in ways that contribute to an open, welcoming,
diverse, inclusive, and healthy community.
## Our Standards
Examples of behavior that contributes to creating a positive environment include:
Examples of behavior that contributes to a positive environment for our
community include:
* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Showing empathy towards other community members
* Demonstrating empathy and kindness toward other people
* Being respectful of differing opinions, viewpoints, and experiences
* Giving and gracefully accepting constructive feedback
* Accepting responsibility and apologizing to those affected by our mistakes,
and learning from the experience
* Focusing on what is best not just for us as individuals, but for the
overall community
Examples of unacceptable behavior by participants include:
Examples of unacceptable behavior include:
* The use of sexualized language or imagery and unwelcome sexual attention or advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* The use of sexualized language or imagery, and sexual attention or
advances of any kind
* Trolling, insulting or derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or electronic address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a professional setting
* Publishing others' private information, such as a physical or email
address, without their explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting
## Our Responsibilities
## Enforcement Responsibilities
Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.
Community leaders are responsible for clarifying and enforcing our standards of
acceptable behavior and will take appropriate and fair corrective action in
response to any behavior that they deem inappropriate, threatening, offensive,
or harmful.
Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.
Community leaders have the right and responsibility to remove, edit, or reject
comments, commits, code, wiki edits, issues, and other contributions that are
not aligned to this Code of Conduct, and will communicate reasons for moderation
decisions when appropriate.
## Scope
This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.
This Code of Conduct applies within all community spaces, and also applies when
an individual is officially representing the community in public spaces.
Examples of representing our community include using an official e-mail address,
posting via an official social media account, or acting as an appointed
representative at an online or offline event.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at contact@getgrav.org. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported to the community leaders responsible for enforcement at
[INSERT CONTACT METHOD].
All complaints will be reviewed and investigated promptly and fairly.
Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.
All community leaders are obligated to respect the privacy and security of the
reporter of any incident.
## Enforcement Guidelines
Community leaders will follow these Community Impact Guidelines in determining
the consequences for any action they deem in violation of this Code of Conduct:
### 1. Correction
**Community Impact**: Use of inappropriate language or other behavior deemed
unprofessional or unwelcome in the community.
**Consequence**: A private, written warning from community leaders, providing
clarity around the nature of the violation and an explanation of why the
behavior was inappropriate. A public apology may be requested.
### 2. Warning
**Community Impact**: A violation through a single incident or series
of actions.
**Consequence**: A warning with consequences for continued behavior. No
interaction with the people involved, including unsolicited interaction with
those enforcing the Code of Conduct, for a specified period of time. This
includes avoiding interactions in community spaces as well as external channels
like social media. Violating these terms may lead to a temporary or
permanent ban.
### 3. Temporary Ban
**Community Impact**: A serious violation of community standards, including
sustained inappropriate behavior.
**Consequence**: A temporary ban from any sort of interaction or public
communication with the community for a specified period of time. No public or
private interaction with the people involved, including unsolicited interaction
with those enforcing the Code of Conduct, is allowed during this period.
Violating these terms may lead to a permanent ban.
### 4. Permanent Ban
**Community Impact**: Demonstrating a pattern of violation of community
standards, including sustained inappropriate behavior, harassment of an
individual, or aggression toward or disparagement of classes of individuals.
**Consequence**: A permanent ban from any sort of public interaction within
the community.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version]
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
version 2.0, available at
[https://www.contributor-covenant.org/version/2/0/code_of_conduct.html][v2.0].
[homepage]: http://contributor-covenant.org
[version]: http://contributor-covenant.org/version/1/4/
Community Impact Guidelines were inspired by
[Mozilla's code of conduct enforcement ladder][Mozilla CoC].
For answers to common questions about this code of conduct, see the FAQ at
[https://www.contributor-covenant.org/faq][FAQ]. Translations are available
at [https://www.contributor-covenant.org/translations][translations].
[homepage]: https://www.contributor-covenant.org
[v2.0]: https://www.contributor-covenant.org/version/2/0/code_of_conduct.html
[Mozilla CoC]: https://github.com/mozilla/diversity
[FAQ]: https://www.contributor-covenant.org/faq
[translations]: https://www.contributor-covenant.org/translations

View File

@@ -1,6 +1,6 @@
The MIT License (MIT)
Copyright (c) 2018 Grav
Copyright (c) 2021 Grav
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

View File

@@ -1,29 +1,32 @@
# ![](https://avatars1.githubusercontent.com/u/8237355?v=2&s=50) Grav
[![PHPStan](https://img.shields.io/badge/PHPStan-enabled-brightgreen.svg?style=flat)](https://github.com/phpstan/phpstan)
[![SensioLabsInsight](https://insight.sensiolabs.com/projects/cfd20465-d0f8-4a0a-8444-467f5b5f16ad/mini.png)](https://insight.sensiolabs.com/projects/cfd20465-d0f8-4a0a-8444-467f5b5f16ad)
[![Discord](https://img.shields.io/discord/501836936584101899.svg?logo=discord&colorB=728ADA&label=Discord%20Chat)](https://chat.getgrav.org)
[![Build Status](https://travis-ci.org/getgrav/grav.svg?branch=develop)](https://travis-ci.org/getgrav/grav) [![OpenCollective](https://opencollective.com/grav/backers/badge.svg)](#backers) [![OpenCollective](https://opencollective.com/grav/sponsors/badge.svg)](#sponsors)
[![PHP Tests](https://github.com/getgrav/grav/workflows/PHP%20Tests/badge.svg?branch=develop)](https://github.com/getgrav/grav/actions?query=workflow%3A%22PHP+Tests%22) [![OpenCollective](https://opencollective.com/grav/tiers/backers/badge.svg?label=Backers&color=brightgreen)](#backers) [![OpenCollective](https://opencollective.com/grav/tiers/supporters/badge.svg?label=Supporters&color=brightgreen)](#supporters) [![OpenCollective](https://opencollective.com/grav/tiers/sponsors/badge.svg?label=Sponsors&color=brightgreen)](#sponsors)
Grav is a **Fast**, **Simple**, and **Flexible**, file-based Web-platform. There is **Zero** installation required. Just extract the ZIP archive, and you are already up and running. It follows similar principles to other flat-file CMS platforms, but has a different design philosophy than most. Grav comes with a powerful **Package Management System** to allow for simple installation and upgrading of plugins and themes, as well as simple updating of Grav itself.
The underlying architecture of Grav is designed to use well-established and _best-in-class_ technologies to ensure that Grav is simple to use and easy to extend. Some of these key technologies include:
* [Twig Templating](https://twig.sensiolabs.org/): for powerful control of the user interface
* [Twig Templating](https://twig.symfony.com/): for powerful control of the user interface
* [Markdown](https://en.wikipedia.org/wiki/Markdown): for easy content creation
* [YAML](https://yaml.org): for simple configuration
* [Parsedown](https://parsedown.org/): for fast Markdown and Markdown Extra support
* [Doctrine Cache](https://www.doctrine-project.org/projects/doctrine-orm/en/latest/reference/caching.html): layer for performance
* [Pimple Dependency Injection Container](https://pimple.sensiolabs.org/): for extensibility and maintainability
* [Pimple Dependency Injection Container](https://github.com/silexphp/Pimple): for extensibility and maintainability
* [Symfony Event Dispatcher](https://symfony.com/doc/current/components/event_dispatcher/introduction.html): for plugin event handling
* [Symfony Console](https://symfony.com/doc/current/components/console/introduction.html): for CLI interface
* [Gregwar Image Library](https://github.com/Gregwar/Image): for dynamic image manipulation
# Requirements
- PHP 7.1.3 or higher. Check the [required modules list](https://learn.getgrav.org/basics/requirements#php-requirements)
- PHP 7.3.6 or higher. Check the [required modules list](https://learn.getgrav.org/basics/requirements#php-requirements)
- Check the [Apache](https://learn.getgrav.org/basics/requirements#apache-requirements) or [IIS](https://learn.getgrav.org/basics/requirements#iis-requirements) requirements
# Documentation
The full documentation can be found from [learn.getgrav.org](https://learn.getgrav.org).
# QuickStart
These are the options to get Grav:
@@ -36,22 +39,22 @@ You can download a **ready-built** package from the [Downloads page on https://g
You can create a new project with the latest **stable** Grav release with the following command:
```
$ composer create-project getgrav/grav ~/webroot/grav
```bash
composer create-project getgrav/grav ~/webroot/grav
```
### From GitHub
1. Clone the Grav repository from [https://github.com/getgrav/grav]() to a folder in the webroot of your server, e.g. `~/webroot/grav`. Launch a **terminal** or **console** and navigate to the webroot folder:
```
$ cd ~/webroot
$ git clone https://github.com/getgrav/grav.git
```bash
cd ~/webroot
git clone https://github.com/getgrav/grav.git
```
2. Install the **plugin** and **theme dependencies** by using the [Grav CLI application](https://learn.getgrav.org/advanced/grav-cli) `bin/grav`:
```
$ cd ~/webroot/grav
$ bin/grav install
```bash
cd ~/webroot/grav
bin/grav install
```
Check out the [install procedures](https://learn.getgrav.org/basics/installation) for more information.
@@ -60,30 +63,35 @@ Check out the [install procedures](https://learn.getgrav.org/basics/installation
You can download [plugins](https://getgrav.org/downloads/plugins) or [themes](https://getgrav.org/downloads/themes) manually from the appropriate tab on the [Downloads page on https://getgrav.org](https://getgrav.org/downloads), but the preferred solution is to use the [Grav Package Manager](https://learn.getgrav.org/advanced/grav-gpm) or `GPM`:
```
$ bin/gpm index
```bash
bin/gpm index
```
This will display all the available plugins and then you can install one or more with:
```
$ bin/gpm install <plugin/theme>
```bash
bin/gpm install <plugin/theme>
```
# Updating
To update Grav you should use the [Grav Package Manager](https://learn.getgrav.org/advanced/grav-gpm) or `GPM`:
```
$ bin/gpm selfupgrade
```bash
bin/gpm selfupgrade
```
To update plugins and themes:
```
$ bin/gpm update
```bash
bin/gpm update
```
## Upgrading from older version
* [Upgrading to Grav 1.7](https://learn.getgrav.org/16/advanced/grav-development/grav-17-upgrade-guide)
* [Upgrading to Grav 1.6](https://learn.getgrav.org/16/advanced/grav-development/grav-16-upgrade-guide)
* [Upgrading from Grav <1.6](https://learn.getgrav.org/16/advanced/grav-development/grav-15-upgrade-guide)
# Contributing
We appreciate any contribution to Grav, whether it is related to bugs, grammar, or simply a suggestion or improvement! Please refer to the [Contributing guide](CONTRIBUTING.md) for more guidance on this topic.
@@ -109,12 +117,19 @@ If you discover a possible security issue related to Grav or one of its plugins,
* More [Awesome Grav Stuff](https://github.com/getgrav/awesome-grav)
# Backers
Support Grav with a monthly donation to help us continue development. [[Become a backer](https://opencollective.com/grav#backer)]
Support Grav with a monthly donation to help us continue development. [[Become a backer](https://opencollective.com/grav/contribute)]
<img src="https://opencollective.com/grav/tiers/backers.svg?avatarHeight=36&width=600" />
# Supporters
Support Grav with a monthly donation to help us continue development. [[Become a supporter](https://opencollective.com/grav/contribute)]
<img src="https://opencollective.com/grav/tiers/supporters.svg?avatarHeight=36&width=600" />
# Sponsors
Become a sponsor and get your logo on our README on Github with a link to your site. [[Become a sponsor](https://opencollective.com/grav#sponsor)]
Support Grav with a yearly donation to help us continue development. [[Become a sponsor](https://opencollective.com/grav/contribute)]
<img src="https://opencollective.com/grav/tiers/sponsors.svg?avatarHeight=36&width=600" />
@@ -128,7 +143,14 @@ See [LICENSE](LICENSE.txt)
# Running Tests
First install the dev dependencies by running `composer update` from the Grav root.
First install the dev dependencies by running `composer install` from the Grav root.
Then `composer test` will run the Unit Tests, which should be always executed successfully on any site.
Windows users should use the `composer test-windows` command.
You can also run a single unit test file, e.g. `composer test tests/unit/Grav/Common/AssetsTest.php`
To run phpstan tests, you should run:
* `composer phpstan` for global tests
* `composer phpstan-framework` for more strict tests
* `composer phpstan-plugins` to test all installed plugins

38
SECURITY.md Normal file
View File

@@ -0,0 +1,38 @@
# Security Policy
## Supported Versions
We are focusing our security updates on the following versions
| Version | Supported |
| ------- | ------------------ |
| 1.7.x | :white_check_mark: |
| 1.6.x | :x: |
| < 1.6 | :x: |
## :pushpin: Note on Security Severity
> NOTE: Please use the following guidelines when selecting a **Severity**. Submitted advisories that are marked **High** or **Critical** that don't meet the guidelines below will be closed.
* **CRITICAL** - no account required, can modify content, or run malicious code or nefarious activity without any access.
* **HIGH** - publisher level account able to run malicious code or nefarious activity, or other high level security things.
* **MODERATE** - admin level account able to run malicious code or do nefarious things. other moderate security things.
* **LOW** - super admin level account able to run malicious code or do nefarious things. other minor security things.
## :warning: Versions
Versions with :warning: will be supported for security issues, however you won't be able to update to them, you will need to manually update through the [`direct-install` command](https://learn.getgrav.org/17/admin-panel/tools).
If you cannot update to the latest stable version available because, for example, your server does not meet the minimum PHP requirements, you can manually install a previous version by downloading the package from our Releases directory (https://github.com/getgrav/grav/releases).
## :pencil: Reporting a Vulnerability
Please contact security@getgrav.org with a detailed explanation of the security issue found. If it appears to be a legitimate issues, please submit an **advisory via GitHub Security**: https://github.com/getgrav/grav/security/advisories
> NOTE: Please do not use 3rd party security issue reporting services, we like to keep everything in the GitHub ecosystem for easier manageability.
## :bug: Bug Bounties
We do greatly appreciate your efforts to improve Grav, but unfortunately because we are a small open source project, we **do not have the resources to offer bounties** for security issues found.

View File

@@ -1,125 +0,0 @@
# UPGRADE FROM 1.6 TO 1.7
## ADMINISTRATORS
### YAML files
* Please run `bin/grav yamllinter` to find any YAML parsing errors in your site. You should run this command before and after upgrade. Grav falls back to older YAML parser if it detects an error, but it will slow down your site.
### Pages
* **BC BREAK** Fixed 404 error page when you go to non-routable page with routable child pages under it. Now you get redirected to the first routable child page instead. This is probably what you wanted in the first place. If you do not want this new behavior, you need to **TODO**
### Multi-language
* Improved language support
* **BC BREAK** Please check that your fallback languages are correct. Old implementation had a fallback to any other language, now only default language is being used unless you use `system.languages.content_fallback` configuration option to override the default behavior.
### CLI
* Added new `bin/grav server` CLI command to easily run Symfony or PHP built-in web servers
* Added new `bin/grav page-system-validator [-r|--record] [-c|--check]` CLI command to test Flex Pages
* Improved `Scheduler` cron command check and more useful CLI information
* Added new `-r <job-id>` option for Scheduler CLI command to force-run a job
* Improved `bin/grav yamllinter` CLI command by adding an option to find YAML Linting issues from the whole site or custom folder
### Configuration
* Added new configuration option `system.debugger.provider` to choose between debugbar and clockwork
* Added new configuration option `system.debugger.censored` to hide potentially sensitive information
* Added new configuration option `system.pages.type` to enable Flex Pages
* Added new configuration option `system.languages.include_default_lang_file_extension` to keep default language in `.md` files if set to `false`
* Added new configuration option `system.languages.content_fallback` to set fallback content languages individually for every language
* Added new configuration option `security.sanitize_svg` to remove potentially dangerous code from SVG files
### Debugging
* Added support for [Clockwork](https://underground.works/clockwork) developer tools (now default debugger)
* Added support for [Tideways XHProf](https://github.com/tideways/php-xhprof-extension) PHP Extension for profiling method calls
* Added Twig profiling for Clockwork debugger
## DEVELOPERS
### ACL
* `user.authorize()` now requires user to be authorized (passed 2FA check), unless the rule contains `login` in its name.
* **BC BREAK** `user.authorize()` and Flex `object.isAuthorized()` now have two deny states: `false` and `null`.
Make sure you do not have strict checks against false: `$user->authorize($action) === false` (PHP) or `user.authorize(action) is same as(false)` (Twig).
For the negative checks you should be using `!user->authorize($action)` (PHP) or `not user.authorize(action)` (Twig).
The change has been done to allow strong deny rules by chaining the actions if previous ones do not match: `user.authorize(action1) ?? user.authorize(action2) ?? user.authorize(action3)`.
Note that Twig function `authorize()` will still **keeps** the old behavior!
### Pages
* Added experimental support for `Flex Pages` (**Flex-Objects** plugin required)
* Added page specific permissions support for `Flex Pages`
* Fixed wrong `Pages::dispatch()` calls (with redirect) when we really meant to call `Pages::find()`
* Added `Pages::getCollection()` method
* Moved `collection()` and `evaluate()` logic from `Page` class into `Pages` class
* **DEPRECATED** `$page->modular()` in favor of `$page->isModule()`
* **BC BREAK** Fixed `Page::modular()` and `Page::modularTwig()` returning `null` for folders and other non-initialized pages. Should not affect your code unless you were checking against `false` or `null`.
### Users
* Improved `Flex Users`: obey blueprints and allow Flex to be used in admin only
* Improved `Flex Users`: user and group ACL now supports deny permissions
* Changed `UserInterface::authorize()` to return `null` having the same meaning as `false` if access is denied because of no matching rule
* **DEPRECATED** `Grav\Common\User\Group` in favor of `$grav['user_groups']`, which contains Flex UserGroup collection
### Flex
* Added `hasFlexFeature()` method to test if `FlexObject` or `FlexCollection` implements a given feature
* Added `getFlexFeatures()` method to return all features that `FlexObject` or `FlexCollection` implements
* Added `FlexStorage::getMetaData()` to get updated object meta information for listed keys
* `FlexDirectory::getObject()` can now be called without any parameters to create a new object
* **DEPRECATED** `FlexDirectory::update()` and `FlexDirectory::remove()`
* **BC BREAK** Moved all Flex type classes under `Grav\Common\Flex`
* **BC BREAK** `FlexStorageInterface::getStoragePath()` and `getMediaPath()` can now return null
* **BC BREAK** Flex objects no longer return temporary key if they do not have one; empty key is returned instead
### Templating
* Added support for Twig 2.12 (still using Twig 1.42)
* Added a new `{% cache %}` Twig tag eliminating need for `twigcache` extension.
* Added `array_diff()` twig function
* Added `template_from_string()` twig function
* Improved twig `|array` filter to work with iterators and objects with `toArray()` method
* Improved twig `authorize()` function to work better with nested rule parameters
### Multi-language
* Improved language support for `Route` class
* Translations: rename MODULAR to MODULE everywhere
* Added `Language::getPageExtensions()` to get full list of supported page language extensions
* **BC BREAK** Fixed `Language::getFallbackPageExtensions()` to fall back only to default language instead of going through all languages
### Events
* Use `Symfony EventDispatcher` directly instead of `rockettheme/toolbox` wrapper.
### Misc
* Added `Utils::isAssoc()` and `Utils::isNegative()` helper methods
* Added `Utils::simpleTemplate()` method for very simple variable templating
* Support customizable null character replacement in `CSVFormatter::decode()`
* Added new `Security::sanitizeSVG()` function
* Added `$grav->close()` method to properly terminate the request with a response
* **BC BREAK** Make `Route` objects immutable. This means that you need to do: `{% set route = route.withExtension('.html') %}` (for all `withX` methods) to keep the updated version.
### Composer dependencies
* Updated Symfony Components to 4.4, please update any deprecated features in your code
* **BC BREAK** Please run `bin/grav yamllinter -f user://` to find any YAML parsing errors in your site (including your plugins and themes).
### Admin
* **BC BREAK** Admin will not initialize frontend pages anymore, this has been done to greatly speed up Admin plugin.
Please call `$grav['admin']->enablePages()` or `{% do admin.enablePages() %}` if you need to access frontend pages. This call can be safely made multiple times.
If you're using `Flex Pages`, please use Flex Directory instead, it will make your code so much faster.

View File

@@ -0,0 +1 @@
/* @copyright Copyright (c) 2015 - 2023 Trilby Media, LLC. All rights reserved. */

View File

@@ -0,0 +1 @@
/* @copyright Copyright (c) 2015 - 2023 Trilby Media, LLC. All rights reserved. */

209
bin/build-test-update.php Executable file
View File

@@ -0,0 +1,209 @@
#!/usr/bin/env php
<?php
declare(strict_types=1);
use Grav\Common\Filesystem\Folder;
require __DIR__ . '/../vendor/autoload.php';
if (!\defined('GRAV_ROOT')) {
\define('GRAV_ROOT', realpath(__DIR__ . '/..') ?: getcwd());
}
if (!\extension_loaded('zip')) {
fwrite(STDERR, "The PHP zip extension is required.\n");
exit(1);
}
$options = getopt('', [
'version:',
'output::',
'port::',
'base-url::',
'serve',
]);
if (!isset($options['version'])) {
fwrite(
STDERR,
"Usage: php bin/build-test-update.php --version=1.7.999 [--output=tmp/test-gpm] [--port=8043] [--base-url=http://127.0.0.1:8043] [--serve]\n"
);
exit(1);
}
$version = trim((string) $options['version']);
if ($version === '') {
fwrite(STDERR, "A non-empty --version value is required.\n");
exit(1);
}
$root = GRAV_ROOT;
$output = $options['output'] ?? $root . '/tmp/test-gpm';
if (!str_starts_with($output, DIRECTORY_SEPARATOR)) {
$output = $root . '/' . ltrim($output, '/');
}
$output = rtrim($output, DIRECTORY_SEPARATOR);
$defaultPort = isset($options['port']) ? (int) $options['port'] : 8043;
$baseUrl = $options['base-url'] ?? sprintf('http://127.0.0.1:%d', $defaultPort);
$serve = array_key_exists('serve', $options);
Folder::create($output);
$downloadName = sprintf('grav-update-%s.zip', $version);
$zipPath = $output . '/' . $downloadName;
$jsonPath = $output . '/grav.json';
$zipPrefix = 'grav-update/';
$excludeDirs = [
'.build',
'.crush',
'.ddev',
'.git',
'.github',
'.gitlab',
'.circleci',
'.idea',
'.vscode',
'.pytest_cache',
'backup',
'cache',
'images',
'logs',
'node_modules',
'tests',
'tmp',
'user',
];
$excludeFiles = [
'.htaccess',
'.DS_Store',
'robots.txt',
];
$directory = new RecursiveDirectoryIterator($root, RecursiveDirectoryIterator::SKIP_DOTS);
$filtered = new RecursiveCallbackFilterIterator(
$directory,
function (SplFileInfo $current) use ($root, $excludeDirs, $excludeFiles): bool {
$relative = ltrim(str_replace($root, '', $current->getPathname()), DIRECTORY_SEPARATOR);
$relative = str_replace('\\', '/', $relative);
if ($relative === '') {
return true;
}
if (str_contains($relative, '..')) {
return false;
}
foreach ($excludeDirs as $prefix) {
$prefix = trim($prefix, '/');
if ($prefix === '') {
continue;
}
if ($relative === $prefix || str_starts_with($relative, $prefix . '/')) {
return false;
}
}
if (in_array($current->getFilename(), $excludeFiles, true)) {
return false;
}
return true;
}
);
$zip = new ZipArchive();
if ($zip->open($zipPath, ZipArchive::CREATE | ZipArchive::OVERWRITE) !== true) {
throw new RuntimeException(sprintf('Unable to open archive at %s', $zipPath));
}
$zip->addEmptyDir($zipPrefix);
$iterator = new RecursiveIteratorIterator($filtered, RecursiveIteratorIterator::SELF_FIRST);
/** @var SplFileInfo $fileInfo */
foreach ($iterator as $fileInfo) {
$fullPath = $fileInfo->getPathname();
$relative = ltrim(str_replace($root, '', $fullPath), DIRECTORY_SEPARATOR);
$relative = str_replace('\\', '/', $relative);
$targetPath = $zipPrefix . $relative;
if ($fileInfo->isDir()) {
$zip->addEmptyDir(rtrim($targetPath, '/') . '/');
continue;
}
if ($fileInfo->isLink()) {
$target = readlink($fullPath);
$zip->addFromString($targetPath, $target === false ? '' : $target);
$zip->setExternalAttributesName($targetPath, ZipArchive::OPSYS_UNIX, 0120000 << 16);
continue;
}
$zip->addFile($fullPath, $targetPath);
$perms = @fileperms($fullPath);
if ($perms !== false) {
$zip->setExternalAttributesName($targetPath, ZipArchive::OPSYS_UNIX, ($perms & 0xFFFF) << 16);
}
}
$zip->close();
$size = filesize($zipPath);
$sha256 = hash_file('sha256', $zipPath);
$timestamp = date('c');
$downloadUrl = rtrim($baseUrl, '/') . '/' . rawurlencode($downloadName);
$manifest = [
'version' => $version,
'date' => $timestamp,
'min_php' => '8.3.0',
'assets' => [
'grav-update' => [
'name' => $downloadName,
'slug' => 'grav-update',
'version' => $version,
'date' => $timestamp,
'testing' => false,
'description' => 'Local test update package generated for safe-upgrade validation.',
'download' => $downloadUrl,
'size' => $size,
'checksum' => 'sha256:' . $sha256,
'sha256' => $sha256,
'host' => parse_url($downloadUrl, PHP_URL_HOST),
],
],
'changelog' => [
$version => [
'date' => $timestamp,
'content' => "- Local test update package generated by build-test-update.\n",
],
],
];
file_put_contents($jsonPath, json_encode($manifest, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES) . PHP_EOL);
$manifestUrl = rtrim($baseUrl, '/') . '/grav.json';
echo "Update package created at: {$zipPath}\n";
echo "Manifest written to: {$jsonPath}\n";
echo "Manifest URL: {$manifestUrl}\n";
echo "Download URL: {$downloadUrl}\n";
echo "Archive size: {$size} bytes\n";
echo "SHA256: {$sha256}\n";
if ($serve) {
$host = parse_url($baseUrl, PHP_URL_HOST) ?: '127.0.0.1';
$port = parse_url($baseUrl, PHP_URL_PORT) ?: $defaultPort;
$command = sprintf('php -S %s:%d -t %s', $host, $port, escapeshellarg($output));
echo "\nServing files using PHP built-in server. Press Ctrl+C to stop.\n";
echo $command . "\n\n";
passthru($command);
}

Binary file not shown.

50
bin/gpm
View File

@@ -1,9 +1,14 @@
#!/usr/bin/env php
<?php
/**
* @copyright Copyright (c) 2015 - 2025 Trilby Media, LLC. All rights reserved.
* @license MIT License; see LICENSE file for details.
*/
use Grav\Common\Composer;
use Symfony\Component\Console\Application;
use Grav\Common\Grav;
use Grav\Console\Application\GpmApplication;
\define('GRAV_CLI', true);
\define('GRAV_REQUEST_TIME', microtime(true));
@@ -20,13 +25,12 @@ if (!file_exists(__DIR__ . '/../vendor/autoload.php')){
$autoload = require __DIR__ . '/../vendor/autoload.php';
if (version_compare($ver = PHP_VERSION, $req = GRAV_PHP_MIN, '<')) {
exit(sprintf("You are running PHP %s, but Grav needs at least PHP %s to run.\n", $ver, $req));
}
// Set timezone to default, falls back to system if php.ini not set
date_default_timezone_set(@date_default_timezone_get());
if (!ini_get('date.timezone')) {
date_default_timezone_set('UTC');
}
// Set internal encoding.
@ini_set('default_charset', 'UTF-8');
mb_internal_encoding('UTF-8');
if (!file_exists(GRAV_ROOT . '/index.php')) {
exit('FATAL: Must be run from ROOT directory of Grav!');
@@ -36,37 +40,7 @@ if (!function_exists('curl_version')) {
exit('FATAL: GPM requires PHP Curl module to be installed');
}
$climate = new League\CLImate\CLImate;
$climate->arguments->add([
'environment' => [
'prefix' => 'e',
'longPrefix' => 'env',
'description' => 'Configuration Environment',
'defaultValue' => 'localhost'
]
]);
$climate->arguments->parse();
// Set up environment based on params.
$environment = $climate->arguments->get('environment');
$grav = Grav::instance(array('loader' => $autoload));
$grav->setup($environment);
$grav['config']->init();
$grav['uri']->init();
$grav['users'];
$app = new Application('Grav Package Manager', GRAV_VERSION);
$app->addCommands(array(
new \Grav\Console\Gpm\IndexCommand(),
new \Grav\Console\Gpm\VersionCommand(),
new \Grav\Console\Gpm\InfoCommand(),
new \Grav\Console\Gpm\InstallCommand(),
new \Grav\Console\Gpm\UninstallCommand(),
new \Grav\Console\Gpm\UpdateCommand(),
new \Grav\Console\Gpm\SelfupgradeCommand(),
new \Grav\Console\Gpm\DirectInstallCommand(),
));
$app = new GpmApplication('Grav Package Manager', GRAV_VERSION);
$app->run();

View File

@@ -1,10 +1,14 @@
#!/usr/bin/env php
<?php
/**
* @copyright Copyright (c) 2015 - 2025 Trilby Media, LLC. All rights reserved.
* @license MIT License; see LICENSE file for details.
*/
use Grav\Common\Composer;
use Grav\Common\Grav;
use Grav\Console\Cli;
use Symfony\Component\Console\Application;
use Grav\Console\Application\GravApplication;
\define('GRAV_CLI', true);
\define('GRAV_REQUEST_TIME', microtime(true));
@@ -21,49 +25,18 @@ if (!file_exists(__DIR__ . '/../vendor/autoload.php')){
$autoload = require __DIR__ . '/../vendor/autoload.php';
if (version_compare($ver = PHP_VERSION, $req = GRAV_PHP_MIN, '<')) {
exit(sprintf("You are running PHP %s, but Grav needs at least PHP %s to run.\n", $ver, $req));
}
// Set timezone to default, falls back to system if php.ini not set
date_default_timezone_set(@date_default_timezone_get());
$climate = new League\CLImate\CLImate;
$climate->arguments->add([
'environment' => [
'prefix' => 'e',
'longPrefix' => 'env',
'description' => 'Configuration Environment',
'defaultValue' => 'localhost'
]
]);
$climate->arguments->parse();
// Set up environment based on params.
$environment = $climate->arguments->get('environment');
// Set internal encoding.
@ini_set('default_charset', 'UTF-8');
mb_internal_encoding('UTF-8');
$grav = Grav::instance(array('loader' => $autoload));
$grav->setup($environment);
if (!ini_get('date.timezone')) {
date_default_timezone_set('UTC');
}
if (!file_exists(GRAV_ROOT . '/index.php')) {
exit('FATAL: Must be run from ROOT directory of Grav!');
}
$app = new Application('Grav CLI Application', GRAV_VERSION);
$app->addCommands(array(
new Cli\InstallCommand(),
new Cli\ComposerCommand(),
new Cli\SandboxCommand(),
new Cli\CleanCommand(),
new Cli\ClearCacheCommand(),
new Cli\BackupCommand(),
new Cli\NewProjectCommand(),
new Cli\SchedulerCommand(),
new Cli\SecurityCommand(),
new Cli\LogViewerCommand(),
new Cli\YamlLinterCommand(),
new Cli\ServerCommand(),
new Cli\PageSystemValidatorCommand(),
));
$app = new GravApplication('Grav CLI Application', GRAV_VERSION);
$app->run();

View File

@@ -1,13 +1,14 @@
#!/usr/bin/env php
<?php
/**
* @copyright Copyright (c) 2015 - 2025 Trilby Media, LLC. All rights reserved.
* @license MIT License; see LICENSE file for details.
*/
use Grav\Common\Composer;
use Symfony\Component\Console\Application;
use Symfony\Component\Console\Input\ArgvInput;
use Symfony\Component\Console\Output\ConsoleOutput;
use Symfony\Component\Console\Formatter\OutputFormatterStyle;
use Grav\Common\Grav;
use Grav\Common\Filesystem\Folder;
use Grav\Console\Application\PluginApplication;
\define('GRAV_CLI', true);
\define('GRAV_REQUEST_TIME', microtime(true));
@@ -24,127 +25,19 @@ if (!file_exists(__DIR__ . '/../vendor/autoload.php')){
$autoload = require __DIR__ . '/../vendor/autoload.php';
if (version_compare($ver = PHP_VERSION, $req = GRAV_PHP_MIN, '<')) {
exit(sprintf("You are running PHP %s, but Grav needs at least PHP %s to run.\n", $ver, $req));
}
// Set timezone to default, falls back to system if php.ini not set
date_default_timezone_set(@date_default_timezone_get());
if (!ini_get('date.timezone')) {
date_default_timezone_set('UTC');
}
// Set internal encoding.
@ini_set('default_charset', 'UTF-8');
mb_internal_encoding('UTF-8');
if (!file_exists(GRAV_ROOT . '/index.php')) {
exit('FATAL: Must be run from ROOT directory of Grav!');
}
$climate = new League\CLImate\CLImate;
$climate->arguments->add([
'environment' => [
'prefix' => 'e',
'longPrefix' => 'env',
'description' => 'Configuration Environment',
'defaultValue' => 'localhost'
]
]);
$climate->arguments->parse();
$environment = $climate->arguments->get('environment');
// Bootstrap Grav container.
$grav = Grav::instance(array('loader' => $autoload));
$grav->setup($environment);
$grav['config']->init();
$grav['uri']->init();
$grav['users'];
$grav['plugins']->init();
$grav['themes']->init();
$app = new Application('Grav Plugins Commands', GRAV_VERSION);
$pattern = '([A-Z]\w+Command\.php)';
// get arguments and strip the application name
if (null === $argv) {
$argv = $_SERVER['argv'];
}
$bin = array_shift($argv);
$name = array_shift($argv);
$argv = array_merge([$bin], $argv);
$input = new ArgvInput($argv);
/** @var \Grav\Common\Data\Data $plugin */
$plugin = $grav['plugins']->get($name);
$output = new ConsoleOutput();
$output->getFormatter()->setStyle('red', new OutputFormatterStyle('red', null, array('bold')));
$output->getFormatter()->setStyle('white', new OutputFormatterStyle('white', null, array('bold')));
if (!$name) {
$output->writeln('');
$output->writeln('<red>Usage:</red>');
$output->writeln(" {$bin} [slug] [command] [arguments]");
$output->writeln('');
$output->writeln('<red>Example:</red>');
$output->writeln(" {$bin} error log -l 1 --trace");
$list = Folder::all('plugins://', ['compare' => 'Pathname', 'pattern' => '/\/cli\/' . $pattern . '$/usm', 'levels' => 2]);
$total = 0;
if (count($list)) {
$available = [];
$output->writeln('');
$output->writeln('<red>Plugins with CLI available:</red>');
foreach ($list as $index => $entry) {
$split = explode('/', $entry);
$entry = array_shift($split);
$index = str_pad($index++ + 1, 2, '0', STR_PAD_LEFT);
$total = str_pad($total++ + 1, 2, '0', STR_PAD_LEFT);
if (\in_array($entry, $available, true)) {
$total--;
continue;
}
$available[] = $entry;
$commands_count = $index - $total + 1;
$output->writeln(' ' . $total . '. <red>' . str_pad($entry, 15) . "</red> <white>{$bin} {$entry} list</white>");
}
}
exit;
} else {
if (is_null($plugin)) {
$output->writeln('');
$output->writeln("<red>$name plugin not found</red>");
die;
}
if (!$plugin->enabled) {
$output->writeln('');
$output->writeln("<red>$name not enabled</red>");
die;
}
}
if ($plugin === null) {
$output->writeln("<red>Grav Plugin <white>'{$name}'</white> is not installed</red>");
exit;
}
$path = 'plugins://' . $name . '/cli';
try {
$commands = Folder::all($path, ['compare' => 'Filename', 'pattern' => '/' . $pattern . '$/usm', 'levels' => 1]);
} catch (\RuntimeException $e) {
$output->writeln("<red>No Console Commands for <white>'{$name}'</white> where found in <white>'{$path}'</white></red>");
exit;
}
foreach ($commands as $command_path) {
$full_path = $grav['locator']->findResource("plugins://{$name}/cli/{$command_path}");
require_once $full_path;
$command_class = 'Grav\Plugin\Console\\' . preg_replace('/.php$/', '', $command_path);
$command = new $command_class();
$app->add($command);
}
$app->run($input);
$app = new PluginApplication('Grav Plugins Commands', GRAV_VERSION);
$app->run();

634
bin/restore Executable file
View File

@@ -0,0 +1,634 @@
#!/usr/bin/env php
<?php
/**
* Grav Snapshot Restore Utility
*
* Lightweight CLI that can list and apply safe-upgrade snapshots without
* bootstrapping the full Grav application (or any plugins).
*/
$root = dirname(__DIR__);
define('GRAV_CLI', true);
define('GRAV_REQUEST_TIME', microtime(true));
if (!file_exists($root . '/vendor/autoload.php')) {
fwrite(STDERR, "Unable to locate vendor/autoload.php. Run composer install first.\n");
exit(1);
}
$autoload = require $root . '/vendor/autoload.php';
if (!file_exists($root . '/index.php')) {
fwrite(STDERR, "FATAL: Must be run from Grav root directory.\n");
exit(1);
}
use Grav\Common\Filesystem\Folder;
use Grav\Common\Recovery\RecoveryManager;
use Grav\Common\Upgrade\SafeUpgradeService;
use Symfony\Component\Yaml\Yaml;
const RESTORE_USAGE = <<<USAGE
Grav Restore Utility
Usage:
bin/restore list [--staging-root=/absolute/path]
Lists all available snapshots (most recent first).
bin/restore apply <snapshot-id> [--staging-root=/absolute/path]
Restores the specified snapshot created by safe-upgrade.
bin/restore remove [<snapshot-id> ...] [--staging-root=/absolute/path]
Deletes one or more snapshots (interactive selection when no id provided).
bin/restore snapshot [--label=\"optional description\"] [--staging-root=/absolute/path]
Creates a manual snapshot of the current Grav core files.
bin/restore recovery [status|clear]
Shows the recovery flag context or clears it.
Options:
--staging-root Overrides the staging directory (defaults to configured value).
--label Optional label to store with the manual snapshot.
Examples:
bin/restore list
bin/restore apply stage-68eff31cc4104
bin/restore apply stage-68eff31cc4104 --staging-root=/var/grav-backups
bin/restore snapshot --label=\"Before plugin install\"
bin/restore recovery status
bin/restore recovery clear
USAGE;
/**
* @param array $args
* @return array{command:string,arguments:array,options:array}
*/
function parseArguments(array $args): array
{
array_shift($args); // remove script name
$command = null;
$arguments = [];
$options = [];
while ($args) {
$arg = array_shift($args);
if (strncmp($arg, '--', 2) === 0) {
$parts = explode('=', substr($arg, 2), 2);
$name = $parts[0] ?? '';
if ($name === '') {
continue;
}
$value = $parts[1] ?? null;
if ($value === null && $args && substr($args[0], 0, 2) !== '--') {
$value = array_shift($args);
}
$options[$name] = $value ?? true;
continue;
}
if (null === $command) {
$command = $arg;
} else {
$arguments[] = $arg;
}
}
if (null === $command) {
$command = 'interactive';
}
return [
'command' => $command,
'arguments' => $arguments,
'options' => $options,
];
}
/**
* @param array $options
* @return SafeUpgradeService
*/
function createUpgradeService(array $options): SafeUpgradeService
{
$serviceOptions = ['root' => GRAV_ROOT];
if (isset($options['staging-root']) && is_string($options['staging-root']) && $options['staging-root'] !== '') {
$serviceOptions['staging_root'] = $options['staging-root'];
}
return new SafeUpgradeService($serviceOptions);
}
/**
* @return list<array{id:string,label:?string,source_version:?string,target_version:?string,created_at:int}>
*/
function loadSnapshots(): array
{
$manifestDir = GRAV_ROOT . '/user/data/upgrades';
if (!is_dir($manifestDir)) {
return [];
}
$files = glob($manifestDir . '/*.json') ?: [];
rsort($files);
$snapshots = [];
foreach ($files as $file) {
$decoded = json_decode(file_get_contents($file) ?: '', true);
if (!is_array($decoded) || empty($decoded['id'])) {
continue;
}
$snapshots[] = [
'id' => $decoded['id'],
'label' => $decoded['label'] ?? null,
'source_version' => $decoded['source_version'] ?? null,
'target_version' => $decoded['target_version'] ?? null,
'created_at' => (int)($decoded['created_at'] ?? 0),
];
}
return $snapshots;
}
/**
* @param list<array{id:string,label:?string,source_version:?string,target_version:?string,created_at:int}> $snapshots
* @return string
*/
function formatSnapshotListLine(array $snapshot): string
{
$restoreVersion = $snapshot['source_version'] ?? $snapshot['target_version'] ?? 'unknown';
$timeLabel = formatSnapshotTimestamp($snapshot['created_at']);
$label = $snapshot['label'] ?? null;
$display = $label ? sprintf('%s [%s]', $label, $snapshot['id']) : $snapshot['id'];
return sprintf('%s (restore to Grav %s, %s)', $display, $restoreVersion, $timeLabel);
}
function formatSnapshotTimestamp(int $timestamp): string
{
if ($timestamp <= 0) {
return 'time unknown';
}
try {
$timezone = resolveTimezone();
$dt = new DateTime('@' . $timestamp);
$dt->setTimezone($timezone);
$formatted = $dt->format('Y-m-d H:i:s T');
} catch (\Throwable $e) {
$formatted = date('Y-m-d H:i:s T', $timestamp);
}
return $formatted . ' (' . formatRelative(time() - $timestamp) . ')';
}
function resolveTimezone(): DateTimeZone
{
static $resolved = null;
if ($resolved instanceof DateTimeZone) {
return $resolved;
}
$timezone = null;
$configFile = GRAV_ROOT . '/user/config/system.yaml';
if (is_file($configFile)) {
try {
$data = Yaml::parse(file_get_contents($configFile) ?: '') ?: [];
if (!empty($data['system']['timezone']) && is_string($data['system']['timezone'])) {
$timezone = $data['system']['timezone'];
}
} catch (\Throwable $e) {
// ignore parse errors, fallback below
}
}
if (!$timezone) {
$timezone = ini_get('date.timezone') ?: 'UTC';
}
try {
$resolved = new DateTimeZone($timezone);
} catch (\Throwable $e) {
$resolved = new DateTimeZone('UTC');
}
return $resolved;
}
function formatRelative(int $seconds): string
{
if ($seconds < 5) {
return 'just now';
}
$negative = $seconds < 0;
$seconds = abs($seconds);
$units = [
31536000 => 'y',
2592000 => 'mo',
604800 => 'w',
86400 => 'd',
3600 => 'h',
60 => 'm',
1 => 's',
];
foreach ($units as $size => $label) {
if ($seconds >= $size) {
$value = (int)floor($seconds / $size);
$suffix = $label === 'mo' ? 'month' : ($label === 'y' ? 'year' : ($label === 'w' ? 'week' : ($label === 'd' ? 'day' : ($label === 'h' ? 'hour' : ($label === 'm' ? 'minute' : 'second')))));
if ($value !== 1) {
$suffix .= 's';
}
$phrase = $value . ' ' . $suffix;
return $negative ? 'in ' . $phrase : $phrase . ' ago';
}
}
return $negative ? 'in 0 seconds' : '0 seconds ago';
}
/**
* @param string $snapshotId
* @param array $options
* @return void
*/
function applySnapshot(string $snapshotId, array $options): void
{
try {
$service = createUpgradeService($options);
$manifest = $service->rollback($snapshotId);
} catch (\Throwable $e) {
fwrite(STDERR, "Restore failed: " . $e->getMessage() . "\n");
exit(1);
}
if (!$manifest) {
fwrite(STDERR, "Snapshot {$snapshotId} not found.\n");
exit(1);
}
$version = $manifest['source_version'] ?? $manifest['target_version'] ?? 'unknown';
echo "Restored snapshot {$snapshotId} (Grav {$version}).\n";
if (!empty($manifest['id'])) {
echo "Snapshot manifest: {$manifest['id']}\n";
}
if (!empty($manifest['backup_path'])) {
echo "Snapshot path: {$manifest['backup_path']}\n";
}
exit(0);
}
/**
* @param array $options
* @return void
*/
function createManualSnapshot(array $options): void
{
$label = null;
if (isset($options['label']) && is_string($options['label'])) {
$label = trim($options['label']);
if ($label === '') {
$label = null;
}
}
try {
$service = createUpgradeService($options);
$manifest = $service->createSnapshot($label);
} catch (\Throwable $e) {
fwrite(STDERR, "Snapshot creation failed: " . $e->getMessage() . "\n");
exit(1);
}
$snapshotId = $manifest['id'] ?? null;
if (!$snapshotId) {
$snapshotId = 'unknown';
}
$version = $manifest['source_version'] ?? $manifest['target_version'] ?? 'unknown';
echo "Created snapshot {$snapshotId} (Grav {$version}).\n";
if ($label) {
echo "Label: {$label}\n";
}
if (!empty($manifest['backup_path'])) {
echo "Snapshot path: {$manifest['backup_path']}\n";
}
exit(0);
}
/**
* @param list<array{id:string,source_version:?string,target_version:?string,created_at:int}> $snapshots
* @return string|null
*/
function promptSnapshotSelection(array $snapshots): ?string
{
echo "Available snapshots:\n";
foreach ($snapshots as $index => $snapshot) {
$line = formatSnapshotListLine($snapshot);
$number = $index + 1;
echo sprintf(" [%d] %s\n", $number, $line);
}
$default = $snapshots[0]['id'];
echo "\nSelect a snapshot to restore [1]: ";
$input = trim((string)fgets(STDIN));
if ($input === '') {
return $default;
}
if (ctype_digit($input)) {
$idx = (int)$input - 1;
if (isset($snapshots[$idx])) {
return $snapshots[$idx]['id'];
}
}
foreach ($snapshots as $snapshot) {
if (strcasecmp($snapshot['id'], $input) === 0) {
return $snapshot['id'];
}
}
echo "Invalid selection. Aborting.\n";
return null;
}
/**
* @param list<array{id:string,source_version:?string,target_version:?string,created_at:int}> $snapshots
* @return array<string>
*/
function promptSnapshotsRemoval(array $snapshots): array
{
echo "Available snapshots:\n";
foreach ($snapshots as $index => $snapshot) {
$line = formatSnapshotListLine($snapshot);
$number = $index + 1;
echo sprintf(" [%d] %s\n", $number, $line);
}
echo "\nSelect snapshots to remove (comma or space separated numbers / ids, 'all' for everything, empty to cancel): ";
$input = trim((string)fgets(STDIN));
if ($input === '') {
return [];
}
$inputLower = strtolower($input);
if ($inputLower === 'all' || $inputLower === '*') {
return array_values(array_unique(array_column($snapshots, 'id')));
}
$tokens = preg_split('/[\\s,]+/', $input, -1, PREG_SPLIT_NO_EMPTY) ?: [];
$selected = [];
foreach ($tokens as $token) {
if (ctype_digit($token)) {
$idx = (int)$token - 1;
if (isset($snapshots[$idx])) {
$selected[] = $snapshots[$idx]['id'];
continue;
}
}
foreach ($snapshots as $snapshot) {
if (strcasecmp($snapshot['id'], $token) === 0) {
$selected[] = $snapshot['id'];
break;
}
}
}
return array_values(array_unique(array_filter($selected)));
}
/**
* @param string $snapshotId
* @return array{success:bool,message:string}
*/
function removeSnapshot(string $snapshotId): array
{
$manifestDir = GRAV_ROOT . '/user/data/upgrades';
$manifestPath = $manifestDir . '/' . $snapshotId . '.json';
if (!is_file($manifestPath)) {
return [
'success' => false,
'message' => "Snapshot {$snapshotId} not found."
];
}
$manifest = json_decode(file_get_contents($manifestPath) ?: '', true);
if (!is_array($manifest)) {
return [
'success' => false,
'message' => "Snapshot {$snapshotId} manifest is invalid."
];
}
$pathsToDelete = [];
foreach (['package_path', 'backup_path'] as $key) {
if (!empty($manifest[$key]) && is_string($manifest[$key])) {
$pathsToDelete[] = $manifest[$key];
}
}
$errors = [];
foreach ($pathsToDelete as $path) {
if (!$path) {
continue;
}
if (!file_exists($path)) {
continue;
}
try {
if (is_dir($path)) {
Folder::delete($path);
} else {
@unlink($path);
}
} catch (\Throwable $e) {
$errors[] = "Unable to remove {$path}: " . $e->getMessage();
}
}
if (!@unlink($manifestPath)) {
$errors[] = "Unable to delete manifest file {$manifestPath}.";
}
if ($errors) {
return [
'success' => false,
'message' => implode(' ', $errors)
];
}
return [
'success' => true,
'message' => "Removed snapshot {$snapshotId}."
];
}
$cli = parseArguments($argv);
$command = $cli['command'];
$arguments = $cli['arguments'];
$options = $cli['options'];
switch ($command) {
case 'interactive':
$snapshots = loadSnapshots();
if (!$snapshots) {
echo "No snapshots found. Run bin/gpm self-upgrade (with safe upgrade enabled) to create one.\n";
exit(0);
}
$selection = promptSnapshotSelection($snapshots);
if (!$selection) {
exit(1);
}
applySnapshot($selection, $options);
break;
case 'list':
$snapshots = loadSnapshots();
if (!$snapshots) {
echo "No snapshots found. Run bin/gpm self-upgrade (with safe upgrade enabled) to create one.\n";
exit(0);
}
echo "Available snapshots:\n";
foreach ($snapshots as $snapshot) {
echo ' - ' . formatSnapshotListLine($snapshot) . "\n";
}
exit(0);
case 'remove':
$snapshots = loadSnapshots();
if (!$snapshots) {
echo "No snapshots found. Nothing to remove.\n";
exit(0);
}
$selectedIds = [];
if ($arguments) {
foreach ($arguments as $arg) {
if (!$arg) {
continue;
}
$selectedIds[] = $arg;
}
} else {
$selectedIds = promptSnapshotsRemoval($snapshots);
if (!$selectedIds) {
echo "No snapshots selected. Aborting.\n";
exit(1);
}
}
$selectedIds = array_values(array_unique($selectedIds));
echo "Snapshots selected for removal:\n";
foreach ($selectedIds as $id) {
echo " - {$id}\n";
}
$autoConfirm = isset($options['yes']) || isset($options['y']);
if (!$autoConfirm) {
echo "\nThis action cannot be undone. Proceed? [y/N] ";
$confirmation = strtolower(trim((string)fgets(STDIN)));
if (!in_array($confirmation, ['y', 'yes'], true)) {
echo "Aborted.\n";
exit(1);
}
}
$success = 0;
foreach ($selectedIds as $id) {
$result = removeSnapshot($id);
echo $result['message'] . "\n";
if ($result['success']) {
$success++;
}
}
exit($success > 0 ? 0 : 1);
case 'apply':
$snapshotId = $arguments[0] ?? null;
if (!$snapshotId) {
echo "Missing snapshot id.\n\n" . RESTORE_USAGE . "\n";
exit(1);
}
applySnapshot($snapshotId, $options);
break;
case 'snapshot':
createManualSnapshot($options);
break;
case 'recovery':
$action = strtolower($arguments[0] ?? 'status');
$manager = new RecoveryManager(GRAV_ROOT);
switch ($action) {
case 'clear':
if ($manager->isActive()) {
$manager->clear();
echo "Recovery flag cleared.\n";
} else {
echo "Recovery mode is not active.\n";
}
exit(0);
case 'status':
if (!$manager->isActive()) {
echo "Recovery mode is not active.\n";
exit(0);
}
$context = $manager->getContext();
if (!$context) {
echo "Recovery flag present but context could not be parsed.\n";
exit(1);
}
$created = isset($context['created_at']) ? date('c', (int)$context['created_at']) : 'unknown';
$token = $context['token'] ?? '(missing)';
$message = $context['message'] ?? '(no message)';
$plugin = $context['plugin'] ?? '(none detected)';
$file = $context['file'] ?? '(unknown file)';
$line = $context['line'] ?? '(unknown line)';
echo "Recovery flag context:\n";
echo " Token: {$token}\n";
echo " Message: {$message}\n";
echo " Plugin: {$plugin}\n";
echo " File: {$file}\n";
echo " Line: {$line}\n";
echo " Created: {$created}\n";
$window = $manager->getUpgradeWindow();
if ($window) {
$expires = isset($window['expires_at']) ? date('c', (int)$window['expires_at']) : 'unknown';
$reason = $window['reason'] ?? '(unknown)';
echo " Window: active ({$reason}, expires {$expires})\n";
} else {
echo " Window: inactive\n";
}
exit(0);
default:
echo "Unknown recovery action: {$action}\n\n" . RESTORE_USAGE . "\n";
exit(1);
}
case 'help':
default:
echo RESTORE_USAGE . "\n";
exit($command === 'help' ? 0 : 1);
}

1
cache/.gitkeep vendored
View File

@@ -0,0 +1 @@
/* @copyright Copyright (c) 2015 - 2023 Trilby Media, LLC. All rights reserved. */

View File

@@ -1,4 +1,5 @@
actor: Tester
bootstrap: _bootstrap.php
paths:
tests: tests
log: tests/_output
@@ -6,7 +7,6 @@ paths:
support: tests/_support
envs: tests/_envs
settings:
bootstrap: _bootstrap.php
colors: true
memory_limit: 1024M
extensions:

View File

@@ -12,106 +12,117 @@
"homepage": "https://getgrav.org",
"license": "MIT",
"require": {
"php": ">=7.1.3",
"php": "^7.3.6 || ^8.0",
"ext-json": "*",
"ext-mbstring": "*",
"ext-openssl": "*",
"ext-curl": "*",
"ext-zip": "*",
"ext-dom": "*",
"symfony/polyfill-iconv": "^1.9",
"symfony/polyfill-php72": "^1.9",
"symfony/polyfill-php73": "^1.9",
"ext-libxml": "*",
"ext-gd": "*",
"symfony/polyfill-mbstring": "~1.23",
"symfony/polyfill-iconv": "^1.23",
"symfony/polyfill-php74": "^1.23",
"symfony/polyfill-php80": "^1.23",
"symfony/polyfill-php81": "^1.23",
"psr/simple-cache": "^1.0",
"psr/cache": "^1.0",
"psr/http-message": "^1.0",
"psr/http-server-middleware": "^1.0",
"kodus/psr7-server": "*",
"nyholm/psr7": "^1.0",
"twig/twig": "~1.0",
"erusev/parsedown": "1.6.4",
"erusev/parsedown-extra": "~0.7",
"symfony/contracts": "~1.0",
"symfony/yaml": "~4.4.0",
"symfony/console": "~4.4.0",
"symfony/event-dispatcher": "~4.4.0",
"symfony/var-dumper": "~4.4.0",
"symfony/process": "~4.4.0",
"doctrine/cache": "^1.8",
"doctrine/collections": "^1.5",
"guzzlehttp/psr7": "^1.4",
"filp/whoops": "~2.2",
"psr/container": "~1.1.0",
"nyholm/psr7-server": "^1.0",
"nyholm/psr7": "^1.3",
"twig/twig": "~v1.44",
"erusev/parsedown": "^1.7",
"erusev/parsedown-extra": "~0.8",
"symfony/contracts": "~1.1",
"symfony/yaml": "~4.4",
"symfony/console": "~4.4",
"symfony/event-dispatcher": "~4.4",
"symfony/var-dumper": "~4.4",
"symfony/process": "~4.4",
"doctrine/cache": "^1.10",
"doctrine/collections": "^1.6",
"guzzlehttp/psr7": "^1.7",
"filp/whoops": "~2.9",
"matthiasmullie/minify": "^1.3",
"monolog/monolog": "~1.0",
"gregwar/image": "2.*",
"donatj/phpuseragentparser": "~0.10",
"pimple/pimple": "~3.2",
"rockettheme/toolbox": "dev-develop",
"maximebf/debugbar": "~1.0",
"league/climate": "^3.4",
"antoligy/dom-string-iterators": "^1.0",
"miljar/php-exif": "^0.6.4",
"composer/ca-bundle": "^1.0",
"dragonmantank/cron-expression": "^1.2",
"phive/twig-extensions-deferred": "^1.0",
"willdurand/negotiation": "^2.3",
"itsgoingd/clockwork": "~4.0",
"enshrined/svg-sanitize": "~0.1"
"monolog/monolog": "~1.25",
"getgrav/image": "^4.0",
"getgrav/cache": "^2.0",
"donatj/phpuseragentparser": "~1.1",
"pimple/pimple": "~3.5.0",
"rockettheme/toolbox": "~1.5",
"maximebf/debugbar": "~1.16",
"league/climate": "^3.6",
"miljar/php-exif": "^0.6",
"composer/ca-bundle": "^1.2",
"dragonmantank/cron-expression": "~3.3.0",
"symfony/deprecation-contracts": "^2.2",
"willdurand/negotiation": "^3.0",
"itsgoingd/clockwork": "^5.0",
"symfony/http-client": "^4.4",
"composer/semver": "^1.4",
"rhukster/dom-sanitizer": "^1.0",
"multiavatar/multiavatar-php": "^1.0"
},
"require-dev": {
"codeception/codeception": "^2.4",
"phpstan/phpstan": "^0.11",
"phpstan/phpstan-deprecation-rules": "^0.11",
"phpunit/php-code-coverage": "~6.0",
"fzaninotto/faker": "^1.8",
"victorjonsson/markdowndocs": "dev-master"
"behat/gherkin": "~4.10.0",
"codeception/codeception": "^4.1",
"phpstan/phpstan": "^1.8",
"phpstan/phpstan-deprecation-rules": "^1.0",
"phpunit/php-code-coverage": "~9.2",
"getgrav/markdowndocs": "^2.0",
"codeception/module-asserts": "^1.3",
"codeception/module-phpbrowser": "^1.0",
"doctrine/instantiator": "^1.4"
},
"replace": {
"symfony/polyfill-php72": "*",
"symfony/polyfill-php73": "*"
},
"suggest": {
"ext-mbstring": "Recommended for better performance",
"ext-iconv": "Recommended for better performance",
"ext-zend-opcache": "Recommended for better performance",
"ext-intl": "Recommended for multi-language sites",
"ext-memcache": "Needed to support Memcache servers",
"ext-memcached": "Needed to support Memcached servers",
"ext-redis": "Needed to support Redis servers"
"ext-redis": "Needed to support Redis servers",
"ext-exif": "Needed to use exif data from images."
},
"config": {
"apcu-autoloader": true,
"platform": {
"php": "7.1.3"
"audit": {
"block-insecure": false
}
},
"repositories": [
{
"type": "vcs",
"url": "https://github.com/trilbymedia/PHP-Markdown-Documentation-Generator"
},
{
"type": "vcs",
"url": "https://github.com/itsgoingd/clockwork"
},
{
"type": "vcs",
"url": "https://github.com/rockettheme/toolbox"
}
],
"autoload": {
"psr-4": {
"Grav\\": "system/src/Grav"
"Grav\\": "system/src/Grav",
"Twig\\": "system/src/Twig"
},
"files": [
"system/defines.php"
"system/defines.php",
"system/src/DOMLettersIterator.php",
"system/src/DOMWordsIterator.php"
]
},
"autoload-dev": {
"psr-4": {
"PHPStan\\": "tests/phpstan/classes"
}
},
"archive": {
"exclude": [
"VERSION"
]
},
"scripts": {
"api-16": "vendor/bin/phpdoc-md generate system/src > user/pages/14.api/default.16.md",
"api-15": "vendor/bin/phpdoc-md generate system/src > user/pages/14.api/default.md",
"api-17": "vendor/bin/phpdoc-md generate system/src > user/pages/14.api/default.17.md",
"post-create-project-cmd": "bin/grav install",
"phpstan": "vendor/bin/phpstan analyse -l 3 -c ./tests/phpstan/phpstan.neon system/src --memory-limit=300M",
"phpstan-framework": "vendor/bin/phpstan analyse -l 7 -c ./tests/phpstan/phpstan.neon system/src/Grav/Framework --memory-limit=300M",
"phpstan-plugins": "vendor/bin/phpstan analyse -l 0 -c ./tests/phpstan/plugins.neon user/plugins --memory-limit=300M",
"phpstan": "vendor/bin/phpstan analyse -l 2 -c ./tests/phpstan/phpstan.neon --memory-limit=720M system/src",
"phpstan-framework": "vendor/bin/phpstan analyse -l 5 -c ./tests/phpstan/phpstan.neon --memory-limit=480M system/src/Grav/Framework system/src/Grav/Events system/src/Grav/Installer",
"phpstan-plugins": "vendor/bin/phpstan analyse -l 1 -c ./tests/phpstan/plugins.neon --memory-limit=400M user/plugins",
"test": "vendor/bin/codecept run unit",
"test-windows": "vendor\\bin\\codecept run unit"
},

5499
composer.lock generated

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1 @@
/* @copyright Copyright (c) 2015 - 2023 Trilby Media, LLC. All rights reserved. */

View File

@@ -3,26 +3,53 @@
/**
* @package Grav.Core
*
* @copyright Copyright (C) 2015 - 2018 Trilby Media, LLC. All rights reserved.
* @copyright Copyright (c) 2015 - 2024 Trilby Media, LLC. All rights reserved.
* @license MIT License; see LICENSE file for details.
*/
namespace Grav;
\define('GRAV_REQUEST_TIME', microtime(true));
\define('GRAV_PHP_MIN', '7.1.3');
if (version_compare($ver = PHP_VERSION, $req = GRAV_PHP_MIN, '<')) {
die(sprintf('You are running PHP %s, but Grav needs at least <strong>PHP %s</strong> to run.', $ver, $req));
}
\define('GRAV_PHP_MIN', '7.3.6');
if (PHP_SAPI === 'cli-server') {
$symfony_server = strpos(getenv('_'), 'symfony') !== false;
$symfony_server = stripos(getenv('_'), 'symfony') !== false || stripos($_SERVER['SERVER_SOFTWARE'] ?? '', 'symfony') !== false || stripos($_ENV['SERVER_SOFTWARE'] ?? '', 'symfony') !== false;
if (!isset($_SERVER['PHP_CLI_ROUTER']) && !$symfony_server) {
die("PHP webserver requires a router to run Grav, please use: <pre>php -S {$_SERVER['SERVER_NAME']}:{$_SERVER['SERVER_PORT']} system/router.php</pre>");
}
}
if (PHP_SAPI !== 'cli') {
$requestUri = $_SERVER['REQUEST_URI'] ?? '';
$scriptName = $_SERVER['SCRIPT_NAME'] ?? '';
$path = parse_url($requestUri, PHP_URL_PATH) ?? '/';
$path = str_replace('\\', '/', $path);
$scriptDir = str_replace('\\', '/', dirname($scriptName));
if ($scriptDir && $scriptDir !== '/' && $scriptDir !== '.') {
if (strpos($path, $scriptDir) === 0) {
$path = substr($path, strlen($scriptDir));
$path = $path === '' ? '/' : $path;
}
}
if ($path === '/___safe-upgrade-status') {
$statusEndpoint = __DIR__ . '/user/plugins/admin/safe-upgrade-status.php';
header('Content-Type: application/json; charset=utf-8');
if (is_file($statusEndpoint)) {
require $statusEndpoint;
} else {
http_response_code(404);
echo json_encode([
'status' => 'error',
'message' => 'Safe upgrade status endpoint unavailable.',
]);
}
exit;
}
}
// Ensure vendor libraries exist
$autoload = __DIR__ . '/vendor/autoload.php';
if (!is_file($autoload)) {
@@ -32,32 +59,48 @@ if (!is_file($autoload)) {
// Register the auto-loader.
$loader = require $autoload;
use Grav\Common\Grav;
use RocketTheme\Toolbox\Event\Event;
if (!class_exists(\Symfony\Component\ErrorHandler\Exception\FlattenException::class, false) && class_exists(\Symfony\Component\HttpKernel\Exception\FlattenException::class)) {
class_alias(\Symfony\Component\HttpKernel\Exception\FlattenException::class, \Symfony\Component\ErrorHandler\Exception\FlattenException::class);
}
if (!class_exists(\Monolog\Logger::class, false)) {
class_exists(\Monolog\Logger::class);
}
if (defined('Monolog\Logger::API') && \Monolog\Logger::API < 3) {
require_once __DIR__ . '/system/src/Grav/Framework/Compat/Monolog/bootstrap.php';
}
// Set timezone to default, falls back to system if php.ini not set
date_default_timezone_set(@date_default_timezone_get());
// Set internal encoding if mbstring loaded
if (!\extension_loaded('mbstring')) {
die("'mbstring' extension is not loaded. This is required for Grav to run correctly");
}
// Set internal encoding.
@ini_set('default_charset', 'UTF-8');
mb_internal_encoding('UTF-8');
$recoveryFlag = __DIR__ . '/user/data/recovery.flag';
if (PHP_SAPI !== 'cli' && is_file($recoveryFlag)) {
require __DIR__ . '/system/recovery.php';
return 0;
}
use Grav\Common\Grav;
use RocketTheme\Toolbox\Event\Event;
// Get the Grav instance
$grav = Grav::instance(
array(
'loader' => $loader
)
);
$grav = Grav::instance(array('loader' => $loader));
// Process the page
try {
$grav->process();
} catch (\Error $e) {
$grav->fireEvent('onFatalException', new Event(array('exception' => $e)));
throw $e;
} catch (\Exception $e) {
$grav->fireEvent('onFatalException', new Event(array('exception' => $e)));
} catch (\Error|\Exception $e) {
$grav->fireEvent('onFatalException', new Event(['exception' => $e]));
if (PHP_SAPI !== 'cli' && is_file($recoveryFlag)) {
require __DIR__ . '/system/recovery.php';
return 0;
}
throw $e;
}

View File

@@ -0,0 +1 @@
/* @copyright Copyright (c) 2015 - 2023 Trilby Media, LLC. All rights reserved. */

View File

@@ -1,4 +1,4 @@
{
{
"version": 2,
"builds": [{ "src": "*.php", "use": "@now/php" }]
}

View File

@@ -1,13 +1,21 @@
User-agent: *
Disallow: /.github/
Disallow: /.phan/
Disallow: /assets/
Disallow: /backup/
Disallow: /bin/
Disallow: /cache/
Disallow: /grav/
Disallow: /logs/
Disallow: /system/
Disallow: /vendor/
Disallow: /tests/
Disallow: /tmp/
Disallow: /user/
Disallow: /vendor/
Disallow: /webserver-configs/
Allow: /user/pages/
Allow: /user/themes/
Allow: /user/images/
Allow: /
Allow: *.css$
Allow: *.js$
Allow: /system/*.js$

View File

@@ -1,2 +1,61 @@
/** Clockwork Debugger CSS **/
.clockwork-badge{position:fixed;z-index:10;bottom:0;left:0;padding:2px 4px;background-color:#eee;border:1px solid #ccc;border-bottom:0;border-left:0;display:flex;align-items:center}.clockwork-badge:hover{width:auto}.clockwork-badge:hover:after{content:'Grav Clockwork debugger enabled. Install Clockwork Browser extension (Chrome or Firefox), open your Developer tools and then select the Clockwork tab.'}.clockwork-badge:after{margin-left:10px;font-family:Monaco,Consolas,"Lucida Console",monospace;font-size:12px;line-height:1.5;color:#666}.clockwork-badge i{display:block;float:left;height:22px;width:22px;min-width:22px;background-size:contain;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAA/1BMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeHh4AAAD///8EBAT7+/sLCwv29vYVFRUvLy/t7e3m5ubCwsKxsbE/Pz+mpqZMTEwcHBzy8vLp6emfn5+AgIA2Njbi4uLf39+rq6tzc3NWVlYhISHa2trW1tbS0tLMzMy7u7uZmZmUlJSMjIxvb29kZGRHR0c7Ozt5eXkqKiq1tbWQkJBqampbW1tSUlLHx8eHh4ckJCRDQ0M3wD42AAAAI3RSTlMA/PibTbQ0x76TVAlw4LhZLOuEYCAN9Hjx0a2ppGZEGYw97djhXHwAAATZSURBVFjDlVcHW+MwDO1eFCjj2McNOzvdpXTTXVbL/P+/5SQ7QSSX5Di1X1onfi/Sk+Q4sTDbKqWK+YuznZ2zi3wxVdqK/Zf92M1nT9gnO8rmd398GX6Z3xaoOFoiAQcx3E5efgmeSuN8F6Xg1x3G06l/wjNpMR1B0uif4EhnIuFb+0diIoFXk3IVfokisR+h52GO4JKgyjmfaMhAFNlSaPR7DpwI+lzn/E4QKIqmKIJirxCMP4izBPPZPXhgXwMBYgULw0nfg/BF5scDbslb7QeJ08yqqTEmGYoB95d4H8ETL8+n9wBqrLu6ao3bBsMwAnxISf/9BHcqxNB8Y7cWl3Zz7TAUfPrvAT6AoNEFFXvsjutL01yOuMrtBxnFXsmT/1wQHmdWAFNnI3uI48Yj0FUcHbKf62GfUfr8eeQt7Uk3mQZpZNoVRPEui5vtEz5zFEpgWnyqVBZMc6oaGNriH2hGVZ0OxEvInPeMaZWJBA7vmPbCr5jjws5HBnAUxvDMH40aCIf4G5BjRQSs8E8HFFYf8bGxgDvD55bzGhwWkoBcuIyHR/AMdaCagxXDhtL6tSqoWpd4BMnlIR+Or+rYTK/a3EAGcc6e4AWHISnWv20iCCojsHoVlQdjrMexFF2C7UMg2A2WEGWbQhXN6l3eXC6XGp4b9qxbuEB2EBGBwtocrK90cVG5mbRXm6vmx/0phq1sIAGKDgLOBiN1MrO5a9aDl+D0W6x0Ar9BCTRuIIANa90Y7LrLVRXzwVtDInCqMRWcf2bUOEAsa4wJqFowQALL9EiAtVRk8QC4OW+1pOM9jIaVASwYagyNXDj+W0NcfuZNzjtXOiL0Zzg30Llj+ptfxQs4+vBPNiL5PawFCBkgXpUaVtqGl+A8dgZHL34BcBUQrwPptToW+o37Ku+UH9eYByJIx3YkAeFnMFuGO7S5gEp7YhXxa5OOAM39RXDPXb0qmpROsswZe+twXdU55oUIZAiEv3bD1UFwIYKkmGqytPCDCwKFQCKK0yL7qtSAPX54UAbtsLuBHkb9zyLmPQSNjsSgmQwKUOIfEY8F8t4B34DvndJY9BA8tNBJq1Nev9axmaStFcQLhgYoCTo0salkIaW8OUDdWjMTR2sHPhrAFZqx6cqcKE4pl2BJJ4K6hfwvqNgAnXfKX/HU6X3Zrhnu0k7tLNZtTBRv1hkwTDBY1NzFU6doDYjJbWdQkQhWwuU7/LvhTh3SDoco4ECL4i5dwURbc8NdDZz2IwKicE8d0KIqWetLE3+lL4hvUuGSeRfVWNLfj/gpOw4smBJBkKQHCzlHGwvAj4woB1gq5NGGLSXtORBPnUQPV5/MPVkDMxbpwG7w4x0xL6Ltxka0A/4NBvV09UVk4DoSn/jl2+JQS9q9KYawisAD4CfhsZ4TH3htylsdEHARIQBusqCKyUpymycgbbkkXEXjT3z7/oKQFTFVuZD2FMJHZIDsO5x2d4aAr2jR+GLwZhtAb028/0yJ9J8dE87jQyKObcjtTXT8dH+fDuKF4/eiPwzH44wTf/yUi6wrpRIOZ9lM1EtXAifFI+CJn9+iX/t2xMQwOMth/UZbASi8btAwR9FHWSpJr75g9Oqbin3VDg+SpwlP6k6TB4ex/7JvmcJx8jydy6XPk8eFTKhyfwCgX71MSvaBHgAAAABJRU5ErkJggg==)}
.clockwork-badge {
position: fixed;
z-index: 1000; /* Increased z-index for better visibility */
bottom: 0; /* Added some spacing from the bottom */
left: 0; /* Added some spacing from the left */
padding: 5px;
background-color: #eee;
border: 1px solid #ccc;
border-bottom: 0;
border-left: 0;
display: flex;
align-items: center;
border-radius: 0 4px 0 0; /* Rounded top corners */
box-shadow: 0 2px 5px rgba(0,0,0,0.2);
font-size: 14px;
color: #333;
transition: background-color 0.3s ease;
}
.clockwork-badge:hover {
background-color: #ddd;
}
.clockwork-badge i {
display: block;
height: 24px;
width: 24px;
background-size: contain;
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAA/1BMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeHh4AAAD///8EBAT7+/sLCwv29vYVFRUvLy/t7e3m5ubCwsKxsbE/Pz+mpqZMTEwcHBzy8vLp6emfn5+AgIA2Njbi4uLf39+rq6tzc3NWVlYhISHa2trW1tbS0tLMzMy7u7uZmZmUlJSMjIxvb29kZGRHR0c7Ozt5eXkqKiq1tbWQkJBqampbW1tSUlLHx8eHh4ckJCRDQ0M3wD42AAAAI3RSTlMA/PibTbQ0x76TVAlw4LhZLOuEYCAN9Hjx0a2ppGZEGYw97djhXHwAAATZSURBVFjDlVcHW+MwDO1eFCjj2McNOzvdpXTTXVbL/P+/5SQ7QSSX5Di1X1onfi/Sk+Q4sTDbKqWK+YuznZ2zi3wxVdqK/Zf92M1nT9gnO8rmd398GX6Z3xaoOFoiAQcx3E5efgmeSuN8F6Xg1x3G06l/wjNpMR1B0uif4EhnIuFb+0diIoFXk3IVfokisR+h52GO4JKgyjmfaMhAFNlSaPR7DpwI+lzn/E4QKIqmKIJirxCMP4izBPPZPXhgXwMBYgULw0nfg/BF5scDbslb7QeJ08yqqTEmGYoB95d4H8ETL8+n9wBqrLu6ao3bBsMwAnxISf/9BHcqxNB8Y7cWl3Zz7TAUfPrvAT6AoNEFFXvsjutL01yOuMrtBxnFXsmT/1wQHmdWAFNnI3uI48Yj0FUcHbKf62GfUfr8eeQt7Uk3mQZpZNoVRPEui5vtEz5zFEpgWnyqVBZMc6oaGNriH2hGVZ0OxEvInPeMaZWJBA7vmPbCr5jjws5HBnAUxvDMH40aCIf4G5BjRQSs8E8HFFYf8bGxgDvD55bzGhwWkoBcuIyHR/AMdaCagxXDhtL6tSqoWpd4BMnlIR+Or+rYTK/a3EAGcc6e4AWHISnWv20iCCojsHoVlQdjrMexFF2C7UMg2A2WEGWbQhXN6l3eXC6XGp4b9qxbuEB2EBGBwtocrK90cVG5mbRXm6vmx/0phq1sIAGKDgLOBiN1MrO5a9aDl+D0W6x0Ar9BCTRuIIANa90Y7LrLVRXzwVtDInCqMRWcf2bUOEAsa4wJqFowQALL9EiAtVRk8QC4OW+1pOM9jIaVASwYagyNXDj+W0NcfuZNzjtXOiL0Zzg30Llj+ptfxQs4+vBPNiL5PawFCBkgXpUaVtqGl+A8dgZHL34BcBUQrwPptToW+o37Ku+UH9eYByJIx3YkAeFnMFuGO7S5gEp7YhXxa5OOAM39RXDPXb0qmpROsswZe+twXdU55oUIZAiEv3bD1UFwIYKkmGqytPCDCwKFQCKK0yL7qtSAPX54UAbtsLuBHkb9zyLmPQSNjsSgmQwKUOIfEY8F8t4B34DvndJY9BA8tNBJq1Nev9axmaStFcQLhgYoCTo0salkIaW8OUDdWjMTR2sHPhrAFZqx6cqcKE4pl2BJJ4K6hfwvqNgAnXfKX/HU6X3Zrhnu0k7tLNZtTBRv1hkwTDBY1NzFU6doDYjJbWdQkQhWwuU7/LvhTh3SDoco4ECL4i5dwURbc8NdDZz2IwKicE8d0KIqWetLE3+lL4hvUuGSeRfVWNLfj/gpOw4smBJBkKQHCzlHGwvAj4woB1gq5NGGLSXtORBPnUQPV5/MPVkDMxbpwG7w4x0xL6Ltxka0A/4NBvV09UVk4DoSn/jl2+JQS9q9KYawisAD4CfhsZ4TH3htylsdEHARIQBusqCKyUpymycgbbkkXEXjT3z7/oKQFTFVuZD2FMJHZIDsO5x2d4aAr2jR+GLwZhtAb028/0yJ9J8dE87jQyKObcjtTXT8dH+fDuKF4/eiPwzH44wTf/yUi6wrpRIOZ9lM1EtXAifFI+CJn9+iX/t2xMQwOMth/UZbASi8btAwR9FHWSpJr75g9Oqbin3VDg+SpwlP6k6TB4ex/7JvmcJx8jydy6XPk8eFTKhyfwCgX71MSvaBHgAAAABJRU5ErkJggg==);
}
.clockwork-badge .tooltip {
display: none; /* Hidden by default */
position: absolute;
bottom: 35px; /* Position above the badge */
left: 0;
width: 450px;
padding: 20px;
background-color: #fff;
border: 1px solid #ccc;
border-radius: 4px;
font-size: 16px;
color: #666;
line-height: 1.5;
box-shadow: 0 2px 8px rgba(0,0,0,0.2);
z-index: 1001; /* Ensure it appears above other elements */
}
.clockwork-badge:hover .tooltip {
display: block; /* Show tooltip on hover */
}
.clockwork-badge .tooltip a {
color: #007BFF;
text-decoration: none;
}
.clockwork-badge .tooltip a:hover {
text-decoration: underline;
}

View File

@@ -1,3 +1,37 @@
/** Clockwork Debugger JS **/
document.addEventListener("DOMContentLoaded",function () {
var e=document.createElement("div");e.appendChild(document.createElement("i")),e.className="clockwork-badge",document.body.appendChild(e)});
document.addEventListener("DOMContentLoaded", function () {
// Directly select the script tag by its id
var currentScript = document.getElementById('clockwork-script');
if (!currentScript) {
console.error("Clockwork Debugger: Script tag with id 'clockwork-script' not found.");
return;
}
var route = currentScript.getAttribute('data-route') || '/clockwork'; // Default route if not specified
// Debugging: Log the route to verify
console.log("Clockwork Debugger Route:", route);
// Create the badge container
var badge = document.createElement("div");
badge.className = "clockwork-badge";
badge.setAttribute('aria-label', 'Clockwork Debugger Enabled');
badge.setAttribute('role', 'button');
// Create the icon element
var icon = document.createElement("i");
badge.appendChild(icon);
// Create the tooltip element
var tooltip = document.createElement("div");
tooltip.className = "tooltip";
tooltip.innerHTML = `
<b>Grav Clockwork Debugger Enabled.</b><br>
Install the <b>Clockwork Browser extension</b> (Chrome or Firefox) or use the <b>"Clockwork Web"</b> Grav plugin to <a href="${route}" target="_blank">View Debug Info 🔗</a>.
`;
badge.appendChild(tooltip);
// Append the badge to the body
document.body.appendChild(badge);
});

View File

@@ -14,11 +14,8 @@ div.phpdebugbar {
padding: 5px 8px;
}
.phpdebugbar div.phpdebugbar-header, .phpdebugbar a.phpdebugbar-restore-btn {
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAA/1BMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeHh4AAAD///8EBAT7+/sLCwv29vYVFRUvLy/t7e3m5ubCwsKxsbE/Pz+mpqZMTEwcHBzy8vLp6emfn5+AgIA2Njbi4uLf39+rq6tzc3NWVlYhISHa2trW1tbS0tLMzMy7u7uZmZmUlJSMjIxvb29kZGRHR0c7Ozt5eXkqKiq1tbWQkJBqampbW1tSUlLHx8eHh4ckJCRDQ0M3wD42AAAAI3RSTlMA/PibTbQ0x76TVAlw4LhZLOuEYCAN9Hjx0a2ppGZEGYw97djhXHwAAATZSURBVFjDlVcHW+MwDO1eFCjj2McNOzvdpXTTXVbL/P+/5SQ7QSSX5Di1X1onfi/Sk+Q4sTDbKqWK+YuznZ2zi3wxVdqK/Zf92M1nT9gnO8rmd398GX6Z3xaoOFoiAQcx3E5efgmeSuN8F6Xg1x3G06l/wjNpMR1B0uif4EhnIuFb+0diIoFXk3IVfokisR+h52GO4JKgyjmfaMhAFNlSaPR7DpwI+lzn/E4QKIqmKIJirxCMP4izBPPZPXhgXwMBYgULw0nfg/BF5scDbslb7QeJ08yqqTEmGYoB95d4H8ETL8+n9wBqrLu6ao3bBsMwAnxISf/9BHcqxNB8Y7cWl3Zz7TAUfPrvAT6AoNEFFXvsjutL01yOuMrtBxnFXsmT/1wQHmdWAFNnI3uI48Yj0FUcHbKf62GfUfr8eeQt7Uk3mQZpZNoVRPEui5vtEz5zFEpgWnyqVBZMc6oaGNriH2hGVZ0OxEvInPeMaZWJBA7vmPbCr5jjws5HBnAUxvDMH40aCIf4G5BjRQSs8E8HFFYf8bGxgDvD55bzGhwWkoBcuIyHR/AMdaCagxXDhtL6tSqoWpd4BMnlIR+Or+rYTK/a3EAGcc6e4AWHISnWv20iCCojsHoVlQdjrMexFF2C7UMg2A2WEGWbQhXN6l3eXC6XGp4b9qxbuEB2EBGBwtocrK90cVG5mbRXm6vmx/0phq1sIAGKDgLOBiN1MrO5a9aDl+D0W6x0Ar9BCTRuIIANa90Y7LrLVRXzwVtDInCqMRWcf2bUOEAsa4wJqFowQALL9EiAtVRk8QC4OW+1pOM9jIaVASwYagyNXDj+W0NcfuZNzjtXOiL0Zzg30Llj+ptfxQs4+vBPNiL5PawFCBkgXpUaVtqGl+A8dgZHL34BcBUQrwPptToW+o37Ku+UH9eYByJIx3YkAeFnMFuGO7S5gEp7YhXxa5OOAM39RXDPXb0qmpROsswZe+twXdU55oUIZAiEv3bD1UFwIYKkmGqytPCDCwKFQCKK0yL7qtSAPX54UAbtsLuBHkb9zyLmPQSNjsSgmQwKUOIfEY8F8t4B34DvndJY9BA8tNBJq1Nev9axmaStFcQLhgYoCTo0salkIaW8OUDdWjMTR2sHPhrAFZqx6cqcKE4pl2BJJ4K6hfwvqNgAnXfKX/HU6X3Zrhnu0k7tLNZtTBRv1hkwTDBY1NzFU6doDYjJbWdQkQhWwuU7/LvhTh3SDoco4ECL4i5dwURbc8NdDZz2IwKicE8d0KIqWetLE3+lL4hvUuGSeRfVWNLfj/gpOw4smBJBkKQHCzlHGwvAj4woB1gq5NGGLSXtORBPnUQPV5/MPVkDMxbpwG7w4x0xL6Ltxka0A/4NBvV09UVk4DoSn/jl2+JQS9q9KYawisAD4CfhsZ4TH3htylsdEHARIQBusqCKyUpymycgbbkkXEXjT3z7/oKQFTFVuZD2FMJHZIDsO5x2d4aAr2jR+GLwZhtAb028/0yJ9J8dE87jQyKObcjtTXT8dH+fDuKF4/eiPwzH44wTf/yUi6wrpRIOZ9lM1EtXAifFI+CJn9+iX/t2xMQwOMth/UZbASi8btAwR9FHWSpJr75g9Oqbin3VDg+SpwlP6k6TB4ex/7JvmcJx8jydy6XPk8eFTKhyfwCgX71MSvaBHgAAAABJRU5ErkJggg==);
}
.phpdebugbar a.phpdebugbar-restore-btn {
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAA/1BMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeHh4AAAD///8EBAT7+/sLCwv29vYVFRUvLy/t7e3m5ubCwsKxsbE/Pz+mpqZMTEwcHBzy8vLp6emfn5+AgIA2Njbi4uLf39+rq6tzc3NWVlYhISHa2trW1tbS0tLMzMy7u7uZmZmUlJSMjIxvb29kZGRHR0c7Ozt5eXkqKiq1tbWQkJBqampbW1tSUlLHx8eHh4ckJCRDQ0M3wD42AAAAI3RSTlMA/PibTbQ0x76TVAlw4LhZLOuEYCAN9Hjx0a2ppGZEGYw97djhXHwAAATZSURBVFjDlVcHW+MwDO1eFCjj2McNOzvdpXTTXVbL/P+/5SQ7QSSX5Di1X1onfi/Sk+Q4sTDbKqWK+YuznZ2zi3wxVdqK/Zf92M1nT9gnO8rmd398GX6Z3xaoOFoiAQcx3E5efgmeSuN8F6Xg1x3G06l/wjNpMR1B0uif4EhnIuFb+0diIoFXk3IVfokisR+h52GO4JKgyjmfaMhAFNlSaPR7DpwI+lzn/E4QKIqmKIJirxCMP4izBPPZPXhgXwMBYgULw0nfg/BF5scDbslb7QeJ08yqqTEmGYoB95d4H8ETL8+n9wBqrLu6ao3bBsMwAnxISf/9BHcqxNB8Y7cWl3Zz7TAUfPrvAT6AoNEFFXvsjutL01yOuMrtBxnFXsmT/1wQHmdWAFNnI3uI48Yj0FUcHbKf62GfUfr8eeQt7Uk3mQZpZNoVRPEui5vtEz5zFEpgWnyqVBZMc6oaGNriH2hGVZ0OxEvInPeMaZWJBA7vmPbCr5jjws5HBnAUxvDMH40aCIf4G5BjRQSs8E8HFFYf8bGxgDvD55bzGhwWkoBcuIyHR/AMdaCagxXDhtL6tSqoWpd4BMnlIR+Or+rYTK/a3EAGcc6e4AWHISnWv20iCCojsHoVlQdjrMexFF2C7UMg2A2WEGWbQhXN6l3eXC6XGp4b9qxbuEB2EBGBwtocrK90cVG5mbRXm6vmx/0phq1sIAGKDgLOBiN1MrO5a9aDl+D0W6x0Ar9BCTRuIIANa90Y7LrLVRXzwVtDInCqMRWcf2bUOEAsa4wJqFowQALL9EiAtVRk8QC4OW+1pOM9jIaVASwYagyNXDj+W0NcfuZNzjtXOiL0Zzg30Llj+ptfxQs4+vBPNiL5PawFCBkgXpUaVtqGl+A8dgZHL34BcBUQrwPptToW+o37Ku+UH9eYByJIx3YkAeFnMFuGO7S5gEp7YhXxa5OOAM39RXDPXb0qmpROsswZe+twXdU55oUIZAiEv3bD1UFwIYKkmGqytPCDCwKFQCKK0yL7qtSAPX54UAbtsLuBHkb9zyLmPQSNjsSgmQwKUOIfEY8F8t4B34DvndJY9BA8tNBJq1Nev9axmaStFcQLhgYoCTo0salkIaW8OUDdWjMTR2sHPhrAFZqx6cqcKE4pl2BJJ4K6hfwvqNgAnXfKX/HU6X3Zrhnu0k7tLNZtTBRv1hkwTDBY1NzFU6doDYjJbWdQkQhWwuU7/LvhTh3SDoco4ECL4i5dwURbc8NdDZz2IwKicE8d0KIqWetLE3+lL4hvUuGSeRfVWNLfj/gpOw4smBJBkKQHCzlHGwvAj4woB1gq5NGGLSXtORBPnUQPV5/MPVkDMxbpwG7w4x0xL6Ltxka0A/4NBvV09UVk4DoSn/jl2+JQS9q9KYawisAD4CfhsZ4TH3htylsdEHARIQBusqCKyUpymycgbbkkXEXjT3z7/oKQFTFVuZD2FMJHZIDsO5x2d4aAr2jR+GLwZhtAb028/0yJ9J8dE87jQyKObcjtTXT8dH+fDuKF4/eiPwzH44wTf/yUi6wrpRIOZ9lM1EtXAifFI+CJn9+iX/t2xMQwOMth/UZbASi8btAwR9FHWSpJr75g9Oqbin3VDg+SpwlP6k6TB4ex/7JvmcJx8jydy6XPk8eFTKhyfwCgX71MSvaBHgAAAABJRU5ErkJggg==);
width: 13px;
}

File diff suppressed because one or more lines are too long

View File

@@ -4,72 +4,788 @@ form:
validation: loose
fields:
scheduler_tabs:
type: tabs
active: 1
status_title:
type: section
title: PLUGIN_ADMIN.SCHEDULER_STATUS
underline: true
fields:
status_tab:
type: tab
title: PLUGIN_ADMIN.SCHEDULER_STATUS
status:
type: cronstatus
validate:
type: commalist
fields:
status_title:
type: section
title: PLUGIN_ADMIN.SCHEDULER_STATUS
underline: true
jobs_title:
type: section
title: PLUGIN_ADMIN.SCHEDULER_JOBS
underline: true
status:
type: cronstatus
validate:
type: commalist
webhook_status_override:
type: display
label:
content: |
<script>
(function() {
function updateSchedulerStatus() {
// Find all notice bars
var notices = document.querySelectorAll('.notice');
var webhookStatusChecked = false;
// Check for modern scheduler and webhook settings
fetch(window.location.origin + '/grav-editor-pro/scheduler/health')
.then(response => response.json())
.then(data => {
if (data.webhook_enabled) {
notices.forEach(function(notice) {
if (notice.textContent.includes('Not Enabled for user:')) {
// This is the cron status notice - replace it
notice.className = 'notice info';
notice.innerHTML = '<i class="fa fa-fw fa-check-circle"></i> <strong>Webhook Active</strong> - Scheduler can be triggered via webhook. Cron is not configured.';
}
});
// Also update the main status if it exists
var statusDiv = document.querySelector('.cronstatus-status');
if (statusDiv && statusDiv.textContent.includes('Not Enabled')) {
statusDiv.className = 'cronstatus-status success';
statusDiv.innerHTML = '<i class="fa fa-fw fa-check"></i> Webhook Ready';
}
}
})
.catch(error => {
console.log('Webhook status check failed:', error);
});
}
// Run on page load
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', updateSchedulerStatus);
} else {
updateSchedulerStatus();
}
// Also run after a short delay to catch any late-rendered elements
setTimeout(updateSchedulerStatus, 500);
})();
</script>
markdown: false
status_enhanced:
type: display
label:
content: |
<script>
document.addEventListener('DOMContentLoaded', function() {
// Check if webhook is enabled
var webhookEnabled = document.querySelector('[name="data[scheduler][modern][webhook][enabled]"]:checked');
var statusDiv = document.querySelector('.cronstatus-status');
// Also find the parent notice bar
var noticeBar = document.querySelector('.notice.alert');
if (statusDiv) {
var currentStatus = statusDiv.textContent || statusDiv.innerText;
var cronReady = currentStatus.includes('Ready');
var cronNotEnabled = currentStatus.includes('Not Enabled');
// Check if scheduler-webhook plugin exists
var webhookPluginInstalled = false;
fetch(window.location.origin + '/grav-editor-pro/scheduler/health')
.then(response => response.json())
.then(data => {
webhookPluginInstalled = true;
updateStatusDisplay(data);
})
.catch(error => {
updateStatusDisplay(null);
});
function updateStatusDisplay(healthData) {
var isWebhookEnabled = webhookEnabled && webhookEnabled.value == '1';
var isWebhookReady = webhookPluginInstalled && isWebhookEnabled && healthData && healthData.webhook_enabled;
// Update the main status text
var mainStatusText = '';
var mainStatusClass = '';
if (cronReady && isWebhookReady) {
mainStatusText = 'Cron and Webhook Ready';
mainStatusClass = 'success';
} else if (cronReady) {
mainStatusText = 'Cron Ready';
mainStatusClass = 'success';
} else if (isWebhookReady) {
mainStatusText = 'Webhook Ready (No Cron)';
mainStatusClass = 'success'; // Changed from warning to success
} else if (cronNotEnabled && !isWebhookReady) {
mainStatusText = 'Not Configured';
mainStatusClass = 'error';
} else {
mainStatusText = 'Configuration Pending';
mainStatusClass = 'warning';
}
// Update the notice bar if webhooks are ready
if (noticeBar && isWebhookReady) {
// Change from error (red) to success (green) or info (blue)
noticeBar.classList.remove('alert');
noticeBar.classList.add('info');
var noticeIcon = noticeBar.querySelector('i.fa');
if (noticeIcon) {
noticeIcon.classList.remove('fa-times-circle');
noticeIcon.classList.add('fa-check-circle');
}
var noticeText = noticeBar.querySelector('strong') || noticeBar;
var username = noticeText.textContent.match(/user:\s*(\w+)/);
if (username) {
noticeText.innerHTML = 'Webhook Ready for user: <b>' + username[1] + '</b> (Cron not configured)';
} else {
noticeText.innerHTML = mainStatusText;
}
}
// Update the main status div
if (statusDiv) {
statusDiv.innerHTML = '<i class="fa fa-fw fa-' +
(mainStatusClass === 'success' ? 'check' : mainStatusClass === 'warning' ? 'exclamation' : 'times') +
'"></i> ' + mainStatusText;
statusDiv.className = 'cronstatus-status ' + mainStatusClass;
}
// Update install instructions button/content
var installButton = document.querySelector('.cronstatus-install-button');
var installDiv = document.querySelector('.cronstatus-install');
if (installDiv) {
var installHtml = '<div class="alert alert-info">';
installHtml += '<h4>Setup Instructions:</h4>';
var hasInstructions = false;
// Cron setup
if (!cronReady) {
installHtml += '<p><strong>Option 1: Traditional Cron</strong><br>';
installHtml += 'Run: <code>bin/grav scheduler --install</code><br>';
installHtml += 'This will add a cron job that runs every minute.</p>';
hasInstructions = true;
}
// Webhook setup
if (!webhookPluginInstalled) {
installHtml += '<p><strong>Option 2: Webhook Support</strong><br>';
installHtml += '1. Install plugin: <code>bin/gpm install scheduler-webhook</code><br>';
installHtml += '2. Configure webhook token in Advanced Features tab<br>';
installHtml += '3. Use webhook URL in your CI/CD or cloud scheduler</p>';
hasInstructions = true;
} else if (!isWebhookEnabled) {
installHtml += '<p><strong>Webhook Plugin Installed</strong><br>';
installHtml += 'Enable webhooks in Advanced Features tab and set a secure token.</p>';
hasInstructions = true;
} else if (isWebhookReady) {
installHtml += '<p><strong>✅ Webhook is Active!</strong><br>';
installHtml += 'Trigger URL: <code>' + window.location.origin + '/grav-editor-pro/scheduler/webhook</code><br>';
installHtml += 'Use with Authorization header: <code>Bearer YOUR_TOKEN</code></p>';
if (!cronReady) {
installHtml += '<p class="text-muted"><small>Note: No cron job configured. Scheduler runs only via webhook triggers.</small></p>';
}
}
if (!hasInstructions && cronReady) {
installHtml += '<p><strong>✅ Cron is configured and ready!</strong><br>';
installHtml += 'The scheduler runs automatically every minute via system cron.</p>';
}
installHtml += '</div>';
installDiv.innerHTML = installHtml;
// Update button text based on status
if (installButton) {
if (cronReady && isWebhookReady) {
installButton.innerHTML = '<i class="fa fa-info-circle"></i> Configuration Details';
} else if (cronReady || isWebhookReady) {
installButton.innerHTML = '<i class="fa fa-plus-circle"></i> Add More Triggers';
} else {
installButton.innerHTML = '<i class="fa fa-exclamation-triangle"></i> Install Instructions';
}
}
}
}
}
});
</script>
custom_jobs:
type: list
style: vertical
label:
classes: cron-job-list compact
key: id
fields:
.id:
type: key
label: ID
placeholder: 'process-name'
validate:
required: true
pattern: '[a-zа-я0-9_\-]+'
max: 20
message: 'ID must be lowercase with dashes/underscores only and less than 20 characters'
.command:
type: text
label: PLUGIN_ADMIN.COMMAND
placeholder: 'cd ~;ls -lah;'
validate:
required: true
.args:
type: text
label: PLUGIN_ADMIN.EXTRA_ARGUMENTS
.at:
type: cron
label: PLUGIN_ADMIN.SCHEDULER_RUNAT
help: PLUGIN_ADMIN.SCHEDULER_RUNAT_HELP
placeholder: '* * * * *'
validate:
required: true
.output:
type: text
label: PLUGIN_ADMIN.SCHEDULER_OUTPUT
help: PLUGIN_ADMIN.SCHEDULER_OUTPUT_HELP
placeholder: 'logs/ls-cron.out'
.output_mode:
type: select
label: PLUGIN_ADMIN.SCHEDULER_OUTPUT_TYPE
help: PLUGIN_ADMIN.SCHEDULER_OUTPUT_TYPE_HELP
default: append
options:
append: Append
overwrite: Overwrite
.email:
type: text
label: PLUGIN_ADMIN.SCHEDULER_EMAIL
help: PLUGIN_ADMIN.SCHEDULER_EMAIL_HELP
placeholder: 'notifications@yoursite.com'
modern_health:
type: display
label: Health Status
content: |
<div id="scheduler-health-status">
<div class="text-muted">Checking health...</div>
</div>
<script>
(function() {
function loadHealthStatus() {
fetch(window.location.origin + '/grav-editor-pro/scheduler/health')
.then(response => response.json())
.then(data => {
var statusEl = document.getElementById('scheduler-health-status');
if (!statusEl) return;
// Modern card-based layout
var statusColor = '#6c757d';
var statusLabel = data.status || 'unknown';
if (data.status === 'healthy') statusColor = '#28a745';
else if (data.status === 'warning') statusColor = '#ffc107';
else if (data.status === 'critical') statusColor = '#dc3545';
var html = '<div style="display: flex; flex-direction: column; gap: 1rem;">';
// Status card
html += '<div style="display: flex; align-items: center; justify-content: space-between; padding: 0.75rem 1rem; background: linear-gradient(135deg, #f8f9fa 0%, #fff 100%); border-radius: 6px; border: 1px solid #e9ecef; box-shadow: 0 1px 3px rgba(0,0,0,0.05);">';
html += '<span style="font-weight: 500; color: #495057;">Status:</span>';
html += '<span style="background: ' + statusColor + '; color: white; padding: 0.375rem 0.75rem; font-size: 0.875rem; font-weight: 500; border-radius: 4px; text-transform: uppercase; letter-spacing: 0.025em;">' + statusLabel + '</span>';
html += '</div>';
// Info grid
html += '<div style="display: grid; grid-template-columns: 1fr 1fr; gap: 0.75rem;">';
// Last run card
html += '<div style="background: white; border: 1px solid #e9ecef; border-radius: 6px; padding: 0.75rem; box-shadow: 0 1px 2px rgba(0,0,0,0.03);">';
html += '<div style="color: #6c757d; font-size: 0.75rem; text-transform: uppercase; letter-spacing: 0.05em; margin-bottom: 0.25rem;">Last Run</div>';
if (data.last_run) {
var age = data.last_run_age;
var ageText = 'just now';
if (age > 86400) {
ageText = Math.floor(age / 86400) + ' day(s) ago';
} else if (age > 3600) {
ageText = Math.floor(age / 3600) + ' hour(s) ago';
} else if (age > 60) {
ageText = Math.floor(age / 60) + ' minute(s) ago';
} else if (age > 0) {
ageText = age + ' second(s) ago';
}
html += '<div style="font-size: 1rem; color: #212529; font-weight: 500;">' + ageText + '</div>';
} else {
html += '<div style="font-size: 1rem; color: #6c757d;">Never</div>';
}
html += '</div>';
// Jobs count card
html += '<div style="background: white; border: 1px solid #e9ecef; border-radius: 6px; padding: 0.75rem; box-shadow: 0 1px 2px rgba(0,0,0,0.03);">';
html += '<div style="color: #6c757d; font-size: 0.75rem; text-transform: uppercase; letter-spacing: 0.05em; margin-bottom: 0.25rem;">Scheduled Jobs</div>';
html += '<div style="font-size: 1rem; color: #212529; font-weight: 500;">' + (data.scheduled_jobs || 0) + '</div>';
html += '</div>';
html += '</div>'; // Close grid
// Additional info if available
if (data.modern_features && data.queue_size !== undefined) {
html += '<div style="background: white; border: 1px solid #e9ecef; border-radius: 6px; padding: 0.75rem; box-shadow: 0 1px 2px rgba(0,0,0,0.03);">';
html += '<span style="color: #6c757d; font-size: 0.875rem;">Queue Size: </span>';
html += '<span style="font-weight: 500;">' + data.queue_size + '</span>';
html += '</div>';
}
// Failed jobs warning
if (data.failed_jobs_24h > 0) {
html += '<div style="background: #fff5f5; border: 1px solid #feb2b2; border-radius: 6px; padding: 0.75rem; color: #c53030;">';
html += '<strong>⚠️ Failed Jobs (24h):</strong> ' + data.failed_jobs_24h;
html += '</div>';
}
html += '</div>'; // Close main container
statusEl.innerHTML = html;
})
.catch(error => {
var statusEl = document.getElementById('scheduler-health-status');
if (statusEl) {
statusEl.innerHTML = '<div class="alert alert-warning">Unable to fetch health status. Ensure scheduler-webhook plugin is installed.</div>';
}
});
}
// Load on page ready
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', loadHealthStatus);
} else {
loadHealthStatus();
}
// Refresh every 30 seconds
setInterval(loadHealthStatus, 30000);
})();
</script>
markdown: false
trigger_methods:
type: display
label: Active Triggers
content: |
<div id="scheduler-triggers">
<div class="text-muted">Checking triggers...</div>
</div>
<script>
(function() {
function loadTriggers() {
// Check cron status from the main status field
var cronReady = false;
var statusDiv = document.querySelector('.cronstatus-status');
if (statusDiv) {
var statusText = statusDiv.textContent || statusDiv.innerText;
cronReady = statusText.includes('Ready');
}
// Check webhook status
fetch(window.location.origin + '/grav-editor-pro/scheduler/health')
.then(response => response.json())
.then(data => {
var triggersEl = document.getElementById('scheduler-triggers');
if (!triggersEl) return;
var html = '<div style="display: flex; flex-direction: column; gap: 0.5rem;">';
// Cron trigger card
var cronIcon = cronReady ? '✅' : '❌';
var cronStatus = cronReady ? 'Active' : 'Not Configured';
var cronStatusColor = cronReady ? '#28a745' : '#6c757d';
var cardBg = cronReady ? '#f8f9fa' : '#fff';
html += '<div style="display: flex; align-items: center; justify-content: space-between; padding: 0.75rem 1rem; background: ' + cardBg + '; border: 1px solid #e9ecef; border-radius: 4px;">';
html += '<div style="display: flex; align-items: center; gap: 0.75rem;">';
html += '<span style="font-size: 1.25rem; line-height: 1;">' + cronIcon + '</span>';
html += '<span style="font-weight: 500; color: #212529; font-size: 1rem;">Cron:</span>';
html += '</div>';
html += '<span style="background: ' + cronStatusColor + '; color: white; padding: 0.25rem 0.75rem; font-size: 0.875rem; font-weight: 500; border-radius: 3px; text-transform: uppercase; letter-spacing: 0.025em;">' + cronStatus + '</span>';
html += '</div>';
// Webhook trigger card
if (data.webhook_enabled) {
html += '<div style="display: flex; align-items: center; justify-content: space-between; padding: 0.75rem 1rem; background: #f8f9fa; border: 1px solid #e9ecef; border-radius: 4px;">';
html += '<div style="display: flex; align-items: center; gap: 0.75rem;">';
html += '<span style="font-size: 1.25rem; line-height: 1;">✅</span>';
html += '<span style="font-weight: 500; color: #212529; font-size: 1rem;">Webhook:</span>';
html += '</div>';
html += '<span style="background: #28a745; color: white; padding: 0.25rem 0.75rem; font-size: 0.875rem; font-weight: 500; border-radius: 3px; text-transform: uppercase; letter-spacing: 0.025em;">ACTIVE</span>';
html += '</div>';
} else {
// Show webhook as not configured/disabled
html += '<div style="display: flex; align-items: center; justify-content: space-between; padding: 0.75rem 1rem; background: #fff; border: 1px solid #e9ecef; border-radius: 4px;">';
html += '<div style="display: flex; align-items: center; gap: 0.75rem;">';
html += '<span style="font-size: 1.25rem; line-height: 1;">⚠️</span>';
html += '<span style="font-weight: 500; color: #212529; font-size: 1rem;">Webhook:</span>';
html += '</div>';
html += '<span style="background: #ffc107; color: #212529; padding: 0.25rem 0.75rem; font-size: 0.875rem; font-weight: 500; border-radius: 3px; text-transform: uppercase; letter-spacing: 0.025em;">DISABLED</span>';
html += '</div>';
}
html += '</div>';
// Add warning if no triggers active
if (!cronReady && !data.webhook_enabled) {
html += '<div class="alert alert-warning" style="margin-top: 1rem;"><i class="fa fa-exclamation-triangle"></i> No triggers active! Configure cron or enable webhooks.</div>';
}
triggersEl.innerHTML = html;
})
.catch(error => {
var triggersEl = document.getElementById('scheduler-triggers');
if (triggersEl) {
// Show just cron status if health endpoint not available
var html = '<ul class="list-unstyled">';
if (cronReady) {
html += '<li>✅ <strong>Cron:</strong> <span class="badge badge-success">Active</span></li>';
} else {
html += '<li>❌ <strong>Cron:</strong> <span class="badge badge-secondary">Not Configured</span></li>';
}
html += '<li>⚠️ <strong>Webhook:</strong> <span class="badge badge-secondary">Plugin Not Installed</span></li>';
html += '</ul>';
triggersEl.innerHTML = html;
}
});
}
// Load on page ready
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', loadTriggers);
} else {
loadTriggers();
}
})();
</script>
markdown: false
jobs_tab:
type: tab
title: PLUGIN_ADMIN.SCHEDULER_JOBS
fields:
jobs_title:
type: section
title: PLUGIN_ADMIN.SCHEDULER_JOBS
underline: true
custom_jobs:
type: list
style: vertical
label:
classes: cron-job-list compact
key: id
fields:
.id:
type: key
label: ID
placeholder: 'process-name'
validate:
required: true
pattern: '[a-zа-я0-9_\-]+'
max: 20
message: 'ID must be lowercase with dashes/underscores only and less than 20 characters'
.command:
type: text
label: PLUGIN_ADMIN.COMMAND
placeholder: 'ls'
validate:
required: true
.args:
type: text
label: PLUGIN_ADMIN.EXTRA_ARGUMENTS
placeholder: '-lah'
.at:
type: text
wrapper_classes: cron-selector
label: PLUGIN_ADMIN.SCHEDULER_RUNAT
help: PLUGIN_ADMIN.SCHEDULER_RUNAT_HELP
placeholder: '* * * * *'
validate:
required: true
.output:
type: text
label: PLUGIN_ADMIN.SCHEDULER_OUTPUT
help: PLUGIN_ADMIN.SCHEDULER_OUTPUT_HELP
placeholder: 'logs/ls-cron.out'
.output_mode:
type: select
label: PLUGIN_ADMIN.SCHEDULER_OUTPUT_TYPE
help: PLUGIN_ADMIN.SCHEDULER_OUTPUT_TYPE_HELP
default: append
options:
append: Append
overwrite: Overwrite
.email:
type: text
label: PLUGIN_ADMIN.SCHEDULER_EMAIL
help: PLUGIN_ADMIN.SCHEDULER_EMAIL_HELP
placeholder: 'notifications@yoursite.com'
modern_tab:
type: tab
title: Advanced Features
fields:
workers_section:
type: section
title: Worker Configuration
underline: true
fields:
modern.workers:
type: number
label: Concurrent Workers
help: Number of jobs that can run simultaneously (1 = sequential)
default: 4
size: x-small
append: workers
validate:
type: int
min: 1
max: 10
retry_section:
type: section
title: Retry Configuration
underline: true
fields:
modern.retry.enabled:
type: toggle
label: Enable Job Retry
help: Automatically retry failed jobs
highlight: 1
default: 1
options:
1: PLUGIN_ADMIN.ENABLED
0: PLUGIN_ADMIN.DISABLED
validate:
type: bool
modern.retry.max_attempts:
type: number
label: Maximum Retry Attempts
help: Maximum number of times to retry a failed job
default: 3
size: x-small
append: retries
validate:
type: int
min: 1
max: 10
modern.retry.backoff:
type: select
label: Retry Backoff Strategy
help: How to calculate delay between retries
default: exponential
options:
linear: Linear (fixed delay)
exponential: Exponential (increasing delay)
queue_section:
type: section
title: Queue Configuration
underline: true
fields:
modern.queue.path:
type: text
label: Queue Storage Path
help: Where to store queued jobs
default: 'user-data://scheduler/queue'
placeholder: 'user-data://scheduler/queue'
modern.queue.max_size:
type: number
label: Maximum Queue Size
help: Maximum number of jobs that can be queued
default: 1000
size: x-small
append: jobs
validate:
type: int
min: 100
max: 10000
history_section:
type: section
title: Job History
underline: true
fields:
modern.history.enabled:
type: toggle
label: Enable Job History
help: Track execution history for all jobs
highlight: 1
default: 1
options:
1: PLUGIN_ADMIN.ENABLED
0: PLUGIN_ADMIN.DISABLED
validate:
type: bool
modern.history.retention_days:
type: number
label: History Retention (days)
help: How long to keep job history
default: 30
size: x-small
append: days
validate:
type: int
min: 1
max: 365
webhook_section:
type: section
title: Webhook Configuration
underline: true
fields:
webhook_plugin_status:
type: webhook-status
label:
modern.webhook.enabled:
type: toggle
label: Enable Webhook Triggers
help: Allow triggering scheduler via HTTP webhook
highlight: 0
default: 0
options:
1: PLUGIN_ADMIN.ENABLED
0: PLUGIN_ADMIN.DISABLED
validate:
type: bool
modern.webhook.token:
type: text
label: Webhook Security Token
help: Secret token for authenticating webhook requests. Keep this secret!
placeholder: 'Click Generate to create a secure token'
autocomplete: 'off'
webhook_token_generate:
type: display
label:
content: |
<div style="margin-top: -10px; margin-bottom: 15px;">
<button type="button" class="button button-primary" onclick="generateWebhookToken()">
<i class="fa fa-refresh"></i> Generate Token
</button>
</div>
<script>
function generateWebhookToken() {
try {
// Generate token
const array = new Uint8Array(32);
crypto.getRandomValues(array);
const token = Array.from(array, byte => byte.toString(16).padStart(2, '0')).join('');
// Try multiple selectors to find the field
let field = document.querySelector('[name="data[scheduler][modern][webhook][token]"]');
if (!field) {
field = document.querySelector('input[name*="webhook][token"]');
}
if (!field) {
field = document.getElementById('scheduler-modern-webhook-token');
}
if (!field) {
// Look for any text input in the webhook section
const webhookSection = document.querySelector('.webhook_section');
if (webhookSection) {
const inputs = webhookSection.querySelectorAll('input[type="text"]');
// Find the token field by checking for the placeholder
for (let input of inputs) {
if (input.placeholder && input.placeholder.includes('Generate')) {
field = input;
break;
}
}
}
}
if (field) {
field.value = token;
field.dispatchEvent(new Event('change', { bubbles: true }));
field.dispatchEvent(new Event('input', { bubbles: true }));
// Flash the field to show it was updated
field.style.backgroundColor = '#d4edda';
setTimeout(function() {
field.style.backgroundColor = '';
}, 500);
// Also try to trigger Grav's form change detection
if (window.jQuery) {
jQuery(field).trigger('change');
}
} else {
// Log more debugging info
console.error('Token field not found. Looking for input fields...');
console.log('All inputs:', document.querySelectorAll('input[type="text"]'));
alert('Could not find the token field. Please ensure you are in the Advanced Features tab and the Webhook Configuration section is visible.');
}
} catch (e) {
console.error('Error generating token:', e);
alert('Error generating token: ' + e.message);
}
}
</script>
markdown: false
modern.webhook.path:
type: text
label: Webhook Path
help: URL path for webhook endpoint
default: '/scheduler/webhook'
placeholder: '/scheduler/webhook'
health_section:
type: section
title: Health Check Configuration
underline: true
fields:
modern.health.enabled:
type: toggle
label: Enable Health Check
help: Provide health status endpoint for monitoring
highlight: 1
default: 1
options:
1: PLUGIN_ADMIN.ENABLED
0: PLUGIN_ADMIN.DISABLED
validate:
type: bool
modern.health.path:
type: text
label: Health Check Path
help: URL path for health check endpoint
default: '/scheduler/health'
placeholder: '/scheduler/health'
webhook_usage:
type: section
title: Usage Examples
underline: true
fields:
webhook_examples:
type: display
label:
content: |
<script src="{{ url('plugin://admin/themes/grav/js/clipboard-helper.js') }}"></script>
<div class="webhook-examples">
<script>
// Initialize webhook commands when page loads
document.addEventListener('DOMContentLoaded', function() {
if (typeof GravClipboard !== 'undefined') {
GravClipboard.initWebhookCommands();
}
});
</script>
<div class="alert alert-info">
<h4>How to use webhooks:</h4>
<div style="margin-bottom: 1rem;">
<label style="display: block; margin-bottom: 0.25rem; font-weight: 500;">Trigger all due jobs (respects schedule):</label>
<div class="form-input-wrapper form-input-addon-wrapper">
<textarea id="webhook-all-cmd" readonly rows="2" style="font-family: monospace; background: #f5f5f5; resize: none;">Loading...</textarea>
<div class="form-input-addon form-input-append" style="cursor: pointer;" onclick="GravClipboard.copy(this)"><i class="fa fa-copy"></i> Copy</div>
</div>
</div>
<div style="margin-bottom: 1rem;">
<label style="display: block; margin-bottom: 0.25rem; font-weight: 500;">Force-run specific job (ignores schedule):</label>
<div class="form-input-wrapper form-input-addon-wrapper">
<textarea id="webhook-job-cmd" readonly rows="2" style="font-family: monospace; background: #f5f5f5; resize: none;">Loading...</textarea>
<div class="form-input-addon form-input-append" style="cursor: pointer;" onclick="GravClipboard.copy(this)"><i class="fa fa-copy"></i> Copy</div>
</div>
</div>
<div style="margin-bottom: 1rem;">
<label style="display: block; margin-bottom: 0.25rem; font-weight: 500;">Check health status:</label>
<div class="form-input-wrapper form-input-addon-wrapper">
<input type="text" id="webhook-health-cmd" readonly value="Loading..." style="font-family: monospace; background: #f5f5f5;">
<div class="form-input-addon form-input-append" style="cursor: pointer;" onclick="GravClipboard.copy(this)"><i class="fa fa-copy"></i> Copy</div>
</div>
</div>
<div style="margin-top: 1rem;">
<p><strong>GitHub Actions example:</strong></p>
<pre>- name: Trigger Scheduler
run: |
curl -X POST ${{ secrets.SITE_URL }}/scheduler/webhook \
-H "Authorization: Bearer ${{ secrets.WEBHOOK_TOKEN }}"</pre>
</div>
</div>
</div>
markdown: false

View File

@@ -103,6 +103,7 @@ form:
"D, d M Y G:i:s": Date3
"d-m-y G:i": Date4
"jS M Y": Date5
"Y-m-d G:i": Date6
pages.dateformat.long:
type: dateformat
@@ -116,6 +117,7 @@ form:
"D, d M Y G:i:s": Date3
"d-m-y G:i": Date4
"jS M Y": Date5
"Y-m-d G:i:s": Date6
pages.order.by:
type: select
@@ -177,39 +179,47 @@ form:
label: PLUGIN_ADMIN.APPEND_URL_EXT
help: PLUGIN_ADMIN.APPEND_URL_EXT_HELP
pages.redirect_default_route:
type: toggle
label: PLUGIN_ADMIN.REDIRECT_DEFAULT_ROUTE
help: PLUGIN_ADMIN.REDIRECT_DEFAULT_ROUTE_HELP
highlight: 0
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: bool
pages.redirect_default_code:
type: select
size: medium
classes: fancy
label: PLUGIN_ADMIN.REDIRECT_DEFAULT_CODE
help: PLUGIN_ADMIN.REDIRECT_DEFAULT_CODE_HELP
default: 302
options:
301: 301 - Permanent
302: 302 - Found
303: 303 - Other
304: 304 - Not Modified
301: PLUGIN_ADMIN.REDIRECT_OPTION_301
302: PLUGIN_ADMIN.REDIRECT_OPTION_302
303: PLUGIN_ADMIN.REDIRECT_OPTION_303
pages.redirect_default_route:
type: select
size: medium
classes: fancy
label: PLUGIN_ADMIN.REDIRECT_DEFAULT_ROUTE
help: PLUGIN_ADMIN.REDIRECT_DEFAULT_ROUTE_HELP
default: 0
options:
0: PLUGIN_ADMIN.REDIRECT_OPTION_NO_REDIRECT
1: PLUGIN_ADMIN.REDIRECT_OPTION_DEFAULT_REDIRECT
301: PLUGIN_ADMIN.REDIRECT_OPTION_301
302: PLUGIN_ADMIN.REDIRECT_OPTION_302
validate:
type: int
pages.redirect_trailing_slash:
type: toggle
type: select
size: medium
classes: fancy
label: PLUGIN_ADMIN.REDIRECT_TRAILING_SLASH
help: PLUGIN_ADMIN.REDIRECT_TRAILING_SLASH_HELP
highlight: 1
default: 1
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
0: PLUGIN_ADMIN.REDIRECT_OPTION_NO_REDIRECT
1: PLUGIN_ADMIN.REDIRECT_OPTION_DEFAULT_REDIRECT
301: PLUGIN_ADMIN.REDIRECT_OPTION_301
302: PLUGIN_ADMIN.REDIRECT_OPTION_302
validate:
type: bool
type: int
pages.ignore_hidden:
type: toggle
@@ -241,13 +251,15 @@ form:
type: commalist
pages.hide_empty_folders:
type: selectize
size: large
type: toggle
label: PLUGIN_ADMIN.HIDE_EMPTY_FOLDERS
help: PLUGIN_ADMIN.HIDE_EMPTY_FOLDERS_HELP
classes: fancy
highlight: 0
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: commalist
type: bool
pages.url_taxonomy_filters:
type: toggle
@@ -385,8 +397,8 @@ form:
languages.translations:
type: toggle
label: PLUGIN_ADMIN.TRANSLATIONS_ENABLED
help: PLUGIN_ADMIN.TRANSLATIONS_ENABLED_HELP
label: PLUGIN_ADMIN.LANGUAGE_TRANSLATIONS
help: PLUGIN_ADMIN.LANGUAGE_TRANSLATIONS_HELP
highlight: 1
options:
1: PLUGIN_ADMIN.YES
@@ -438,6 +450,17 @@ form:
validate:
type: bool
languages.debug:
type: toggle
label: PLUGIN_ADMIN.LANGUAGE_DEBUG
help: PLUGIN_ADMIN.LANGUAGE_DEBUG_HELP
highlight: 0
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: bool
http_headers:
type: tab
title: PLUGIN_ADMIN.HTTP_HEADERS
@@ -544,6 +567,15 @@ form:
0: PLUGIN_ADMIN.NO
validate:
type: bool
pages.markdown.valid_link_attributes:
type: selectize
size: large
label: PLUGIN_ADMIN.VALID_LINK_ATTRIBUTES
help: PLUGIN_ADMIN.VALID_LINK_ATTRIBUTES_HELP
placeholder: "rel, target, id, class, classes"
classes: fancy
validate:
type: commalist
caching:
type: tab
@@ -589,7 +621,6 @@ form:
file: File
apc: APC
apcu: APCu
xcache: Xcache
memcache: Memcache
memcached: Memcached
wincache: WinCache
@@ -602,6 +633,19 @@ form:
help: PLUGIN_ADMIN.CACHE_PREFIX_HELP
placeholder: PLUGIN_ADMIN.CACHE_PREFIX_PLACEHOLDER
cache.purge_max_age_days:
type: text
size: x-small
append: GRAV.NICETIME.DAY_PLURAL
label: PLUGIN_ADMIN.CACHE_PURGE_AGE
help: PLUGIN_ADMIN.CACHE_PURGE_AGE_HELP
validate:
type: number
min: 1
max: 365
step: 1
default: 30
cache.purge_at:
type: cron
label: PLUGIN_ADMIN.CACHE_PURGE_JOB
@@ -627,7 +671,7 @@ form:
type: toggle
label: PLUGIN_ADMIN.CLEAR_IMAGES_BY_DEFAULT
help: PLUGIN_ADMIN.CLEAR_IMAGES_BY_DEFAULT_HELP
highlight: 1
highlight: 0
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
@@ -730,6 +774,74 @@ form:
size: small
label: PLUGIN_ADMIN.REDIS_PASSWORD
cache.redis.database:
type: text
size: medium
label: PLUGIN_ADMIN.REDIS_DATABASE
help: PLUGIN_ADMIN.REDIS_DATABASE_HELP
placeholder: "0"
validate:
type: number
min: 0
flex_caching:
type: section
title: PLUGIN_ADMIN.FLEX_CACHING
flex.cache.index.enabled:
type: toggle
label: PLUGIN_ADMIN.FLEX_INDEX_CACHE_ENABLED
highlight: 1
default: 1
options:
1: PLUGIN_ADMIN.ENABLED
0: PLUGIN_ADMIN.DISABLED
validate:
type: bool
flex.cache.index.lifetime:
type: text
label: PLUGIN_ADMIN.FLEX_INDEX_CACHE_LIFETIME
default: 60
validate:
type: int
flex.cache.object.enabled:
type: toggle
label: PLUGIN_ADMIN.FLEX_OBJECT_CACHE_ENABLED
highlight: 1
default: 1
options:
1: PLUGIN_ADMIN.ENABLED
0: PLUGIN_ADMIN.DISABLED
validate:
type: bool
flex.cache.object.lifetime:
type: text
label: PLUGIN_ADMIN.FLEX_OBJECT_CACHE_LIFETIME
default: 600
validate:
type: int
flex.cache.render.enabled:
type: toggle
label: PLUGIN_ADMIN.FLEX_RENDER_CACHE_ENABLED
highlight: 1
default: 1
options:
1: PLUGIN_ADMIN.ENABLED
0: PLUGIN_ADMIN.DISABLED
validate:
type: bool
flex.cache.render.lifetime:
type: text
label: PLUGIN_ADMIN.FLEX_RENDER_CACHE_LIFETIME
default: 600
validate:
type: int
twig:
type: tab
title: PLUGIN_ADMIN.TWIG_TEMPLATING
@@ -777,7 +889,8 @@ form:
type: toggle
label: PLUGIN_ADMIN.AUTOESCAPE_VARIABLES
help: PLUGIN_ADMIN.AUTOESCAPE_VARIABLES_HELP
highlight: 0
highlight: 1
default: 1
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
@@ -800,9 +913,45 @@ form:
title: PLUGIN_ADMIN.ASSETS
fields:
assets_section:
general_config_section:
type: section
title: PLUGIN_ADMIN.ASSETS
title: PLUGIN_ADMIN.GENERAL_CONFIG
underline: true
assets.enable_asset_timestamp:
type: toggle
label: PLUGIN_ADMIN.ENABLED_TIMESTAMPS_ON_ASSETS
help: PLUGIN_ADMIN.ENABLED_TIMESTAMPS_ON_ASSETS_HELP
highlight: 0
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: bool
assets.enable_asset_sri:
type: toggle
label: PLUGIN_ADMIN.ENABLED_SRI_ON_ASSETS
help: PLUGIN_ADMIN.ENABLED_SRI_ON_ASSETS_HELP
highlight: 0
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: bool
assets.collections:
type: multilevel
label: PLUGIN_ADMIN.COLLECTIONS
placeholder_key: collection_name
placeholder_value: collection_path
validate:
type: array
css_assets_section:
type: section
title: PLUGIN_ADMIN.CSS_ASSETS
underline: true
assets.css_pipeline:
@@ -871,6 +1020,11 @@ form:
validate:
type: bool
js_assets_section:
type: section
title: PLUGIN_ADMIN.JS_ASSETS
underline: true
assets.js_pipeline:
type: toggle
label: PLUGIN_ADMIN.JAVASCRIPT_PIPELINE
@@ -915,10 +1069,15 @@ form:
validate:
type: bool
assets.enable_asset_timestamp:
js_module_assets_section:
type: section
title: PLUGIN_ADMIN.JS_MODULE_ASSETS
underline: true
assets.js_module_pipeline:
type: toggle
label: PLUGIN_ADMIN.ENABLED_TIMESTAMPS_ON_ASSETS
help: PLUGIN_ADMIN.ENABLED_TIMESTAMPS_ON_ASSETS_HELP
label: PLUGIN_ADMIN.JAVASCRIPT_MODULE_PIPELINE
help: PLUGIN_ADMIN.JAVASCRIPT_MODULE_PIPELINE_HELP
highlight: 0
options:
1: PLUGIN_ADMIN.YES
@@ -926,13 +1085,29 @@ form:
validate:
type: bool
assets.collections:
type: multilevel
label: PLUGIN_ADMIN.COLLECTIONS
placeholder_key: collection_name
placeholder_value: collection_path
assets.js_module_pipeline_include_externals:
type: toggle
label: PLUGIN_ADMIN.JAVASCRIPT_MODULE_PIPELINE_INCLUDE_EXTERNALS
help: PLUGIN_ADMIN.JAVASCRIPT_MODULE_PIPELINE_INCLUDE_EXTERNALS_HELP
highlight: 1
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: array
type: bool
assets.js_module_pipeline_before_excludes:
type: toggle
label: PLUGIN_ADMIN.JAVASCRIPT_MODULE_PIPELINE_BEFORE_EXCLUDES
help: PLUGIN_ADMIN.JAVASCRIPT_MODULE_PIPELINE_BEFORE_EXCLUDES_HELP
highlight: 1
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: bool
errors:
type: tab
@@ -1006,6 +1181,13 @@ form:
local6: local6
local7: local7
log.syslog.tag:
type: text
size: small
label: PLUGIN_ADMIN.SYSLOG_TAG
help: PLUGIN_ADMIN.SYSLOG_TAG_HELP
placeholder: "grav"
debugger:
type: tab
title: PLUGIN_ADMIN.DEBUGGER
@@ -1039,8 +1221,8 @@ form:
debugger.censored:
type: toggle
label: PLUGIN_ADMIN.SHOW_SENSITIVE
help: PLUGIN_ADMIN.SHOW_SENSITIVE_HELP
label: PLUGIN_ADMIN.DEBUGGER_CENSORED
help: PLUGIN_ADMIN.DEBUGGER_CENSORED_HELP
highlight: 0
options:
1: PLUGIN_ADMIN.YES
@@ -1069,6 +1251,16 @@ form:
title: PLUGIN_ADMIN.MEDIA
underline: true
images.adapter:
type: select
size: small
label: PLUGIN_ADMIN.IMAGE_ADAPTER
help: PLUGIN_ADMIN.IMAGE_ADAPTER_HELP
highlight: gd
options:
gd: GD (PHP built-in)
imagick: Imagick
images.default_image_quality:
type: range
append: '%'
@@ -1114,13 +1306,46 @@ form:
type: toggle
label: PLUGIN_ADMIN.IMAGES_AUTO_FIX_ORIENTATION
help: PLUGIN_ADMIN.IMAGES_AUTO_FIX_ORIENTATION_HELP
highlight: 0
highlight: 1
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: bool
images.defaults.loading:
type: select
size: small
label: PLUGIN_ADMIN.IMAGES_LOADING
help: PLUGIN_ADMIN.IMAGES_LOADING_HELP
highlight: auto
options:
auto: Auto
lazy: Lazy
eager: Eager
images.defaults.decoding:
type: select
size: small
label: PLUGIN_ADMIN.IMAGES_DECODING
help: PLUGIN_ADMIN.IMAGES_DECODING_HELP
highlight: auto
options:
auto: Auto
sync: Sync
async: Async
images.defaults.fetchpriority:
type: select
size: small
label: PLUGIN_ADMIN.IMAGES_FETCHPRIORITY
help: PLUGIN_ADMIN.IMAGES_FETCHPRIORITY_HELP
highlight: auto
options:
auto: Auto
high: High
low: Low
images.seofriendly:
type: toggle
label: PLUGIN_ADMIN.IMAGES_SEOFRIENDLY
@@ -1154,7 +1379,6 @@ form:
validate:
type: bool
media.allowed_fallback_types:
type: selectize
size: large
@@ -1173,6 +1397,45 @@ form:
validate:
type: commalist
section_images_cls:
type: section
title: PLUGIN_ADMIN.IMAGES_CLS_TITLE
underline: true
images.cls.auto_sizes:
type: toggle
label: PLUGIN_ADMIN.IMAGES_CLS_AUTO_SIZES
help: PLUGIN_ADMIN.IMAGES_CLS_AUTO_SIZES_HELP
highlight: 0
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: bool
images.cls.aspect_ratio:
type: toggle
label: PLUGIN_ADMIN.IMAGES_CLS_ASPECT_RATIO
help: PLUGIN_ADMIN.IMAGES_CLS_ASPECT_RATIO_HELP
highlight: 0
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: bool
images.cls.retina_scale:
type: select
label: PLUGIN_ADMIN.IMAGES_CLS_RETINA_SCALE
help: PLUGIN_ADMIN.IMAGES_CLS_RETINA_SCALE_HELP
size: small
highlight: 1
options:
1: 1X
2: 2X
3: 3X
4: 4X
session:
type: tab
title: PLUGIN_ADMIN.SESSION
@@ -1246,6 +1509,18 @@ form:
validate:
type: bool
session.secure_https:
type: toggle
label: PLUGIN_ADMIN.SESSION_SECURE_HTTPS
help: PLUGIN_ADMIN.SESSION_SECURE_HTTPS_HELP
highlight: 1
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
default: true
validate:
type: bool
session.httponly:
type: toggle
label: PLUGIN_ADMIN.SESSION_HTTPONLY
@@ -1258,12 +1533,24 @@ form:
validate:
type: bool
session.domain:
type: text
size: small
label: PLUGIN_ADMIN.SESSION_DOMAIN
help: PLUGIN_ADMIN.SESSION_DOMAIN_HELP
session.path:
type: text
size: small
label: PLUGIN_ADMIN.SESSION_PATH
help: PLUGIN_ADMIN.SESSION_PATH_HELP
session.samesite:
type: text
size: small
label: PLUGIN_ADMIN.SESSION_SAMESITE
help: PLUGIN_ADMIN.SESSION_SAMESITE_HELP
session.split:
type: toggle
label: PLUGIN_ADMIN.SESSION_SPLIT
@@ -1286,6 +1573,10 @@ form:
title: PLUGIN_ADMIN.ADVANCED
underline: true
gpm_section:
type: section
title: PLUGIN_ADMIN.GPM_SECTION
gpm.releases:
type: toggle
label: PLUGIN_ADMIN.GPM_RELEASES
@@ -1295,23 +1586,6 @@ form:
stable: PLUGIN_ADMIN.STABLE
testing: PLUGIN_ADMIN.TESTING
gpm.proxy_url:
type: text
size: medium
placeholder: "e.g. 127.0.0.1:3128"
label: PLUGIN_ADMIN.PROXY_URL
help: PLUGIN_ADMIN.PROXY_URL_HELP
gpm.method:
type: toggle
label: PLUGIN_ADMIN.GPM_METHOD
highlight: auto
help: PLUGIN_ADMIN.GPM_METHOD_HELP
options:
auto: PLUGIN_ADMIN.AUTO
fopen: PLUGIN_ADMIN.FOPEN
curl: PLUGIN_ADMIN.CURL
gpm.official_gpm_only:
type: toggle
label: PLUGIN_ADMIN.GPM_OFFICIAL_ONLY
@@ -1324,17 +1598,105 @@ form:
validate:
type: bool
gpm.verify_peer:
updates_section:
type: section
title: PLUGIN_ADMIN.UPDATES_SECTION
updates.safe_upgrade:
type: toggle
label: PLUGIN_ADMIN.GPM_VERIFY_PEER
label: PLUGIN_ADMIN.SAFE_UPGRADE
help: PLUGIN_ADMIN.SAFE_UPGRADE_HELP
highlight: 1
help: PLUGIN_ADMIN.GPM_VERIFY_PEER_HELP
default: true
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: bool
updates.safe_upgrade_snapshot_limit:
type: number
label: PLUGIN_ADMIN.SAFE_UPGRADE_SNAPSHOT_LIMIT
help: PLUGIN_ADMIN.SAFE_UPGRADE_SNAPSHOT_LIMIT_HELP
default: 5
validate:
type: int
min: 0
http_section:
type: section
title: PLUGIN_ADMIN.HTTP_SECTION
http.method:
type: toggle
label: PLUGIN_ADMIN.GPM_METHOD
highlight: auto
help: PLUGIN_ADMIN.GPM_METHOD_HELP
options:
auto: PLUGIN_ADMIN.AUTO
fopen: PLUGIN_ADMIN.FOPEN
curl: PLUGIN_ADMIN.CURL
http.enable_proxy:
type: toggle
label: PLUGIN_ADMIN.SSL_ENABLE_PROXY
highlight: 1
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
default: false
validate:
type: bool
http.proxy_url:
type: text
size: medium
placeholder: "e.g. 127.0.0.1:3128"
label: PLUGIN_ADMIN.PROXY_URL
help: PLUGIN_ADMIN.PROXY_URL_HELP
http.proxy_cert_path:
type: text
size: medium
placeholder: "e.g. /Users/bob/certs/"
label: PLUGIN_ADMIN.PROXY_CERT
help: PLUGIN_ADMIN.PROXY_CERT_HELP
http.verify_peer:
type: toggle
label: PLUGIN_ADMIN.SSL_VERIFY_PEER
highlight: 1
help: PLUGIN_ADMIN.SSL_VERIFY_PEER_HELP
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: bool
http.verify_host:
type: toggle
label: PLUGIN_ADMIN.SSL_VERIFY_HOST
highlight: 1
help: PLUGIN_ADMIN.SSL_VERIFY_HOST_HELP
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: bool
http.concurrent_connections:
type: number
size: x-small
label: PLUGIN_ADMIN.HTTP_CONNECTIONS
help: PLUGIN_ADMIN.HTTP_CONNECTIONS_HELP
validate:
min: 1
max: 20
misc_section:
type: section
title: PLUGIN_ADMIN.MISC_SECTION
reverse_proxy_setup:
type: toggle
label: PLUGIN_ADMIN.REVERSE_PROXY
@@ -1432,17 +1794,68 @@ form:
label: PLUGIN_ADMIN.CUSTOM_BASE_URL
help: PLUGIN_ADMIN.CUSTOM_BASE_URL_HELP
accounts.type:
type: hidden
http_x_forwarded.protocol:
type: toggle
label: HTTP_X_FORWARDED_PROTO Enabled
highlight: 1
default: 1
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: bool
accounts.storage:
type: hidden
http_x_forwarded.host:
type: toggle
label: HTTP_X_FORWARDED_HOST Enabled
highlight: 0
default: 0
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: bool
http_x_forwarded.port:
type: toggle
label: HTTP_X_FORWARDED_PORT Enabled
highlight: 1
default: 1
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: bool
http_x_forwarded.ip:
type: toggle
label: HTTP_X_FORWARDED IP Enabled
highlight: 1
default: 1
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: bool
strict_mode.blueprint_compat:
type: toggle
label: PLUGIN_ADMIN.STRICT_BLUEPRINT_COMPAT
highlight: 0
default: 0
help: PLUGIN_ADMIN.STRICT_BLUEPRINT_COMPAT_HELP
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: bool
strict_mode.yaml_compat:
type: toggle
label: PLUGIN_ADMIN.STRICT_YAML_COMPAT
highlight: 1
default: 1
highlight: 0
default: 0
help: PLUGIN_ADMIN.STRICT_YAML_COMPAT_HELP
options:
1: PLUGIN_ADMIN.YES
@@ -1453,8 +1866,8 @@ form:
strict_mode.twig_compat:
type: toggle
label: PLUGIN_ADMIN.STRICT_TWIG_COMPAT
highlight: 1
default: 1
highlight: 0
default: 0
help: PLUGIN_ADMIN.STRICT_TWIG_COMPAT_HELP
options:
1: PLUGIN_ADMIN.YES
@@ -1462,24 +1875,15 @@ form:
validate:
type: bool
experimental:
accounts:
type: tab
title: PLUGIN_ADMIN.EXPERIMENTAL
title: PLUGIN_ADMIN.ACCOUNTS
fields:
experimental_section:
flex_accounts:
type: section
title: PLUGIN_ADMIN.EXPERIMENTAL
underline: true
pages.type:
type: select
label: PLUGIN_ADMIN.PAGES_TYPE
highlight: stable
help: PLUGIN_ADMIN.PAGES_TYPE_HELP
options:
page: PLUGIN_ADMIN.REGULAR
flex: PLUGIN_ADMIN.FLEX
title: User Accounts
accounts.type:
type: select
@@ -1487,7 +1891,7 @@ form:
highlight: stable
help: PLUGIN_ADMIN.ACCOUNTS_TYPE_HELP
options:
data: PLUGIN_ADMIN.REGULAR
regular: PLUGIN_ADMIN.REGULAR
flex: PLUGIN_ADMIN.FLEX
accounts.storage:
@@ -1498,3 +1902,38 @@ form:
options:
file: PLUGIN_ADMIN.FILE
folder: PLUGIN_ADMIN.FOLDER
accounts.avatar:
type: select
label: PLUGIN_ADMIN.AVATAR
default: gravatar
help: PLUGIN_ADMIN.AVATAR_HELP
options:
multiavatar: Multiavatar [local]
gravatar: Gravatar [external]
# experimental:
# type: tab
# title: PLUGIN_ADMIN.EXPERIMENTAL
#
# fields:
# experimental_section:
# type: section
# title: PLUGIN_ADMIN.EXPERIMENTAL
# underline: true
#
# flex_pages:
# type: section
# title: Flex Pages
#
# pages.type:
# type: select
# label: PLUGIN_ADMIN.PAGES_TYPE
# highlight: regular
# help: PLUGIN_ADMIN.PAGES_TYPE_HELP
# options:
# regular: PLUGIN_ADMIN.REGULAR
# flex: PLUGIN_ADMIN.FLEX
#
# pages.type:
# type: hidden

View File

@@ -1,98 +1,8 @@
title: Flex Accounts
title: Flex User Accounts
description: Manage your User Accounts in Flex.
type: flex-objects
# Extends user account
# Deprecated in Grav 1.7.0-rc.4: file was renamed to user-accounts.yaml
extends@:
type: account
context: blueprints://user
# Flex configuration
config:
# Administration Configuration (needs Flex-Objects plugin)
admin:
# Admin menu
menu:
list:
route: '/accounts'
title: PLUGIN_ADMIN.USER_ACCOUNTS
icon: fa-user
authorize: ['admin.users', 'admin.accounts', 'admin.super']
priority: 6
# Admin template type (folder)
template: grav-accounts
# List view
list:
# Fields shown in the list view
fields:
username:
link: edit
search: true
email:
search: true
fullname:
search: true
# Extra options
options:
per_page: 20
order:
by: username
dir: asc
# Edit view
edit:
title:
template: '{{ object.fullname ?? object.username }} &lt;{{ object.email }}&gt;'
# Site Configuration
site:
# Hide from flex types
hidden: true
templates:
collection:
# Lookup for the template layout files for collections of objects
paths:
- 'flex/{TYPE}/collection/{LAYOUT}{EXT}'
object:
# Lookup for the template layout files for objects
paths:
- 'flex/{TYPE}/object/{LAYOUT}{EXT}'
defaults:
# Default template {TYPE}; overridden by filename of this blueprint if template folder exists
type: grav-accounts
# Default template {LAYOUT}; can be overridden in render calls (usually Twig in templates)
layout: default
# Data Configuration
data:
object: 'Grav\Common\Flex\Users\UserObject'
collection: 'Grav\Common\Flex\Users\UserCollection'
index: 'Grav\Common\Flex\Users\UserIndex'
storage:
class: 'Grav\Common\Flex\Users\Storage\UserFileStorage'
options:
formatter:
class: 'Grav\Framework\File\Formatter\YamlFormatter'
folder: 'account://'
pattern: '{FOLDER}/{KEY}{EXT}'
key: storage_key
indexed: true
search:
options:
contains: 1
fields:
- key
- email
# Regular form definition
form:
fields:
username:
flex-disabled@: exists
disabled: false
flex-readonly@: exists
readonly: false
validate:
required: true
type: user-accounts
context: blueprints://flex

View File

@@ -0,0 +1,17 @@
form:
compatibility:
type: tab
title: Compatibility
fields:
object.compat.events:
type: toggle
toggleable: true
label: Admin event compatibility
help: Enables onAdminSave and onAdminAfterSave events for plugins
highlight: 1
default: 1
options:
1: PLUGIN_ADMIN.ENABLED
0: PLUGIN_ADMIN.DISABLED
validate:
type: bool

View File

@@ -1,4 +1,4 @@
title: Flex Pages
title: Pages
description: Manage your Grav Pages in Flex.
type: flex-objects
@@ -7,21 +7,39 @@ extends@:
type: default
context: blueprints://pages
#
# HIGHLY SPECIALIZED FLEX TYPE, AVOID USING PAGES AS BASE FOR YOUR OWN TYPE.
#
# Flex configuration
config:
# Administration Configuration (needs Flex-Objects plugin)
# Administration Configuration (needs Flex Objects plugin)
admin:
# Admin router
router:
path: '/pages'
# Permissions
permissions:
# Primary permissions
admin.pages:
type: crudl
label: Pages
admin.configuration.pages:
type: default
label: Pages Configuration
# Admin menu
menu:
list:
route: '/pages'
title: PLUGIN_ADMIN.PAGES
icon: fa-file-text
authorize: ['admin.pages', 'admin.super']
authorize: ['admin.pages.list', 'admin.super']
priority: 5
# Admin template type (folder)
template: grav-pages
template: pages
# Allowed admin actions
actions:
@@ -85,6 +103,9 @@ config:
label: PLUGIN_ADMIN.ADD
edit:
title:
template: "{% if object.root %}Root <small>( &lt;root&gt; )</small>{% else %}{{ (form.value('header.title') ?? form.value('folder'))|e }} <small>( {{ (object.getRoute().toString(false) ?: '/')|e }} )</small>{% endif %}"
# TODO: not used yet
buttons:
back:
@@ -113,6 +134,10 @@ config:
preview:
enabled: true
# Configure view
configure:
authorize: 'admin.configuration.pages'
# Site Configuration
site:
# Hide from flex types
@@ -138,11 +163,11 @@ config:
# Data Configuration
data:
object: 'Grav\Common\Flex\Pages\PageObject'
collection: 'Grav\Common\Flex\Pages\PageCollection'
index: 'Grav\Common\Flex\Pages\PageIndex'
object: 'Grav\Common\Flex\Types\Pages\PageObject'
collection: 'Grav\Common\Flex\Types\Pages\PageCollection'
index: 'Grav\Common\Flex\Types\Pages\PageIndex'
storage:
class: 'Grav\Common\Flex\Pages\PageStorage'
class: 'Grav\Common\Flex\Types\Pages\Storage\PageStorage'
options:
formatter:
class: 'Grav\Framework\File\Formatter\MarkdownFormatter'
@@ -151,7 +176,7 @@ config:
indexed: true
# Set default ordering of the pages
ordering:
key: ASC
storage_key: ASC
search:
# Search options
options:
@@ -159,9 +184,16 @@ config:
# Fields to be searched
fields:
- key
- slug
- menu
- title
- name
blueprints:
configure:
fields:
import@:
type: configure/compat
context: blueprints://flex
# Regular form definition
form:
@@ -172,7 +204,9 @@ form:
tabs:
fields:
permissions:
security:
type: tab
title: PLUGIN_ADMIN.PERMISSIONS
import@: partials/permissions
title: PLUGIN_ADMIN.SECURITY
import@:
type: partials/security
context: blueprints://pages

View File

@@ -0,0 +1,70 @@
form:
validation: loose
fields:
tabs:
type: tabs
fields:
cache:
type: tab
title: Caching
fields:
object.cache.index.enabled:
type: toggle
toggleable: true
label: PLUGIN_ADMIN.FLEX_INDEX_CACHE_ENABLED
highlight: 1
config-default@: system.flex.cache.index.enabled
options:
1: PLUGIN_ADMIN.ENABLED
0: PLUGIN_ADMIN.DISABLED
validate:
type: bool
object.cache.index.lifetime:
type: text
toggleable: true
label: PLUGIN_ADMIN.FLEX_INDEX_CACHE_LIFETIME
config-default@: system.flex.cache.index.lifetime
validate:
type: int
object.cache.object.enabled:
type: toggle
toggleable: true
label: PLUGIN_ADMIN.FLEX_OBJECT_CACHE_ENABLED
highlight: 1
config-default@: system.flex.cache.object.enabled
options:
1: PLUGIN_ADMIN.ENABLED
0: PLUGIN_ADMIN.DISABLED
validate:
type: bool
object.cache.object.lifetime:
type: text
toggleable: true
label: PLUGIN_ADMIN.FLEX_OBJECT_CACHE_LIFETIME
config-default@: system.flex.cache.object.lifetime
validate:
type: int
object.cache.render.enabled:
type: toggle
toggleable: true
label: PLUGIN_ADMIN.FLEX_RENDER_CACHE_ENABLED
highlight: 1
config-default@: system.flex.cache.render.enabled
options:
1: PLUGIN_ADMIN.ENABLED
0: PLUGIN_ADMIN.DISABLED
validate:
type: bool
object.cache.render.lifetime:
type: text
toggleable: true
label: PLUGIN_ADMIN.FLEX_RENDER_CACHE_LIFETIME
config-default@: system.flex.cache.render.lifetime
validate:
type: int

View File

@@ -0,0 +1,155 @@
title: User Accounts
description: Manage your User Accounts in Flex.
type: flex-objects
# Extends user account
extends@:
type: account
context: blueprints://user
#
# HIGHLY SPECIALIZED FLEX TYPE, AVOID USING USER ACCOUNTS AS BASE FOR YOUR OWN TYPE.
#
# Flex configuration
config:
# Administration Configuration (needs Flex Objects plugin)
admin:
# Admin router
router:
path: '/accounts/users'
actions:
configure:
path: '/accounts/configure'
redirects:
'/user': '/accounts/users'
'/accounts': '/accounts/users'
# Permissions
permissions:
# Primary permissions
admin.users:
type: crudl
label: User Accounts
admin.configuration.users:
type: default
label: Accounts Configuration
# Admin menu
menu:
base:
location: '/accounts'
route: '/accounts/users'
index: 0
title: PLUGIN_ADMIN.ACCOUNTS
icon: fa-users
authorize: ['admin.users.list', 'admin.super']
priority: 6
# Admin template type (folder)
template: user-accounts
# List view
list:
# Fields shown in the list view
fields:
username:
link: edit
search: true
field:
label: PLUGIN_ADMIN.USERNAME
email:
search: true
fullname:
search: true
# Extra options
options:
per_page: 20
order:
by: username
dir: asc
# Edit view
edit:
title:
template: "{{ form.value('fullname') ?? form.value('username') }} &lt;{{ form.value('email') }}&gt;"
# Configure view
configure:
hidden: true
authorize: 'admin.configuration.users'
form: 'accounts'
title:
template: "{{ 'PLUGIN_ADMIN.ACCOUNTS'|tu }} {{ 'PLUGIN_ADMIN.CONFIGURATION'|tu }}"
# Site Configuration
site:
# Hide from flex types
hidden: true
templates:
collection:
# Lookup for the template layout files for collections of objects
paths:
- 'flex/{TYPE}/collection/{LAYOUT}{EXT}'
object:
# Lookup for the template layout files for objects
paths:
- 'flex/{TYPE}/object/{LAYOUT}{EXT}'
defaults:
# Default template {TYPE}; overridden by filename of this blueprint if template folder exists
type: user-accounts
# Default template {LAYOUT}; can be overridden in render calls (usually Twig in templates)
layout: default
# Data Configuration
data:
object: 'Grav\Common\Flex\Types\Users\UserObject'
collection: 'Grav\Common\Flex\Types\Users\UserCollection'
index: 'Grav\Common\Flex\Types\Users\UserIndex'
storage:
class: 'Grav\Common\Flex\Types\Users\Storage\UserFileStorage'
options:
formatter:
class: 'Grav\Framework\File\Formatter\YamlFormatter'
folder: 'account://'
pattern: '{FOLDER}/{KEY}{EXT}'
indexed: true
key: username
case_sensitive: false
search:
options:
contains: 1
fields:
- key
- email
- username
- fullname
relationships:
media:
type: media
cardinality: to-many
avatar:
type: media
cardinality: to-one
# roles:
# type: user-groups
# cardinality: to-many
blueprints:
configure:
fields:
import@:
type: configure/compat
context: blueprints://flex
# Regular form definition
form:
fields:
username:
flex-disabled@: exists
disabled: false
flex-readonly@: exists
readonly: false
validate:
required: true

View File

@@ -1,4 +1,4 @@
title: Flex User Groups
title: User Groups
description: Manage your User Groups in Flex.
type: flex-objects
@@ -9,19 +9,41 @@ extends@:
# Flex configuration
config:
# Administration Configuration (needs Flex-Objects plugin)
# Administration Configuration (needs Flex Objects plugin)
admin:
# Admin router
router:
path: '/accounts/groups'
actions:
configure:
path: '/accounts/configure'
redirects:
'/groups': '/accounts/groups'
'/accounts': '/accounts/groups'
# Permissions
permissions:
# Primary permissions
admin.users:
type: crudl
label: User Accounts
admin.configuration.users:
type: default
label: Accounts Configuration
# Admin menu
menu:
list:
route: '/user-groups'
title: PLUGIN_ADMIN.USER_GROUPS
base:
location: '/accounts'
route: '/accounts/groups'
index: 1
title: PLUGIN_ADMIN.ACCOUNTS
icon: fa-users
authorize: ['admin.users', 'admin.accounts', 'admin.super']
authorize: ['admin.users.list', 'admin.super']
priority: 6
# Admin template type (folder)
template: grav-user-groups
template: user-groups
# List view
list:
@@ -44,7 +66,15 @@ config:
# Edit view
edit:
title:
template: '{{ object.readableName ?? object.groupname }}'
template: "{{ form.value('readableName') ?? form.value('groupname') }}"
# Configure view
configure:
hidden: true
authorize: 'admin.configuration.users'
form: 'accounts'
title:
template: "{{ 'PLUGIN_ADMIN.ACCOUNTS'|tu }} {{ 'PLUGIN_ADMIN.CONFIGURATION'|tu }}"
# Site Configuration
site:
@@ -61,15 +91,15 @@ config:
- 'flex/{TYPE}/object/{LAYOUT}{EXT}'
defaults:
# Default template {TYPE}; overridden by filename of this blueprint if template folder exists
type: grav-user-groups
type: user-groups
# Default template {LAYOUT}; can be overridden in render calls (usually Twig in templates)
layout: default
# Data Configuration
data:
object: 'Grav\Common\Flex\UserGroups\UserGroupObject'
collection: 'Grav\Common\Flex\UserGroups\UserGroupCollection'
index: 'Grav\Common\Flex\UserGroups\UserGroupIndex'
object: 'Grav\Common\Flex\Types\UserGroups\UserGroupObject'
collection: 'Grav\Common\Flex\Types\UserGroups\UserGroupCollection'
index: 'Grav\Common\Flex\Types\UserGroups\UserGroupIndex'
storage:
class: 'Grav\Framework\Flex\Storage\SimpleStorage'
options:
@@ -83,4 +113,12 @@ config:
fields:
- key
- groupname
- readableName
- description
blueprints:
configure:
fields:
import@:
type: configure/compat
context: blueprints://flex

View File

@@ -121,7 +121,7 @@ form:
underline: true
folder:
type: text
type: folder-slug
label: PLUGIN_ADMIN.FOLDER_NAME
validate:
rule: slug
@@ -320,6 +320,18 @@ form:
fields:
header.redirect_default_route:
type: toggle
toggleable: true
label: PLUGIN_ADMIN.REDIRECT_DEFAULT_ROUTE
help: PLUGIN_ADMIN.REDIRECT_DEFAULT_ROUTE_HELP
config-highlight@: system.pages.redirect_default_route
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: bool
header.routes.default:
type: text
toggleable: true

View File

@@ -1,7 +1,7 @@
title: PLUGIN_ADMIN:EXTERNAL
title: PLUGIN_ADMIN.EXTERNAL
extends@:
type: default
context: blueprints://pages
type: default
context: blueprints://pages
form:
validation: loose
@@ -29,16 +29,16 @@ form:
unset@: true
header.external_url:
type: text
label: PLUGIN_ADMIN.EXTERNAL_URL
placeholder: https://getgrav.org
validate:
required: true
type: text
label: PLUGIN_ADMIN.EXTERNAL_URL
placeholder: https://getgrav.org
validate:
required: true
options:
fields:
publishing:
fields:
header.date:

View File

@@ -1,6 +0,0 @@
form:
fields:
permissions:
type: text
label: PLUGIN_ADMIN.PERMISSIONS
placeholder: Placeholder... Coming soon..

View File

@@ -0,0 +1,67 @@
form:
fields:
_site:
type: section
title: PLUGIN_ADMIN.PAGE_ACCESS
underline: true
fields:
header.login.visibility_requires_access:
type: toggle
toggleable: true
label: PLUGIN_ADMIN.PAGE_VISIBILITY_REQUIRES_ACCESS
help: PLUGIN_ADMIN.PAGE_VISIBILITY_REQUIRES_ACCESS_HELP
highlight: 0
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: bool
header.access:
type: acl_picker
label: PLUGIN_ADMIN.PAGE_ACCESS
help: PLUGIN_ADMIN.PAGE_ACCESS_HELP
ignore_empty: true
data_type: access
validate:
type: array
value_type: bool
_admin:
security@: {or: [admin.super, admin.configuration.pages]}
type: section
title: PLUGIN_ADMIN.PAGE PERMISSIONS
underline: true
fields:
header.permissions.inherit:
type: toggle
toggleable: true
label: PLUGIN_ADMIN.PAGE_INHERIT_PERMISSIONS
help: PLUGIN_ADMIN.PAGE_INHERIT_PERMISSIONS_HELP
highlight: 1
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: bool
header.permissions.authors:
type: array
toggleable: true
value_only: true
placeholder_value: PLUGIN_ADMIN.USERNAME
label: PLUGIN_ADMIN.PAGE_AUTHORS
help: PLUGIN_ADMIN.PAGE_AUTHORS_HELP
header.permissions.groups:
ignore@: true
type: acl_picker
label: PLUGIN_ADMIN.PAGE_GROUPS
help: PLUGIN_ADMIN.PAGE_GROUPS_HELP
ignore_empty: true
data_type: permissions

View File

@@ -14,123 +14,3 @@ form:
tabs:
type: tabs
active: 1
fields:
advanced:
type: tab
title: PLUGIN_ADMIN.ADVANCED
fields:
overrides:
type: section
title: PLUGIN_ADMIN.OVERRIDES
underline: true
fields:
header.dateformat:
type: select
size: medium
selectize:
create: true
label: PLUGIN_ADMIN.DEFAULT_DATE_FORMAT
help: PLUGIN_ADMIN.DEFAULT_DATE_FORMAT_HELP
placeholder: PLUGIN_ADMIN.DEFAULT_DATE_FORMAT_PLACEHOLDER
data-options@: '\Grav\Common\Utils::dateFormats'
validate:
type: string
header.process:
type: checkboxes
label: PLUGIN_ADMIN.PROCESS
config-default@: system.pages.process
default:
markdown: true
twig: false
options:
markdown: Markdown
twig: Twig
use: keys
header.twig_first:
type: toggle
label: PLUGIN_ADMIN.TWIG_FIRST
help: PLUGIN_ADMIN.TWIG_FIRST_HELP
highlight: 0
default: 0
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: bool
header.never_cache_twig:
type: toggle
label: PLUGIN_ADMIN.NEVER_CACHE_TWIG
help: PLUGIN_ADMIN.NEVER_CACHE_TWIG_HELP
highlight: 0
default: 0
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: bool
header.child_type:
type: select
label: PLUGIN_ADMIN.DEFAULT_CHILD_TYPE
default: default
placeholder: PLUGIN_ADMIN.USE_GLOBAL
data-options@: '\Grav\Common\Page\Pages::types'
header.cache_enable:
type: toggle
label: PLUGIN_ADMIN.CACHING
highlight: 1
default: 1
options:
1: PLUGIN_ADMIN.ENABLED
0: PLUGIN_ADMIN.DISABLED
validate:
type: bool
header.debugger:
type: toggle
label: PLUGIN_ADMIN.DEBUGGER
help: PLUGIN_ADMIN.DEBUGGER_HELP
highlight: 0
default: 0
options:
1: PLUGIN_ADMIN.ENABLED
0: PLUGIN_ADMIN.DISABLED
validate:
type: bool
admin_only:
type: section
title: PLUGIN_ADMIN.ADMIN_SPECIFIC_OVERRIDES
underline: true
fields:
header.admin.children_display_order:
type: select
label: PLUGIN_ADMIN.ADMIN_CHILDREN_DISPLAY_ORDER
help: PLUGIN_ADMIN.ADMIN_CHILDREN_DISPLAY_ORDER_HELP
classes: fancy
default: 'collection'
options:
'default': 'Ordered by Folder name (default)'
'collection': 'Ordered by Collection definition'
header.order_by:
type: hidden
header.order_manual:
type: hidden
validate:
type: commalist
blueprint:
type: blueprint

View File

@@ -11,10 +11,21 @@ form:
avatar:
type: file
size: large
destination: 'user://accounts/avatars'
destination: 'account://avatars'
multiple: false
random_name: true
multiavatar_only:
type: conditional
condition: config.system.accounts.avatar == 'multiavatar'
fields:
avatar_hash:
type: text
label: ''
placeholder: 'e.g. dceaadcfda491f4e45'
description: PLUGIN_ADMIN.AVATAR_HASH
size: large
content:
type: section
title: PLUGIN_ADMIN.ACCOUNT
@@ -67,6 +78,15 @@ form:
default: 'en'
help: PLUGIN_ADMIN.LANGUAGE_HELP
content_editor:
type: select
label: PLUGIN_ADMIN.CONTENT_EDITOR
size: medium
classes: fancy
data-options@: 'Grav\Plugin\Admin\Admin::contentEditor'
default: 'default'
help: PLUGIN_ADMIN.CONTENT_EDITOR_HELP
twofa_check:
type: conditional
condition: config.plugins.admin.twofa_enabled
@@ -98,6 +118,14 @@ form:
label: PLUGIN_ADMIN.2FA_SECRET
sublabel: PLUGIN_ADMIN.2FA_SECRET_HELP
yubikey_id:
type: text
label: PLUGIN_ADMIN.YUBIKEY_ID
description: PLUGIN_ADMIN.YUBIKEY_HELP
size: small
maxlength: 12
security:
security@: admin.super
@@ -121,7 +149,9 @@ form:
access:
security@: admin.super
type: permissions
check_authorize: true
label: PLUGIN_ADMIN.PERMISSIONS
ignore_empty: true
validate:
type: array
value_type: bool

View File

@@ -13,6 +13,6 @@ form:
label: PLUGIN_ADMIN.USERNAME
help: PLUGIN_ADMIN.USERNAME_HELP
unset-disabled@: true
unset-readonly@: true
unset-readonly@: true
validate:
required: true

View File

@@ -1,46 +1,55 @@
title: Group
rules:
slug:
pattern: '[a-zA-Zа-яA-Я0-9_\-]+'
min: 1
max: 200
form:
validation: loose
validation: loose
fields:
groupname:
type: text
size: large
label: PLUGIN_ADMIN.GROUP_NAME
flex-disabled@: exists
flex-readonly@: exists
validate:
required: true
fields:
groupname:
type: text
size: large
label: PLUGIN_ADMIN.GROUP_NAME
flex-disabled@: exists
flex-readonly@: exists
validate:
required: true
rule: slug
readableName:
type: text
size: large
label: PLUGIN_ADMIN.DISPLAY_NAME
readableName:
type: text
size: large
label: PLUGIN_ADMIN.DISPLAY_NAME
description:
type: text
size: large
label: PLUGIN_ADMIN.DESCRIPTION
description:
type: text
size: large
label: PLUGIN_ADMIN.DESCRIPTION
icon:
type: text
size: small
label: PLUGIN_ADMIN.ICON
icon:
type: text
size: small
label: PLUGIN_ADMIN.ICON
enabled:
type: toggle
label: PLUGIN_ADMIN.ENABLED
highlight: 1
default: 1
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: bool
enabled:
type: toggle
label: PLUGIN_ADMIN.ENABLED
highlight: 1
default: 1
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: bool
access:
type: permissions
label: PLUGIN_ADMIN.PERMISSIONS
ignore_empty: true
validate:
type: array
access:
type: permissions
check_authorize: false
label: PLUGIN_ADMIN.PERMISSIONS
ignore_empty: true
validate:
type: array
value_type: bool

View File

@@ -1,5 +1,11 @@
title: PLUGIN_ADMIN_PRO.ADD_GROUP
rules:
slug:
pattern: '[a-zA-Zа-яA-Я0-9_\-]+'
min: 1
max: 200
form:
validation: loose
fields:
@@ -14,3 +20,4 @@ form:
help: PLUGIN_ADMIN_PRO.GROUP_NAME_HELP
validate:
required: true
rule: slug

View File

@@ -24,6 +24,14 @@ types:
type: image
thumb: media/thumb-png.png
mime: image/png
webp:
type: image
thumb: media/thumb-webp.png
mime: image/webp
avif:
type: image
thumb: media/thumb.png
mime: image/avif
gif:
type: animated
thumb: media/thumb-gif.png
@@ -87,7 +95,7 @@ types:
aif:
type: audio
thumb: media/thumb-aif.png
mime: audio/aif
mime: audio/aiff
txt:
type: file
thumb: media/thumb-txt.png
@@ -103,7 +111,7 @@ types:
docx:
type: file
thumb: media/thumb-docx.png
mime: application/msword
mime: application/vnd.openxmlformats-officedocument.wordprocessingml.document
xls:
type: file
thumb: media/thumb-xls.png
@@ -111,7 +119,7 @@ types:
xlsx:
type: file
thumb: media/thumb-xlsx.png
mime: application/vnd.ms-excel
mime: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
ppt:
type: file
thumb: media/thumb-ppt.png
@@ -119,7 +127,7 @@ types:
pptx:
type: file
thumb: media/thumb-pptx.png
mime: application/vnd.ms-powerpoint
mime: application/vnd.openxmlformats-officedocument.presentationml.presentation
pps:
type: file
thumb: media/thumb-pps.png
@@ -191,7 +199,7 @@ types:
gz:
type: file
thumb: media/thumb-gz.png
mime: application/gzip
mime: application/x-gzip
tar:
type: file
thumb: media/thumb-tar.png
@@ -203,8 +211,13 @@ types:
js:
type: file
thumb: media/thumb-js.png
mime: application/javascript
mime: text/javascript
json:
type: file
thumb: media/thumb-json.png
mime: application/json
vcf:
type: file
thumb: media/thumb-vcf.png
mime: text/x-vcard

1986
system/config/mime.yaml Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,53 @@
actions:
site:
type: access
label: Site
admin:
type: access
label: Admin
admin.pages:
type: access
label: Pages
admin.users:
type: access
label: User Accounts
types:
default:
type: access
crud:
type: compact
letters:
c:
action: create
label: PLUGIN_ADMIN.CREATE
r:
action: read
label: PLUGIN_ADMIN.READ
u:
action: update
label: PLUGIN_ADMIN.UPDATE
d:
action: delete
label: PLUGIN_ADMIN.DELETE
crudp:
type: crud
letters:
p:
action: publish
label: PLUGIN_ADMIN.PUBLISH
crudl:
type: crud
letters:
l:
action: list
label: PLUGIN_ADMIN.LIST
crudpl:
type: crud
use:
- crudp
- crudl

View File

@@ -0,0 +1,68 @@
# Grav Scheduler Configuration
# Default scheduler settings (backward compatible)
defaults:
output: true
output_type: file
email: null
# Status of individual jobs (enabled/disabled)
status: {}
# Custom scheduled jobs
custom_jobs: {}
# Modern scheduler features (disabled by default for backward compatibility)
modern:
# Enable modern scheduler features
enabled: false
# Number of concurrent workers (1 = sequential execution like legacy)
workers: 1
# Job retry configuration
retry:
enabled: true
max_attempts: 3
backoff: exponential # 'linear' or 'exponential'
# Job queue configuration
queue:
path: user-data://scheduler/queue
max_size: 1000
# Webhook trigger configuration
webhook:
enabled: false
token: null # Set a secure token to enable webhook triggers
path: /scheduler/webhook
# Health check endpoint
health:
enabled: true
path: /scheduler/health
# Job execution history
history:
enabled: true
retention_days: 30
path: user-data://scheduler/history
# Performance settings
performance:
job_timeout: 300 # Default timeout in seconds
lock_timeout: 10 # Lock acquisition timeout in seconds
# Monitoring and alerts
monitoring:
enabled: false
alert_on_failure: true
alert_email: null
webhook_url: null
# Trigger detection methods
triggers:
check_cron: true
check_systemd: true
check_webhook: true
check_external: true

View File

@@ -32,8 +32,16 @@ xss_dangerous_tags:
- base
uploads_dangerous_extensions:
- php
- php2
- php3
- php4
- php5
- phar
- phtml
- html
- htm
- shtml
- shtm
- js
- exe
sanitize_svg: true

View File

@@ -25,7 +25,7 @@ routes:
# '/new/(.*)': '/blog/$1' # Regex any /new/my-page URL to /blog/my-page Route
blog:
route: '/blog' # Custom value added (accessible via system.blog.route)
route: '/blog' # Custom value added (accessible via site.blog.route)
#menu: # Menu Example
# - text: Source

View File

@@ -1,16 +0,0 @@
schemes:
image:
type: Stream
paths:
- user://images
- system://images
page:
type: ReadOnlyStream
paths:
- user://pages
account:
type: ReadOnlyStream
paths:
- user://accounts

View File

@@ -10,25 +10,33 @@ custom_base_url: '' # Set the base_url manually, e.
username_regex: '^[a-z0-9_-]{3,16}$' # Only lowercase chars, digits, dashes, underscores. 3 - 16 chars
pwd_regex: '(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,}' # At least one number, one uppercase and lowercase letter, and be at least 8+ chars
intl_enabled: true # Special logic for PHP International Extension (mod_intl)
http_x_forwarded: # Configuration options for the various HTTP_X_FORWARD headers
protocol: true
host: false
port: true
ip: true
languages:
supported: [] # List of languages supported. eg: [en, fr, de]
default_lang: # Default is the first supported language. Must be one of the supported languages
include_default_lang: true # Include the default lang prefix in all URLs
include_default_lang_file_extension: true # If true, include language code for the default language in file extension: default.en.md
pages_fallback_only: false # Only fallback to find page content through supported languages
translations: true # Enable translations by default
translations: true # If false, translation keys are used instead of translated strings
translations_fallback: true # Fallback through supported translations if active lang doesn't exist
session_store_active: false # Store active language in session
http_accept_language: false # Attempt to set the language based on http_accept_language header in the browser
override_locale: false # Override the default or system locale with language specific one
content_fallback: {} # Custom language fallbacks. eg: {fr: ['fr', 'en']}
pages_fallback_only: false # DEPRECATED: Use `content_fallback` instead
debug: false # Debug language detection
home:
alias: '/home' # Default path for home, ie /
hide_in_urls: false # Hide the home route in URLs
pages:
type: page # EXPERIMENTAL: Page type: page or flex
type: regular # EXPERIMENTAL: Page type: regular or flex
dirs: ['page://'] # Advanced functionality, allows for multiple page paths
theme: quark # Default theme (defaults to "quark" theme)
order:
by: default # Order pages by "default", "alpha" or "date"
@@ -56,16 +64,22 @@ pages:
special_chars: # List of special characters to automatically convert to entities
'>': 'gt'
'<': 'lt'
valid_link_attributes: # Valid attributes to pass through via markdown links
- rel
- target
- id
- class
- classes
types: [html,htm,xml,txt,json,rss,atom] # list of valid page types
append_url_extension: '' # Append page's extension in Page urls (e.g. '.html' results in /path/page.html)
expires: 604800 # Page expires time in seconds (604800 seconds = 7 days)
cache_control: # Can be blank for no setting, or a valid `cache-control` text value
last_modified: false # Set the last modified date header based on file modification timestamp
etag: false # Set the etag header tag
etag: true # Set the etag header tag
vary_accept_encoding: false # Add `Vary: Accept-Encoding` header
redirect_default_route: false # Automatically redirect to a page's default route
redirect_default_code: 302 # Default code to use for redirects
redirect_trailing_slash: true # Handle automatically or 302 redirect a trailing / URL
redirect_default_code: 302 # Default code to use for redirects: 301|302|303
redirect_trailing_slash: 1 # Always redirect trailing slash with redirect code 0|1|301|302 (0: no redirect, 1: use default code)
redirect_default_route: 0 # Always redirect to page's default route using code 0|1|301|302, also removes .htm and .html extensions
ignore_files: [.DS_Store] # Files to ignore in Pages
ignore_folders: [.git, .idea] # Folders to ignore in Pages
ignore_hidden: true # Ignore all Hidden files and folders
@@ -84,21 +98,26 @@ cache:
purge_at: '0 4 * * *' # How often to purge old file cache (using new scheduler)
clear_at: '0 3 * * *' # How often to clear cache (using new scheduler)
clear_job_type: 'standard' # Type to clear when processing the scheduled clear job `standard`|`all`
clear_images_by_default: true # By default grav will include processed images in cache clear, this can be disabled
clear_images_by_default: false # By default grav does not include processed images in cache clear, this can be enabled
cli_compatibility: false # Ensures only non-volatile drivers are used (file, redis, memcache, etc.)
lifetime: 604800 # Lifetime of cached data in seconds (0 = infinite)
purge_max_age_days: 30 # Maximum age of cache items in days before they are purged
gzip: false # GZip compress the page output
allow_webserver_gzip: false # If true, `content-encoding: identity` but connection isn't closed before `onShutDown()` event
redis:
socket: false # Path to redis unix socket (e.g. /var/run/redis/redis.sock), false = use server and port to connect
password: # Optional password
database: # Optional database ID
twig:
cache: true # Set to true to enable Twig caching
debug: true # Enable Twig debug
auto_reload: true # Refresh cache on changes
autoescape: false # Autoescape Twig vars (DEPRECATED, always enabled in strict mode)
autoescape: true # Autoescape Twig vars (DEPRECATED, always enabled in strict mode)
undefined_functions: true # Allow undefined functions
undefined_filters: true # Allow undefined filters
safe_functions: [] # List of PHP functions which are allowed to be used as Twig functions
safe_filters: [] # List of PHP functions which are allowed to be used as Twig filters
umask_fix: false # By default Twig creates cached files as 755, fix switches this to 775
assets: # Configuration for Assets Manager (JS, CSS)
@@ -111,10 +130,14 @@ assets: # Configuration for Assets Mana
js_pipeline: false # The JS pipeline is the unification of multiple JS resources into one file
js_pipeline_include_externals: true # Include external URLs in the pipeline by default
js_pipeline_before_excludes: true # Render the pipeline before any excluded files
js_module_pipeline: false # The JS Module pipeline is the unification of multiple JS Module resources into one file
js_module_pipeline_include_externals: true # Include external URLs in the pipeline by default
js_module_pipeline_before_excludes: true # Render the pipeline before any excluded files
js_minify: true # Minify the JS during pipelining
enable_asset_timestamp: false # Enable asset timestamps
enable_asset_sri: false # Enable asset SRI
collections:
jquery: system://assets/jquery/jquery-2.x.min.js
jquery: system://assets/jquery/jquery-3.x.min.js
errors:
display: 0 # Display either (1) Full backtrace | (0) Simple Error | (-1) System Error
@@ -124,6 +147,7 @@ log:
handler: file # Log handler. Currently supported: file | syslog
syslog:
facility: local6 # Syslog facilities output
tag: grav # Syslog tag. Default: "grav".
debugger:
enabled: false # Enable Grav debugger and following settings
@@ -133,12 +157,27 @@ debugger:
close_connection: true # Close the connection before calling onShutdown(). false for debugging
images:
adapter: gd # Image adapter to use: gd | imagick
default_image_quality: 85 # Default image quality to use when resampling images (85%)
cache_all: false # Cache all image by default
cache_perms: '0755' # MUST BE IN QUOTES!! Default cache folder perms. Usually '0755' or '0775'
debug: false # Show an overlay over images indicating the pixel depth of the image when working with retina for example
auto_fix_orientation: false # Automatically fix the image orientation based on the Exif data
auto_fix_orientation: true # Automatically fix the image orientation based on the Exif data
seofriendly: false # SEO-friendly processed image names
cls: # Cumulative Layout Shift: See https://web.dev/optimize-cls/
auto_sizes: false # Automatically add height/width to image
aspect_ratio: false # Reserve space with aspect ratio style
retina_scale: 1 # scale to adjust auto-sizes for better handling of HiDPI resolutions
defaults:
loading: auto # Let browser pick [auto|lazy|eager]
decoding: auto # Let browser pick [auto|sync|async]
fetchpriority: auto # Let browser pick [auto|high|low]
watermark:
image: 'system://images/watermark.png' # Path to a watermark image
position_y: 'center' # top|center|bottom
position_x: 'center' # left|center|right
scale: 33 # percentage of watermark scale
watermark_all: false # automatically watermark all images
media:
enable_media_timestamp: false # Enable media timestamps
@@ -153,21 +192,48 @@ session:
name: grav-site # Name prefix of the session cookie. Use alphanumeric, dashes or underscores only. Do not use dots in the session name
uniqueness: path # Should sessions be `path` based or `security.salt` based
secure: false # Set session secure. If true, indicates that communication for this cookie must be over an encrypted transmission. Enable this only on sites that run exclusively on HTTPS
secure_https: true # Set session secure on HTTPS but not on HTTP. Has no effect if you have `session.secure: true`. Set to false if your site jumps between HTTP and HTTPS.
httponly: true # Set session HTTP only. If true, indicates that cookies should be used only over HTTP, and JavaScript modification is not allowed.
samesite: Lax # Set session SameSite. Possible values are Lax, Strict and None. See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite
split: true # Sessions should be independent between site and plugins (such as admin)
path:
domain: # Domain used by sessions.
path: # Path used by sessions.
gpm:
releases: testing # Set to either 'stable' or 'testing'
proxy_url: # Configure a manual proxy URL for GPM (eg 127.0.0.1:3128)
method: 'auto' # Either 'curl', 'fopen' or 'auto'. 'auto' will try fopen first and if not available cURL
verify_peer: true # Sometimes on some systems (Windows most commonly) GPM is unable to connect because the SSL certificate cannot be verified. Disabling this setting might help.
releases: stable # Set to either 'stable' or 'testing'
official_gpm_only: true # By default GPM direct-install will only allow URLs via the official GPM proxy to ensure security
updates:
safe_upgrade: true # Enable guarded staging+rollback pipeline for Grav self-updates
safe_upgrade_snapshot_limit: 5 # Maximum number of safe-upgrade snapshots to retain (0 = unlimited)
http:
method: auto # Either 'curl', 'fopen' or 'auto'. 'auto' will try fopen first and if not available cURL
enable_proxy: true # Enable proxy server configuration
proxy_url: # Configure a manual proxy URL for GPM (eg 127.0.0.1:3128)
proxy_cert_path: # Local path to proxy certificate folder containing pem files
concurrent_connections: 5 # Concurrent HTTP connections when multiplexing
verify_peer: true # Enable/Disable SSL verification of peer certificates
verify_host: true # Enable/Disable SSL verification of host certificates
accounts:
type: data # EXPERIMENTAL: Account type: data or flex
type: regular # EXPERIMENTAL: Account type: regular or flex
storage: file # EXPERIMENTAL: Flex storage type: file or folder
avatar: gravatar # Avatar generator [multiavatar|gravatar]
flex:
cache:
index:
enabled: true # Set to true to enable Flex index caching. Is used to cache timestamps in files
lifetime: 60 # Lifetime of cached index in seconds (0 = infinite)
object:
enabled: true # Set to true to enable Flex object caching. Is used to cache object data
lifetime: 600 # Lifetime of cached objects in seconds (0 = infinite)
render:
enabled: true # Set to true to enable Flex render caching. Is used to cache rendered output
lifetime: 600 # Lifetime of cached HTML in seconds (0 = infinite)
strict_mode:
yaml_compat: true # Grav 1.5+: Enables YAML backwards compatibility
twig_compat: true # Grav 1.5+: Enables deprecated Twig autoescape setting (autoescape: false)
yaml_compat: false # Set to true to enable YAML backwards compatibility
twig_compat: false # Set to true to enable deprecated Twig settings (autoescape: false)
blueprint_compat: false # Set to true to enable backward compatible strict support for blueprints

View File

@@ -1,42 +1,90 @@
<?php
/**
* @package Grav\Core
*
* @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved.
* @copyright Copyright (c) 2015 - 2025 Trilby Media, LLC. All rights reserved.
* @license MIT License; see LICENSE file for details.
*/
// Some standard defines
define('GRAV', true);
define('GRAV_VERSION', '1.7.0-rc.3');
define('GRAV_TESTING', true);
define('DS', '/');
define('GRAV_VERSION', '1.7.50.9');
define('GRAV_SCHEMA', '1.7.0_2020-11-20_1');
define('GRAV_TESTING', false);
// PHP minimum requirement
if (!defined('GRAV_PHP_MIN')) {
define('GRAV_PHP_MIN', '7.1.3');
define('GRAV_PHP_MIN', '7.3.6');
}
// Directories and Paths
if (!defined('GRAV_ROOT')) {
define('GRAV_ROOT', str_replace(DIRECTORY_SEPARATOR, DS, getcwd()));
// Directory separator
if (!defined('DS')) {
define('DS', '/');
}
define('ROOT_DIR', GRAV_ROOT . '/');
define('USER_PATH', 'user/');
define('USER_DIR', ROOT_DIR . USER_PATH);
define('CACHE_DIR', ROOT_DIR . 'cache/');
// Absolute path to Grav root. This is where Grav is installed into.
if (!defined('GRAV_ROOT')) {
$path = rtrim(str_replace(DIRECTORY_SEPARATOR, DS, getenv('GRAV_ROOT') ?: getcwd()), DS);
define('GRAV_ROOT', $path ?: DS);
}
// Absolute path to Grav webroot. This is the path where your site is located in.
if (!defined('GRAV_WEBROOT')) {
$path = rtrim(getenv('GRAV_WEBROOT') ?: GRAV_ROOT, DS);
define('GRAV_WEBROOT', $path ?: DS);
}
// Relative path to user folder. This path needs to be located under GRAV_WEBROOT.
if (!defined('GRAV_USER_PATH')) {
$path = rtrim(getenv('GRAV_USER_PATH') ?: 'user', DS);
define('GRAV_USER_PATH', $path);
}
// Absolute or relative path to system folder. Defaults to GRAV_ROOT/system
// If system folder is outside of webroot, see https://github.com/getgrav/grav/issues/3297#issuecomment-810294972
if (!defined('GRAV_SYSTEM_PATH')) {
$path = rtrim(getenv('GRAV_SYSTEM_PATH') ?: 'system', DS);
define('GRAV_SYSTEM_PATH', $path);
}
// Absolute or relative path to cache folder. Defaults to GRAV_ROOT/cache
if (!defined('GRAV_CACHE_PATH')) {
$path = rtrim(getenv('GRAV_CACHE_PATH') ?: 'cache', DS);
define('GRAV_CACHE_PATH', $path);
}
// Absolute or relative path to logs folder. Defaults to GRAV_ROOT/logs
if (!defined('GRAV_LOG_PATH')) {
$path = rtrim(getenv('GRAV_LOG_PATH') ?: 'logs', DS);
define('GRAV_LOG_PATH', $path);
}
// Absolute or relative path to tmp folder. Defaults to GRAV_ROOT/tmp
if (!defined('GRAV_TMP_PATH')) {
$path = rtrim(getenv('GRAV_TMP_PATH') ?: 'tmp', DS);
define('GRAV_TMP_PATH', $path);
}
// Absolute or relative path to backup folder. Defaults to GRAV_ROOT/backup
if (!defined('GRAV_BACKUP_PATH')) {
$path = rtrim(getenv('GRAV_BACKUP_PATH') ?: 'backup', DS);
define('GRAV_BACKUP_PATH', $path);
}
unset($path);
// INTERNAL: Do not use!
define('USER_DIR', GRAV_WEBROOT . '/' . GRAV_USER_PATH . '/');
define('CACHE_DIR', (!preg_match('`^(/|[a-z]:[\\\/])`ui', GRAV_CACHE_PATH) ? GRAV_ROOT . '/' : '') . GRAV_CACHE_PATH . '/');
// DEPRECATED: Do not use!
define('ASSETS_DIR', ROOT_DIR . 'assets/');
define('IMAGES_DIR', ROOT_DIR . 'images/');
define('ACCOUNTS_DIR', USER_DIR .'accounts/');
define('PAGES_DIR', USER_DIR .'pages/');
define('DATA_DIR', USER_DIR .'data/');
define('SYSTEM_DIR', ROOT_DIR .'system/');
define('LIB_DIR', SYSTEM_DIR .'src/');
define('PLUGINS_DIR', USER_DIR .'plugins/');
define('THEMES_DIR', USER_DIR .'themes/');
define('VENDOR_DIR', ROOT_DIR .'vendor/');
define('LOG_DIR', ROOT_DIR .'logs/');
define('CACHE_PATH', GRAV_CACHE_PATH . DS);
define('USER_PATH', GRAV_USER_PATH . DS);
define('ROOT_DIR', GRAV_ROOT . DS);
define('ASSETS_DIR', GRAV_WEBROOT . '/assets/');
define('IMAGES_DIR', GRAV_WEBROOT . '/images/');
define('ACCOUNTS_DIR', USER_DIR . 'accounts/');
define('PAGES_DIR', USER_DIR . 'pages/');
define('DATA_DIR', USER_DIR . 'data/');
define('PLUGINS_DIR', USER_DIR . 'plugins/');
define('THEMES_DIR', USER_DIR . 'themes/');
define('SYSTEM_DIR', (!preg_match('`^(/|[a-z]:[\\\/])`ui', GRAV_SYSTEM_PATH) ? GRAV_ROOT . '/' : '') . GRAV_SYSTEM_PATH . '/');
define('LIB_DIR', SYSTEM_DIR . 'src/');
define('VENDOR_DIR', GRAV_ROOT . '/vendor/');
define('LOG_DIR', (!preg_match('`^(/|[a-z]:[\\\/])`ui', GRAV_LOG_PATH) ? GRAV_ROOT . '/' : '') . GRAV_LOG_PATH . '/');
// END DEPRECATED
// Some extensions
@@ -51,3 +99,6 @@ define('RAW_CONTENT', 1);
define('TWIG_CONTENT', 2);
define('TWIG_CONTENT_LIST', 3);
define('TWIG_TEMPLATES', 4);
// Filters
define('GRAV_SANITIZE_STRING', 5001);

BIN
system/images/watermark.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

View File

@@ -2,7 +2,7 @@
/**
* @package Grav\Core
*
* @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved.
* @copyright Copyright (c) 2015 - 2025 Trilby Media, LLC. All rights reserved.
* @license MIT License; see LICENSE file for details.
*/
@@ -10,6 +10,43 @@ if (!defined('GRAV_ROOT')) {
die();
}
// Check if Install class is already loaded (from an older Grav version)
// This happens when upgrading from older versions where the OLD Install class
// was loaded via autoloader before extracting the update package (e.g., via Install::forceSafeUpgrade())
$logInstallerSource = static function ($install, string $source) {
$sourceLabel = $source === 'extracted update package' ? 'update package' : 'existing installation';
if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') {
echo sprintf(" |- Using installer from %s\n", $sourceLabel);
}
};
if (class_exists('Grav\\Installer\\Install', false)) {
// OLD Install class is already loaded. We cannot load the NEW one due to PHP limitations.
// However, we can work around this by:
// 1. Using a different class name for the NEW installer
// 2. Or, accepting that the OLD Install class will run but ensuring it can still upgrade properly
// For now, use the OLD Install class but set its location to this extracted package
// so it processes files from here
$install = Grav\Installer\Install::instance();
// Use reflection to update the location property to point to this package
$reflection = new \ReflectionClass($install);
if ($reflection->hasProperty('location')) {
$locationProp = $reflection->getProperty('location');
$locationProp->setAccessible(true);
$locationProp->setValue($install, __DIR__ . '/..');
}
$logInstallerSource($install, 'existing installation');
return $install;
}
// Normal case: Install class not yet loaded, load the NEW one
require_once __DIR__ . '/src/Grav/Installer/Install.php';
return Grav\Installer\Install::instance();
$install = Grav\Installer\Install::instance();
$logInstallerSource($install, 'extracted update package');
return $install;

View File

@@ -1,6 +1,17 @@
---
GRAV:
FRONTMATTER_ERROR_PAGE: "---\nالعنوان: %1$s\n---\n# خطأ: مادة أمامية غير صحيحة\n\nمسار: '%2$s'\n\n**%3$s**\n\n, , ,\n\n%4$s\n, , ,"
INFLECTOR_UNCOUNTABLE:
- 'معدّات'
- 'معلومات'
- 'أرز'
- 'مال'
- 'نوع'
- 'سلسلة'
- 'سمك'
- 'خروف'
INFLECTOR_IRREGULAR:
'person': 'أشخاص'
NICETIME:
NO_DATE_PROVIDED: لم يتم تقديم التاريخ
BAD_DATE: تاريخ خاطئ
@@ -37,9 +48,10 @@ GRAV:
YR_PLURAL: سنوات
DEC_PLURAL: عقود
FORM:
VALIDATION_FAIL: <b>فشل التحقق من صحة:</b>
INVALID_INPUT: إدخال غير صحيح في
VALIDATION_FAIL: '<b>فشل التحقق من صحة:</b>'
INVALID_INPUT: 'إدخال غير صحيح في'
MISSING_REQUIRED_FIELD: 'حقل مطلوب مفقود:'
XSS_ISSUES: "مشاكل XSS محتملة تم اكتشافها في حقل '%s' '"
MONTHS_OF_THE_YEAR:
- 'كانون الثاني'
- 'شباط'
@@ -61,3 +73,21 @@ GRAV:
- 'الجمعة'
- 'السبت'
- 'الأحد'
YES: "نعم"
NO: "لا"
CRON:
EVERY: كل
EVERY_HOUR: كل ساعة
EVERY_MINUTE: كل دقيقة
EVERY_DAY_OF_WEEK: كل يوم في الأسبوع
EVERY_DAY_OF_MONTH: كل يوم في الشهر
EVERY_MONTH: ' كل شهر'
TEXT_PERIOD: كل <b />
TEXT_MINS: ' في <b /> دقيقة(دقائق) بعد الساعة'
TEXT_TIME: ' في <b />:<b />'
TEXT_DOW: ' في <b />'
TEXT_MONTH: ' من <b />'
TEXT_DOM: ' في <b />'
ERROR1: الوسم %s غير مدعوم!
ERROR2: عدد عناصر غير صالح.
ERROR4: تعبير غير معروف

View File

@@ -5,6 +5,7 @@ GRAV:
BAD_DATE: Невалидна дата
AGO: преди
FROM_NOW: от сега
JUST_NOW: току що
SECOND: секунда
MINUTE: минута
HOUR: час
@@ -36,8 +37,8 @@ GRAV:
YR_PLURAL: г
DEC_PLURAL: дстлт
FORM:
VALIDATION_FAIL: <b>Неуспешна проверка:</b>
INVALID_INPUT: Невалидно въвеждане в
VALIDATION_FAIL: '<b>Неуспешна проверка:</b>'
INVALID_INPUT: 'Невалидно въвеждане в'
MISSING_REQUIRED_FIELD: 'Липсва задължително поле:'
MONTHS_OF_THE_YEAR:
- 'януари'
@@ -60,3 +61,12 @@ GRAV:
- 'петък'
- 'събота'
- 'неделя'
YES: "Да"
NO: "Не"
CRON:
EVERY: всеки
EVERY_HOUR: Всеки час
EVERY_MINUTE: Всяка минута
EVERY_DAY_OF_WEEK: Всеки ден от седмицата
EVERY_DAY_OF_MONTH: Всеки ден от месеца
EVERY_MONTH: Всеки месец

View File

@@ -1,11 +1,21 @@
---
GRAV:
FRONTMATTER_ERROR_PAGE: "---\ntitle: %1$s\n---\n\n# S'ha produït un error: Frontmatter invàlid\n\nRuta: `%2$s`\n\n**%3$s**\n\n```\n%4$s\n```"
INFLECTOR_UNCOUNTABLE:
- ''
- 'informació'
- ''
- ''
- ''
- ''
- ''
- ''
NICETIME:
NO_DATE_PROVIDED: No s'ha proporcionat data
BAD_DATE: Data invàlida
AGO: abans
FROM_NOW: des d'ara
JUST_NOW: Ara mateix
SECOND: segon
MINUTE: minut
HOUR: hora
@@ -36,9 +46,10 @@ GRAV:
YR_PLURAL: anys
DEC_PLURAL: dèc.
FORM:
VALIDATION_FAIL: <b>Ha fallat la validació:</b>
INVALID_INPUT: Entrada no vàlida a
VALIDATION_FAIL: '<b>Ha fallat la validació:</b>'
INVALID_INPUT: 'Entrada no vàlida a'
MISSING_REQUIRED_FIELD: 'Falta camp obligatori:'
XSS_ISSUES: "Detectats potencials problemes XSS al camp '%s'"
MONTHS_OF_THE_YEAR:
- 'Gener'
- 'Febrer'
@@ -60,3 +71,17 @@ GRAV:
- 'Divendres'
- 'Dissabte'
- 'Diumenge'
YES: "Sí"
NO: "No"
CRON:
EVERY: cada
EVERY_HOUR: cada hora
EVERY_MINUTE: cada minut
EVERY_DAY_OF_WEEK: cada dia de la setmana
EVERY_DAY_OF_MONTH: cada dia del mes
EVERY_MONTH: cada mes
TEXT_PERIOD: Cada <b />
ERROR1: L'etiqueta %s no està suportada!
ERROR2: Nombre d'elements incorrecte
ERROR3: El jquery_element s'ha d'establir a la configuració de jqCron
ERROR4: Expressió no reconeguda

View File

@@ -1,6 +1,6 @@
---
GRAV:
FRONTMATTER_ERROR_PAGE: "---\ntitle: %1$s\n---\n\n# Chyba: Chybný frontmatter\n\nPath: `%2$s`\n\n**%3$s**\n\n```\n%4$s\n```"
FRONTMATTER_ERROR_PAGE: "---\ntitle: %1$s\n---\n\n# Chyba: Chybná hlavička\n\nCesta: `%2$s`\n\n**%3$s**\n\n```\n%4$s\n```"
INFLECTOR_PLURALS:
'/(quiz)$/i': '\1zes'
'/^(ox)$/i': '\1en'
@@ -101,9 +101,10 @@ GRAV:
YR_PLURAL: r
DEC_PLURAL: dek
FORM:
VALIDATION_FAIL: <b>Ověření se nezdařilo:</b>
INVALID_INPUT: Neplatný vstup v
VALIDATION_FAIL: '<b>Ověření se nezdařilo:</b>'
INVALID_INPUT: 'Neplatný vstup v'
MISSING_REQUIRED_FIELD: 'Chybí požadované pole:'
XSS_ISSUES: "Byly zjištěny možné problémy XSS v poli '%s'"
MONTHS_OF_THE_YEAR:
- 'leden'
- 'únor'
@@ -125,6 +126,8 @@ GRAV:
- 'pátek'
- 'sobota'
- 'neděle'
YES: "Ano"
NO: "Ne"
CRON:
EVERY: každý
EVERY_HOUR: každou hodinu

View File

@@ -1,11 +1,27 @@
---
GRAV:
FRONTMATTER_ERROR_PAGE: "---\nTitel: %1$s\n---\n\n# Fejl: Ugyldigt frontmatter\n\nSti: `%2$s`\n\n**%3$s**\n\n```\n%4$s\n```"
INFLECTOR_UNCOUNTABLE:
- 'udstyr'
- 'information'
- 'ris'
- 'penge'
- 'arter'
- 'Serier'
- 'fisk'
- 'får'
INFLECTOR_IRREGULAR:
'person': 'personer'
'man': 'mænd'
'child': 'børn'
'sex': 'køn'
'move': 'flyt'
NICETIME:
NO_DATE_PROVIDED: Ingen dato angivet
BAD_DATE: Ugyldig dato
AGO: siden
FROM_NOW: fra nu
JUST_NOW: lige nu
SECOND: sekund
MINUTE: minut
HOUR: time
@@ -15,6 +31,7 @@ GRAV:
YEAR: år
DECADE: årti
SEC: sek
MIN: min.
HR: t
WK: u
MO: md
@@ -36,8 +53,8 @@ GRAV:
YR_PLURAL: år
DEC_PLURAL: årtier
FORM:
VALIDATION_FAIL: <b>Validering mislykkedes:</b>
INVALID_INPUT: Ugyldigt input i
VALIDATION_FAIL: '<b>Validering mislykkedes:</b>'
INVALID_INPUT: 'Ugyldigt input i'
MISSING_REQUIRED_FIELD: 'Mangler obligatorisk felt:'
MONTHS_OF_THE_YEAR:
- 'januar'
@@ -60,3 +77,14 @@ GRAV:
- 'fredag'
- 'lørdag'
- 'søndag'
CRON:
EVERY: hver
EVERY_HOUR: hver time
EVERY_MINUTE: hvert minut
EVERY_DAY_OF_WEEK: alle ugens dage
EVERY_DAY_OF_MONTH: alle dage i måneden
EVERY_MONTH: hver måned
TEXT_PERIOD: Hver <b />
TEXT_MINS: ' ved <b /> minut(ter) over timen'
ERROR1: Tagget %s understøttes ikke!
ERROR2: Ugyldigt antal elementer

View File

@@ -101,9 +101,10 @@ GRAV:
YR_PLURAL: Jahre
DEC_PLURAL: Jahrzehnten
FORM:
VALIDATION_FAIL: <b>Überprüfung fehlgeschlagen:</b>
INVALID_INPUT: Ungültige Eingabe in
VALIDATION_FAIL: '<b>Überprüfung fehlgeschlagen:</b>'
INVALID_INPUT: 'Ungültige Eingabe in'
MISSING_REQUIRED_FIELD: 'Erforderliches Feld fehlt:'
XSS_ISSUES: "Potenzielle XSS-Probleme im Feld '%s' erkannt"
MONTHS_OF_THE_YEAR:
- 'Januar'
- 'Februar'
@@ -125,6 +126,8 @@ GRAV:
- 'Freitag'
- 'Samstag'
- 'Sonntag'
YES: "Ja"
NO: "Nein"
CRON:
EVERY: jede
EVERY_HOUR: jede Stunde

View File

@@ -1,11 +1,75 @@
---
GRAV:
FRONTMATTER_ERROR_PAGE: "---\nΤίτλος: %1$s\n---\n\n# Σφάλμα: Μη έγκυρη διαδρομή Frontmatter\n\nΔιαδρομή: `%2$s`\n\n**%3$s**\n\n```\n%4$s\n```"
INFLECTOR_PLURALS:
'/(quiz)$/i': '\1zes'
'/^(ox)$/i': '\1en'
'/([m|l])ouse$/i': '\1ice'
'/(matr|vert|ind)ix|ex$/i': '\1ices'
'/(x|ch|ss|sh)$/i': '\1es'
'/([^aeiouy]|qu)ies$/i': '\1y'
'/([^aeiouy]|qu)y$/i': '\1ies'
'/(hive)$/i': '\1s'
'/(?:([^f])fe|([lr])f)$/i': '\1\2ves'
'/sis$/i': 'ses'
'/([ti])um$/i': '\1a'
'/(buffal|tomat)o$/i': '\1oes'
'/(bu)s$/i': '\1ses'
'/(alias|status)/i': '\1es'
'/(octop|vir)us$/i': '\1i'
'/(ax|test)is$/i': '\1es'
'/s$/i': 's'
'/$/': 's'
INFLECTOR_SINGULAR:
'/(quiz)zes$/i': '\1'
'/(matr)ices$/i': '\1ix'
'/(vert|ind)ices$/i': '\1ex'
'/^(ox)en/i': '\1'
'/(alias|status)es$/i': '\1'
'/([octop|vir])i$/i': '\1us'
'/(cris|ax|test)es$/i': '\1is'
'/(shoe)s$/i': '\1'
'/(o)es$/i': '\1'
'/(bus)es$/i': '\1'
'/([m|l])ice$/i': '\1ouse'
'/(x|ch|ss|sh)es$/i': '\1'
'/(m)ovies$/i': '\1ovie'
'/(s)eries$/i': '\1eries'
'/([^aeiouy]|qu)ies$/i': '\1y'
'/([lr])ves$/i': '\1f'
'/(tive)s$/i': '\1'
'/(hive)s$/i': '\1'
'/([^f])ves$/i': '\1fe'
'/(^analy)ses$/i': '\1sis'
'/((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$/i': '\1\2sis'
'/([ti])a$/i': '\1um'
'/(n)ews$/i': '\1ews'
INFLECTOR_UNCOUNTABLE:
- 'εξοπλισμός'
- 'πληροφοριες'
- 'rice'
- 'χρήματα'
- 'είδη'
- 'σειρές'
- 'ψάρι'
- 'πρόβατο'
INFLECTOR_IRREGULAR:
'person': 'άνθρωποι'
'man': 'άνδρες'
'child': 'παιδιά'
'sex': 'φύλο'
'move': 'κινήσεις'
INFLECTOR_ORDINALS:
'default': 'th'
'first': 'st'
'second': 'nd'
'third': 'rd'
NICETIME:
NO_DATE_PROVIDED: Δεν δόθηκε καμία ημερομηνία
BAD_DATE: Εσφαλμένη ημερομηνία
AGO: πρίν
FROM_NOW: από τώρα
JUST_NOW: μόλις τώρα
SECOND: δευτερόλεπτο
MINUTE: λεπτό
HOUR: ώρα
@@ -37,8 +101,8 @@ GRAV:
YR_PLURAL: έτη
DEC_PLURAL: δεκαετίες
FORM:
VALIDATION_FAIL: <b>Η επικύρωση απέτυχε:</b>
INVALID_INPUT: Μη έγκυρα δεδομένα σε
VALIDATION_FAIL: '<b>Η επικύρωση απέτυχε:</b>'
INVALID_INPUT: 'Μη έγκυρα δεδομένα σε'
MISSING_REQUIRED_FIELD: 'Λείπει το απαιτούμενο πεδίο:'
MONTHS_OF_THE_YEAR:
- 'Ιανουάριος'
@@ -61,3 +125,20 @@ GRAV:
- 'Παρασκευή'
- 'Σάββατο'
- 'Κυριακή'
CRON:
EVERY: κάθε
EVERY_HOUR: κάθε ώρα
EVERY_MINUTE: κάθε λεπτό
EVERY_DAY_OF_WEEK: κάθε μέρα της εβδομάδος
EVERY_DAY_OF_MONTH: κάθε μέρα του μήνα
EVERY_MONTH: κάθε μήνα
TEXT_PERIOD: Κάθε <b />
TEXT_MINS: ' κατά <b /> λεπτό(ά) μετά την ώρα'
TEXT_TIME: ' στο <b />:<b />'
TEXT_DOW: ' στις <b />'
TEXT_MONTH: ' από <b />'
TEXT_DOM: ' στις <b />'
ERROR1: Η ετικέτα %s δεν υποστηρίζεται!
ERROR2: Μη έγκυρος αριθμός στοιχείων
ERROR3: Το jquery_element θα έπρεπε να οριστεί στις ρυθμίσεις του jqCron
ERROR4: Μη αναγνωρισμένη έκφραση

View File

@@ -94,9 +94,10 @@ GRAV:
YR_PLURAL: yrs
DEC_PLURAL: decs
FORM:
VALIDATION_FAIL: <b>Validation failed:</b>
INVALID_INPUT: Invalid input in
MISSING_REQUIRED_FIELD: Missing required field:
VALIDATION_FAIL: '<b>Validation failed:</b>'
INVALID_INPUT: 'Invalid input in'
MISSING_REQUIRED_FIELD: 'Missing required field:'
XSS_ISSUES: "Potential XSS issues detected in '%s' field"
MONTHS_OF_THE_YEAR: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']
DAYS_OF_THE_WEEK: ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
YES: "Yes"
@@ -118,3 +119,10 @@ GRAV:
ERROR2: Bad number of elements
ERROR3: The jquery_element should be set into jqCron settings
ERROR4: Unrecognized expression
PLUGIN_ADMIN:
UPDATES_SECTION: Updates
SAFE_UPGRADE: Safe self-upgrade
SAFE_UPGRADE_HELP: When enabled, Grav core updates use staged installation with automatic rollback support.
SAFE_UPGRADE_SNAPSHOT_LIMIT: Safe-upgrade snapshots to keep
SAFE_UPGRADE_SNAPSHOT_LIMIT_HELP: Maximum number of snapshots to retain for safe upgrades (0 disables pruning).

40
system/languages/eo.yaml Normal file
View File

@@ -0,0 +1,40 @@
---
GRAV:
FRONTMATTER_ERROR_PAGE: "---\ntitle: %1$s\n---\n\n# Eraro: Nevalida Frontmatter\n\nVojo: `%2$s`\n\n**%3$s**\n\n```\n%4$s\n```"
INFLECTOR_PLURALS:
'/sis$/i': 'j'
NICETIME:
FROM_NOW: ekde nun
JUST_NOW: Ĝuste nun
SECOND: sekundo
MINUTE: minuto
HOUR: horo
DAY: tago
WEEK: semajno
MONTH: monato
YEAR: jaro
DECADE: jardeko
SEC: sek.
MIN: min.
HR: horo
SECOND_PLURAL: sekundoj
MINUTE_PLURAL: minutoj
HOUR_PLURAL: horoj
DAY_PLURAL: tagoj
WEEK_PLURAL: semajnoj
MONTH_PLURAL: monatoj
YEAR_PLURAL: jaroj
DECADE_PLURAL: jardekoj
MONTHS_OF_THE_YEAR:
- 'januaro'
- 'februaro'
- 'marto'
- 'aprilo'
- ''
- ''
- ''
- ''
- ''
- ''
- ''
- ''

View File

@@ -1,23 +1,29 @@
---
GRAV:
FRONTMATTER_ERROR_PAGE: "---\ntítulo: %1$s\n---\n\n# Error: Frontmatter no válido\n\nRuta: `%2$s`\n\n**%3$s**\n\n```\n%4$s\n```"
FRONTMATTER_ERROR_PAGE: "---\ntítulo: %1$s\n---\n\n# Error: Prefacio no válido\n\nRuta: `%2$s`\n\n**%3$s**\n\n```\n%4$s\n```"
INFLECTOR_PLURALS:
'/(quiz)$/i': '\1ios'
'/s$/i': 's'
'/$/': 's'
INFLECTOR_UNCOUNTABLE:
- 'equipo'
- 'equipamiento'
- 'información'
- 'rice'
- 'arroz'
- 'dinero'
- 'species'
- 'especies'
- 'series'
- 'pescado'
- 'oveja'
INFLECTOR_IRREGULAR:
'person': 'personas'
'man': 'hombres'
'child': 'niños'
'sex': 'sexos'
'move': 'movido'
INFLECTOR_ORDINALS:
'first': 'ro'
'second': 'do'
'third': 'ro'
'first': ''
'second': ''
'third': ''
NICETIME:
NO_DATE_PROVIDED: No se proporcionó fecha
BAD_DATE: Fecha errónea
@@ -33,10 +39,12 @@ GRAV:
YEAR: año
DECADE: década
SEC: seg
MIN: min
HR: h
WK: sem
MO: mes
YR: año
DEC: déc
SECOND_PLURAL: segundos
MINUTE_PLURAL: minutos
HOUR_PLURAL: horas
@@ -46,6 +54,7 @@ GRAV:
YEAR_PLURAL: años
DECADE_PLURAL: décadas
SEC_PLURAL: segs
MIN_PLURAL: mins
HR_PLURAL: hs
WK_PLURAL: sem
MO_PLURAL: mes
@@ -55,6 +64,7 @@ GRAV:
VALIDATION_FAIL: '<b>Falló la validación: </b>'
INVALID_INPUT: 'Dato inválido en: '
MISSING_REQUIRED_FIELD: 'Falta el campo requerido: '
XSS_ISSUES: "Se detectaron potenciales problemas XSS en el campo '%s'"
MONTHS_OF_THE_YEAR:
- 'Enero'
- 'Febrero'
@@ -76,6 +86,8 @@ GRAV:
- 'Viernes'
- 'Sábado'
- 'Domingo'
YES: "Sí"
NO: "No"
CRON:
EVERY: cada
EVERY_HOUR: cada hora
@@ -84,12 +96,12 @@ GRAV:
EVERY_DAY_OF_MONTH: cada día del mes
EVERY_MONTH: cada mes
TEXT_PERIOD: Cada <b />
TEXT_MINS: ' a <b /> minuto(s) despues de la hora'
TEXT_MINS: ' a <b /> minuto(s) después de la hora'
TEXT_TIME: ' a <b />:<b />'
TEXT_DOW: ' en <b />'
TEXT_MONTH: ' de<b />'
TEXT_DOM: ' en<b />'
ERROR1: La etiqueta %s no está soportada!
ERROR2: El número de elementos es erroneo
ERROR1: No se admite la etiqueta %s.
ERROR2: El número de elementos es erróneo
ERROR3: El jquery_element debería establecerse en la configuración del jqCron
ERROR4: Expresión no reconocida

View File

@@ -1,13 +1,24 @@
---
GRAV:
FRONTMATTER_ERROR_PAGE: "---\npealkiri: %1$s\n---\n\n# Viga: vigane Frontmatter'i\n\nasukoht: `%2$s`\n\n**%3$s**\n\n```\n%4$s\n```"
INFLECTOR_PLURALS:
'/(octop|vir)us$/i': '\1i'
INFLECTOR_SINGULAR:
'/^(ox)en/i': '\1'
'/(alias|status)es$/i': '\1'
'/(shoe)s$/i': '\1'
'/(o)es$/i': '\1'
'/(bus)es$/i': '\1'
'/(x|ch|ss|sh)es$/i': '\1'
'/(tive)s$/i': '\1'
'/(hive)s$/i': '\1'
INFLECTOR_UNCOUNTABLE:
- 'equipment'
- ''
- 'informatsioon'
- 'rice'
- 'money'
- 'species'
- 'series'
- 'riis'
- 'raha'
- ''
- ''
- 'kala'
- 'lammas'
INFLECTOR_IRREGULAR:
@@ -34,6 +45,7 @@ GRAV:
YEAR: aasta
DECADE: 10 aastat
SEC: sek
MIN: min
HR: t
WK: näd
MO: k.
@@ -55,9 +67,10 @@ GRAV:
YR_PLURAL: aastat
DEC_PLURAL: dek.
FORM:
VALIDATION_FAIL: <b>Kinnitamine nurjus:</b>
VALIDATION_FAIL: '<b>Kinnitamine nurjus:</b>'
INVALID_INPUT: 'Vigane sisend:'
MISSING_REQUIRED_FIELD: 'Nõutud väli puudub:'
XSS_ISSUES: "Tuvastasime '%s' väljal võimaliku XSS-riski"
MONTHS_OF_THE_YEAR:
- 'jaanuar'
- 'veebruar'
@@ -79,7 +92,17 @@ GRAV:
- 'reede'
- 'laupäev'
- 'pühapäev'
YES: "Jah"
NO: "Ei"
CRON:
EVERY: iga
EVERY_HOUR: iga tund
EVERY_MINUTE: iga minut
EVERY_DAY_OF_WEEK: nädala igal päeval
EVERY_DAY_OF_MONTH: kuu igal päeval
EVERY_MONTH: iga kuu
TEXT_PERIOD: Iga <b />
ERROR1: Silt %s pole toetatud!
ERROR2: Vale elementide arv
ERROR3: jqCron seadetes peaks olema määratud jquery_element
ERROR4: Tundmatu väljend

View File

@@ -36,8 +36,8 @@ GRAV:
YR_PLURAL: urt
DEC_PLURAL: ham
FORM:
VALIDATION_FAIL: <b>Balidazioak huts egin du</b>
INVALID_INPUT: Baliogabeko sarrera
VALIDATION_FAIL: '<b>Balidazioak huts egin du</b>'
INVALID_INPUT: 'Baliogabeko sarrera'
MISSING_REQUIRED_FIELD: 'Derrigorrezko eremua bete gabe:'
MONTHS_OF_THE_YEAR:
- 'Urtarrila'

View File

@@ -36,8 +36,8 @@ GRAV:
YR_PLURAL: سال
DEC_PLURAL: دهه
FORM:
VALIDATION_FAIL: <b>سنجش اعتبار ناموفق بود</b>
INVALID_INPUT: ورودی نامعتبر در
VALIDATION_FAIL: '<b>سنجش اعتبار ناموفق بود</b>'
INVALID_INPUT: 'ورودی نامعتبر در'
MISSING_REQUIRED_FIELD: 'قسمت ضروری جا افتاده:'
MONTHS_OF_THE_YEAR:
- 'ژانویه'

View File

@@ -45,12 +45,12 @@ GRAV:
'/([ti])a$/i': '\1um'
'/(n)ews$/i': '\1ews'
INFLECTOR_UNCOUNTABLE:
- 'equipment'
- 'information'
- ''
- ''
- 'riisi'
- 'raha'
- 'lajit'
- 'series'
- ''
- 'kala'
- 'lammas'
INFLECTOR_IRREGULAR:
@@ -100,8 +100,8 @@ GRAV:
YR_PLURAL: v
DEC_PLURAL: vuosikymmentä
FORM:
VALIDATION_FAIL: <b>Vahvistus epäonnistui:</b>
INVALID_INPUT: Syöte ei kelpaa
VALIDATION_FAIL: '<b>Vahvistus epäonnistui:</b>'
INVALID_INPUT: 'Syöte ei kelpaa'
MISSING_REQUIRED_FIELD: 'Puuttuva pakollinen kenttä:'
MONTHS_OF_THE_YEAR:
- 'Tammikuu'

View File

@@ -16,13 +16,34 @@ GRAV:
'/(buffal|tomat)o$/i': '\1es'
'/(bu)s$/i': 'Bus'
'/(alias|status)/i': 'alias|status'
'/(octop|vir)us$/i': 'virus'
'/(ax|test)is$/i': '\1s'
'/s$/i': 's'
'/$/': 's'
INFLECTOR_SINGULAR:
'/(quiz)zes$/i': '\1'
'/(matr)ices$/i': '\1ix'
'/(vert|ind)ices$/i': '\1ex'
'/^(ox)en/i': '\1'
'/(alias|status)es$/i': '\1'
'/([octop|vir])i$/i': '\1us'
'/(cris|ax|test)es$/i': '\1is'
'/(shoe)s$/i': '\1'
'/(o)es$/i': '\1'
'/(bus)es$/i': '\1'
'/([m|l])ice$/i': '\1ouse'
'/(x|ch|ss|sh)es$/i': '\1'
'/(m)ovies$/i': '\1ovie'
'/(s)eries$/i': '\1eries'
'/([^aeiouy]|qu)ies$/i': '\1y'
'/([lr])ves$/i': '\1f'
'/(tive)s$/i': '\1'
'/(hive)s$/i': '\1'
'/([^f])ves$/i': '\1fe'
'/(^analy)ses$/i': '\1sis'
'/((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$/i': '\1\2sis'
'/([ti])a$/i': '\1um'
'/(n)ews$/i': '\1ouvelles'
INFLECTOR_UNCOUNTABLE:
- 'équipement'
- 'information'
@@ -57,10 +78,10 @@ GRAV:
MONTH: mois
YEAR: année
DECADE: décennie
SEC: s
MIN: m
HR: h
WK: sem
SEC: sec.
MIN: min.
HR: hr.
WK: sem.
MO: m
YR: an
DEC: déc
@@ -80,30 +101,33 @@ GRAV:
YR_PLURAL: a
DEC_PLURAL: décs
FORM:
VALIDATION_FAIL: <b>La validation a échoué :</b>
INVALID_INPUT: Saisie non valide
VALIDATION_FAIL: '<b>La validation a échoué :</b>'
INVALID_INPUT: 'Saisie non valide'
MISSING_REQUIRED_FIELD: 'Champ obligatoire manquant :'
XSS_ISSUES: "Erreurs XSS probablement détectées dans le champ '%s'"
MONTHS_OF_THE_YEAR:
- 'Janvier'
- 'Février'
- 'Mars'
- 'Avril'
- 'Mai'
- 'Juin'
- 'Juillet'
- 'Août'
- 'Septembre'
- 'Octobre'
- 'Novembre'
- 'Décembre'
- 'janvier'
- 'février'
- 'mars'
- 'avril'
- 'mai'
- 'juin'
- 'juillet'
- 'août'
- 'septembre'
- 'octobre'
- 'novembre'
- 'décembre'
DAYS_OF_THE_WEEK:
- 'Lundi'
- 'Mardi'
- 'Mercredi'
- 'Jeudi'
- 'Vendredi'
- 'Samedi'
- 'Dimanche'
- 'lundi'
- 'mardi'
- 'mercredi'
- 'jeudi'
- 'vendredi'
- 'samedi'
- 'dimanche'
YES: "Oui"
NO: "Non"
CRON:
EVERY: chaque
EVERY_HOUR: toutes les heures
@@ -117,7 +141,7 @@ GRAV:
TEXT_DOW: ' sur <b/>'
TEXT_MONTH: ' de <b />'
TEXT_DOM: ' sur <b/>'
ERROR1: La balise %s n'est pas supportée!
ERROR1: La balise %s n'est pas prise en charge !
ERROR2: Nombre invalide d'éléments
ERROR3: L'élément jquery_element doit être défini dans les paramètres jqCron
ERROR4: Expression non reconnue

147
system/languages/gl.yaml Normal file
View File

@@ -0,0 +1,147 @@
---
GRAV:
FRONTMATTER_ERROR_PAGE: "---\ntítulo: %1$s\n---\n\n# Erro: Limiar incorrecto\n\nRuta: `%2$s`\n\n**%3$s**\n\n```\n%4$s\n```"
INFLECTOR_PLURALS:
'/(quiz)$/i': '\1zes'
'/^(ox)$/i': '\1en'
'/([m|l])ouse$/i': '\1ice'
'/(matr|vert|ind)ix|ex$/i': '\1ices'
'/(x|ch|ss|sh)$/i': '\1es'
'/([^aeiouy]|qu)ies$/i': '\1y'
'/([^aeiouy]|qu)y$/i': '\1ies'
'/(hive)$/i': '\1s'
'/(?:([^f])fe|([lr])f)$/i': '\1\2ves'
'/sis$/i': 'ses'
'/([ti])um$/i': '\1a'
'/(buffal|tomat)o$/i': '\1oes'
'/(bu)s$/i': '\1ses'
'/(alias|status)/i': '\1'
'/(octop|vir)us$/i': '\1'
'/(ax|test)is$/i': '\1es'
'/s$/i': 's'
'/$/': 's'
INFLECTOR_SINGULAR:
'/(quiz)zes$/i': '\1ces'
'/(matr)ices$/i': '\1ix'
'/(vert|ind)ices$/i': '\1ex'
'/^(ox)en/i': '\1'
'/(alias|status)es$/i': '\1'
'/([octop|vir])i$/i': '\1'
'/(cris|ax|test)es$/i': '\1es'
'/(shoe)s$/i': '\1'
'/(o)es$/i': '\1'
'/(bus)es$/i': '\1'
'/([m|l])ice$/i': '\1ouse'
'/(x|ch|ss|sh)es$/i': '\1'
'/(m)ovies$/i': '\1ovie'
'/(s)eries$/i': '\1eries'
'/([^aeiouy]|qu)ies$/i': '\1'
'/([lr])ves$/i': '\1f'
'/(tive)s$/i': '\1'
'/(hive)s$/i': '\1'
'/([^f])ves$/i': '\1fe'
'/(^analy)ses$/i': '\1se'
'/((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$/i': '\1\2se'
'/([ti])a$/i': '\1um'
'/(n)ews$/i': '\1ews'
INFLECTOR_UNCOUNTABLE:
- 'equipo'
- 'información'
- 'arroz'
- 'diñeiro'
- 'especies'
- 'series'
- 'peixe'
- 'ovella'
INFLECTOR_IRREGULAR:
'person': 'xente'
'man': 'home'
'child': 'neno'
'sex': 'sexos'
'move': 'move'
INFLECTOR_ORDINALS:
'default': 'º'
'first': 'º'
'second': 'º'
'third': 'º'
NICETIME:
NO_DATE_PROVIDED: Non fornece unha data
BAD_DATE: Data errada
AGO: hai
FROM_NOW: dende agora
JUST_NOW: xusto agora
SECOND: segundo
MINUTE: minuto
HOUR: hora
DAY: día
WEEK: semana
MONTH: mes
YEAR: ano
DECADE: década
SEC: seg
MIN: min
HR: hr
WK: Sem
MO: m
YR: a
DEC: dec
SECOND_PLURAL: segundos
MINUTE_PLURAL: minutos
HOUR_PLURAL: horas
DAY_PLURAL: días
WEEK_PLURAL: semanas
MONTH_PLURAL: meses
YEAR_PLURAL: anos
DECADE_PLURAL: décadas
SEC_PLURAL: segs
MIN_PLURAL: mins
HR_PLURAL: hrs
WK_PLURAL: sem
MO_PLURAL: mes
YR_PLURAL: a
DEC_PLURAL: deca
FORM:
VALIDATION_FAIL: '<b>Fallou a validación:</b>'
INVALID_INPUT: 'Entrada incorrecta en'
MISSING_REQUIRED_FIELD: 'Falta un campo requirido:'
XSS_ISSUES: "Detectáronse posibles problemas XSS no campo '% s'"
MONTHS_OF_THE_YEAR:
- 'xaneiro'
- 'febreiro'
- 'marzo'
- 'abril'
- 'maio'
- 'xuño'
- 'xullo'
- 'agosto'
- 'setembro'
- 'outubro'
- 'novembro'
- 'decembro'
DAYS_OF_THE_WEEK:
- 'luns'
- 'martes'
- 'mércores'
- 'xoves'
- 'venres'
- 'sábado'
- 'domingo'
YES: "Si"
NO: "Non"
CRON:
EVERY: cada
EVERY_HOUR: Cada hora
EVERY_MINUTE: Cada minuto
EVERY_DAY_OF_WEEK: cada día da semana
EVERY_DAY_OF_MONTH: cada día do mes
EVERY_MONTH: cada mes
TEXT_PERIOD: Cada <b />
TEXT_MINS: ' dentro de <b /> minuto(s) despois da hora'
TEXT_TIME: ' dentro <b />:<b />'
TEXT_DOW: ' o <b />'
TEXT_MONTH: ' de <b />'
TEXT_DOM: ' o <b />'
ERROR1: A etiqueta %s non é compatíbel!
ERROR2: Mal número de elementos
ERROR3: O jquery_element debería estar determinado na configuración de jqCron
ERROR4: Expresión non recoñecida

View File

@@ -1,11 +1,27 @@
---
GRAV:
FRONTMATTER_ERROR_PAGE: "---\nכותרת: %1$s\n---\n# שגיאה: Fronmatter לא חוקי\nנתיב: `%2$s`\n**%3$s**\n```\n%4$s\n```"
INFLECTOR_UNCOUNTABLE:
- 'ציוד'
- 'מידע'
- 'אורז'
- 'כסף'
- 'מינים'
- 'סדרה'
- 'דג'
- 'כבשה'
INFLECTOR_IRREGULAR:
'person': 'אנשים'
'man': 'גברים'
'child': 'ילדים'
'sex': 'מינים'
'move': 'מהלכים'
NICETIME:
NO_DATE_PROVIDED: לא סופק תאריך
BAD_DATE: תאריך פגום
AGO: לפני
FROM_NOW: כרגע
JUST_NOW: כרגע
SECOND: שנייה
MINUTE: דקה
HOUR: שעה
@@ -37,9 +53,10 @@ GRAV:
YR_PLURAL: שני'
DEC_PLURAL: עש'
FORM:
VALIDATION_FAIL: <b>האימות נכשל:</b>
INVALID_INPUT: קלט לא חוקי
VALIDATION_FAIL: '<b>האימות נכשל:</b>'
INVALID_INPUT: 'קלט לא חוקי'
MISSING_REQUIRED_FIELD: 'שדות חובה חסרים:'
XSS_ISSUES: "בעיות XSS פוטנציאליות זוהו בשדה '%s'"
MONTHS_OF_THE_YEAR:
- 'ינואר'
- 'פברואר'
@@ -61,3 +78,22 @@ GRAV:
- 'שישי'
- 'שבת'
- 'ראשון'
YES: "כן"
NO: "לא"
CRON:
EVERY: בכל
EVERY_HOUR: בכל שעה
EVERY_MINUTE: כל דקה
EVERY_DAY_OF_WEEK: כל יום בשבוע
EVERY_DAY_OF_MONTH: בכל יום בחודש
EVERY_MONTH: כל חודש
TEXT_PERIOD: כל <b />
TEXT_MINS: 'ב <b /> דקות אחרי השעה'
TEXT_TIME: 'ב <b />:<b />'
TEXT_DOW: 'ב <b />'
TEXT_MONTH: 'של <b />'
TEXT_DOM: 'ב <b />'
ERROR1: התגית %s אינו נתמכת
ERROR2: מספר לא חוקי של משתנים.
ERROR3: יש להגדיר את ה-jquery_element להגדרות jqCron
ERROR4: ביטוי לא מזוהה

View File

@@ -1,8 +1,9 @@
---
GRAV:
FRONTMATTER_ERROR_PAGE: "---\nnaslov: %1$s\n---\n\n# Pogreška: nevažeći frontmatter\n\nPutanja datoteke: `%2$s`\n\n**%3$s**\n\n```\n%4$s\n```"
INFLECTOR_UNCOUNTABLE:
- 'oprema'
- 'informacije'
- 'informacija'
- 'riža'
- 'novac'
- 'vrsta'
@@ -15,11 +16,17 @@ GRAV:
'child': 'djeca'
'sex': 'spolovi'
'move': 'Pomakni'
INFLECTOR_ORDINALS:
'default': '.'
'first': '.'
'second': '.'
'third': '.'
NICETIME:
NO_DATE_PROVIDED: Datum nije upisan
BAD_DATE: Pogrešan datum
AGO: prije
FROM_NOW: od sada
JUST_NOW: upravo sad
SECOND: sekunda
MINUTE: minuta
HOUR: sat
@@ -29,6 +36,7 @@ GRAV:
YEAR: godina
DECADE: desetljeće
SEC: sek
MIN: min
HR: sat
WK: t
MO: m
@@ -50,9 +58,10 @@ GRAV:
YR_PLURAL: g
DEC_PLURAL: des
FORM:
VALIDATION_FAIL: <b>Validacija nije uspjela:</b>
INVALID_INPUT: Pogrešan unos u
VALIDATION_FAIL: '<b>Validacija nije uspjela:</b>'
INVALID_INPUT: 'Pogrešan unos u'
MISSING_REQUIRED_FIELD: 'Nedostaje obavezno polje:'
XSS_ISSUES: "Potencijalni XSS problemi otkriveni u polju '%s'"
MONTHS_OF_THE_YEAR:
- 'Siječanj'
- 'Veljača'
@@ -74,3 +83,22 @@ GRAV:
- 'Petak'
- 'Subota'
- 'Nedjelja'
YES: "Da"
NO: "Ne"
CRON:
EVERY: svaki
EVERY_HOUR: svaki sat
EVERY_MINUTE: svake minute
EVERY_DAY_OF_WEEK: svaki dan u tjednu
EVERY_DAY_OF_MONTH: svaki dan u mjesecu
EVERY_MONTH: svaki mjesec
TEXT_PERIOD: Svakih <b />
TEXT_MINS: ' u <b /> minut(e) nakon sata'
TEXT_TIME: ' u <b />:<b />'
TEXT_DOW: ' na <b />'
TEXT_MONTH: ' <b />'
TEXT_DOM: ' na <b />'
ERROR1: Oznaka %s nije podržana!
ERROR2: Pogrešan broj elemenata.
ERROR3: jquery_element treba postaviti u postavke jqCron
ERROR4: Izraz nije prepoznat

View File

@@ -58,7 +58,7 @@ GRAV:
YR_PLURAL: év
DEC_PLURAL: évt
FORM:
VALIDATION_FAIL: <b>Érvényesítés nem sikerült:</b>
VALIDATION_FAIL: '<b>Érvényesítés nem sikerült:</b>'
INVALID_INPUT: 'A megadott érték érvénytelen:'
MISSING_REQUIRED_FIELD: 'Ez a kötelező mező nincs kitöltve:'
MONTHS_OF_THE_YEAR:

View File

@@ -1,26 +1,74 @@
---
GRAV:
FRONTMATTER_ERROR_PAGE: "---\ntitle: %1$s\n---\n\n# Error: Frontmatter tidak valid\n\nLokasi: `%2$s`\n\n**%3$s**\n\n```\n%4$s\n```"
INFLECTOR_PLURALS:
'/(quiz)$/i': '\1zes'
'/^(ox)$/i': '\1en'
'/([m|l])ouse$/i': '\1ice'
'/(matr|vert|ind)ix|ex$/i': '\1ices'
'/(x|ch|ss|sh)$/i': '\1es'
'/([^aeiouy]|qu)ies$/i': '\1y'
'/([^aeiouy]|qu)y$/i': '\1ies'
'/(hive)$/i': '\1s'
'/(?:([^f])fe|([lr])f)$/i': '\1\2ves'
'/sis$/i': 'ses'
'/([ti])um$/i': '\1a'
'/(buffal|tomat)o$/i': '\1oes'
'/(bu)s$/i': '\1ses'
'/(alias|status)/i': '\1es'
'/(octop|vir)us$/i': '\1i'
'/(ax|test)is$/i': '\1es'
'/s$/i': 's'
'/$/': 's'
INFLECTOR_SINGULAR:
'/(quiz)zes$/i': '\1'
'/(matr)ices$/i': '\1ix'
'/(vert|ind)ices$/i': '\1ex'
'/^(ox)en/i': '\1'
'/(alias|status)es$/i': '\1'
'/([octop|vir])i$/i': '\1us'
'/(cris|ax|test)es$/i': '\1is'
'/(shoe)s$/i': '\1'
'/(o)es$/i': '\1'
'/(bus)es$/i': '\1'
'/([m|l])ice$/i': '\1ouse'
'/(x|ch|ss|sh)es$/i': '\1'
'/(m)ovies$/i': '\1ovie'
'/(s)eries$/i': '\1eries'
'/([^aeiouy]|qu)ies$/i': '\1y'
'/([lr])ves$/i': '\1f'
'/(tive)s$/i': '\1'
'/(hive)s$/i': '\1'
'/([^f])ves$/i': '\1fe'
'/(^analy)ses$/i': '\1sis'
'/((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$/i': '\1\2sis'
'/([ti])a$/i': '\1um'
'/(n)ews$/i': '\1ews'
INFLECTOR_UNCOUNTABLE:
- 'peralatan'
- 'informasi'
- 'nasi'
- 'uang'
- 'spesies'
- 'rangkaian'
- 'ikan'
- 'domba'
- 'Peralatan'
- 'Informasi '
- 'Nasi'
- 'Uang'
- 'Jenis'
- 'Seri'
- 'Ikan'
- 'Domba'
INFLECTOR_IRREGULAR:
'person': 'orang-orang'
'man': 'laki-laki'
'child': 'anak-anak'
'sex': 'jenis kelamin'
'person': 'Orang-orang'
'man': 'Pria'
'child': 'Balita'
'sex': 'Jenis Kelamin'
'move': 'pindahkan'
INFLECTOR_ORDINALS:
'default': 'ke'
'first': 'pertama'
'second': 'nd'
'third': 'rd'
NICETIME:
NO_DATE_PROVIDED: Tanggal tidak tersedia
NO_DATE_PROVIDED: Tidak ada tanggal yang disediakan
BAD_DATE: Format tanggal salah
AGO: yang lalu
FROM_NOW: dari saat ini
FROM_NOW: dari sekarang
JUST_NOW: baru saja
SECOND: detik
MINUTE: menit
@@ -30,12 +78,12 @@ GRAV:
MONTH: bulan
YEAR: tahun
DECADE: dekade
SEC: dtk
MIN: mnt
HR: j
WK: mng
MO: bln
YR: thn
SEC: detik
MIN: menit
HR: ' jam'
WK: minggu
MO: bulan
YR: tahun
DEC: desimal
SECOND_PLURAL: detik
MINUTE_PLURAL: menit
@@ -45,17 +93,18 @@ GRAV:
MONTH_PLURAL: bulan
YEAR_PLURAL: tahun
DECADE_PLURAL: dekade
SEC_PLURAL: dtk
MIN_PLURAL: mnt
HR_PLURAL: j
WK_PLURAL: mgg
MO_PLURAL: bln
YR_PLURAL: thn
SEC_PLURAL: detik
MIN_PLURAL: menit
HR_PLURAL: jam
WK_PLURAL: minggu
MO_PLURAL: bulan
YR_PLURAL: tahun
DEC_PLURAL: dekade
FORM:
VALIDATION_FAIL: <b>Validasi gagal:</b>
INVALID_INPUT: Input tidak valid di
VALIDATION_FAIL: '<b>Validasi gagal:</b>'
INVALID_INPUT: 'Input tidak valid di'
MISSING_REQUIRED_FIELD: 'Data yang diperlukan belum terisi:'
XSS_ISSUES: "Isu berpotensial XSS terdeteksi dalam baris %s"
MONTHS_OF_THE_YEAR:
- 'Januari'
- 'Februari'
@@ -74,22 +123,25 @@ GRAV:
- 'Selasa'
- 'Rabu'
- 'Kamis'
- 'Jumat'
- 'Jum''at'
- 'Sabtu'
- 'Minggu'
YES: "Ya"
NO: "Tidak"
CRON:
EVERY: Setiap
EVERY_HOUR: Setiap jam
EVERY_MINUTE: Setiap menit
EVERY_DAY_OF_WEEK: Setiap hari selama seminggu
EVERY_DAY_OF_MONTH: pada tanggal setiap bulannya
EVERY_DAY_OF_MONTH: Setiap hari dalam sebulan
EVERY_MONTH: setiap bulan
TEXT_PERIOD: Setiap <b />
TEXT_MINS: 'dalam <b /> menit setelah jam yang lalu'
TEXT_TIME: ' pada <b />:<b />'
TEXT_DOW: ' pada <b />'
TEXT_MONTH: ' pada <b />'
TEXT_DOM: ' pada <b />'
ERROR1: Tag %s tidak didukung!
ERROR2: Jumlah elemen tidak valid
ERROR3: jquery_element harus ditetapkan ke pengaturan jqCron
ERROR4: Ekspresi tidak dikenali
ERROR2: Jumlah elemen yang buruk
ERROR3: jquery_element harus diatur ke dalam pengaturan jqCron
ERROR4: Ekspresi tidak dikenal

View File

@@ -2,14 +2,14 @@
GRAV:
FRONTMATTER_ERROR_PAGE: "---\ntitill: %1$s\n---\n\n# Villa: Ógilt efni á forsíðu\n\nSlóð: `%2$s`\n\n**%3$s**\n\n```\n%4$s\n```"
INFLECTOR_UNCOUNTABLE:
- 'equipment'
- ''
- 'upplýsingar'
- 'rice'
- 'money'
- 'species'
- 'series'
- 'fish'
- 'sheep'
- ''
- ''
- ''
- ''
- ''
- ''
NICETIME:
NO_DATE_PROVIDED: Engin dagsetning gefin
BAD_DATE: Röng dagsetning
@@ -46,8 +46,8 @@ GRAV:
YR_PLURAL: árum
DEC_PLURAL: árat
FORM:
VALIDATION_FAIL: <b>Sannvottun mistókst:</b>
INVALID_INPUT: Ógilt inntak í
VALIDATION_FAIL: '<b>Sannvottun mistókst:</b>'
INVALID_INPUT: 'Ógilt inntak í'
MISSING_REQUIRED_FIELD: 'Vantar nauðsynlegan reit:'
MONTHS_OF_THE_YEAR:
- 'janúar'

View File

@@ -1,6 +1,49 @@
---
GRAV:
FRONTMATTER_ERROR_PAGE: "---Titolo: %1$s---# Errore: Frontmatter non valido: '%2$s' * *%3$s * * ' '%4$s ' '"
INFLECTOR_PLURALS:
'/(quiz)$/i': '\1'
'/^(ox)$/i': '\1en'
'/([m|l])ouse$/i': '\1ice'
'/(matr|vert|ind)ix|ex$/i': '\1ices'
'/(x|ch|ss|sh)$/i': '\1es'
'/([^aeiouy]|qu)ies$/i': '\1y'
'/([^aeiouy]|qu)y$/i': '\1ies'
'/(hive)$/i': '\1s'
'/(?:([^f])fe|([lr])f)$/i': '\1\2ves'
'/sis$/i': 'ses'
'/([ti])um$/i': '\1a'
'/(buffal|tomat)o$/i': '\1oes'
'/(bu)s$/i': '\1ses'
'/(alias|status)/i': '\1es'
'/(octop|vir)us$/i': '\1i'
'/(ax|test)is$/i': '\1es'
'/s$/i': 's'
'/$/': 's'
INFLECTOR_SINGULAR:
'/(quiz)zes$/i': '\1'
'/(matr)ices$/i': '\1ix'
'/(vert|ind)ices$/i': '\1ex'
'/^(ox)en/i': '\1'
'/(alias|status)es$/i': '\1'
'/([octop|vir])i$/i': '\1us'
'/(cris|ax|test)es$/i': '\1is'
'/(shoe)s$/i': '\1'
'/(o)es$/i': '\1'
'/(bus)es$/i': '\1'
'/([m|l])ice$/i': '\1ouse'
'/(x|ch|ss|sh)es$/i': '\1'
'/(m)ovies$/i': '\1ovie'
'/(s)eries$/i': '\1eries'
'/([^aeiouy]|qu)ies$/i': '\1y'
'/([lr])ves$/i': '\1f'
'/(tive)s$/i': '\1'
'/(hive)s$/i': '\1'
'/([^f])ves$/i': '\1fe'
'/(^analy)ses$/i': '\1sis'
'/((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$/i': '\1\2sis'
'/([ti])a$/i': '\1um'
'/(n)ews$/i': '\1ews'
INFLECTOR_UNCOUNTABLE:
- 'dotazione'
- 'informazione'
@@ -58,9 +101,10 @@ GRAV:
YR_PLURAL: anni
DEC_PLURAL: decenni
FORM:
VALIDATION_FAIL: <b>Validazione fallita:</b>
INVALID_INPUT: Input non valido in
VALIDATION_FAIL: '<b>Validazione fallita:</b>'
INVALID_INPUT: 'Input non valido in'
MISSING_REQUIRED_FIELD: 'Campo richiesto mancante:'
XSS_ISSUES: "Rilevati potenziali problemi di XSS nel campo '%s'"
MONTHS_OF_THE_YEAR:
- 'Gennaio'
- 'Febbraio'
@@ -82,6 +126,8 @@ GRAV:
- 'Venerdì'
- 'Sabato'
- 'Domenica'
YES: "Sì"
NO: "No"
CRON:
EVERY: ogni
EVERY_HOUR: ogni ora

View File

@@ -1,11 +1,22 @@
---
GRAV:
INFLECTOR_UNCOUNTABLE:
- ''
- '情報'
- ''
- 'お金'
- ''
- ''
- '魚'
- 'ヒツジ'
INFLECTOR_IRREGULAR:
'person': 'みんな'
'man': '人'
'child': '子供'
'sex': '性別'
'move': '移動'
INFLECTOR_ORDINALS:
'first': '番目'
NICETIME:
NO_DATE_PROVIDED: 日付が設定されていません
BAD_DATE: 不正な日付
@@ -40,8 +51,8 @@ GRAV:
YR_PLURAL:
DEC_PLURAL: 10年
FORM:
VALIDATION_FAIL: <b>バリデーション失敗 :</b>
INVALID_INPUT: 不正な入力:
VALIDATION_FAIL: '<b>バリデーション失敗 :</b>'
INVALID_INPUT: '不正な入力:'
MISSING_REQUIRED_FIELD: '必須項目が入力されていません:'
MONTHS_OF_THE_YEAR:
- '1月'
@@ -64,3 +75,7 @@ GRAV:
- '金'
- '土'
- '日'
CRON:
EVERY:
EVERY_MONTH: 毎月
ERROR1: 共有タイプ %s はサポートされていません

View File

@@ -1,11 +1,23 @@
---
GRAV:
FRONTMATTER_ERROR_PAGE: "---\ntitle: %1$s\n---\n\n# 오류: 무효의 Frontmatter\n\n경로: `%2$s`\n\n**%3$s**\n\n```\n%4$s\n```"
INFLECTOR_UNCOUNTABLE:
- '장비'
- '정보'
- ''
- ''
- ''
- '시리즈'
- '물고기'
- ''
INFLECTOR_IRREGULAR:
'person': '사람들'
NICETIME:
NO_DATE_PROVIDED: 제공된 날짜가 없습니다
BAD_DATE: 잘못된 날짜
AGO:
FROM_NOW:
JUST_NOW: 방금
SECOND:
MINUTE:
HOUR: 시간
@@ -37,9 +49,10 @@ GRAV:
YR_PLURAL:
DEC_PLURAL: 년간
FORM:
VALIDATION_FAIL: <b>유효성 검사 실패:</b>
INVALID_INPUT: 잘못된 입력
VALIDATION_FAIL: '<b>유효성 검사 실패:</b>'
INVALID_INPUT: '잘못된 입력'
MISSING_REQUIRED_FIELD: '누락 된 필수 필드:'
XSS_ISSUES: "'%s' 필드에서 잠재적인 XSS 문제가 감지되었습니다."
MONTHS_OF_THE_YEAR:
- '일월'
- '이월'
@@ -61,3 +74,17 @@ GRAV:
- '금요일'
- '토요일'
- '일요일'
YES: "네"
NO: "아니요"
CRON:
EVERY: 모두
EVERY_HOUR: 매 시간
EVERY_MINUTE: 매 분
EVERY_DAY_OF_WEEK: 일주일간 매일
EVERY_DAY_OF_MONTH: 일개월간 매일
EVERY_MONTH: 매달
TEXT_PERIOD: 모든 <b />
ERROR1: '%s 태그는 지원되지 않습니다. '
ERROR2: 잘못된 요소 수
ERROR3: jquery_element는 jqCron 설정에서 설정할 수 있습니다.
ERROR4: 인식할 수 없는 표현

View File

@@ -2,8 +2,8 @@
GRAV:
FRONTMATTER_ERROR_PAGE: "---\ntitle: %1$s\n---\n\n# Klaida: klaidinga įžanginė konfigūracija\n\nPath: `%2$s`\n\n**%3$s**\n\n```\n %4$s\n```"
INFLECTOR_UNCOUNTABLE:
- 'equipment'
- 'information'
- ''
- ''
- 'ryžiai'
- 'pinigai'
- 'prieskoniai'
@@ -52,8 +52,8 @@ GRAV:
YR_PLURAL: m.
DEC_PLURAL: dešimtmečiai
FORM:
VALIDATION_FAIL: <b>Patvirtinimas nepavyko:</b>
INVALID_INPUT: Neteisingai įvesta į
VALIDATION_FAIL: '<b>Patvirtinimas nepavyko:</b>'
INVALID_INPUT: 'Neteisingai įvesta į'
MISSING_REQUIRED_FIELD: 'Būtina užpildyti laukelį:'
MONTHS_OF_THE_YEAR:
- 'Sausis'

84
system/languages/lv.yaml Normal file
View File

@@ -0,0 +1,84 @@
---
GRAV:
FRONTMATTER_ERROR_PAGE: "---\nNosaukums: %1$s\n---\n\n# Kļūda: Nederīgs Frontmatter\n\nCeļš: `%2$s`\n\n**%3$s**\n\n```\n%4$s\n```"
INFLECTOR_ORDINALS:
'default': '.'
'first': '.'
'second': '.'
'third': '.'
NICETIME:
NO_DATE_PROVIDED: Nav norādīts datums
BAD_DATE: Nederīgs datums
AGO: iepriekš
FROM_NOW: no šī brīža
JUST_NOW: tikko
SECOND: sekundes
MINUTE: minūte
HOUR: stunda
DAY: diena
WEEK: nedēļa
MONTH: mēnesis
YEAR: gads
DECADE: dekāde
SEC: s
MIN: m
HR: st
WK: ned
MO: mēn.
YR: g.
DEC: dec
SECOND_PLURAL: sekundes
MINUTE_PLURAL: minūtes
HOUR_PLURAL: stundas
DAY_PLURAL: dienas
WEEK_PLURAL: nedēļas
MONTH_PLURAL: mēneši
YEAR_PLURAL: gadi
DECADE_PLURAL: desmitgades
SEC_PLURAL: s
MIN_PLURAL: m
HR_PLURAL: st.
WK_PLURAL: ned.
MO_PLURAL: mēn.
YR_PLURAL: g.
DEC_PLURAL: d
FORM:
VALIDATION_FAIL: '<b>Validācija neizdevās:</b>'
INVALID_INPUT: 'Nederīga ievade'
MISSING_REQUIRED_FIELD: 'Laukā trūkst datu'
XSS_ISSUES: "Atrastas iespējamas XSS problēmas laukā '%s'"
MONTHS_OF_THE_YEAR:
- 'Janvāris'
- 'Februāris'
- 'Marts'
- 'Aprīlis'
- 'Maijs'
- 'Jūnijs'
- 'Jūlijs'
- 'Augusts'
- 'Septembris'
- 'Oktobris'
- 'Novembris'
- 'Decembris'
DAYS_OF_THE_WEEK:
- 'Pirmdiena'
- 'Otrdiena'
- 'Trešdiena'
- 'Ceturtdiena'
- 'Piektdiena'
- 'Sestdiena'
- 'Svētdiena'
YES: "Jā"
NO: "Nē"
CRON:
EVERY: katru
EVERY_HOUR: katru stundu
EVERY_MINUTE: katru minūti
EVERY_DAY_OF_WEEK: katru nedēļas dienu
EVERY_DAY_OF_MONTH: katru mēneša dienu
EVERY_MONTH: katru mēnesi
TEXT_PERIOD: Katru <b />
ERROR1: Marķieris %s nav atbalstīts!
ERROR2: Nederīgs elementu skaits
ERROR3: jquery_element nevajadzētu definēt jqCron iestatījumos
ERROR4: Neatpazīta izteiksme

147
system/languages/mn.yaml Normal file
View File

@@ -0,0 +1,147 @@
---
GRAV:
FRONTMATTER_ERROR_PAGE: "---\nГарчиг: %1$s\n---\n\n# Алдаа: Буруу Формат\n\nЗам: `%2$s`\n\n**%3$s**\n\n```\n%4$s\n```"
INFLECTOR_PLURALS:
'/(quiz)$/i': '\1зүүд'
'/^(ox)$/i': '\1ууд'
'/([m|l])ouse$/i': '\1ууд'
'/(matr|vert|ind)ix|ex$/i': '\1иксүүд'
'/(x|ch|ss|sh)$/i': '\1үүд'
'/([^aeiouy]|qu)ies$/i': '\1үүд'
'/([^aeiouy]|qu)y$/i': '\1үүд'
'/(hive)$/i': '\1үүд'
'/(?:([^f])fe|([lr])f)$/i': '\1\2үүд'
'/sis$/i': 'үүд'
'/([ti])um$/i': '\1үүд'
'/(buffal|tomat)o$/i': '\1үүд'
'/(bu)s$/i': '\1үүд'
'/(alias|status)/i': '\1үүд'
'/(octop|vir)us$/i': '\1үүд'
'/(ax|test)is$/i': '\1үүд'
'/s$/i': 'үүд'
'/$/': 'үүд'
INFLECTOR_SINGULAR:
'/(quiz)zes$/i': '\1'
'/(matr)ices$/i': '\1икс'
'/(vert|ind)ices$/i': '\1икс'
'/^(ox)en/i': '\1'
'/(alias|status)es$/i': '\1'
'/([octop|vir])i$/i': '\1'
'/(cris|ax|test)es$/i': '\1'
'/(shoe)s$/i': '\1'
'/(o)es$/i': '\1'
'/(bus)es$/i': '\1'
'/([m|l])ice$/i': '\1'
'/(x|ch|ss|sh)es$/i': '\1'
'/(m)ovies$/i': '\1'
'/(s)eries$/i': '\1'
'/([^aeiouy]|qu)ies$/i': '\1үүд'
'/([lr])ves$/i': '\1'
'/(tive)s$/i': '\1'
'/(hive)s$/i': '\1'
'/([^f])ves$/i': '\1'
'/(^analy)ses$/i': '\1'
'/((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$/i': '\1\2үүд'
'/([ti])a$/i': '\1'
'/(n)ews$/i': '\1'
INFLECTOR_UNCOUNTABLE:
- 'тоног төхөөрөмж'
- 'Мэдээлэл'
- 'будаа'
- 'мөнгө'
- 'төрөл зүйл'
- 'цуврал'
- 'загас'
- 'хонь'
INFLECTOR_IRREGULAR:
'person': 'хүмүүс'
'man': 'эрчүүд'
'child': 'хүүхэд'
'sex': 'хүйс'
'move': 'хөдөлгөөн'
INFLECTOR_ORDINALS:
'default': 'th'
'first': 'st'
'second': 'nd'
'third': 'rd'
NICETIME:
NO_DATE_PROVIDED: Огноо алга
BAD_DATE: Буруу огноо
AGO: өмнө
FROM_NOW: одооноос
JUST_NOW: дөнгөж сая
SECOND: секунд
MINUTE: минут
HOUR: цаг
DAY: өдөр
WEEK: долоо хоног
MONTH: сар
YEAR: он
DECADE: арван жил
SEC: сек
MIN: мин
HR: цаг
WK: д.х.
MO: сар
YR: он
DEC: арван жил
SECOND_PLURAL: секунд
MINUTE_PLURAL: минут
HOUR_PLURAL: цаг
DAY_PLURAL: өдрүүд
WEEK_PLURAL: долоо хоногууд
MONTH_PLURAL: сарууд
YEAR_PLURAL: онууд
DECADE_PLURAL: арван жилүүд
SEC_PLURAL: сек.-үүд
MIN_PLURAL: мин.-ууд
HR_PLURAL: цагууд
WK_PLURAL: д.х.-ууд
MO_PLURAL: сарууд
YR_PLURAL: жилүүд
DEC_PLURAL: арван жилүүд
FORM:
VALIDATION_FAIL: '<b>Баталгаажуулалт амжилтгүй боллоо:</b>'
INVALID_INPUT: 'Буруу өгөгдөл дараахид'
MISSING_REQUIRED_FIELD: 'Шаардлагатай талбар дутуу байна:'
XSS_ISSUES: "'%s' талбарт XSS -ийн болзошгүй асуудлууд илэрсэн"
MONTHS_OF_THE_YEAR:
- '1-р сар'
- '2-р сар'
- '3-р сар'
- '4-р сар'
- '5 сар'
- '6 сар'
- '7 сар'
- '8 сар'
- '9 сар'
- '10 сар'
- '11 сар'
- '12 сар'
DAYS_OF_THE_WEEK:
- 'Даваа гараг'
- 'Мягмар гараг'
- 'Лхагва гараг'
- 'Пүрэв гараг'
- 'Баасан гараг'
- 'Бямба гараг'
- 'Ням гараг'
YES: "Тийм"
NO: "Үгүй"
CRON:
EVERY: бүрийн
EVERY_HOUR: цаг бүрийн
EVERY_MINUTE: минут бүрийн
EVERY_DAY_OF_WEEK: долоо хоногийн өдөр болгонд
EVERY_DAY_OF_MONTH: сарын өдөр болгонд
EVERY_MONTH: сар болгон
TEXT_PERIOD: Бүрийн <b />
TEXT_MINS: ' <b /> энэ сүүлийн цагийн минутад'
TEXT_TIME: ' <b />:<b /> -д'
TEXT_DOW: ' <b /> -д'
TEXT_MONTH: ' <b /> -ын'
TEXT_DOM: ' <b /> -т'
ERROR1: '%s -н утга нь дэмжигддэггүй!'
ERROR2: Элементүүдийн тоо хэмжээ буруу
ERROR3: jquery_element нь jqCron тохиргоонд хийгдсэн байх ёстой
ERROR4: Танигдаагүй илэрхийлэл

147
system/languages/my.yaml Normal file
View File

@@ -0,0 +1,147 @@
---
GRAV:
FRONTMATTER_ERROR_PAGE: "---\nခေါင်းစဥ်: %1$s\n---\n\n# အမှား - Frontmatter မမှန်ကန်ပါ\n\nလမ်းကြောင်း `%2$s`\n\n**%3$s**\n\n```\n%4$s\n```"
INFLECTOR_PLURALS:
'/(quiz)$/i': '\1zes'
'/^(ox)$/i': '\1en'
'/([m|l])ouse$/i': '\1ice'
'/(matr|vert|ind)ix|ex$/i': '\1ices'
'/(x|ch|ss|sh)$/i': '\1es'
'/([^aeiouy]|qu)ies$/i': '\1y'
'/([^aeiouy]|qu)y$/i': '\1ies'
'/(hive)$/i': '\1s'
'/(?:([^f])fe|([lr])f)$/i': '\1\2ves'
'/sis$/i': 'ses'
'/([ti])um$/i': '\1a'
'/(buffal|tomat)o$/i': '\1oes'
'/(bu)s$/i': '\1ses'
'/(alias|status)/i': '\1es'
'/(octop|vir)us$/i': '\1i'
'/(ax|test)is$/i': '\1es'
'/s$/i': 's'
'/$/': 's'
INFLECTOR_SINGULAR:
'/(quiz)zes$/i': '\1'
'/(matr)ices$/i': '\1ix'
'/(vert|ind)ices$/i': '\1ex'
'/^(ox)en/i': '\1'
'/(alias|status)es$/i': '\1'
'/([octop|vir])i$/i': '\1us'
'/(cris|ax|test)es$/i': '\1is'
'/(shoe)s$/i': '\1'
'/(o)es$/i': '\1'
'/(bus)es$/i': '\1'
'/([m|l])ice$/i': '\1ouse'
'/(x|ch|ss|sh)es$/i': '\1'
'/(m)ovies$/i': '\1ovie'
'/(s)eries$/i': '\1eries'
'/([^aeiouy]|qu)ies$/i': '\1y'
'/([lr])ves$/i': '\1f'
'/(tive)s$/i': '\1'
'/(hive)s$/i': '\1'
'/([^f])ves$/i': '\1fe'
'/(^analy)ses$/i': '\1sis'
'/((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$/i': '\1\2sis'
'/([ti])a$/i': '\1um'
'/(n)ews$/i': '\1ews'
INFLECTOR_UNCOUNTABLE:
- 'ကိရိယာ'
- 'အချက်အလက်'
- 'ဆန်'
- 'ငွေ'
- 'မျိုးစိတ်'
- 'အတွဲများ'
- 'ငါး'
- 'သိုးများ'
INFLECTOR_IRREGULAR:
'person': 'လူ'
'man': 'ယောက်ျား'
'child': 'ကလေးများ'
'sex': 'လိင်'
'move': 'ရွှေ့ခြင်း'
INFLECTOR_ORDINALS:
'default': 'th'
'first': 'st'
'second': 'nd'
'third': 'rd'
NICETIME:
NO_DATE_PROVIDED: နေ့စွဲ မသတ်မှတ်ထား
BAD_DATE: ရက်စွဲမမှန်ပါ
AGO: လွန်ခဲ့တဲ့
FROM_NOW: ယခုမှ
JUST_NOW: အခုပဲ
SECOND: ဒုတိယ
MINUTE: မိနစ်
HOUR: နာရီ
DAY: နေ့
WEEK: တစ်ပတ်
MONTH:
YEAR: နှစ်
DECADE: ဆယ်စုနှစ်
SEC: စက္ကန့်
MIN: မိနစ်
HR: နာရီ
WK: တစ်ပတ်
MO:
YR: နှစ်
DEC: ဒီဇင်ဘာ
SECOND_PLURAL: စက္ကန့်
MINUTE_PLURAL: မိနစ်
HOUR_PLURAL: နာရီ
DAY_PLURAL: နေ့
WEEK_PLURAL: ရက်သတ္တပတ်
MONTH_PLURAL:
YEAR_PLURAL: နှစ်
DECADE_PLURAL: ဆယ်စုနှစ်များစွ
SEC_PLURAL: စက္ကန့်
MIN_PLURAL: မိနစ်
HR_PLURAL: နာရီ
WK_PLURAL: အပတ်
MO_PLURAL:
YR_PLURAL: နှစ်
DEC_PLURAL: ဆယ်စုနှစ်
FORM:
VALIDATION_FAIL: '<b> အတည်ပြုခြင်းမအောင်မြင်ပါ: </b>'
INVALID_INPUT: 'ထည့်သွင်းမှုမမှန်ပါ'
MISSING_REQUIRED_FIELD: 'လိုအပ်သောအကွက်ပျောက်နေသည်'
XSS_ISSUES: "XSS ပြဿနာ ဖြစ်နိုင်ချေ ကို '%s' အကွက်တွင် တွေ့"
MONTHS_OF_THE_YEAR:
- 'ဇန်နဝါရီ'
- 'ဖေဖော်ဝါရီ'
- 'မတ်'
- 'ဧပြီ'
- 'မေ'
- 'ဇွန်'
- 'ဇူလိုင်'
- 'သြဂုတ်'
- 'စက်တင်ဘာ'
- 'အောက်တိုဘာ'
- 'နိုဝင်ဘာ'
- 'ဒီဇင်ဘာ'
DAYS_OF_THE_WEEK:
- 'တနင်္လာ'
- ' အင်္ဂါ'
- 'ဗုဒ္ဓဟူး'
- 'ကြာသပတေး'
- 'သောကြာ'
- 'စနေ'
- 'တနင်္ဂနွေ'
YES: "လုပ်"
NO: "မလုပ်"
CRON:
EVERY: အမြဲတမ်း
EVERY_HOUR: နာရီတိုင်း
EVERY_MINUTE: မိနစ်တိုင်း
EVERY_DAY_OF_WEEK: တစ်ပတ်လုံး နေ့တိုင်း
EVERY_DAY_OF_MONTH: တစ်လလုံး နေ့တိုင်း
EVERY_MONTH: လစဉ်လတိုင်း
TEXT_PERIOD: </b>တိုင်း
TEXT_MINS: 'နာရီ ကျော်ပြီး <b /> မိနစ် တွင်'
TEXT_TIME: ' <b />:<b /> တွင် '
TEXT_DOW: '<b /> ပေါ်တွင် '
TEXT_MONTH: '<b />၏ '
TEXT_DOM: '<b /> တွင် '
ERROR1: ဤ %s တက် ကိုပံ့ပိုးမထားပါ။
ERROR2: လိုအပ်သောထည့်သွင်း နာပတ် အမှားဖြစ်နေသည်
ERROR3: jquery_element ကို jqCron ဆက်တင် တွင်ထားရမည်
ERROR4: အသိအမှတ်မပြုသော အသုံးအနှုန်း

View File

@@ -101,9 +101,10 @@ GRAV:
YR_PLURAL: jaren
DEC_PLURAL: decennia
FORM:
VALIDATION_FAIL: <b>Validatie mislukt:</b>
INVALID_INPUT: Ongeldige invoer in
VALIDATION_FAIL: '<b>Validatie mislukt:</b>'
INVALID_INPUT: 'Ongeldige invoer in'
MISSING_REQUIRED_FIELD: 'Ontbrekend verplicht veld:'
XSS_ISSUES: "Mogelijke XSS-problemen ontdekt in '%s' veld"
MONTHS_OF_THE_YEAR:
- 'Januari'
- 'Februari'
@@ -125,6 +126,8 @@ GRAV:
- 'Vrijdag'
- 'Zaterdag'
- 'Zondag'
YES: "Ja"
NO: "Nee"
CRON:
EVERY: elke
EVERY_HOUR: elk uur

View File

@@ -21,6 +21,7 @@ GRAV:
BAD_DATE: Ugyldig dato
AGO: siden
FROM_NOW: fra nå
JUST_NOW: akkurat nå
SECOND: sekund
MINUTE: minutt
HOUR: time
@@ -51,8 +52,8 @@ GRAV:
YR_PLURAL: år
DEC_PLURAL: årtier
FORM:
VALIDATION_FAIL: <b>Godkjenning mislyktes:</b>
INVALID_INPUT: Ugyldig innhold i
VALIDATION_FAIL: '<b>Godkjenning mislyktes:</b>'
INVALID_INPUT: 'Ugyldig innhold i'
MISSING_REQUIRED_FIELD: 'Mangler påkrevd felt:'
MONTHS_OF_THE_YEAR:
- 'januar'
@@ -75,3 +76,7 @@ GRAV:
- 'fredag'
- 'lørdag'
- 'søndag'
CRON:
EVERY: hver
EVERY_HOUR: hver time
EVERY_MINUTE: hvert minutt

View File

@@ -1,11 +1,32 @@
---
GRAV:
FRONTMATTER_ERROR_PAGE: "---\ntitle: %1$s\n---\n\n# Error: Nieprawidłowy Frontmatter\n\nPath: `%2$s`\n\n**%3$s**\n\n```\n%4$s\n```"
INFLECTOR_SINGULAR:
'/(alias|status)es$/i': '\1'
INFLECTOR_UNCOUNTABLE:
- 'wyposażenie'
- 'informacja'
- ''
- 'pieniądze'
- ''
- ''
- 'ryba'
- 'owca'
INFLECTOR_IRREGULAR:
'person': 'człowiek'
'man': 'mężczyźni'
'child': 'dzieci'
'sex': 'płci'
INFLECTOR_ORDINALS:
'first': 'pierwszy'
'second': 'drugi'
'third': 'trzeci'
NICETIME:
NO_DATE_PROVIDED: Nie podano daty
BAD_DATE: Zła data
AGO: temu
FROM_NOW: od teraz
JUST_NOW: właśnie teraz
SECOND: sekunda
MINUTE: minuta
HOUR: godzina
@@ -15,6 +36,7 @@ GRAV:
YEAR: rok
DECADE: dekada
SEC: sek
MIN: minuta
HR: godz
WK: tydz
MO: m-c
@@ -36,9 +58,10 @@ GRAV:
YR_PLURAL: lat
DEC_PLURAL: dekad
FORM:
VALIDATION_FAIL: <b>Weryfikacja nie powiodła się:</b>
INVALID_INPUT: Nieprawidłowe dane wejściowe
VALIDATION_FAIL: '<b>Weryfikacja nie powiodła się:</b>'
INVALID_INPUT: 'Nieprawidłowe dane wejściowe'
MISSING_REQUIRED_FIELD: 'Opuszczono wymagane pole:'
XSS_ISSUES: "Potencjalne problemy XSS wykryte w polu '%s'"
MONTHS_OF_THE_YEAR:
- 'Styczeń'
- 'Luty'
@@ -60,3 +83,18 @@ GRAV:
- 'Piątek'
- 'Sobota'
- 'Niedziela'
YES: "Tak"
NO: "Nie"
CRON:
EVERY: każdy
EVERY_HOUR: każdą godzinę
EVERY_MINUTE: każdą minutę
EVERY_DAY_OF_WEEK: każdego dnia tygodnia
EVERY_DAY_OF_MONTH: każdego dnia miesiące
EVERY_MONTH: każdego miesiąca
TEXT_PERIOD: Każdego <b />
TEXT_MINS: 'o <b /> minut po godzinie'
TEXT_TIME: 'o <b />:<b />'
ERROR1: Znacznik %s nie jest wspierany!
ERROR2: Nieprawidłowa liczba elementów
ERROR4: Wyrażenie nierozpoznane

View File

@@ -1,8 +1,75 @@
---
GRAV:
FRONTMATTER_ERROR_PAGE: "---\ntitle: %1$s\n---\n\n# Erro: Frontmatter Inválido\n\nLocalização: `%2$s`\n\n**%3$s**\n\n```\n%4$s\n```"
INFLECTOR_PLURALS:
'/(quiz)$/i': '\1zes'
'/^(ox)$/i': '\1en'
'/([m|l])ouse$/i': '\1ice'
'/(matr|vert|ind)ix|ex$/i': '\1ices'
'/(x|ch|ss|sh)$/i': '\1es'
'/([^aeiouy]|qu)ies$/i': '\1y'
'/([^aeiouy]|qu)y$/i': '\1ies'
'/(hive)$/i': '\1s'
'/(?:([^f])fe|([lr])f)$/i': '\1\2ves'
'/sis$/i': 'ses'
'/([ti])um$/i': '\1a'
'/(buffal|tomat)o$/i': '\1oes'
'/(bu)s$/i': '\1ses'
'/(alias|status)/i': '\1es'
'/(octop|vir)us$/i': '\1i'
'/(ax|test)is$/i': '\1es'
'/s$/i': 's'
'/$/': 's'
INFLECTOR_SINGULAR:
'/(quiz)zes$/i': '\1'
'/(matr)ices$/i': '\1ix'
'/(vert|ind)ices$/i': '\1ex'
'/^(ox)en/i': '\1'
'/(alias|status)es$/i': '\1'
'/([octop|vir])i$/i': '\1us'
'/(cris|ax|test)es$/i': '\1is'
'/(shoe)s$/i': '\1'
'/(o)es$/i': '\1'
'/(bus)es$/i': '\1'
'/([m|l])ice$/i': '\1ouse'
'/(x|ch|ss|sh)es$/i': '\1'
'/(m)ovies$/i': '\1ovie'
'/(s)eries$/i': '\1eries'
'/([^aeiouy]|qu)ies$/i': '\1y'
'/([lr])ves$/i': '\1f'
'/(tive)s$/i': '\1'
'/(hive)s$/i': '\1'
'/([^f])ves$/i': '\1fe'
'/(^analy)ses$/i': '\1sis'
'/((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$/i': '\1\2sis'
'/([ti])a$/i': '\1um'
'/(n)ews$/i': '\1ews'
INFLECTOR_UNCOUNTABLE:
- 'equipamento'
- 'informação'
- 'arroz'
- 'dinheiro'
- 'espécie'
- 'série'
- 'peixe'
- 'ovelha'
INFLECTOR_IRREGULAR:
'person': 'pessoas'
'man': 'homens'
'child': 'crianças'
'sex': 'sexos'
'move': 'movimentos'
INFLECTOR_ORDINALS:
'default': 'º'
'first': 'º'
'second': 'º'
'third': 'º'
NICETIME:
NO_DATE_PROVIDED: Nenhuma data fornecida
AGO: atrás
BAD_DATE: Data inválida
AGO:
FROM_NOW: a partir de agora
JUST_NOW: mesmo agora
SECOND: segundo
MINUTE: minuto
HOUR: hora
@@ -11,17 +78,33 @@ GRAV:
MONTH: mês
YEAR: ano
DECADE: década
SEC: segundos
MIN: minutos
SEC: seg
MIN: min
HR: hora
WK: semana
MO: mês
YR: ano
DEC: década
SECOND_PLURAL: segundos
MINUTE_PLURAL: minutos
HOUR_PLURAL: horas
DAY_PLURAL: dias
WEEK_PLURAL: semanas
MONTH_PLURAL: meses
YEAR_PLURAL: anos
DECADE_PLURAL: decadas
DECADE_PLURAL: décadas
SEC_PLURAL: segs
MIN_PLURAL: mins
HR_PLURAL: hrs
WK_PLURAL: sems
MO_PLURAL: meses
YR_PLURAL: anos
DEC_PLURAL: décadas
FORM:
VALIDATION_FAIL: <b>Falha na validação!</b>
MISSING_REQUIRED_FIELD: 'Campo obrigatório requerido:'
VALIDATION_FAIL: '<b>Falha na validação:</b>'
INVALID_INPUT: 'Dados inseridos são inválidos em'
MISSING_REQUIRED_FIELD: 'Campo obrigatório em falta:'
XSS_ISSUES: "Potenciais problemas de XSS detectados no campo '%s'"
MONTHS_OF_THE_YEAR:
- 'Janeiro'
- 'Fevereiro'
@@ -35,12 +118,30 @@ GRAV:
- 'Outubro'
- 'Novembro'
- 'Dezembro'
INFLECTOR_UNCOUNTABLE:
- 'equipment'
- 'information'
- 'arroz'
- 'money'
- 'species'
- 'series'
- 'fish'
- 'sheep'
DAYS_OF_THE_WEEK:
- 'Segunda-feira'
- 'Terça-feira'
- 'Quarta-feira'
- 'Quinta-feira'
- 'Sexta-feira'
- 'Sábado'
- 'Domingo'
YES: "Sim"
NO: "Não"
CRON:
EVERY: cada
EVERY_HOUR: cada hora
EVERY_MINUTE: cada minuto
EVERY_DAY_OF_WEEK: todos os dias da semana
EVERY_DAY_OF_MONTH: todos os dias do mês
EVERY_MONTH: todos os meses
TEXT_PERIOD: Cada <b />
TEXT_MINS: ' em <b /> minuto(s) após a hora'
TEXT_TIME: ' em <b />:<b />'
TEXT_DOW: ' em <b />'
TEXT_MONTH: ' de <b />'
TEXT_DOM: ' em <b />'
ERROR1: A tag %s não é suportada!
ERROR2: Número de elementos inválido
ERROR3: O jquery_element deve ser definido nas configurações do jqCron
ERROR4: Expressão não reconhecida

View File

@@ -53,8 +53,8 @@ GRAV:
YR_PLURAL: ani
DEC_PLURAL: decenii
FORM:
VALIDATION_FAIL: <b>Validare nereușită</b>
INVALID_INPUT: Date incorecte în
VALIDATION_FAIL: '<b>Validare nereușită</b>'
INVALID_INPUT: 'Date incorecte în'
MISSING_REQUIRED_FIELD: 'Câmp obligatoriu lipsă:'
MONTHS_OF_THE_YEAR:
- 'Ianuarie'

View File

@@ -1,6 +1,16 @@
---
GRAV:
FRONTMATTER_ERROR_PAGE: "---\ntitle: %1$s\n---\n\n# Ошибка: недопустимое содержимое Frontmatter\n\nПуть: `%2$s`\n\n**%3$s**\n\n```\n%4$s\n```"
INFLECTOR_SINGULAR:
'/([octop|vir])i$/i': '\1us'
'/(cris|ax|test)es$/i': '\1is'
'/(shoe)s$/i': '\1'
'/([lr])ves$/i': '\1f'
'/(tive)s$/i': "\\1\n"
'/(hive)s$/i': '\1'
'/([^f])ves$/i': '\1fe'
'/(^analy)ses$/i': '\1sis'
'/((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$/i': '\1\2sis'
INFLECTOR_UNCOUNTABLE:
- 'экипировка'
- 'информация'
@@ -13,7 +23,7 @@ GRAV:
INFLECTOR_IRREGULAR:
'person': 'люди'
'man': 'человек'
'child': 'ребенок'
'child': 'дети'
'sex': 'пол'
'move': 'движется'
INFLECTOR_ORDINALS:
@@ -58,9 +68,10 @@ GRAV:
YR_PLURAL: г
DEC_PLURAL: дстлт
FORM:
VALIDATION_FAIL: <b>Проверка не удалась:</b>
INVALID_INPUT: Неверный ввод в
VALIDATION_FAIL: '<b>Проверка не удалась:</b>'
INVALID_INPUT: 'Неверный ввод в'
MISSING_REQUIRED_FIELD: 'Отсутствует необходимое поле:'
XSS_ISSUES: "Обнаружены потенциальные XSS проблемы в поле '%s'"
MONTHS_OF_THE_YEAR:
- 'январь'
- 'февраль'
@@ -68,12 +79,12 @@ GRAV:
- 'апрель'
- 'май'
- 'июнь'
- 'Июль'
- 'Август'
- 'Сентябрь'
- 'Октябрь'
- 'Ноябрь'
- 'Декабрь'
- 'июль'
- 'август'
- 'сентябрь'
- 'октябрь'
- 'ноябрь'
- 'декабрь'
DAYS_OF_THE_WEEK:
- 'понедельник'
- 'вторник'
@@ -82,6 +93,8 @@ GRAV:
- 'пятница'
- 'суббота'
- 'воскресенье'
YES: "Да"
NO: "Нет"
CRON:
EVERY: раз в
EVERY_HOUR: раз в час

120
system/languages/si.yaml Normal file
View File

@@ -0,0 +1,120 @@
---
GRAV:
FRONTMATTER_ERROR_PAGE: "---\nමාතෘකාව: %1$s\n---\n\n# දෝෂය: වලංගු නොවන ඉදිරිපස\n\nමාර්ගය: `%2$s`\n\n**%3$s**\n\n```\n%4$s\n```"
INFLECTOR_PLURALS:
'/([m|l])ouse$/i': '\1අයිස්'
'/(matr|vert|ind)ix|ex$/i': '\1අයිස්'
'/(?:([^f])fe|([lr])f)$/i': '\1\2වෙස්'
'/([ti])um$/i': '\1අ'
'/(buffal|tomat)o$/i': '\1ඕඑස්'
'/(bu)s$/i': '\1සෙස්'
INFLECTOR_SINGULAR:
'/(quiz)zes$/i': '\1'
'/^(ox)en/i': '\1'
'/(alias|status)es$/i': '\1'
'/([octop|vir])i$/i': '\1 අප'
'/(cris|ax|test)es$/i': '\1 වේ'
'/(o)es$/i': '\1'
'/(bus)es$/i': '\1'
'/([m|l])ice$/i': '\1 භාවිතා කරන්න'
'/(x|ch|ss|sh)es$/i': '\1'
'/(m)ovies$/i': '\1ඕවී'
'/(s)eries$/i': '\1මාලා'
'/(^analy)ses$/i': '\1සිස්'
'/((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$/i': '\1\2සිස්'
'/([ti])a$/i': '\1ම්'
INFLECTOR_UNCOUNTABLE:
- 'උපකරණ'
- 'විස්තර'
- 'සහල්'
- 'මුදල'
- 'විශේෂ'
- 'මාලාවක්'
- 'මාළු'
- 'බැටළුවන්'
INFLECTOR_IRREGULAR:
'person': 'මහජන'
'man': 'මිනිසුන්'
'child': 'දරුවන්'
'sex': 'ලිංගිකත්වය'
'move': 'චලනය කරයි'
INFLECTOR_ORDINALS:
'first': 'ශාන්ත'
NICETIME:
NO_DATE_PROVIDED: දිනයක් සපයා නැත
BAD_DATE: නරක දිනය
AGO: පෙර
FROM_NOW: මෙතැන් සිට
JUST_NOW: මේ දැන්
SECOND: දෙවැනි
MINUTE: මිනිත්තුව
HOUR: පැය
DAY: දින
WEEK: සතිය
MONTH: මස
YEAR: වර්ෂය
DECADE: දශකය
SEC: තත්පර
MIN: මිනි
HR: පැය
YR: වසර
DEC: දෙසැ
SECOND_PLURAL: තත්පර
MINUTE_PLURAL: මිනිත්තු
HOUR_PLURAL: පැය
DAY_PLURAL: දින
WEEK_PLURAL: සති
MONTH_PLURAL: මාස
YEAR_PLURAL: වසර
DECADE_PLURAL: දශක
SEC_PLURAL: තත්පර
MIN_PLURAL: මිනිත්තු
HR_PLURAL: පැය
WK_PLURAL: සති
YR_PLURAL: වසර
DEC_PLURAL: දෙසැ
FORM:
VALIDATION_FAIL: '<b>වලංගු කිරීම අසාර්ථක විය:</b>'
INVALID_INPUT: 'වලංගු නොවන ආදානය'
MISSING_REQUIRED_FIELD: 'අවශ්‍ය ක්ෂේත්‍රය අස්ථානගත වී ඇත:'
XSS_ISSUES: "විභව XSS ගැටළු '%s' ක්ෂේත්‍රයේ අනාවරණය විය"
MONTHS_OF_THE_YEAR:
- 'ජනවාරි'
- 'පෙබරවාරි'
- 'මාර්තු'
- 'අප්රේල්'
- 'මැයි'
- 'ජූනි'
- 'ජුලි'
- 'අගෝස්තු'
- 'සැප්තැම්බර්'
- 'ඔක්තෝම්බර්'
- 'නොවැම්බර්'
- 'දෙසැම්බර්'
DAYS_OF_THE_WEEK:
- 'සඳුදා'
- 'අඟහරුවාදා'
- 'බදාදා'
- 'බ්රහස්පතින්දා'
- 'සිකුරාදා'
- 'සෙනසුරාදා'
- 'ඉරිදා'
YES: "ඔව්"
NO: "නැත"
CRON:
EVERY: සෑම
EVERY_HOUR: සෑම පැයකටම
EVERY_MINUTE: සෑම විනාඩියකටම
EVERY_DAY_OF_WEEK: සතියේ සෑම දිනකම
EVERY_DAY_OF_MONTH: මාසයේ සෑම දිනකම
EVERY_MONTH: සෑම මාසයකම
TEXT_PERIOD: සෑම <b />
TEXT_MINS: ' පැයට පසු විනාඩි <b /> කින්'
TEXT_TIME: ' <b />:<b />ට'
TEXT_DOW: ' <b />මත'
TEXT_MONTH: ' <b />'
TEXT_DOM: ' <b />මත'
ERROR1: ටැගය %s සහාය නොදක්වයි!
ERROR2: නරක මූලද්රව්ය සංඛ්යාව
ERROR3: jquery_element jqCron සැකසුම් වලට සැකසිය යුතුය
ERROR4: හඳුනා නොගත් ප්‍රකාශනය

View File

@@ -101,8 +101,8 @@ GRAV:
YR_PLURAL: rokov
DEC_PLURAL: dekád
FORM:
VALIDATION_FAIL: <b>Overenie zlyhalo:</b>
INVALID_INPUT: Neplatný vstup v
VALIDATION_FAIL: '<b>Overenie zlyhalo:</b>'
INVALID_INPUT: 'Neplatný vstup v'
MISSING_REQUIRED_FIELD: 'Chýba vyžadované pole:'
MONTHS_OF_THE_YEAR:
- 'Január'

View File

@@ -1,6 +1,17 @@
---
GRAV:
FRONTMATTER_ERROR_PAGE: "---\ntitle: %1$s\n---\n\n# Napaka: Neveljavna Frontmatter\n\nPath: `%2$s`\n\n**%3$s ** \n\n```\n%4$s \n```"
INFLECTOR_UNCOUNTABLE:
- 'oprema'
- 'informacija'
- 'riž'
- 'denar'
- 'vrste'
- 'serija'
- 'riba'
- 'ovca'
INFLECTOR_IRREGULAR:
'person': 'ljudje'
NICETIME:
NO_DATE_PROVIDED: Datum ni na voljo
BAD_DATE: Neveljaven datum
@@ -36,22 +47,22 @@ GRAV:
YR_PLURAL: l
DEC_PLURAL: des
FORM:
VALIDATION_FAIL: <b>Preverjanje veljavnosti ni uspelo:</b>
INVALID_INPUT: Neveljaven vnos v
VALIDATION_FAIL: '<b>Preverjanje veljavnosti ni uspelo:</b>'
INVALID_INPUT: 'Neveljaven vnos v'
MISSING_REQUIRED_FIELD: 'Manjka obvezno polje:'
MONTHS_OF_THE_YEAR:
- 'Januar'
- 'Februar'
- 'Marec'
- 'April'
- 'april'
- 'Maj'
- 'Junij'
- 'Julij'
- 'Avgust'
- 'September'
- 'september'
- 'Oktober'
- 'November'
- 'December'
- 'november'
- 'december'
DAYS_OF_THE_WEEK:
- 'Ponedeljek'
- 'Torek'
@@ -60,3 +71,15 @@ GRAV:
- 'Petek'
- 'Sobota'
- 'Nedelja'
YES: "Da"
NO: "Ne"
CRON:
EVERY: vsak
EVERY_HOUR: vsako uro
EVERY_MINUTE: vsako minuto
EVERY_DAY_OF_WEEK: vsak dan v tednu
EVERY_DAY_OF_MONTH: vsak dan v mesecu
EVERY_MONTH: vsak mesec
ERROR1: Oznaka %s ni podprta!
ERROR2: Napačno število elementov.
ERROR4: Neznan izraz

147
system/languages/sr.yaml Normal file
View File

@@ -0,0 +1,147 @@
---
GRAV:
FRONTMATTER_ERROR_PAGE: "---\nнаслов: %1$s\n---\n\n# Грешка: неисправан Frontmatter\n\nПутања: `%2$s`\n\n**%3$s**\n\n```\n%4$s\n```"
INFLECTOR_PLURALS:
'/(quiz)$/i': '\1zes'
'/^(ox)$/i': '\1en'
'/([m|l])ouse$/i': '\1ice'
'/(matr|vert|ind)ix|ex$/i': '\1ices'
'/(x|ch|ss|sh)$/i': '\1es'
'/([^aeiouy]|qu)ies$/i': '\1y'
'/([^aeiouy]|qu)y$/i': '\1ies'
'/(hive)$/i': '\1s'
'/(?:([^f])fe|([lr])f)$/i': '\1\2ves'
'/sis$/i': 'ses'
'/([ti])um$/i': '\1a'
'/(buffal|tomat)o$/i': '\1oes'
'/(bu)s$/i': '\1ses'
'/(alias|status)/i': '\1es'
'/(octop|vir)us$/i': '\1i'
'/(ax|test)is$/i': '\1es'
'/s$/i': 's'
'/$/': 's'
INFLECTOR_SINGULAR:
'/(quiz)zes$/i': '\1'
'/(matr)ices$/i': '\1ix'
'/(vert|ind)ices$/i': '\1ex'
'/^(ox)en/i': '\1'
'/(alias|status)es$/i': '\1'
'/([octop|vir])i$/i': '\1us'
'/(cris|ax|test)es$/i': '\1is'
'/(shoe)s$/i': '\1'
'/(o)es$/i': '\1'
'/(bus)es$/i': '\1'
'/([m|l])ice$/i': '\1ouse'
'/(x|ch|ss|sh)es$/i': '\1'
'/(m)ovies$/i': '\1ovie'
'/(s)eries$/i': '\1eries'
'/([^aeiouy]|qu)ies$/i': '\1y'
'/([lr])ves$/i': '\1f'
'/(tive)s$/i': '\1'
'/(hive)s$/i': '\1'
'/([^f])ves$/i': '\1fe'
'/(^analy)ses$/i': '\1sis'
'/((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$/i': '\1\2sis'
'/([ti])a$/i': '\1um'
'/(n)ews$/i': '\1ews'
INFLECTOR_UNCOUNTABLE:
- 'опрема'
- 'информација'
- 'пиринач'
- 'новац'
- 'врсте'
- 'серије'
- 'риба'
- 'овца'
INFLECTOR_IRREGULAR:
'person': 'особе'
'man': 'људи'
'child': 'деца'
'sex': 'полови'
'move': 'помери'
INFLECTOR_ORDINALS:
'default': 'ти'
'first': 'први'
'second': 'други'
'third': 'трећи'
NICETIME:
NO_DATE_PROVIDED: Нема датума
BAD_DATE: Погрешан датум
AGO: од пре
FROM_NOW: од сада
JUST_NOW: управо сада
SECOND: секунда
MINUTE: минута
HOUR: сат
DAY: дан
WEEK: недеља
MONTH: месец
YEAR: година
DECADE: декада
SEC: сек
MIN: мин
HR: сат
WK: нед
MO: мес
YR: год
DEC: дек
SECOND_PLURAL: секунди
MINUTE_PLURAL: минута
HOUR_PLURAL: сати
DAY_PLURAL: дана
WEEK_PLURAL: недеља
MONTH_PLURAL: месеци
YEAR_PLURAL: године(а)
DECADE_PLURAL: декаде(а)
SEC_PLURAL: сек
MIN_PLURAL: мин
HR_PLURAL: сати
WK_PLURAL: недеља
MO_PLURAL: месеци
YR_PLURAL: година
DEC_PLURAL: декада
FORM:
VALIDATION_FAIL: '<b>Провера неуспела:</b>'
INVALID_INPUT: 'Неисправан унос у'
MISSING_REQUIRED_FIELD: 'Недостаје обавезн поље:'
XSS_ISSUES: "Потенцијална грешка у XSS-у детектована у пољу '%s' "
MONTHS_OF_THE_YEAR:
- 'Јануар'
- 'Фебруар'
- 'Март'
- 'Април'
- 'Мај'
- 'Јуни'
- 'Јули'
- 'Август'
- 'Септембар'
- 'Октобар'
- 'Новембар'
- 'Децембар'
DAYS_OF_THE_WEEK:
- 'Понедељак'
- 'Уторак'
- 'Среда'
- 'Четвртак'
- 'Петак'
- 'Субота'
- 'Недеља'
YES: "Да"
NO: "Не"
CRON:
EVERY: сваки
EVERY_HOUR: сваки сат
EVERY_MINUTE: сваки минут
EVERY_DAY_OF_WEEK: сваки дан у недељи
EVERY_DAY_OF_MONTH: сваки дан у месецу
EVERY_MONTH: сваки месец
TEXT_PERIOD: Сваки <b />
TEXT_MINS: ' у <b /> минути(а) прошлог сата'
TEXT_TIME: ' у <b />:<b />'
TEXT_DOW: ' на <b />'
TEXT_MONTH: ' од <b />'
TEXT_DOM: ' на <b />'
ERROR1: Таг %s није подржан!
ERROR2: Погрешан број елемената
ERROR3: јquery_element би требао да буде постављен у jqCron подешавању
ERROR4: Непрепознат израз

Some files were not shown because too many files have changed in this diff Show More