Тут хочу обобщить свое видение и идеи касательно Wiki плагина (пока общие наброски).
Во-первых, разрабатывать проще когда есть некий план / тех.задание, во-вторых, чтобы если кто-то начнет писать, то делал бы это с оглядкой на пожелания и мнения других разработчиков.
Основные требования, которые описал Владимир:
- Совместимость с модулем
page
и плагином i18n
.
- История изменений и их визуализация
- Управление доступом через систему прав
- Модерация
от себя добавлю:
- функционал истории изменений хотелось бы видеть отдельным плагином (т.к. хранение истории и визуализация изменений - это отдельный и объемный функционал)
- сделать плагин истории изменений максимально универсальным (как минимум, чтобы можно было использовать с простыми страницами, вне зависимости от парсера, а то и вообще с любым ресурсом). вызов через функции и хуки.
- без необходимости не создавать дополнительных полей в таблице cot_pages (и дургих стандартных), лучше завести отдельную таблицу, как более универсальный и гибкий вариант.
- для экономии (а мелких правок могут быть тысячи) - версии документа хранить только как последнюю версию + изменения в сравнении с предыдущей версией.
- по необходимоти промежуточные скомпилированные версии документов хранить в кеше.
Компоненты, назначение и функционал:
- Wiki-шаблонизатор. - класс который будет обрабатывать секции, ссылки, внутренние шаблоны.(что-то наподобие CoTemplate, но с учетом wiki специфики, возможно что это будет некий препроцессор, который будет генерить на выходе CoTemplate совместимый шаблон, тогда мы сильно сэкономим на реализации шаблонизатора. Вопрос в скорости.)
- Парсер-wiki разметки. Код который будет преобразовывать текстовую разметку в html код.
Пока не очень разбираюсь во внутренней кухне wiki. Возможно модуль шаблонизатора и парсера можно/надо надо будет объединить. Основные требования к ним это:
- умение обрабатывать вложенные шаблоны/конструкции
- возможность задавать правила базовой разметки в удобном виде без необходимости правки кода
- само собой кеширование
- редактор wiki разметки (например на базе markitup)
- интерграция редактора с простым загрузчиком файлов, для загрузки и сктавки в текст соответствующих ссылок на иллюстрации или документы (как пример тот же elFinder).
Вопросы:
- на сколько стоит придерживаться правил оригинальной mediawiki разметки (особенно выхов шаблонов и вызов с аргументами)? Уж больно страшно там выглядят некоторые конструкцуии для неподготовленного человека.
Ссылки по теме:
И еще раз подытоживая — я крайне рекомендую сначала в обсуждении среди разработчиков разработать каркас «на бумаге», своего рода ТЗ, и потом уже браться за реализацию. Иначе это в лучшем случае грозит созданием узкоспециализированного плагина, который невозможно расширить, хуже если невозможно пользоваться и в худшем вообще все застопориться в виду отсутствия ресурсов.