SubPageList (MediaWiki) — различия между версиями

Материал из YourcmcWiki
Перейти к: навигация, поиск
Строка 3: Строка 3:
 
На основе расширения MediaWiki [[mediawikiwiki:Extension:SubPageList2|SubPageList2]] в [[{{SITENAME}}]] я породил собственную вариацию на тему SubPageList’а — его можно было бы назвать «TemplatedPageList». По сути расширение продолжает серию расширений, направленных в сторону вики-программирования, что идеологически ещё неизвестно, хорошо ли, нет ли.
 
На основе расширения MediaWiki [[mediawikiwiki:Extension:SubPageList2|SubPageList2]] в [[{{SITENAME}}]] я породил собственную вариацию на тему SubPageList’а — его можно было бы назвать «TemplatedPageList». По сути расширение продолжает серию расширений, направленных в сторону вики-программирования, что идеологически ещё неизвестно, хорошо ли, нет ли.
  
Так или иначе, код расширения переписан в хлам — предыдущий автор, видимо, был, во-первых, C’шник, а во-вторых, большой любитель избыточности в духе округления целых чисел. Всё это было выгашено из кода сраной метлой, показатель — количество строк кода, уменьшившееся почти в два раза — с 686 до 347 строк. Поведение опции <tt>category=</tt> было изменено в сторону более очевидного — в сторону ограничения выбираемого списка категорией, и выбирать теперь стало можно только по категории, а не обязательно по префиксу (родительской странице). Также была добавлена опция <tt>offset=</tt>, позволяющая указывать не только максимальное количество выбираемых страниц, а также и «смещение» от начала списка. Кроме того, было добавлено препроцессирование кода включаемых страниц, что означает правильную обработку [[mediawikiwiki:Help:Magic Words|магических слов]] типа REVISIONDAY.
+
Так или иначе, код расширения переписан в хлам — предыдущий автор, видимо, был, во-первых, C’шник, а во-вторых, большой любитель избыточности в духе округления целых чисел. Всё это было выгашено из кода сраной метлой, показатель — количество строк кода, уменьшившееся почти в два раза — с примерно 680 до примерно 350 строк.
  
Но это всё не главное: главное, что расширение теперь работает на шаблонах — оцпией <tt>template=</tt> передаётся имя шаблона, который будет обработан для каждой страницы и дописан в текст.
+
Функционала при этом стало больше:
 +
 
 +
* Опция <tt>category=</tt> теперь ведёт себя более разумно — ограничивает выбираемый список категорией. Кроме того, выбирать теперь можно как по префиску, так и по категории БЕЗ указания префикса.
 +
* Добавлена опция <tt>offset=</tt>, позволяющая указывать не только максимальное количество выбираемых страниц, а также и «смещение» от начала списка.
 +
* Теперь разрешается выборка из всех пространств имён сразу: <tt>namespace=""</tt>.
 +
* Теперь разрешается выборка не только ''подстраниц'', а вообще страниц по любому префиксу названия(опция <tt>parent=</tt>).
 +
* Опция <tt>deepness=</tt> теперь, во-первых, работает корректно, а во-вторых, допускает значение-диапазон: <tt>deepness=1..2</tt> — то есть, можно накладывать ограничение уровня вложенности на выбираемые страницы. Если <tt>deepness=</tt> просто числу — оно воспринимается, как ''минимальная'' вложенность.
 +
* Добавлено препроцессирование кода включаемых страниц, то есть корректная обработка [[mediawikiwiki:Help:Magic Words/ru|магических слов]] (типа PAGENAME и REVISIONDAY) и тегов <tt><nowiki><noinclude></nowiki></tt> и <tt><nowiki><includeonly></nowiki></tt>.
 +
* Добавлен метод сортировки списка страниц по количеству посещений — <tt>ordermethod=pagecounter</tt>.
 +
* Исправлена ошибка, возникавшая при просмотре различий по странице, использующей тег <tt><nowiki><subpages></nowiki></tt>.
 +
* Вывод расширения больше не кэшируется и нет нужды нажимать «Обновить» или пересохранять статью, чтобы увидеть изменения. Нет ошибок с подстановкой UNIQ… в текст статьи.
 +
* А главное, что расширение теперь работает на шаблонах — оцпией <tt>template=</tt> передаётся имя шаблона, который будет обработан для каждой страницы и дописан в текст.
  
 
Шаблону передаются следующие параметры:
 
Шаблону передаются следующие параметры:
Строка 18: Строка 29:
 
;content: Полное содержимое страницы.
 
;content: Полное содержимое страницы.
 
;first_section: Первая секция страницы.
 
;first_section: Первая секция страницы.
;have_next: 1, если страница имеет секции, кроме первой, и 0 иначе.
+
;has_more: 1, если страница имеет секции, кроме первой, и 0 иначе.
  
 
[[Категория:Разработка]]
 
[[Категория:Разработка]]
 
[[Категория:MediaWiki]]
 
[[Категория:MediaWiki]]

Версия 03:28, 9 ноября 2009

Ссылка на SVN исходников: http://svn.yourcmc.ru/viewvc.py/vitalif/trunk/MediaWiki-SubPageList2/.

На основе расширения MediaWiki SubPageList2 в YourcmcWiki я породил собственную вариацию на тему SubPageList’а — его можно было бы назвать «TemplatedPageList». По сути расширение продолжает серию расширений, направленных в сторону вики-программирования, что идеологически ещё неизвестно, хорошо ли, нет ли.

Так или иначе, код расширения переписан в хлам — предыдущий автор, видимо, был, во-первых, C’шник, а во-вторых, большой любитель избыточности в духе округления целых чисел. Всё это было выгашено из кода сраной метлой, показатель — количество строк кода, уменьшившееся почти в два раза — с примерно 680 до примерно 350 строк.

Функционала при этом стало больше:

  • Опция category= теперь ведёт себя более разумно — ограничивает выбираемый список категорией. Кроме того, выбирать теперь можно как по префиску, так и по категории БЕЗ указания префикса.
  • Добавлена опция offset=, позволяющая указывать не только максимальное количество выбираемых страниц, а также и «смещение» от начала списка.
  • Теперь разрешается выборка из всех пространств имён сразу: namespace="".
  • Теперь разрешается выборка не только подстраниц, а вообще страниц по любому префиксу названия(опция parent=).
  • Опция deepness= теперь, во-первых, работает корректно, а во-вторых, допускает значение-диапазон: deepness=1..2 — то есть, можно накладывать ограничение уровня вложенности на выбираемые страницы. Если deepness= просто числу — оно воспринимается, как минимальная вложенность.
  • Добавлено препроцессирование кода включаемых страниц, то есть корректная обработка магических слов (типа PAGENAME и REVISIONDAY) и тегов <noinclude> и <includeonly>.
  • Добавлен метод сортировки списка страниц по количеству посещений — ordermethod=pagecounter.
  • Исправлена ошибка, возникавшая при просмотре различий по странице, использующей тег <subpages>.
  • Вывод расширения больше не кэшируется и нет нужды нажимать «Обновить» или пересохранять статью, чтобы увидеть изменения. Нет ошибок с подстановкой UNIQ… в текст статьи.
  • А главное, что расширение теперь работает на шаблонах — оцпией template= передаётся имя шаблона, который будет обработан для каждой страницы и дописан в текст.

Шаблону передаются следующие параметры:

index
Номер страницы в списке, начиная с 0.
number
Номер страницы в списке, начиная с 1.
odd
1, если номер страницы нечётный (начиная с 1), и 0 иначе.
title_full
Полное название страницы.
title
Полное название без пространства имён.
title_rel
Название страницы без названия родительской страницы.
title_last
Последняя секция названия страницы (да, я знаю, что это можно сделать через Parser Functions).
content
Полное содержимое страницы.
first_section
Первая секция страницы.
has_more
1, если страница имеет секции, кроме первой, и 0 иначе.