Зв’язка 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)