Знайомство з wiki-системою dokuwiki

Огляд вільної вікі-системи з веб-інтерфейсом DokuWiki, написаної на PHP і використовує файли в якості бази даних.

Вибором движка Wiki я турбувався, коли вирішив створити власний сайт, присвячений краєзнавства Києва. Мені потрібен був движок для довідника, який можна розробляти колективно, і важко уявити собі на цю роль технологію, відмінну від Wiki.

Але движків Wiki багато, хоча, звичайно ж, у всіх на слуху MediaWiki, що лежить в основі Wikipedia і багатьох інших подібних ресурсів. У мене був досвід роботи з MediaWiki - здавалося, що достатньо взяти і встановити. Але після інсталяції я вирішив спробувати що-небудь інше. Вибір припав на DokuWiki (www.dokuwiki.org), якій згодом і було віддано перевагу. На що здатна DokuWiki і чому мені вона сподобалася, я і розповім в цій статті.

Перші кроки після установки

Як і MediaWiki, DokuWiki - це PHP-додаток. Воно встановлюється в обраний каталог сайту, після чого можна починати роботу. А ось істотна відмінність від MediaWiki - використання звичайних текстових файлів (замість СУБД на кшталт MySQL або PostgreSQL) для зберігання даних. Це робить каталог установки DokuWiki повністю самодостатнім. Ви можете просто взяти його і перенести в інше місце (на інший сайт) або упакувати в архів резервну копію.

Знайомство з wiki-системою dokuwiki

При «першому запуску» DokuWiki пропонує установку, настройку різних параметрів. Спочатку йде активація ACL (Access Control List) для розмежування прав користувачів. Якщо ACL вимкнути, то всі відвідувачі wiki зможуть без реєстрації правити її вміст. З включеним ACL аноніми правити не можуть, а зареєстровані користувачі матимуть ті права, якими ви їх наділіть. ACL - це ще і графічний інтерфейс для управління користувачами, але зручніше і швидше вносити правки в файл настройки /conf/acl.auth/php. У ньому окремим групам або користувачам задаються права доступу для всіх або окремих сторінок. наприклад:

Це означає, що для всіх сторінок (*) користувач doom має доступ рівня 16. Рівні (або режими) доступу - це числа від 0 до 16 з певним кроком. Кожен рівень додає до попереднього одну нову можливість: читання, записи, створення і так далі. Ось список рівнів:

  • 0 - нічого;
  • 1 - читання;
  • 2 - правка існуючих статей;
  • 4 - створення нових статей;
  • 8 - завантаження файлів (картинок);
  • 16 - видалення статей.

Таким чином, рівень 16 - це майже адміністратор.

Знайомство з wiki-системою dokuwiki

Ім'я користувача пишеться в файлі налаштувань як є, а назва групи треба випереджати «@», наприклад: @ALL, @user. Щоб включити ACL, треба у файлі /conf/local.php написати:

Додавання користувачів в групах здійснюється в файлі /conf/users.auth.php, синтаксис якого очевидний, так що не буду вдаватися в подробиці.

Перед початком написання статей в Wiki, треба налаштувати важливу опцію кодування імен файлів. Це робиться або через веб-інтерфейс (Управління -> Параметри DokuWiki -> fnencode), або в файлі конфігурації /conf/local.php, рядком:

В останньому випадку після правки файлу настройки треба буде перезайти в вашу Wiki. Опція fnencode задає кодування, в якій зберігаються імена файлів в наборі символів, відмінному від ASCII. Оскільки назви файлів і назви статей взаємопов'язані, ваші статті з українськими назвами будуть записані під іменами файлів з українськими назвами. Тому оптимально вибрати для них UTF-8.

Взагалі всі налаштування можна правити через файл настройок. Відмінність від графічного інтерфейсу лише в тому, що немає локалізованих попереджень і підказок. Попередження з'являються, наприклад, при відключенні ACL, тому що в результаті виконання цієї операції з інтерфейсу «пропаде» вже перевірений адміністратором сайту меню.

З важливих параметрів, на які варто звернути увагу в першу чергу, ще виділю хіба що розмір завантаженого в wiki файлу (в байтах) - fetchsize. Решта правиться в міру необхідності.

Всупереч існуючій думці, що DokuWiki повільніше, ніж MediaWiki, через відсутність взаємодії з СУБД, DokuWiki все ж швидше готує сторінки для відображення в браузері - це відчувається просто під час роботи з вікі. Швидко працює пошук за назвами статей. Не так швидко, як при зверненні до СУБД, працює пошук по підрядку, неповного слову. (Прим. Ред. Втім, очевидно, що швидкість роботи буде багато в чому залежати від розмірів бази знань.)

Порожні рядки служать відмітками нових абзаців. Простий «новий рядок» пропускається. Щоб зробити жорсткий переклад рядка в потрібному місці, треба написати: «\\» (без лапок, звичайно), після чого зробити новий рядок або поставити пробіл. Дуже просто створювати виноски - укладаємо текст в подвійні дужки, і він автоматично нумерується і стає виноскою. наприклад:

DokuWiki підтримує створення виносок ((Виноска - пояснення внизу сторінки)), що дозволяє полегшити основний текст.

В цьому випадку при відображенні сторінки після слова «виносок» буде поставлено піднесений по вертикалі число, що позначає номер виноски. Натиснувши на нього мишею, користувач перенесеться в кінець сторінки, де й побачить текстове пояснення виноски, а саме, наприклад, «1) Виноска - пояснення внизу сторінки».

Ряд функцій, властивих MediaWiki внутрішньо, в DokuWiki реалізований через плагіни - наприклад, вирівнювання тексту або «редіректи». Втім, те ж справедливо і в зворотний бік: движок MediaWiki позбавлений деяких функцій, вбудованих в DokuWiki. Детальний порівняння можна побачити на сайті www.wikimatrix.org.

Для відображення на сторінці вихідного коду на будь-якій мові програмування, використовуються теги code і file. Усередині цих тегів зберігається уся вихідна форматування (прогалини, переноси рядків ...). Щоб включити додатково підсвічування синтаксису, треба вказати мову. наприклад:

А для вбудовування HTML:

У DokuWiki є підтримка таблиць з досить простим синтаксисом. Ось красномовний приклад таблиці з двома рядами по три колонки / ячейки в кожному:

Технологіям, подібним DokuWiki, треба давати оцінки з двох різних точок зору: адміністратора і користувача. Для користувача, DokuWiki - це швидкий засіб колективної роботи над текстами довідкового характеру. Інтерфейс досить інтуїтивний і має локалізацію російською мовою. Сукупність інтерфейсу і синтаксису DokuWiki не викликає здивування навіть у тих користувачів, які раніше мали лише далеке знайомство з більш популярною MediaWiki.

З точки зору адміністратора, DokuWiki також вельми зручна, особливо у випадках, коли правка wiki повинна здійснюватися «групою довірених осіб», а будь-якого користувача wiki виступають в ролі Новомосковсктелей. Звичайно, ніхто не заважає вам налаштувати wiki для загальної правки без жодних обмежень. Деяких адміністраторів турбує «нетрадиційність» движка DokuWiki - використання файлів замість СУБД. Але думка про «нетрадиційність» - від незнання технологій, що стоять за wiki-двигунами крім MediaWiki: без СУБД успішно працюють MoinMoin, TWiki, UseMod, PmWiki ... Втім, ця тема, скоріше, для ведення священної війни, яку я розвивати не хочу. Обирається вирішення тієї чи іншої задачі лежить, мені здається, більше в області особистих переваг адміністратора, ніж в об'єктивних судженнях про тієї чи іншої технології. Завжди корисно власноруч встановити ряд подібних продуктів, протестувати їх і порівняти можливості і швидкодія.