New getDataTable method for Bootstrap tables

This commit is contained in:
snipe
2015-10-20 19:51:28 -07:00
parent b56aba3cc2
commit f4d882606a
+66 -72
View File
@@ -824,94 +824,88 @@ class UsersController extends AdminController {
return Redirect::route('users')->with('duplicates', $duplicates)->with('success', 'Success');
}
public function getDatatable($status = null) {
public function getDatatable($status = null)
{
if (Input::has('offset')) {
$offset = e(Input::get('offset'));
} else {
$offset = 0;
}
if (Input::has('limit')) {
$limit = e(Input::get('limit'));
} else {
$limit = 50;
}
$users = User::with('assets', 'accessories', 'consumables', 'licenses', 'manager', 'sentryThrottle', 'groups', 'userloc');
switch ($status) {
case 'deleted':
$users->GetDeleted();
break;
case '':
$users->GetNotDeleted();
break;
}
$users = $users->orderBy('created_at', 'DESC')->get();
if (Input::has('search')) {
$users = $users->TextSearch(Input::get('search'));
}
$actions = new \Chumper\Datatable\Columns\FunctionColumn('actions', function ($users) {
$action_buttons = '';
$allowed_columns = ['last_name','first_name','email','username','manager','location','assets','accessories', 'consumables','licenses','groups'];
$order = Input::get('order') === 'asc' ? 'asc' : 'desc';
$sort = in_array(Input::get('sort'), $allowed_columns) ? Input::get('sort') : 'last_name';
if (!is_null($users->deleted_at)) {
$action_buttons .= '<a href="' . route('restore/user', $users->id) . '" class="btn btn-warning btn-sm"><i class="fa fa-share icon-white"></i></a> ';
$userCount = $users->count();
$users = $users->skip($offset)->take($limit)->get();
$rows = array();
foreach ($users as $user)
{
$group_names = '';
$inout = '';
$actions = '';
foreach ($user->groups as $group) {
$group_names .= '<a href="' . Config::get('app.url') . '/admin/groups/' . $group->id . '/edit" class="label label-default">' . $group->name . '</a> ';
}
if (!is_null($user->deleted_at)) {
$actions .= '<a href="' . route('restore/user', $user->id) . '" class="btn btn-warning btn-sm"><i class="fa fa-share icon-white"></i></a> ';
} else {
if ($users->accountStatus() == 'suspended') {
$action_buttons .= '<a href="' . route('unsuspend/user', $users->id) . '" class="btn btn-default btn-sm"><span class="fa fa-clock-o"></span></a> ';
if ($user->accountStatus() == 'suspended') {
$actions .= '<a href="' . route('unsuspend/user', $user->id) . '" class="btn btn-default btn-sm"><span class="fa fa-clock-o"></span></a> ';
}
$action_buttons .= '<a href="' . route('update/user', $users->id) . '" class="btn btn-warning btn-sm"><i class="fa fa-pencil icon-white"></i></a> ';
$actions .= '<a href="' . route('update/user', $user->id) . '" class="btn btn-warning btn-sm"><i class="fa fa-pencil icon-white"></i></a> ';
if ((Sentry::getId() !== $users->id) && (!Config::get('app.lock_passwords'))) {
$action_buttons .= '<a data-html="false" class="btn delete-asset btn-danger btn-sm" data-toggle="modal" href="' . route('delete/user', $users->id) . '" data-content="Are you sure you wish to delete this user?" data-title="Delete ' . htmlspecialchars($users->first_name) . '?" onClick="return false;"><i class="fa fa-trash icon-white"></i></a> ';
if ((Sentry::getId() !== $user->id) && (!Config::get('app.lock_passwords'))) {
$actions .= '<a data-html="false" class="btn delete-asset btn-danger btn-sm" data-toggle="modal" href="' . route('delete/user', $user->id) . '" data-content="Are you sure you wish to delete this user?" data-title="Delete ' . htmlspecialchars($user->first_name) . '?" onClick="return false;"><i class="fa fa-trash icon-white"></i></a> ';
} else {
$action_buttons .= ' <span class="btn delete-asset btn-danger btn-sm disabled"><i class="fa fa-trash icon-white"></i></span>';
$actions .= ' <span class="btn delete-asset btn-danger btn-sm disabled"><i class="fa fa-trash icon-white"></i></span>';
}
}
return $action_buttons;
});
$rows[] = array(
'checkbox' =>'<div class="text-center"><input type="checkbox" name="edit_user['.$user->id.']" class="one_required"></div>',
'name' => '<a title="'.$user->fullName().'" href="hardware/'.$user->id.'/view">'.$user->fullName().'</a>',
'email' => ($user->email!='') ? '<a href="mailto:'.$user->email.'"><i class="fa fa-envelope"></i></a>' : '',
'username' => $user->username,
'location' => ($user->location_id!='') ? $user->userloc->name : '',
'manager' => ($user->manager_id!='') ? '<a title="' . $user->manager->fullName() . '" href="users/' . $user->manager->id . '/view">' . $user->manager->fullName() . '</a>' : '',
'assets' => $user->assets->count(),
'licenses' => $user->licenses->count(),
'accessories' => $user->accessories->count(),
'consumables' => $user->consumables->count(),
'groups' => $group_names,
'notes' => $user->notes,
'actions' => ($actions) ? $actions : ''
);
}
return Datatable::collection($users)
->addColumn('', function($users) {
return '<div class="text-center"><input type="checkbox" name="edit_user[]" value="' . $users->id . '" class="one_required"></div>';
})
->addColumn('name', function($users) {
return '<a title="' . $users->fullName() . '" href="users/' . $users->id . '/view">' . $users->fullName() . '</a>';
})
->addColumn('email', function($users) {
if ($users->email) {
return '<div class="text-center"><a title="' . $users->email . '" href="mailto:' . $users->email . '"><i class="fa fa-envelope fa-lg"></i></div>';
} else {
return '';
}
})
->addColumn('username', function($users) {
return $users->username;
})
->addColumn('manager', function($users) {
if ($users->manager) {
return '<a title="' . $users->manager->fullName() . '" href="users/' . $users->manager->id . '/view">' . $users->manager->fullName() . '</a>';
}
})
->addColumn('location', function($users) {
if ($users->userloc) {
return $users->userloc->name;
}
})
->addColumn('assets', function($users) {
return $users->assets->count();
})
->addColumn('licenses', function($users) {
return $users->licenses->count();
})
->addColumn('accessories', function($users) {
return $users->accessories->count();
})
->addColumn('consumables', function($users) {
return $users->consumables->count();
})
->addColumn('groups', function($users) {
$group_names = '';
foreach ($users->groups as $group) {
$group_names .= '<a href="' . Config::get('app.url') . '/admin/groups/' . $group->id . '/edit" class="label label-default">' . $group->name . '</a> ';
}
return $group_names;
})
->addColumn($actions)
->searchColumns('name', 'email', 'username', 'manager', 'activated', 'groups', 'location')
->orderColumns('name', 'email', 'username', 'manager', 'activated', 'licenses', 'assets', 'accessories', 'consumables', 'groups', 'location')
->make();
$data = array('total'=>$userCount, 'rows'=>$rows);
return $data;
}
/**