Mediawiki4Intranet

From Wiki4Intranet
Revision as of 19:40, 14 January 2011 by VitaliyFilippov (Talk | contribs) (Доработанные)

Jump to: navigation, search

MediaWiki — популярная «вики»-система, написанная на PHP и изначально создававшаяся в качестве «движка» Википедии. Отличается отличной расширяемостью — существует более 1700 расширений к ней.

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

Версия MediaWiki, лежащая в основе сборки: 1.14.1.

Патчи

Всего: 34 патча.

В патчи выносятся:

  • Все изменения в код самой MediaWiki.
  • Незначительные изменения расширений, которые «не тянут» на поддержку отдельной версии.

Исправления багов

То есть патчи, исправляющие какие-либо ошибки. Всего: 17.

categorytree-empty-bullets
Патч расширения CategoryTree, чтобы оно не предлагало разворачивать пустые на самом деле категории.
cite-reenterability-for-different-parser-objects
Патч расширения Cite, направленный на его реентерабельность.
debug-categorized-specialrecentchanges
Исправление выбора по категориям в «Свежих правках».
discussion-newsection-links
Ссылки на несуществующие страницы обсуждений сделаны по умолчанию ссылками на добавление секции.
dont-call-linkholders-__destruct
Исправление некорректного явного вызова деструктора mLinkHolders в парсере.
dont-suppress-same-user-conflicts
Не игнорировать конфликты редактирования, произошедшие из-под одного юзера.
fix-cannot-redeclare-wfspecialupload
Исправление ошибки «Fatal error: Cannot redeclare wfspecialupload()» при загрузке изображения без авторизации. Плюс поддержка HTTP прокси, заданной в стандартной переменной окружения http_proxy, при загрузке изображений по ссылке.
fix-l10n
Исправление сообщения noarticletext в русском языке, добавление формата даты «YYYY-MM-DD HH:MM:SS» без дурацкого «T» между ними.
fix-pdfhandler
Патч расширения PdfHandler, убрано экранирование $wgPdfProcessor'а, ссылки на PDF-файл с его страниц теперь ведут на саму страницу.
gdalwaysresample-setting
Настройка $wgGDAlwaysResample GD, если true, то миниатюры gif’ок получаются более качественными (они всегда уменьшаются с интерполяцией).
no-session-fail
Ликвидация лишней попытки сохранения и «ошибок потери данных сессии» при переходе на форму редактирования статьи с передачей текста в окно редактирования.
trunk-mediafunctions-for-1.14
Патч trunk-версии расширения MediaFunctions, позволяющий ей работать в MediaWiki 1.14.1.
unauth-save-display-modified-source
Показ изменённого, а не оригинального текста статьи при запрещённой попытке сохранения. Нужен, чтобы пользователь не потерял свои изменения при нажатии «Сохранить», если сохранять ему на самом деле запрещено.
upload-autofill-lowercase-extensions
Автоматическая смена регистра расширения загружаемого файла на нижний. Плюс настройка $wgMaxFilenameLength максимальной длины имени файла в списках файлов с миниатюрами — в оригинале забито гвоздями значение 20, что очень мало, и из-за чего имена файлов часто обрезаются.
wfmsg-dont-clear-stripstate
По умолчанию не очищать $parser->mStripState при дополнительных вызовах parse(). Исправляет некоторое количество ошибок с непонятными длинными иероглифическими маркерами «--……..uniq--» в тексте статьи на месте каких-либо данных. На самом деле причина ошибки более глубока: парсер MediaWiki нереентерабелен, авторы об этом знают и, возможно, когда-нибудь исправят.
bug53818-empty-heading-crutch
Ликвидация пустых заголовков (строк вида ====) из текста статьи, вместо того, чтобы принимать большую часть = за маркеры заголовка, а два внутренних = — за текст заголовка.
fixes-for-php-5.3.0
Исправления предупреждений (warnings) под PHP 5.3 и выше, в некоторых файлах MediaWiki и расширении Interwiki.

Доработки

То есть патчи, добавляющие какой-либо новый функционал. Всего: 17.

add-hooks
Добавление хуков. Требуется для расширений HttpAuth (для авторизации методом HTTP Basic) и Wikilog (для группировки свежих правок комментариев в блогах по имени поста на странице «улучшенных» свежих правок).
anchor-link-tocnumbers
Поддержка автоматической простановки номеров секций в ссылках на секции текущей страницы. То есть в ссылки вида «[[#Раздел|Раздел]]» будет автоматически добавлен номер секции («2. Раздел»).
category-subcatlist
Патч расширения CategoryTree. Новый метод группировки страниц в категориях — не по первой букве имени, а по другим категориям, в которых они также перечислены. Чтобы включить этот метод, на страницу категории нужно добавить магическое слово __CATEGORYSUBCATLIST__.
detailed-badtitle
Детализация сообщений об ошибках недопустимого имени страницы.
detect-script-allow-html
Разрешение изменения списка тегов, запрещённых в тексте загруженных файлов — настройка $wgForbiddenTagsInUploads.
dot-after-tocnumber
Настройка $wgDotAfterTocnumber, если true, то после номеров разделов в оглавлении ставится точка.
haloacl-rights
Часть расширения HaloACL. Проверки прав доступа к страницам во всём коде MediaWiki. Собственно это и обеспечивает защиту.
html-emails
Часть расширения EnotifDiff. Поддержка отправки почты об изменениях и подтверждении e-mail адреса в формате HTML, а не в виде чистого текста.
imagegallery-tell-transform, imagepage-tell-transform
Передавать данные о том, откуда вызывается создание миниатюры файла. Нужно для FlvHandler’а, чтобы не вставлять код видеоплеера в галереи файлов и в миниатюры файлов в истории ревизий.
parser-debug-doblocklevels
Разрешать включать <center>...</center> и <blockquote>...</blockquote> внутрь абзаца.
rearrange-editform
Перемещение списков использованных в статье шаблонов и скрытых категорий на странице редактирования под форму редактирования, то есть, за пределы элемента <form>. Что необходимо для того, чтобы текст WikEd'овского AJAX-предпросмотра, то есть HTML-текст статьи, не включался в форму, потому что он сам может включать в себя формы, и тогда их содержимое некорректным образом попадает в форму редактирования, что потенциально приводит к неприятным багам. Плюс настройка $wgNoCopyrightWarnings для отключения предупреждений о копирайте (MediaWiki:Copyrightwarning, MediaWiki:Copyrightwarning2).
shift-included-templates-heading-levels
«Сдвиг» уровня заголовков статьи при её включении в подзаголовок. То есть если она включается под заголовком уровня N, то её заголовки 1-го уровня станут (1+N)-ого уровня, 2-го — (2+N), и т. п.
signature-nohyphen
Вставка подписей нажатием кнопки без двух лидирующих минусов «--». Плюс <m>...</m> вместо <math>...</math> на кнопке вставки TeX-формул (обрабатывается расширением MarkupBabel).
transclude-sections
Поддержка включений секций страниц с помощью синтаксиса вида {{:Статья#Секция}}.
translit-upload-filenames
Автоматическое транслитерирование физических имён файлов (то есть имён файлов на диске) с кириллицы на латиницу под Windows.
import-export-images-and-conflicts
Bug:47362 Очень сильно улучшенный импорт/экспорт страниц MediaWiki. Отправлен в Wikimedia Bug 22881. Новые фичи:
  • Поддержка импорта и экспорта загруженных файлов! Причём, в двух вариантах: либо данные файла включаются в экспортный файл, становящийся multipart/related вместо обычного XML, либо загружаются целевой Wiki по необходимости (после проверки хэшей) по выводимым в экспортный файл URL.
  • Имена старых версий файлов теперь включают в себя не странную дату «момента архивирования» (обычно равную дате следующей ревизии плюс-минус одна секунда), а дату создания самой ревизии. Это необходимо для нормального импортирования старых версий файлов, так как с модификацией архивное имя более не зависит от следующих ревизий.
  • Улучшенная выборка страниц для экспорта:
    • Из категорий, включая подкатегории.
    • Из пространства имён.
    • Изменённых после заданной даты.
    • Связанных ссылками с уже выбранными («замыкание по ссылкам»).
  • Выявление «конфликтов» импорта, как в DVCS, и расширенный отчёт по импортированным страницам. 5 вариантов сообщений:
    1. Все редакции были ранее импортированы. Локальных изменений нет.
    2. Все редакции были ранее импортированы. Страница изменена локально.
    3. N версий.
    4. N версий (новая страница).
    5. N версий (конфликт: XX (импорт) и YY (локальная)).
  • При всём этом, механизм импорта обратно совместим с экспортными файлами стандартных версий MediaWiki. То есть в модифицированную Wiki можно загрузить экспортный файл из стандартной, а в стандартную — из модифицированной, в случае, если не экспортируются файлы.

Расширения

Для большинство расширений, присутствующих в SVN Wikimedia, используется их версия, соответствующия версии MediaWiki — например, для версии 1.14.1 расширения берутся из tags/REL1_14_1/extensions. Однако некоторые расширения в 1.14.1 имеют различные неприятные баги, или их там вообще ещё нет, и тогда берётся их trunk-версия (то есть самая новая) из trunk/extensions, возможно, как-то допиливается, например, с помощью патчей, и включается в сборку.

Есть и расширения, которые вообще не попали в SVN, и у которых нет даже своего репозитория с кодом, а есть только где-то выложенные файлики, или даже просто PHP-код на вики-страницах. Такие сохраняются в нашем локальном SVN, там же дорабатываются, и включаются в сборку оттуда. Вообще говоря, у нас есть «супер-система» автоматического объединения кода и патчей из нескольких источников на основе Mercurial и pbranch, но это немного другая история.

Всего: 58.

Неизменённые

То есть просто установленные. Всего: 15.

AllowGetParamsInWikilinks
Разрешение использования URL-параметров (?key=value) во внутренних вики-ссылках.
CharInsert
Поддержка вставки шаблонов <charinsert> для MediaWiki:Edittools. См. также UserMessage.
DeleteBatch
Удаление множества страниц сразу со спецстраницы Служебная:DeleteBatch.
FullLocalImage
Добавление функций {{fullimage:ФАЙЛ}} и {{localimage:ФАЙЛ}}, возвращающих путь хранения файла на сервере (полный в первом случае и относительный во втором).
Google Analytics (trunk)
Гугловский счётчик. Можно подключать на виках, установленных в интернете.
PagedTiffHandler (trunk)
Поддержка TIFF-картинок.
ParserFunctions
Функции парсера типа {{#if:}}, {{#ifeq:}} и т. п. Справка тут.
PreferencesExtension
Расширение, используемое другими расширениями для добавления пользовательских настроек.
Renameuser (trunk)
Переименование пользователя с корректным обновлением ссылок на него в БД.
SimpleForms
Поддержка добавления на страницы формочек с целью простого создания новых страниц по шаблону.
StringFunctions
Строковые функции парсера типа {{#sub:}}. В новых версиях объединены с ParserFunctions, но у нас 1.14.1, а там ещё нет.
SyntaxHighlight_GeSHi
Поддержка подсветки синтаксиса в большинстве распространённых языков программирования с помощью GeSHi. Используется тег <source>. И будет использоваться всегда, несмотря на то, что в новых версиях расширения его заменяют <syntaxhighlight> (маразм).
UserMerge (trunk)
Объединение и удаление учётных записей пользователей с корректным изменением ссылок в БД.
WhoIsWatching
Ответ на вопрос «кто наблюдает за данной страницей?» со страницы Служебная:WhoIsWatching.
WikiCategoryTagCloud
Вставка облаков тегов на страницы. Тегами считаются категории.

Отлаженные

То есть установленные и отлаженные или back-портированные. Всего: 15.

Cite
Поддержка сносок на вики-страницах (теги <ref> и <references>). Внесены изменения патчем.
MediaFunctions (trunk)
Поддержка функций для получения информации о загруженных файлах. Внесены изменения патчем для работы trunk’овой версии в 1.14.1.
PdfHandler (trunk)
Медиаобработчик для PDF-файлов. То есть, поддержка загрузки PDF’ок, их постраничного просмотра и вставки страниц PDF как изображений. Иногда может создавать проблемы, ибо ghostscript обрабатывает некоторые PDF’ки с очень большим трудом, потреблением дискового пространства на /tmp и процессорного времени. Внесены изменения патчем.
MultiCategorySearch
Спецстраница Служебная:MultiCategorySearch для поиска страниц, включённых в несколько категорий сразу.
SimpleTable
Поддержка простого (вменяемого) синтаксиса для вставки таблиц — тега <tab>.
Drafts
Поддержка сохранения черновиков в процессе редактирования страниц, плюс авто-сохранение каждую минуту, чтобы не потерять свои труды, если браузер вдруг накроется.
CategoryTree
AJAX-раскрываемые деревья категорий на спецстранице и страницах самих категорий. Внесены изменения патчами для поддержки альтернативной группировки страниц в категории и удаления плюсиков ([+]) у категорий, не содержащих подкатегорий, в деревьях.
AnyWikiDraw
Поддержка вставки рисованных с помощью Java-апплета картинок на вики-страницы. Увы, нетривиальна в эксплуатации, ибо апплет.
OpenID
Поддержка входа в вики по офигически глючной, но самой распространённой технологии единого входа — OpenID.
Interwiki (trunk)
Междувиковые ссылки, включения, редактирование таблиц интервики. Внесены изменения патчем.
reCAPTCHA
Реализация популярной CAPTCHA («Публичного Полностью Автоматического Теста Тьюринга для Различения Компьютера и Человека»), короче говоря, антиспам для вики-систем, установленных в интернете. У нас, кстати, по умолчанию только что зарегистрированные пользователи не могут создавать новые страницы.
SpecialForm
Ещё одно расширение для создания страниц из форм по шаблонам. Вероятно, от него вскоре полностью откажемся в пользу SimpleForms.
SVNIntegration
Не используется и является хорошей «дырой» в subversion, но позволяет вставлять на страницы файлы из Subversion или информацию о них.
PlantUML
Рисование UML-диаграмм с помощью PlantUML.
Workflow
Небольшое расширения для вставки «переключаемых» состояний страниц (можно назвать «информерами»), реализованных через категории.

Доработанные

То есть установленные и сильно доработанные. Всего: 7.

Calendar
Расширение-календарь событий для MediaWiki, на котором каждое событие, либо каждый день с событиями, хранится на вики-странице.
FlvHandler
Поддержка вставки Flash-видеоплееров на страницы с использованием обычного синтаксиса [[Файл:Видео.mp4]]. Поддерживаются видеокодеки FLV+MP3 или H.264+AAC в контейнерах FLV или MP4.
HaloACL, HaloACL (MediaWiki)
Единственное расширение MediaWiki, позволяющее защитить часть страниц от просмотра правами. 100%-ной гарантии всё равно никогда нет, потому что MediaWiki не создавалась в расчёте на это, и многие её расширения лазают в базу как попало и, соответственно, могут вытащить оттуда любую информацию. Однако в пределах сборки Mediawiki4Intranet HaloACL работает. Тем не менее, качество кода HaloACL оставляет желать сильно лучшего — например, интерфейс зачем-то начудили на Yahoo UI, из-за чего редактирование прав в основном тормозит и тупит, а не работает. К счастью, права сами задаются вики-страницами, поэтому никто не мешает и создавать их plaintext’ом. В будущем планируется переписать интерфейс HaloACL на «Веб 1.0», немодный, зато очень надёжный :)
MagicNumberedHeadings
Магические слова __NUMBEREDHEADINGS__ и __NONUMBEREDHEADINGS__, принудительно включающие/выключащие нумерацию заголовков на страницах вне зависимости от пользовательских настроек. В оригинальной версии есть только включающее слово.
SphinxSearch
Замена стандартного вики-поиска поиском на основе движка Sphinx.
SVGEdit
Поддержка браузерного JavaScript-редактора SVG-Edit для редактирования SVG’шек в MediaWiki. Имеет несколько проблем, в частности, открытие не всегда работает по причине какой-то проблемы синхронизации (race condition), которые ни автор, ни мы выловить пока не смогли.
Wikilog
Блоги, форумы, иерархические комментарии, календарик записей на основе MediaWiki, импорт блогов из экспортных файлов blogger.com.

Созданные

То есть созданные в рамках сборки. Всего: 21.

BatchEditor
BugzillaBuglist
CategoryTemplate
CharInsertList
CustisScripts
«композитное» пока-что не разделённое расширение. Включает в себя: WikEd, русскоязычный Викификатор, «автопредпросмотр» AKA Live Preview (показывает в отдельном окне браузера автоматически обновляемый в процессе редактирования предварительный просмотр страницы), плюс несколько изменений CSS стилей.
DocExport
EnotifDiff
отправка почты об изменениях наблюдаемых страниц в формате HTML, опциональное включение в них diff’ов (текстов различий), отправка писем о подтверждении e-mail адресов в формате HTML.
GlobalAuth
поддержка самопального веб-протокола Single Sign-On в MediaWiki (как клиентской, так и серверной стороны).
HttpAuth
поддержка входа в Wiki с использованием HTTP Basic авторизации. Полезно, например, для доступа к RSS/Atom лентам в закрытых с помощью HaloACL вики-системах из читалок.
ListFeed
генерация RSS-лент из вики-списков (* или #).
MarkupBabel
MediawikiQuizzer
MMHandler
Polls
S5SlideShow (MWSlideology)
SubPageList2
SiteExport
SWFUpload
UserMagic
UserMessage
WikiBookmarks