From: Coleman Watts Date: Sun, 18 Oct 2015 19:11:54 +0000 (-0400) Subject: CRM-17416 - Wait for wysiwyg to be ready X-Git-Url: https://vcs.fsf.org/?a=commitdiff_plain;h=c63f9bfb5fdfcc72a26de1b0841a77489e4a6e1e;p=civicrm-core.git CRM-17416 - Wait for wysiwyg to be ready --- diff --git a/ang/crmUi.js b/ang/crmUi.js index b5c76b2c3d..ed24630f39 100644 --- a/ang/crmUi.js +++ b/ang/crmUi.js @@ -394,7 +394,9 @@ } ngModel.$render = function(value) { - CRM.wysiwyg.setVal(elm, ngModel.$viewValue); + editor.done(function() { + CRM.wysiwyg.setVal(elm, ngModel.$viewValue); + }); }; } }; diff --git a/js/wysiwyg/crm.ckeditor.js b/js/wysiwyg/crm.ckeditor.js index 16ddad9916..6d6c333763 100644 --- a/js/wysiwyg/crm.ckeditor.js +++ b/js/wysiwyg/crm.ckeditor.js @@ -13,6 +13,7 @@ CRM.wysiwyg.supportsFileUploads = true; CRM.wysiwyg.create = function(item) { var editor, + deferred = $.Deferred(), browseUrl = CRM.config.userFrameworkResourceURL + "packages/kcfinder/browse.php?cms=civicrm", uploadUrl = CRM.config.userFrameworkResourceURL + "packages/kcfinder/upload.php?cms=civicrm"; if ($(item).length) { @@ -23,7 +24,12 @@ filebrowserUploadUrl: uploadUrl + '&type=files', filebrowserImageUploadUrl: uploadUrl + '&type=images', filebrowserFlashUploadUrl: uploadUrl + '&type=flash', - customConfig: CRM.config.CKEditorCustomConfig + customConfig: CRM.config.CKEditorCustomConfig, + on: { + instanceReady: function() { + deferred.resolve(); + } + } }); } if (editor) { @@ -55,7 +61,10 @@ editor.on('maximize', function (e) { $('#civicrm-menu').toggle(e.data === 2); }); + } else { + deferred.reject(); } + return deferred; }; CRM.wysiwyg.destroy = function(item) { var editor = getInstance(item); diff --git a/js/wysiwyg/crm.wysiwyg.js b/js/wysiwyg/crm.wysiwyg.js index 9be69a88f7..54c86e8145 100644 --- a/js/wysiwyg/crm.wysiwyg.js +++ b/js/wysiwyg/crm.wysiwyg.js @@ -4,7 +4,9 @@ // A wysiwyg implementation can extend this by overriding as many of these functions as needed CRM.wysiwyg = { supportsFileUploads: false, - create: _.noop, + create: function() { + return $.Deferred().resolve(); + }, destroy: _.noop, updateElement: _.noop, getVal: function(item) {