diff --git a/themes/grav/templates/forms/fields/array/array.html.twig b/themes/grav/templates/forms/fields/array/array.html.twig
index 66441ec0..7bf5c98b 100644
--- a/themes/grav/templates/forms/fields/array/array.html.twig
+++ b/themes/grav/templates/forms/fields/array/array.html.twig
@@ -1,13 +1,5 @@
{% extends "forms/field.html.twig" %}
-{% block global_attributes %}
- data-grav-array-name="{{ (scope ~ field.name)|fieldName }}"
- data-grav-array-keyname="{{ field.placeholder_key|e|tu }}"
- data-grav-array-valuename="{{ field.placeholder_value|e|tu }}"
- data-grav-array-textarea="{{ field.value_type == 'textarea' }}"
- {{ parent() }}
-{% endblock %}
-
{% macro renderer(key, text, field, scope) %}
{% if text is not iterable %}
@@ -20,26 +12,26 @@
{% endif %}
+ data-grav-array-type="key"
+ type="text" value="{{ key }}"
+ {% if field.disabled or isDisabledToggleable %}disabled="disabled"{% endif %}
+ placeholder="{{ field.placeholder_key|e|tu }}" />
{% endif %}
{% if field.value_type == 'textarea' %}
+ data-grav-array-type="value"
+ name="{{ ((scope ~ field.name)|fieldName) ~ '[' ~ key ~ ']' }}"
+ placeholder="{{ field.placeholder_value|e|tu }}"
+ {% if field.disabled or isDisabledToggleable %}disabled="disabled"{% endif %}>{{ text }}
{% else %}
+ data-grav-array-type="value"
+ type="text"
+ name="{{ ((scope ~ field.name)|fieldName) ~ '[' ~ key ~ ']' }}"
+ placeholder="{{ field.placeholder_value|e|tu }}"
+ {% if field.disabled or isDisabledToggleable %}disabled="disabled"{% endif %}
+ value={% if text == 'true' %}true{% elseif text == 'false' %}false{% else %}"{{ text|join(', ')|e }}"{% endif %} />
{% endif %}
@@ -48,8 +40,17 @@
{% endif %}
{% endmacro %}
+{% import _self as array_field %}
+
+{% block global_attributes %}
+ data-grav-array-name="{{ (scope ~ field.name)|fieldName }}"
+ data-grav-array-keyname="{{ field.placeholder_key|e|tu }}"
+ data-grav-array-valuename="{{ field.placeholder_value|e|tu }}"
+ data-grav-array-textarea="{{ field.value_type == 'textarea' }}"
+ {{ parent() }}
+{% endblock %}
+
{% block input %}
- {% import _self as array_field %}
{% if value|length %}
{% for key, text in value -%}
diff --git a/themes/grav/templates/forms/fields/file/file.html.twig b/themes/grav/templates/forms/fields/file/file.html.twig
index 1b0bcd8b..c78fab2f 100644
--- a/themes/grav/templates/forms/fields/file/file.html.twig
+++ b/themes/grav/templates/forms/fields/file/file.html.twig
@@ -1,9 +1,4 @@
{% extends "forms/field.html.twig" %}
-{% set defaults = config.plugins.form %}
-{% set files = defaults.files|merge(field|default([])) %}
-{% set limit = not field.multiple ? 1 : files.limit %}
-
-
{% macro bytesToSize(bytes) -%}
{% spaceless %}
@@ -43,20 +38,26 @@
{% set real_path = global.admin.getPagePathFromToken(path) %}
{% set remove = global.file_url_remove ? global.file_url_remove : (global.base_url_relative ~ '/media.json') %}
{% set remove = uri.addNonce(
- remove ~
- '/route' ~ config.system.param_sep ~ base64_encode(global.base_path ~ '/' ~ real_path) ~
- '/task' ~ config.system.param_sep ~ 'removeFileFromBlueprint' ~
- '/proute' ~ config.system.param_sep ~ base64_encode(route) ~
- '/blueprint' ~ config.system.param_sep ~ blueprint ~
- '/type' ~ config.system.param_sep ~ type ~
- '/field' ~ config.system.param_sep ~ files.name ~
- '/path' ~ config.system.param_sep ~ base64_encode(value.path), 'admin-form', 'admin-nonce') %}
+ remove ~
+ '/route' ~ config.system.param_sep ~ base64_encode(global.base_path ~ '/' ~ real_path) ~
+ '/task' ~ config.system.param_sep ~ 'removeFileFromBlueprint' ~
+ '/proute' ~ config.system.param_sep ~ base64_encode(route) ~
+ '/blueprint' ~ config.system.param_sep ~ blueprint ~
+ '/type' ~ config.system.param_sep ~ type ~
+ '/field' ~ config.system.param_sep ~ files.name ~
+ '/path' ~ config.system.param_sep ~ base64_encode(value.path), 'admin-form', 'admin-nonce') %}
{% set file = value|merge({remove: remove, path: (uri.rootUrl == '/' ? '/' : uri.rootUrl ~ '/' ~ real_path) }) %}
{% endif %}
{% endmacro %}
+{% import _self as macro %}
+
+{% set defaults = config.plugins.form %}
+{% set files = defaults.files|merge(field|default([])) %}
+{% set limit = not field.multiple ? 1 : files.limit %}
+
{% block input %}
{% set upload_limit = config.system.media.upload_limit / 1024 / 1024 %}
{% set page_can_upload = exists or (type == 'page' and not exists and not (field.destination starts with '@self' or field.destination starts with 'self@')) %}
@@ -78,7 +79,7 @@
/>
{% for path, file in value %}
- {{ _self.preview(path, file, _context) }}
+ {{ macro.preview(path, file, _context) }}
{% endfor %}
{% include 'forms/fields/hidden/hidden.html.twig' with {field: {name: '_json.' ~ field.name}, value:value|raw|json_encode} %}
diff --git a/themes/grav/templates/forms/fields/multilevel/multilevel.html.twig b/themes/grav/templates/forms/fields/multilevel/multilevel.html.twig
index 6faeab79..fa3c6a6a 100644
--- a/themes/grav/templates/forms/fields/multilevel/multilevel.html.twig
+++ b/themes/grav/templates/forms/fields/multilevel/multilevel.html.twig
@@ -1,12 +1,5 @@
{% extends "forms/field.html.twig" %}
-{% block global_attributes %}
- data-grav-array-name="{{ (scope ~ field.name)|fieldName }}"
- data-grav-array-keyname="{{ field.placeholder_key|e|tu }}"
- data-grav-array-valuename="{{ field.placeholder_value|e|tu }}"
- {{ parent() }}
-{% endblock %}
-
{% macro renderer(key, content, field, scope, level, parent_key, up_level) %}
{% macro field(value, key, level, globalvars, disable_name, hidden) %}
{% set name = 'data[' ~ globalvars.field.name|replace({'.': ']['}) ~ ']' ~ key %}
@@ -86,12 +79,21 @@
{% endmacro %}
+{% import _self as macro %}
+
+{% block global_attributes %}
+ data-grav-array-name="{{ (scope ~ field.name)|fieldName }}"
+ data-grav-array-keyname="{{ field.placeholder_key|e|tu }}"
+ data-grav-array-valuename="{{ field.placeholder_value|e|tu }}"
+ {{ parent() }}
+{% endblock %}
+
{% block input %}
{% if value|length %}
{% for key, content in value -%}
- {{ _self.renderer(key, content, field, scope, 0, '[' ~ key ~ ']', true) }}
+ {{ macro.renderer(key, content, field, scope, 0, '[' ~ key ~ ']', true) }}
{% endfor %}
{%- else -%}
diff --git a/themes/grav/templates/forms/fields/pages/pages.html.twig b/themes/grav/templates/forms/fields/pages/pages.html.twig
index 4ba41cf3..ea31356a 100644
--- a/themes/grav/templates/forms/fields/pages/pages.html.twig
+++ b/themes/grav/templates/forms/fields/pages/pages.html.twig
@@ -14,6 +14,8 @@
{% endfor %}
{% endmacro %}
+{% import _self as macro %}
+
{% block global_attributes %}
data-grav-selectize="{{ (field.selectize is defined ? field.selectize : {})|json_encode|e('html_attr') }}"
data-grav-field="select"
@@ -43,7 +45,7 @@
{% if field.show_root %}
{% endif %}
- {{ _self.page_options(_context, page_list) }}
+ {{ macro.page_options(_context, page_list) }}
{% endblock %}
diff --git a/themes/grav/templates/forms/fields/permissions/permissions.html.twig b/themes/grav/templates/forms/fields/permissions/permissions.html.twig
index e7f6214b..b53a6840 100644
--- a/themes/grav/templates/forms/fields/permissions/permissions.html.twig
+++ b/themes/grav/templates/forms/fields/permissions/permissions.html.twig
@@ -1,5 +1,12 @@
{% extends "forms/field.html.twig" %}
+{% macro spanToggle(input, length) %}
+ {% set space = repeat(' ', (length - input|length) / 2) %}
+ {{ (space ~ input ~ space)|raw }}
+{% endmacro %}
+
+{% import _self as macro %}
+
{% set value = (value is null ? field.default : value) %}
{% set value = (value is same as(false) ? 0 : value) %}
@@ -8,11 +15,6 @@
data-grav-default="{{ field.default|json_encode()|e('html_attr') }}"
{% endblock %}
-{% macro spanToggle(input, length) %}
- {% set space = repeat(' ', (length - input|length) / 2) %}
- {{ (space ~ input ~ space)|raw }}
-{% endmacro %}
-
{% block input %}
{% set permissions = admin.getPermissions %}
@@ -56,7 +58,7 @@
{% if field.validate.required in ['on', 'true', 1] %}required="required"{% endif %}
/>
-
+
{% endfor %}
diff --git a/themes/grav/templates/forms/fields/toggle/toggle.html.twig b/themes/grav/templates/forms/fields/toggle/toggle.html.twig
index 50965469..a37a6008 100644
--- a/themes/grav/templates/forms/fields/toggle/toggle.html.twig
+++ b/themes/grav/templates/forms/fields/toggle/toggle.html.twig
@@ -1,5 +1,12 @@
{% extends "forms/field.html.twig" %}
+{% macro spanToggle(input, length) %}
+ {% set space = repeat(' ', (length - input|length) / 2) %}
+ {{ (space ~ input ~ space)|raw }}
+{% endmacro %}
+
+{% import _self as macro %}
+
{% set value = (value is null ? field.default : value) %}
{% set value = (value is same as(false) ? 0 : value) %}
@@ -15,11 +22,6 @@
data-grav-field-name="{{ (scope ~ field.name)|fieldName }}"
{% endblock %}
-{% macro spanToggle(input, length) %}
- {% set space = repeat(' ', (length - input|length) / 2) %}
- {{ (space ~ input ~ space)|raw }}
-{% endmacro %}
-
{% block input %}
@@ -54,7 +56,7 @@
{% endif %}
{% if field.validate.required in ['on', 'true', 1] %}required="required"{% endif %}
/>
-
+
{% endfor %}
{% endblock %}
diff --git a/themes/grav/templates/pages.html.twig b/themes/grav/templates/pages.html.twig
index 0ca53f0d..472d1b92 100644
--- a/themes/grav/templates/pages.html.twig
+++ b/themes/grav/templates/pages.html.twig
@@ -4,6 +4,85 @@
{{ (repeat(' ', (length - input|length) / 2) ~ input ~ repeat(' ', (length - input|length) / 2))|raw }}
{% endmacro %}
+{% macro loop(page, depth, twig_vars) %}
+ {% set config = twig_vars['config'] %}
+ {% set separator = config.system.param_sep %}
+ {% set display_field = config.plugins.admin.pages_list_display_field %}
+ {% set base_url = twig_vars['base_url_relative'] %}
+ {% set base_url_relative_frontend = twig_vars['base_url_relative_frontend'] %}
+ {% set base_url_simple = twig_vars['base_url_simple'] %}
+ {% set admin_route = twig_vars['admin_route'] %}
+ {% set admin_lang = twig_vars['admin_lang'] %}
+ {% set warn = twig_vars['warn'] %}
+ {% set uri = twig_vars['uri'] %}
+
+ {% if page.header.admin.children_display_order == 'collection' and page.header.content.order.by %}
+ {% if page.header.content.order.custom %}
+ {% set pcol = page.children().order(page.header.content.order.by, page.header.content.order.dir|default('asc'), page.header.content.order.custom) %}
+ {% else %}
+ {% set pcol = page.children().order(page.header.content.order.by, page.header.content.order.dir|default('asc')) %}
+ {% endif %}
+ {% else %}
+ {% set pcol = page.children() %}
+ {% endif %}
+
+ {% for p in pcol %}
+ {% set description = (not p.page ? "PLUGIN_ADMIN.FOLDER"|tu ~ ' • ' : "PLUGIN_ADMIN.PAGE"|tu ~ ' • ') ~
+ (p.modular ? "PLUGIN_ADMIN.MODULAR"|tu ~ ' • ' : '') ~
+ (p.routable ? "PLUGIN_ADMIN.ROUTABLE"|tu ~ ' • ' : "PLUGIN_ADMIN.NON_ROUTABLE"|tu ~ ' • ') ~
+ (p.visible ? "PLUGIN_ADMIN.VISIBLE"|tu ~ ' • ' : "PLUGIN_ADMIN.NON_VISIBLE"|tu ~ ' • ') ~
+ (p.published ? "PLUGIN_ADMIN.PUBLISHED"|tu ~ ' • ' : "PLUGIN_ADMIN.NON_PUBLISHED"|tu ~ ' • ') %}
+
+ {% set page_url = getPageUrl(p) %}
+
+
+
+
0 ? 'data-toggle="children"' : ''}}>
+
+
+
+
+
+ {% set page_label = attribute(p.header, display_field)|defined(attribute(p, display_field))|defined(p.title) %}
+ {{ page_label|e }}
+
+ {% if p.language %}
+
{{p.language}}
+ {% endif %}
+ {% if p.home %}
+
+ {% endif %}
+
+
{{ p.header.routes.default ?: p.route }} {{ p.template() }}
+
+
+ {% if config.plugins.admin.frontend_preview_target != 'inline' %}
+ {% set preview_target = config.plugins.admin.frontend_preview_target %}
+ {% set preview_html = (base_url_relative_frontend|rtrim('/') ~ (p.home ? '' : p.route)) ?: '/' %}
+ {% set preview_link = p.routable ? ' ' : '' %}
+ {% else %}
+ {% set preview_html = (base_url|rtrim('/') ~ '/preview' ~ (p.home ? '' : p.route)) ?: '/' %}
+ {% set preview_link = p.routable ? ' ' : '' %}
+ {% endif %}
+ {{ preview_link|raw }}
+ {% if warn %}
+
+ {% else %}
+
+ {% endif %}
+
+
+ {% if p.children().count > 0 %}
+
+ {{ macro.loop(p, depth + 1, twig_vars) }}
+
+ {% endif %}
+
+ {% endfor %}
+{% endmacro %}
+
+{% import _self as macro %}
+
{% if admin.route %}
{% set context = admin.page(true) %}
{% endif %}
@@ -50,84 +129,6 @@
{% set preview_link = context.routable ? ' ' : '' %}
{% endif %}
-{% macro loop(page, depth, twig_vars) %}
- {% set config = twig_vars['config'] %}
- {% set separator = config.system.param_sep %}
- {% set display_field = config.plugins.admin.pages_list_display_field %}
- {% set base_url = twig_vars['base_url_relative'] %}
- {% set base_url_relative_frontend = twig_vars['base_url_relative_frontend'] %}
- {% set base_url_simple = twig_vars['base_url_simple'] %}
- {% set admin_route = twig_vars['admin_route'] %}
- {% set admin_lang = twig_vars['admin_lang'] %}
- {% set warn = twig_vars['warn'] %}
- {% set uri = twig_vars['uri'] %}
-
- {% if page.header.admin.children_display_order == 'collection' and page.header.content.order.by %}
- {% if page.header.content.order.custom %}
- {% set pcol = page.children().order(page.header.content.order.by, page.header.content.order.dir|default('asc'), page.header.content.order.custom) %}
- {% else %}
- {% set pcol = page.children().order(page.header.content.order.by, page.header.content.order.dir|default('asc')) %}
- {% endif %}
- {% else %}
- {% set pcol = page.children() %}
- {% endif %}
-
- {% for p in pcol %}
- {% set description = (not p.page ? "PLUGIN_ADMIN.FOLDER"|tu ~ ' • ' : "PLUGIN_ADMIN.PAGE"|tu ~ ' • ') ~
- (p.modular ? "PLUGIN_ADMIN.MODULAR"|tu ~ ' • ' : '') ~
- (p.routable ? "PLUGIN_ADMIN.ROUTABLE"|tu ~ ' • ' : "PLUGIN_ADMIN.NON_ROUTABLE"|tu ~ ' • ') ~
- (p.visible ? "PLUGIN_ADMIN.VISIBLE"|tu ~ ' • ' : "PLUGIN_ADMIN.NON_VISIBLE"|tu ~ ' • ') ~
- (p.published ? "PLUGIN_ADMIN.PUBLISHED"|tu ~ ' • ' : "PLUGIN_ADMIN.NON_PUBLISHED"|tu ~ ' • ') %}
-
- {% set page_url = getPageUrl(p) %}
-
-
-
-
0 ? 'data-toggle="children"' : ''}}>
-
-
-
-
-
- {% set page_label = attribute(p.header, display_field)|defined(attribute(p, display_field))|defined(p.title) %}
- {{ page_label|e }}
-
- {% if p.language %}
-
{{p.language}}
- {% endif %}
- {% if p.home %}
-
- {% endif %}
-
-
{{ p.header.routes.default ?: p.route }} {{ p.template() }}
-
-
- {% if config.plugins.admin.frontend_preview_target != 'inline' %}
- {% set preview_target = config.plugins.admin.frontend_preview_target %}
- {% set preview_html = (base_url_relative_frontend|rtrim('/') ~ (p.home ? '' : p.route)) ?: '/' %}
- {% set preview_link = p.routable ? ' ' : '' %}
- {% else %}
- {% set preview_html = (base_url|rtrim('/') ~ '/preview' ~ (p.home ? '' : p.route)) ?: '/' %}
- {% set preview_link = p.routable ? ' ' : '' %}
- {% endif %}
- {{ preview_link|raw }}
- {% if warn %}
-
- {% else %}
-
- {% endif %}
-
-
- {% if p.children().count > 0 %}
-
- {{ _self.loop(p, depth + 1, twig_vars) }}
-
- {% endif %}
-
- {% endfor %}
-{% endmacro %}
-
-
{% block titlebar %}