dokuwiki-plugin-childrenpages/action.php
vv221 a1c1c23c45 Only take action if the current page is not included in a namespace
This is to avoid recursive children pages creation, a future update will
handle this in a smarter way.
2020-04-03 00:56:58 +02:00

48 lines
1.4 KiB
PHP

<?php
/**
* Tabpage plugin: Shows links to children pages in the page menu
*
* @license BSD 2-Clause
* @author Antoine Le Gonidec <vv221.dokuwiki@dotslashplay.it>
*/
// must be run within Dokuwiki
if ( ! defined('DOKU_INC') ) {
die();
}
class action_plugin_childrenpages extends DokuWiki_Action_Plugin {
/**
* Registers a callback function for a given event
*
* @param Doku_Event_Handler $controller
*/
public function register(Doku_Event_Handler $controller) : void {
$controller->register_hook('MENU_ITEMS_ASSEMBLY', 'AFTER', $this, 'addMenuItem');
}
/**
* Add new items to the page menu
*
* @param Doku_Event $event
*/
public function addMenuItem(Doku_Event $event) : void {
global $INFO;
// Check that this method has been called in the expected context
if ( $event->name !== 'MENU_ITEMS_ASSEMBLY' ) {
$message = "Tabpage plugin error:";
$message .= "addMenuItem method should only be called by \"MENU_ITEMS_ASSEMBLY\" event";
$message .= ", but it has been called by \"$event->name\".";
throw new Exception($message);
}
// Only add content to the page menu
if ( $event->data['view'] !== 'page' ) {
return;
}
// Only add links if the current page is not included in a namespace
if ( ! empty($INFO['namespace']) ) {
return;
}
trigger_error('addMenuItem() not implemented in '.get_class($this), E_USER_WARNING);
}
}