From b1fafa7ca492117bc69dff7a4bdb11a5e9da4891 Mon Sep 17 00:00:00 2001 From: Cordeos Team Date: Tue, 12 Aug 2014 13:41:17 +0900 Subject: [PATCH] Added asset, license, user and model cloning --- app/controllers/admin/ModelsController.php | 24 +++++++++ app/controllers/admin/UsersController.php | 57 ++++++++++++++++++++++ app/lang/en/admin/models/table.php | 2 + app/lang/en/admin/users/general.php | 8 +++ app/lang/en/admin/users/table.php | 1 + app/routes.php | 4 ++ app/views/backend/licenses/view.blade.php | 7 --- app/views/backend/models/edit.blade.php | 28 ++++++++++- app/views/backend/models/view.blade.php | 0 app/views/backend/users/edit.blade.php | 10 ++-- app/views/backend/users/view.blade.php | 20 ++++++-- 11 files changed, 146 insertions(+), 15 deletions(-) mode change 100755 => 100644 app/controllers/admin/ModelsController.php mode change 100755 => 100644 app/controllers/admin/UsersController.php mode change 100755 => 100644 app/lang/en/admin/models/table.php create mode 100644 app/lang/en/admin/users/general.php mode change 100755 => 100644 app/lang/en/admin/users/table.php mode change 100755 => 100644 app/views/backend/models/edit.blade.php mode change 100755 => 100644 app/views/backend/models/view.blade.php mode change 100755 => 100644 app/views/backend/users/edit.blade.php mode change 100755 => 100644 app/views/backend/users/view.blade.php diff --git a/app/controllers/admin/ModelsController.php b/app/controllers/admin/ModelsController.php old mode 100755 new mode 100644 index ee747927b8..3c75278f7a --- a/app/controllers/admin/ModelsController.php +++ b/app/controllers/admin/ModelsController.php @@ -234,6 +234,30 @@ class ModelsController extends AdminController } + } + + public function getClone($modelId = null) + { + // Check if the model exists + if (is_null($model_to_clone = Model::find($modelId))) { + // Redirect to the model management page + return Redirect::to('assets/models')->with('error', Lang::get('admin/models/message.does_not_exist')); + } + + $model = clone $model_to_clone; + $model->id = null; + + // Show the page + $depreciation_list = array('' => 'Do Not Depreciate') + Depreciation::lists('name', 'id'); + $manufacturer_list = array('' => 'Select One') + Manufacturer::lists('name', 'id'); + $category_list = array('' => '') + DB::table('categories')->whereNull('deleted_at')->lists('name', 'id'); + $view = View::make('backend/models/edit'); + $view->with('category_list',$category_list); + $view->with('depreciation_list',$depreciation_list); + $view->with('manufacturer_list',$manufacturer_list); + $view->with('model',$model); + return $view; + } diff --git a/app/controllers/admin/UsersController.php b/app/controllers/admin/UsersController.php old mode 100755 new mode 100644 index 9355479dad..6de490e509 --- a/app/controllers/admin/UsersController.php +++ b/app/controllers/admin/UsersController.php @@ -544,5 +544,62 @@ class UsersController extends AdminController return Redirect::route('users')->with('error', $error); } } + + public function getClone($id = null) + { + // We need to reverse the UI specific logic for our + // permissions here before we update the user. + $permissions = Input::get('permissions', array()); + $this->decodePermissions($permissions); + app('request')->request->set('permissions', $permissions); + + + try { + // Get the user information + $user_to_clone = Sentry::getUserProvider()->findById($id); + $user = clone $user_to_clone; + $user->first_name = ''; + $user->last_name = ''; + $user->email = substr($user->email, ($pos = strpos($user->email, '@')) !== false ? $pos : 0);; + $user->id = null; + + // Get this user groups + $userGroups = $user_to_clone->groups()->lists('group_id', 'name'); + + // Get this user permissions + $userPermissions = array_merge(Input::old('permissions', array('superuser' => -1)), $user_to_clone->getPermissions()); + $this->encodePermissions($userPermissions); + + // Get a list of all the available groups + $groups = Sentry::getGroupProvider()->findAll(); + + // Get all the available permissions + $permissions = Config::get('permissions'); + $this->encodeAllPermissions($permissions); + + $location_list = array('' => '') + Location::lists('name', 'id'); + $manager_list = array('' => 'Select a User') + DB::table('users') + ->select(DB::raw('concat(first_name," ",last_name) as full_name, id')) + ->whereNull('deleted_at') + ->where('id','!=',$id) + ->orderBy('last_name', 'asc') + ->orderBy('first_name', 'asc') + ->lists('full_name', 'id'); + + // Show the page + return View::make('backend/users/edit', compact('groups', 'userGroups', 'permissions', 'userPermissions')) + ->with('location_list',$location_list) + ->with('manager_list',$manager_list) + ->with('user',$user) + ->with('clone_user',$user_to_clone); + + } catch (UserNotFoundException $e) { + // Prepare the error message + $error = Lang::get('admin/users/message.user_not_found', compact('id')); + + // Redirect to the user management page + return Redirect::route('users')->with('error', $error); + } + } } diff --git a/app/lang/en/admin/models/table.php b/app/lang/en/admin/models/table.php old mode 100755 new mode 100644 index d73a509733..6c364796f4 --- a/app/lang/en/admin/models/table.php +++ b/app/lang/en/admin/models/table.php @@ -12,4 +12,6 @@ return array( 'update' => 'Update Asset Model', 'view' => 'View Asset Model', 'update' => 'Update Model', + 'clone' => 'Clone Model', + 'edit' => 'Edit Model', ); diff --git a/app/lang/en/admin/users/general.php b/app/lang/en/admin/users/general.php new file mode 100644 index 0000000000..042510543e --- /dev/null +++ b/app/lang/en/admin/users/general.php @@ -0,0 +1,8 @@ + 'Edit User', + 'clone' => 'Clone User', + ); diff --git a/app/lang/en/admin/users/table.php b/app/lang/en/admin/users/table.php old mode 100755 new mode 100644 index f72c3c0b05..e7bec8245a --- a/app/lang/en/admin/users/table.php +++ b/app/lang/en/admin/users/table.php @@ -25,5 +25,6 @@ return array( 'phone' => 'Phone', 'title' => 'Title', 'updateuser' => 'Update User', + 'cloneuser' => 'Clone User', 'viewusers' => 'View Users', ); diff --git a/app/routes.php b/app/routes.php index 65e1fe0104..4f7b8a7155 100644 --- a/app/routes.php +++ b/app/routes.php @@ -35,6 +35,8 @@ Route::group(array('prefix' => 'hardware'), function () { Route::post('create', 'Controllers\Admin\ModelsController@postCreate'); Route::get('{modelId}/edit', array('as' => 'update/model', 'uses' => 'Controllers\Admin\ModelsController@getEdit')); Route::post('{modelId}/edit', 'Controllers\Admin\ModelsController@postEdit'); + Route::get('{modelId}/clone', array('as' => 'clone/model', 'uses' => 'Controllers\Admin\ModelsController@getClone')); + Route::post('{modelId}/clone', 'Controllers\Admin\ModelsController@postCreate'); Route::get('{modelId}/delete', array('as' => 'delete/model', 'uses' => 'Controllers\Admin\ModelsController@getDelete')); Route::get('{modelId}/view', array('as' => 'view/model', 'uses' => 'Controllers\Admin\ModelsController@getView')); }); @@ -156,6 +158,8 @@ Route::group(array('prefix' => 'admin'), function () { Route::post('create', 'Controllers\Admin\UsersController@postCreate'); Route::get('{userId}/edit', array('as' => 'update/user', 'uses' => 'Controllers\Admin\UsersController@getEdit')); Route::post('{userId}/edit', 'Controllers\Admin\UsersController@postEdit'); + Route::get('{userId}/clone', array('as' => 'clone/user', 'uses' => 'Controllers\Admin\UsersController@getClone')); + Route::post('{userId}/clone', 'Controllers\Admin\UsersController@postCreate'); Route::get('{userId}/delete', array('as' => 'delete/user', 'uses' => 'Controllers\Admin\UsersController@getDelete')); Route::get('{userId}/restore', array('as' => 'restore/user', 'uses' => 'Controllers\Admin\UsersController@getRestore')); Route::get('{userId}/view', array('as' => 'view/user', 'uses' => 'Controllers\Admin\UsersController@getView')); diff --git a/app/views/backend/licenses/view.blade.php b/app/views/backend/licenses/view.blade.php index 400a14225b..2950309c83 100644 --- a/app/views/backend/licenses/view.blade.php +++ b/app/views/backend/licenses/view.blade.php @@ -9,13 +9,6 @@ {{-- Page content --}} @section('content') - -
diff --git a/app/views/backend/models/edit.blade.php b/app/views/backend/models/edit.blade.php old mode 100755 new mode 100644 index 2a28766f07..d32007408b --- a/app/views/backend/models/edit.blade.php +++ b/app/views/backend/models/edit.blade.php @@ -12,7 +12,7 @@ {{-- Page content --}} @section('content') -
+ + +
+
+
+ + + +
+

+ @if ($model->id) + @lang('admin/models/table.update') + @else + @lang('admin/models/table.create') + @endif +

+
diff --git a/app/views/backend/models/view.blade.php b/app/views/backend/models/view.blade.php old mode 100755 new mode 100644 diff --git a/app/views/backend/users/edit.blade.php b/app/views/backend/users/edit.blade.php old mode 100755 new mode 100644 index e1f67a2935..ec6fe62489 --- a/app/views/backend/users/edit.blade.php +++ b/app/views/backend/users/edit.blade.php @@ -21,10 +21,12 @@

@if ($user->id) - @lang('admin/users/table.updateuser') - {{ $user->fullName() }} - @else - @lang('admin/users/table.createuser') + @lang('admin/users/table.updateuser') + {{ $user->fullName() }} + @elseif(isset($clone_user)) + @lang('admin/users/table.cloneuser') + @else + @lang('admin/users/table.createuser') @endif

diff --git a/app/views/backend/users/view.blade.php b/app/views/backend/users/view.blade.php old mode 100755 new mode 100644 index fe124840fa..cc44fa770c --- a/app/views/backend/users/view.blade.php +++ b/app/views/backend/users/view.blade.php @@ -5,7 +5,7 @@ View User {{{ $user->fullName() }}} :: @parent @stop -xxx + {{-- Page content --}} @section('content') @@ -26,8 +26,22 @@ xxx Restore This User @else - @lang('button.edit') This User - + +
+ +
+ + + + +
+ +
@endif
All the users!