diff options
Diffstat (limited to 'lib/plugins/extension/admin.php')
-rw-r--r-- | lib/plugins/extension/admin.php | 46 |
1 files changed, 31 insertions, 15 deletions
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').' [<a href="'.$url.'">'.$this->getLang('repo_retry').'</a>]', -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('</div>'); } } |