Skip to content
Snippets Groups Projects
Commit fd51614b authored by Andreas Gohr's avatar Andreas Gohr
Browse files

enable/disable extensions via AJAX FS#2927

parent c6d9f1e8
No related branches found
No related tags found
No related merge requests found
......@@ -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);
}
}
}
......
jQuery(function(){
var $extmgr = jQuery('#extension__manager');
/**
* Confirm uninstalling
*/
jQuery('#extension__manager input.uninstall').click(function(e){
$extmgr.find('input.uninstall').click(function(e){
if(!window.confirm(LANG.plugins.extension.reallydel)){
e.preventDefault();
return false;
......@@ -15,7 +17,7 @@ jQuery(function(){
* very simple lightbox
* @link http://webdesign.tutsplus.com/tutorials/htmlcss-tutorials/super-simple-lightbox-with-css-and-jquery/
*/
jQuery('#extension__manager a.extension_screenshot').click(function(e) {
$extmgr.find('a.extension_screenshot').click(function(e) {
e.preventDefault();
//Get clicked link href
......@@ -41,10 +43,49 @@ jQuery(function(){
return false;
});
/**
* Enable/Disable extension via AJAX
*/
$extmgr.find('input.disable, input.enable').click(function (e) {
e.preventDefault();
var $btn = jQuery(this);
// get current state
var extension = $btn.attr('name').split('[')[2];
extension = extension.substr(0, extension.length - 1);
var act = ($btn.hasClass('disable')) ? 'disable' : 'enable';
// disable while we wait
$btn.attr('disabled', 'disabled');
$btn.css('cursor', 'wait');
// execute
jQuery.get(
DOKU_BASE + 'lib/exe/ajax.php',
{
call: 'plugin_extension',
ext: extension,
act: act
},
function (data) {
$btn.css('cursor', '')
.removeAttr('disabled')
.removeClass('disable')
.removeClass('enable')
.val(data.label)
.addClass(data.reverse)
.parents('li')
.removeClass('disabled')
.removeClass('enabled')
.addClass(data.state);
}
);
});
/**
* AJAX detail infos
*/
jQuery('#extension__manager a.info').click(function(e){
$extmgr.find('a.info').click(function(e){
e.preventDefault();
var $link = jQuery(this);
......@@ -60,7 +101,8 @@ jQuery(function(){
DOKU_BASE + 'lib/exe/ajax.php',
{
call: 'plugin_extension',
ext: $link.data('extid')
ext: $link.data('extid'),
act: 'info'
},
function(data){
$link.parent().append(data);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment