1 // https://civicrm.org/licensing
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
];
9 if (id
&& CKEDITOR
.instances
[id
]) {
10 return CKEDITOR
.instances
[id
];
13 CRM
.wysiwyg
.supportsFileUploads
= true;
14 CRM
.wysiwyg
.create = function(item
) {
16 browseUrl
= CRM
.config
.userFrameworkResourceURL
+ "packages/kcfinder/browse.php?cms=civicrm",
17 uploadUrl
= CRM
.config
.userFrameworkResourceURL
+ "packages/kcfinder/upload.php?cms=civicrm";
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
30 editor
.on('focus', function() {
31 $(item
).trigger('focus');
33 editor
.on('blur', function() {
34 editor
.updateElement();
35 $(item
).trigger("blur");
36 $(item
).trigger("change");
38 editor
.on('insertText', function() {
39 $(item
).trigger("keypress");
42 _
.each(['key', 'pasteState'], function(evName
) {
43 editor
.on(evName
, function(evt
) {
44 if (debounce
) clearTimeout(debounce
);
45 debounce
= setTimeout(function() {
46 editor
.updateElement();
47 $(item
).trigger("change");
51 editor
.on('pasteState', function() {
52 $(item
).trigger("paste");
54 // Hide CiviCRM menubar when editor is fullscreen
55 editor
.on('maximize', function (e
) {
56 $('#civicrm-menu').toggle(e
.data
=== 2);
60 CRM
.wysiwyg
.destroy = function(item
) {
61 var editor
= getInstance(item
);
66 CRM
.wysiwyg
.updateElement = function(item
) {
67 var editor
= getInstance(item
);
69 editor
.updateElement();
72 CRM
.wysiwyg
.getVal = function(item
) {
73 var editor
= getInstance(item
);
75 return editor
.getData();
80 CRM
.wysiwyg
.setVal = function(item
, val
) {
81 var editor
= getInstance(item
);
83 return editor
.setData(val
);
85 return $(item
).val(val
);
88 CRM
.wysiwyg
.insert = function(item
, text
) {
89 var editor
= getInstance(item
);
91 editor
.insertText(text
);
93 CRM
.wysiwyg
._insertIntoTextarea(item
, text
);
96 CRM
.wysiwyg
.focus = function(item
) {
97 var editor
= getInstance(item
);