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