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 6164f038..c732aecd 100755
--- a/wire/modules/Process/ProcessTemplate/ProcessTemplateFieldCreator.js
+++ b/wire/modules/Process/ProcessTemplate/ProcessTemplateFieldCreator.js
@@ -2,11 +2,12 @@
function TemplateFieldAddDialog() {
var $a = $(this);
- var closeOnSave = false;
+ var fieldReady = false;
var $iframe = pwModalWindow($a.attr('href'), {}, 'large');
$iframe.load(function() {
+ var $button;
var buttons = [];
var $icontents = $iframe.contents();
var n = 0;
@@ -16,48 +17,60 @@ 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();
- 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++;
- };
+ }
$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($("").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..5f554387 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 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