Fixes #1932 - disallow category delete if there are assets/accessories/etc

This commit is contained in:
snipe 2016-04-07 17:15:30 -07:00
parent d601db2090
commit 4b168e8cfa
2 changed files with 25 additions and 6 deletions

View file

@ -181,9 +181,16 @@ class CategoriesController extends Controller
if ($category->has_models() > 0) { if ($category->has_models() > 0) {
return Redirect::to('admin/settings/categories')->with('error', trans('admin/categories/message.assoc_models'));
// Redirect to the asset management page } elseif ($category->accessories()->count() > 0) {
return Redirect::to('admin/settings/categories')->with('error', trans('admin/categories/message.assoc_users')); return Redirect::to('admin/settings/categories')->with('error', trans('admin/categories/message.assoc_accessories'));
} elseif ($category->consumables()->count() > 0) {
return Redirect::to('admin/settings/categories')->with('error', trans('admin/categories/message.assoc_consumables'));
} elseif ($category->components()->count() > 0) {
return Redirect::to('admin/settings/categories')->with('error', trans('admin/categories/message.assoc_components'));
} else { } else {
$category->delete(); $category->delete();
@ -236,7 +243,7 @@ class CategoriesController extends Controller
public function getDatatable() public function getDatatable()
{ {
// Grab all the categories // Grab all the categories
$categories = Category::with('assets', 'accessories', 'consumables'); $categories = Category::with('assets', 'accessories', 'consumables','components');
if (Input::has('search')) { if (Input::has('search')) {
$categories = $categories->TextSearch(e(Input::get('search'))); $categories = $categories->TextSearch(e(Input::get('search')));
@ -267,12 +274,19 @@ class CategoriesController extends Controller
$rows = array(); $rows = array();
foreach ($categories as $category) { foreach ($categories as $category) {
$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="'.trans('admin/categories/message.delete.confirm').'" data-title="'.trans('general.delete').' '.htmlspecialchars($category->name).'?" onClick="return false;"><i class="fa fa-trash icon-white"></i></a>';
$actions = '<a href="'.route('update/category', $category->id).'" class="btn btn-warning btn-sm" style="margin-right:5px;">';
$actions .='<i class="fa fa-pencil icon-white"></i></a>';
$actions .='<a data-html="false" class="btn delete-asset btn-danger btn-sm';
if ($category->itemCount() > 0) {
$actions .=' disabled';
}
$actions .=' data-toggle="modal" href="'.route('delete/category', $category->id).'" data-content="'.trans('admin/categories/message.delete.confirm').'" data-title="'.trans('general.delete').' '.htmlspecialchars($category->name).'?" onClick="return false;"><i class="fa fa-trash icon-white"></i></a>';
$rows[] = array( $rows[] = array(
'id' => $category->id, 'id' => $category->id,
'name' => (string)link_to('/admin/settings/categories/'.$category->id.'/view', $category->name) , 'name' => (string)link_to('/admin/settings/categories/'.$category->id.'/view', $category->name) ,
'category_type' => ucwords($category->category_type), 'category_type' => ucwords($category->category_type),
'count' => $category->assets->count(), 'count' => $category->itemCount(),
'acceptance' => ($category->require_acceptance=='1') ? '<i class="fa fa-check"></i>' : '', 'acceptance' => ($category->require_acceptance=='1') ? '<i class="fa fa-check"></i>' : '',
//EULA is still not working correctly //EULA is still not working correctly
'eula' => ($category->getEula()) ? '<i class="fa fa-check"></i>' : '', 'eula' => ($category->getEula()) ? '<i class="fa fa-check"></i>' : '',
@ -340,7 +354,7 @@ class CategoriesController extends Controller
$inout=''; $inout='';
if ($asset->deleted_at=='') { if ($asset->deleted_at=='') {
$actions = '<div style=" white-space: nowrap;"><a href="'.route('clone/hardware', $asset->id).'" class="btn btn-info btn-sm" title="Clone asset"><i class="fa fa-files-o"></i></a> <a href="'.route('update/hardware', $asset->id).'" class="btn btn-warning btn-sm"><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/hardware', $asset->id).'" data-content="'.trans('admin/hardware/message.delete.confirm').'" data-title="'.trans('general.delete').' '.htmlspecialchars($asset->asset_tag).'?" onClick="return false;"><i class="fa fa-trash icon-white"></i></a></div>'; $actions = '<div style=" white-space: nowrap;"><a href="'.route('clone/hardware', $asset->id).'" class="btn btn-info btn-sm" title="Clone asset"><i class="fa fa-files-o"></i></a> <a href="'.route('update/'.$category->category_type, $asset->id).'" class="btn btn-warning btn-sm"><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/hardware', $asset->id).'" data-content="'.trans('admin/hardware/message.delete.confirm').'" data-title="'.trans('general.delete').' '.htmlspecialchars($asset->asset_tag).'?" onClick="return false;"><i class="fa fa-trash icon-white"></i></a></div>';
} elseif ($asset->deleted_at!='') { } elseif ($asset->deleted_at!='') {
$actions = '<a href="'.route('restore/hardware', $asset->id).'" class="btn btn-warning btn-sm"><i class="fa fa-recycle icon-white"></i></a>'; $actions = '<a href="'.route('restore/hardware', $asset->id).'" class="btn btn-warning btn-sm"><i class="fa fa-recycle icon-white"></i></a>';
} }

View file

@ -4,6 +4,11 @@ return array(
'does_not_exist' => 'Category does not exist.', 'does_not_exist' => 'Category does not exist.',
'assoc_users' => 'This category is currently associated with at least one model and cannot be deleted. Please update your models to no longer reference this category and try again. ', 'assoc_users' => 'This category is currently associated with at least one model and cannot be deleted. Please update your models to no longer reference this category and try again. ',
'assoc_accessories' => 'This category is currently associated with at least one accessory and cannot be deleted. Please update your accessories to no longer reference this category and try again. ',
'assoc_consumables' => 'This category is currently associated with at least one consumable and cannot be deleted. Please update your consumables to no longer reference this category and try again. ',
'assoc_component' => 'This category is currently associated with at least one component and cannot be deleted. Please update your components to no longer reference this category and try again. ',
'create' => array( 'create' => array(
'error' => 'Category was not created, please try again.', 'error' => 'Category was not created, please try again.',