diff --git a/wire/modules/Inputfield/InputfieldCKEditor/InputfieldCKEditor.js b/wire/modules/Inputfield/InputfieldCKEditor/InputfieldCKEditor.js
index 9574926a..8a2e465c 100644
--- a/wire/modules/Inputfield/InputfieldCKEditor/InputfieldCKEditor.js
+++ b/wire/modules/Inputfield/InputfieldCKEditor/InputfieldCKEditor.js
@@ -269,6 +269,7 @@ function ckeInitNormal(editorID) {
var $editor = $('#' + editorID);
var $parent = $editor.parent();
+
if(typeof ProcessWire.config.InputfieldCKEditor.editors[editorID] != "undefined") {
var configName = ProcessWire.config.InputfieldCKEditor.editors[editorID];
} else {
@@ -283,9 +284,20 @@ function ckeInitNormal(editorID) {
$parent.closest('.ui-tabs, .langTabs').on('tabsactivate', ckeInitTab);
} else {
// visible CKEditor
- var editor = CKEDITOR.replace(editorID, ProcessWire.config[configName]);
- ckeInitEvents(editor);
- $editor.addClass('InputfieldCKEditorLoaded');
+ var editor;
+ if(typeof ProcessWire.config[configName] != "undefined") {
+ var editor = CKEDITOR.replace(editorID, ProcessWire.config[configName]);
+ } else if(typeof $editor.attr('data-configdata') != "undefined") {
+ // allow for alternate option of config data being passed through a data attribute
+ // useful for some dynamic/ajax situations
+ var configData = JSON.parse($editor.attr('data-configdata'));
+ ProcessWire.config[configName] = configData;
+ var editor = CKEDITOR.replace(editorID, configData);
+ }
+ if(editor) {
+ ckeInitEvents(editor);
+ $editor.addClass('InputfieldCKEditorLoaded');
+ }
}
}
diff --git a/wire/modules/Inputfield/InputfieldCKEditor/InputfieldCKEditor.min.js b/wire/modules/Inputfield/InputfieldCKEditor/InputfieldCKEditor.min.js
index e53a0e9f..704c623d 100644
--- a/wire/modules/Inputfield/InputfieldCKEditor/InputfieldCKEditor.min.js
+++ b/wire/modules/Inputfield/InputfieldCKEditor/InputfieldCKEditor.min.js
@@ -1 +1 @@
-function ckeGetProcessWireConfig(c){var e=typeof c=="string"?c:c.name;var d=e.replace("Inputfield_","InputfieldCKEditor_");var a="";var b={};d=d.replace("Inputfield_","InputfieldCKEditor_");if(typeof ProcessWire.config[d]=="undefined"&&d.indexOf("_repeater")>0){d=d.replace(/_repeater[0-9]+/,"");a=$("#"+e).closest(".InputfieldRepeaterItem")}if(typeof ProcessWire.config[d]=="undefined"&&d.indexOf("_ckeditor")>0){d=d.replace(/_ckeditor$/,"")}if(typeof ProcessWire.config[d]=="undefined"&&d.indexOf("__")>0){d=d.replace(/__\d+$/,"")}if(typeof ProcessWire.config[d]=="undefined"){b.error="Cannot find CKEditor settings for "+d}else{b=ProcessWire.config[d]}if(a.length){b.repeaterItem=a}else{b.repeaterItem=""}return b}function ckeLoadPlugins(){for(var a in ProcessWire.config.InputfieldCKEditor.plugins){var b=ProcessWire.config.InputfieldCKEditor.plugins[a];CKEDITOR.plugins.addExternal(a,b,"")}}ckeLoadPlugins();function ckeBlurEvent(b){var a=b.editor;var c=$(a.element.$);if(a.checkDirty()){if(c.length){if(c.is("textarea")){c.change()}c.closest(".Inputfield").addClass("InputfieldStateChanged")}}}function ckeFocusEvent(b){var a=b.editor;var c=$(a.element.$);c.trigger("pw-focus")}function ckeResizeEvent(b){var a=b.editor;var c=$(a.element.$);if(c.length){c.closest(".Inputfield").trigger("heightChanged")}}function ckeUploadEvent(e){var g=e.data.fileLoader.xhr;var b=e.data.fileLoader;var d=ckeGetProcessWireConfig(e.editor);var c=d?d.pwUploadField:"_unknown";var f=$("#Inputfield_"+c);if(typeof d.repeaterItem!="undefined"&&d.repeaterItem.length){var a=d.repeaterItem.find(".InputfieldImage:not(.InputfieldFileSingle)");if(a.length){f=a}}if(f.length){g.open("POST",b.uploadUrl,true);f.trigger("pwimageupload",{name:b.fileName,file:b.file,xhr:g});e.stop()}else{if(typeof d.error!="undefined"&&d.error.length){ProcessWire.alert(d.error)}else{ProcessWire.alert("Unable to find images field for upload")}e.stop();return false}}function ckeInitEvents(b){b.on("blur",ckeBlurEvent);b.on("focus",ckeFocusEvent);b.on("change",ckeBlurEvent);b.on("resize",ckeResizeEvent);b.on("fileUploadRequest",ckeUploadEvent,null,null,4);var c=$(b.element.$);var a=c.closest(".Inputfield.InputfieldColumnWidth");if(a.length){setTimeout(function(){a.trigger("heightChanged")},1000)}}function ckeSaveReadyInline(b){if(!b.length){return}var a=b.hasClass(".InputfieldCKEditorInline")?b:b.find(".InputfieldCKEditorInline");if(a.length){a.each(function(){var f=$(this);var d;if(f.hasClass("InputfieldCKEditorLoaded")){var c=CKEDITOR.instances[f.attr("id")];if(typeof c!="undefined"){if(c.focusManager.hasFocus){c.focusManager.focus(true);c.focus()}d=c.getData()}}else{d=f.html()}var e=f.next("input");e.attr("value",d)})}}function ckeSaveReadyNormal(b){var a=b.hasClass("InputfieldCKEditorNormal")?b:b.find(".InputfieldCKEditorNormal");a.each(function(){var d=$(this);if(!d.hasClass("InputfieldCKEditorLoaded")){return}var c=CKEDITOR.instances[d.attr("id")];c.updateElement()})}function ckeInlineMouseoverEvent(b){var d=$(this);if(d.hasClass("InputfieldCKEditorLoaded")){return}d.effect("highlight",{},500);d.attr("contenteditable","true");var c=d.attr("data-configName");var a=CKEDITOR.inline($(this).attr("id"),ProcessWire.config[c]);ckeInitEvents(a);d.addClass("InputfieldCKEditorLoaded")}function ckeInitTab(c,e){var h=e.newTab;var d=h.find("a");if(d.hasClass("InputfieldCKEditor_init")){return}var a=d.attr("data-editorID");var g=d.attr("data-configName");var b=CKEDITOR.replace(a,config[g]);ckeInitEvents(b);d.addClass("InputfieldCKEditor_init");e.oldTab.find("a").addClass("InputfieldCKEditor_init");var f=$("#"+a);f.addClass("InputfieldCKEditorLoaded")}function ckeInitNormal(a){var f=$("#"+a);var e=f.parent();if(typeof ProcessWire.config.InputfieldCKEditor.editors[a]!="undefined"){var d=ProcessWire.config.InputfieldCKEditor.editors[a]}else{var d=f.attr("data-configName")}if(e.hasClass("ui-tabs-panel")&&e.css("display")=="none"){var g=f.parent().attr("id");var c=e.closest(".ui-tabs, .langTabs").find("a[href=#"+g+"]");c.attr("data-editorID",a).attr("data-configName",d);e.closest(".ui-tabs, .langTabs").on("tabsactivate",ckeInitTab)}else{var b=CKEDITOR.replace(a,ProcessWire.config[d]);ckeInitEvents(b);f.addClass("InputfieldCKEditorLoaded")}}$(document).ready(function(){CKEDITOR.timestamp=ProcessWire.config.InputfieldCKEditor.timestamp;for(var a in ProcessWire.config.InputfieldCKEditor.editors){ckeInitNormal(a)}$(document).on("reloaded",".InputfieldCKEditor",function(){var b=$(this).find(".InputfieldCKEditorNormal:not(.InputfieldCKEditorLoaded)");b.each(function(){ckeInitNormal($(this).attr("id"))});return false});CKEDITOR.disableAutoInline=true;$(document).on("mouseover",".InputfieldCKEditorInlineEditor",ckeInlineMouseoverEvent);$(document).on("submit","form.InputfieldForm",function(){ckeSaveReadyInline($(this))});$(document).on("saveReady",".InputfieldCKEditor",function(){ckeSaveReadyNormal($(this));ckeSaveReadyInline($(this))})});
\ No newline at end of file
+function ckeGetProcessWireConfig(editor){var editorName=typeof editor=="string"?editor:editor.name;var configName=editorName.replace("Inputfield_","InputfieldCKEditor_");var $repeaterItem="";var settings={};configName=configName.replace("Inputfield_","InputfieldCKEditor_");if(typeof ProcessWire.config[configName]=="undefined"&&configName.indexOf("_repeater")>0){configName=configName.replace(/_repeater[0-9]+/,"");$repeaterItem=$("#"+editorName).closest(".InputfieldRepeaterItem")}if(typeof ProcessWire.config[configName]=="undefined"&&configName.indexOf("_ckeditor")>0){configName=configName.replace(/_ckeditor$/,"")}if(typeof ProcessWire.config[configName]=="undefined"&&configName.indexOf("__")>0){configName=configName.replace(/__\d+$/,"")}if(typeof ProcessWire.config[configName]=="undefined"){settings.error="Cannot find CKEditor settings for "+configName}else{settings=ProcessWire.config[configName]}if($repeaterItem.length){settings["repeaterItem"]=$repeaterItem}else{settings["repeaterItem"]=""}return settings}function ckeLoadPlugins(){for(var name in ProcessWire.config.InputfieldCKEditor.plugins){var file=ProcessWire.config.InputfieldCKEditor.plugins[name];CKEDITOR.plugins.addExternal(name,file,"")}}ckeLoadPlugins();function ckeBlurEvent(event){var editor=event.editor;var $textarea=$(editor.element.$);if(editor.checkDirty()){if($textarea.length){if($textarea.is("textarea"))$textarea.change();$textarea.closest(".Inputfield").addClass("InputfieldStateChanged")}}}function ckeFocusEvent(event){var editor=event.editor;var $textarea=$(editor.element.$);$textarea.trigger("pw-focus")}function ckeResizeEvent(event){var editor=event.editor;var $textarea=$(editor.element.$);if($textarea.length){$textarea.closest(".Inputfield").trigger("heightChanged")}}function ckeUploadEvent(event){var xhr=event.data.fileLoader.xhr;var fileLoader=event.data.fileLoader;var settings=ckeGetProcessWireConfig(event.editor);var uploadFieldName=settings?settings.pwUploadField:"_unknown";var $imageInputfield=$("#Inputfield_"+uploadFieldName);if(typeof settings.repeaterItem!="undefined"&&settings.repeaterItem.length){var $repeaterImageField=settings.repeaterItem.find(".InputfieldImage:not(.InputfieldFileSingle)");if($repeaterImageField.length)$imageInputfield=$repeaterImageField}if($imageInputfield.length){xhr.open("POST",fileLoader.uploadUrl,true);$imageInputfield.trigger("pwimageupload",{name:fileLoader.fileName,file:fileLoader.file,xhr:xhr});event.stop()}else{if(typeof settings.error!="undefined"&&settings.error.length){ProcessWire.alert(settings.error)}else{ProcessWire.alert("Unable to find images field for upload")}event.stop();return false}}function ckeInitEvents(editor){editor.on("blur",ckeBlurEvent);editor.on("focus",ckeFocusEvent);editor.on("change",ckeBlurEvent);editor.on("resize",ckeResizeEvent);editor.on("fileUploadRequest",ckeUploadEvent,null,null,4);var $textarea=$(editor.element.$);var $inputfield=$textarea.closest(".Inputfield.InputfieldColumnWidth");if($inputfield.length)setTimeout(function(){$inputfield.trigger("heightChanged")},1e3)}function ckeSaveReadyInline($inputfield){if(!$inputfield.length)return;var $inlines=$inputfield.hasClass(".InputfieldCKEditorInline")?$inputfield:$inputfield.find(".InputfieldCKEditorInline");if($inlines.length)$inlines.each(function(){var $t=$(this);var value;if($t.hasClass("InputfieldCKEditorLoaded")){var editor=CKEDITOR.instances[$t.attr("id")];if(typeof editor!="undefined"){if(editor.focusManager.hasFocus){editor.focusManager.focus(true);editor.focus()}value=editor.getData()}}else{value=$t.html()}var $input=$t.next("input");$input.attr("value",value)})}function ckeSaveReadyNormal($inputfield){var $normals=$inputfield.hasClass("InputfieldCKEditorNormal")?$inputfield:$inputfield.find(".InputfieldCKEditorNormal");$normals.each(function(){var $t=$(this);if(!$t.hasClass("InputfieldCKEditorLoaded"))return;var editor=CKEDITOR.instances[$t.attr("id")];editor.updateElement()})}function ckeInlineMouseoverEvent(event){var $t=$(this);if($t.hasClass("InputfieldCKEditorLoaded"))return;$t.effect("highlight",{},500);$t.attr("contenteditable","true");var configName=$t.attr("data-configName");var editor=CKEDITOR.inline($(this).attr("id"),ProcessWire.config[configName]);ckeInitEvents(editor);$t.addClass("InputfieldCKEditorLoaded")}function ckeInitTab(event,ui){var $t=ui.newTab;var $a=$t.find("a");if($a.hasClass("InputfieldCKEditor_init"))return;var editorID=$a.attr("data-editorID");var configName=$a.attr("data-configName");var editor=CKEDITOR.replace(editorID,config[configName]);ckeInitEvents(editor);$a.addClass("InputfieldCKEditor_init");ui.oldTab.find("a").addClass("InputfieldCKEditor_init");var $editor=$("#"+editorID);$editor.addClass("InputfieldCKEditorLoaded")}function ckeInitNormal(editorID){var $editor=$("#"+editorID);var $parent=$editor.parent();if(typeof ProcessWire.config.InputfieldCKEditor.editors[editorID]!="undefined"){var configName=ProcessWire.config.InputfieldCKEditor.editors[editorID]}else{var configName=$editor.attr("data-configName")}if($parent.hasClass("ui-tabs-panel")&&$parent.css("display")=="none"){var parentID=$editor.parent().attr("id");var $a=$parent.closest(".ui-tabs, .langTabs").find("a[href=#"+parentID+"]");$a.attr("data-editorID",editorID).attr("data-configName",configName);$parent.closest(".ui-tabs, .langTabs").on("tabsactivate",ckeInitTab)}else{var editor;if(typeof ProcessWire.config[configName]!="undefined"){var editor=CKEDITOR.replace(editorID,ProcessWire.config[configName])}else if(typeof $editor.attr("data-configdata")!="undefined"){var configData=JSON.parse($editor.attr("data-configdata"));ProcessWire.config[configName]=configData;var editor=CKEDITOR.replace(editorID,configData)}if(editor){ckeInitEvents(editor);$editor.addClass("InputfieldCKEditorLoaded")}}}$(document).ready(function(){CKEDITOR.timestamp=ProcessWire.config.InputfieldCKEditor.timestamp;for(var editorID in ProcessWire.config.InputfieldCKEditor.editors){ckeInitNormal(editorID)}$(document).on("reloaded",".InputfieldCKEditor",function(){var $editor=$(this).find(".InputfieldCKEditorNormal:not(.InputfieldCKEditorLoaded)");$editor.each(function(){ckeInitNormal($(this).attr("id"))});return false});CKEDITOR.disableAutoInline=true;$(document).on("mouseover",".InputfieldCKEditorInlineEditor",ckeInlineMouseoverEvent);$(document).on("submit","form.InputfieldForm",function(){ckeSaveReadyInline($(this))});$(document).on("saveReady",".InputfieldCKEditor",function(){ckeSaveReadyNormal($(this));ckeSaveReadyInline($(this))})});
\ No newline at end of file
diff --git a/wire/modules/Inputfield/InputfieldCKEditor/InputfieldCKEditor.module b/wire/modules/Inputfield/InputfieldCKEditor/InputfieldCKEditor.module
index ce3903f5..4464bc89 100644
--- a/wire/modules/Inputfield/InputfieldCKEditor/InputfieldCKEditor.module
+++ b/wire/modules/Inputfield/InputfieldCKEditor/InputfieldCKEditor.module
@@ -514,7 +514,11 @@ class InputfieldCKEditor extends InputfieldTextarea {
//$out = parent::___render() . "";
$this->addClass('InputfieldCKEditorNormal');
$this->attr('data-configName', $this->configName);
- $out = parent::___render() . "";
+ $out = parent::___render() .
+ "";
return $out;
}