diff --git a/themes/grav/js/admin-all.js b/themes/grav/js/admin-all.js index 24f9d236..ad32bd3c 100644 --- a/themes/grav/js/admin-all.js +++ b/themes/grav/js/admin-all.js @@ -1,3 +1,15 @@ +var getState = function(){ + var loadValues = []; + $('input, select, textarea').each(function(index, element){ + var name = $(element).prop('name'), + value = $(element).val(); + + if (name) loadValues.push(name + '|' + value); + }); + + return loadValues.toString(); +}; + $(function () { jQuery.substitute = function(str, sub) { return str.replace(/\{(.+?)\}/g, function($0, $1) { diff --git a/themes/grav/js/forms/fields/array.js b/themes/grav/js/forms/fields/array.js index 2a742e9c..36befe36 100644 --- a/themes/grav/js/forms/fields/array.js +++ b/themes/grav/js/forms/fields/array.js @@ -29,9 +29,11 @@ }; ArrayField.prototype.name = function(name) { - if (name) { + if (name && !this.isValueOnly()) { this.el.data('grav-array-name', name); return name; + } else { + return ''; } return this.el.data('grav-array-name') @@ -76,7 +78,7 @@ formValues = {}; for (var key in values) { if (values.hasOwnProperty(key)) { - formValues[name + '[' + key + ']'] = values[key]; + formValues[this.isValueOnly() ? key : name + '[' + key + ']'] = values[key]; } } @@ -101,15 +103,20 @@ var keyField = $(event.target), valueField = keyField.closest('[data-grav-array-type="row"]').find('[data-grav-array-type="value"]'); - valueField.attr('name', keyField.val()); + valueField.attr('name', this.getFieldName() + '[' + keyField.val() + ']'); }; ArrayField.prototype.refreshAll = function() { + var that = this; this.el.find('[data-grav-array-type="value"]').each(function(index, element){ - $(element).attr('name', index); + $(element).attr('name', that.getFieldName() + '[' + index + ']'); }); }; + ArrayField.prototype.getFieldName = function(element) { + return this.el.data('grav-array-name'); + }; + ArrayField.prototype._getNewField = function(key, value) { var name = this.name(), value_only = this.isValueOnly(), diff --git a/themes/grav/js/pages-all.js b/themes/grav/js/pages-all.js index 99749236..98f54ea8 100644 --- a/themes/grav/js/pages-all.js +++ b/themes/grav/js/pages-all.js @@ -1,15 +1,3 @@ -var getState = function(){ - var loadValues = []; - $('input, select, textarea').each(function(index, element){ - var name = $(element).prop('name'), - value = $(element).val(); - - if (name) loadValues.push(name + '|' + value); - }); - - return loadValues.toString(); -}; - $(function(){ var root = window || {}; root = root.GravJS = root.GravJS || {}; @@ -291,4 +279,24 @@ $(function(){ return "You have made changes on this page that you have not yet confirmed. If you navigate away from this page you will lose your unsaved changes"; } }); + + // Move dropdown sync (on dropdown change) + /*$('body').on('change', '[data-page-move] select', function(){ + var route = jQuery('form#blueprints').first().find('select[name="route"]'), + value = $(this).val(); + if (route.length && route.val() !== value) { + route.val(value); + route.data('selectize').setValue(value); + } + });*/ + + // Move dropdown sync (on continue) + $('[data-page-move] button').on('click', function(){ + var route = jQuery('form#blueprints').first().find('select[name="route"]'), + value = $('[data-page-move] select').val(); + if (route.length && route.val() !== value) { + route.val(value); + route.data('selectize').setValue(value); + } + }); }); diff --git a/themes/grav/templates/forms/field.html.twig b/themes/grav/templates/forms/field.html.twig index 65a87060..fe941eba 100644 --- a/themes/grav/templates/forms/field.html.twig +++ b/themes/grav/templates/forms/field.html.twig @@ -1,4 +1,3 @@ - {% set originalValue = originalValue is defined ? originalValue : value %} {% set value = (value is null ? field.default : value) %} @@ -33,7 +32,7 @@
diff --git a/themes/grav/templates/forms/fields/array/array.html.twig b/themes/grav/templates/forms/fields/array/array.html.twig index 0ebeadac..170f7653 100644 --- a/themes/grav/templates/forms/fields/array/array.html.twig +++ b/themes/grav/templates/forms/fields/array/array.html.twig @@ -15,7 +15,7 @@ {% if field.value_only != true %} {% endif %} - +
diff --git a/themes/grav/templates/forms/fields/select/select.html.twig b/themes/grav/templates/forms/fields/select/select.html.twig index 77dffd09..687e5cdd 100644 --- a/themes/grav/templates/forms/fields/select/select.html.twig +++ b/themes/grav/templates/forms/fields/select/select.html.twig @@ -12,6 +12,7 @@ {% if field.novalidate in ['on', 'true', 1] %}novalidate="novalidate"{% endif %} {% if field.validate.required in ['on', 'true', 1] %}required="required"{% endif %} {% if field.multiple in ['on', 'true', 1] %}multiple="multiple"{% endif %} + {% if field.form %}form="{{ field.form }}"{% endif %} > {% for key, text in field.options %} diff --git a/themes/grav/templates/pages.html.twig b/themes/grav/templates/pages.html.twig index d8a5686b..6bd96299 100644 --- a/themes/grav/templates/pages.html.twig +++ b/themes/grav/templates/pages.html.twig @@ -79,7 +79,7 @@ Back {% if exists %} Copy - + Move {% if warn %} Delete {% else %} @@ -166,6 +166,11 @@ {% endif %} {% if mode == 'edit' %} +
+ + {% include 'partials/page-move.html.twig' with { blueprints: admin.blueprints('pages/move'), data: context } %} +
+

Confirmation Required

diff --git a/themes/grav/templates/partials/page-move.html.twig b/themes/grav/templates/partials/page-move.html.twig new file mode 100644 index 00000000..16fbcc59 --- /dev/null +++ b/themes/grav/templates/partials/page-move.html.twig @@ -0,0 +1,17 @@ +{% set form_id = form_id ? form_id : 'blueprints' %} + + + {% for field in blueprints.fields %} + {% if field.type %} + {% set value = data.value(field.name) %} +
+ {% include ["forms/fields/#{field.type}/#{field.type}.html.twig", 'forms/fields/text/text.html.twig'] %} +
+ {% endif %} + {% endfor %} + +
+ Cancel + +
+