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
Убрать код редакторов из состава модуля yupe #1632
Comments
Поддерживаю. |
Возможно могут возникнуть проблемы с настройкой редакторов. Плагины и настройки обычно лежат в папках с ними. Надо проверить для начала можно ли для каждого из редакторов переопределить путь к конфигу и путь к плагинам. |
Вообще, сейчас на выбор доступно три редактора, но два из них (ckeditor и markitup) не могут загружать изображения и файлы через себя, а для imperavi redactor это достигнуто путем костылей https://github.com/yupe/yupe/blob/0.8/protected/modules/yupe/components/WebModule.php#L1031-L1045 . В итоге благодаря такой "свободе" выбора возможность настройки для интеграции с системой очень низкие. |
👍 за выпил остальных и фокусе на redactor'e. |
@yupe был бы с радостью "за", если бы сам не использовал ckeditor :) Сейчас так, навскидку, сложно вспомнить его ключевые преимущества перед остальными. Вспоминается только возможность просмотреть загруженные файлы, более удобное создание таблиц (сейчас посмотрел как это в redactor - менеджерам будет сложно понять :) ). Но бывали ситуации, когда нужно было использовать именно его, взамен redactor'у, из-за каких-то фич. Даже бывали случаи, когда в одном модуле надо было использовать 1 редактор, в другом модуле - другой. Но это уже скорей костыли, чтобы не запариваться с подменой конфигов для каждого модуля был выбран такой путь. Объективно:
Что делать? В качестве компромисса, если уж совсем-совсем не хочется их поддерживать, можно сделать инструкцию как подключить и использовать оные и выпилить :) P.S. Вспомнил, что к ckeditor есть хороший репозиторий модулей, для redactor не нашёл такого. Для ckeditor можно без проблем подключить, например, Яндекс.Спеллер, для redactor'а такого не находил. |
@chemezov, а кто спорил, что ckeditor не умеет вставлять файлики в принципе? проблема в том, что он не умеет этого делать в юпи. |
@DarkCs ну поэтому я и сделал акцент на том, что подключить ckfinder - задача пары минут :) |
но ведь ckfinder платный |
есть бесплатная версия, там всего лишь надпись показывается. Кроме того, есть компании, покупающие OEM лицензии. Думаю есть такие, которые покупают его для каждого проекта. Это не важно, главное что есть функционал такой же и даже больше. |
ну, я не то чтобы фанат лицензионных соглашений, если бы это было для личных целей, я бы наверно и пользовался демкой, но как-то делать нечто фундаментальное на триалке, по-моему не очень правильно. или надо придумывать еще что-то для прозрачного добавления новых редакторов и взаимодействия системы с ними. |
ну триал чаще всего подразумевает под собой ограниченный период, тут - другое дело.
|
Может быть сделать примерно как сейчас, сделать некий класс-прослойку между модулем yupe и виджетами, сейчас в папке editor лежать сразу готовые виджеты, а будут классы, которые возвращают, грубо говоря, путь до настоящего класса виджета и массив его настроек. // вот эти файлики лежать в папке editors и по их именам они привязываются к модулям
class RedactorWidget implements YupeEditorWidget
{
public function getWidgetClass()
{
return 'vendor.yiiext.imperavi-redactor-widget.ImperaviRedactorWidget';
}
public function getWidgetOptions()
{
return array(
'imageUpload' => Yii::app()->createUrl('/image/imageBackend/AjaxImageUpload'),
'fileUpload' => Yii::app()->createUrl('/yupe/backend/AjaxFileUpload'),
'imageGetJson' => Yii::app()->createUrl('/image/imageBackend/AjaxImageChoose'),
'fileUploadErrorCallback' => 'js:function (data) {
$(\'#notifications\').notify({
message: {text: data.error},
type: \'danger\',
fadeOut: {delay: 5000}
}).show();
}'
);
}
}
// $this->module->getEditor() - возвращает экземпляр класса, реализующего YupeEditorWidget
$this->widget(
$this->module->getEditor()->getWidgetClass(),
[
'model' => $model,
'attribute' => 'text',
'options' => $this->module->getEditor()->getWidgetOptions(),
]
); Хотя в такой схеме тоже не все гладко, например, сама структура настроек у виджета может быть другой, как это можно предусмотреть? |
Реализовал некую базовую логику, воплощающую идею выше, все изменения тут https://github.com/DarkCs/yupe/tree/redactor
return array(
'module' => array(
'visualEditors' => [
'redactor2' => [
'class' => 'yupe\widgets\editors\RedactorEditor2',
],
]
)
);
Думаю, что так же без особых проблем можно добавить другие редакторы. Идеи, замечания, предложения? redactor: https://github.com/DarkCs/yupe/blob/redactor/protected/modules/yupe/widgets/editors/Redactor.php В итоге виджет вызывается на странице таким образом: $this->widget(
$this->module->getVisualEditor(),
array(
'model' => $model,
'attribute' => 'body',
)
); ?> |
@DarkCs мы отказались от префиксов в пользу пространств имен, думаю можно назвать просто |
@mikspark я там все переосмыслил и удалил вообще этот интерфейс, комментарий обновил |
@DarkCs когда я говорил про кастомизацию, я имел ввиду, можно ли поменять расположение плагинов для этих редакторов. У ckeditor все плагины, допустим, лежат в папке с ним. Что делать если я хочу закинуть туда ещё какой-нибудь? Из-за того что композер, мы не можем лезть в папку со скриптами, значит нужно складывать плагины где-то отдельно, а к редактору подключать их через наш виджет. |
я не знаком с ckeditor, но думаю, что вовсе необязательно хранить плагины в строго определенной директории. Вот я наблюдаю в его опциях |
Я так понимаю, что тикет можно закрыть? |
@DarkCs спсб! |
@DarkCs Да, а для redactor, насколько я помню, в любом случае при подключении плагина нужно передавать название файла, по идее можно и передавать полный путь. Тогда всё должно быть окей. |
Предлагаю удалить https://github.com/yupe/yupe/tree/0.8/protected/modules/yupe/widgets/editors и использовать версии из composer.
The text was updated successfully, but these errors were encountered: