relativelinks plugin

relativelinks plugin by Andy Turner
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.
No compatibility info given!

Conflicts with relativens!
Similar to relativens.

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

    <?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.txt · Last modified: 2009/10/07 15:59 by laynee
     
    Except where otherwise noted, content on this wiki is licensed under the following license:CC Attribution-Noncommercial-Share Alike 3.0 Unported
    Imprint Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki
    WikiForumIRCBugsGitXRefTranslate