Визуальный редактор для JohnCMS 7.x

2.2K
.
Fublin
тода визуальный ридактор прикрути в шестерке
Ну я пока занимаюсь другими задачами, не исключено что Макс и под шестую версию его запилит.
случайно зайдешь в какие нить танки или еще какую игру
У меня с играми отношения не сложились, так что это мне не грозит.
.
╭∩╮ (`-`) ╭∩╮
WysiBB практически заброшен, больше года в репозитории не было сколько нибудь значащих комитов.
И на маленьких экранах вид ужасен. Я еще на заре этого редактора строил на него планы, хотел было внедрить, но потом отказался. Теоретически (как у них на скриншотах) вид с телефонов должен быть вертикальным на весь экран. Но практически такого нет, ну или надо принудительно растягивать поле ввода на всю высоту, что далеко не всегда допустимо.
.
╭∩╮ (`-`) ╭∩╮
# Delphinum (28.01.2017 / 19:48)
Jesk, ну вот. Он еще хочет через этот редактор напрямую грузить файлы с компа
Ну это самая болючая часть любого редактора (читай платный плагин).
Раздобыть разумеется можно, но вот встраивать в оф. версию нельзя, ибо варез.
.
# AlkatraZ (28.01.2017 / 21:42)
Ну это самая болючая часть любого редактора (читай платный плагин).
Раздобыть разумеется можно, но вот встраивать в оф. версию нельзя, ибо варез.
дык договорись что будет ссылка на сает источниг, кто захочит поставить себе тока со ссылкой а другие пусть пользуют старые бб коды
.
Fublin, ну так если грузить не надо и достаточно ссылки на источник, то уже дали код выше:
<script type="text/javascript" src="http://js.nicedit.com/nicEdit-latest.js"></script> <script type="text/javascript">
    //<![CDATA[
            bkLib.onDomLoaded(function() { nicEditors.allTextAreas() });
      //]]>
      </script>
.
# AlkatraZ (28.01.2017 / 21:42)
Ну это самая болючая часть любого редактора (читай платный плагин).
Раздобыть разумеется можно, но вот встраивать в оф. версию нельзя, ибо варез.
неправда.
это фигня полная, и легко реализуется.
всего лишь загрузчик и вставка хтмлкода в редактируемую область, даже галлерея это ни разу не проблема, всего лишь кусок js и небольшой пхп скрипт отдающий массив доступных файлов.
фигня делов, меньше чем на день.
было бы желание.
з.ы. я еще раз повторяю
в скедиторе есть загрузчик во вставке картинок, он просто отключен и скрыт
.
¯\_(ツ)_/¯
Надо бы что бы сверху все было. И все коды.
.
AlkatraZ
╭∩╮ (`-`) ╭∩╮
Сейчас напишу несколько постов-инструкций. На примете ЭТОГО дополнения как раз есть возможность рассказать про правильное использование DI контейнера, раз уж он у нас есть, то логично юзать его по полной.

В начале (забыл выше это сделать) хочу поздравить первооткрывателя Simba с написанием первого дополнения к JohnCMS 7. Первый - всегда таковым останется, сколько бы потом модулей не было написано
С почином!

Ну и далее, пойдет критика с инструкциями "как правильно делать"...
Главный недостаток данного дополнения в том, что он перезаписывает системный файл и Вы теряете совместимость с последующими обновлениями.
НО,
При правильном использовании DI контейнера есть отличная возможность этого избежать. В оригинальном двиге не меняется НИЧЕГО!!!
Это же не старый Джон, где все было "захардкожено", тут имеются весомые предпосылки к гибкости системы.
Сейчас расскажу как быть...
.
AlkatraZ
╭∩╮ (`-`) ╭∩╮
В начале про сам класс BBcode.
==========
Его трогать нельзя, это система, которая в последствии будет обновляться и дорабатываться.
Но как быть, если не устраивает функционал?
Элементарно - пишете свой класс, который наследует оригинальный BBcode. Пусть это будет MyBBcode::class
Далее, в своем классе вы переназначаете те методы, работу которых хотите изменить и возможно добавляете свои.
Иными словами: сохраняя интерфейс оригинального класса, вы изменяете, или дополняете его функционал.
Полиморфизм йопта

Но как быть дальше?
Система то знает про основной класс Bbcode и ничего не знает про мой MyBBcode
Как заставить ее вместо Bbcode использовать MyBBcode (который как мы знаем наследует основной Bbcode)?
При использовании DI это очень легко.
Глянем сюда: https://github.com/john-cms/jo ... p#L10
Это конфигурационный файл DI контейнера, гдле прописаны все глобавльные зависимости.
В указанной строке мы видим, что ключу 'bbcode' соответствует класс Johncms\Bbcode::class

Как вы уже правильно догадлались, нам достаточно переписать всего лишь эту одну строку и вместо Johncms\Bbcode::class указать наш класс MyBBcode::class (ну разумеется с его неймспейсом).

Однако и тут можно все улучшить.
Файл /system/config/dependencies.global.php является системным и при последующих обновлениях может меняться.
Как быть?
Все очень просто, для нашего модуля мы пишем СВОЙ конфигурационный файл.
Однако вместо xxx.global.php
мы его называем к примеру
mybbcode.local.php

Дело в том, что файлы .local считываются ПОСЛЕ .global и переписывают предыдущие значения.
В нашем случае нам надо переписать ключ зависимостей 'bbcode' что мы в нашем файле mybbcode.local.php и делаем:
return [
    'dependencies' => [
        'factories' => [
            'bbcode' => Johncms\MyBbcode::class,
        ],
    ],
];

Ну и напоследок кидаем наш конфигурационный файл mybbcode.local.php в каталог /system/config
Файл автоматически подключится к общей конфигурации.
.
╭∩╮ (`-`) ╭∩╮
И на этом все. Новый функционал работает, оригинальная система не затронута.
Если потом захотите вернуть оригинальный функционал, достаточно просто удалить .local корнфигурационный файл этого дополнения.
Прикрепленные файлы:
Всего: 53