106 lines
2.8 KiB
PHP
106 lines
2.8 KiB
PHP
<?php
|
|
|
|
namespace App\Admin\Controllers;
|
|
|
|
use App\Models\Module;
|
|
use Encore\Admin\Controllers\AdminController;
|
|
use Encore\Admin\Grid;
|
|
use Illuminate\Http\RedirectResponse;
|
|
use Nwidart\Modules\Facades\Module as ModuleManager;
|
|
|
|
class ModuleController extends AdminController
|
|
{
|
|
protected $title = '模块管理';
|
|
|
|
/**
|
|
* Notes : 模块列表
|
|
*
|
|
* @Date : 2021/10/28 9:18 上午
|
|
* @Author : <Jason.C>
|
|
* @return Grid
|
|
*/
|
|
protected function grid(): Grid
|
|
{
|
|
$grid = new Grid(new Module());
|
|
|
|
$grid->disableBatchActions();
|
|
$grid->disableFilter();
|
|
$grid->disableCreateButton();
|
|
$grid->disableActions();
|
|
|
|
$grid->column('name', '模块名称');
|
|
$grid->column('alias', '别名');
|
|
$grid->column('version', '版本');
|
|
$grid->column('author', '作者');
|
|
$grid->column('description', '模块简介');
|
|
$grid->column('enabled', '状态')->bool();
|
|
$grid->column('id', '操作')->display(function () {
|
|
if ($this->enabled) {
|
|
return sprintf('<a href="%s">%s</a>', route('admin.module.disable', $this->name), '禁用');
|
|
} else {
|
|
return sprintf('<a href="%s">%s</a>', route('admin.module.enable', $this->name), '启用');
|
|
}
|
|
});
|
|
|
|
return $grid;
|
|
}
|
|
|
|
/**
|
|
* Notes : 禁用模块
|
|
*
|
|
* @Date : 2021/3/11 1:13 下午
|
|
* @Author : <Jason.C>
|
|
* @param string $name
|
|
* @return RedirectResponse
|
|
*/
|
|
public function disable(string $name): RedirectResponse
|
|
{
|
|
try {
|
|
$module = ModuleManager::find($name);
|
|
|
|
$module->disable();
|
|
|
|
$class = sprintf('\\%s\\%s\\%s', config('modules.namespace'), $module->getName(), $module->getName());
|
|
|
|
if (class_exists($class)) {
|
|
call_user_func([$class, 'uninstall']);
|
|
}
|
|
|
|
admin_success('Success', $name . '模块禁用成功');
|
|
} catch (\Exception $exception) {
|
|
admin_error('Error', $exception->getMessage());
|
|
}
|
|
|
|
return back();
|
|
}
|
|
|
|
/**
|
|
* Notes : 启用模块
|
|
*
|
|
* @Date : 2021/3/11 1:13 下午
|
|
* @Author : <Jason.C>
|
|
* @param string $name
|
|
* @return RedirectResponse
|
|
*/
|
|
public function enable(string $name): RedirectResponse
|
|
{
|
|
try {
|
|
$module = ModuleManager::find($name);
|
|
|
|
$module->enable();
|
|
|
|
$class = sprintf('\\%s\\%s\\%s', config('modules.namespace'), $module->getName(), $module->getName());
|
|
|
|
if (class_exists($class)) {
|
|
call_user_func([$class, 'install']);
|
|
}
|
|
|
|
admin_success('Success', $name . '模块启用成功');
|
|
} catch (\Exception $exception) {
|
|
admin_error('Error', $exception->getMessage());
|
|
}
|
|
|
|
return back();
|
|
}
|
|
}
|