Създаване на схема на свързани статии във wiki
Наложи ми се да намеря начин за визуализация как точно са свързани дадени статии от wiki. След няколкодневно търсене и псуване открих комплект от плъгини за MediaWiki - DPL и Wgraph. Първият генерира динамични списъци от статии по зададен критерии, а вторият може да генерира графове ( като този на картинката ) от хмм… текст. Направо всичко е цветя и рози… ама не:
1. Проблемация първа – подкарването на Wgraph се оказа голям проблем. Първо описанието на инсталацията е хем подробно, хем неясно. Второ, подкарването на плъгина изисква свалянето на два отделни изпълними файла – aiSee и recode. На всичкото отгоре работи само aiSee2, не и последната версия ( познайте аз с коя пробвах първо ? )
2. Проблемация втора – след като свалите всичко, сложите правилните изпълними файлове в правилните директории, сложите им правилните права за стартиране ( ! ) и ги направите собственост на правилните потребители ( !!! ), получавате нещо от сорта при опит за генериране на графика:
<html><a href="/images/Wgraph/Main_Page_1.svg?1231800813" target=wgraph><img src="/images/Wgraph/Main_Page_1_thumb.png?1231800813" title="click for SVG .."></a> (made with <a href=http://semeb.com/dpldemo/Wgraph target=wgraph>Wgraph</a>) </html>
което изглежда като валиден HTML код, файла също е генериран правилно, картинката си е на място, просто не се показва. Първосигналната реакция беше да разреша HTML във wiki-то повсеместно, чрез параметъра “$wgRawHtml = true” в Localsettings.php, но и това не помогна. Чак след сериозно зачитане в кода на плъгина се оказа, че изхода му не е връщан коректно на MediaWiki и в резултат се очаква да е wikitext. На всичкото отгоре плъгина наглярски сам си разрешава $wgRawHtml, което определено е голяма дупка в сигурността, особено в публични wiki-та.
Решение на проблема – във Wgraph.php намирате следните редове:
global $wgRawHtml; $wgRawHtml = true;
и ги коментирате. След това намирате реда в който се връща резултата:
return $result; // . $wgraph. ":". $thumbResolution ."/".$resolution. ' , '.$clipThumb . '---'. $clipImg;
и го замествате с правилния:
return array( $result, noparse => true, isHTML => true );
Voila – имаме си графика. За повече информация защо и как действа това – прочетете тази статия[eng].
3. Проблемация последна – никъде не е документирано как точно да се вържат двата плъгина или по-точно как изхода от DPL да бъде докаран до валиден входен код за Wgraph. Истината е чак в 4-тия пример на сайта им, заровен дълбоко – използват се няколко темплейта на MediaWiki, за да се изфилтрират данните.
В крайна сметка се оказа, че са малко недоклатени плъгини ( по-точно Wgraph ), но правят това, което ми трябва. На наколко пъти обмислях да си седна на четирибуквието и да си напиша собсвен плъгин на базата на graphviz, който да не изисква подобни фокуси, но за съжаление това ще го оставим за по-добри времена.
Tweet

