Dokuwiki
From ThorstensHome
This describes my patches to adapt Dokuwiki for my needs
Contents |
allow h6 headings
This is a little patch for dokuwiki to allow h6 headings.
/srv/www/htdocs/dokuwiki/inc/parser # diff -rup parser-org.php parser.php --- parser-org.php 2009-10-20 15:49:57.000000000 +0200 +++ parser.php 2009-10-20 15:48:25.000000000 +0200 @@ -223,7 +223,7 @@ class Doku_Parser_Mode_header extends Do function preConnect() { //we're not picky about the closing ones, two are enough $this->Lexer->addSpecialPattern( - '[ \t]*={2,}[^\n]+={2,}[ \t]*(?=\n)', + '[ \t]*={1,}[^\n]+={1,}[ \t]*(?=\n)', 'base', 'header' );
redirects
With this patches I have the problem that they only work on new pages, i.e. pages that I viewed/created after I applied the patches. Seems the rendered pages are cached.
This uses the DokuWiki Goto Plugin
Replace GOTO with REDIRECT:
/srv/www/htdocs/dokuwiki/lib/plugins/goto # diff -rup syntax.php.org syntax.php --- syntax.php.org 2010-01-16 21:48:26.000000000 +0100 +++ syntax.php 2010-01-16 21:47:36.000000000 +0100 @@ -28,7 +28,7 @@ class syntax_plugin_goto extends DokuWi } function connectTo($mode) { - $this->Lexer->addSpecialPattern('(?i)~~GOTO>.+?~~',$mode,'plugin_goto'); + $this->Lexer->addSpecialPattern('(?i)#REDIRECT [[.+?]]',$mode,'plugin_goto'); } function getSort() { @@ -45,7 +45,7 @@ class syntax_plugin_goto extends DokuWi $message = "<strong>You will be redirected to %d in approximately %s seconds.</strong>"; global $ID; - $matches = explode("?", substr($match,7,-2)); + $matches = explode("?", substr($match,12,-2)); if (is_numeric($matches[1])){ $seconds = $matches[1]; } if ($seconds < $minSeconds){ $seconds = $minSeconds; }//Check that seconds is greater than $minSeconds. resolve_pageid(getNS($ID), $matches[0], $exists);
use mediawiki syntax in dokuwiki
Take a look at inc/parser/handler.php, function header().
preformatted
@@ -522,12 +523,13 @@ class Doku_Parser_Mode_html extends Doku class Doku_Parser_Mode_preformatted extends Doku_Parser_Mode { function connectTo($mode) { + echo "hi"; // Has hard coded awareness of lists... - $this->Lexer->addEntryPattern('\n (?![\*\-])',$mode,'preformatted'); + $this->Lexer->addEntryPattern('\n (?![\*\-])',$mode,'preformatted'); $this->Lexer->addEntryPattern('\n\t(?![\*\-])',$mode,'preformatted'); // How to effect a sub pattern with the Lexer! - $this->Lexer->addPattern('\n ','preformatted'); + $this->Lexer->addPattern('\n ','preformatted'); $this->Lexer->addPattern('\n\t','preformatted'); }
unordered list items
diff -rup ../../../dokuwiki-org/inc//parser/handler.php ../../../dokuwiki/inc//parser/handler.php --- ../../../dokuwiki-org/inc//parser/handler.php 2010-03-20 12:06:55.542759536 +0100 +++ ../../../dokuwiki/inc//parser/handler.php 2010-03-20 12:58:04.250509934 +0100 @@ -1000,7 +1000,7 @@ class Doku_Handler_List { } // Is the +1 needed? It used to be count(explode(...)) // but I don't think the number is seen outside this handler - return substr_count(str_replace("\t",' ',$match), ' ') + 1; + return substr_count(str_replace("\t",' ',$match), '*') + 1; } } diff -rup ../../../dokuwiki-org/inc//parser/parser.php ../../../dokuwiki/inc//parser/parser.php --- ../../../dokuwiki-org/inc//parser/parser.php 2010-03-20 12:06:55.543759723 +0100 +++ ../../../dokuwiki/inc//parser/parser.php 2010-03-20 13:00:31.737537661 +0100 @@ -413,11 +413,11 @@ class Doku_Parser_Mode_listblock extends } function connectTo($mode) { - $this->Lexer->addEntryPattern('\n {2,}[\-\*]',$mode,'listblock'); - $this->Lexer->addEntryPattern('\n\t{1,}[\-\*]',$mode,'listblock'); + $this->Lexer->addEntryPattern('\n {0,}[\-\*]+',$mode,'listblock'); + $this->Lexer->addEntryPattern('\n\t{0,}[\-\*]+',$mode,'listblock'); - $this->Lexer->addPattern('\n {2,}[\-\*]','listblock'); - $this->Lexer->addPattern('\n\t{1,}[\-\*]','listblock'); + $this->Lexer->addPattern('\n {0,}[\-\*]+','listblock'); + $this->Lexer->addPattern('\n\t{0,}[\-\*]+','listblock'); }
Headings
Headings in dokuwiki are different from headings in mediawiki. While ====== means Heading 1 in Dokuwiki, it means Heading 6 in mediawiki. The following patch changes this:
--- dokuwiki-org/inc/parser/xhtml.php 2010-03-20 10:42:34.000000000 +0100 +++ dokuwiki/inc/parser/xhtml.php 2010-03-20 14:37:38.000000000 +0100 @@ -100,8 +100,8 @@ class Doku_Renderer_xhtml extends Doku_R global $conf; //handle TOC - if($level >= $conf['toptoclevel'] && $level <= $conf['maxtoclevel']){ - $this->toc[] = html_mktocitem($id, $text, $level-$conf['toptoclevel']+1); + if($level >= $conf['toptoclevel'] && (7-$level) <= $conf['maxtoclevel']){ + $this->toc[] = html_mktocitem($id, $text, (7-$level)-$conf['toptoclevel']+1); } } @@ -123,7 +123,7 @@ class Doku_Renderer_xhtml extends Doku_R $this->lastlevel = $level; // write the header - $this->doc .= DOKU_LF.'<h'.$level.'><a name="'.$hid.'" id="'.$hid.'">'; + $this->doc .= DOKU_LF.'<h'.(7-$level).'><a name="'.$hid.'" id="'.$hid.'">'; $this->doc .= $this->_xmlEntities($text); $this->doc .= "</a></h$level>".DOKU_LF; }
All
tweedleburg:/srv/www/htdocs/dokuwiki/inc # diff -rup parser.org/ parser diff -rup parser.org//parser.php parser/parser.php --- parser.org//parser.php 2009-10-23 08:44:18.000000000 +0200 +++ parser/parser.php 2009-10-23 09:42:24.000000000 +0200 @@ -221,7 +221,7 @@ class Doku_Parser_Mode_header extends Do function preConnect() { //we're not picky about the closing ones, two are enough $this->Lexer->addSpecialPattern( - '[ \t]*={2,}[^\n]+={2,}[ \t]*(?=\n)', + '[ \t]*={1,}[^\n]+={1,}[ \t]*(?=\n)', 'base', 'header' ); @@ -523,11 +523,11 @@ class Doku_Parser_Mode_preformatted exte function connectTo($mode) { // Has hard coded awareness of lists... - $this->Lexer->addEntryPattern('\n (?![\*\-])',$mode,'preformatted'); + $this->Lexer->addEntryPattern('\n (?![\*\-])',$mode,'preformatted'); $this->Lexer->addEntryPattern('\n\t(?![\*\-])',$mode,'preformatted'); // How to effect a sub pattern with the Lexer! - $this->Lexer->addPattern('\n ','preformatted'); + $this->Lexer->addPattern('\n ','preformatted'); $this->Lexer->addPattern('\n\t','preformatted'); } @@ -545,11 +545,11 @@ class Doku_Parser_Mode_preformatted exte class Doku_Parser_Mode_code extends Doku_Parser_Mode { function connectTo($mode) { - $this->Lexer->addEntryPattern('<code(?=.*</code>)',$mode,'code'); + $this->Lexer->addEntryPattern('<pre(?=.*</pre>)',$mode,'code'); } function postConnect() { - $this->Lexer->addExitPattern('</code>','code'); + $this->Lexer->addExitPattern('</pre>','code'); } function getSort() { Only in parser: parser.php~ diff -rup parser.org//xhtml.php parser/xhtml.php --- parser.org//xhtml.php 2009-10-23 08:44:18.000000000 +0200 +++ parser/xhtml.php 2009-10-23 09:38:15.000000000 +0200 @@ -99,7 +99,7 @@ class Doku_Renderer_xhtml extends Doku_R //handle TOC if($level >= $conf['toptoclevel'] && $level <= $conf['maxtoclevel']){ - $this->toc[] = html_mktocitem($id, $text, $level-$conf['toptoclevel']+1); + $this->toc[] = html_mktocitem($id, $text, (7-$level)-$conf['toptoclevel']+1); } } @@ -112,7 +112,7 @@ class Doku_Renderer_xhtml extends Doku_R $this->toc_additem($hid, $text, $level); // write the header - $this->doc .= DOKU_LF.'<h'.$level.'><a name="'.$hid.'" id="'.$hid.'">'; + $this->doc .= DOKU_LF.'<h'.(7-$level).'><a name="'.$hid.'" id="'.$hid.'">'; $this->doc .= $this->_xmlEntities($text); $this->doc .= "</a></h$level>".DOKU_LF; } Only in parser: xhtml.php~
getting plugins from github
tstaerk: works with a tgz content like this: /pluginname/plugin.info.txt
TroubleShooting
Plugin cannot be unpacked
Symptom:
The plugin manager was unable to decompress the downloaded file. This maybe as a result of a bad download, in which case you should try again; or the compression format may be unknown, in which case you will need to download and install the plugin manually.
Solution: Install the zlib package for php, e.g. php5-zlib
See also
- mediasyntax - my plugin to have mediawiki syntax in dokuwiki
- http://johbuc6.coconia.net/mediawiki2dokuwiki.php
- http://www.dokuwiki.org/devel:parser?s[]=wiki&s[]=parser