mirror of
https://github.com/processwire/processwire.git
synced 2025-08-09 00:06:55 +02:00
Fix issue processwire/processwire-issues#1571 which adds support for adding _END fieldset item with ProcessTemplateFieldCreator
This commit is contained in:
committed by
Ryan Cramer
parent
754fb2b1fd
commit
a8894391a2
@@ -158,11 +158,10 @@
|
||||
|
||||
if(options.fieldset) {
|
||||
setupFieldsets();
|
||||
$original.children('option').each(function() {
|
||||
var name = $(this).text();
|
||||
if(name.indexOf('_END') > 0 && name.substring(name.length - 4) == '_END') {
|
||||
fieldsetCloseItems[name] = $(this);
|
||||
}
|
||||
findFieldsetCloseItems($original);
|
||||
$original.on('rebuild', function(e) {
|
||||
console.log('asmSelect REBUILD');
|
||||
findFieldsetCloseItems($(this));
|
||||
});
|
||||
}
|
||||
|
||||
@@ -1031,6 +1030,21 @@
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Find all options with a name that ends with _END and populate to fieldsetCloseItems
|
||||
*
|
||||
* @param $select
|
||||
*
|
||||
*/
|
||||
function findFieldsetCloseItems($select) {
|
||||
$select.children('option').each(function() {
|
||||
var name = $(this).text();
|
||||
if(name.indexOf('_END') > 0 && name.substring(name.length - 4) == '_END') {
|
||||
fieldsetCloseItems[name] = $(this);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// initialize for this iteration
|
||||
init();
|
||||
|
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
|
||||
// made by adrian
|
||||
// made by adrian with fieldset additions by matjazpotocnik
|
||||
function TemplateFieldAddDialog() {
|
||||
|
||||
var $a = $(this);
|
||||
@@ -37,48 +37,94 @@ function TemplateFieldAddDialog() {
|
||||
}
|
||||
$button.hide();
|
||||
});
|
||||
|
||||
// if field has been saved once, now offer a Close & Add button
|
||||
if(fieldReady) {
|
||||
buttons[n] = {
|
||||
'text': $('#fieldgroup_fields').attr('data-closeAddLabel'),
|
||||
'class': ($button && $button.hasClass('ui-priority-secondary') ? 'ui-priority-secondary' : ''),
|
||||
'click': function() {
|
||||
setTimeout(function() {
|
||||
var newFieldId = $icontents.find("#Inputfield_id").last().val();
|
||||
$iframe.dialog('close');
|
||||
var $options = $('#fieldgroup_fields option');
|
||||
var numOptions = $options.length;
|
||||
|
||||
$options.eq(1).before($("<option></option>").val(newFieldId).text($icontents.find("#Inputfield_name").val()));
|
||||
$('#fieldgroup_fields option[value="'+newFieldId+'"]')
|
||||
.attr('id', 'asm0option'+numOptions)
|
||||
.attr('data-desc', ($icontents.find("#field_label").val()))
|
||||
.attr('data-status', ($icontents.find("#Inputfield_type option:selected").text()));
|
||||
|
||||
$("#asmSelect0 option").eq(1).before($("<option></option>")
|
||||
.val(newFieldId).text($icontents.find("#Inputfield_name").val()));
|
||||
$("#asmSelect0").find('option:selected').removeAttr("selected");
|
||||
$('#asmSelect0 option[value="'+newFieldId+'"]')
|
||||
.attr('rel', 'asm0option'+numOptions)
|
||||
.attr('selected', 'selected')
|
||||
.addClass('asmOptionDisabled')
|
||||
.attr('disabled', 'disabled')
|
||||
.trigger('change')
|
||||
.removeAttr("selected");
|
||||
}, 500);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
$iframe.setButtons(buttons);
|
||||
});
|
||||
|
||||
return false;
|
||||
|
||||
// if field has been saved once, now offer a Close & Add button
|
||||
if(fieldReady) {
|
||||
buttons[n] = {
|
||||
'text': $('#fieldgroup_fields').attr('data-closeAddLabel'),
|
||||
'class': ($button && $button.hasClass('ui-priority-secondary') ? 'ui-priority-secondary' : ''),
|
||||
'click': function() {
|
||||
setTimeout(function() { buttonClicked(); }, 500);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
$iframe.setButtons(buttons);
|
||||
|
||||
/*************************************/
|
||||
|
||||
function buttonClicked() {
|
||||
var newFieldId = $icontents.find("#Inputfield_id").last().val();
|
||||
var $options = $('#fieldgroup_fields option');
|
||||
var numOptions = $options.length;
|
||||
|
||||
$iframe.dialog('close');
|
||||
|
||||
$options.eq(1).before($("<option></option>").val(newFieldId).text($icontents.find("#Inputfield_name").val()));
|
||||
|
||||
$('#fieldgroup_fields option[value="'+newFieldId+'"]')
|
||||
.attr('id', 'asm0option'+numOptions)
|
||||
.attr('data-desc', ($icontents.find("#field_label").val()))
|
||||
.attr('data-status', ($icontents.find("#Inputfield_type option:selected").text()));
|
||||
|
||||
$("#asmSelect0 option").eq(1).before($("<option></option>")
|
||||
.val(newFieldId).text($icontents.find("#Inputfield_name").val()));
|
||||
$("#asmSelect0").find('option:selected').prop('selected', false);
|
||||
$('#asmSelect0 option[value="'+newFieldId+'"]')
|
||||
.attr('rel', 'asm0option'+numOptions)
|
||||
.attr('selected', 'selected')
|
||||
.addClass('asmOptionDisabled')
|
||||
.prop('disabled', 'disabled');
|
||||
|
||||
// MP check for Fieldset (Open) and Fieldset in Tab (Open)
|
||||
var name = $icontents.find('#Inputfield_name').val();
|
||||
var type = $icontents.find('#Inputfield_type option:selected').val();
|
||||
|
||||
if(type === 'FieldtypeFieldsetOpen' || type === 'FieldtypeFieldsetTabOpen') {
|
||||
// Fieldset added
|
||||
name = name + '_END';
|
||||
var numOptions1 = numOptions + 1;
|
||||
// just an asumption that created _END field has an ID incremented by 1, no way to tell for sure
|
||||
// other than querying db via ajax, I think it's not worth it
|
||||
var newFieldId1 = (parseInt(newFieldId) + 1) + '';
|
||||
|
||||
$options.eq(1).before($('<option></option>')
|
||||
.val(newFieldId1)
|
||||
.text(name)
|
||||
);
|
||||
|
||||
var dataStatus = '';
|
||||
var dataDesc = '';
|
||||
|
||||
$('#fieldgroup_fields option[value="'+newFieldId1+'"]')
|
||||
.attr('id', 'asm0option'+numOptions1)
|
||||
.attr('data-desc', dataDesc)
|
||||
.attr('data-status', dataStatus);
|
||||
|
||||
$('#asmSelect0 option').eq(1).after($('<option></option>')
|
||||
.val(newFieldId1)
|
||||
.text(name)
|
||||
);
|
||||
|
||||
$('#asmSelect0 option[value="'+newFieldId1+'"]')
|
||||
.attr('rel', 'asm0option'+numOptions1)
|
||||
.addClass('asmOptionDisabled')
|
||||
.prop('disabled', true);
|
||||
|
||||
// rebuild event recognized by asmSelect
|
||||
$('#fieldgroup_fields').trigger('rebuild');
|
||||
}
|
||||
|
||||
$('#asmSelect0 option[value="'+newFieldId+'"]')
|
||||
.trigger('change')
|
||||
.prop('selected', false);
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
$(document).ready(function() {
|
||||
$('#wrap_fieldgroup_fields p.description a').on('click', TemplateFieldAddDialog);
|
||||
});
|
||||
|
@@ -1 +1 @@
|
||||
function TemplateFieldAddDialog(){var $a=$(this);var fieldReady=false;var $iframe=pwModalWindow($a.attr("href"),{},"large");$iframe.on("load",function(){var $button;var buttons=[];var $icontents=$iframe.contents();var n=0;$icontents.find("#breadcrumbs ul.nav, #Inputfield_submit_save_field_copy").hide();$icontents.find("#content form button.ui-button[type=submit]").each(function(){var text=$(this).text();var skip=false;$button=$(this);for(var i=0;i<buttons.length;i++){if(buttons[i].text==text||text.length<1)skip=true}if(!skip){buttons[n]={text:text,class:$button.hasClass("ui-priority-secondary")?"ui-priority-secondary":"",click:function(){$button.trigger("click");fieldReady=true}};n++}$button.hide()});if(fieldReady){buttons[n]={text:$("#fieldgroup_fields").attr("data-closeAddLabel"),class:$button&&$button.hasClass("ui-priority-secondary")?"ui-priority-secondary":"",click:function(){setTimeout(function(){var newFieldId=$icontents.find("#Inputfield_id").last().val();$iframe.dialog("close");var $options=$("#fieldgroup_fields option");var numOptions=$options.length;$options.eq(1).before($("<option></option>").val(newFieldId).text($icontents.find("#Inputfield_name").val()));$('#fieldgroup_fields option[value="'+newFieldId+'"]').attr("id","asm0option"+numOptions).attr("data-desc",$icontents.find("#field_label").val()).attr("data-status",$icontents.find("#Inputfield_type option:selected").text());$("#asmSelect0 option").eq(1).before($("<option></option>").val(newFieldId).text($icontents.find("#Inputfield_name").val()));$("#asmSelect0").find("option:selected").removeAttr("selected");$('#asmSelect0 option[value="'+newFieldId+'"]').attr("rel","asm0option"+numOptions).attr("selected","selected").addClass("asmOptionDisabled").attr("disabled","disabled").trigger("change").removeAttr("selected")},500)}}}$iframe.setButtons(buttons)});return false}$(document).ready(function(){$("#wrap_fieldgroup_fields p.description a").on("click",TemplateFieldAddDialog)});
|
||||
function TemplateFieldAddDialog(){var $a=$(this);var fieldReady=false;var $iframe=pwModalWindow($a.attr("href"),{},"large");$iframe.on("load",function(){var $button;var buttons=[];var $icontents=$iframe.contents();var n=0;$icontents.find("#breadcrumbs ul.nav, #Inputfield_submit_save_field_copy").hide();$icontents.find("#content form button.ui-button[type=submit]").each(function(){var text=$(this).text();var skip=false;$button=$(this);for(var i=0;i<buttons.length;i++){if(buttons[i].text==text||text.length<1)skip=true}if(!skip){buttons[n]={text:text,class:$button.hasClass("ui-priority-secondary")?"ui-priority-secondary":"",click:function(){$button.trigger("click");fieldReady=true}};n++}$button.hide()});if(fieldReady){buttons[n]={text:$("#fieldgroup_fields").attr("data-closeAddLabel"),class:$button&&$button.hasClass("ui-priority-secondary")?"ui-priority-secondary":"",click:function(){setTimeout(function(){buttonClicked()},500)}}}$iframe.setButtons(buttons);function buttonClicked(){var newFieldId=$icontents.find("#Inputfield_id").last().val();var $options=$("#fieldgroup_fields option");var numOptions=$options.length;$iframe.dialog("close");$options.eq(1).before($("<option></option>").val(newFieldId).text($icontents.find("#Inputfield_name").val()));$('#fieldgroup_fields option[value="'+newFieldId+'"]').attr("id","asm0option"+numOptions).attr("data-desc",$icontents.find("#field_label").val()).attr("data-status",$icontents.find("#Inputfield_type option:selected").text());$("#asmSelect0 option").eq(1).before($("<option></option>").val(newFieldId).text($icontents.find("#Inputfield_name").val()));$("#asmSelect0").find("option:selected").prop("selected",false);$('#asmSelect0 option[value="'+newFieldId+'"]').attr("rel","asm0option"+numOptions).attr("selected","selected").addClass("asmOptionDisabled").prop("disabled","disabled");var name=$icontents.find("#Inputfield_name").val();var type=$icontents.find("#Inputfield_type option:selected").val();if(type==="FieldtypeFieldsetOpen"||type==="FieldtypeFieldsetTabOpen"){name=name+"_END";var numOptions1=numOptions+1;var newFieldId1=parseInt(newFieldId)+1+"";$options.eq(1).before($("<option></option>").val(newFieldId1).text(name));var dataStatus="";var dataDesc="";$('#fieldgroup_fields option[value="'+newFieldId1+'"]').attr("id","asm0option"+numOptions1).attr("data-desc",dataDesc).attr("data-status",dataStatus);$("#asmSelect0 option").eq(1).after($("<option></option>").val(newFieldId1).text(name));$('#asmSelect0 option[value="'+newFieldId1+'"]').attr("rel","asm0option"+numOptions1).addClass("asmOptionDisabled").prop("disabled",true);$("#fieldgroup_fields").trigger("rebuild")}$('#asmSelect0 option[value="'+newFieldId+'"]').trigger("change").prop("selected",false)}});return false}$(document).ready(function(){$("#wrap_fieldgroup_fields p.description a").on("click",TemplateFieldAddDialog)});
|
Reference in New Issue
Block a user