Skip to content

Commit 50abb87

Browse files
committed
Merge pull request #1267 from madd15/patch-3
Categories Index table view
2 parents 2dcb59d + ca62541 commit 50abb87

File tree

2 files changed

+83
-54
lines changed

2 files changed

+83
-54
lines changed

app/controllers/admin/CategoriesController.php

Lines changed: 32 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -218,30 +218,40 @@ public function getView($categoryID = null)
218218
public function getDatatable()
219219
{
220220
// Grab all the categories
221-
$categories = Category::orderBy('created_at', 'DESC')->get();
221+
$categories = Category::select(array('id', 'name', 'category_type', 'require_acceptance'))->whereNull('deleted_at');
222222

223-
$actions = new \Chumper\Datatable\Columns\FunctionColumn('actions', function($categories) {
224-
return '<a href="'.route('update/category', $categories->id).'" class="btn btn-warning btn-sm" style="margin-right:5px;"><i class="fa fa-pencil icon-white"></i></a><a data-html="false" class="btn delete-asset btn-danger btn-sm" data-toggle="modal" href="'.route('delete/category', $categories->id).'" data-content="'.Lang::get('admin/categories/message.delete.confirm').'" data-title="'.Lang::get('general.delete').' '.htmlspecialchars($categories->name).'?" onClick="return false;"><i class="fa fa-trash icon-white"></i></a>';
225-
});
223+
if (Input::has('search')) {
224+
$categories = $categories->TextSearch(Input::get('search'));
225+
}
226226

227-
return Datatable::collection($categories)
228-
->showColumns('name')
229-
->addColumn('category_type', function($categories) {
230-
return ucwords($categories->category_type);
231-
})
232-
->addColumn('count', function($categories) {
233-
return ($categories->category_type=='asset') ? link_to('/admin/settings/categories/'.$categories->id.'/view', $categories->assetscount()) : $categories->accessoriescount();
234-
})
235-
->addColumn('acceptance', function($categories) {
236-
return ($categories->require_acceptance=='1') ? '<i class="fa fa-check" style="margin-right:50%;margin-left:50%;"></i>' : '';
237-
})
238-
->addColumn('eula', function($categories) {
239-
return ($categories->getEula()) ? '<i class="fa fa-check" style="margin-right:50%;margin-left:50%;"></i></a>' : '';
240-
})
241-
->addColumn($actions)
242-
->searchColumns('name','category_type','count','acceptance','eula','actions')
243-
->orderColumns('name','category_type','count','acceptance','eula','actions')
244-
->make();
227+
$allowed_columns = ['name','category_type'];
228+
$order = Input::get('order') === 'asc' ? 'asc' : 'desc';
229+
$sort = in_array(Input::get('sort'), $allowed_columns) ? Input::get('sort') : 'created_at';
230+
231+
$categories = $categories->orderBy($sort, $order);
232+
233+
$catCount = $categories->count();
234+
$categories = $categories->skip(Input::get('offset'))->take(Input::get('limit'))->get();
235+
236+
$rows = array();
237+
238+
foreach ($categories as $category) {
239+
$actions = '<a href="'.route('update/category', $category->id).'" class="btn btn-warning btn-sm" style="margin-right:5px;"><i class="fa fa-pencil icon-white"></i></a><a data-html="false" class="btn delete-asset btn-danger btn-sm" data-toggle="modal" href="'.route('delete/category', $category->id).'" data-content="'.Lang::get('admin/categories/message.delete.confirm').'" data-title="'.Lang::get('general.delete').' '.htmlspecialchars($category->name).'?" onClick="return false;"><i class="fa fa-trash icon-white"></i></a>';
240+
241+
$rows[] = array(
242+
'name' => $category->name,
243+
'category_type' => ucwords($category->category_type),
244+
'count' => ($category->category_type=='asset') ? link_to('/admin/settings/categories/'.$category->id.'/view', $category->assetscount()) : $category->accessoriescount(),
245+
'acceptance' => ($category->require_acceptance=='1') ? '<i class="fa fa-check"></i>' : '',
246+
//EULA is still not working correctly
247+
'eula' => ($category->getEula()) ? '<i class="fa fa-check"></i>' : '',
248+
'actions' => $actions
249+
);
250+
}
251+
252+
$data = array('total' => $catCount, 'rows' => $rows);
253+
254+
return $data;
245255
}
246256

247257
public function getDataView($categoryID) {

app/views/backend/categories/index.blade.php

Lines changed: 51 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -19,38 +19,19 @@
1919
<div class="user-profile">
2020
<div class="row profile">
2121
<div class="col-md-9 bio">
22-
{{ Datatable::table()
23-
->addColumn(Lang::get('admin/categories/table.title'),
24-
Lang::get('general.type'),
25-
Lang::get('general.assets'),
26-
Lang::get('admin/categories/table.require_acceptance'),
27-
Lang::get('admin/categories/table.eula_text'),
28-
Lang::get('table.actions'))
29-
->setOptions(
30-
array(
31-
'language' => array(
32-
'search' => Lang::get('general.search'),
33-
'lengthMenu' => Lang::get('general.page_menu'),
34-
'loadingRecords' => Lang::get('general.loading'),
35-
'zeroRecords' => Lang::get('general.no_results'),
36-
'info' => Lang::get('general.pagination_info'),
37-
'processing' => Lang::get('general.processing'),
38-
'paginate'=> array(
39-
'first'=>Lang::get('general.first'),
40-
'previous'=>Lang::get('general.previous'),
41-
'next'=>Lang::get('general.next'),
42-
'last'=>Lang::get('general.last'),
43-
),
44-
),
45-
'sAjaxSource'=> route('api.categories.list'),
46-
'dom' =>'CT<"clear">lfrtip',
47-
'colVis'=> array('showAll'=>'Show All','restore'=>'Restore','exclude'=>array(5),'activate'=>'mouseover'),
48-
'columnDefs'=> array(array('bSortable'=>false,'targets'=>array(5))),
49-
'order'=>array(array(0,'asc')),
50-
)
51-
)
52-
->render() }}
53-
</div>
22+
<table name="models" id="table" data-url="{{route('api.categories.list')}}">
23+
<thead>
24+
<tr>
25+
<th data-sortable="true" data-field="name">{{Lang::get('admin/categories/table.title')}}</th>
26+
<th data-sortable="true" data-field="category_type">{{Lang::get('general.type')}}</th>
27+
<th data-searchable="false" data-sortable="false" data-field="count">{{Lang::get('general.assets')}}</th>
28+
<th data-searchable="false" data-sortable="false" data-field="acceptance">{{Lang::get('admin/categories/table.require_acceptance')}}</th>
29+
<th data-searchable="false" data-sortable="false" data-field="eula">{{Lang::get('admin/categories/table.eula_text')}}</th>
30+
<th data-switchable="false" data-searchable="false" data-sortable="false" data-field="actions">{{ Lang::get('table.actions') }}</th>
31+
</tr>
32+
</thead>
33+
</table>
34+
</div>
5435

5536

5637
<!-- side address column -->
@@ -61,4 +42,42 @@
6142
</div>
6243
</div>
6344
</div>
45+
46+
@section('moar_scripts')
47+
<script src="{{ asset('assets/js/bootstrap-table.js') }}"></script>
48+
<script src="{{ asset('assets/js/extensions/mobile/bootstrap-table-mobile.js') }}"></script>
49+
<script src="{{ asset('assets/js/extensions/export/bootstrap-table-export.js?v=1') }}"></script>
50+
<script src="{{ asset('assets/js/extensions/cookie/bootstrap-table-cookie.js?v=1') }}"></script>
51+
<script src="//rawgit.com/kayalshri/tableExport.jquery.plugin/master/tableExport.js?v=1') }}"></script>
52+
<script src="//rawgit.com/kayalshri/tableExport.jquery.plugin/master/jquery.base64.js?v=1') }}"></script>
53+
<script type="text/javascript">
54+
$('#table').bootstrapTable({
55+
classes: 'table table-hover table-no-bordered',
56+
undefinedText: '',
57+
iconsPrefix: 'fa',
58+
showRefresh: true,
59+
search: true,
60+
pageSize: {{{ Setting::getSettings()->per_page }}},
61+
pagination: true,
62+
sidePagination: 'server',
63+
sortable: true,
64+
mobileResponsive: true,
65+
showExport: true,
66+
showColumns: true,
67+
maintainSelected: true,
68+
paginationFirstText: "@lang('general.first')",
69+
paginationLastText: "@lang('general.last')",
70+
paginationPreText: "@lang('general.previous')",
71+
paginationNextText: "@lang('general.next')",
72+
pageList: ['10','25','50','100','150','200'],
73+
icons: {
74+
paginationSwitchDown: 'fa-caret-square-o-down',
75+
paginationSwitchUp: 'fa-caret-square-o-up',
76+
columns: 'fa-columns',
77+
refresh: 'fa-refresh'
78+
},
79+
});
80+
</script>
81+
@stop
82+
6483
@stop

0 commit comments

Comments
 (0)