From 788f86d986d170475e9fda3578b4fde5ba4864dd Mon Sep 17 00:00:00 2001 From: Michael Hamann Date: Thu, 1 Aug 2013 21:14:17 +0200 Subject: Extension manager: add language file and simple admin component --- lib/plugins/extension/admin.php | 58 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 lib/plugins/extension/admin.php (limited to 'lib/plugins/extension/admin.php') diff --git a/lib/plugins/extension/admin.php b/lib/plugins/extension/admin.php new file mode 100644 index 000000000..19863e772 --- /dev/null +++ b/lib/plugins/extension/admin.php @@ -0,0 +1,58 @@ + + */ + +// must be run within Dokuwiki +if(!defined('DOKU_INC')) die(); + +class admin_plugin_extension extends DokuWiki_Admin_Plugin { + + /** + * @return int sort number in admin menu + */ + public function getMenuSort() { + return 0; + } + + /** + * @return bool true if only access for superuser, false is for superusers and moderators + */ + public function forAdminOnly() { + return true; + } + + /** + * Should carry out any processing required by the plugin. + */ + public function handle() { + /* @var helper_plugin_extension_repository $repository */ + $repository = $this->loadHelper('extension_repository'); + $repository->init(); + } + + /** + * Render HTML output, e.g. helpful text and a form + */ + public function html() { + /* @var Doku_Plugin_Controller $plugin_controller */ + global $plugin_controller; + ptln('

'.$this->getLang('menu').'

'); + + $pluginlist = $plugin_controller->getList('', true); + /* @var helper_plugin_extension_extension $extension */ + $extension = $this->loadHelper('extension_extension'); + foreach ($pluginlist as $name) { + $extension->setExtension($name, false); + ptln('

'.hsc($extension->getName()).'

'); + ptln('

'.hsc($extension->getDescription()).'

'); + ptln('

Latest available version: '.hsc($extension->getLastUpdate()).'

'); + ptln('

Installed version: '.hsc($extension->getInstalledVersion()).'

'); + } + } +} + +// vim:ts=4:sw=4:et: \ No newline at end of file -- cgit v1.2.3 From 02779b18797b2ee1304613de684d54988815dacb Mon Sep 17 00:00:00 2001 From: Michael Hamann Date: Fri, 2 Aug 2013 23:30:32 +0200 Subject: Extension manager: Implement extension table This uses a lot of code and the whole design from the previous extension manager implementation. --- lib/plugins/extension/admin.php | 78 +++++++++++++++++++++++++++++++++++++---- 1 file changed, 72 insertions(+), 6 deletions(-) (limited to 'lib/plugins/extension/admin.php') diff --git a/lib/plugins/extension/admin.php b/lib/plugins/extension/admin.php index 19863e772..373f90183 100644 --- a/lib/plugins/extension/admin.php +++ b/lib/plugins/extension/admin.php @@ -9,7 +9,11 @@ // must be run within Dokuwiki if(!defined('DOKU_INC')) die(); +/** + * Admin part of the extension manager + */ class admin_plugin_extension extends DokuWiki_Admin_Plugin { + protected $infoFor = null; /** * @return int sort number in admin menu @@ -26,32 +30,94 @@ class admin_plugin_extension extends DokuWiki_Admin_Plugin { } /** - * Should carry out any processing required by the plugin. + * Execute the requested action(s) and initialize the plugin repository */ public function handle() { + global $INPUT; + // initialize the remote repository /* @var helper_plugin_extension_repository $repository */ $repository = $this->loadHelper('extension_repository'); $repository->init(); + + /* @var helper_plugin_extension_extension $extension */ + $extension = $this->loadHelper('extension_extension'); + + if ($INPUT->post->has('fn')) { + $actions = $INPUT->post->arr('fn'); + foreach ($actions as $action => $extensions) { + foreach ($extensions as $extname => $label) { + switch ($action) { + case 'info': + $this->infoFor = $extname; + break; + case 'install': + msg('Not implemented'); + break; + case 'reinstall': + case 'update': + $extension->setExtension($extname, false); + $status = $extension->installOrUpdate(); + if ($status !== true) { + msg($status, -1); + } else { + msg(sprintf($this->getLang('msg_update_success'), hsc($extension->getName())), 1); + } + break; + case 'uninstall': + $extension->setExtension($extname, false); + $status = $extension->uninstall(); + if ($status !== true) { + msg($status, -1); + } else { + msg(sprintf($this->getLang('msg_delete_success'), hsc($extension->getName())), 1); + } + break; + case 'enable'; + $extension->setExtension($extname, false); + $status = $extension->enable(); + if ($status !== true) { + msg($status, -1); + } else { + msg(sprintf($this->getLang('msg_enabled'), hsc($extension->getName())), 1); + } + break; + case 'disable'; + $extension->setExtension($extname, false); + $status = $extension->disable(); + if ($status !== true) { + msg($status, -1); + } else { + msg(sprintf($this->getLang('msg_disabled'), hsc($extension->getName())), 1); + } + break; + } + } + } + } } /** - * Render HTML output, e.g. helpful text and a form + * Render HTML output */ public function html() { /* @var Doku_Plugin_Controller $plugin_controller */ global $plugin_controller; ptln('

'.$this->getLang('menu').'

'); + ptln('
'); $pluginlist = $plugin_controller->getList('', true); /* @var helper_plugin_extension_extension $extension */ $extension = $this->loadHelper('extension_extension'); + /* @var helper_plugin_extension_list $list */ + $list = $this->loadHelper('extension_list'); + $list->start_form(); foreach ($pluginlist as $name) { $extension->setExtension($name, false); - ptln('

'.hsc($extension->getName()).'

'); - ptln('

'.hsc($extension->getDescription()).'

'); - ptln('

Latest available version: '.hsc($extension->getLastUpdate()).'

'); - ptln('

Installed version: '.hsc($extension->getInstalledVersion()).'

'); + $list->add_row($extension, $name == $this->infoFor); } + $list->end_form(); + $list->render(); + ptln('
'); } } -- cgit v1.2.3 From e45b5c14dbb09dd200d66ff21de1bba960113c68 Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Sun, 4 Aug 2013 18:24:20 +0200 Subject: added connectivity recheck --- lib/plugins/extension/admin.php | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'lib/plugins/extension/admin.php') diff --git a/lib/plugins/extension/admin.php b/lib/plugins/extension/admin.php index 373f90183..6cad58595 100644 --- a/lib/plugins/extension/admin.php +++ b/lib/plugins/extension/admin.php @@ -39,6 +39,13 @@ class admin_plugin_extension extends DokuWiki_Admin_Plugin { $repository = $this->loadHelper('extension_repository'); $repository->init(); + if(!$repository->hasAccess()){ + $url = helper_plugin_extension_list::tabURL('', array('purge'=>1)); + + msg('The DokuWiki extension repository can not be reached currently. + Online Features are not available. [retry]', -1); + } + /* @var helper_plugin_extension_extension $extension */ $extension = $this->loadHelper('extension_extension'); -- cgit v1.2.3 From d7410643d8e3db12a76845370d8eee2508fa6115 Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Sun, 4 Aug 2013 19:46:02 +0200 Subject: added tab navigation --- lib/plugins/extension/admin.php | 49 +++++++++++++++++++++++++++++++---------- 1 file changed, 37 insertions(+), 12 deletions(-) (limited to 'lib/plugins/extension/admin.php') diff --git a/lib/plugins/extension/admin.php b/lib/plugins/extension/admin.php index 6cad58595..4faafedb2 100644 --- a/lib/plugins/extension/admin.php +++ b/lib/plugins/extension/admin.php @@ -14,6 +14,17 @@ if(!defined('DOKU_INC')) die(); */ class admin_plugin_extension extends DokuWiki_Admin_Plugin { protected $infoFor = null; + /** @var helper_plugin_extension_gui */ + protected $gui; + + /** + * Constructor + * + * loads additional helpers + */ + public function __construct(){ + $this->gui = plugin_load('helper', 'extension_gui'); + } /** * @return int sort number in admin menu @@ -40,7 +51,7 @@ class admin_plugin_extension extends DokuWiki_Admin_Plugin { $repository->init(); if(!$repository->hasAccess()){ - $url = helper_plugin_extension_list::tabURL('', array('purge'=>1)); + $url = $this->gui->tabURL('', array('purge'=>1)); msg('The DokuWiki extension repository can not be reached currently. Online Features are not available. [retry]', -1); @@ -109,21 +120,35 @@ class admin_plugin_extension extends DokuWiki_Admin_Plugin { public function html() { /* @var Doku_Plugin_Controller $plugin_controller */ global $plugin_controller; + global $INPUT; ptln('

'.$this->getLang('menu').'

'); ptln('
'); - $pluginlist = $plugin_controller->getList('', true); - /* @var helper_plugin_extension_extension $extension */ - $extension = $this->loadHelper('extension_extension'); - /* @var helper_plugin_extension_list $list */ - $list = $this->loadHelper('extension_list'); - $list->start_form(); - foreach ($pluginlist as $name) { - $extension->setExtension($name, false); - $list->add_row($extension, $name == $this->infoFor); + $this->gui->tabNavigation(); + + switch($INPUT->str('tab','plugins')){ + case 'search': + echo 'search interface'; + break; + case 'plugins': + default: + // FIXME move to function? + + $pluginlist = $plugin_controller->getList('', true); + /* @var helper_plugin_extension_extension $extension */ + $extension = $this->loadHelper('extension_extension'); + /* @var helper_plugin_extension_list $list */ + $list = $this->loadHelper('extension_list'); + $list->start_form(); + foreach ($pluginlist as $name) { + $extension->setExtension($name, false); + $list->add_row($extension, $name == $this->infoFor); + } + $list->end_form(); + $list->render(); } - $list->end_form(); - $list->render(); + + ptln('
'); } } -- cgit v1.2.3 From 5d7f3164ea4199d7cf1215a1a8a5785218c9e149 Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Sun, 4 Aug 2013 20:08:30 +0200 Subject: moved display stuff to gui class, added template list --- lib/plugins/extension/admin.php | 23 +++++------------------ 1 file changed, 5 insertions(+), 18 deletions(-) (limited to 'lib/plugins/extension/admin.php') diff --git a/lib/plugins/extension/admin.php b/lib/plugins/extension/admin.php index 4faafedb2..39ce9e947 100644 --- a/lib/plugins/extension/admin.php +++ b/lib/plugins/extension/admin.php @@ -118,34 +118,21 @@ class admin_plugin_extension extends DokuWiki_Admin_Plugin { * Render HTML output */ public function html() { - /* @var Doku_Plugin_Controller $plugin_controller */ - global $plugin_controller; - global $INPUT; ptln('

'.$this->getLang('menu').'

'); ptln('
'); $this->gui->tabNavigation(); - switch($INPUT->str('tab','plugins')){ + switch($this->gui->currentTab()){ case 'search': echo 'search interface'; break; + case 'templates': + $this->gui->templateList(); + break; case 'plugins': default: - // FIXME move to function? - - $pluginlist = $plugin_controller->getList('', true); - /* @var helper_plugin_extension_extension $extension */ - $extension = $this->loadHelper('extension_extension'); - /* @var helper_plugin_extension_list $list */ - $list = $this->loadHelper('extension_list'); - $list->start_form(); - foreach ($pluginlist as $name) { - $extension->setExtension($name, false); - $list->add_row($extension, $name == $this->infoFor); - } - $list->end_form(); - $list->render(); + $this->gui->pluginList(); } -- cgit v1.2.3 From 1dd40c86eb47f24a2e7c7022592fd9cd25ff07f2 Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Sun, 4 Aug 2013 20:24:19 +0200 Subject: added intros --- lib/plugins/extension/admin.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'lib/plugins/extension/admin.php') diff --git a/lib/plugins/extension/admin.php b/lib/plugins/extension/admin.php index 39ce9e947..ee180192d 100644 --- a/lib/plugins/extension/admin.php +++ b/lib/plugins/extension/admin.php @@ -125,14 +125,14 @@ class admin_plugin_extension extends DokuWiki_Admin_Plugin { switch($this->gui->currentTab()){ case 'search': - echo 'search interface'; + $this->gui->tabSearch(); break; case 'templates': - $this->gui->templateList(); + $this->gui->tabTemplates(); break; case 'plugins': default: - $this->gui->pluginList(); + $this->gui->tabPlugins(); } -- cgit v1.2.3 From 7944abddde7619d8d59740cde19743c090d4fd3d Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Sun, 4 Aug 2013 20:34:12 +0200 Subject: translated error message --- lib/plugins/extension/admin.php | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) (limited to 'lib/plugins/extension/admin.php') diff --git a/lib/plugins/extension/admin.php b/lib/plugins/extension/admin.php index ee180192d..c9f37affb 100644 --- a/lib/plugins/extension/admin.php +++ b/lib/plugins/extension/admin.php @@ -52,9 +52,7 @@ class admin_plugin_extension extends DokuWiki_Admin_Plugin { if(!$repository->hasAccess()){ $url = $this->gui->tabURL('', array('purge'=>1)); - - msg('The DokuWiki extension repository can not be reached currently. - Online Features are not available. [retry]', -1); + msg($this->getLang('repo_error').' ['.$this->getLang('repo_retry').']', -1); } /* @var helper_plugin_extension_extension $extension */ -- cgit v1.2.3 From 55332151e03b99bbfd15e0fbaae391aae454d9eb Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Fri, 9 Aug 2013 13:43:35 +0200 Subject: some initial go at the search tab --- lib/plugins/extension/admin.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lib/plugins/extension/admin.php') diff --git a/lib/plugins/extension/admin.php b/lib/plugins/extension/admin.php index c9f37affb..51d4a8d1d 100644 --- a/lib/plugins/extension/admin.php +++ b/lib/plugins/extension/admin.php @@ -48,7 +48,7 @@ class admin_plugin_extension extends DokuWiki_Admin_Plugin { // initialize the remote repository /* @var helper_plugin_extension_repository $repository */ $repository = $this->loadHelper('extension_repository'); - $repository->init(); + if(!$repository->hasAccess()){ $url = $this->gui->tabURL('', array('purge'=>1)); -- cgit v1.2.3 From 813d7e0910cdbb80dceef4d952adc551987c84e7 Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Fri, 9 Aug 2013 14:06:34 +0200 Subject: fixed some confusion between base, id and name --- lib/plugins/extension/admin.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'lib/plugins/extension/admin.php') diff --git a/lib/plugins/extension/admin.php b/lib/plugins/extension/admin.php index 51d4a8d1d..7faed142d 100644 --- a/lib/plugins/extension/admin.php +++ b/lib/plugins/extension/admin.php @@ -76,7 +76,7 @@ class admin_plugin_extension extends DokuWiki_Admin_Plugin { if ($status !== true) { msg($status, -1); } else { - msg(sprintf($this->getLang('msg_update_success'), hsc($extension->getName())), 1); + msg(sprintf($this->getLang('msg_update_success'), hsc($extension->getDisplayName())), 1); } break; case 'uninstall': @@ -85,7 +85,7 @@ class admin_plugin_extension extends DokuWiki_Admin_Plugin { if ($status !== true) { msg($status, -1); } else { - msg(sprintf($this->getLang('msg_delete_success'), hsc($extension->getName())), 1); + msg(sprintf($this->getLang('msg_delete_success'), hsc($extension->getDisplayName())), 1); } break; case 'enable'; @@ -94,7 +94,7 @@ class admin_plugin_extension extends DokuWiki_Admin_Plugin { if ($status !== true) { msg($status, -1); } else { - msg(sprintf($this->getLang('msg_enabled'), hsc($extension->getName())), 1); + msg(sprintf($this->getLang('msg_enabled'), hsc($extension->getDisplayName())), 1); } break; case 'disable'; @@ -103,7 +103,7 @@ class admin_plugin_extension extends DokuWiki_Admin_Plugin { if ($status !== true) { msg($status, -1); } else { - msg(sprintf($this->getLang('msg_disabled'), hsc($extension->getName())), 1); + msg(sprintf($this->getLang('msg_disabled'), hsc($extension->getDisplayName())), 1); } break; } -- cgit v1.2.3 From ea9f3f904d439e9af84bdbed8e1a0bba3ed286b2 Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Fri, 9 Aug 2013 15:31:45 +0200 Subject: added 4th tab for manual install --- lib/plugins/extension/admin.php | 3 +++ 1 file changed, 3 insertions(+) (limited to 'lib/plugins/extension/admin.php') diff --git a/lib/plugins/extension/admin.php b/lib/plugins/extension/admin.php index 7faed142d..cf4eb79d7 100644 --- a/lib/plugins/extension/admin.php +++ b/lib/plugins/extension/admin.php @@ -128,6 +128,9 @@ class admin_plugin_extension extends DokuWiki_Admin_Plugin { case 'templates': $this->gui->tabTemplates(); break; + case 'install': + $this->gui->tabInstall(); + break; case 'plugins': default: $this->gui->tabPlugins(); -- cgit v1.2.3 From 519895b5625277197a88748c515919515f1113b8 Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Fri, 9 Aug 2013 20:04:17 +0200 Subject: added tests for the find_folders method --- lib/plugins/extension/admin.php | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) (limited to 'lib/plugins/extension/admin.php') diff --git a/lib/plugins/extension/admin.php b/lib/plugins/extension/admin.php index cf4eb79d7..e28fd612c 100644 --- a/lib/plugins/extension/admin.php +++ b/lib/plugins/extension/admin.php @@ -67,11 +67,9 @@ class admin_plugin_extension extends DokuWiki_Admin_Plugin { $this->infoFor = $extname; break; case 'install': - msg('Not implemented'); - break; case 'reinstall': case 'update': - $extension->setExtension($extname, false); + $extension->setExtension($extname); $status = $extension->installOrUpdate(); if ($status !== true) { msg($status, -1); @@ -80,7 +78,7 @@ class admin_plugin_extension extends DokuWiki_Admin_Plugin { } break; case 'uninstall': - $extension->setExtension($extname, false); + $extension->setExtension($extname); $status = $extension->uninstall(); if ($status !== true) { msg($status, -1); @@ -89,7 +87,7 @@ class admin_plugin_extension extends DokuWiki_Admin_Plugin { } break; case 'enable'; - $extension->setExtension($extname, false); + $extension->setExtension($extname); $status = $extension->enable(); if ($status !== true) { msg($status, -1); @@ -98,7 +96,7 @@ class admin_plugin_extension extends DokuWiki_Admin_Plugin { } break; case 'disable'; - $extension->setExtension($extname, false); + $extension->setExtension($extname); $status = $extension->disable(); if ($status !== true) { msg($status, -1); -- cgit v1.2.3 From 5c0b30bf48d7f8e5f3d5764cfab94d0d09c0a8b1 Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Fri, 9 Aug 2013 21:26:20 +0200 Subject: installation now works --- lib/plugins/extension/admin.php | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) (limited to 'lib/plugins/extension/admin.php') diff --git a/lib/plugins/extension/admin.php b/lib/plugins/extension/admin.php index e28fd612c..f1ed83591 100644 --- a/lib/plugins/extension/admin.php +++ b/lib/plugins/extension/admin.php @@ -69,12 +69,14 @@ class admin_plugin_extension extends DokuWiki_Admin_Plugin { case 'install': case 'reinstall': case 'update': - $extension->setExtension($extname); - $status = $extension->installOrUpdate(); - if ($status !== true) { - msg($status, -1); - } else { - msg(sprintf($this->getLang('msg_update_success'), hsc($extension->getDisplayName())), 1); + try { + $extension->setExtension($extname); + $installed = $extension->installOrUpdate(); + foreach($installed as $extension => $info){ + msg(sprintf($this->getLang('msg_'.$info['type'].'_'.$info['action'].'_success'), $info['base']), 1); + } + }catch (Exception $e){ + msg($e->getMessage(), -1); } break; case 'uninstall': -- cgit v1.2.3 From 75e063084d865a011e074c29c5edb8569fe2cfe1 Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Fri, 9 Aug 2013 22:58:01 +0200 Subject: made info mechanism work again --- lib/plugins/extension/admin.php | 3 --- 1 file changed, 3 deletions(-) (limited to 'lib/plugins/extension/admin.php') diff --git a/lib/plugins/extension/admin.php b/lib/plugins/extension/admin.php index f1ed83591..3237a26e5 100644 --- a/lib/plugins/extension/admin.php +++ b/lib/plugins/extension/admin.php @@ -63,9 +63,6 @@ class admin_plugin_extension extends DokuWiki_Admin_Plugin { foreach ($actions as $action => $extensions) { foreach ($extensions as $extname => $label) { switch ($action) { - case 'info': - $this->infoFor = $extname; - break; case 'install': case 'reinstall': case 'update': -- cgit v1.2.3 From fee60c9e19860de9edb1dd146ec7063bb9eda392 Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Sat, 10 Aug 2013 10:23:04 +0200 Subject: manual install tab now works --- lib/plugins/extension/admin.php | 46 +++++++++++++++++++++++++++-------------- 1 file changed, 31 insertions(+), 15 deletions(-) (limited to 'lib/plugins/extension/admin.php') diff --git a/lib/plugins/extension/admin.php b/lib/plugins/extension/admin.php index 3237a26e5..62d94e899 100644 --- a/lib/plugins/extension/admin.php +++ b/lib/plugins/extension/admin.php @@ -22,7 +22,7 @@ class admin_plugin_extension extends DokuWiki_Admin_Plugin { * * loads additional helpers */ - public function __construct(){ + public function __construct() { $this->gui = plugin_load('helper', 'extension_gui'); } @@ -49,37 +49,36 @@ class admin_plugin_extension extends DokuWiki_Admin_Plugin { /* @var helper_plugin_extension_repository $repository */ $repository = $this->loadHelper('extension_repository'); - - if(!$repository->hasAccess()){ - $url = $this->gui->tabURL('', array('purge'=>1)); + if(!$repository->hasAccess()) { + $url = $this->gui->tabURL('', array('purge' => 1)); msg($this->getLang('repo_error').' ['.$this->getLang('repo_retry').']', -1); } /* @var helper_plugin_extension_extension $extension */ $extension = $this->loadHelper('extension_extension'); - if ($INPUT->post->has('fn')) { + if($INPUT->post->has('fn') && checkSecurityToken()) { $actions = $INPUT->post->arr('fn'); - foreach ($actions as $action => $extensions) { - foreach ($extensions as $extname => $label) { - switch ($action) { + foreach($actions as $action => $extensions) { + foreach($extensions as $extname => $label) { + switch($action) { case 'install': case 'reinstall': case 'update': try { $extension->setExtension($extname); $installed = $extension->installOrUpdate(); - foreach($installed as $extension => $info){ + foreach($installed as $ext => $info) { msg(sprintf($this->getLang('msg_'.$info['type'].'_'.$info['action'].'_success'), $info['base']), 1); } - }catch (Exception $e){ + } catch(Exception $e) { msg($e->getMessage(), -1); } break; case 'uninstall': $extension->setExtension($extname); $status = $extension->uninstall(); - if ($status !== true) { + if($status !== true) { msg($status, -1); } else { msg(sprintf($this->getLang('msg_delete_success'), hsc($extension->getDisplayName())), 1); @@ -88,7 +87,7 @@ class admin_plugin_extension extends DokuWiki_Admin_Plugin { case 'enable'; $extension->setExtension($extname); $status = $extension->enable(); - if ($status !== true) { + if($status !== true) { msg($status, -1); } else { msg(sprintf($this->getLang('msg_enabled'), hsc($extension->getDisplayName())), 1); @@ -97,7 +96,7 @@ class admin_plugin_extension extends DokuWiki_Admin_Plugin { case 'disable'; $extension->setExtension($extname); $status = $extension->disable(); - if ($status !== true) { + if($status !== true) { msg($status, -1); } else { msg(sprintf($this->getLang('msg_disabled'), hsc($extension->getDisplayName())), 1); @@ -106,6 +105,24 @@ class admin_plugin_extension extends DokuWiki_Admin_Plugin { } } } + } elseif($INPUT->post->str('installurl') && checkSecurityToken()) { + try { + $installed = $extension->installFromURL($INPUT->post->str('installurl')); + foreach($installed as $ext => $info) { + msg(sprintf($this->getLang('msg_'.$info['type'].'_'.$info['action'].'_success'), $info['base']), 1); + } + } catch(Exception $e) { + msg($e->getMessage(), -1); + } + } elseif(isset($_FILES['installfile']) && checkSecurityToken()) { + try { + $installed = $extension->installFromUpload('installfile'); + foreach($installed as $ext => $info) { + msg(sprintf($this->getLang('msg_'.$info['type'].'_'.$info['action'].'_success'), $info['base']), 1); + } + } catch(Exception $e) { + msg($e->getMessage(), -1); + } } } @@ -118,7 +135,7 @@ class admin_plugin_extension extends DokuWiki_Admin_Plugin { $this->gui->tabNavigation(); - switch($this->gui->currentTab()){ + switch($this->gui->currentTab()) { case 'search': $this->gui->tabSearch(); break; @@ -133,7 +150,6 @@ class admin_plugin_extension extends DokuWiki_Admin_Plugin { $this->gui->tabPlugins(); } - ptln('
'); } } -- cgit v1.2.3 From 32fdfac2cd446733436dc1b344d7f73b78655cb1 Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Sat, 10 Aug 2013 11:11:14 +0200 Subject: changed exception handling, redirect after post actions --- lib/plugins/extension/admin.php | 98 ++++++++++++++++++++--------------------- 1 file changed, 48 insertions(+), 50 deletions(-) (limited to 'lib/plugins/extension/admin.php') diff --git a/lib/plugins/extension/admin.php b/lib/plugins/extension/admin.php index 62d94e899..99c74848b 100644 --- a/lib/plugins/extension/admin.php +++ b/lib/plugins/extension/admin.php @@ -57,73 +57,71 @@ class admin_plugin_extension extends DokuWiki_Admin_Plugin { /* @var helper_plugin_extension_extension $extension */ $extension = $this->loadHelper('extension_extension'); - if($INPUT->post->has('fn') && checkSecurityToken()) { - $actions = $INPUT->post->arr('fn'); - foreach($actions as $action => $extensions) { - foreach($extensions as $extname => $label) { - switch($action) { - case 'install': - case 'reinstall': - case 'update': - try { + try { + if($INPUT->post->has('fn') && checkSecurityToken()) { + $actions = $INPUT->post->arr('fn'); + foreach($actions as $action => $extensions) { + foreach($extensions as $extname => $label) { + switch($action) { + case 'install': + case 'reinstall': + case 'update': $extension->setExtension($extname); $installed = $extension->installOrUpdate(); foreach($installed as $ext => $info) { msg(sprintf($this->getLang('msg_'.$info['type'].'_'.$info['action'].'_success'), $info['base']), 1); } - } catch(Exception $e) { - msg($e->getMessage(), -1); - } - break; - case 'uninstall': - $extension->setExtension($extname); - $status = $extension->uninstall(); - if($status !== true) { - msg($status, -1); - } else { - msg(sprintf($this->getLang('msg_delete_success'), hsc($extension->getDisplayName())), 1); - } - break; - case 'enable'; - $extension->setExtension($extname); - $status = $extension->enable(); - if($status !== true) { - msg($status, -1); - } else { - msg(sprintf($this->getLang('msg_enabled'), hsc($extension->getDisplayName())), 1); - } - break; - case 'disable'; - $extension->setExtension($extname); - $status = $extension->disable(); - if($status !== true) { - msg($status, -1); - } else { - msg(sprintf($this->getLang('msg_disabled'), hsc($extension->getDisplayName())), 1); - } - break; + break; + case 'uninstall': + $extension->setExtension($extname); + $status = $extension->uninstall(); + if($status !== true) { + msg($status, -1); + } else { + msg(sprintf($this->getLang('msg_delete_success'), hsc($extension->getDisplayName())), 1); + } + break; + case 'enable'; + $extension->setExtension($extname); + $status = $extension->enable(); + if($status !== true) { + msg($status, -1); + } else { + msg(sprintf($this->getLang('msg_enabled'), hsc($extension->getDisplayName())), 1); + } + break; + case 'disable'; + $extension->setExtension($extname); + $status = $extension->disable(); + if($status !== true) { + msg($status, -1); + } else { + msg(sprintf($this->getLang('msg_disabled'), hsc($extension->getDisplayName())), 1); + } + break; + } } } - } - } elseif($INPUT->post->str('installurl') && checkSecurityToken()) { - try { + send_redirect($this->gui->tabURL('', array(), '&', true)); + } elseif($INPUT->post->str('installurl') && checkSecurityToken()) { $installed = $extension->installFromURL($INPUT->post->str('installurl')); foreach($installed as $ext => $info) { msg(sprintf($this->getLang('msg_'.$info['type'].'_'.$info['action'].'_success'), $info['base']), 1); } - } catch(Exception $e) { - msg($e->getMessage(), -1); - } - } elseif(isset($_FILES['installfile']) && checkSecurityToken()) { - try { + send_redirect($this->gui->tabURL('', array(), '&', true)); + } elseif(isset($_FILES['installfile']) && checkSecurityToken()) { $installed = $extension->installFromUpload('installfile'); foreach($installed as $ext => $info) { msg(sprintf($this->getLang('msg_'.$info['type'].'_'.$info['action'].'_success'), $info['base']), 1); } - } catch(Exception $e) { - msg($e->getMessage(), -1); + send_redirect($this->gui->tabURL('', array(), '&', true)); } + + } catch(Exception $e) { + msg($e->getMessage(), -1); + send_redirect($this->gui->tabURL('', array(), '&', true)); } + } /** -- cgit v1.2.3