Todo & DevZone

Что надо доделать перед открытием pmwiki.ru: Todo:pmwiki.ru

А также:

  • отладить групппу ThisSite
  • $EnableHighlight = 1; находится в config-ThisSite.php , т.е. не включено по-умолчанию. Либо включить, либо в Синтаксисе это надо упомянуть
  • $('[data-toggle="tooltip"]').tooltip(); // инициализация tooltip'ов — это было выпилено из index.js , а оно наверняка используется на ph-ph.ru

Что надо сделать перед публичным релизомTodo:PublicRelease

А также:

  • есть вот такой сомнительный способ делать %glyphicon% [[http://#"иконка с tooltip"|]] %% Вместо этого надо, видимо, добавить свою разметку, см. рекомендации тут.
  • обновить все рецепты для их совместимости с PHP 5.5 и 7.2, пример как: http://www.pmwiki.org/wiki/Cookbook/LazyWebLinks
    • есть проблема совместимости всей конструкции с php 5.5. На этой и более старших версиях выдаются ошибки вида preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in Для диагностики надо сказать $EnableDiag = 1; и сделать ?action=ruleset. Проблема, к сожалению, проявляется в основном в режиме редактирования, и там - целый лес. Подробнее тут: http://www.pmwiki.org/wiki/PmWiki/CustomMarkup#php55
  • ВОПРОС: есть ли способ добавить контент кастомного поля в индекс/поиск (см. Title, индексация и поиск (историческая статья))? Надо глянуть, как работает:
  • подумать, а есть ли смысл выкладывать проект на Git? Оригинальная-то система не слишком это практикует.

phVisitsCounter.js : расширить и переписать

За основу взять: http://finar.pmwiki.ru/PmWikiPh/Visits

Как оно должно работать?
JS-скрипт (срабатывает через 1 секунду после полной загрузки страницы):

  1. находит в DOM <a href='ПУТЬ_К_СТРАНИЦЕ' class='phCounter' id='phAutoCounter' ; из найденной ссылки берет значение HREF;
    • если не находит, операция прерывается
  2. отправляет path=ПУТЬ_К_СТРАНИЦЕ&link=ПУТЬ_К_СТРАНИЦЕ на PHP-скрипт
  3. в ответ от PHP-скрипта получает json вида { HREF:100500; }, где HREF — это ссылка, а 100500 — текущее число её просмотров;
  4. ищет в DOM каждую a.phCounter , у которой href=HREF и дописывает полученные значения после вот так: <a href='HREF' class='phCounter'>…</a> <span class='phCounter_current'>100500</span>

Также JS-скрипт:

  1. находит в DOM все ссылки с class='phCounter clickCount' и следит за ними (хотелось бы сделать это без нагрузки на CPU, т.е. может быть просто дописать что-то в HREF);
  2. если по ним кликнули, повторяет пункты 1-4 , но при этом отправляет на PHP-скрипт: path=ПУТЬ_К_СТРАНИЦЕ&link=Значение_HREF
PHP:
  1. получает:
    • path=ПУТЬ_К_СТРАНИЦЕ , по нему определяет файл, в котором хранить данные. Данные в файле хранятся в построчном виде: URL => 100500.
    • link=Значение_HREF . Ищет соответствующий URL и инкрементирует значение. Если не находит — создаёт новую строку.
  2. проделав всё это, возвращает содержание файла ПУТЬ_К_СТРАНИЦЕ обратно в JS в виде json

PmWiki-часть:

  1. позволяет администратору просматривать сводную статистику каким-то образом

Косяк в хлебных крошках. Они генерят вот такой код

<ul class='breadcrumb small'>
  <li>  
    <span class='glyphicon'> 
      <a class='urllink' href='http://localhost:8888' rel='nofollow'>&#xe021;</a>
    </span>
  </li>
  <li>
    <span class='wikitrail'>
      <a class='wikilink' href='/Rext/Rext'>Что такое Rext</a>
    </li>
    <li>
      <a class='selflink' href='/Rext/Changelog'>ChangeLog</a>
      </span>
  </li>
</ul>

А всё потому, что <span class='wikitrail'> вбит в trails.php топором. Из-за этого мой $TrailPathSep = '</li><li>'; из thisSite.php не до конца прекрасно срабатывает !
Что с этим можно сделать?
1) уговорить Petko убрать это из ядра.
2) сделать EnableWikiTrails = 0 , и подключить свой собственный пропатченный файл
3) придумать какие-то другие разделители, и застилить их так, чтобы всё выглядело также
4) забить и отложить в todo-лист. Поправить при росте популярности системы.

Что надо сделать перед выкладкой проекта на Git: Todo:git

А также:

  • провести рефакторинг прав доступа на базе http://www.pmwiki.org/wiki/PITS/01423
  • (подумать) переверстать весь editMode.tmpl так, чтобы в верстке всей обвязки вообще не было bootstrap-классов, связанных с типографикой, цветами, фонами и т.д. Суть в том, чтобы было почти невозможно испортить режим редактирования, меняя bootstrap-local-variables.less , но в Preview при этом страница отображалась в оригинальной стилистике. Тут возникают вопросы:
    • что делать, если в дизайне изменён фон сайта?
    • что со всеми остальными вкладками в табах, которые подтягивают и используют вики-элементы? Они не будут выглядеть нормально, если дизайнер о них не позаботится
  • (сомнительно) расширить SearchPatterns так, чтобы при list=normal в выборку не попадала главная группы, т.е. страница вида Example/Example. Если это возможно, конечно.

Что надо сделать когда-нибудь: Todo:someday

  • в ThisSite.PageActions закрыть все ссылки "rel=nofollow". На 2021-04-19 закрыты только ?action=source, поскольку необходимость закрывать остальные неочевидна