Я хотел бы добавить кнопку на панель инструментов, которая вызывает функцию JavaScript, например Tada()
?
Любые идеи о том, как добавить это?
Я хотел бы добавить кнопку на панель инструментов, которая вызывает функцию JavaScript, например Tada()
?
Любые идеи о том, как добавить это?
Я занимаюсь разработкой ряда пользовательских плагинов для CKEditor, и вот мой пакет выживания закладок:
Для вашей цели я бы рекомендовал посмотреть один из плагинов в каталоге _source/plugins
, например кнопку "print". Добавление простой функции Javascript довольно легко. Вы должны иметь возможность дублировать плагин печати (взять каталог из _source в фактический каталог plugins/, беспокоиться о миниатюре позже), переименовать его, переименовать каждое упоминание "print" внутри него, дать кнопке правильное имя, которое вы используете позже в настройке панели инструментов, чтобы включить кнопку, и добавьте свою функцию.
Также есть хороший способ, позволяющий добавить кнопку без создания плагина.
HTML:
<textarea id="container">How are you!</textarea>
JavaScript:
editor = CKEDITOR.replace('container'); // bind editor
editor.addCommand("mySimpleCommand", { // create named command
exec: function(edt) {
alert(edt.getData());
}
});
editor.ui.addButton('SuperButton', { // add new button and bind our command
label: "Click me",
command: 'mySimpleCommand',
toolbar: 'insert',
icon: 'https://avatars1.githubusercontent.com/u/5500999?v=2&s=16'
});
Посмотрите, как он работает здесь: DEMO
См. этот URL-адрес для простого примера http://ajithmanmadhan.wordpress.com/2009/12/16/customizing-ckeditor-and-adding-a-new-toolbar-button/
Есть несколько шагов:
1) создать папку плагинов
2) зарегистрируйте свой плагин (URL-адрес выше, чтобы отредактировать файл ckeditor.js. НЕ делайте этого, так как он будет разорваться в следующий раз, когда будет обновлена новая версия. Вместо этого отредактируйте файл config.js и добавьте такую строку
config.extraPlugins = 'pluginX,pluginY,yourPluginNameHere';
3) создайте файл JS с именем plugin.js внутри вашей папки плагина Вот мой код
(function() {
//Section 1 : Code to execute when the toolbar button is pressed
var a = {
exec: function(editor) {
var theSelectedText = editor.getSelection().getNative();
alert(theSelectedText);
}
},
//Section 2 : Create the button and add the functionality to it
b='addTags';
CKEDITOR.plugins.add(b, {
init: function(editor) {
editor.addCommand(b, a);
editor.ui.addButton("addTags", {
label: 'Add Tag',
icon: this.path+"addTag.gif",
command: b
});
}
});
})();
В случае, если кто-то заинтересован, я написал для этого решение с использованием Prototype. Чтобы кнопка отображалась правильно, мне пришлось указать extraPlugins: 'ajaxsave'
из вызова метода CKEDITOR.replace()
.
Вот плагин .js:
CKEDITOR.plugins.add('ajaxsave',
{
init: function(editor)
{
var pluginName = 'ajaxsave';
editor.addCommand( pluginName,
{
exec : function( editor )
{
new Ajax.Request('ajaxsave.php',
{
method: "POST",
parameters: { filename: 'index.html', editor: editor.getData() },
onFailure: function() { ThrowError("Error: The server has returned an unknown error"); },
on0: function() { ThrowError('Error: The server is not responding. Please try again.'); },
onSuccess: function(transport) {
var resp = transport.responseText;
//Successful processing by ckprocess.php should return simply 'OK'.
if(resp == "OK") {
//This is a custom function I wrote to display messages. Nicer than alert()
ShowPageMessage('Changes have been saved successfully!');
} else {
ShowPageMessage(resp,'10');
}
}
});
},
canUndo : true
});
editor.ui.addButton('ajaxsave',
{
label: 'Save',
command: pluginName,
className : 'cke_button_save'
});
}
});
Вам нужно создать плагин. Документация для CKEditor для этого очень плохая, тем более, что я считаю, что она значительно изменилась после FCKEditor. Я бы предложил скопировать существующий плагин и изучить его. Быстрый google для "CKEditor plugin" также нашел этот пост в блоге.
Вы можете добавить изображение кнопки следующим образом:
CKEDITOR.plugins.add('showtime', //name of our plugin
{
requires: ['dialog'], //requires a dialog window
init:function(a) {
var b="showtime";
var c=a.addCommand(b,new CKEDITOR.dialogCommand(b));
c.modes={wysiwyg:1,source:1}; //Enable our plugin in both modes
c.canUndo=true;
//add new button to the editor
a.ui.addButton("showtime",
{
label:'Show current time',
command:b,
icon:this.path+"showtime.png" //path of the icon
});
CKEDITOR.dialog.add(b,this.path+"dialogs/ab.js") //path of our dialog file
}
});
Здесь - это настоящий плагин со всеми описанными шагами.
Эта статья может быть полезна также http://mito-team.com/article/2012/collapse-button-for-ckeditor-for-drupal
Есть примеры кода и пошаговое руководство по созданию собственного плагина CKEditor с помощью настраиваемой кнопки.
В официальной документации CKEditor 4 есть удобные руководства, в которых описывается создание плагина, который вставляет содержимое в редактор, регистрирует кнопку и показывает диалоговое окно:
Если вы прочтете эти два, перейдите к Интеграция плагинов с расширенным фильтром содержимого.
До сих пор существует одна доступная статья:
CKEditor 5 Framework: быстрый старт - создание простого плагина