mirror of
https://github.com/processwire/processwire.git
synced 2025-08-10 00:37:02 +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) {
|
if(options.fieldset) {
|
||||||
setupFieldsets();
|
setupFieldsets();
|
||||||
$original.children('option').each(function() {
|
findFieldsetCloseItems($original);
|
||||||
var name = $(this).text();
|
$original.on('rebuild', function(e) {
|
||||||
if(name.indexOf('_END') > 0 && name.substring(name.length - 4) == '_END') {
|
console.log('asmSelect REBUILD');
|
||||||
fieldsetCloseItems[name] = $(this);
|
findFieldsetCloseItems($(this));
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1032,6 +1031,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
|
// initialize for this iteration
|
||||||
init();
|
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() {
|
function TemplateFieldAddDialog() {
|
||||||
|
|
||||||
var $a = $(this);
|
var $a = $(this);
|
||||||
@@ -44,13 +44,24 @@ function TemplateFieldAddDialog() {
|
|||||||
'text': $('#fieldgroup_fields').attr('data-closeAddLabel'),
|
'text': $('#fieldgroup_fields').attr('data-closeAddLabel'),
|
||||||
'class': ($button && $button.hasClass('ui-priority-secondary') ? 'ui-priority-secondary' : ''),
|
'class': ($button && $button.hasClass('ui-priority-secondary') ? 'ui-priority-secondary' : ''),
|
||||||
'click': function() {
|
'click': function() {
|
||||||
setTimeout(function() {
|
setTimeout(function() { buttonClicked(); }, 500);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
$iframe.setButtons(buttons);
|
||||||
|
|
||||||
|
/*************************************/
|
||||||
|
|
||||||
|
function buttonClicked() {
|
||||||
var newFieldId = $icontents.find("#Inputfield_id").last().val();
|
var newFieldId = $icontents.find("#Inputfield_id").last().val();
|
||||||
$iframe.dialog('close');
|
|
||||||
var $options = $('#fieldgroup_fields option');
|
var $options = $('#fieldgroup_fields option');
|
||||||
var numOptions = $options.length;
|
var numOptions = $options.length;
|
||||||
|
|
||||||
|
$iframe.dialog('close');
|
||||||
|
|
||||||
$options.eq(1).before($("<option></option>").val(newFieldId).text($icontents.find("#Inputfield_name").val()));
|
$options.eq(1).before($("<option></option>").val(newFieldId).text($icontents.find("#Inputfield_name").val()));
|
||||||
|
|
||||||
$('#fieldgroup_fields option[value="'+newFieldId+'"]')
|
$('#fieldgroup_fields option[value="'+newFieldId+'"]')
|
||||||
.attr('id', 'asm0option'+numOptions)
|
.attr('id', 'asm0option'+numOptions)
|
||||||
.attr('data-desc', ($icontents.find("#field_label").val()))
|
.attr('data-desc', ($icontents.find("#field_label").val()))
|
||||||
@@ -58,27 +69,62 @@ function TemplateFieldAddDialog() {
|
|||||||
|
|
||||||
$("#asmSelect0 option").eq(1).before($("<option></option>")
|
$("#asmSelect0 option").eq(1).before($("<option></option>")
|
||||||
.val(newFieldId).text($icontents.find("#Inputfield_name").val()));
|
.val(newFieldId).text($icontents.find("#Inputfield_name").val()));
|
||||||
$("#asmSelect0").find('option:selected').removeAttr("selected");
|
$("#asmSelect0").find('option:selected').prop('selected', false);
|
||||||
$('#asmSelect0 option[value="'+newFieldId+'"]')
|
$('#asmSelect0 option[value="'+newFieldId+'"]')
|
||||||
.attr('rel', 'asm0option'+numOptions)
|
.attr('rel', 'asm0option'+numOptions)
|
||||||
.attr('selected', 'selected')
|
.attr('selected', 'selected')
|
||||||
.addClass('asmOptionDisabled')
|
.addClass('asmOptionDisabled')
|
||||||
.attr('disabled', 'disabled')
|
.prop('disabled', 'disabled');
|
||||||
.trigger('change')
|
|
||||||
.removeAttr("selected");
|
// MP check for Fieldset (Open) and Fieldset in Tab (Open)
|
||||||
}, 500);
|
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
$iframe.setButtons(buttons);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
$(document).ready(function() {
|
$(document).ready(function() {
|
||||||
$('#wrap_fieldgroup_fields p.description a').on('click', TemplateFieldAddDialog);
|
$('#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