use DataTables at player management
This commit is contained in:
parent
3ca85aff8f
commit
2250b00c0a
@ -174,10 +174,8 @@ class AdminController extends Controller
|
|||||||
return Arr::get($permissionTextMap, $user->permission);
|
return Arr::get($permissionTextMap, $user->permission);
|
||||||
})
|
})
|
||||||
->setRowId('uid')
|
->setRowId('uid')
|
||||||
->editColumn('score', function ($user) {
|
->editColumn('score', 'vendor.admin-operations.users.score')
|
||||||
return '<input type="text" class="form-control score" value="'.$user->score.'" title="输入修改后的积分,回车提交" data-toggle="tooltip" data-placement="right">';
|
->addColumn('operations', 'vendor.admin-operations.users.operations')
|
||||||
})
|
|
||||||
->addColumn('operations', 'vendor.admin-operations.users')
|
|
||||||
->make(true);
|
->make(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -189,26 +187,18 @@ class AdminController extends Controller
|
|||||||
*/
|
*/
|
||||||
public function players(Request $request)
|
public function players(Request $request)
|
||||||
{
|
{
|
||||||
$page = $request->input('page', 1);
|
return view('admin.players');
|
||||||
$filter = $request->input('filter', '');
|
}
|
||||||
$q = $request->input('q', '');
|
|
||||||
|
|
||||||
if ($filter == "") {
|
public function getPlayerData()
|
||||||
$players = Player::orderBy('uid');
|
{
|
||||||
} elseif ($filter == "player_name") {
|
$players = Player::select(['pid', 'uid', 'player_name', 'preference', 'tid_steve', 'tid_alex', 'tid_cape', 'last_modified']);
|
||||||
$players = Player::like('player_name', $q)->orderBy('uid');
|
|
||||||
} elseif ($filter == "uid") {
|
|
||||||
$players = Player::where('uid', $q)->orderBy('uid');
|
|
||||||
}
|
|
||||||
|
|
||||||
$total_pages = ceil($players->count() / 30);
|
return Datatables::of($players)->editColumn('preference', 'vendor.admin-operations.players.preference')
|
||||||
$players = $players->skip(($page - 1) * 30)->take(30)->get();
|
->setRowId('pid')
|
||||||
|
->addColumn('previews', 'vendor.admin-operations.players.previews')
|
||||||
return view('admin.players')->with('players', $players)
|
->addColumn('operations', 'vendor.admin-operations.players.operations')
|
||||||
->with('filter', $filter)
|
->make(true);
|
||||||
->with('q', $q)
|
|
||||||
->with('page', $page)
|
|
||||||
->with('total_pages', $total_pages);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -96,19 +96,21 @@ Route::group(['prefix' => 'skinlib'], function ()
|
|||||||
*/
|
*/
|
||||||
Route::group(['middleware' => 'admin', 'prefix' => 'admin'], function ()
|
Route::group(['middleware' => 'admin', 'prefix' => 'admin'], function ()
|
||||||
{
|
{
|
||||||
Route::get('/', 'AdminController@index');
|
Route::get('/', 'AdminController@index');
|
||||||
|
|
||||||
Route::any('/customize', 'AdminController@customize');
|
Route::any('/customize', 'AdminController@customize');
|
||||||
Route::any('/score', 'AdminController@score');
|
Route::any('/score', 'AdminController@score');
|
||||||
Route::any('/options', 'AdminController@options');
|
Route::any('/options', 'AdminController@options');
|
||||||
|
|
||||||
Route::get('/users', 'AdminController@users');
|
Route::get('/users', 'AdminController@users');
|
||||||
Route::get('/user-data', 'AdminController@getUserData');
|
Route::get('/user-data', 'AdminController@getUserData');
|
||||||
|
|
||||||
|
Route::get('/players', 'AdminController@players');
|
||||||
|
Route::get('/player-data', 'AdminController@getPlayerData');
|
||||||
|
|
||||||
Route::get('/players', 'AdminController@players');
|
|
||||||
// ajax handlers
|
// ajax handlers
|
||||||
Route::post('/users', 'AdminController@userAjaxHandler');
|
Route::post('/users', 'AdminController@userAjaxHandler');
|
||||||
Route::post('/players', 'AdminController@playerAjaxHandler');
|
Route::post('/players', 'AdminController@playerAjaxHandler');
|
||||||
|
|
||||||
Route::group(['prefix' => 'plugins'], function () {
|
Route::group(['prefix' => 'plugins'], function () {
|
||||||
Route::any('/manage', 'PluginController@manage');
|
Route::any('/manage', 'PluginController@manage');
|
||||||
|
@ -9,32 +9,20 @@
|
|||||||
<!-- Content Header (Page header) -->
|
<!-- Content Header (Page header) -->
|
||||||
<section class="content-header">
|
<section class="content-header">
|
||||||
<h1>
|
<h1>
|
||||||
@if (isset($_GET['q']))
|
|
||||||
搜索结果:{{ $_GET['q'] }}
|
|
||||||
@else
|
|
||||||
{{ trans('general.player-manage') }}
|
{{ trans('general.player-manage') }}
|
||||||
@endif
|
|
||||||
<small>Player Management</small>
|
<small>Player Management</small>
|
||||||
<!-- Search Form -->
|
|
||||||
<form method="get" action="" class="user-search-form">
|
|
||||||
<input type="text" name="q" class="form-control user-search-input" placeholder="输入,回车搜索。" value="{{ $q }}">
|
|
||||||
<select name="filter" class="form-control pull-right user-search-input">
|
|
||||||
<option value='uid' selected="{{ $filter == 'nickname' ? 'selected' : '' }}">根据角色拥有者搜索</option>
|
|
||||||
<option value='player_name' selected="{{ $filter == 'email' ? 'selected' : '' }}">搜索角色名</option>
|
|
||||||
</select>
|
|
||||||
</form>
|
|
||||||
</h1>
|
</h1>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<!-- Main content -->
|
<!-- Main content -->
|
||||||
<section class="content">
|
<section class="content">
|
||||||
<div class="box">
|
<div class="box">
|
||||||
<div class="box-body table-responsive no-padding">
|
<div class="box-body table-bordered">
|
||||||
<table class="table table-hover">
|
<table id="player-table" class="table table-hover">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>PID</th>
|
<th>PID</th>
|
||||||
<th>拥有者 UID</th>
|
<th>拥有者</th>
|
||||||
<th>角色名</th>
|
<th>角色名</th>
|
||||||
<th>优先模型</th>
|
<th>优先模型</th>
|
||||||
<th>预览材质</th>
|
<th>预览材质</th>
|
||||||
@ -42,104 +30,8 @@
|
|||||||
<th>操作</th>
|
<th>操作</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
|
|
||||||
<tbody>
|
|
||||||
@forelse($players as $player)
|
|
||||||
<tr id="{{ $player->pid }}">
|
|
||||||
<td>{{ $player->pid }}</td>
|
|
||||||
<td><a href="?filter=uid&q={{ $player->uid }}">{{ $player->uid }}</a></td>
|
|
||||||
<td id="player-name">{{ $player->player_name }}</td>
|
|
||||||
<td>
|
|
||||||
<select class="form-control" id="preference">
|
|
||||||
<option {{ ($player->preference == "default") ? 'selected=selected' : '' }} value="default">Default</option>
|
|
||||||
<option {{ ($player->preference == "slim") ? 'selected=selected' : '' }} value="slim">Slim</option>
|
|
||||||
</select>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
@if ($player->tid_steve == '0')
|
|
||||||
<img id="{{ $player->pid }}-steve" width="64" />
|
|
||||||
@else
|
|
||||||
<a href="{{ url('skinlib/show?tid='.$player->tid_steve) }}">
|
|
||||||
<img id="{{ $player->pid }}-steve" width="64" src="{{ url('preview/64/'.$player->tid_steve) }}.png" />
|
|
||||||
</a>
|
|
||||||
@endif
|
|
||||||
|
|
||||||
@if ($player->tid_alex == '0')
|
|
||||||
<img id="{{ $player->pid }}-alex" width="64" />
|
|
||||||
@else
|
|
||||||
<a href="{{ url('skinlib/show?tid='.$player->tid_alex) }}">
|
|
||||||
<img id="{{ $player->pid }}-alex" width="64" src="{{ url('preview/64/'.$player->tid_alex) }}.png" />
|
|
||||||
</a>
|
|
||||||
@endif
|
|
||||||
|
|
||||||
@if ($player->tid_cape == '0')
|
|
||||||
<img id="{{ $player->pid }}-cape" width="64" />
|
|
||||||
@else
|
|
||||||
<a href="{{ url('skinlib/show?tid='.$player->tid_cape) }}">
|
|
||||||
<img id="{{ $player->pid }}-cape" width="64" src="{{ url('preview/64/'.$player->tid_cape) }}.png" />
|
|
||||||
</a>
|
|
||||||
@endif
|
|
||||||
</td>
|
|
||||||
<td>{{ $player->last_modified }}</td>
|
|
||||||
|
|
||||||
<td>
|
|
||||||
<div class="btn-group">
|
|
||||||
<button type="button" class="btn btn-sm btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
|
||||||
更多操作 <span class="caret"></span>
|
|
||||||
</button>
|
|
||||||
<ul class="dropdown-menu">
|
|
||||||
<li><a href="javascript:changeTexture('{{ $player->pid }}');">更换材质</a></li>
|
|
||||||
<li><a href="javascript:changeOwner('{{ $player->pid }}');">更换角色拥有者</a></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<a class="btn btn-danger btn-sm" href="javascript:deletePlayer('{{ $player->pid }}');">删除角色</a>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
@empty
|
|
||||||
<tr>
|
|
||||||
<td>0</td>
|
|
||||||
<td>无结果</td>
|
|
||||||
<td>(´・ω・`)</td>
|
|
||||||
</tr>
|
|
||||||
@endforelse
|
|
||||||
</tbody>
|
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
<div class="box-footer">
|
|
||||||
<!-- Pagination -->
|
|
||||||
<ul class="pagination pagination-sm no-margin pull-right">
|
|
||||||
<?php $base_url = ($filter != "" && $q != "") ? "?filter=$filter&q=$q&" : "?"; ?>
|
|
||||||
<li><a href="?page=1">«</a></li>
|
|
||||||
|
|
||||||
@if ($page != 1)
|
|
||||||
<li><a href="{{ $base_url }}page={{ $page-1 }}">{{ $page - 1 }}</a></li>
|
|
||||||
@endif
|
|
||||||
|
|
||||||
<li><a href="{{ $base_url }}page={{ $page }}" class="active">{{ $page }}</a></li>
|
|
||||||
|
|
||||||
@if ($total_pages > $page)
|
|
||||||
<li><a href="{{ $base_url }}page={{ $page+1 }}">{{ $page+1 }}</a></li>
|
|
||||||
@endif
|
|
||||||
|
|
||||||
<li><a href="{{ $base_url }}page={{ $total_pages }}">»</a></li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<select id="page-select" class="pull-right">
|
|
||||||
@for ($i = 1; $i <= $total_pages; $i++)
|
|
||||||
|
|
||||||
@if ($i == $page)
|
|
||||||
<option value='{{ $i }}' selected="selected">{{ $i }}</option>
|
|
||||||
@else
|
|
||||||
<option value='{{ $i }}'>{{ $i }}</option>
|
|
||||||
@endif
|
|
||||||
|
|
||||||
@endfor
|
|
||||||
</select>
|
|
||||||
|
|
||||||
<p class="pull-right">第 {{ $page }} 页,共 {{ $total_pages }} 页</p>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</section><!-- /.content -->
|
</section><!-- /.content -->
|
||||||
@ -147,20 +39,31 @@
|
|||||||
|
|
||||||
@endsection
|
@endsection
|
||||||
|
|
||||||
@section('style')
|
|
||||||
<style>
|
|
||||||
@media (max-width: 767px) {
|
|
||||||
.content-header > h1 > small {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
@endsection
|
|
||||||
|
|
||||||
@section('script')
|
@section('script')
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
$(document).ready(function() {
|
$(document).ready(function() {
|
||||||
$('.box-body').css('min-height', $('.content-wrapper').height() - $('.content-header').outerHeight() - 120);
|
$('.box-body').css('min-height', $('.content-wrapper').height() - $('.content-header').outerHeight() - 120);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
$('#player-table').DataTable({
|
||||||
|
language: trans('vendor.datatables'),
|
||||||
|
responsive: true,
|
||||||
|
autoWidth: false,
|
||||||
|
processing: true,
|
||||||
|
serverSide: true,
|
||||||
|
ajax: '{{ url("admin/player-data") }}',
|
||||||
|
createdRow: function (row, data, index) {
|
||||||
|
$('td', row).eq(2).attr('id', 'player-name');
|
||||||
|
},
|
||||||
|
columns: [
|
||||||
|
{data: 'pid', 'width': '1%'},
|
||||||
|
{data: 'uid'},
|
||||||
|
{data: 'player_name'},
|
||||||
|
{data: 'preference'},
|
||||||
|
{data: 'previews', searchable: false, orderable: false},
|
||||||
|
{data: 'last_modified'},
|
||||||
|
{data: 'operations', searchable: false, orderable: false}
|
||||||
|
]
|
||||||
|
});
|
||||||
</script>
|
</script>
|
||||||
@endsection
|
@endsection
|
||||||
|
@ -21,7 +21,6 @@
|
|||||||
<table id="user-table" class="table table-hover">
|
<table id="user-table" class="table table-hover">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
{{-- <th><input name="select_all" value="1" type="checkbox"></th> --}}
|
|
||||||
<th>UID</th>
|
<th>UID</th>
|
||||||
<th>邮箱</th>
|
<th>邮箱</th>
|
||||||
<th>昵称</th>
|
<th>昵称</th>
|
||||||
@ -53,22 +52,11 @@ $('#user-table').DataTable({
|
|||||||
serverSide: true,
|
serverSide: true,
|
||||||
ajax: '{{ url("admin/user-data") }}',
|
ajax: '{{ url("admin/user-data") }}',
|
||||||
createdRow: function (row, data, index) {
|
createdRow: function (row, data, index) {
|
||||||
$('td', row).eq(2).attr('id', 'email');
|
$('td', row).eq(1).attr('id', 'email');
|
||||||
$('td', row).eq(3).attr('id', 'nickname');
|
$('td', row).eq(2).attr('id', 'nickname');
|
||||||
$('td', row).eq(5).attr('id', 'permission');
|
$('td', row).eq(4).attr('id', 'permission');
|
||||||
},
|
},
|
||||||
// columnDefs: [{
|
|
||||||
// targets: 0,
|
|
||||||
// searchable: false,
|
|
||||||
// orderable: false,
|
|
||||||
// width: '1%',
|
|
||||||
// className: 'dt-body-center',
|
|
||||||
// render: function (data, type, full, meta){
|
|
||||||
// return '<input type="checkbox">';
|
|
||||||
// }
|
|
||||||
// }],
|
|
||||||
columns: [
|
columns: [
|
||||||
// {data: 0},
|
|
||||||
{data: 'uid', 'width': '1%'},
|
{data: 'uid', 'width': '1%'},
|
||||||
{data: 'email'},
|
{data: 'email'},
|
||||||
{data: 'nickname'},
|
{data: 'nickname'},
|
||||||
|
11
resources/views/vendor/admin-operations/players/operations.tpl
vendored
Normal file
11
resources/views/vendor/admin-operations/players/operations.tpl
vendored
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
<div class="btn-group">
|
||||||
|
<button type="button" class="btn btn-sm btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||||
|
更多操作 <span class="caret"></span>
|
||||||
|
</button>
|
||||||
|
<ul class="dropdown-menu">
|
||||||
|
<li><a href="javascript:changeTexture('{{ $pid }}');">更换材质</a></li>
|
||||||
|
<li><a href="javascript:changeOwner('{{ $pid }}');">更换角色拥有者</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<a class="btn btn-danger btn-sm" href="javascript:deletePlayer('{{ $pid }}');">删除角色</a>
|
4
resources/views/vendor/admin-operations/players/preference.tpl
vendored
Normal file
4
resources/views/vendor/admin-operations/players/preference.tpl
vendored
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
<select class="form-control" id="preference">
|
||||||
|
<option {{ ($preference == "default") ? 'selected=selected' : '' }} value="default">Default</option>
|
||||||
|
<option {{ ($preference == "slim") ? 'selected=selected' : '' }} value="slim">Slim</option>
|
||||||
|
</select>
|
23
resources/views/vendor/admin-operations/players/previews.tpl
vendored
Normal file
23
resources/views/vendor/admin-operations/players/previews.tpl
vendored
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
@if ($tid_steve == '0')
|
||||||
|
<img id="{{ $pid }}-steve" width="64" />
|
||||||
|
@else
|
||||||
|
<a href="{{ url('skinlib/show?tid='.$tid_steve) }}">
|
||||||
|
<img id="{{ $pid }}-steve" width="64" src="{{ url('preview/64/'.$tid_steve) }}.png" />
|
||||||
|
</a>
|
||||||
|
@endif
|
||||||
|
|
||||||
|
@if ($tid_alex == '0')
|
||||||
|
<img id="{{ $pid }}-alex" width="64" />
|
||||||
|
@else
|
||||||
|
<a href="{{ url('skinlib/show?tid='.$tid_alex) }}">
|
||||||
|
<img id="{{ $pid }}-alex" width="64" src="{{ url('preview/64/'.$tid_alex) }}.png" />
|
||||||
|
</a>
|
||||||
|
@endif
|
||||||
|
|
||||||
|
@if ($tid_cape == '0')
|
||||||
|
<img id="{{ $pid }}-cape" width="64" />
|
||||||
|
@else
|
||||||
|
<a href="{{ url('skinlib/show?tid='.$tid_cape) }}">
|
||||||
|
<img id="{{ $pid }}-cape" width="64" src="{{ url('preview/64/'.$tid_cape) }}.png" />
|
||||||
|
</a>
|
||||||
|
@endif
|
1
resources/views/vendor/admin-operations/users/score.tpl
vendored
Normal file
1
resources/views/vendor/admin-operations/users/score.tpl
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
<input type="text" class="form-control score" value="{{ $score }}" title="输入修改后的积分,回车提交" data-toggle="tooltip" data-placement="right">
|
Loading…
Reference in New Issue
Block a user