From 35e4f7f6a13aef7e11509e9f058ac66fa0030433 Mon Sep 17 00:00:00 2001 From: adrianbj Date: Sat, 1 Oct 2016 07:40:07 -0700 Subject: [PATCH 1/4] Add a separate Save, Close & Add button This allows for full configuration of fields that require more than two saves, such as FieldtypeOptions. --- .../ProcessTemplateFieldCreator.js | 56 +++++++++++-------- .../ProcessTemplateFieldCreator.min.js | 2 +- 2 files changed, 34 insertions(+), 24 deletions(-) diff --git a/wire/modules/Process/ProcessTemplate/ProcessTemplateFieldCreator.js b/wire/modules/Process/ProcessTemplate/ProcessTemplateFieldCreator.js index 6164f038..423da1cb 100755 --- a/wire/modules/Process/ProcessTemplate/ProcessTemplateFieldCreator.js +++ b/wire/modules/Process/ProcessTemplate/ProcessTemplateFieldCreator.js @@ -2,7 +2,7 @@ function TemplateFieldAddDialog() { var $a = $(this); - var closeOnSave = false; + var fieldReady = false; var $iframe = pwModalWindow($a.attr('href'), {}, 'large'); $iframe.load(function() { @@ -29,28 +29,7 @@ function TemplateFieldAddDialog() { 'class': ($button.is('.ui-priority-secondary') ? 'ui-priority-secondary' : ''), 'click': function() { $button.click(); - if(closeOnSave) setTimeout(function() { - var newFieldId = $icontents.find("#Inputfield_id:last").val(); - $iframe.dialog('close'); - var numOptions = $('#fieldgroup_fields option').size(); - - $("#fieldgroup_fields option").eq(1).before($("").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($("").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); - closeOnSave = true; + fieldReady = true; } }; n++; @@ -58,6 +37,37 @@ function TemplateFieldAddDialog() { $button.hide(); }); + // if field has been saved once, now offer a Save, Close & Add button + if(fieldReady) { + buttons[n] = { + 'text': 'Save, Close & Add', + 'class': ($button.is('.ui-priority-secondary') ? 'ui-priority-secondary' : ''), + 'click': function() { + setTimeout(function() { + var newFieldId = $icontents.find("#Inputfield_id:last").val(); + $iframe.dialog('close'); + var numOptions = $('#fieldgroup_fields option').size(); + + $("#fieldgroup_fields option").eq(1).before($("").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($("").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); }); diff --git a/wire/modules/Process/ProcessTemplate/ProcessTemplateFieldCreator.min.js b/wire/modules/Process/ProcessTemplate/ProcessTemplateFieldCreator.min.js index 6ea14c7e..33a63b23 100644 --- a/wire/modules/Process/ProcessTemplate/ProcessTemplateFieldCreator.min.js +++ b/wire/modules/Process/ProcessTemplate/ProcessTemplateFieldCreator.min.js @@ -1 +1 @@ -function TemplateFieldAddDialog(){var b=$(this);var a=false;var c=pwModalWindow(b.attr("href"),{},"large");c.load(function(){var d=[];var e=c.contents();var f=0;e.find("#breadcrumbs ul.nav, #Inputfield_submit_save_field_copy").hide();e.find("#content form button.ui-button[type=submit]").each(function(){var h=$(this);var j=h.text();var g=false;for(i=0;i").val(l).text(e.find("#Inputfield_name").val()));$('#fieldgroup_fields option[value="'+l+'"]').attr("id","asm0option"+k).attr("data-desc",(e.find("#field_label").val())).attr("data-status",(e.find("#Inputfield_type option:selected").text()));$("#asmSelect0 option").eq(1).before($("").val(l).text(e.find("#Inputfield_name").val()));$("#asmSelect0").find("option:selected").removeAttr("selected");$('#asmSelect0 option[value="'+l+'"]').attr("rel","asm0option"+k).attr("selected","selected").addClass("asmOptionDisabled").attr("disabled","disabled").trigger("change").removeAttr("selected")},500)}a=true}};f++}h.hide()});c.setButtons(d)});return false}$(document).ready(function(){$("#wrap_fieldgroup_fields p.description a").click(TemplateFieldAddDialog)}); \ No newline at end of file +function TemplateFieldAddDialog(){var a=$(this),b=!1,c=pwModalWindow(a.attr("href"),{},"large");return c.load(function(){var a=[],d=c.contents(),e=0;d.find("#breadcrumbs ul.nav, #Inputfield_submit_save_field_copy").hide(),d.find("#content form button.ui-button[type=submit]").each(function(){var c=$(this),d=c.text(),f=!1;for(i=0;i").val(a).text(d.find("#Inputfield_name").val())),$('#fieldgroup_fields option[value="'+a+'"]').attr("id","asm0option"+b).attr("data-desc",d.find("#field_label").val()).attr("data-status",d.find("#Inputfield_type option:selected").text()),$("#asmSelect0 option").eq(1).before($("").val(a).text(d.find("#Inputfield_name").val())),$("#asmSelect0").find("option:selected").removeAttr("selected"),$('#asmSelect0 option[value="'+a+'"]').attr("rel","asm0option"+b).attr("selected","selected").addClass("asmOptionDisabled").attr("disabled","disabled").trigger("change").removeAttr("selected")},500)}}),c.setButtons(a)}),!1}$(document).ready(function(){$("#wrap_fieldgroup_fields p.description a").click(TemplateFieldAddDialog)}); \ No newline at end of file From 4ec21e6f6daa3b22dc710ea9c3e67fd02370b072 Mon Sep 17 00:00:00 2001 From: adrianbj Date: Sat, 1 Oct 2016 12:27:19 -0700 Subject: [PATCH 2/4] Make button label simply Save & Add I think this looks cleaner and is probably explanatory enough. --- .../Process/ProcessTemplate/ProcessTemplateFieldCreator.js | 4 ++-- .../ProcessTemplate/ProcessTemplateFieldCreator.min.js | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/wire/modules/Process/ProcessTemplate/ProcessTemplateFieldCreator.js b/wire/modules/Process/ProcessTemplate/ProcessTemplateFieldCreator.js index 423da1cb..2d786a76 100755 --- a/wire/modules/Process/ProcessTemplate/ProcessTemplateFieldCreator.js +++ b/wire/modules/Process/ProcessTemplate/ProcessTemplateFieldCreator.js @@ -37,10 +37,10 @@ function TemplateFieldAddDialog() { $button.hide(); }); - // if field has been saved once, now offer a Save, Close & Add button + // if field has been saved once, now offer a Save & Add button if(fieldReady) { buttons[n] = { - 'text': 'Save, Close & Add', + 'text': 'Save & Add', 'class': ($button.is('.ui-priority-secondary') ? 'ui-priority-secondary' : ''), 'click': function() { setTimeout(function() { diff --git a/wire/modules/Process/ProcessTemplate/ProcessTemplateFieldCreator.min.js b/wire/modules/Process/ProcessTemplate/ProcessTemplateFieldCreator.min.js index 33a63b23..33779a21 100644 --- a/wire/modules/Process/ProcessTemplate/ProcessTemplateFieldCreator.min.js +++ b/wire/modules/Process/ProcessTemplate/ProcessTemplateFieldCreator.min.js @@ -1 +1 @@ -function TemplateFieldAddDialog(){var a=$(this),b=!1,c=pwModalWindow(a.attr("href"),{},"large");return c.load(function(){var a=[],d=c.contents(),e=0;d.find("#breadcrumbs ul.nav, #Inputfield_submit_save_field_copy").hide(),d.find("#content form button.ui-button[type=submit]").each(function(){var c=$(this),d=c.text(),f=!1;for(i=0;i").val(a).text(d.find("#Inputfield_name").val())),$('#fieldgroup_fields option[value="'+a+'"]').attr("id","asm0option"+b).attr("data-desc",d.find("#field_label").val()).attr("data-status",d.find("#Inputfield_type option:selected").text()),$("#asmSelect0 option").eq(1).before($("").val(a).text(d.find("#Inputfield_name").val())),$("#asmSelect0").find("option:selected").removeAttr("selected"),$('#asmSelect0 option[value="'+a+'"]').attr("rel","asm0option"+b).attr("selected","selected").addClass("asmOptionDisabled").attr("disabled","disabled").trigger("change").removeAttr("selected")},500)}}),c.setButtons(a)}),!1}$(document).ready(function(){$("#wrap_fieldgroup_fields p.description a").click(TemplateFieldAddDialog)}); \ No newline at end of file +function TemplateFieldAddDialog(){var a=$(this),b=!1,c=pwModalWindow(a.attr("href"),{},"large");return c.load(function(){var a=[],d=c.contents(),e=0;d.find("#breadcrumbs ul.nav, #Inputfield_submit_save_field_copy").hide(),d.find("#content form button.ui-button[type=submit]").each(function(){var c=$(this),d=c.text(),f=!1;for(i=0;i").val(a).text(d.find("#Inputfield_name").val())),$('#fieldgroup_fields option[value="'+a+'"]').attr("id","asm0option"+b).attr("data-desc",d.find("#field_label").val()).attr("data-status",d.find("#Inputfield_type option:selected").text()),$("#asmSelect0 option").eq(1).before($("").val(a).text(d.find("#Inputfield_name").val())),$("#asmSelect0").find("option:selected").removeAttr("selected"),$('#asmSelect0 option[value="'+a+'"]').attr("rel","asm0option"+b).attr("selected","selected").addClass("asmOptionDisabled").attr("disabled","disabled").trigger("change").removeAttr("selected")},500)}}),c.setButtons(a)}),!1}$(document).ready(function(){$("#wrap_fieldgroup_fields p.description a").click(TemplateFieldAddDialog)}); \ No newline at end of file From e64352fbcf02f3791b71f9bfb2b8cc2a8b9315ce Mon Sep 17 00:00:00 2001 From: adrianbj Date: Sat, 1 Oct 2016 18:59:44 -0700 Subject: [PATCH 3/4] Make the additional button just Close & Add. Including Save in the action can be confusing as the user won't see any notices from the fieldtype on save. --- .../Process/ProcessTemplate/ProcessTemplateFieldCreator.js | 4 ++-- .../ProcessTemplate/ProcessTemplateFieldCreator.min.js | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/wire/modules/Process/ProcessTemplate/ProcessTemplateFieldCreator.js b/wire/modules/Process/ProcessTemplate/ProcessTemplateFieldCreator.js index 2d786a76..019e1324 100755 --- a/wire/modules/Process/ProcessTemplate/ProcessTemplateFieldCreator.js +++ b/wire/modules/Process/ProcessTemplate/ProcessTemplateFieldCreator.js @@ -37,10 +37,10 @@ function TemplateFieldAddDialog() { $button.hide(); }); - // if field has been saved once, now offer a Save & Add button + // if field has been saved once, now offer a Close & Add button if(fieldReady) { buttons[n] = { - 'text': 'Save & Add', + 'text': 'Close & Add', 'class': ($button.is('.ui-priority-secondary') ? 'ui-priority-secondary' : ''), 'click': function() { setTimeout(function() { diff --git a/wire/modules/Process/ProcessTemplate/ProcessTemplateFieldCreator.min.js b/wire/modules/Process/ProcessTemplate/ProcessTemplateFieldCreator.min.js index 33779a21..2d77f8c8 100644 --- a/wire/modules/Process/ProcessTemplate/ProcessTemplateFieldCreator.min.js +++ b/wire/modules/Process/ProcessTemplate/ProcessTemplateFieldCreator.min.js @@ -1 +1 @@ -function TemplateFieldAddDialog(){var a=$(this),b=!1,c=pwModalWindow(a.attr("href"),{},"large");return c.load(function(){var a=[],d=c.contents(),e=0;d.find("#breadcrumbs ul.nav, #Inputfield_submit_save_field_copy").hide(),d.find("#content form button.ui-button[type=submit]").each(function(){var c=$(this),d=c.text(),f=!1;for(i=0;i").val(a).text(d.find("#Inputfield_name").val())),$('#fieldgroup_fields option[value="'+a+'"]').attr("id","asm0option"+b).attr("data-desc",d.find("#field_label").val()).attr("data-status",d.find("#Inputfield_type option:selected").text()),$("#asmSelect0 option").eq(1).before($("").val(a).text(d.find("#Inputfield_name").val())),$("#asmSelect0").find("option:selected").removeAttr("selected"),$('#asmSelect0 option[value="'+a+'"]').attr("rel","asm0option"+b).attr("selected","selected").addClass("asmOptionDisabled").attr("disabled","disabled").trigger("change").removeAttr("selected")},500)}}),c.setButtons(a)}),!1}$(document).ready(function(){$("#wrap_fieldgroup_fields p.description a").click(TemplateFieldAddDialog)}); \ No newline at end of file +function TemplateFieldAddDialog(){var a=$(this),b=!1,c=pwModalWindow(a.attr("href"),{},"large");return c.load(function(){var a=[],d=c.contents(),e=0;d.find("#breadcrumbs ul.nav, #Inputfield_submit_save_field_copy").hide(),d.find("#content form button.ui-button[type=submit]").each(function(){var c=$(this),d=c.text(),f=!1;for(i=0;i").val(a).text(d.find("#Inputfield_name").val())),$('#fieldgroup_fields option[value="'+a+'"]').attr("id","asm0option"+b).attr("data-desc",d.find("#field_label").val()).attr("data-status",d.find("#Inputfield_type option:selected").text()),$("#asmSelect0 option").eq(1).before($("").val(a).text(d.find("#Inputfield_name").val())),$("#asmSelect0").find("option:selected").removeAttr("selected"),$('#asmSelect0 option[value="'+a+'"]').attr("rel","asm0option"+b).attr("selected","selected").addClass("asmOptionDisabled").attr("disabled","disabled").trigger("change").removeAttr("selected")},500)}}),c.setButtons(a)}),!1}$(document).ready(function(){$("#wrap_fieldgroup_fields p.description a").click(TemplateFieldAddDialog)}); \ No newline at end of file From d4090a06103878ba24939bf99053ed1748d5e7da Mon Sep 17 00:00:00 2001 From: Ryan Cramer Date: Tue, 4 Oct 2016 16:40:36 -0400 Subject: [PATCH 4/4] Add Adrian's PR #11 with some minor changes, plus fix issue with installing FieldtypeOptions when using utf8mb4 dbCharset. --- wire/core/ProcessWire.php | 2 +- .../SelectableOptionManager.php | 8 ++++++- .../ProcessTemplate/ProcessTemplate.module | 1 + .../ProcessTemplateFieldCreator.js | 23 +++++++++++-------- .../ProcessTemplateFieldCreator.min.js | 2 +- 5 files changed, 23 insertions(+), 13 deletions(-) diff --git a/wire/core/ProcessWire.php b/wire/core/ProcessWire.php index 2cc79014..5500a809 100644 --- a/wire/core/ProcessWire.php +++ b/wire/core/ProcessWire.php @@ -29,7 +29,7 @@ class ProcessWire extends Wire { const versionMajor = 3; const versionMinor = 0; const versionRevision = 35; - const versionSuffix = ''; + const versionSuffix = 'dev'; const indexVersion = 300; // required version for index.php file (represented by PROCESSWIRE define) const htaccessVersion = 300; diff --git a/wire/modules/Fieldtype/FieldtypeOptions/SelectableOptionManager.php b/wire/modules/Fieldtype/FieldtypeOptions/SelectableOptionManager.php index 5212e1f4..494ef91a 100644 --- a/wire/modules/Fieldtype/FieldtypeOptions/SelectableOptionManager.php +++ b/wire/modules/Fieldtype/FieldtypeOptions/SelectableOptionManager.php @@ -703,6 +703,7 @@ class SelectableOptionManager extends Wire { $table = self::optionsTable; $languages = $this->wire('languages'); $maxLen = $database->getMaxIndexLength(); + if(strtolower($this->wire('config')->dbCharset) == 'utf8mb4') $maxLen -= 20; // check for added languages foreach($languages as $language) { @@ -763,6 +764,7 @@ class SelectableOptionManager extends Wire { if($query->rowCount() == 0) { $engine = $this->wire('config')->dbEngine; $charset = $this->wire('config')->dbCharset; + if(strtolower($charset) == 'utf8mb4') $maxLen -= 20; $sql = "CREATE TABLE " . self::optionsTable . " (" . "fields_id INT UNSIGNED NOT NULL, " . @@ -783,6 +785,10 @@ class SelectableOptionManager extends Wire { } public function uninstall() { - $this->wire('database')->exec("DROP TABLE " . self::optionsTable); + try { + $this->wire('database')->exec("DROP TABLE " . self::optionsTable); + } catch(\Exception $e) { + $this->warning($e->getMessage()); + } } } diff --git a/wire/modules/Process/ProcessTemplate/ProcessTemplate.module b/wire/modules/Process/ProcessTemplate/ProcessTemplate.module index 92b9e827..59f8e807 100644 --- a/wire/modules/Process/ProcessTemplate/ProcessTemplate.module +++ b/wire/modules/Process/ProcessTemplate/ProcessTemplate.module @@ -826,6 +826,7 @@ class ProcessTemplate extends Process { $select->attr('name', 'fieldgroup_fields'); $select->attr('id', 'fieldgroup_fields'); $select->attr('title', $this->_('Add Field')); + $select->attr('data-closeAddLabel', $this->_('Close and Add')); $select->setAsmSelectOption('sortable', true); $select->setAsmSelectOption('editLink', $this->wire('config')->urls->admin . "setup/field/edit?id={value}&fieldgroup_id={$template->fieldgroup->id}&modal=1&process_template=1"); $select->setAsmSelectOption('hideDeleted', false); diff --git a/wire/modules/Process/ProcessTemplate/ProcessTemplateFieldCreator.js b/wire/modules/Process/ProcessTemplate/ProcessTemplateFieldCreator.js index 019e1324..c732aecd 100755 --- a/wire/modules/Process/ProcessTemplate/ProcessTemplateFieldCreator.js +++ b/wire/modules/Process/ProcessTemplate/ProcessTemplateFieldCreator.js @@ -7,6 +7,7 @@ function TemplateFieldAddDialog() { $iframe.load(function() { + var $button; var buttons = []; var $icontents = $iframe.contents(); var n = 0; @@ -16,45 +17,47 @@ function TemplateFieldAddDialog() { // copy buttons in iframe to dialog $icontents.find("#content form button.ui-button[type=submit]").each(function() { - var $button = $(this); - var text = $button.text(); + var text = $(this).text(); var skip = false; + $button = $(this); // avoid duplicate buttons - for(i = 0; i < buttons.length; i++) { + 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.is('.ui-priority-secondary') ? 'ui-priority-secondary' : ''), + 'class': ($button.hasClass('ui-priority-secondary') ? 'ui-priority-secondary' : ''), 'click': function() { $button.click(); fieldReady = true; } }; n++; - }; + } $button.hide(); }); // if field has been saved once, now offer a Close & Add button if(fieldReady) { buttons[n] = { - 'text': 'Close & Add', - 'class': ($button.is('.ui-priority-secondary') ? 'ui-priority-secondary' : ''), + '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 numOptions = $('#fieldgroup_fields option').size(); + var $options = $('#fieldgroup_fields option'); + var numOptions = $options.length; - $("#fieldgroup_fields option").eq(1).before($("").val(newFieldId).text($icontents.find("#Inputfield_name").val())); + $options.eq(1).before($("").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($("").val(newFieldId).text($icontents.find("#Inputfield_name").val())); + $("#asmSelect0 option").eq(1).before($("") + .val(newFieldId).text($icontents.find("#Inputfield_name").val())); $("#asmSelect0").find('option:selected').removeAttr("selected"); $('#asmSelect0 option[value="'+newFieldId+'"]') .attr('rel', 'asm0option'+numOptions) diff --git a/wire/modules/Process/ProcessTemplate/ProcessTemplateFieldCreator.min.js b/wire/modules/Process/ProcessTemplate/ProcessTemplateFieldCreator.min.js index 2d77f8c8..5f554387 100644 --- a/wire/modules/Process/ProcessTemplate/ProcessTemplateFieldCreator.min.js +++ b/wire/modules/Process/ProcessTemplate/ProcessTemplateFieldCreator.min.js @@ -1 +1 @@ -function TemplateFieldAddDialog(){var a=$(this),b=!1,c=pwModalWindow(a.attr("href"),{},"large");return c.load(function(){var a=[],d=c.contents(),e=0;d.find("#breadcrumbs ul.nav, #Inputfield_submit_save_field_copy").hide(),d.find("#content form button.ui-button[type=submit]").each(function(){var c=$(this),d=c.text(),f=!1;for(i=0;i").val(a).text(d.find("#Inputfield_name").val())),$('#fieldgroup_fields option[value="'+a+'"]').attr("id","asm0option"+b).attr("data-desc",d.find("#field_label").val()).attr("data-status",d.find("#Inputfield_type option:selected").text()),$("#asmSelect0 option").eq(1).before($("").val(a).text(d.find("#Inputfield_name").val())),$("#asmSelect0").find("option:selected").removeAttr("selected"),$('#asmSelect0 option[value="'+a+'"]').attr("rel","asm0option"+b).attr("selected","selected").addClass("asmOptionDisabled").attr("disabled","disabled").trigger("change").removeAttr("selected")},500)}}),c.setButtons(a)}),!1}$(document).ready(function(){$("#wrap_fieldgroup_fields p.description a").click(TemplateFieldAddDialog)}); \ No newline at end of file +function TemplateFieldAddDialog(){var b=$(this);var a=false;var c=pwModalWindow(b.attr("href"),{},"large");c.load(function(){var e;var d=[];var f=c.contents();var g=0;f.find("#breadcrumbs ul.nav, #Inputfield_submit_save_field_copy").hide();f.find("#content form button.ui-button[type=submit]").each(function(){var k=$(this).text();var j=false;e=$(this);for(var h=0;h").val(j).text(f.find("#Inputfield_name").val()));$('#fieldgroup_fields option[value="'+j+'"]').attr("id","asm0option"+i).attr("data-desc",(f.find("#field_label").val())).attr("data-status",(f.find("#Inputfield_type option:selected").text()));$("#asmSelect0 option").eq(1).before($("").val(j).text(f.find("#Inputfield_name").val()));$("#asmSelect0").find("option:selected").removeAttr("selected");$('#asmSelect0 option[value="'+j+'"]').attr("rel","asm0option"+i).attr("selected","selected").addClass("asmOptionDisabled").attr("disabled","disabled").trigger("change").removeAttr("selected")},500)}}}c.setButtons(d)});return false}$(document).ready(function(){$("#wrap_fieldgroup_fields p.description a").click(TemplateFieldAddDialog)}); \ No newline at end of file