mirror of
https://github.com/snipe/snipe-it.git
synced 2025-02-21 03:15:45 -08:00
Category improvements
This commit is contained in:
parent
a18e90c22a
commit
8fe8ff71e8
|
@ -6,7 +6,7 @@ use Illuminate\Http\Request;
|
|||
use App\Http\Controllers\Controller;
|
||||
use App\Helpers\Helper;
|
||||
use App\Models\Category;
|
||||
use App\Http\Transformers\DatatablesTransformer;
|
||||
use App\Http\Transformers\CategoriesTransformer;
|
||||
|
||||
class CategoriesController extends Controller
|
||||
{
|
||||
|
@ -37,7 +37,7 @@ class CategoriesController extends Controller
|
|||
|
||||
$total = $categories->count();
|
||||
$categories = $categories->skip($offset)->take($limit)->get();
|
||||
return (new DatatablesTransformer)->transformDatatables($categories, $total);
|
||||
return (new CategoriesTransformer)->transformCategories($categories, $total);
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -187,12 +187,26 @@ class CategoriesController extends Controller
|
|||
* @since [v1.8]
|
||||
* @return \Illuminate\Contracts\View\View
|
||||
*/
|
||||
public function show($categoryId = null)
|
||||
public function show($id)
|
||||
{
|
||||
$category = Category::find($categoryId);
|
||||
$category = Category::find($id);
|
||||
|
||||
|
||||
if (isset($category->id)) {
|
||||
return View::make('categories/view', compact('category'));
|
||||
|
||||
if ($category->category_type=='asset') {
|
||||
$category_type = 'hardware';
|
||||
$category_type_route = 'assets';
|
||||
} elseif ($category->category_type=='accessory') {
|
||||
$category_type = 'accessories';
|
||||
$category_type_route = 'accessories';
|
||||
} else {
|
||||
$category_type = $category->category_type;
|
||||
$category_type_route = $category->category_type.'s';
|
||||
}
|
||||
return View::make('categories/view', compact('category'))
|
||||
->with('category_type',$category_type)
|
||||
->with('category_type_route',$category_type_route);
|
||||
}
|
||||
|
||||
// Prepare the error message
|
||||
|
|
51
app/Http/Transformers/CategoriesTransformer.php
Normal file
51
app/Http/Transformers/CategoriesTransformer.php
Normal file
|
@ -0,0 +1,51 @@
|
|||
<?php
|
||||
namespace App\Http\Transformers;
|
||||
|
||||
use App\Models\Category;
|
||||
use Illuminate\Database\Eloquent\Collection;
|
||||
use Gate;
|
||||
|
||||
class CategoriesTransformer
|
||||
{
|
||||
|
||||
public function transformCategories (Collection $categorys, $total)
|
||||
{
|
||||
$array = array();
|
||||
foreach ($categorys as $category) {
|
||||
$array[] = self::transformCategory($category);
|
||||
}
|
||||
return (new DatatablesTransformer)->transformDatatables($array, $total);
|
||||
}
|
||||
|
||||
public function transformCategory (Category $category = null)
|
||||
{
|
||||
if ($category) {
|
||||
|
||||
$array = [
|
||||
'id' => e($category->id),
|
||||
'name' => e($category->name),
|
||||
'type' => e($category->category_type),
|
||||
'use_default_eula' => ($category->use_default_eula =='1') ? true : false,
|
||||
'require_acceptance' => ($category->require_acceptance =='1') ? true : false,
|
||||
'assets_count' => $category->assets_count,
|
||||
'accessories_count' => $category->accessories_count,
|
||||
'consumables_count' => $category->consumables_count,
|
||||
'components_count' => $category->components_count,
|
||||
];
|
||||
|
||||
$permissions_array['available_actions'] = [
|
||||
'update' => Gate::allows('admin') ? true : false,
|
||||
'delete' => Gate::allows('admin') ? true : false,
|
||||
];
|
||||
|
||||
$array += $permissions_array;
|
||||
|
||||
return $array;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
|
@ -11,6 +11,85 @@ use App\Helpers\Helper;
|
|||
class CategoryPresenter extends Presenter
|
||||
{
|
||||
|
||||
/**
|
||||
* Json Column Layout for bootstrap table
|
||||
* @return string
|
||||
*/
|
||||
public static function dataTableLayout()
|
||||
{
|
||||
$layout = [
|
||||
[
|
||||
"field" => "id",
|
||||
"searchable" => false,
|
||||
"sortable" => true,
|
||||
"switchable" => true,
|
||||
"title" => trans('general.id'),
|
||||
"visible" => false
|
||||
], [
|
||||
"field" => "name",
|
||||
"searchable" => true,
|
||||
"sortable" => true,
|
||||
"title" => trans('general.name'),
|
||||
"visible" => false,
|
||||
"formatter" => 'categoriesLinkFormatter',
|
||||
],[
|
||||
"field" => "type",
|
||||
"searchable" => true,
|
||||
"sortable" => true,
|
||||
"title" => trans('general.type'),
|
||||
"visible" => true
|
||||
], [
|
||||
"field" => "assets_count",
|
||||
"searchable" => false,
|
||||
"sortable" => false,
|
||||
"title" => trans('general.assets'),
|
||||
"visible" => false
|
||||
], [
|
||||
"field" => "accessories_count",
|
||||
"searchable" => false,
|
||||
"sortable" => false,
|
||||
"title" => trans('general.accessories'),
|
||||
"visible" => false
|
||||
], [
|
||||
"field" => "consumables_count",
|
||||
"searchable" => false,
|
||||
"sortable" => false,
|
||||
"title" => trans('general.consumables'),
|
||||
"visible" => true
|
||||
], [
|
||||
"field" => "components_count",
|
||||
"searchable" => false,
|
||||
"sortable" => false,
|
||||
"title" => trans('general.components'),
|
||||
"visible" => true
|
||||
], [
|
||||
"field" => "use_default_eula",
|
||||
"searchable" => false,
|
||||
"sortable" => false,
|
||||
"title" => trans('admin/categories/table.eula_text'),
|
||||
"visible" => false,
|
||||
"formatter" => 'trueFalseFormatter',
|
||||
], [
|
||||
"field" => "require_acceptance",
|
||||
"searchable" => false,
|
||||
"sortable" => false,
|
||||
"title" => trans('admin/categories/table.require_acceptance'),
|
||||
"visible" => false,
|
||||
"formatter" => 'trueFalseFormatter',
|
||||
], [
|
||||
"field" => "actions",
|
||||
"searchable" => false,
|
||||
"sortable" => false,
|
||||
"switchable" => false,
|
||||
"title" => trans('table.actions'),
|
||||
"formatter" => "categoriesActionsFormatter",
|
||||
]
|
||||
];
|
||||
|
||||
return json_encode($layout);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Link to this categories name
|
||||
* @return string
|
||||
|
|
|
@ -28,17 +28,7 @@
|
|||
data-cookie="true"
|
||||
data-click-to-select="true"
|
||||
data-cookie-id-table="categoriesTable-{{ config('version.hash_version') }}">
|
||||
<thead>
|
||||
<tr>
|
||||
<th data-sortable="true" data-field="id" data-visible="false">{{ trans('general.id') }}</th>
|
||||
<th data-sortable="true" data-field="name" data-formatter="categoriesLinkFormatter">{{ trans('admin/categories/table.title') }}</th>
|
||||
<th data-sortable="true" data-field="category_type">{{ trans('general.type') }}</th>
|
||||
<th data-searchable="false" data-sortable="false" data-field="assets_count">{{ trans('general.assets') }}</th>
|
||||
<th data-searchable="false" data-sortable="true" data-field="require_acceptance" data-formatter="trueFalseFormatter">{{ trans('admin/categories/table.require_acceptance') }}</th>
|
||||
<th data-searchable="false" data-sortable="true" data-field="use_default_eula" data-formatter="trueFalseFormatter">{{ trans('admin/categories/table.eula_text') }}</th>
|
||||
<th data-formatter="categoriesActionsFormatter" data-switchable="false" data-searchable="false" data-sortable="false" data-field="actions">{{ trans('table.actions') }}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
</table>
|
||||
</div>
|
||||
</div><!-- /.box-body -->
|
||||
|
@ -49,6 +39,10 @@
|
|||
@stop
|
||||
|
||||
@section('moar_scripts')
|
||||
@include ('partials.bootstrap-table', ['exportFile' => 'categories-export', 'search' => true])
|
||||
@include ('partials.bootstrap-table',
|
||||
['exportFile' => 'category-export',
|
||||
'search' => true,
|
||||
'columns' => \App\Presenters\CategoryPresenter::dataTableLayout()
|
||||
])
|
||||
@stop
|
||||
|
||||
|
|
|
@ -4,7 +4,8 @@
|
|||
@section('title')
|
||||
|
||||
{{ $category->name }}
|
||||
{{ trans('general.assets') }}
|
||||
{{ ucwords($category_type_route) }}
|
||||
|
||||
@parent
|
||||
@stop
|
||||
|
||||
|
@ -30,27 +31,22 @@
|
|||
name="category_assets"
|
||||
class="snipe-table"
|
||||
id="table"
|
||||
data-url="{{ ($category->category_type=='asset') ? route('api.assets.index',['category_id'=> $category->id]) : route('api.'.$category->category_type.'s.index', ['category_id'=> $category->id]) }}
|
||||
data-url="{{ route('api.'.$category_type_route.'.index',['category_id'=> $category->id]) }}
|
||||
data-cookie="true"
|
||||
data-click-to-select="true"
|
||||
data-cookie-id-table="categoryAssetsTable">
|
||||
data-cookie-id-table="category{{ $category_type_route }}Table">
|
||||
@if ($category->category_type!='asset')
|
||||
<thead>
|
||||
<tr>
|
||||
<th data-searchable="false" data-sortable="false" data-field="company" data-visible="false">
|
||||
<th data-searchable="false" data-sortable="false" data-field="id" data-visible="false">{{ trans('general.id') }}</th>
|
||||
<th data-searchable="false" data-sortable="false" data-field="company" data-visible="false" data-formatter="companiesLinkObjFormatter">
|
||||
{{ trans('admin/companies/table.title') }}
|
||||
</th>
|
||||
<th data-searchable="false" data-sortable="false" data-field="id" data-visible="false">{{ trans('general.id') }}</th>
|
||||
<th data-searchable="false" data-sortable="false" data-field="name">{{ trans('general.name') }}</th>
|
||||
@if ($category->category_type=='asset')
|
||||
<th data-searchable="false" data-sortable="false" data-field="model" data-formatter="modelsLinkObjFormatter">{{ trans('admin/hardware/form.model') }}</th>
|
||||
<th data-searchable="false" data-sortable="false" data-field="asset_tag" data-formatter="hardwareLinkFormatter">{{ trans('general.asset_tag') }}</th>
|
||||
<th data-searchable="false" data-sortable="false" data-field="serial" data-formatter="hardwareLinkFormatter">{{ trans('admin/hardware/form.serial') }}</th>
|
||||
<th data-searchable="false" data-sortable="false" data-field="assigned_to" data-formatter="usersLinkFormatter">{{ trans('general.user') }}</th>
|
||||
<th data-searchable="false" data-sortable="false" data-field="change" data-switchable="false">{{ trans('admin/hardware/table.change') }}</th>
|
||||
@endif
|
||||
<th data-searchable="false" data-sortable="false" data-field="actions" data-switchable="false">{{ trans('table.actions') }}</th>
|
||||
<th data-searchable="true" data-formatter="{{ $category_type }}LinkFormatter" data-sortable="true" data-field="name">{{ trans('general.name') }}</th>
|
||||
<th data-searchable="false" data-sortable="false" data-formatter="{{ $category_type }}ActionsFormatter" data-field="actions" data-switchable="false">{{ trans('table.actions') }}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
@endif
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -59,5 +55,20 @@
|
|||
@stop
|
||||
|
||||
@section('moar_scripts')
|
||||
@include ('partials.bootstrap-table', ['exportFile' => 'category-' . $category->name . '-export', 'search' => false])
|
||||
|
||||
@if ($category->category_type=='asset')
|
||||
@include ('partials.bootstrap-table',
|
||||
[
|
||||
'exportFile' => 'category-' . $category->name . '-export',
|
||||
'search' => true,
|
||||
'columns' => \App\Presenters\AssetPresenter::dataTableLayout()])
|
||||
@else
|
||||
@include ('partials.bootstrap-table',
|
||||
[
|
||||
'exportFile' => 'category-' . $category->name . '-export',
|
||||
'search' => false])
|
||||
|
||||
@endif
|
||||
|
||||
|
||||
@stop
|
||||
|
|
Loading…
Reference in a new issue