Table of Contents
relativelinks plugin
Compatible with DokuWiki
No compatibility info given!
Replaces standard wiki-base-centric links with relative ones (anything which doesn't start with . or : is assumed to be relative to the current namespace
The missing download url means that this extension cannot be installed via the Extension Manager. Please see Publishing a Plugin on dokuwiki.org. Recommended are public repository hosts like GitHub, GitLab or Bitbucket.
This extension has not been updated in over 2 years. It may no longer be maintained or supported and may have compatibility issues.
Similar to relativens
Description
Whether it is of general interest to the wider community or not, I would prefer it if DokuWiki's links were relative to the current document's namespace. As such, I created this incredibly simple plugin (based upon the first syntax plugin example) which rewrites the links that don't start with “.”, “..” or “:”.
Discussion
“Works for me, does what I want”
Hmm, doesn't work for me. I noticed that it messes up external links… oops.
$event->data = preg_replace( "/\[\[([^:.][^\/]*?(?:\|.*?))\]\]/", '[[.:${1}]]', $event->data );
Updated the regexp so that it doesn't match links with slashes in the address.
Code
- syntax.php
<?php /** * Relative Linking Plugin * * @author Andy Turner <public@ssbd.net> */ if(!defined('DOKU_INC')) die(); if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/'); require_once(DOKU_PLUGIN.'action.php'); class action_plugin_relativelinks extends DokuWiki_Action_Plugin { /** * return some info */ function getInfo(){ return array( 'author' => 'Andy Turner', 'email' => 'public [at] ssbd [dot] net', 'date' => '2008-03-07', 'name' => 'Relative Links', 'desc' => 'Replaces standard wiki-base-centric links with relative ones (anything which doesn\'t start with . or : is assumed to be relative to the current namespace)', ); } /** * Register its handlers with the DokuWiki's event controller */ function register(Doku_Event_Handler $controller) { $controller->register_hook('PARSER_WIKITEXT_PREPROCESS', 'BEFORE', $this, '_hookrellink'); } /** * Stick a colon in front of links... that's all :D * * @author Andy Turner <public [at] ssbd [dot] net> */ function _hookrellink(&$event, $param) { $event->data = preg_replace( "/\[\[([^:.][^\/]*?(?:\|.*?))\]\]/", '[[.:${1}]]', $event->data ); } }