====== Dokuwiki ======
[[http://wiki.splitbrain.org/wiki: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 [[https://www.dokuwiki.org/rewrite#nginx|here]] and [[http://wiki.nginx.org/Dokuwiki|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;
                }
With version ''2020-07-29 Hogfather'' the rewritemode 2 was working, but then it was impossible to log in anymore...
===== 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''.
In version ''2020-07-29 Hogfather'' the default template has a sidebar, by creating the ":sidebar" page.
===== 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 [[http://wiki.splitbrain.org/wiki:plugins|here]]
Those I use are:
  * [[http://wiki.splitbrain.org/plugin:discussion|discussion]]
  * [[http://wiki.splitbrain.org/plugin:captcha|captcha]]
  * [[http://wiki.splitbrain.org/plugin:source|source]]
  * [[http://wiki.splitbrain.org/plugin:pageindex|PageIndex]]
  * [[http://wiki.splitbrain.org/plugin:searchindex|SearchIndex]]
  * [[http://wiki.splitbrain.org/plugin:latex|latex]]
  * [[http://wiki.splitbrain.org/plugin:comment|comment]]
  * [[http://wiki.splitbrain.org/plugin:comment|note]]
  * [[http://wiki.splitbrain.org/plugin:comment|tag]]
  * [[http://wiki.splitbrain.org/plugin:comment|keywords]]
==== 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 .= '';
+ $ret .= '';
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