From 8fe8ff71e822bee476440a3eaf5d7af964ffbab0 Mon Sep 17 00:00:00 2001 From: snipe Date: Thu, 16 Feb 2017 00:32:33 -0800 Subject: [PATCH] Category improvements --- .../Controllers/Api/CategoriesController.php | 4 +- app/Http/Controllers/CategoriesController.php | 20 ++++- .../Transformers/CategoriesTransformer.php | 51 ++++++++++++ app/Presenters/CategoryPresenter.php | 79 +++++++++++++++++++ resources/views/categories/index.blade.php | 18 ++--- resources/views/categories/view.blade.php | 43 ++++++---- 6 files changed, 182 insertions(+), 33 deletions(-) create mode 100644 app/Http/Transformers/CategoriesTransformer.php diff --git a/app/Http/Controllers/Api/CategoriesController.php b/app/Http/Controllers/Api/CategoriesController.php index 046b29b207..4be6eb4ed1 100644 --- a/app/Http/Controllers/Api/CategoriesController.php +++ b/app/Http/Controllers/Api/CategoriesController.php @@ -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); } diff --git a/app/Http/Controllers/CategoriesController.php b/app/Http/Controllers/CategoriesController.php index d05d4e9478..f13520353b 100755 --- a/app/Http/Controllers/CategoriesController.php +++ b/app/Http/Controllers/CategoriesController.php @@ -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 diff --git a/app/Http/Transformers/CategoriesTransformer.php b/app/Http/Transformers/CategoriesTransformer.php new file mode 100644 index 0000000000..f736a9aa36 --- /dev/null +++ b/app/Http/Transformers/CategoriesTransformer.php @@ -0,0 +1,51 @@ +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; + } + + + } + + + +} diff --git a/app/Presenters/CategoryPresenter.php b/app/Presenters/CategoryPresenter.php index fa93d525e8..0d7a7d46b6 100644 --- a/app/Presenters/CategoryPresenter.php +++ b/app/Presenters/CategoryPresenter.php @@ -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 diff --git a/resources/views/categories/index.blade.php b/resources/views/categories/index.blade.php index bcfc2eb3df..9302cf172f 100755 --- a/resources/views/categories/index.blade.php +++ b/resources/views/categories/index.blade.php @@ -28,17 +28,7 @@ data-cookie="true" data-click-to-select="true" data-cookie-id-table="categoriesTable-{{ config('version.hash_version') }}"> - - - {{ trans('general.id') }} - {{ trans('admin/categories/table.title') }} - {{ trans('general.type') }} - {{ trans('general.assets') }} - {{ trans('admin/categories/table.require_acceptance') }} - {{ trans('admin/categories/table.eula_text') }} - {{ trans('table.actions') }} - - + @@ -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 diff --git a/resources/views/categories/view.blade.php b/resources/views/categories/view.blade.php index f8582602d9..0ea9f7a6e1 100644 --- a/resources/views/categories/view.blade.php +++ b/resources/views/categories/view.blade.php @@ -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') - - {{ trans('admin/companies/table.title') }} - {{ trans('general.id') }} - {{ trans('general.name') }} - @if ($category->category_type=='asset') - {{ trans('admin/hardware/form.model') }} - {{ trans('general.asset_tag') }} - {{ trans('admin/hardware/form.serial') }} - {{ trans('general.user') }} - {{ trans('admin/hardware/table.change') }} - @endif - {{ trans('table.actions') }} + + {{ trans('admin/companies/table.title') }} + + {{ trans('general.name') }} + {{ trans('table.actions') }} + @endif @@ -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