Foren / National / Russian / Идеи / Wiki плагин.

Macik
#38386 9. November 2013, 05:52

Тут хочу обобщить свое видение и идеи касательно Wiki плагина (пока общие наброски).

Во-первых, разрабатывать проще когда есть некий план / тех.задание, во-вторых, чтобы если кто-то начнет писать, то делал бы это с оглядкой на пожелания и мнения других разработчиков.

Основные требования, которые описал Владимир:

  • Совместимость с модулем page и плагином i18n.
  • История изменений и их визуализация
  • Управление доступом через систему прав
  • Модерация

от себя добавлю:

  • функционал истории изменений хотелось бы видеть отдельным плагином (т.к. хранение истории и визуализация изменений - это отдельный и объемный функционал)
  • сделать плагин истории изменений максимально универсальным (как минимум, чтобы можно было использовать с простыми страницами, вне зависимости от парсера, а то и вообще с любым ресурсом). вызов через функции и хуки.
  • без необходимости не создавать дополнительных полей в таблице cot_pages (и дургих стандартных), лучше завести отдельную таблицу, как более универсальный и гибкий вариант.
  • для экономии (а мелких правок могут быть тысячи) - версии документа хранить только как последнюю версию + изменения в сравнении с предыдущей версией. 
  • по необходимоти промежуточные скомпилированные версии документов хранить в кеше.

Компоненты, назначение и функционал:

  • Wiki-шаблонизатор. - класс который будет обрабатывать секции, ссылки, внутренние шаблоны.(что-то наподобие CoTemplate, но с учетом wiki специфики, возможно что это будет некий препроцессор, который будет генерить на выходе CoTemplate совместимый шаблон, тогда мы сильно сэкономим на реализации шаблонизатора. Вопрос в скорости.) 
  • Парсер-wiki разметки. Код который будет преобразовывать текстовую разметку в html код.

    Пока не очень разбираюсь во внутренней кухне wiki. Возможно модуль шаблонизатора и парсера можно/надо надо будет объединить. Основные требования к ним это:
  1. умение обрабатывать вложенные шаблоны/конструкции 
  2. возможность задавать правила базовой разметки в удобном виде без необходимости правки кода
  3. само собой кеширование 
  • редактор wiki разметки (например на базе markitup)
  • интерграция редактора с простым загрузчиком файлов, для загрузки и сктавки в текст соответствующих ссылок на иллюстрации или документы (как пример тот же elFinder).

 

Вопросы:

  • на сколько стоит придерживаться правил оригинальной mediawiki разметки (особенно выхов шаблонов и вызов с аргументами)? Уж больно страшно там выглядят некоторые конструкцуии для неподготовленного человека.

 

Ссылки по теме:

 

И еще раз подытоживая — я крайне рекомендую сначала в обсуждении среди разработчиков разработать каркас «на бумаге», своего рода ТЗ, и потом уже браться за реализацию. Иначе это в лучшем случае грозит созданием узкоспециализированного плагина, который невозможно расширить, хуже если невозможно пользоваться и в худшем вообще все застопориться в виду отсутствия ресурсов.

 

 

https://github.com/macik
правильный хостинг — https://goo.gl/fjCa1F