-
Notifications
You must be signed in to change notification settings - Fork 13
/
plugin.js
76 lines (69 loc) · 2.24 KB
/
plugin.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
/**
* A plugin to enable placeholder tokens to be inserted into the CKEditor message. Use on its own or with teh placeholder plugin.
* The default format is compatible with the placeholders syntex
*
* @version 0.1
* @Author Troy Lutton
* @license MIT
*
* This is a pure modification for the placeholders plugin. All credit goes to Stuart Sillitoe for creating the original (stuartsillitoe.co.uk)
*
*/
CKEDITOR.plugins.add("placeholder_select", {
lang: ["en", "de", "el"],
requires: ["richcombo"],
init: function (editor) {
// array of placeholders to choose from that'll be inserted into the editor
var placeholders = [];
// init the default config - empty placeholders
var defaultConfig = {
format: "[[%placeholder%]]",
placeholders: [],
};
// merge defaults with the passed in items
var config = CKEDITOR.tools.extend(
defaultConfig,
editor.config.placeholder_select || {},
true
);
// run through an create the set of items to use
for (var i = 0; i < config.placeholders.length; i++) {
// get our potentially custom placeholder format
var placeholder = config.format.replace(
"%placeholder%",
config.placeholders[i]
);
placeholders.push([
placeholder,
config.placeholders[i],
config.placeholders[i],
]);
}
// add the menu to the editor
editor.ui.addRichCombo("placeholder_select", {
label: editor.lang.placeholder_select.dropdown_label,
title: editor.lang.placeholder_select.dropdown_title,
voiceLabel: editor.lang.placeholder_select.dropdown_voiceLabel,
className: "cke_format",
multiSelect: false,
panel: {
css: [CKEDITOR.skin.getPath("editor")].concat(
editor.config.contentsCss
),
voiceLabel: editor.lang.placeholder_select.panelVoiceLabel,
},
init: function () {
this.startGroup(this.label);
for (var i in placeholders) {
this.add(placeholders[i][0], placeholders[i][1], placeholders[i][2]);
}
},
onClick: function (value) {
editor.focus();
editor.fire("saveSnapshot");
editor.insertHtml(value);
editor.fire("saveSnapshot");
},
});
},
});