DokuWiki

It's better when it's simple

User Tools

Site Tools


plugin:relativelinks

relativelinks plugin

Compatible with DokuWiki

No compatibility info given!

plugin 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

Last updated on
2008-03-07
Provides
Syntax
Conflicts with
relativens

This extension has not been updated in over 2 years. It may no longer be maintained or supported and may have compatibility issues.

Tagged with links, namespace

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 );
  }
}
plugin/relativelinks.txt · Last modified: 2017-10-28 15:10 by turnermm