1c708a86fSSzymon Olewniczak<?php 2c708a86fSSzymon Olewniczak 3*1989ee26SSzymon Olewniczakuse dokuwiki\Extension\ActionPlugin; 4*1989ee26SSzymon Olewniczakuse dokuwiki\Extension\EventHandler; 5*1989ee26SSzymon Olewniczakuse dokuwiki\Extension\Event; 6c708a86fSSzymon Olewniczakuse dokuwiki\plugin\approve\meta\ViewModeEdit; 7c708a86fSSzymon Olewniczakuse dokuwiki\plugin\approve\meta\ViewModeSiteTools; 8c708a86fSSzymon Olewniczak 9*1989ee26SSzymon Olewniczakclass action_plugin_approve_viewmode extends ActionPlugin 10c708a86fSSzymon Olewniczak{ 11c708a86fSSzymon Olewniczak /** @inheritdoc */ 12*1989ee26SSzymon Olewniczak function register(EventHandler $controller) 13c708a86fSSzymon Olewniczak { 14c708a86fSSzymon Olewniczak $controller->register_hook('ACTION_ACT_PREPROCESS', 'BEFORE', $this, 'handleAct'); 15c708a86fSSzymon Olewniczak $controller->register_hook('MENU_ITEMS_ASSEMBLY', 'AFTER', $this, 'addSiteTools'); 16c708a86fSSzymon Olewniczak $controller->register_hook('MENU_ITEMS_ASSEMBLY', 'AFTER', $this, 'addPageTools'); 17c708a86fSSzymon Olewniczak } 18c708a86fSSzymon Olewniczak 19*1989ee26SSzymon Olewniczak public function handleAct(Event $event) 20c708a86fSSzymon Olewniczak { 21c708a86fSSzymon Olewniczak if (!$this->getConf('viewmode')) return; 22c708a86fSSzymon Olewniczak if ($event->data != 'viewmodesitetools' && $event->data != 'viewmodeedit') return; 23c708a86fSSzymon Olewniczak $viewmode = get_doku_pref('approve_viewmode', false); 24c708a86fSSzymon Olewniczak set_doku_pref('approve_viewmode', !$viewmode); // toggle status 25c708a86fSSzymon Olewniczak $event->data = 'redirect'; 26c708a86fSSzymon Olewniczak } 27c708a86fSSzymon Olewniczak 28c708a86fSSzymon Olewniczak /** 29c708a86fSSzymon Olewniczak * Add Link for mode change to the site tools 30c708a86fSSzymon Olewniczak * 31*1989ee26SSzymon Olewniczak * @param Event $event 32c708a86fSSzymon Olewniczak * @return bool 33c708a86fSSzymon Olewniczak */ 34*1989ee26SSzymon Olewniczak public function addSiteTools(Event $event) 35c708a86fSSzymon Olewniczak { 36c708a86fSSzymon Olewniczak global $INPUT; 37c708a86fSSzymon Olewniczak if (!$this->getConf('viewmode')) return false; 38c708a86fSSzymon Olewniczak if (!$INPUT->server->str('REMOTE_USER')) return false; 39c708a86fSSzymon Olewniczak if ($event->data['view'] != 'user') return false; 40c708a86fSSzymon Olewniczak 41c708a86fSSzymon Olewniczak array_splice($event->data['items'], 1, 0, [new ViewModeSiteTools()]); 42c708a86fSSzymon Olewniczak 43c708a86fSSzymon Olewniczak return true; 44c708a86fSSzymon Olewniczak } 45c708a86fSSzymon Olewniczak 46*1989ee26SSzymon Olewniczak public function addPageTools(Event $event) 47c708a86fSSzymon Olewniczak { 48c708a86fSSzymon Olewniczak global $INPUT; 49c708a86fSSzymon Olewniczak if (!$this->getConf('viewmode')) return false; 50c708a86fSSzymon Olewniczak if (!$INPUT->server->str('REMOTE_USER')) return false; 51c708a86fSSzymon Olewniczak if ($event->data['view'] != 'page') return false; 52c708a86fSSzymon Olewniczak 53c708a86fSSzymon Olewniczak $viewmode = get_doku_pref('approve_viewmode', false); 54c708a86fSSzymon Olewniczak if ($viewmode) { 55c708a86fSSzymon Olewniczak array_splice($event->data['items'], 0, 1, [new ViewModeEdit()]); 56c708a86fSSzymon Olewniczak } 57c708a86fSSzymon Olewniczak return true; 58c708a86fSSzymon Olewniczak } 59c708a86fSSzymon Olewniczak 60c708a86fSSzymon Olewniczak} 61