Skip to content

Commit

Permalink
Dev: Add activate and deactivate functionality to new plugin manager
Browse files Browse the repository at this point in the history
view
  • Loading branch information
olleharstedt committed Oct 2, 2015
1 parent 90980e2 commit fd961fc
Show file tree
Hide file tree
Showing 2 changed files with 73 additions and 2 deletions.
71 changes: 71 additions & 0 deletions application/controllers/admin/pluginmanager.php
@@ -1,11 +1,17 @@
<?php

/**
*/
class PluginManager extends Survey_Common_Action
{
public function init()
{
}

/**
* Overview for plugins
* Copied from PluginsController 2015-10-02
*/
public function index()
{
$oPluginManager = App()->getPluginManager();
Expand Down Expand Up @@ -57,6 +63,71 @@ public function index()
$this->_renderWrappedTemplate('pluginmanager', 'index', array('data' => $data));
}

/**
* Activate a plugin
*
* @todo Defensive programming
* @param int $id Plugin id
* @return void
*/
public function activate($id)
{
$oPlugin = Plugin::model()->findByPk($id);
if (!is_null($oPlugin))
{
$iStatus = $oPlugin->active;
if ($iStatus == 0)
{
// Load the plugin:
App()->getPluginManager()->loadPlugin($oPlugin->name, $id);
$result = App()->getPluginManager()->dispatchEvent(new PluginEvent('beforeActivate', $this), $oPlugin->name);
if ($result->get('success', true))
{
$iStatus = 1;
} else
{
Yii::app()->user->setFlash('error', gT('Failed to activate the plugin.'));
$this->getController()->redirect(array('admin/pluginmanager/sa/index/'));
}
}
$oPlugin->active = $iStatus;
$oPlugin->save();
Yii::app()->user->setFlash('success', gT('Plugin was activated'));
}
$this->getController()->redirect(array('admin/pluginmanager/sa/index/'));
}

/**
* Deactivate plugin with $id
*
* @param int $id
* @return void
*/
public function deactivate($id)
{
$oPlugin = Plugin::model()->findByPk($id);
if (!is_null($oPlugin))
{
$iStatus = $oPlugin->active;
if ($iStatus == 1)
{
$result = App()->getPluginManager()->dispatchEvent(new PluginEvent('beforeDeactivate', $this), $oPlugin->name);
if ($result->get('success', true))
{
$iStatus = 0;
} else
{
Yii::app()->user->setFlash('error', gT('Failed to deactivate the plugin.'));
$this->getController()->redirect(array('admin/pluginmanager/sa/index/'));
}
}
$oPlugin->active = $iStatus;
$oPlugin->save();
Yii::app()->user->setFlash('success', gT('Plugin was deactivated'));
}
$this->getController()->redirect(array('admin/pluginmanager/sa/index/'));
}

/**
* Renders template(s) wrapped in header and footer
*
Expand Down
4 changes: 2 additions & 2 deletions application/views/admin/pluginmanager/index.php
Expand Up @@ -31,9 +31,9 @@
'value' => function($data) {
if ($data['active'] == 0)
{
$output = CHtml::link(CHtml::image(App()->getConfig('adminimageurl') . 'active.png', gT('Activate'), array('width' => 16, 'height' => 16)), array("/plugins/activate", "id" => $data['id']));
$output = CHtml::link(CHtml::image(App()->getConfig('adminimageurl') . 'active.png', gT('Activate'), array('width' => 16, 'height' => 16)), array("/admin/pluginmanager/sa/activate", "id" => $data['id']));
} else {
$output = CHtml::link(CHtml::image(App()->getConfig('adminimageurl') . 'inactive.png', gT('Deactivate'), array('width' => 16, 'height' => 16)), array("/plugins/deactivate", "id" => $data['id']));
$output = CHtml::link(CHtml::image(App()->getConfig('adminimageurl') . 'inactive.png', gT('Deactivate'), array('width' => 16, 'height' => 16)), array("/admin/pluginmanager/sa/deactivate", "id" => $data['id']));
}
if(count($data['settings'])>0)
{
Expand Down

0 comments on commit fd961fc

Please sign in to comment.