diff --git a/CHANGELOG.md b/CHANGELOG.md index ccbd387b..3f3a2dd5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,10 +4,13 @@ 1. [](#new) * IMPORTANT: Non `admin.super` users are now subject to XSS validation in Page content. Configurable via Configuration / Security * 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) 1. [](#bugfix) * Fixed issue in filepicker where missing images would cause a loop to try to load them + * 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 6e1b2191..b7bfa6be 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; } } diff --git a/languages/en.yaml b/languages/en.yaml index 4b06c210..e552d8a5 100644 --- a/languages/en.yaml +++ b/languages/en.yaml @@ -532,7 +532,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" @@ -584,7 +583,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" 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..f244ecf1 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'] with {field: child} %} {% 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..ab994d05 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 {field: child, 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 82522b78..450c7b05 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..9b61edd0 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 field %} {% 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..e427e8ce 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'] with {field: child} %}
{% 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