123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143 |
- <?php
- namespace backend\controllers;
- use backend\models\ModuleConfig;
- use backend\widgets\grid\SwitcherAction;
- use Yii;
- use yii\base\Model;
- use yii\data\ArrayDataProvider;
- use yii\filters\VerbFilter;
- use yii\helpers\Json;
- use yii\web\Controller;
- /**
- * ModuleController implements the CRUD actions for Module model.
- */
- class ModuleController extends Controller
- {
- public function behaviors()
- {
- return [
- 'verbs' => [
- 'class' => VerbFilter::className(),
- 'actions' => [
- 'open' => ['post'],
- 'close' => ['post'],
- 'install' => ['post'],
- 'uninstall' => ['post']
- ],
- ],
- ];
- }
- public function actions()
- {
- return [
- 'switcher' => SwitcherAction::className()
- ];
- }
- /**
- * Lists all Module models.
- * @return mixed
- */
- public function actionIndex()
- {
- $modules = Yii::$app->moduleManager->findAll();
- $dataProvider = new ArrayDataProvider([
- 'allModels' => $modules
- ]);
- return $this->render('index', [
- 'dataProvider' => $dataProvider,
- ]);
- }
- // 安装
- public function actionInstall()
- {
- $id = Yii::$app->request->post('id');
- $module = Yii::$app->moduleManager->findOne($id);
- if(!Yii::$app->moduleManager->install($module)){
- Yii::$app->session->setFlash('error', '安装失败');
- } else {
- Yii::$app->session->setFlash('success', '安装成功');
- }
- return $this->redirect(['index']);
- }
- //卸载
- public function actionUninstall()
- {
- $id = Yii::$app->request->post('id');
- $module = Yii::$app->moduleManager->findOne($id);
- if(!Yii::$app->moduleManager->uninstall($module)){
- Yii::$app->session->setFlash('error', '卸载失败');
- } else {
- Yii::$app->session->setFlash('success', '卸载成功');
- }
- return $this->redirect(['index']);
- }
- // 开启
- public function actionOpen()
- {
- $id = Yii::$app->request->post('id');
- $module = Yii::$app->moduleManager->findOne($id);
- if(!$module->install){
- Yii::$app->session->setFlash('error', '没安装');
- }
- if(!Yii::$app->moduleManager->open($module)){
- Yii::$app->session->setFlash('error', '打开失败');
- } else {
- Yii::$app->session->setFlash('success', '打开成功');
- }
- return $this->redirect(['index']);
- }
- // 关闭
- public function actionClose()
- {
- $id = Yii::$app->request->post('id');
- $module = Yii::$app->moduleManager->findOne($id);
- if(!$module->install){
- Yii::$app->session->setFlash('error', '没安装');
- }
- if(!Yii::$app->moduleManager->close($module)){
- Yii::$app->session->setFlash('error', '关闭失败');
- } else {
- Yii::$app->session->setFlash('success', '关闭成功');
- }
- return $this->redirect(['index']);
- }
- // 配置
- public function actionConfig($id)
- {
- $module = Yii::$app->moduleManager->findOne($id);
- if(!$module->install){
- Yii::$app->session->setFlash('error', '插件没安装');
- return $this->redirect(['index']);
- }
- $configs = Json::decode($module->getModel()->config);
- $configModels = [];
- if (!empty($configs)) {
- foreach ($configs as $k => $config) {
- $configModel = new ModuleConfig();
- $configModel->scenario = 'init';
- $configModel->attributes = $config;
- $configModels[$k] = $configModel;
- }
- }
- $model = $module->getModel();
- if (\Yii::$app->request->isPost && Model::loadMultiple($configModels, \Yii::$app->request->post()) && Model::validateMultiple($configModels)) {
- $configs = Json::encode($configModels);
- $model->config = $configs;
- $model->save();
- return $this->redirect(['index']);
- }
- return $this->render('config', [
- 'model' => $model,
- 'configModels' => $configModels
- ]);
- }
- }
|