From 81402434a1d2cb5313f992c13ad31e247889e25b Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Mon, 24 Sep 2018 11:16:09 +0300 Subject: [PATCH 1/6] Make all form fields to extend field.html.twig --- themes/grav/templates/forms/field.html.twig | 4 ++++ .../fields/blueprint/blueprint.html.twig | 4 ++++ .../forms/fields/column/column.html.twig | 12 ++++++++---- .../forms/fields/columns/columns.html.twig | 9 ++++++--- .../forms/fields/editor/editor.html.twig | 14 ++++++++------ .../forms/fields/order/order.html.twig | 16 ++++++++++------ .../fields/pagemedia/pagemedia.html.twig | 4 ++++ .../forms/fields/section/section.html.twig | 4 ++++ .../templates/forms/fields/tab/tab.html.twig | 6 +++++- .../forms/fields/tabs/tabs.html.twig | 19 +++++++++++-------- .../forms/fields/taxonomy/taxonomy.html.twig | 4 ++++ .../forms/fields/userinfo/userinfo.html.twig | 4 ++++ 12 files changed, 72 insertions(+), 28 deletions(-) diff --git a/themes/grav/templates/forms/field.html.twig b/themes/grav/templates/forms/field.html.twig index 526f7789..b8985c32 100644 --- a/themes/grav/templates/forms/field.html.twig +++ b/themes/grav/templates/forms/field.html.twig @@ -1,3 +1,5 @@ +{% if not field.validate.ignore %} + {% set originalValue = originalValue is defined ? originalValue : value %} {% set toggleableChecked = field.toggleable and (originalValue is not null and originalValue is not empty) %} {% set isDisabledToggleable = field.toggleable and not toggleableChecked %} @@ -106,3 +108,5 @@ {% endblock %} {% endblock %} + +{% endif %} \ No newline at end of file diff --git a/themes/grav/templates/forms/fields/blueprint/blueprint.html.twig b/themes/grav/templates/forms/fields/blueprint/blueprint.html.twig index f588feb4..e4d07ffa 100644 --- a/themes/grav/templates/forms/fields/blueprint/blueprint.html.twig +++ b/themes/grav/templates/forms/fields/blueprint/blueprint.html.twig @@ -1,3 +1,6 @@ +{% extends "forms/field.html.twig" %} + +{% block field %} +{% endblock %} \ No newline at end of file diff --git a/themes/grav/templates/forms/fields/column/column.html.twig b/themes/grav/templates/forms/fields/column/column.html.twig index 3b699d84..ee1a9321 100644 --- a/themes/grav/templates/forms/fields/column/column.html.twig +++ b/themes/grav/templates/forms/fields/column/column.html.twig @@ -1,10 +1,14 @@ +{% extends "forms/field.html.twig" %} + +{% block field %} {% if field.fields %}
- {% for field in field.fields %} - {% if field.type %} - {% set value = field.name ? data.value(field.name) : data.toArray %} - {% include ["forms/fields/#{field.type}/#{field.type}.html.twig", 'forms/fields/text/text.html.twig'] %} + {% for child in field.fields %} + {% if child.type and not child.validate.ignore %} + {% set value = child.name ? data.value(child.name) : data.toArray %} + {% include ["forms/fields/#{child.type}/#{child.type}.html.twig", 'forms/fields/text/text.html.twig'] %} {% endif %} {% endfor %}
{% endif %} +{% endblock %} diff --git a/themes/grav/templates/forms/fields/columns/columns.html.twig b/themes/grav/templates/forms/fields/columns/columns.html.twig index 4650ba88..531fc6d7 100644 --- a/themes/grav/templates/forms/fields/columns/columns.html.twig +++ b/themes/grav/templates/forms/fields/columns/columns.html.twig @@ -1,9 +1,12 @@ +{% extends "forms/field.html.twig" %} + +{% block field %}
{% if field.fields %} {% set cols = field.fields|length %} - {% for field in field.fields %} - {% include ["forms/fields/#{field.type}/#{field.type}.html.twig", 'forms/fields/column/column.html.twig'] with {'cols':cols} %} + {% for child in field.fields %} + {% include ["forms/fields/#{child.type}/#{child.type}.html.twig", 'forms/fields/column/column.html.twig'] with {'cols':cols} %} {% endfor %} {% endif %}
- +{% endblock %} \ No newline at end of file diff --git a/themes/grav/templates/forms/fields/editor/editor.html.twig b/themes/grav/templates/forms/fields/editor/editor.html.twig index 2c0fae4b..7fd2e26c 100644 --- a/themes/grav/templates/forms/fields/editor/editor.html.twig +++ b/themes/grav/templates/forms/fields/editor/editor.html.twig @@ -1,15 +1,17 @@ +{% extends "forms/field.html.twig" %} + {% set value = (value is null ? field.default|tu : value) %} {% if not codemirrorOptions %} {% set codemirrorOptions = {'mode': 'gfm', 'ignore': ['code', 'preview']}|merge(field.codemirror|default({})) %} {% endif %} -{% block label %} - {% if field.label %} - {% set hint = field.help ? 'data-hint="' ~ field.help|tu|raw ~ '"': '' %} -
{{ field.label|tu|raw }}
- {% endif %} -{% endblock %} {% block field %} + {% block label %} + {% if field.label %} + {% set hint = field.help ? 'data-hint="' ~ field.help|tu|raw ~ '"': '' %} +
{{ field.label|tu|raw }}
+ {% endif %} + {% endblock %}
diff --git a/themes/grav/templates/forms/fields/order/order.html.twig b/themes/grav/templates/forms/fields/order/order.html.twig index 3ef00a9d..d757a3f3 100644 --- a/themes/grav/templates/forms/fields/order/order.html.twig +++ b/themes/grav/templates/forms/fields/order/order.html.twig @@ -1,8 +1,11 @@ +{% extends "forms/field.html.twig" %} + {% set value = (value is null ? field.default : value) %} {% set siblings = context.parent.children %} {% set canOrder = context.order %} {% set vertical = field.style == 'vertical' %} +{% block field %}
+{% endblock %} \ No newline at end of file diff --git a/themes/grav/templates/forms/fields/pagemedia/pagemedia.html.twig b/themes/grav/templates/forms/fields/pagemedia/pagemedia.html.twig index ff259e80..9344e321 100644 --- a/themes/grav/templates/forms/fields/pagemedia/pagemedia.html.twig +++ b/themes/grav/templates/forms/fields/pagemedia/pagemedia.html.twig @@ -1,3 +1,5 @@ +{% extends "forms/field.html.twig" %} + {% set value = (value is null ? field.default : value) %} {% set pagemedia = config.get('plugins.admin.pagemedia') %} {% set pagemedia_settings = { @@ -16,6 +18,7 @@ resizeQuality: pagemedia.resize_quality ?: 0.8 } %} +{% block input %} {% if context.folderExists %}
@@ -47,3 +50,4 @@
{% endif %} +{% endblock %} diff --git a/themes/grav/templates/forms/fields/section/section.html.twig b/themes/grav/templates/forms/fields/section/section.html.twig index 6cacc001..368fec72 100644 --- a/themes/grav/templates/forms/fields/section/section.html.twig +++ b/themes/grav/templates/forms/fields/section/section.html.twig @@ -1,3 +1,6 @@ +{% extends "forms/field.html.twig" %} + +{% block field %} {% if field.security is empty or authorize(array(field.security)) %} {% if field.title or field.underline %} @@ -20,3 +23,4 @@ {% endif %} {% endif %} +{% endblock %} \ No newline at end of file diff --git a/themes/grav/templates/forms/fields/tab/tab.html.twig b/themes/grav/templates/forms/fields/tab/tab.html.twig index ca412c56..9b2e5f13 100644 --- a/themes/grav/templates/forms/fields/tab/tab.html.twig +++ b/themes/grav/templates/forms/fields/tab/tab.html.twig @@ -1,7 +1,10 @@ +{% extends "forms/field.html.twig" %} + +{% block field %} {% if field.fields %}
{% for childName, child in field.fields %} - {% if field.type %} + {% if child.type and not child.validate.ignore %} {%- if childName starts with '.' -%} {% set child = child|merge({ name: field.name ~ childName }) %} {% endif %} @@ -12,3 +15,4 @@ {% endfor %}
{% endif %} +{% endblock %} \ No newline at end of file diff --git a/themes/grav/templates/forms/fields/tabs/tabs.html.twig b/themes/grav/templates/forms/fields/tabs/tabs.html.twig index 9a8ec084..8fa27762 100644 --- a/themes/grav/templates/forms/fields/tabs/tabs.html.twig +++ b/themes/grav/templates/forms/fields/tabs/tabs.html.twig @@ -1,3 +1,6 @@ +{% extends "forms/field.html.twig" %} + +{% block field %}
{% if field.fields %} @@ -18,7 +21,7 @@
{% for tab in field.fields %} - {% if tab.type == 'tab' and (tab.security is empty or authorize(array(tab.security))) %} + {% if tab.type == 'tab' and not tab.validate.ignore and (tab.security is empty or authorize(array(tab.security))) %} {% if grav.twig.twig.filters['tu'] is defined %}{{ tab.title|tu }}{% else %}{{ tab.title|t }}{% endif %} @@ -28,12 +31,12 @@ {% endfor %}
- {% for field in field.fields %} - {% if field.type == 'tab' %} - {% if field.security is empty or authorize(array(field.security)) %} - {% set value = field.name ? data.value(field.name) : data.toArray %} -
- {% include ["forms/fields/#{field.type}/#{field.type}.html.twig", 'forms/fields/text/text.html.twig'] %} + {% for child in field.fields %} + {% if child.type == 'tab' and not tab.validate.ignore %} + {% if child.security is empty or authorize(array(child.security)) %} + {% set value = child.name ? data.value(child.name) : data.toArray %} +
+ {% include ["forms/fields/#{child.type}/#{child.type}.html.twig", 'forms/fields/text/text.html.twig'] %}
{% endif %} {% endif %} @@ -41,4 +44,4 @@
{% endif %}
- +{% endblock %} \ No newline at end of file diff --git a/themes/grav/templates/forms/fields/taxonomy/taxonomy.html.twig b/themes/grav/templates/forms/fields/taxonomy/taxonomy.html.twig index c160c757..e109636d 100644 --- a/themes/grav/templates/forms/fields/taxonomy/taxonomy.html.twig +++ b/themes/grav/templates/forms/fields/taxonomy/taxonomy.html.twig @@ -1,3 +1,6 @@ +{% extends "forms/field.html.twig" %} + +{% block field %} {% set taxonomies = (taxonomies is null ? (field.taxonomies ? field.taxonomies : admin.data('config/site').taxonomies) : taxonomies) %} {% set parentname = field.name %} {% set options = field.options %} @@ -24,3 +27,4 @@ {% include ['forms/fields/select/select.html.twig'] %} {% endfor %} +{% endblock %} \ No newline at end of file diff --git a/themes/grav/templates/forms/fields/userinfo/userinfo.html.twig b/themes/grav/templates/forms/fields/userinfo/userinfo.html.twig index b0943c99..814aa01c 100644 --- a/themes/grav/templates/forms/fields/userinfo/userinfo.html.twig +++ b/themes/grav/templates/forms/fields/userinfo/userinfo.html.twig @@ -1,3 +1,6 @@ +{% extends "forms/field.html.twig" %} + +{% block field %}
{% include 'partials/userinfo-avatar.html.twig' %} @@ -13,3 +16,4 @@ {% include 'partials/userinfo-avatar-credit.html.twig' %}
+{% endblock %} \ No newline at end of file From a87f03d512804da1a1e1376485499579ab322b11 Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Mon, 24 Sep 2018 11:16:25 +0300 Subject: [PATCH 2/6] Remove duplicate language strings --- languages/en.yaml | 2 -- 1 file changed, 2 deletions(-) diff --git a/languages/en.yaml b/languages/en.yaml index bbf111fe..22043187 100644 --- a/languages/en.yaml +++ b/languages/en.yaml @@ -507,7 +507,6 @@ PLUGIN_ADMIN: ADD_FOLDER: "Add Folder" PROXY_URL: "Proxy URL" PROXY_URL_HELP: "Enter the proxy HOST or IP and PORT" - INVALID_FRONTMATTER_COULD_NOT_SAVE: "Invalid frontmatter, could not save" NOTHING_TO_SAVE: "Nothing to Save" FILE_ERROR_ADD: "An error occurred while trying to add the file" FILE_ERROR_UPLOAD: "An error occurred while trying to upload the file" @@ -559,7 +558,6 @@ PLUGIN_ADMIN: CANNOT_ADD_FILES_PAGE_NOT_SAVED: "NOTE: Page must be saved before you can upload files to it." DROP_FILES_HERE_TO_UPLOAD: "Drop your files here or click in this area" INSERT: "Insert" - METADATA: "Metadata" UNDO: "Undo" REDO: "Redo" HEADERS: "Headers" From 689d25863318453c1c208824ee11700284ee6935 Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Mon, 24 Sep 2018 11:29:09 +0300 Subject: [PATCH 3/6] Changelog update --- CHANGELOG.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1dff3b1c..75ed09d5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,9 +3,11 @@ 1. [](#new) * Added new event `onAdminPage` which allows plugins to customize `Page` object in `$event['page']` + * Added proper support for hiding form fields in blueprints by using dynamic property like `security@: admin.foobar` to any field 1. [](#improved) * Use `Url:post()` to get the `$_POST` variable (allows common security checks/filtering for the POST data) - + * Make all form fields to extend field.html.twig + # v1.8.9 ## 08/23/2018 From e6ab16909190e941d9293a784ef028c040757da0 Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Mon, 24 Sep 2018 13:49:55 +0300 Subject: [PATCH 4/6] Fixed regression --- themes/grav/templates/forms/fields/column/column.html.twig | 2 +- themes/grav/templates/forms/fields/columns/columns.html.twig | 2 +- themes/grav/templates/forms/fields/tabs/tabs.html.twig | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/themes/grav/templates/forms/fields/column/column.html.twig b/themes/grav/templates/forms/fields/column/column.html.twig index ee1a9321..f244ecf1 100644 --- a/themes/grav/templates/forms/fields/column/column.html.twig +++ b/themes/grav/templates/forms/fields/column/column.html.twig @@ -6,7 +6,7 @@ {% for child in field.fields %} {% if child.type and not child.validate.ignore %} {% set value = child.name ? data.value(child.name) : data.toArray %} - {% include ["forms/fields/#{child.type}/#{child.type}.html.twig", 'forms/fields/text/text.html.twig'] %} + {% include ["forms/fields/#{child.type}/#{child.type}.html.twig", 'forms/fields/text/text.html.twig'] with {field: child} %} {% endif %} {% endfor %}
diff --git a/themes/grav/templates/forms/fields/columns/columns.html.twig b/themes/grav/templates/forms/fields/columns/columns.html.twig index 531fc6d7..ab994d05 100644 --- a/themes/grav/templates/forms/fields/columns/columns.html.twig +++ b/themes/grav/templates/forms/fields/columns/columns.html.twig @@ -5,7 +5,7 @@ {% if field.fields %} {% set cols = field.fields|length %} {% for child in field.fields %} - {% include ["forms/fields/#{child.type}/#{child.type}.html.twig", 'forms/fields/column/column.html.twig'] with {'cols':cols} %} + {% include ["forms/fields/#{child.type}/#{child.type}.html.twig", 'forms/fields/column/column.html.twig'] with {field: child, cols: cols} %} {% endfor %} {% endif %}
diff --git a/themes/grav/templates/forms/fields/tabs/tabs.html.twig b/themes/grav/templates/forms/fields/tabs/tabs.html.twig index 8fa27762..e427e8ce 100644 --- a/themes/grav/templates/forms/fields/tabs/tabs.html.twig +++ b/themes/grav/templates/forms/fields/tabs/tabs.html.twig @@ -36,7 +36,7 @@ {% if child.security is empty or authorize(array(child.security)) %} {% set value = child.name ? data.value(child.name) : data.toArray %}
- {% include ["forms/fields/#{child.type}/#{child.type}.html.twig", 'forms/fields/text/text.html.twig'] %} + {% include ["forms/fields/#{child.type}/#{child.type}.html.twig", 'forms/fields/text/text.html.twig'] with {field: child} %}
{% endif %} {% endif %} From cc09a4fee9fe3586d40a8e87aaaae7ffac4f70f9 Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Sun, 30 Sep 2018 12:19:16 +0300 Subject: [PATCH 5/6] Do not redirect to `/admin` for login if admin page does not exist --- CHANGELOG.md | 1 + admin.php | 8 +++++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 75ed09d5..6f23bc8d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ 1. [](#improved) * Use `Url:post()` to get the `$_POST` variable (allows common security checks/filtering for the POST data) * Make all form fields to extend field.html.twig + * Do not redirect to `/admin` for login if admin page does not exist # v1.8.9 ## 08/23/2018 diff --git a/admin.php b/admin.php index 7f03a845..c524c7f1 100644 --- a/admin.php +++ b/admin.php @@ -434,7 +434,13 @@ class AdminPlugin extends Plugin throw new \RuntimeException('Page Not Found', 404); } } else { - $this->grav->redirect($this->admin_route); + // Not Found and not logged in: Display login page. + $login_file = $this->grav['locator']->findResource('plugins://admin/pages/admin/login.md'); + $page = new Page(); + $page->init(new \SplFileInfo($login_file)); + $page->slug(basename($this->route)); + unset($this->grav['page']); + $this->grav['page'] = $page; } } From c9cf9da29d9b54fa22fab079fa315871526d5e22 Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Sun, 30 Sep 2018 21:04:17 +0300 Subject: [PATCH 6/6] Regression: Fixed pagemedia field looks --- .../grav/templates/forms/fields/pagemedia/pagemedia.html.twig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/themes/grav/templates/forms/fields/pagemedia/pagemedia.html.twig b/themes/grav/templates/forms/fields/pagemedia/pagemedia.html.twig index 9344e321..9b61edd0 100644 --- a/themes/grav/templates/forms/fields/pagemedia/pagemedia.html.twig +++ b/themes/grav/templates/forms/fields/pagemedia/pagemedia.html.twig @@ -18,7 +18,7 @@ resizeQuality: pagemedia.resize_quality ?: 0.8 } %} -{% block input %} +{% block field %} {% if context.folderExists %}