1de76d2a4SMichael Klier<?php 2de76d2a4SMichael Klier/** 3de76d2a4SMichael Klier * DokuWiki Action Plugin WikiCalendar 4de76d2a4SMichael Klier * 5de76d2a4SMichael Klier * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) 6de76d2a4SMichael Klier * @author Michael Klier <chi@chimeric.de> 7de76d2a4SMichael Klier */ 8de76d2a4SMichael Klier// must be run within Dokuwiki 9de76d2a4SMichael Klierif(!defined('DOKU_INC')) die(); 10de76d2a4SMichael Klier 11de76d2a4SMichael Klierif(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN', DOKU_INC.'lib/plugins/'); 12de76d2a4SMichael Klierif(!defined('DOKU_LF')) define('DOKU_LF', "\n"); 13de76d2a4SMichael Klier 14de76d2a4SMichael Klierrequire_once(DOKU_PLUGIN.'action.php'); 15de76d2a4SMichael Klier 16de76d2a4SMichael Klier/** 17de76d2a4SMichael Klier * All DokuWiki plugins to extend the admin function 18de76d2a4SMichael Klier * need to inherit from this class 19de76d2a4SMichael Klier */ 20de76d2a4SMichael Klierclass action_plugin_wikicalendar extends DokuWiki_Action_Plugin { 21de76d2a4SMichael Klier 22de76d2a4SMichael Klier function getInfo() { 23de76d2a4SMichael Klier return array( 24de76d2a4SMichael Klier 'author' => 'Michael Klier', 25de76d2a4SMichael Klier 'email' => 'chi@chimeric.de', 26de76d2a4SMichael Klier 'date' => @file_get_contents(DOKU_PLUGIN.'wikicalendar/VERSION'), 27de76d2a4SMichael Klier 'name' => 'WikiCalendar Plugin (action component)', 28de76d2a4SMichael Klier 'desc' => 'Implements a simple Calendar with links to wikipages.', 29de76d2a4SMichael Klier 'url' => 'http://dokuwiki.org/plugin:wikicalendar', 30de76d2a4SMichael Klier ); 31de76d2a4SMichael Klier } 32de76d2a4SMichael Klier 33de76d2a4SMichael Klier // register hook 34*f04822b5SNiko Spindler function register(\dokuwiki\Extension\EventHandler $controller) { 35de76d2a4SMichael Klier $controller->register_hook('ACTION_SHOW_REDIRECT', 'BEFORE', $this, 'handle_redirect'); 36de76d2a4SMichael Klier $controller->register_hook('HTML_EDITFORM_OUTPUT', 'BEFORE', $this, 'handle_form'); 37de76d2a4SMichael Klier $controller->register_hook('DOKUWIKI_STARTED', 'BEFORE', $this, 'handle_started'); 38de76d2a4SMichael Klier } 39de76d2a4SMichael Klier 40de76d2a4SMichael Klier /** 41de76d2a4SMichael Klier * Checks for calendar values for proper redirects 42de76d2a4SMichael Klier */ 43de76d2a4SMichael Klier function handle_started(&$event, $param) { 445ba9bd8bSMoritz Naumann if(is_array($_SESSION[DOKU_COOKIE])) { 45de76d2a4SMichael Klier if(array_key_exists('plugin_wikicalendar_month', $_SESSION[DOKU_COOKIE])) { 46de76d2a4SMichael Klier $_REQUEST['plugin_wikicalendar_month'] = $_SESSION[DOKU_COOKIE]['plugin_wikicalendar_month']; 47de76d2a4SMichael Klier $_REQUEST['plugin_wikicalendar_year'] = $_SESSION[DOKU_COOKIE]['plugin_wikicalendar_year']; 48de76d2a4SMichael Klier unset($_SESSION[DOKU_COOKIE]['plugin_wikicalendar_month']); 49de76d2a4SMichael Klier unset($_SESSION[DOKU_COOKIE]['plugin_wikicalendar_year']); 50de76d2a4SMichael Klier } 51de76d2a4SMichael Klier } 525ba9bd8bSMoritz Naumann } 53de76d2a4SMichael Klier 54de76d2a4SMichael Klier /** 55de76d2a4SMichael Klier * Inserts the hidden redirect id field into edit form 56de76d2a4SMichael Klier */ 57de76d2a4SMichael Klier function handle_form(&$event, $param) { 58de76d2a4SMichael Klier if(array_key_exists('plugin_wikicalendar_redirect_id', $_REQUEST)) { 59de76d2a4SMichael Klier $event->data->addHidden('plugin_wikicalendar_redirect_id', cleanID($_REQUEST['plugin_wikicalendar_redirect_id'])); 60de76d2a4SMichael Klier $event->data->addHidden('plugin_wikicalendar_month', cleanID($_REQUEST['plugin_wikicalendar_month'])); 61de76d2a4SMichael Klier $event->data->addHidden('plugin_wikicalendar_year', cleanID($_REQUEST['plugin_wikicalendar_year'])); 62de76d2a4SMichael Klier } 63de76d2a4SMichael Klier } 64de76d2a4SMichael Klier 65de76d2a4SMichael Klier /** 66de76d2a4SMichael Klier * Redirects to the calendar page 67de76d2a4SMichael Klier */ 68de76d2a4SMichael Klier function handle_redirect(&$event, $param) { 69de76d2a4SMichael Klier if(array_key_exists('plugin_wikicalendar_redirect_id', $_REQUEST)) { 70de76d2a4SMichael Klier @session_start(); 71de76d2a4SMichael Klier $_SESSION[DOKU_COOKIE]['plugin_wikicalendar_month'] = $_REQUEST['plugin_wikicalendar_month']; 72de76d2a4SMichael Klier $_SESSION[DOKU_COOKIE]['plugin_wikicalendar_year'] = $_REQUEST['plugin_wikicalendar_year']; 73de76d2a4SMichael Klier @session_write_close(); 74de76d2a4SMichael Klier $event->data['id'] = cleanID($_REQUEST['plugin_wikicalendar_redirect_id']); 75de76d2a4SMichael Klier $event->data['title'] = ''; 76de76d2a4SMichael Klier } 77de76d2a4SMichael Klier } 78de76d2a4SMichael Klier} 79de76d2a4SMichael Klier 80de76d2a4SMichael Klier// vim:ts=4:sw=4:et:enc=utf-8: 81