1*c708a86fSSzymon Olewniczak<?php 2*c708a86fSSzymon Olewniczak 3*c708a86fSSzymon Olewniczakuse dokuwiki\plugin\approve\meta\ViewModeEdit; 4*c708a86fSSzymon Olewniczakuse dokuwiki\plugin\approve\meta\ViewModeSiteTools; 5*c708a86fSSzymon Olewniczak 6*c708a86fSSzymon Olewniczak/** 7*c708a86fSSzymon Olewniczak * Approve Plugin: places a link in usermenue and allows for change between modes 8*c708a86fSSzymon Olewniczak * Copied and adapted from userpage plugin 9*c708a86fSSzymon Olewniczak * 10*c708a86fSSzymon Olewniczak * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) 11*c708a86fSSzymon Olewniczak * @author Michael Kirchner 12*c708a86fSSzymon Olewniczak * @author Blake Martin 13*c708a86fSSzymon Olewniczak * @author Andreas Gohr <andi@splitbrain.org> 14*c708a86fSSzymon Olewniczak * @author Anika Henke <anika@selfthinker.org> 15*c708a86fSSzymon Olewniczak */ 16*c708a86fSSzymon Olewniczak 17*c708a86fSSzymon Olewniczakclass action_plugin_approve_viewmode extends DokuWiki_Action_Plugin 18*c708a86fSSzymon Olewniczak{ 19*c708a86fSSzymon Olewniczak /** @inheritdoc */ 20*c708a86fSSzymon Olewniczak function register(Doku_Event_Handler $controller) 21*c708a86fSSzymon Olewniczak { 22*c708a86fSSzymon Olewniczak $controller->register_hook('ACTION_ACT_PREPROCESS', 'BEFORE', $this, 'handleAct'); 23*c708a86fSSzymon Olewniczak $controller->register_hook('MENU_ITEMS_ASSEMBLY', 'AFTER', $this, 'addSiteTools'); 24*c708a86fSSzymon Olewniczak $controller->register_hook('MENU_ITEMS_ASSEMBLY', 'AFTER', $this, 'addPageTools'); 25*c708a86fSSzymon Olewniczak } 26*c708a86fSSzymon Olewniczak 27*c708a86fSSzymon Olewniczak public function handleAct(Doku_Event $event) 28*c708a86fSSzymon Olewniczak { 29*c708a86fSSzymon Olewniczak if (!$this->getConf('viewmode')) return; 30*c708a86fSSzymon Olewniczak if ($event->data != 'viewmodesitetools' && $event->data != 'viewmodeedit') return; 31*c708a86fSSzymon Olewniczak $viewmode = get_doku_pref('approve_viewmode', false); 32*c708a86fSSzymon Olewniczak set_doku_pref('approve_viewmode', !$viewmode); // toggle status 33*c708a86fSSzymon Olewniczak $event->data = 'redirect'; 34*c708a86fSSzymon Olewniczak } 35*c708a86fSSzymon Olewniczak 36*c708a86fSSzymon Olewniczak /** 37*c708a86fSSzymon Olewniczak * Add Link for mode change to the site tools 38*c708a86fSSzymon Olewniczak * 39*c708a86fSSzymon Olewniczak * @param Doku_Event $event 40*c708a86fSSzymon Olewniczak * @return bool 41*c708a86fSSzymon Olewniczak */ 42*c708a86fSSzymon Olewniczak public function addSiteTools(Doku_Event $event) 43*c708a86fSSzymon Olewniczak { 44*c708a86fSSzymon Olewniczak global $INPUT; 45*c708a86fSSzymon Olewniczak if (!$this->getConf('viewmode')) return false; 46*c708a86fSSzymon Olewniczak if (!$INPUT->server->str('REMOTE_USER')) return false; 47*c708a86fSSzymon Olewniczak if ($event->data['view'] != 'user') return false; 48*c708a86fSSzymon Olewniczak 49*c708a86fSSzymon Olewniczak array_splice($event->data['items'], 1, 0, [new ViewModeSiteTools()]); 50*c708a86fSSzymon Olewniczak 51*c708a86fSSzymon Olewniczak return true; 52*c708a86fSSzymon Olewniczak } 53*c708a86fSSzymon Olewniczak 54*c708a86fSSzymon Olewniczak public function addPageTools(Doku_Event $event) 55*c708a86fSSzymon Olewniczak { 56*c708a86fSSzymon Olewniczak global $INPUT; 57*c708a86fSSzymon Olewniczak if (!$this->getConf('viewmode')) return false; 58*c708a86fSSzymon Olewniczak if (!$INPUT->server->str('REMOTE_USER')) return false; 59*c708a86fSSzymon Olewniczak if ($event->data['view'] != 'page') return false; 60*c708a86fSSzymon Olewniczak 61*c708a86fSSzymon Olewniczak $viewmode = get_doku_pref('approve_viewmode', false); 62*c708a86fSSzymon Olewniczak if ($viewmode) { 63*c708a86fSSzymon Olewniczak array_splice($event->data['items'], 0, 1, [new ViewModeEdit()]); 64*c708a86fSSzymon Olewniczak } 65*c708a86fSSzymon Olewniczak return true; 66*c708a86fSSzymon Olewniczak } 67*c708a86fSSzymon Olewniczak 68*c708a86fSSzymon Olewniczak}