-
Notifications
You must be signed in to change notification settings - Fork 67
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add new and my plugins #7
Comments
сложный вопрос думаю правельнее сделать через |
Да, это если писать свой плагин, можно взять на заметку. А из тех, которые я хочу добавить из уже разработанных, они предполагают установку путем копирования в папку plugins... видимо, просто придется обновлять ckeditor вручную... |
невижу ничего сложно list(,$footnotesUrl) = Yii::$app->assetManager->publish('@app/path/to/footnotes');
$this->registerJs("CKEDITOR.plugins.addExternal( 'footnotes', ".\yii\helpers\Json::encode($footnotesUrl).", 'plugin.js' );"); |
В общем, по разному. Через компонент запустить не получилось ... Возможно баг с $options['extraPlugins'];
<script>
CKEDITOR.replace( 'editor1', {
extraPlugins: 'magicline',
extraPlugins: 'footnotes',
extraPlugins: 'widget',
// Ensure that magicline plugin, which is required for this sample, is loaded.
allowedContent: true
} );
</script>
if($this->_inline){
$options['extraPlugins'] = 'sourcedialog';
$options['removePlugins'] = 'sourcearea';
}
кстати - на демке http://demo.gridlight-design.co.uk/ckeditor-footnotes.html тоже используется предустановленный в ckeditor.js плагин... |
Наконец дошли руки до плагинов :) Дело в том, что код $this->registerJs("CKEDITOR.plugins.addExternal( 'footnotes', ".\yii\helpers\Json::encode($footnotesUrl).", 'plugin.js' );"); только регистрирует плагин. а для того, чтобы появилась кнопка в редакторе, его необходимо инициализировать. CKEDITOR.plugins.addExternal('footnotes', $footnotesUrl);
CKEDITOR.replace('id_editor', {
// Load the footnotes plugin.
extraPlugins: 'footnotes',
}); |
На деле же данный код в комбинации с POS $this->registerJs("CKEDITOR.plugins.addExternal( 'footnotes', ".\yii\helpers\Json::encode($footnotesUrl).", 'plugin.js' );"); вызывается либо выше самого ckeditor.js, либо ниже |
В связи с чем у меня есть идея ). Когда собирал инфу по этому вопросу, находил и ваше сообщение Идея заключается в следующем 👍 Например, если я все правильно понимаю, после создания такового - EVENT_BEFORE_INITEDITOR (по минимому) отдаст мне ID редактора и его preset. Затем, как в данном плагине https://github.com/loveorigami/yii2-plugins-system/blob/master/plugins/code/Code.php в функции ShortCode я получаю эти данные, в зависимости от которых произвожу свои операции: например - для пресета mini не возвращать дополнительных настроек. А для остальных пресетов я возвращаю URL extraplagins и набор самих extra ск-плагинов (abbr, footnotes etc.) Вы же, получив эти данные, формируете окончательные настройки инициализации редактора, подключив вверху сначала extra-плагины, а потом вызвав их в самом Пока что в ручном режиме у меня получилось сделать так. Во вьюшке создал textarea id="editor" Код моего плагина class Test
{
/**
* Application id, where plugin will be worked.
* Support values: frontend, backend, common
* Default: frontend
* @var appId string
*/
public static $appId = 'frontend';
/**
* Default configuration for plugin.
* @var config array()
*/
public static $config = [
'mode' => 'full',
];
public static function events()
{
return [
'yii\base\View' => [
'afterRender' => ['foo', self::$config]
],
];
}
/**
* handler method foo
*/
public function foo($event)
{
$view = $event->sender;
$bundle = TestAsset::register($view);
$view->registerJs("
if(typeof CKEDITOR != 'undefined'){
CKEDITOR.plugins.addExternal('footnotes', '$bundle->baseUrl/footnotes/');
CKEDITOR.replace('editor', {
//language: 'ru',
uiColor: '#9AB8F3',
// Load the footnotes plugin.
extraPlugins: 'footnotes',
// Disable Advanced Content Filter as the plugin does not implement it (yet).
allowedContent: true,
// The following options are set to make the sample more clear for demonstration purposes.
// Rearrange toolbar groups and remove unnecessary plugins.
toolbarGroups: [
{ name: 'clipboard', groups: [ 'clipboard', 'undo' ] },
{ name: 'links' },
{ name: 'insert' },
{ name: 'document', groups: [ 'mode' ] },
'/',
{ name: 'basicstyles', groups: [ 'basicstyles', 'cleanup' ] },
{ name: 'paragraph', groups: [ 'list', 'indent' ] },
{ name: 'styles' },
{ name: 'about' }
],
removePlugins: 'font,iframe,pagebreak,flash,stylescombo,print,preview,save,smiley,pastetext,pastefromword',
removeButtons: 'Anchor,Font,Strike,Subscript,Superscript'
});
}
", $view::POS_END);
return true;
}
} |
Т.е задача сводится к тому, как можно извне повлиять на настройки редактора. |
Я поддержу предыдущего оратора :) Проблема имеет место быть: код в странице есть: юрл плагина валиден, но эффекта нет.... получаю ошибку js: элемент уже назначен, ну или как-то так... П.С. если прописываю в @app/vendor/mihaildev/yii2-ckeditor/editor/config.js: все работает!.. но это же не правильно править вендоровские файлы :) |
Я. чтоб не править, сделал форк, добавил Asset с плагинами. А потом нужные плагины добавил перед инициализацией редактора. И где нужно, прописал в пресеты После этого все заработало, как и хотелось выше ). |
https://github.com/sadovojav/yii2-ckeditor eto fork MihailDev/yii2-ckeditor s dobavkami kak plugin i t.d |
Михаил, подскажите, как я могу добавить новые (или свои) плагины в редактор.
http://ckeditor.com/addons/plugins/all
Думаю так:
The text was updated successfully, but these errors were encountered: