Зв’язка Mediawiki та gnuplot

Ср, 4 Лют 2009

Ділюся отриманим досвідом інтеграції gnuplot в MediaWiki за допомогою розширення Девіда Сеймора – Gnuplot .

На момент написання статті маємо версію 1.0 (2008-01-19) з реліз статусом beta, думаю в майбутньому всі прикрі недоліки будуть виправлені і Open Source спільнота отримає хороший засіб для інтеграції Mediawiki та gnuplot.


Встановлення

Перед встановленням Mediawiki Gnuplot хотілося б сказати про його залежність від розширення Mediawiki Math яке теж необхідно встановити. Залежність чисто номінальна і зводиться до використання спільних конфігураційних змінних.

Я великий прихильник абсолютних шляхів, тому вище згадані конфігураційні змінні мене турбують. Для підвищення стабільності роботи (або то й для того щоб примусити це все працювати, як було в моєму випадку) рекомендую після інсталяції Mediawiki Math в файлі “LocalSettings.php” змінити шляхи на абсолютні:

1
2
$wgUploadPath = $IP . "/images";
$wgUploadDirectory = $IP . "/images";

Детальні інструкції по встановленню власне wiki розширення можна знайти на домашній сторінці Mediawiki Gnuplot. Там все просто і зрозуміло.

Пишемо патч для Mediawiki Gnuplot

Основною проблемою яку я виявив при розборі вихідного коду є генерація шляху в файловій системі замість генерування URL адреси до згенерованого файла.

Не треба бути генієм щоб здогадатися що автор працює на Windows XP та тестує написаний код виключно на localhost.

От якщо б автор принаймні спробував запустити цей код на будь-якому віддаленому сервері, то відразу б зрозумів що його розширення неможе працювати на жодній іншій операційній системі та і працювати на сервері в принципі, коли браузер бере файли не з файлової системи а отримує їх через HTTP.

Щоб виправити цей недолік треба переписати функцію getPlotImageURL() наступним чином:

1. В розділ global додати змінну $wgScriptPath що дозволить нам побудувати URL адресу.

1
2
3
4
5
6
global
	$wgMathDirectory,
	$wgMathPath,
	$image_format,
	$wgScriptPath
	;

2. При поверненні функцією значення формувати URL адресу на файл зображення:

1
return $wgScriptPath . '/images/math/' . $filename;

Приведений фрагмент коду залежить від налаштувань шляхів в Mediawiki Math. Якщо шляхи зберешення файлів у вас нетипові (як в інструкції) то значення “/images/math/” треба теж відповідно змінити.

Готове рішення

Можете завантажити готову пропатчену Gnuplot та перезаписати оригінальну версію в директорії /extensions/.

Файл: gnuplot.zip (2 KB)

Screenshot

Дописати

для додавання коду використовуйте тег
<pre line="1" lang="php"> echo 'hello!'; </pre>

Безкоштовний хостинг TOPUA