From 236c6ed0c7d59f12723275321402974e68f845d9 Mon Sep 17 00:00:00 2001 From: Djamil Legato Date: Mon, 3 Aug 2015 11:26:58 -0700 Subject: [PATCH 1/6] Added Move modal for pages --- themes/grav/js/pages-all.js | 10 ++++++++++ themes/grav/templates/forms/field.html.twig | 3 +-- .../forms/fields/select/select.html.twig | 1 + themes/grav/templates/pages.html.twig | 7 ++++++- .../grav/templates/partials/page-move.html.twig | 17 +++++++++++++++++ 5 files changed, 35 insertions(+), 3 deletions(-) create mode 100644 themes/grav/templates/partials/page-move.html.twig diff --git a/themes/grav/js/pages-all.js b/themes/grav/js/pages-all.js index 99749236..b855bbd5 100644 --- a/themes/grav/js/pages-all.js +++ b/themes/grav/js/pages-all.js @@ -291,4 +291,14 @@ $(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 + $('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); + } + }); }); 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/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 24bb7e11..1ff2e350 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..80021952 --- /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 + +
+
From c3540f48533d1d786da38bc442ee82aa58da841d Mon Sep 17 00:00:00 2001 From: Djamil Legato Date: Mon, 3 Aug 2015 11:31:11 -0700 Subject: [PATCH 2/6] Sync parent dropdown in move modal on continue --- themes/grav/js/pages-all.js | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/themes/grav/js/pages-all.js b/themes/grav/js/pages-all.js index b855bbd5..517fdc68 100644 --- a/themes/grav/js/pages-all.js +++ b/themes/grav/js/pages-all.js @@ -292,13 +292,23 @@ $(function(){ } }); - // Move dropdown sync - $('body').on('change', '[data-page-move] select', function(){ + // 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); + } }); }); From fafda56396b63095a91fdcc11d6a18f03a4d9a1d Mon Sep 17 00:00:00 2001 From: Djamil Legato Date: Mon, 3 Aug 2015 12:33:03 -0700 Subject: [PATCH 3/6] Fixed single / multi array fields --- themes/grav/js/forms/fields/array.js | 15 +++++++++++---- themes/grav/js/forms/form.js | 2 +- .../templates/forms/fields/array/array.html.twig | 2 +- 3 files changed, 13 insertions(+), 6 deletions(-) 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/forms/form.js b/themes/grav/js/forms/form.js index 90420128..bb2d42ca 100644 --- a/themes/grav/js/forms/form.js +++ b/themes/grav/js/forms/form.js @@ -115,7 +115,7 @@ this.scanned = true; //Refresh root.currentValues as toggleables have been initialized - root.currentValues = getState(); + //root.currentValues = getState(); }; Form.factories = {}; 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 %} - +
From 3cfe1d06a223ff9aceb9e5cce6c4b6737861a08b Mon Sep 17 00:00:00 2001 From: Djamil Legato Date: Mon, 3 Aug 2015 12:43:44 -0700 Subject: [PATCH 4/6] Fixed cancel for Move modal --- themes/grav/templates/partials/page-move.html.twig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/themes/grav/templates/partials/page-move.html.twig b/themes/grav/templates/partials/page-move.html.twig index 80021952..16fbcc59 100644 --- a/themes/grav/templates/partials/page-move.html.twig +++ b/themes/grav/templates/partials/page-move.html.twig @@ -11,7 +11,7 @@ {% endfor %}
- Cancel + Cancel
From cf2c727666bc3c8c819539eebaaff12da376734b Mon Sep 17 00:00:00 2001 From: Djamil Legato Date: Mon, 3 Aug 2015 12:46:39 -0700 Subject: [PATCH 5/6] Ensuring GravJS NS is available --- themes/grav/js/forms/form.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/themes/grav/js/forms/form.js b/themes/grav/js/forms/form.js index bb2d42ca..ab14545d 100644 --- a/themes/grav/js/forms/form.js +++ b/themes/grav/js/forms/form.js @@ -115,7 +115,7 @@ this.scanned = true; //Refresh root.currentValues as toggleables have been initialized - //root.currentValues = getState(); + (root || window.GravJS).currentValues = getState(); }; Form.factories = {}; From d081a39439b6d36c9daa6b98796988f904613f8b Mon Sep 17 00:00:00 2001 From: Djamil Legato Date: Mon, 3 Aug 2015 12:55:00 -0700 Subject: [PATCH 6/6] moved getState method in admin-all so it's always available --- themes/grav/js/admin-all.js | 12 ++++++++++++ themes/grav/js/forms/form.js | 2 +- themes/grav/js/pages-all.js | 12 ------------ 3 files changed, 13 insertions(+), 13 deletions(-) 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/form.js b/themes/grav/js/forms/form.js index ab14545d..90420128 100644 --- a/themes/grav/js/forms/form.js +++ b/themes/grav/js/forms/form.js @@ -115,7 +115,7 @@ this.scanned = true; //Refresh root.currentValues as toggleables have been initialized - (root || window.GravJS).currentValues = getState(); + root.currentValues = getState(); }; Form.factories = {}; diff --git a/themes/grav/js/pages-all.js b/themes/grav/js/pages-all.js index 517fdc68..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 || {};