diff --git a/app/Http/Controllers/PluginController.php b/app/Http/Controllers/PluginController.php index e5182bd4..e91065db 100644 --- a/app/Http/Controllers/PluginController.php +++ b/app/Http/Controllers/PluginController.php @@ -3,6 +3,7 @@ namespace App\Http\Controllers; use View; +use Datatables; use App\Events; use Illuminate\Http\Request; use App\Services\PluginManager; @@ -29,13 +30,13 @@ class PluginController extends Controller case 'enable': $plugins->enable($id); - return redirect('admin/plugins/manage')->with('message', trans('admin.plugins.operations.enabled', ['plugin' => $plugin->title])); + return json(trans('admin.plugins.operations.enabled', ['plugin' => $plugin->title]), 0); break; case 'disable': $plugins->disable($id); - return redirect('admin/plugins/manage')->with('message', trans('admin.plugins.operations.disabled', ['plugin' => $plugin->title])); + return json(trans('admin.plugins.operations.disabled', ['plugin' => $plugin->title]), 0); break; case 'delete': @@ -65,11 +66,27 @@ class PluginController extends Controller } - $data = [ - 'installed' => $plugins->getPlugins(), - 'enabled' => $plugins->getEnabledPlugins() - ]; + return view('admin.plugins'); + } - return view('admin.plugins', $data); + public function getPluginData(PluginManager $plugins) + { + $installed = $plugins->getPlugins(); + + return Datatables::of($installed) + ->setRowId('plugin-{{ $name }}') + ->editColumn('title', function ($plugin) { + return trans($plugin->title); + }) + ->editColumn('description', function ($plugin) { + return trans($plugin->description); + }) + ->addColumn('status', function ($plugin) { + return trans('admin.plugins.status.'.($plugin->isEnabled() ? 'enabled' : 'disabled')); + }) + ->addColumn('operations', function ($plugin) { + return view('vendor.admin-operations.plugins.operations', compact('plugin')); + }) + ->make(true); } } diff --git a/app/Http/Routes/web.php b/app/Http/Routes/web.php index 3b6c0f1d..f2c86eb0 100644 --- a/app/Http/Routes/web.php +++ b/app/Http/Routes/web.php @@ -114,6 +114,7 @@ Route::group(['middleware' => 'admin', 'prefix' => 'admin'], function () Route::group(['prefix' => 'plugins'], function () { Route::any('/manage', 'PluginController@manage'); + Route::get('/data', 'PluginController@getPluginData'); Route::any('/market', 'PluginController@showMarket'); }); diff --git a/resources/assets/src/js/admin.js b/resources/assets/src/js/admin.js index 5cfb7e00..6b92e4ca 100644 --- a/resources/assets/src/js/admin.js +++ b/resources/assets/src/js/admin.js @@ -2,7 +2,7 @@ * @Author: printempw * @Date: 2016-07-22 14:02:44 * @Last Modified by: printempw - * @Last Modified time: 2016-12-31 19:54:01 + * @Last Modified time: 2017-01-02 12:11:43 */ 'use strict'; @@ -296,6 +296,66 @@ function deletePlayer(pid) { }); } +function enablePlugin(name) { + $.ajax({ + type: "POST", + url: "?action=enable&id=" + name, + dataType: "json", + success: function(json) { + if (json.errno == 0) { + toastr.success(json.msg); + + table.ajax.reload(null, false); + } else { + toastr.warning(json.msg); + } + }, + error: showAjaxError + }); +} + +function disablePlugin(name) { + $.ajax({ + type: "POST", + url: "?action=disable&id=" + name, + dataType: "json", + success: function(json) { + if (json.errno == 0) { + toastr.warning(json.msg); + + table.ajax.reload(null, false); + } else { + toastr.warning(json.msg); + } + }, + error: showAjaxError + }); +} + +function deletePlugin(name) { + swal({ + text: trans('admin.confirmDeletion'), + type: 'warning', + showCancelButton: true + }).then(function() { + $.ajax({ + type: "POST", + url: "?action=delete&id=" + name, + dataType: "json", + success: function(json) { + if (json.errno == 0) { + toastr.success(json.msg); + + $('tr[id=plugin-'+name+']').remove(); + } else { + toastr.warning(json.msg); + } + }, + error: showAjaxError + }); + }); +} + function downloadUpdates() { var file_size = 0; var progress = 0; diff --git a/resources/lang/en/locale.js b/resources/lang/en/locale.js index 00a49c2a..4c9f69bb 100644 --- a/resources/lang/en/locale.js +++ b/resources/lang/en/locale.js @@ -134,6 +134,10 @@ userRegistration: 'User Registration', // Plugins + statusEnabled: 'Enabled', + statusDisabled: 'Disabled', + enablePlugin: 'Enable', + disablePlugin: 'Disable', confirmDeletion: 'Are you sure to delete this plugin?' }, utils: { diff --git a/resources/lang/zh_CN/locale.js b/resources/lang/zh_CN/locale.js index 960c08e0..e58a440e 100644 --- a/resources/lang/zh_CN/locale.js +++ b/resources/lang/zh_CN/locale.js @@ -134,6 +134,10 @@ userRegistration: '用户注册', // Plugins + statusEnabled: '已启用', + statusDisabled: '已禁用', + enablePlugin: '启用插件', + disablePlugin: '禁用插件', confirmDeletion: '真的要删除这个插件吗?' }, utils: { diff --git a/resources/views/admin/plugins.tpl b/resources/views/admin/plugins.tpl index 77eabcd4..4d14f429 100644 --- a/resources/views/admin/plugins.tpl +++ b/resources/views/admin/plugins.tpl @@ -3,11 +3,7 @@ @section('title', trans('general.plugin-manage')) @section('style') - + @endsection @section('content') @@ -32,8 +28,8 @@ td#description { width: 35%; } @endif
| {{ trans('admin.plugins.name') }} | @@ -44,47 +40,6 @@ td#description { width: 35%; }{{ trans('admin.plugins.operations.title') }} | ||||
|---|---|---|---|---|---|
| {!! trans($plugin->title) !!} | -{!! trans($plugin->description) !!} | -{{ $plugin->author }} | -{{ $plugin->version }} | -- @if ($plugin->isEnabled()) - {{ trans('admin.plugins.status.enabled') }} - @else - {{ trans('admin.plugins.status.disabled') }} - @endif - | - -- @if ($plugin->isEnabled()) - {{ trans('admin.plugins.operations.disable') }} - @else - {{ trans('admin.plugins.operations.enable') }} - @endif - - @if ($plugin->isEnabled() && $plugin->hasConfigView()) - {{ trans('admin.plugins.operations.configure') }} - @else - {{ trans('admin.plugins.operations.configure') }} - @endif - - {{ trans('admin.plugins.operations.delete') }} - - | -
| 0 | -{{ trans('admin.plugins.empty') }} | -(´・ω・`) | -