Как добавить пользовательскую кнопку на панель инструментов, которая вызывает функцию JavaScript?
Я хотел бы добавить кнопку на панель инструментов, которая вызывает функцию JavaScript, например Tada()
?
Любые идеи о том, как добавить это?
Ответы
Ответ 1
Я занимаюсь разработкой ряда пользовательских плагинов для CKEditor, и вот мой пакет выживания закладок:
- fooobar.com/questions/90876/... (Tim Down уже упомянул об этом)
- A количество готовых плагинов для FCK и CKEditor, которые могут улучшить одно понимание системы.
- Блог AlfonsoML, один из разработчиков, там много ценных вещей, например. Локализация плагинов в CKEditor
- Взаимодействие между диалоговыми кнопками и диалоговым окном IFrame, при этом вход от Гарри Яо, одного из разработчиков
- forums не так плохи, как они выглядят, там есть некоторые скрытые камни. Убедитесь, что вы ищете там, ну, если не первый, то по крайней мере второй или третий.
Для вашей цели я бы рекомендовал посмотреть один из плагинов в каталоге _source/plugins
, например кнопку "print". Добавление простой функции Javascript довольно легко. Вы должны иметь возможность дублировать плагин печати (взять каталог из _source в фактический каталог plugins/, беспокоиться о миниатюре позже), переименовать его, переименовать каждое упоминание "print" внутри него, дать кнопке правильное имя, которое вы используете позже в настройке панели инструментов, чтобы включить кнопку, и добавьте свою функцию.
Ответ 2
Также есть хороший способ, позволяющий добавить кнопку без создания плагина.
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
Ответ 3
См. этот 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
});
}
});
})();
Ответ 4
В случае, если кто-то заинтересован, я написал для этого решение с использованием 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'
});
}
});
Ответ 5
Вам нужно создать плагин. Документация для CKEditor для этого очень плохая, тем более, что я считаю, что она значительно изменилась после FCKEditor. Я бы предложил скопировать существующий плагин и изучить его. Быстрый google для "CKEditor plugin" также нашел этот пост в блоге.
Ответ 6
Вы можете добавить изображение кнопки следующим образом:
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
}
});
Здесь - это настоящий плагин со всеми описанными шагами.
Ответ 7
Эта статья может быть полезна также http://mito-team.com/article/2012/collapse-button-for-ckeditor-for-drupal
Есть примеры кода и пошаговое руководство по созданию собственного плагина CKEditor с помощью настраиваемой кнопки.
Ответ 8
CKEditor 4
В официальной документации CKEditor 4 есть удобные руководства, в которых описывается создание плагина, который вставляет содержимое в редактор, регистрирует кнопку и показывает диалоговое окно:
Если вы прочтете эти два, перейдите к Интеграция плагинов с расширенным фильтром содержимого.
CKEditor 5
До сих пор существует одна доступная статья:
CKEditor 5 Framework: быстрый старт - создание простого плагина