Roadmap
Roadmap — это стратегический план развития системы. Здесь описаны общие цели развития проекта.
Определенно сделаем
Открыть сайт pmwiki.ru
PmWiki.ru позволит систематизировать работу над проектом, собрать всю информацию и исходный код в едином месте.
Перевести на Rext некоторые старые проекты
Позволит показать, на что способна связка PmWiki + Rext.
Прорекламировать разработку
Позволит получить feedback от реальных пользователей. Возможно, найти Инвестора.
Мы попробуем
Продолжать разработку системы есть смысл только в случае роста её популярности.
Разработать несколько готовых концепт-дистрибутивов
- сайт-контент-дневник | позволяет фиксировать просмотренные фильмы, прочитанные книги, посещенные выставки
- сайт-фотоархив | позволяет хранить, систематизировать, отбирать фотографии
- сайт-путешественника | интерактивная карта мира, на которой фиксируют путешествия
Сайты будут распространяться бесплатно как целиком в виде готового дистрибутива, так и в виде Рецепты для встраивания.
Раскрыть исходный код
Выложить на Git исходный код ядра Rext, а также нескольких готовых проектов на базе Rext (таких, как http://www.memofilm.ru/ ) , чтобы все могли ими пользоваться.
Поддержка обновлений и рефакторинг
Создать механизм, позволяющий безопасно обновлять Rext на уже существующих проектах простой перезаписью файлов.
Что нужно для механизма обновлений?
Провести рефакторинг всех рецептов.
Цель рефакторинга: повсеместное разделение кода и конфигурации.
Примерные методы:
- минимизация числа дополнительных CSS и JS-файлов: если кода мало, перетащить его в PHP;
вынесение конфигураций JS-файлов в отдельные файлы так, чтобы их можно было смело менять;вынесение JS-конфигурации в PHP- переименовать JS-переменные, они должны начинаться с большой, чтобы их можно было встроить в макет если что.
- в PHP объявление всего, что относится к конфигурации через SDV()- и SDVA()-функции.
Рассмотрим на примере Wikirama как это должно выглядеть и какие есть проблемы:
1) в phWikirama.php (почти) вся конфигурация уже определена через SDV()- и SDVA()-функции. Это благо, и это позволяет переопределять PHP-конфигурацию из любых файлов основного конфига сайта, не трогая код самого Рецепта.
2) в файле fotorama-ph.js находится дефолтная JS-конфигурация Фоторамы, ее тоже нужно научиться хранить отдельно от кода ядра. Как?
{-а) вынести определение переменной в отдельный файл fotorama-ph-ThisSite.js , который можно опционально подключать через переопределение $Mini['LbFiles'] | плохо, т.к. это лишний запрос к серверу ради нескольких строк
б) ОК, тогда внести переменную в PHP, или тогда уж весь fotorama-ph.js есть смысл загрузить в PHP. Как? В mini.php не предусмотрен механизм добавления когда в $HTMLHeaderFmt
/ $HTMLFooterFmt
, поэтому можно только лишь расширить эти массивы sitewide, т.е. для всего сайта во всех случаях. | тоже плохо, т.к. исходный код сайта замусоревается.-}
Итого: если рецепт предполагает использование собственного wiki-синтаксиса И в нём (в обработчике синтаксиса) не предусмотрена возможность расширения
$HTMLHeaderFmt
/ $HTMLFooterFmt
, нет хорошего способа разделить JS-конфиг и JS-код этого рецепта. Поэтому стоит ещё подумать, стоит ли вообще разделять его способами а) или б) ради гипотетических обновлений.
Доработать RextPacker
Научить RextPacker создавать "update-patсh", в котором не будет файлов конфигурации (т.е. будет проигнорировано всё с ThisSite в названии)
Всё это довольно сложно, и несколько не вписывается в архитектуру PnWiki. Поскольку необходимость комплексных регулярных обновлений совершенно не очевидна (этом вам не Windows 10), возможно, достаточно сделать полуавтоматический инструмент. Дата установки Rext просто фиксируется где-то в системе. Перед обновлением файлов, скрипт обновления сравнивает дату изменения файла с датой установки Rext. Если выясняется, что тот файл был обновлён, автоматическая замена не производится, предлагается обновить файлы вручную.
Было бы также здорово:
- актуализировать официальную русскоязычную документацию: https://www.pmwiki.org/wiki/PmWikiRu/DocumentationIndex
- перейти на Bootstrap 5.