Merge remote-tracking branch 'upstream/4.6' into 4.6-master-2015-07-30-23-34-40
[civicrm-core.git] / js / wysiwyg / crm.ckeditor.js
1 // https://civicrm.org/licensing
2 (function($, _) {
3 function getInstance(item) {
4 var name = $(item).attr("name"),
5 id = $(item).attr("id");
6 if (name && CKEDITOR.instances[name]) {
7 return CKEDITOR.instances[name];
8 }
9 if (id && CKEDITOR.instances[id]) {
10 return CKEDITOR.instances[id];
11 }
12 }
13 CRM.wysiwyg.supportsFileUploads = true;
14 CRM.wysiwyg.create = function(item) {
15 var editor,
16 browseUrl = CRM.config.userFrameworkResourceURL + "packages/kcfinder/browse.php?cms=civicrm",
17 uploadUrl = CRM.config.userFrameworkResourceURL + "packages/kcfinder/upload.php?cms=civicrm";
18 if ($(item).length) {
19 editor = CKEDITOR.replace($(item)[0], {
20 filebrowserBrowseUrl: browseUrl + '&type=files',
21 filebrowserImageBrowseUrl: browseUrl + '&type=images',
22 filebrowserFlashBrowseUrl: browseUrl + '&type=flash',
23 filebrowserUploadUrl: uploadUrl + '&type=files',
24 filebrowserImageUploadUrl: uploadUrl + '&type=images',
25 filebrowserFlashUploadUrl: uploadUrl + '&type=flash',
26 customConfig: CRM.config.CKEditorCustomConfig
27 });
28 }
29 if (editor) {
30 editor.on('focus', function() {
31 $(item).trigger('focus');
32 });
33 editor.on('blur', function() {
34 editor.updateElement();
35 $(item).trigger("blur");
36 $(item).trigger("change");
37 });
38 editor.on('insertText', function() {
39 $(item).trigger("keypress");
40 });
41 editor.on('pasteState', function() {
42 $(item).trigger("paste");
43 });
44 }
45 };
46 CRM.wysiwyg.destroy = function(item) {
47 var editor = getInstance(item);
48 if (editor) {
49 editor.destroy();
50 }
51 };
52 CRM.wysiwyg.updateElement = function(item) {
53 var editor = getInstance(item);
54 if (editor) {
55 editor.updateElement();
56 }
57 };
58 CRM.wysiwyg.getVal = function(item) {
59 var editor = getInstance(item);
60 if (editor) {
61 return editor.getData();
62 } else {
63 return $(item).val();
64 }
65 };
66 CRM.wysiwyg.setVal = function(item, val) {
67 var editor = getInstance(item);
68 if (editor) {
69 return editor.setData(val);
70 } else {
71 return $(item).val(val);
72 }
73 };
74 CRM.wysiwyg.insert = function(item, text) {
75 var editor = getInstance(item);
76 if (editor) {
77 editor.insertText(text);
78 } else {
79 CRM.wysiwyg._insertIntoTextarea(item, text);
80 }
81 };
82 CRM.wysiwyg.focus = function(item) {
83 var editor = getInstance(item);
84 if (editor) {
85 editor.focus();
86 } else {
87 $(item).focus();
88 }
89 };
90
91 })(CRM.$, CRM._);