Table of Contents
autostart Plugin
Compatible with DokuWiki
- 2023-04-04 "Jack Jackrum" unknown
- 2022-07-31 "Igor" unknown
- 2020-07-29 "Hogfather" yes
- 2018-04-22 "Greebo" unknown
Similar to 404manager, autosearch
Description
If a non-existent page is requested, but a namespace with that name exists, and it has a start page, you will be redirected to it.
I think the autosearch plugin does this, but I haven't been able to obtain it.
Source Code
Create a directory autostart
in /lib/plugins
and save the code in a action.php
file there.
- action.php
<?php /** * Autostart Plugin: Redirects to the namespace's start page if available * * @author Jesús A. Álvarez <zydeco@namedfork.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_autostart extends DokuWiki_Action_Plugin { function getInfo() { return array ( 'author' => 'Jesús A. Álvarez', 'email' => 'zydeco@namedfork.net', 'date' => '2008-04-28', 'name' => 'Autostart Plugin', 'desc' => "Redirect from the namespace's name to its start page", 'url' => 'https://www.dokuwiki.org/plugin:autostart', ); } function page_exists($id) { if (function_exists('page_exists')) return page_exists($id); else return @file_exists(wikiFN($id)); } function register(Doku_Event_Handler $controller) { $controller->register_hook('ACTION_ACT_PREPROCESS', 'AFTER', $this, 'preprocess', array ()); } function preprocess(& $event, $param) { global $conf; global $ID; if (!$this->page_exists($ID) && $event->data == 'show') { if($this->page_exists($ID.':'.$conf['start'])) // start page inside namespace $id = $ID.':'.$conf['start']; elseif($this->page_exists($ID.':'.noNS(cleanID($ID)))) // page named like the NS inside the NS $id = $ID.':'.noNS(cleanID($ID)); if ($id) header('Location: ' . wl($id,'',true)); } } }
Discussion
Great extension, been using for several years. However, the current download URL returns 404 Not Found — Eric Searcy 2016-07-22
Nice work! Thanks! - Jason Xun Xu jasonxu [dot] dev [at] gmail [dot] com
Very handy plugin, great work! By the way: redirecting into a namespace (e.g. foobar → foobar:start) only works if the user/group has at least read permissions for the underlying/root namespace. In certain setups, e.g. one namespace per customer, this can be very tedious to securely implement. By removing a condition for the HTTP redirect this works out and permissions are checked on the target page anyway.
--- lib/plugins/autostart/action.php.orig 2009-11-24 20:41:31.000000000 +0100 +++ lib/plugins/autostart/action.php 2009-11-24 20:42:58.000000000 +0100 @@ -36,7 +36,7 @@ function preprocess(& $event, $param) { global $conf; global $ID; - if (!$this->page_exists($ID) && $event->data == 'show') + if (!$this->page_exists($ID)) { if($this->page_exists($ID.':'.$conf['start'])) // start page inside namespace
Andreas de Pretis ad [at] 25th [dash] floor [dot] com
Thanks, I'm using the plugin with Andreas' patch on 2013-05-10a “Weatherwax” with no issues. — Justin K 2013-09-24
I changed download link to gihtub repo into my account, when the author want it i will transfer to him account
https://github.com/parmaja/autostart
— zaher 2020-11-15 17:38