Difference between revisions of "Mediawiki4Intranet"
(→Расширения) |
m (→OpenID) |
||
Line 390: | Line 390: | ||
== OpenID == | == OpenID == | ||
− | В MediaWiki4Intranet есть поддержка OpenID, хотя и глючная, как и вообще любая реализация OpenID. Это не наша вина, и даже не вина авторов [[mediawikiwiki:Extension:OpenID|расширения OpenID]] — виноваты здесь авторы библиотеки OpenID для PHP. | + | В MediaWiki4Intranet есть поддержка OpenID, хотя и глючная, как и вообще любая реализация OpenID. Это не наша вина, и даже не вина авторов [[mediawikiwiki:Extension:OpenID|расширения OpenID]] — виноваты здесь авторы библиотеки [http://www.janrain.com/openid-enabled OpenID для PHP]. |
Чтобы включить её, нужно прописать следующее в <tt>LocalSettings.php</tt>: | Чтобы включить её, нужно прописать следующее в <tt>LocalSettings.php</tt>: |
Revision as of 16:18, 30 March 2011
MediaWiki — популярная «вики»-система, написанная на PHP и изначально создававшаяся в качестве «движка» Википедии. Отличается отличной расширяемостью — существует более 1700 расширений к ней.
Mediawiki4Intranet — сборка MediaWiki, содержащая в себе довольно большой набор расширений, полезных для внутрикорпоративной среды и, что очень важно, исправленных и «подруженных» между собой — большая часть ошибок, возникающих при интеграции, исправлена.
Contents
Содержимое
Сборка состоит из:
- Кода оригинальной MediaWiki.
- Установленных расширений.
- Набора патчей.
- Нескольких готовых конфигураций для простого создания LocalSettings.php.
Лицензия распространения большинства этого добра: GPLv2, как и у самой MediaWiki. /* Надеемся, что тивоизация нам всё-таки не грозит :) */
MediaWiki
Код MediaWiki берётся из SVN Wikimedia.
Версия Mediawiki4Intranet может отставать от стабильной, ибо различия между версиями MediaWiki не так уж и велики, а вот патчи менять приходится.
Версия MediaWiki, лежащая в основе сборки: 1.16.2 (до недавнего времени 1.14.1).
Патчи
Патчи содержат в себе изменения в код самой MediaWiki, а также небольшие изменения в расширениях, ради которых не хочется поддерживать отдельную версию этих расширений.
В MediaWiki4Intranet патчи хранятся в Feature Branches, то есть, в Mercurial-репозитории есть ветка «mediawiki-x.xx» (например, mediawiki-1.16), содержащая оригинальный код MediaWiki (плюс расширения, в которые изменения вносятся только патчами), по ветке на каждый патч, и ветка «all», содержащая все патчи, объединённые вместе. Для удобства объединений используется расширение Mercurial pbranch.
Какие плюсы это даёт:
- Патчи не смешиваются, поэтому поддерживается высокий порядок — можно взять отдельный патч и отправить в upstream или, например, удалить.
- Если патчи экспортировать в Unified diff-формате, между ними гарантированно не возникнет конфликтов, так как ещё на стадии объединения конфликты либо устраняются, либо вносится зависимость между патчами.
А единственный минус — высокая сложность графа ветвлений в Mercurial-репозитории.
Ветки отдельных патчей отпочкованы от оригинальной, и все изменения, вносимые этими патчами, просто фиксируются в соответствующие ветки. Обновления кода MediaWiki и расширений коммитятся в «оригинальную» ветку и merge’атся в ветки патчей, а затем и в ветку «all».
Далее ко всему этому безобразию, тоже отдельной веткой (mw4i-ext), добавляются SVN-репозиторий, содержащий собственные и сильно доработанные расширения, инструменты и конфигурационные файлы; после чего ветки all и mw4i-ext объединяются в «установочную» ветку mw4install.
Всего: 35 патчей.
Исправления багов
То есть патчи, исправляющие какие-либо ошибки. Всего: 15.
Аббр. | Дата добавления | Имя | Описание патча |
---|---|---|---|
CEB | 2010-02-03 | categorytree-empty-bullets | Патч расширения CategoryTree, чтобы оно не предлагало разворачивать пустые на самом деле категории. |
CRNR | 2011-03-28 | cite-refsnoreferences | Патч расширения Cite + в код MediaWiki, в большей части случаев исправляющий ошибку «Ошибка цитирования: для несуществующего тега <ref> не найдено тега <references />», некорректно возникающую при использовании расширений, которые сами где-нибудь используют парсер без сброса состояния. |
DCLD | 2009-11-11 | dont-call-linkholders-__destruct | Исправление некорректного явного вызова деструктора mLinkHolders в парсере. |
DCS | 2009-11-24 | debug-categorized-specialrecentchanges | Исправление выбора по категориям в «Свежих правках». |
DNL | 2009-08-12 | discussion-newsection-links | Ссылки на несуществующие страницы обсуждений сделаны по умолчанию ссылками на добавление секции. |
DSSUC | 2010-03-26 | dont-suppress-same-user-conflicts | Не игнорировать конфликты редактирования, произошедшие из-под одного юзера. |
EHC | 2009-09-11 | bug53818-empty-heading-crutch | Ликвидация пустых заголовков (строк вида ====) из текста статьи, вместо того, чтобы принимать большую часть = за маркеры заголовка, а два внутренних = — за текст заголовка. |
FFP3 | 2009-08-12 | fixes-for-php-5.3.0 | Исправления предупреждений (warnings) под PHP 5.3 и выше, в некоторых файлах MediaWiki и расширении Interwiki. |
FL | 2010-12-29 | fix-l10n | Исправление сообщения noarticletext в русском языке, добавление формата даты «YYYY-MM-DD HH:MM:SS» без дурацкого «T» между ними. |
FPH | 2010-12-14 | fix-pdfhandler | Патч расширения PdfHandler, убрано экранирование $wgPdfProcessor'а, ссылки на PDF-файл с его страниц теперь ведут на саму страницу. |
GS | 2009-11-19 | gdalwaysresample-setting | Настройка $wgGDAlwaysResample GD, если true, то миниатюры gif’ок получаются более качественными (они всегда уменьшаются с интерполяцией). |
NSF | 2010-06-25 | no-session-fail | Ликвидация лишней попытки сохранения и «ошибок потери данных сессии» при переходе на форму редактирования статьи с передачей текста в окно редактирования. |
UALE | 2009-12-21 | upload-autofill-lowercase-extensions | Автоматическая смена регистра расширения загружаемого файла на нижний. Плюс настройка $wgMaxFilenameLength максимальной длины имени файла в списках файлов с миниатюрами — в оригинале забито гвоздями значение 20, что очень мало, и из-за чего имена файлов часто обрезаются. |
USDMS | 2009-06-03 | unauth-save-display-modified-source | Показ изменённого, а не оригинального текста статьи при запрещённой попытке сохранения. Нужен, чтобы пользователь не потерял свои изменения при нажатии «Сохранить», если сохранять ему на самом деле запрещено. |
WDCS | 2009-12-14 | wfmsg-dont-clear-stripstate | По умолчанию не очищать $parser->mStripState при дополнительных вызовах parse(). Исправляет некоторое количество ошибок с непонятными длинными иероглифическими маркерами «--……..uniq--» в тексте статьи на месте каких-либо данных. На самом деле причина ошибки более глубока: парсер MediaWiki нереентерабелен, авторы об этом знают и, возможно, когда-нибудь исправят. |
Доработки
То есть патчи, добавляющие какой-либо новый функционал. Всего: 20.
Аббр. | Дата добавления | Имя | Описание патча |
---|---|---|---|
AH | 2010-07-23 | add-hooks | Добавление хуков. Требуется для расширений HttpAuth (для авторизации методом HTTP Basic) и Wikilog (для группировки свежих правок комментариев в блогах по имени поста на странице «улучшенных» свежих правок). |
ALT | 2009-11-20 | anchor-link-tocnumbers | Поддержка автоматической простановки номеров секций в ссылках на секции текущей страницы. То есть в ссылки вида «[[#Раздел]]» будет автоматически добавлен номер секции («2. Раздел»). |
CSL | 2010-03-25 | category-subcatlist | Патч расширения CategoryTree. Новый метод группировки страниц в категориях — не по первой букве имени, а по другим категориям, в которых они также перечислены. Чтобы включить этот метод, на страницу категории нужно добавить магическое слово __CATEGORYSUBCATLIST__. |
DAT | 2009-08-07 | dot-after-tocnumber | Настройка $wgDotAfterTocnumber, если true, то после номеров разделов в оглавлении ставится точка. |
DBT | 2010-05-21 | detailed-badtitle | Детализация сообщений об ошибках недопустимого имени страницы. |
DSAH | 2009-10-23 | detect-script-allow-html | Разрешение изменения списка тегов, запрещённых в тексте загруженных файлов — настройка $wgForbiddenTagsInUploads. |
EP | 2011-02-18 | env-proxy | Поддержка настроек HTTP прокси, заданных в стандартных переменных окружения http_proxy, http_no_proxy, при загрузке изображений по URL. |
FVS | 2011-02-11 | fix-vector-skin | Небольшая доработка и исправление скина Vector — возвращение возможности поместить поле поиска в левую панель через MediaWiki:Sidebar (что за тупость — удалять возможность). Плюс увеличение ширины верхнего поля поиска. |
HE | 2010-04-21 | html-emails | Часть расширения EnotifDiff. Поддержка отправки почты об изменениях и подтверждении e-mail адреса в формате HTML, а не в виде чистого текста. |
IAR | 2011-02-25 | intraacl-rights | Часть расширения IntraACL. Проверки прав доступа к страницам во всём коде MediaWiki. Собственно это и обеспечивает защиту. |
IEIC | 2009-05-13 | import-export-images-and-conflicts | Очень сильно улучшенный импорт/экспорт страниц MediaWiki. Отправлен в Wikimedia Bug 22881. |
ITF | 2011-02-11 | imagethumb-transform-flags | Передавать данные о том, откуда вызывается создание миниатюры файла. Нужно для FlvHandler’а, чтобы не вставлять код видеоплеера в галереи файлов и в миниатюры файлов в истории ревизий. |
LPWC | 2011-03-23 | longpagewarning-config | Поддержка настройки лимита размера статьи, по истечении которого показывается предупреждение MediaWiki:Longpagewarning. Баг такой у разработчиков mediawiki стоит, но решение они для него предложили очень странное — убрали нафиг проверку и разрешили делать эту проверку на уровне функций парсера. Глупость. |
LSA | 2011-03-23 | lcstore-accel | Поддержка кэширования локализации (LocalisationCache) в PHP ускорителе типа XCache. Странно, что этого нет в оригинале. |
PDD | 2011-02-11 ← 2010-07-26 | parser-debug-doblocklevels | Разрешать включать <center>...</center> и <blockquote>...</blockquote> внутрь абзаца. Две даты добавления — потому что патч, по сути, имел две версии — первая добавляла тупой хак, местами ломавший тесты, а вторая включает почти полностью переписанный корректный метод doBlockLevels(). |
REF | 2010-12-14 | rearrange-editform | Перемещение списков использованных в статье шаблонов и скрытых категорий на странице редактирования под форму редактирования, то есть, за пределы элемента <form>. Что необходимо для того, чтобы текст WikEd'овского AJAX-предпросмотра, то есть HTML-текст статьи, не включался в форму, потому что он сам может включать в себя формы, и тогда их содержимое некорректным образом попадает в форму редактирования, что потенциально приводит к неприятным багам. Плюс настройка $wgNoCopyrightWarnings для отключения предупреждений о копирайте (MediaWiki:Copyrightwarning, MediaWiki:Copyrightwarning2). |
SHL | 2009-06-18 | shift-included-templates-heading-levels | «Сдвиг» уровня заголовков статьи при её включении в подзаголовок. То есть если она включается под заголовком уровня N, то её заголовки 1-го уровня станут (1+N)-ого уровня, 2-го — (2+N), и т. п. |
SNH | 2009-05-13 | signature-nohyphen | Вставка подписей нажатием кнопки без двух лидирующих минусов «--». Плюс <m>...</m> вместо <math>...</math> на кнопке вставки TeX-формул (обрабатывается расширением MarkupBabel). |
TFN | 2009-05-13 | translit-upload-filenames | Автоматическое транслитерирование физических имён файлов (то есть имён файлов на диске) с кириллицы на латиницу под Windows. |
TS | 2010-10-15 | transclude-sections | Поддержка включений секций страниц с помощью синтаксиса вида {{:Статья#Секция}}. |
Устаревшие патчи
Под устаревшими понимаются патчи, более не нужные в связи с обновлением лежащего в основе кода. По сути, это означает, что данный патч либо исправлял какой-то баг, который исправили уже и сами авторы, либо был сам принят в состав MediaWiki (таких пока что, правда, нет), либо был переименован.
Аббр. | Дата добавления | Имя | Описание патча |
---|---|---|---|
CRDP | 2010-01-12 | cite-reenterability-for-different-parser-objects | Патч расширения Cite, направленный на его реентерабельность. |
FCRW | 2009-05-13 | fix-cannot-redeclare-wfspecialupload | Исправление ошибки «Fatal error: Cannot redeclare wfspecialupload()» при загрузке изображения без авторизации. Плюс поддержка HTTP прокси, заданной в стандартной переменной окружения http_proxy, при загрузке изображений по ссылке. |
HAR | 2010-04-27 | haloacl-rights | /* переименован в intraacl-rights */ Часть расширения HaloACL. Проверки прав доступа к страницам во всём коде MediaWiki. Собственно это и обеспечивает защиту. |
IGTT | 2009-09-11 | imagegallery-tell-transform, imagepage-tell-transform | /* патчи объединены в imagethumb-transform-flags */ Передавать данные о том, откуда вызывается создание миниатюры файла. Нужно для FlvHandler’а, чтобы не вставлять код видеоплеера в галереи файлов и в миниатюры файлов в истории ревизий. |
TMF4 | 2009-11-24 | trunk-mediafunctions-for-1.14 | Патч trunk-версии расширения MediaFunctions, позволяющий ей работать в MediaWiki 1.14.1. |
Расширения
Для большинства расширений, присутствующих в SVN Wikimedia, используется их версия, соответствующия версии MediaWiki — например, для версии 1.14.1 расширения берутся из tags/REL1_14_1/extensions. Однако версии некоторых расширений, соответствующие версии MediaWiki, имеют различные неприятные баги, или их там вообще ещё нет, и тогда берётся их trunk-версия (то есть самая новая) из trunk/extensions, возможно, как-то допиливается, например, с помощью патчей, и включается в сборку.
Есть и расширения, которые вообще не попали в SVN, и у которых нет даже своего репозитория с кодом, а есть только где-то выложенные файлики, или даже просто PHP-код на вики-страницах. Такие сохраняются в нашем локальном SVN, там же дорабатываются, и включаются в сборку оттуда. Вообще говоря, у нас есть «супер-система» автоматического объединения кода и патчей из нескольких источников на основе Mercurial и pbranch, но это немного другая история.
Всего: 58.
Статус - это статус доработок расширения. Легенда:
- Н = Не изменённые
- Включены в сборку без изменений. Всего: .
- О = Отлаженные
- Включены в сборку после отладки, back-портирования, либо мелких доработок. Всего: .
- Д = Доработанные
- Включены в сборку после сильной доработки. Всего: .
- С = Созданные
- Созданые специально в рамках сборки. Всего: .
Статус | Название | Версия | Добавлено | Описание |
---|---|---|---|---|
Неизм | AllowGetParamsInWikilinks | 2009-04-27 | 2009-12-01 | Разрешение использования URL-параметров (?key=value) во внутренних вики-ссылках. |
Неизм | CharInsert | 1.16.2 | 2008-10-15 | Поддержка вставки шаблонов <charinsert> для MediaWiki:Edittools. См. также UserMessage, CharInsertList. |
Неизм | DeleteBatch | 1.16.2 | 2009-07-21 | Удаление множества страниц сразу со спецстраницы Служебная:DeleteBatch. |
Неизм | FullLocalImage | 1.16.2 | 20 | Добавление функций {{fullimage:ФАЙЛ}} и {{localimage:ФАЙЛ}}, возвращающих путь хранения файла на сервере (полный в первом случае и относительный во втором). |
Неизм | Google Analytics | trunk | 20 | Гугловский счётчик. Можно подключать на виках, установленных в интернете. |
Неизм | PagedTiffHandler | trunk | 20 | Поддержка TIFF-картинок. |
Неизм | ParserFunctions | 1.16.2 | 20 | Функции парсера типа {{#if:}}, {{#ifeq:}} и т. п. Справка тут. |
Неизм | PreferencesExtension | 1.16.2 | 20 | Расширение, используемое другими расширениями для добавления пользовательских настроек. Нужно в версиях MediaWiki < 1.16. |
Неизм | Renameuser | trunk | 20 | Переименование пользователя с корректным обновлением ссылок на него в БД. |
Неизм | SimpleForms | 1.16.2 | 20 | Поддержка добавления на страницы формочек с целью простого создания новых страниц по шаблону. |
Неизм | StringFunctions | 1.16.2 | 20 | Строковые функции парсера типа {{#sub:}}. В новых версиях объединены с ParserFunctions, но у нас 1.14.1, а там ещё нет. |
Неизм | SyntaxHighlight_GeSHi | 1.16.2 | 20 | Поддержка подсветки синтаксиса в большинстве распространённых языков программирования с помощью GeSHi. Используется тег <source>. И будет использоваться всегда, несмотря на то, что в новых версиях расширения его заменяют <syntaxhighlight> (маразм). |
Неизм | UserMerge | trunk | 20 | Объединение и удаление учётных записей пользователей с корректным изменением ссылок в БД. |
Неизм | WhoIsWatching | 1.16.2 | 20 | Ответ на вопрос «кто наблюдает за данной страницей?» со страницы Служебная:WhoIsWatching. |
Неизм | WikiCategoryTagCloud | 1.16.2 | 20 | Вставка облаков тегов на страницы. Тегами считаются категории. |
Отлаж | Cite | 1.16.2 | 20 | Поддержка сносок на вики-страницах (теги < Оref> О и < Оreferences> О). Внесены изменения патчем. |
Отлаж | MediaFunctions | trunk | 20 | Поддержка функций для получения информации о загруженных файлах. Внесены изменения патчем для работы trunk’овой версии в 1.14.1. |
Отлаж | PdfHandler | trunk | 20 | Медиаобработчик для PDF-файлов. То есть, поддержка загрузки PDF’ок, их постраничного просмотра и вставки страниц PDF как изображений. Иногда может создавать проблемы, ибо ghostscript обрабатывает некоторые PDF’ки с очень большим трудом, потреблением дискового пространства на /tmp и процессорного времени. Внесены изменения патчем. |
Отлаж | MultiCategorySearch | 1.16.2 | 20 | Спецстраница Служебная:MultiCategorySearch для поиска страниц, включённых в несколько категорий сразу. |
Отлаж | SimpleTable | 1.16.2 | 20 | Поддержка простого (вменяемого) синтаксиса для вставки таблиц — тега < Оtab>. |
Отлаж | Drafts | 1.16.2 | 20 | Поддержка сохранения черновиков в процессе редактирования страниц, плюс авто-сохранение каждую минуту, чтобы не потерять свои труды, если браузер вдруг накроется. |
Отлаж | CategoryTree | 1.16.2 | 20 | AJAX-раскрываемые деревья категорий на спецстранице и страницах самих категорий. Внесены изменения патчами для поддержки альтернативной группировки страниц в категории и удаления плюсиков ([+]) у категорий, не содержащих подкатегорий, в деревьях. |
Отлаж | AnyWikiDraw | 1.16.2 | 20 | Поддержка вставки рисованных с помощью Java-апплета картинок на вики-страницы. Увы, нетривиальна в эксплуатации, ибо апплет. |
Отлаж | OpenID | 1.16.2 | 20 | Поддержка входа в вики по офигически глючной, но самой распространённой технологии единого входа — OpenID. |
Отлаж | Interwiki | trunk | 20 | Междувиковые ссылки, включения, редактирование таблиц интервики. Внесены изменения патчем. |
Отлаж | reCAPTCHA | 1.16.2 | 20 | Реализация популярной CAPTCHA («Публичного Полностью Автоматического Теста Тьюринга для Различения Компьютера и Человека»), короче говоря, антиспам для вики-систем, установленных в интернете. У нас, кстати, по умолчанию только что зарегистрированные пользователи не могут создавать новые страницы. |
Отлаж | SpecialForm | 1.16.2 | 20 | Ещё одно расширение для создания страниц из форм по шаблонам. Вероятно, от него вскоре полностью откажемся в пользу SimpleForms. |
Отлаж | SVNIntegration | 1.16.2 | 20 | Не используется и является хорошей «дырой» в subversion, но позволяет вставлять на страницы файлы из Subversion или информацию о них. |
Отлаж | PlantUML | 1.16.2 | 20 | Рисование UML-диаграмм с помощью PlantUML. |
Отлаж | Workflow | 1.16.2 | 20 | Небольшое расширения для вставки «переключаемых» состояний страниц (можно назвать «информерами»), реализованных через категории. |
Отлаж | SVGEdit | trunk | 20 | Поддержка браузерного JavaScript-редактора SVG-Edit для редактирования SVG’шек в MediaWiki. Ошибка синхронизации при открытии, кстати, исправлена. |
Дораб | Calendar | 1.16.2 | 20 | Расширение-календарь событий для MediaWiki, на котором каждое событие, либо каждый день с событиями, хранится на вики-странице. |
Дораб | FlvHandler | 1.16.2 | 20 | Поддержка вставки Flash-видеоплееров на страницы с использованием обычного синтаксиса [[Файл:Видео.mp4]]. Поддерживаются видеокодеки FLV+MP3 или H.264+AAC в контейнерах FLV или MP4. |
Дораб | MagicNumberedHeadings | 1.16.2 | 20 | Магические слова _ Д_NUMBEREDHEADINGS__ и _ Д_NONUMBEREDHEADINGS__, принудительно включающие/выключащие нумерацию заголовков на страницах вне зависимости от пользовательских настроек. В оригинальной версии есть только включающее слово. |
Дораб | SphinxSearch | 1.16.2 | 20 | Замена стандартного вики-поиска поиском на основе движка Sphinx. Также см. инструкции по установке: SphinxSearch (Mediawiki4Intranet)#Установка. |
Дораб | Wikilog | svn62933 | 2009-09-08 | Блоги, форумы, иерархические комментарии, календарик записей на основе MediaWiki, импорт блогов из экспортных файлов blogger.com. Заметка по поводу качества кода: авторы (в основном Juliano F. Ravasi), по-моему, перемудрили с объектной ориентированностью, всё это можно было написать раза в 2 компактнее. |
Созд | BatchEditor | 20 | Расширение для массового редактирования множества страниц с помощью замен строк или регулярных выражений. | |
Созд | BugzillaBuglist | 20 | Расширение для включения списков багов из Bugzilla из-под специально заданного пользователя (соответственно, со специально заданными правами). В виде обычных таблиц. | |
Созд | CategoryTemplate | 20 | Расширение для быстрого создания страниц в категории по шаблону. | |
Созд | CharInsertList | 20 | Расширение, похожее на CharInsert, полезное исключительно для использования с «EditTools», и позволяющее вставлять выпадающие списки для вставки шаблонов, аналогичных CharInsert’овским. | |
Созд | CustisScripts | 20 | «композитное» пока-что не разделённое расширение. Включает в себя: WikEd, русскоязычный Викификатор, «автопредпросмотр» AKA Live Preview (показывает в отдельном окне браузера автоматически обновляемый в процессе редактирования предварительный просмотр страницы), плюс несколько изменений CSS стилей. | |
Созд | DocExport | 20 | ||
Созд | EnotifDiff | 20 | Отправка почты об изменениях наблюдаемых страниц в формате HTML, опциональное включение в них diff’ов (текстов различий), отправка писем о подтверждении e-mail адресов в формате HTML. | |
Созд | GlobalAuth | 20 | Поддержка самопального веб-протокола Single Sign-On в MediaWiki (как клиентской, так и серверной стороны). | |
Созд | HttpAuth | 20 | Поддержка входа в Wiki с использованием HTTP Basic авторизации. Полезно, например, для доступа к RSS/Atom лентам в закрытых с помощью HaloACL вики-системах из читалок. | |
Созд | IntraACL | 2011 | 20 | Лучшее (из двух работающих) расширение MediaWiki, реализующее права доступа к страницам. За основу взято HaloACL, но практически полностью переписано. См. подробнее IntraACL. 100%-ной гарантии соблюдения прав в MediaWiki всё равно никогда нет, потому что она не создавалась в расчёте на это, и большинство расширений лазают в базу как попало и, соответственно, могут вытащить оттуда любую информацию. Однако в пределах сборки Mediawiki4Intranet IntraACL работает. |
Созд | ListFeed | 20 | Генерация RSS-лент из вики-списков (* или #). | |
Созд | MarkupBabel | 20 | Ещё одно «композитное» расширение, включающее поддержку LaTeX-формул, Graphviz-графов, Gnuplot-графиков, процентных диаграмм, UML-схем через UMLGraph. | |
Созд | MediawikiQuizzer | 20 | ||
Созд | MMHandler | 20 | Медиаобработчик для вставки Flash-плагина просмотра майндмапов («интеллектуальных карт» или «диаграмм связей») формата *.mm (FreeMind, FreePlane) с помощью обычного синтаксиса вставки изображений [[Файл:Mindmap.mm]]. | |
Созд | Polls | 20 | ||
Созд | S5SlideShow | 20 | Оно же MWSlideology. | |
Созд | SubPageList2 | 20 | ||
Созд | SiteExport | 20 | ||
Созд | SWFUpload | 20 | ||
Созд | UserMagic | 20 | ||
Созд | UserMessage | 20 | ||
Созд | WikiBookmarks | 20 |
Установка
Чтобы установить MediaWiki4Intranet, нужно:
- Cклонировать mercurial-репозиторий из Google Code: hg clone http://mediawiki4intranet.googlecode.com/hg/ mediawiki4intranet.
- Обновиться до ветки mw4install: hg up mw4install.
- В директории для установки создать папку images, читаемую и записываемую веб-сервером.
- Создать для вики MySQL базу данных и пользователя с полным доступом к ней.
- Запустить вики-установщик из папки config, то есть, зайти на http://server/wiki/config/, ответить на вопросы, исправить недоразумения (если таковые возникнут), выбрать базу MySQL, InnoDB, 4.1/5.0 utf8 binary. Установщик создаст пустую БД и конфиг.
- Удалить конфиг, сгенерированный установщиком — в нём куча опций, которые все уже прописаны в правильные значения в конфигах MediaWiki4Intranet.
- Создать минимальный конфиг MediaWiki4Intranet (LocalSettings.php):
<?php require_once 'custisinstall/ServerSettings.php'; # это под UNIX, либо BaseSettings.php для винды $wgDBname = 'wiki'; # имя БД $wgDBuser = ''; # логин и пароль с полным доступом к этой БД $wgDBpassword = ''; $wgDBadminuser = $wgDBuser; $wgDBadminpassword = $wgDBpassword; $wgScriptPath = '/wiki';
- Запустить php maintenance/update.php из директории установки вики.
Системные требования
Минимальные требования — на случай, если кто-то забыл про стандартный веб-стек:
- PHP версии 5 или выше.
- Веб-сервер. Проще всего использовать Apache, хотя теоретически должны поддерживаться и IIS, и nginx + php_fpm.
- СУБД MySQL, желательно, версии 5 или выше.
- Желательна UNIX-система.
Также нужны следующие расширения PHP:
- php5-mysql обязательно! :-)
- php5-gd для обработки картинок.
- php5-curl для загрузки файлов по URL.
- php5-xcache для ускорения работы MediaWiki.
- php5-fss тоже для ускорения, см. по ссылке.
Под Windows не работает следующий функционал MediaWiki4Intranet:
- Отправка почты в формате HTML
- По умолчанию отключён Sphinx-поиск
- По умолчанию отключена поддержка PDF и Djvu
- По умолчанию отключено слияние при конфликтах редактирования, что включить, нужно установить Windows-версию утилиты diff3, и прописать в LocalSettings.php:
$wgDiff3 = 'путь к diff3';
- php5-fss собирать скорее всего задолбаетесь, а готовой виндовой версии нет.
Теперь для тех, кто считает, что MySQL — не база данных: сама-то MediaWiki поддерживает и PostgreSQL, и Sqlite, и Oracle, но, во-первых, не все расширения тоже их поддерживают, а во-вторых, при использовании MediaWiki никакого смысла в этих СУБД нет, потому что MediaWiki не генерирует сложные запросы. То есть, вообще.
Отправка E-mail
По умолчанию она включается только под UNIX’ами, потому что под виндой sendmail’а обычно нет. Однако когда включается, нужно поменять две следующие переменные в LocalSettings.php, иначе почта из вики так и будет приходить от Стаса Фомина:
$wgEmergencyContact = 'admin@your.wiki'; # e-mail $wgPasswordSender = $wgEmergencyContact;
Также, для отправки почты в формате HTML (а не plaintext) нужны PEAR-пакеты Mail и Net_SMTP:
- pear install Mail; pear install Net_SMTP, либо
- apt-get install php-mail php-net-smtp (Debian, Ubuntu).
Короткие URL
Под «короткими URL» в вики понимаются адреса статей без index.php/ и тем более без index.php?title=, например, такой URL — «короткий»: http://wiki.4intra.net/Mediawiki4Intranet. Настраиваются с помощью конфигурации в LocalSettings.php:
$wgUsePathInfo = true; $wgArticlePath = '/$1';
И дополнительно — директив mod_rewrite:
RewriteCond %{THE_REQUEST} ^\S+\s*/*index.php/ RewriteRule ^index.php/(.*)$ /$1 [R=301,L,NE] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?title=$1 [L,B,QSA]
Всё относительно очевидно, но есть пара нюансов:
- В последней строчке обязательно использовать именно index.php?title=$1, а не index.php/$1, так как во втором случае при использовании [B] подстраницы (страницы с / в названии) становятся недоступны.
- Флаг [B] в последней строчке важен. Ибо без [B] mod_rewrite при переписи URL разэкранирует и не экранирует обратно спецсимволы (все, кроме латинских букв и цифр), из-за чего статьи с названиями, содержащими процент (%), становятся недоступны, потому что % в URL-кодировке — спецсимвол, и обязательно должен быть заменён на %25.
- Флаг [QSA] тоже нужен, ибо без него к ?title=$1 не дописываются остальные параметры URL.
- Первые две строчки нужны, чтобы с адресов, содержащих в себе index.php/, перенаправить пользователя на «короткие» — это убирает дублирование страниц, которое не любят поисковики.
php5-xcache
Рекомендуется установить и настроить XCache для PHP5. Это весьма неплохо ускоряет работу MediaWiki.
php5-fss
Замечательное расширение для PHP, позволяющее ускорить важнейшую для медиавики операцию — замену набора подстрок на набор других подстрок — примерно в 500 раз. «FSS» значит «Fast String Search» на основе алгоритмов Бойера-Мура и Комменца-Вальтера. Посмотреть доклад (мой, ага — VitaliyFilippov 16:21, 30 марта 2011 (MSD)) про это расширение можно здесь: lib:PHP-разгон: серебряная пуля из автомата Комменца-Вальтера (Commentz-Walter).
Реально это ускоряет работу MediaWiki в разы, особенно на больших статьях с большим количеством разметки (например, включений шаблонов, функций парсера…).
На зеркалах дебиана его нет, однако можно собрать из исходников вот отсюда:
Из исходников собирать нужно потому, что пакетов под i386 там нет, только под amd64. Сборка описана для тех, у кого есть под рукой Debian/Ubuntu.
Нужно скачать файлы:
- http://apt.wikimedia.org/wikimedia/pool/main/php5-fss/php5-fss_0.0.1.orig.tar.gz
- http://apt.wikimedia.org/wikimedia/pool/main/php5-fss/php5-fss_0.0.1-2.dsc
- http://apt.wikimedia.org/wikimedia/pool/main/php5-fss/php5-fss_0.0.1-2.diff.gz
И далее сказать:
dpkg-source -x php5-fss_0.0.1-2.dsc cd php5-fss-0.0.1 debian/rules binary dpkg -i ../php5-fss_0.0.1-2_i386.deb
Либо можно добавить в /etc/apt/sources.list зеркало http://apt.wikimedia.org/wikimedia/ (обязательно с deb-src), и дальше apt-get update; apt-get source php5-fss и дальше всё то же самое.
Для версий PHP >= 5.3 в коде расширения также следует изменить строчку
ZVAL_ADDREF(*value);
На строчку
Z_ADDREF_P(*value);
PDF, DJVU, LaTeX
Поддержка постраничного просмотра PDF и DJVU по умолчанию включается только под UNIX-ами. Если вы хотите включить её под Windows, есть большая вероятность, что вы считаете свой Windows почти UNIX’ом — тогда просто используйте ServerSettings.php вместо BaseSettings.php + добавьте
- PDF: GhostScript, Xpdf (windows)
- DJVU: djvulibre, netpbm (windows).
- LaTeX (формулы <m>…</m>): MiKTeX.
Всё это должно быть прописано в системные пути.
Debian:apt-get install djvulibre-bin netpbm ghostscript xpdf-utils
Graphviz, GNUplot, UMLGraph, PlantUML
- Graphviz желателен версии не меньше 2.27, так как в предыдущих есть различные мелкие баги.
- GNUPlot.
- UMLGraph, требует наличия Java.
- Для PlantUML тоже нужна Java. Сам PlantUML ставить не нужно, он уже есть в составе MediaWiki4Intranet.
Всё это, опять-таки, должно быть в путях.
Поддержка MP4/FLV видео
Здесь требуется ffmpeg (windows), прописанный в пути.
Sphinx-поиск по вики
Нужно установить и настроить Sphinx. Генератор готовых конфигураций есть в директории sphinxsearch: configure.sphinx.php.
Делаем так:
- Создаём рядом с ним файл sphinx.wikis.php, в который прописываем что-то вроде:
<code-php5> $wikis = array('HOST' => array(
array( 'name' => 'wiki', // имя индекса - должны быть разные для сожительствующих в одном sphinx'е вик 'user' => , // имя пользователя БД 'pass' => , // пароль к БД 'db' => , // имя БД ),
)); </code-php5>
- Вызываем php configure.sphinx.php --hostname HOST — под UNIX вместо HOST можно использовать имя из /etc/hostname, и тогда можно будет держать один конфиг на несколько серверов, и вызывать без опции --hostname.
- Будет создан файл sphinx.conf, который нужно скормить Sphinx’у — под UNIX это обычно означает положить его в /etc/sphinxsearch/.
- Добавить в /etc/crontab команды на переиндексацию, которые выведет конфигуратор.
- Если конфигуратор предложить инициализировать какие-то индексы и выведет для этого команды — делайте, что говорит.
Далее ещё нужно прописать в LocalSettings.php (заменить «wiki» на то, что вы использовали в параметре name в sphinx.wikis.php):
$wgSphinxSearch_index = 'main_wiki, inc_wiki';
Внимание: конфиги, сгенерированные таким образом, скорее всего, непригодны для использования под виндами. Вообще, мы под виндами сфинкса не используем и гарантировать работу тоже не можем.
Антиспам для публичных Wiki
В публичных Wiki имеют свойство заводиться спамеры, потому что можно легко зарегистрироваться и создать статью.
Поэтому желательно включить расширение reCAPTCHA, распространяемое вместе с MediaWiki4Intranet, получить ключи для своего домена на http://recaptcha.net/api/getkey, и прописать это всё в LocalSettings.php:
require_once('extensions/recaptcha/ReCaptcha.php'); // Sign up for these at http://recaptcha.net/api/getkey $recaptcha_public_key = ''; $recaptcha_private_key = '';
У спамеров есть ещё одно свойство — они регистрируются и сразу начинают создавать статьи. Поэтому, можно запретить создавать статьи после регистрации на какой-то период времени (в тяжёлых случаях можно, например, на 4 суток). Для этого нужно прописать следующие директивы в LocalSettings.php:
// Время, в течение которого запрещено создавать статьи (например, 4 суток * 86400 секунд в сутках) $wgAutoConfirmAge = 86400 * 4; $wgGroupPermissions['*']['edit'] = false; $wgGroupPermissions['*']['delete'] = false; $wgGroupPermissions['*']['undelete'] = false; $wgGroupPermissions['*']['createpage'] = false; $wgGroupPermissions['*']['createtalk'] = false; $wgGroupPermissions['user']['createpage'] = false; $wgGroupPermissions['user']['createtalk'] = false; $wgGroupPermissions['autoconfirmed']['createpage'] = true; $wgGroupPermissions['autoconfirmed']['createtalk'] = true; $wgGroupPermissions['sysop']['createpage'] = true; $wgGroupPermissions['sysop']['createtalk'] = true; $wgGroupPermissions['bureaucrat']['createpage'] = true; $wgGroupPermissions['bureaucrat']['createtalk'] = true;
OpenID
В MediaWiki4Intranet есть поддержка OpenID, хотя и глючная, как и вообще любая реализация OpenID. Это не наша вина, и даже не вина авторов расширения OpenID — виноваты здесь авторы библиотеки OpenID для PHP.
Чтобы включить её, нужно прописать следующее в LocalSettings.php:
require_once(«$IP/extensions/OpenID/OpenID.setup.php»);
Также можно установить PEAR-пакет Auth_OpenID (apt-get install php-openid в Debian). Это необязательно — MediaWiki4Intranet уже включает копию этой библиотеки. Однако если у вас есть копия новее, чем у нас — ставьте… И удаляйте директорию extensions/OpenID/Auth.