MediaWiki, продолжение истории
4 комментария 19 февраля 2011, 22:53 • CMEngines, Работа
На днях я писал уже, что поставил mediawiki и несколько расширил её функционал несколькими расширениями. В процессе более глубокого колупания её потрохов выяснилось, что она не так проста, как кажется на первый взгляд. Как бы то ни было, но я всё же довел её до приемлемого функционала — причем приемлемого для меня, для обычных пользователей о возможно будет излишним. К примеру, в нашей Базе знаний теперь можно выстраивать семантические связи — нужный инструментарий есть, осталось только описать свойства всех уже имеющихся статьей и добавлять для новых. Если сказать о расширении расширений совсем кратко, то их число возросло почти в 3 раза с момента моей первой заметке о них.
К чему я веду — сегодня я завершил последний этап формального объединения трёх вик в одну. Формальное оно от того, что одна из вик была развёрнута на базе WackoWiki (с моими заплатами и некоторыми сторонними расширениями), у которой свой синтаксис и полностью его не удалось свести к синтаксису MediaWiki — значит статьи эти нужно пройтись и отредактировать ручками. К слову сказать, синтаксис ваки более очевидный, чем у медиавики.
Конвертация началась вчера вечером, но по ряду причин я плюнул на процесс и перенес финал на сегодняшнее утро. В git-репозитории компании ALTLinux нашелся конвертер на python для миграции с WackoWiki на MediaWiki — спасибо за это Google. Скачал я его, посмотрел инструкции, поправил файлы конфигурации, запустил и... ничего не получил. Удивился, залез в исходный код. Удивился ещё больше — оказалось, что код почти намертво прибит гвоздями к реалиям, бывшим в своё время в ALTLinux'е. Поправил код: выкинул кое-что лишнее (привязки ALTLinux'а), кое-что дописал. Проверил — работает, но странно. Снова «подпилил исходники» и вновь запуск. Потом итерация еще раз повторилась... Короче говоря, заставить работать этот код правильно (из python'а запускалась сначала вака, потом медиавики) мне не удалось. Да, я сознаюсь, что python я знаю не слишком хорошо — по крайней мере хуже perl'а.
В конце концов я плюнул на всё и написал свой конвертер на perl с дополнительным преобразованием разметки из синтаксиса ваки в синтаксис медиавики. Получилось пару скриптов — один извлекал данные из ваки и подготавливал их для импорта в медиавики, а второй запускал пакетный импорт в медиавики. В общей сложности получилось 2 Кб кода.
В общий доступ я эти скрипты не выкладываю из-за того, что они писались сугубо для моей версии WackoWiki R4.2-PL4, которая существенно отличается от стандартной R4.2. PL4 в версии говорит о том, что на этот движок был наложен 4-й патч-левел. Каждый такой патч-левел состоит из набора сторонних расширений и моих правок, которые в частности расширяли синтаксис ваки, коим мы и пользовались активно.
Semantic MediaWiki • 27 февраля 2011 г. в 17:40 edit_comment_link(__('Edit', 'sandbox'), ' ', ''); ?>
[...] рассказывал о своих боевых действиях на полях сражений с MediaWiki и на этот раз речь пойдёт о ней же, но теперь с [...]
Vitaly Lipatov • 2 марта 2011 г. в 07:03 edit_comment_link(__('Edit', 'sandbox'), ' ', ''); ?>
А нельзя всё же опубликовать код конвертора? Мне предстоит сконвертировать несколько вик, и не хотелось бы вручную или велосипед изобретать.
Александр Вольф • 2 марта 2011 г. в 21:07 edit_comment_link(__('Edit', 'sandbox'), ' ', ''); ?>
Код опубликовать могу, но... есть ли в нём необходимость? Насколько я понял из вопроса предстоит полная конвертация одной вики в другую. Мой конвертер этого не умеет — он только со страницами работает. Историю он тоже не забирает — мне не нужно было.
Александр Вольф • 2 марта 2011 г. в 21:37 edit_comment_link(__('Edit', 'sandbox'), ' ', ''); ?>
Короче говоря — код, из которого выкинуто несколько строк, нужных сугубо для моей версии ваки: git.altlug.ru/?p=alex-w/w...rt.git;a=summary