CKEDITOR.plugins.add("variables", { init: function(editor) { console.log("variables.init") editor.addCommand("insertVariable", { allowedContent: "span[contenteditable](*)" ,requiredContent: "span[contenteditable](*)" ,exec: function (editor) { console.log("insertVariable.exec"); editor.insertElement(CKEDITOR.dom.element.createFromHtml('[ variable ]')); } }) editor.addCommand("insertVariableSelected", { allowedContent: "span[contenteditable](*)" ,requiredContent: "span[contenteditable](*)" ,exec: function(editor, id) { console.log("insertVariableSelected.exec(id: " + id + ")") editor.insertElement(CKEDITOR.dom.element.createFromHtml('[ ' + id + ' ]')); } }) editor.ui.addRichCombo("InsertVariableSelect", { label: "Variables" ,title: "Insert variable" ,multiSelect: false ,toolbar: "others" ,init: function () { console.log("InsertVariableSelect.init") var rich_combo = this rich_combo.add("foo", "foo", "foo") rich_combo.add("boo", "boo", "boo") rich_combo.add("goo", "goo", "goo") } ,onClick: function(id) { console.log("InsertVariableSelect.onClick(id: " + id + ")") editor.execCommand("insertVariable") editor.execCommand("insertVariableSelected", id) } }) } })