Merge branch 'develop' of bitbucket.org:rockettheme/grav-plugin-admin into develop

# By Djamil Legato
# Via Djamil Legato
* 'develop' of bitbucket.org:rockettheme/grav-plugin-admin:
  moved getState method in admin-all so it's always available
  Ensuring GravJS NS is available
  Fixed cancel for Move modal
  Fixed single / multi array fields
  Sync parent dropdown in move modal on continue
  Added Move modal for pages
This commit is contained in:
Andy Miller
2015-08-03 13:56:41 -06:00
8 changed files with 69 additions and 20 deletions

View File

@@ -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) {

View File

@@ -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(),

View File

@@ -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);
}
});
});

View File

@@ -1,4 +1,3 @@
{% set originalValue = originalValue is defined ? originalValue : value %}
{% set value = (value is null ? field.default : value) %}
@@ -33,7 +32,7 @@
<div class="form-data block size-2-3"
{% block global_attributes %}
data-grav-field="{{ field.type }}"
{#data-grav-disabled="{{ originalValue is null ? 'true' : 'false' }}"#}
data-grav-disabled="{{ originalValue is null ? 'true' : 'false' }}"
data-grav-default="{{ field.default|json_encode()|e('html_attr') }}"
{% endblock %}
>

View File

@@ -15,7 +15,7 @@
{% if field.value_only != true %}
<input data-grav-array-type="key" type="text" value="{{ key }}" placeholder="{{ field.placeholder_key }}" />
{% endif %}
<input data-grav-array-type="value" type="text" name="{{ key }}" value="{{ text|join(', ') }}" placeholder="{{ field.placeholder_value }}" />
<input data-grav-array-type="value" type="text" name="{{ (field.name|fieldName) ~ '[' ~ key ~ ']' }}" value="{{ text|join(', ') }}" placeholder="{{ field.placeholder_value }}" />
<span data-grav-array-action="rem" class="fa fa-minus"></span>
<span data-grav-array-action="add" class="fa fa-plus"></span>
</div>

View File

@@ -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 %}
<option {% if key == value or text in value %}selected="selected"{% endif %} value="{{ field.multiple ? text : key }}">{{ text }}</option>

View File

@@ -79,7 +79,7 @@
<a class="button" href="{{ base_url }}/pages"><i class="fa fa-reply"></i> Back</a>
{% if exists %}
<a class="button" href="{{ uri.route(true) }}/task:copy" class="page-copy" ><i class="fa fa-copy"></i> Copy</a>
<a class="button" href="#" data-remodal-target="move"><i class="fa fa-arrows"></i> Move</a>
{% if warn %}
<a class="button" href="#delete" data-remodal-target="delete" data-delete-url="{{ uri.route(true) }}/task:delete"><i class="fa fa-close"></i> Delete</a>
{% else %}
@@ -166,6 +166,11 @@
{% endif %}
{% if mode == 'edit' %}
<div class="remodal" data-remodal-id="move" data-remodal-options="hashTracking: false">
{% include 'partials/page-move.html.twig' with { blueprints: admin.blueprints('pages/move'), data: context } %}
</div>
<div class="remodal" data-remodal-id="delete" data-remodal-options="hashTracking: false">
<form>
<h1>Confirmation Required</h1>

View File

@@ -0,0 +1,17 @@
{% set form_id = form_id ? form_id : 'blueprints' %}
<form id="{{ form_id }}" method="post" data-page-move>
{% for field in blueprints.fields %}
{% if field.type %}
{% set value = data.value(field.name) %}
<div class="block block-{{field.type}}">
{% include ["forms/fields/#{field.type}/#{field.type}.html.twig", 'forms/fields/text/text.html.twig'] %}
</div>
{% endif %}
{% endfor %}
<div class="button-bar">
<a class="button secondary remodal-cancel" href="#"><i class="fa fa-fw fa-close"></i> Cancel</a>
<button class="button primary" name="task" value="continue" form="blueprints">Continue</button>
</div>
</form>