From 72dda0b4378651b271f5fb516fb8e21a80ac3ebf Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Fri, 9 Aug 2013 23:55:39 +0200 Subject: added AJAX detail infos --- lib/plugins/extension/action.php | 51 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 lib/plugins/extension/action.php (limited to 'lib/plugins/extension/action.php') diff --git a/lib/plugins/extension/action.php b/lib/plugins/extension/action.php new file mode 100644 index 000000000..b35c1cb13 --- /dev/null +++ b/lib/plugins/extension/action.php @@ -0,0 +1,51 @@ + + */ + +// must be run within Dokuwiki +if(!defined('DOKU_INC')) die(); + +class action_plugin_extension extends DokuWiki_Action_Plugin { + + /** + * Registers a callback function for a given event + * + * @param Doku_Event_Handler $controller DokuWiki's event controller object + * @return void + */ + public function register(Doku_Event_Handler &$controller) { + + $controller->register_hook('AJAX_CALL_UNKNOWN', 'BEFORE', $this, 'info'); + + } + + public function info(Doku_Event &$event, $param){ + global $INPUT; + if($event->data != 'plugin_extension') return; + $event->preventDefault(); + $event->stopPropagation(); + + header('Content-Type: text/html; charset=utf-8'); + + $ext = $INPUT->str('ext'); + if(!$ext) { + echo 'no extension given'; + return; + } + + /** @var helper_plugin_extension_extension $extension */ + $extension = plugin_load('helper', 'extension_extension'); + $extension->setExtension($ext); + + /** @var helper_plugin_extension_list $list */ + $list = plugin_load('helper', 'extension_list'); + + + echo $list->make_info($extension); + } + +} + -- cgit v1.2.3 From 4c005e3f9adeb9180a879cc38518d1cff63e9261 Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Sun, 5 Jan 2014 21:02:00 +0100 Subject: fixed strict standard error and added some docblock --- lib/plugins/extension/action.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'lib/plugins/extension/action.php') diff --git a/lib/plugins/extension/action.php b/lib/plugins/extension/action.php index b35c1cb13..0d6e7d996 100644 --- a/lib/plugins/extension/action.php +++ b/lib/plugins/extension/action.php @@ -16,12 +16,18 @@ class action_plugin_extension extends DokuWiki_Action_Plugin { * @param Doku_Event_Handler $controller DokuWiki's event controller object * @return void */ - public function register(Doku_Event_Handler &$controller) { + public function register(Doku_Event_Handler $controller) { $controller->register_hook('AJAX_CALL_UNKNOWN', 'BEFORE', $this, 'info'); } + /** + * Create the detail info for a single plugin + * + * @param Doku_Event $event + * @param $param + */ public function info(Doku_Event &$event, $param){ global $INPUT; if($event->data != 'plugin_extension') return; -- cgit v1.2.3 From da5f0eee25838368de375eb14d345b70ae3cbc7a Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Mon, 6 Jan 2014 21:25:59 +0100 Subject: check for admin in AJAX backend --- lib/plugins/extension/action.php | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'lib/plugins/extension/action.php') diff --git a/lib/plugins/extension/action.php b/lib/plugins/extension/action.php index 0d6e7d996..9dd1648ff 100644 --- a/lib/plugins/extension/action.php +++ b/lib/plugins/extension/action.php @@ -29,7 +29,15 @@ class action_plugin_extension extends DokuWiki_Action_Plugin { * @param $param */ public function info(Doku_Event &$event, $param){ + global $USERINFO; global $INPUT; + + if(empty($_SERVER['REMOTE_USER']) || !auth_isadmin($_SERVER['REMOTE_USER'], $USERINFO['grps'])){ + http_status(403); + echo 'Forbidden'; + exit; + } + if($event->data != 'plugin_extension') return; $event->preventDefault(); $event->stopPropagation(); -- cgit v1.2.3 From b15cd32d2f75fbf943eda38a7b90f05d2806dae5 Mon Sep 17 00:00:00 2001 From: jgpcx Date: Tue, 28 Jan 2014 17:02:25 +0100 Subject: Update action.php fix bug that only allows admins any AJAX calls --- lib/plugins/extension/action.php | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'lib/plugins/extension/action.php') diff --git a/lib/plugins/extension/action.php b/lib/plugins/extension/action.php index 9dd1648ff..3f2ccaace 100644 --- a/lib/plugins/extension/action.php +++ b/lib/plugins/extension/action.php @@ -32,16 +32,17 @@ class action_plugin_extension extends DokuWiki_Action_Plugin { global $USERINFO; global $INPUT; + + if($event->data != 'plugin_extension') return; + $event->preventDefault(); + $event->stopPropagation(); + if(empty($_SERVER['REMOTE_USER']) || !auth_isadmin($_SERVER['REMOTE_USER'], $USERINFO['grps'])){ http_status(403); echo 'Forbidden'; exit; } - if($event->data != 'plugin_extension') return; - $event->preventDefault(); - $event->stopPropagation(); - header('Content-Type: text/html; charset=utf-8'); $ext = $INPUT->str('ext'); -- cgit v1.2.3 From fd51614b39b1320c5723e8195f0bf69c25baaeb7 Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Sat, 15 Feb 2014 10:10:38 +0100 Subject: enable/disable extensions via AJAX FS#2927 --- lib/plugins/extension/action.php | 39 +++++++++++++++++++++++++++++---------- 1 file changed, 29 insertions(+), 10 deletions(-) (limited to 'lib/plugins/extension/action.php') diff --git a/lib/plugins/extension/action.php b/lib/plugins/extension/action.php index 3f2ccaace..9e48f134b 100644 --- a/lib/plugins/extension/action.php +++ b/lib/plugins/extension/action.php @@ -28,25 +28,23 @@ class action_plugin_extension extends DokuWiki_Action_Plugin { * @param Doku_Event $event * @param $param */ - public function info(Doku_Event &$event, $param){ + public function info(Doku_Event &$event, $param) { global $USERINFO; global $INPUT; - if($event->data != 'plugin_extension') return; $event->preventDefault(); $event->stopPropagation(); - if(empty($_SERVER['REMOTE_USER']) || !auth_isadmin($_SERVER['REMOTE_USER'], $USERINFO['grps'])){ + if(empty($_SERVER['REMOTE_USER']) || !auth_isadmin($_SERVER['REMOTE_USER'], $USERINFO['grps'])) { http_status(403); echo 'Forbidden'; exit; } - header('Content-Type: text/html; charset=utf-8'); - $ext = $INPUT->str('ext'); if(!$ext) { + http_status(400); echo 'no extension given'; return; } @@ -55,11 +53,32 @@ class action_plugin_extension extends DokuWiki_Action_Plugin { $extension = plugin_load('helper', 'extension_extension'); $extension->setExtension($ext); - /** @var helper_plugin_extension_list $list */ - $list = plugin_load('helper', 'extension_list'); - - - echo $list->make_info($extension); + $act = $INPUT->str('act'); + switch($act) { + case 'enable': + case 'disable': + $json = new JSON(); + $extension->$act(); //enables/disables + + $reverse = ($act == 'disable') ? 'enable' : 'disable'; + + $return = array( + 'state' => $act.'d', // isn't English wonderful? :-) + 'reverse' => $reverse, + 'label' => $extension->getLang('btn_'.$reverse) + ); + + header('Content-Type: application/json'); + echo $json->encode($return); + break; + + case 'info': + default: + /** @var helper_plugin_extension_list $list */ + $list = plugin_load('helper', 'extension_list'); + header('Content-Type: text/html; charset=utf-8'); + echo $list->make_info($extension); + } } } -- cgit v1.2.3