Dokuwiki

Dokuwiki is the wiki engine I am using. It seemed the nicer, more complete and easier to use to me.

Le faire fonctionner sur les pages persos de free.fr

Il y a quelques problèmes pour le faire fonctionner chez Free, mais quelqu'un a créé un patch qui résout tous les problèmes : http://forum.dokuwiki.org/thread/518.

Cependant dokuwiki est dorénavant banni chez Free. Si vous êtes détecté, votre compte sera suspendu pour le motif :

Les interfaces utilisant des fichiers locaux comme base de données/log sont interdites.

Install with Nginx

userewrite = 2 (dokuwiki is rewriting) did not work with nginx, so I wanted to switch to mode 1 where the web server manages rewriting.

There are suggestions of configuration here and here but they all seemed to assume that the wiki was at the root of the server, and the ”@dokuwiki” syntax did not work in my case, when I want to access the wiki with domain.tld/wiki.

Therefore I use this configuration, that in addition permanently redirects the old rewrite mode 2 to mode 1:

                # always needed
                location ~ /wiki/(data|conf|bin|inc) {
                        deny all;
                }

                # needed to support old rewrite
                location ~ /wiki/doku.php/ {
                        rewrite ^/wiki/doku.php/(.*) /wiki/$1 permanent;
                }

                # needed for new rewrite
                location ~ /wiki/lib/ {}
                location ~ /wiki/ {
                        rewrite ^/_media/(.*) /lib/exe/fetch.php?media=$1 last;
                        rewrite ^/_detail/(.*) /lib/exe/detail.php?media=$1 last;
                        rewrite ^/_export/([^/]+)/(.*) /doku.php?do=export_$1&id=$2 last;
                        rewrite ^/wiki/(.*) /wiki/doku.php?id=$1 last;
                }

The sidebar

One bottleneck of Dokuwiki in the standard version is navigation.

There is a template Sidebar which replaces the default template, which adds this sidebar with the index you can see at your left : http://wiki.jalakai.co.uk/dokuwiki/doku.php/start.

You just have to copy the content of the archive in Dokuwiki/lib/tpl, and either use the admin page to modify the template, or change in local.php :

$conf['template'] = 'sidebar-rc2006-09-28'; // the name of your template folder

You can change some options in sidebar/conf/tplfn_sidebar.php.

Disabling some automatic conversions

In particular if you use to write C/C++ code, you can find annoying that Dokuwiki replaced << and >> by « and ».

You can do that by commenting out the lines in conf/entities.conf.

Plugins

A list of all plugins is available here

Those I use are:

source

It wasn't finding the local files without giving the full path. So I've added several cases where if it fails to find the file, it tries to find it relatively to the website root and relatively to the dokuwiki media path.

syntax.php:166|_getSource
  $source = @file($this->location.$file);
+ if (empty($source)) $source = @file($_SERVER['DOCUMENT_ROOT']."/".$this->location.$file);
+ if (empty($source)) $source = @file(DOKU_INC."data/media/".$this->location.$file);
  if (empty($source)) return '';

pageindex

I modified it so that it displays directories/namespaces too, and displays recursively all pages.

syntax.php:24|search_list_index
- if ($type == 'd') return false;
+ if ($type == 'd')
+ {
+     $id = pathID($file);
+     if($opts['ns'].":$id" <> $ID)
+     {
+         $data[] = array(
+             'id'    => $opts['ns'].":$id",
+             'type'  => $type,
+             'level' => $lvl );
+     }
+     return true;
+ }

Show start on directory

To show the start page when clicking on a directory/namespace in the sidebar/index, and to hide the start page in the list of pages.

lib/scripts/index.js:28|treeattach
- addEvent(elem,'click',function(e){ return index.toggle(e,this); });
+ //addEvent(elem,'click',function(e){ return index.toggle(e,this); });

inc/html.php:642|html_list_index
  $base = substr($base,strrpos($base,':')+1);
+ if ($base == "start" && $item['id'] != "start") return $ret;
  if($item['type']=='d'){

inc/html.php:644|html_list_index
- $ret .= '<a href="'.wl($item['id'], "").':start" class="idx_dir"><strong>';
+ $ret .= '<a href="'.wl($ID,'idx='.rawurlencode($item['id'])).'" class="idx_dir"><strong>';

inc/html.php:664|html_li_index
  function html_li_index($item){
+ $base = ':'.$item['id'];
+ $base = substr($base,strrpos($base,':')+1);
+ if ($base == "start" && $item['id'] != "start") return;

Allow more file types for upload

In conf/mime.conf, add:

html    text/html
htm     text/html
txt     text/plain
conf    text/plain
xml     text/xml
bas     text/bas
pas     text/pas
c     text/c
cpp     text/cpp
cxx     text/cxx
h     text/h
hpp     text/hpp
hxx     text/hxx
software/dokuwiki.txt · Last modified: 2013/09/19 20:04 by cyril
 
Except where otherwise noted, content on this wiki is licensed under the following license: CC Attribution-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki