DokuWiki Server

This guide is for installation instructions of a DokuWiki private site, or a DokuWiki help server for a Joomla 3.9 website installation and help pages served by DokuWiki. This is specific for my personal needs, but might help you in setting up a highly customized dokuwiki server instance.

Installation

  1. Go to Download DokuWiki and configure your download to include:
    • Version: stable
    • Languages: en, de, fr, ko, th
    • Popular Plugins: CAPTCHA, Upgrade, Wrap, Translation.
    • For a general purpose server, add Popular Plugins: Video Share, Gallery.
  2. Unzip the download to your web server directory, then run /path/to/wiki/install.php
  3. Install bethico template for DokuWiki
  4. Install the Icons Plugin for FontAwesome icons
  5. Install the condition Plugin
  6. Install the Include Plugin
  7. Install the date Plugin
  8. Install the TocTweak Plugin

General Purpose Server

  1. Install sqlite Plugin (required for Calendar Plugin)
  2. Install davcal Plugin (Calendar Plugin with CalDAV sharing support)
  3. FIXME hover css and icon links to websites

FIXME

  1. Google Maps Plugingrep -r “<html” and remove all <html> tags, disable html
  2. color Plugingrep -r “<color” and replace with wrap plugin

Settings

  • Add “admin” group for every administrator of the help server in User Manager.
  • Create the language namespaces (e.g. en, fr, de, ko, th) and set permissions to Read only for @ALL in Access Control List Management
  • Set “Use first heading for pagenames” to Always under Display in DokuWiki's Configuration Settings.
  • Set “Top level for table of contents=2”, “Minimum amount of headlines that determines whether the TOC is built=1”, “Maximum level for table of contents=4”, and “Maximum section edit level=4” under Display in DokuWiki's Configuration Settings.
  • Uncheck icon libraries other than FontAwesome from Icons plugin configuration in DokuWiki's Configuration Settings.
  • Add “_blank” to “Target window for external links” and “Target window for media links” under Links in DokuWiki's Configuration Settings.

Customization

There are a few core hacks required to make my template work properly, both for a regular wiki as well as for a help server. Note: you need to verify below modifications after every DokuWiki upgrade.

  1. Install my Bethico Template into /lib/tpl/. Current version is 2022-10-09 suitable for DokuWiki “Igor”.
  2. Add the following lines in doku.php in DokuWiki's root after line $ID = getID(); at the beginning…
    require_once(template('dispatcher.php'));
    $langcode = bethico_language();
  3. …and replace at the end line act_dispatch(); with
    init_lang($langcode);
    bethico_dispatch(basename(__FILE__));
  4. Copy doku.php to help.php in the DokuWiki root folder
  5. Modify /inc/template.php and add before line Event::createAndTrigger('TPL_TOC_RENDER', $toc, null, false); in function tpl_toc. This is a non-destructive change which fixes an issue in the table of contents if plugin condition is installed in the wiki
    if (@include_once(template('dispatcher.php'))) bethico_update_toc($toc, $TOC);
  6. Copies of the modified files for “Igor” are in folder /lib/tpl/bethico/core/, copy them with
    cp -R /lib/tpl/bethico/core/* /
  7. After a DokuWiki upgrade check and change if necessary
    1. Check /inc/actions.php and change /lib/tpl/bethico/dispatcher.php
    2. Check /inc/template.php and change
    3. Check /doku.php and change then copy to /help.php
  8. Optional: replace favicon and logo in '/lib/tpl/bethico/images/'.

Joomla Access

  • Set the Help URL in the component configuration of com_bethico to
    'https://your.wiki.server/help.php?id={langcode}:{keyref}'
  • Add a help button to view 'view' to open the help page
    JToolbarHelper::help('view', true);
  • With English as the active language it will invoke
    https://your.wiki.server/help.php?id=en:view

Help system

Joomla's default help url:

url example: https://help.joomla.org/proxy?keyref=Help{major}{minor}:{keyref}&lang={langcode}

Substitute tags:

Tag Name Example
{app} Application name 'Administrator'
{component} Component name 'com_content'
{keyref} Help screen key reference JToolbarHelper::help('{keyref}', true)
{language} Full language code 'en-GB'
{langcode} Short language code 'en'
{langregion} Region code 'GB'
{major} Joomla major version number
{minor} Joomla minor version number
{maintenance} Joomla maintenance version number

Upgrade to Version 2020-07-29 "Hogfather"

Plugin whoisonline

  1. Replace function handle($match, $state, $pos, &$handler) definition with function handle($match, $state, $pos, Doku_Handler $handler) in file lib/plugins/whoisonline/syntax.php
  2. Replace function render($mode, &$renderer, $data) definition with function render($mode, Doku_Renderer $renderer, $data) in file lib/plugins/whoisonline/syntax.php
  3. Set $conf['defer_js']=0; in file conf/dokuwiki.php

Todo: change menu system

PHP 8.1 issues

Plugin condition

  • Replace curly brackets string indices with square brackets in line 84 and 149 of plugins/condition/syntax.php if you run your webserver with PHP 8.

Plugin html5video

  • Put brackets enclosing the expressions on line 190 and 191 of plugins/html5video/syntax/video.php if you run your webserver with PHP 8.

davcal

Check when a date entry was made

  1. Copy /data/meta/davcal.sqlite3 to D:\
  2. Open sqlite3.exe command line tool from D:\PortableCustom\sqlite3, then enter the following commands to see entries made after 2023-01-01:
    .open /davcal.sqlite3
    SELECT calendardata FROM calendarobjects WHERE datetime(lastoccurence, 'unixepoch') > '2023-01-01 00:00:00';
    .quit