Merge pull request #6394 from colemanw/CRM-14599
[civicrm-core.git] / js / wysiwyg / crm.ckeditor.js
index 05a69d5097b490c0d192a303298a21ac857afcfa..5d418e57b39a93cb942ebf42eab332c54918e72c 100644 (file)
@@ -1,25 +1,45 @@
 // https://civicrm.org/licensing
 (function($, _) {
   function getInstance(item) {
-    var name = $(item).attr("name");
-    return CKEDITOR.instances[name];
+    var name = $(item).attr("name"),
+      id = $(item).attr("id");
+    if (name && CKEDITOR.instances[name]) {
+      return CKEDITOR.instances[name];
+    }
+    if (id && CKEDITOR.instances[id]) {
+      return CKEDITOR.instances[id];
+    }
   }
-
   CRM.wysiwyg.supportsFileUploads =  true;
-  CRM.wysiwyg.create =  function(item) {
-    //var browseUrl = CRM.config.userFrameworkResourceUrl + "packages/kcfinder/browse.php";
-    var browseUrl = CRM.config.userFrameworkResourceURL + "packages/kcfinder/browse.php";
-    var uploadUrl = CRM.config.userFrameworkResourceURL + "packages/kcfinder/upload.php";
-    var editor = CKEDITOR.replace($(item)[0]);
+  CRM.wysiwyg.create = function(item) {
+    var editor,
+      browseUrl = CRM.config.userFrameworkResourceURL + "packages/kcfinder/browse.php?cms=civicrm",
+      uploadUrl = CRM.config.userFrameworkResourceURL + "packages/kcfinder/upload.php?cms=civicrm";
+    if ($(item).length) {
+      editor = CKEDITOR.replace($(item)[0], {
+        filebrowserBrowseUrl: browseUrl + '&type=files',
+        filebrowserImageBrowseUrl: browseUrl + '&type=images',
+        filebrowserFlashBrowseUrl: browseUrl + '&type=flash',
+        filebrowserUploadUrl: uploadUrl + '&type=files',
+        filebrowserImageUploadUrl: uploadUrl + '&type=images',
+        filebrowserFlashUploadUrl: uploadUrl + '&type=flash',
+        customConfig: CRM.config.CKEditorCustomConfig
+      });
+    }
     if (editor) {
-      editor.config.filebrowserBrowseUrl = browseUrl+'?cms=civicrm&type=files';
-      editor.config.filebrowserImageBrowseUrl = browseUrl+'?cms=civicrm&type=images';
-      editor.config.filebrowserFlashBrowseUrl = browseUrl+'?cms=civicrm&type=flash';
-      editor.config.filebrowserUploadUrl = uploadUrl+'?cms=civicrm&type=files';
-      editor.config.filebrowserImageUploadUrl = uploadUrl+'?cms=civicrm&type=images';
-      editor.config.filebrowserFlashUploadUrl = uploadUrl+'?cms=civicrm&type=flash';
-      editor.on('blur', function(){
+      editor.on('focus', function() {
+        $(item).trigger('focus');
+      });
+      editor.on('blur', function() {
+        editor.updateElement();
         $(item).trigger("blur");
+        $(item).trigger("change");
+      });
+      editor.on('insertText', function() {
+        $(item).trigger("keypress");
+      });
+      editor.on('pasteState', function() {
+        $(item).trigger("paste");
       });
     }
   };
@@ -35,7 +55,7 @@
       editor.updateElement();
     }
   };
-  CRM.wysiwyg.val = function(item) {
+  CRM.wysiwyg.getVal = function(item) {
     var editor = getInstance(item);
     if (editor) {
       return editor.getData();
       return $(item).val();
     }
   };
-  CRM.wysiwyg.insertText = function(item, text) {
+  CRM.wysiwyg.setVal = function(item, val) {
+    var editor = getInstance(item);
+    if (editor) {
+      return editor.setData(val);
+    } else {
+      return $(item).val(val);
+    }
+  };
+  CRM.wysiwyg.insert = function(item, text) {
     var editor = getInstance(item);
     if (editor) {
       editor.insertText(text);
+    } else {
+      CRM.wysiwyg._insertIntoTextarea(item, text);
     }
   };
-  CRM.wysiwyg.insertHTML = function(item, html) {
+  CRM.wysiwyg.focus = function(item) {
     var editor = getInstance(item);
     if (editor) {
-      editor.insertText(html);
+      editor.focus();
+    } else {
+      $(item).focus();
     }
   };
+
 })(CRM.$, CRM._);