CRM-17416 - Wait for wysiwyg to be ready
authorColeman Watts <coleman@civicrm.org>
Sun, 18 Oct 2015 19:11:54 +0000 (15:11 -0400)
committerColeman Watts <coleman@civicrm.org>
Sun, 18 Oct 2015 19:11:54 +0000 (15:11 -0400)
ang/crmUi.js
js/wysiwyg/crm.ckeditor.js
js/wysiwyg/crm.wysiwyg.js

index b5c76b2c3de065a3c4d3e33ac79a13daeb58a1bb..ed24630f391980df9672bbfe209a19bf3c19bfc0 100644 (file)
           }
 
           ngModel.$render = function(value) {
-            CRM.wysiwyg.setVal(elm, ngModel.$viewValue);
+            editor.done(function() {
+              CRM.wysiwyg.setVal(elm, ngModel.$viewValue);
+            });
           };
         }
       };
index 16ddad99162fb5516b81effc554eb3d693d08fc4..6d6c3337632c92503ee595df9e6b8a937a32c5ea 100644 (file)
@@ -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) {
         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) {
       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);
index 9be69a88f7a5707d8237918582af9d4760fb61ec..54c86e81454c1e0a633413fcf5931f8ac6ba7278 100644 (file)
@@ -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) {