mirror of
https://github.com/getgrav/grav-plugin-admin.git
synced 2026-01-09 00:53:06 +01:00
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:
@@ -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) {
|
||||
|
||||
@@ -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(),
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
@@ -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 %}
|
||||
>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
17
themes/grav/templates/partials/page-move.html.twig
Normal file
17
themes/grav/templates/partials/page-move.html.twig
Normal 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>
|
||||
Reference in New Issue
Block a user