Как добавить пользовательскую кнопку на панель инструментов, которая вызывает функцию JavaScript?
Я хотел бы добавить кнопку на панель инструментов, которая вызывает функцию JavaScript, например Tada()
?
есть идеи, как это добавить?
9 ответов:
Я нахожусь в процессе разработки ряда пользовательских плагинов для CKEditor и вот мой пакет выживания закладок:
- сообщение StackOverflow, связанное с учебником плагинов и говорящее о нем, которое заставило меня начать (Тим уже упоминал об этом)
- A количество готовых плагинов для FCK и CKEditor это может улучшить понимание системы
- блог AlfonsoML, одно из разработчики, там много ценных вещей, например локализация плагина в CKEditor
- взаимодействие между диалоговыми кнопками и диалогом IFrame, С вводом от Гарри Яо, одного из разработчиков
- The форумы не так плохи, как они выглядят, есть некоторые скрытые драгоценные камни там. Обязательно поищите там, ну если не первое, то хотя бы второе или третье.
для вашей цели, я бы рекомендовал посмотреть на один из плагинов в
_source/plugins
каталог, например кнопка "Печать". Добавление простой функции 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' });
проверить, как это работает здесь: демо
смотрите этот URL для простого примера http://ajithmanmadhan.wordpress.com/2009/12/16/customizing-ckeditor-and-adding-a-new-toolbar-button/
есть несколько шагов:
1) создайте папку плагина
2) зарегистрируйте свой плагин (URL выше говорит, чтобы отредактировать ckeditor.JS-файл не делайте этого, так как он сломается в следующий раз, когда будет выпущена новая версия. Вместо этого отредактируйте конфигурацию.js и добавить строку, как так
config.extraPlugins = 'pluginX,pluginY,yourPluginNameHere';
3) сделать JS файл называется плагин.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 }); } }); })();
В случае, если кто-то заинтересован, я написал решение для этого с помощью прототипа. Для того, чтобы получить кнопку, чтобы правильно отображаться, я должен был указать
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 плагин" также найден этот блог.
вы можете добавить изображение кнопки следующим образом:
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 } });
здесь это фактический плагин со всеми описанными шагами.
CKEditor 4
в официальной документации CKEditor 4 есть удобные учебники, которые охватывают написание плагина, который вставляет контент в Редактор, регистрирует кнопку и показывает диалоговое окно:
Если Вы читаете эти два, перейдите к интеграция плагинов с расширенным содержанием Фильтр.
CKEditor 5
до сих пор есть одна вводная статья доступна:
CKEditor 5 Framework: Быстрый старт-создание простого плагина
эта статья тоже может быть полезна http://mito-team.com/article/2012/collapse-button-for-ckeditor-for-drupal
есть примеры кода и пошаговое руководство по созданию собственного плагина CKEditor с пользовательской кнопкой.
там может быть несколько плагинов, но один может использовать CSS для создания кнопки. Прежде всего нажмите на кнопку источника, упомянутую в Редакторе, затем вставьте код кнопки туда, как Я использую CSS для создания кнопки и добавил href к нему.
<p dir="ltr" style="text-align:center"><a href="https://play.google.com/store/apps/details?id=com.mobicom.mobiune&hl=en" style="background-color:#0080ff; border: none;color: white;padding: 6px 20px;text-align: center;text-decoration: none;display: inline-block;border-radius: 8px;font-size: 15px; font-weight: bold;">Open App</a></p>
Это кнопка написано Открыть приложение над ним. Вы можете изменить цвет, как я использую #0080ff (светло-голубой)