DokuWiki

It's better when it's simple

User Tools

Site Tools


plugin:relativelinks

This is an old revision of the document!


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

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

Tagged with links

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

<?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(&$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.1254820977.txt.gz · Last modified: 2009-10-06 11:22 by laynee

Except where otherwise noted, content on this wiki is licensed under the following license: CC Attribution-Share Alike 4.0 International
CC Attribution-Share Alike 4.0 International Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki