From ec5836dab47a9e425eed3ad85e5c9a7d477c8bb7 Mon Sep 17 00:00:00 2001 From: akemidx Date: Tue, 7 Mar 2023 16:41:48 -0500 Subject: [PATCH 1/4] cloning accessories first bit --- .../Accessories/AccessoriesController.php | 30 +++++++++++++++++++ .../Transformers/AccessoriesTransformer.php | 3 +- resources/views/accessories/view.blade.php | 5 ++++ routes/web/accessories.php | 8 +++++ 4 files changed, 45 insertions(+), 1 deletion(-) diff --git a/app/Http/Controllers/Accessories/AccessoriesController.php b/app/Http/Controllers/Accessories/AccessoriesController.php index f0b54a9498..feffaa2889 100755 --- a/app/Http/Controllers/Accessories/AccessoriesController.php +++ b/app/Http/Controllers/Accessories/AccessoriesController.php @@ -115,6 +115,36 @@ class AccessoriesController extends Controller } + /** + * Returns a view that presents a form to clone an accessory. + * + * @author [J. Vinsmoke] + * @param int $accessoryId + * @since [v6.0] + * @return View + */ + public function getClone($accessoryId = null) + { + + $this->authorize('create', Accesory::class); + + // Check if the asset exists + if (is_null($accessory_to_clone = Accessory::find($accessoryId))) { + // Redirect to the asset management page + return redirect()->route('accessory.index')->with('error', trans('admin/accessories/message.does_not_exist')); + } + + $accessory = clone $accessory_to_clone; + $accessory->id = null; + $accessory->location_id = null; + + //duplicate the image for the cloned accessory + copy('uploads/accessories/usb-keyboard.jpg','uploads/accessories/testimage.jpg'); + + return view('accessories/edit') + ->with('item', $accessory); + + } /** * Save edited Accessory from form post diff --git a/app/Http/Transformers/AccessoriesTransformer.php b/app/Http/Transformers/AccessoriesTransformer.php index 00c30f9ea2..fffc434cbb 100644 --- a/app/Http/Transformers/AccessoriesTransformer.php +++ b/app/Http/Transformers/AccessoriesTransformer.php @@ -4,7 +4,7 @@ namespace App\Http\Transformers; use App\Helpers\Helper; use App\Models\Accessory; -use Gate; +use Illuminate\Support\Facades\Gate; use Illuminate\Database\Eloquent\Collection; use Illuminate\Support\Facades\Storage; @@ -51,6 +51,7 @@ class AccessoriesTransformer 'checkin' => false, 'update' => Gate::allows('update', Accessory::class), 'delete' => Gate::allows('delete', Accessory::class), + 'clone' => (Gate::allows('create', Accessory::class) && ($accessory->created_at == 'datetime')), ]; $permissions_array['user_can_checkout'] = false; diff --git a/resources/views/accessories/view.blade.php b/resources/views/accessories/view.blade.php index fd31722204..e121bbc164 100644 --- a/resources/views/accessories/view.blade.php +++ b/resources/views/accessories/view.blade.php @@ -39,6 +39,11 @@ {{ trans('admin/accessories/general.edit') }} @endcan + @can('update', \App\Models\Accessory::class) +
  • + Clone +
  • + @endcan @endcan diff --git a/routes/web/accessories.php b/routes/web/accessories.php index 3166b36cd9..35ec73e7df 100644 --- a/routes/web/accessories.php +++ b/routes/web/accessories.php @@ -42,6 +42,14 @@ Route::group(['prefix' => 'accessories', 'middleware' => ['auth']], function () [Accessories\AccessoriesFilesController::class, 'show'] )->name('show.accessoryfile'); + Route::get('{accessoryId}/clone', + [Accessories\AccessoriesController::class, 'getClone'] + )->name('clone/accessories'); + + Route::post('{accessoryId}/clone', + [Accessories\AccessoriesController::class, 'postCreate'] + ); + }); Route::resource('accessories', Accessories\AccessoriesController::class, [ From a3353b8496fe400e54dd3414445ddd7f1b9328a8 Mon Sep 17 00:00:00 2001 From: akemidx Date: Wed, 15 Mar 2023 13:48:22 -0400 Subject: [PATCH 2/4] committing --- app/Http/Controllers/Accessories/AccessoriesController.php | 7 ++++--- app/Http/Transformers/AccessoriesTransformer.php | 1 + 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/app/Http/Controllers/Accessories/AccessoriesController.php b/app/Http/Controllers/Accessories/AccessoriesController.php index feffaa2889..9b5ce37cbf 100755 --- a/app/Http/Controllers/Accessories/AccessoriesController.php +++ b/app/Http/Controllers/Accessories/AccessoriesController.php @@ -138,12 +138,13 @@ class AccessoriesController extends Controller $accessory->id = null; $accessory->location_id = null; - //duplicate the image for the cloned accessory - copy('uploads/accessories/usb-keyboard.jpg','uploads/accessories/testimage.jpg'); - return view('accessories/edit') ->with('item', $accessory); + copy('uploads/accessories/usb-keyboard.jpg','uploads/accessories/testimage.jpg'); + + + } /** diff --git a/app/Http/Transformers/AccessoriesTransformer.php b/app/Http/Transformers/AccessoriesTransformer.php index fffc434cbb..a36e401585 100644 --- a/app/Http/Transformers/AccessoriesTransformer.php +++ b/app/Http/Transformers/AccessoriesTransformer.php @@ -52,6 +52,7 @@ class AccessoriesTransformer 'update' => Gate::allows('update', Accessory::class), 'delete' => Gate::allows('delete', Accessory::class), 'clone' => (Gate::allows('create', Accessory::class) && ($accessory->created_at == 'datetime')), + ]; $permissions_array['user_can_checkout'] = false; From a8e2f72e25d7825222549cb56efc9b3ef5302d52 Mon Sep 17 00:00:00 2001 From: akemidx Date: Wed, 15 Mar 2023 16:55:24 -0400 Subject: [PATCH 3/4] accessory cloning, WITHOUT copying over the image. --- app/Http/Controllers/Accessories/AccessoriesController.php | 4 ---- resources/lang/en/admin/accessories/general.php | 1 + resources/views/accessories/view.blade.php | 2 +- 3 files changed, 2 insertions(+), 5 deletions(-) diff --git a/app/Http/Controllers/Accessories/AccessoriesController.php b/app/Http/Controllers/Accessories/AccessoriesController.php index 9b5ce37cbf..7d4e697b98 100755 --- a/app/Http/Controllers/Accessories/AccessoriesController.php +++ b/app/Http/Controllers/Accessories/AccessoriesController.php @@ -140,10 +140,6 @@ class AccessoriesController extends Controller return view('accessories/edit') ->with('item', $accessory); - - copy('uploads/accessories/usb-keyboard.jpg','uploads/accessories/testimage.jpg'); - - } diff --git a/resources/lang/en/admin/accessories/general.php b/resources/lang/en/admin/accessories/general.php index e9a2e69ff6..7ab3f823d7 100644 --- a/resources/lang/en/admin/accessories/general.php +++ b/resources/lang/en/admin/accessories/general.php @@ -16,5 +16,6 @@ return array( 'update' => 'Update Accessory', 'use_default_eula' => 'Use the primary default EULA instead.', 'use_default_eula_disabled' => 'Use the primary default EULA instead. No primary default EULA is set. Please add one in Settings.', + 'clone' => 'Clone', ); diff --git a/resources/views/accessories/view.blade.php b/resources/views/accessories/view.blade.php index e121bbc164..a34cf572c4 100644 --- a/resources/views/accessories/view.blade.php +++ b/resources/views/accessories/view.blade.php @@ -41,7 +41,7 @@ @endcan @can('update', \App\Models\Accessory::class)
  • - Clone + {{ trans('admin/accessories/general.clone') }}
  • @endcan From 3134279a95e0f43be427828de5cc74400bfa462e Mon Sep 17 00:00:00 2001 From: akemidx Date: Tue, 21 Mar 2023 15:48:53 -0400 Subject: [PATCH 4/4] small edits --- app/Http/Transformers/AccessoriesTransformer.php | 2 +- resources/lang/en/admin/accessories/general.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/Http/Transformers/AccessoriesTransformer.php b/app/Http/Transformers/AccessoriesTransformer.php index a36e401585..cdc94ebed9 100644 --- a/app/Http/Transformers/AccessoriesTransformer.php +++ b/app/Http/Transformers/AccessoriesTransformer.php @@ -51,7 +51,7 @@ class AccessoriesTransformer 'checkin' => false, 'update' => Gate::allows('update', Accessory::class), 'delete' => Gate::allows('delete', Accessory::class), - 'clone' => (Gate::allows('create', Accessory::class) && ($accessory->created_at == 'datetime')), + 'clone' => Gate::allows('create', Accessory::class), ]; diff --git a/resources/lang/en/admin/accessories/general.php b/resources/lang/en/admin/accessories/general.php index 7ab3f823d7..84a3e83383 100644 --- a/resources/lang/en/admin/accessories/general.php +++ b/resources/lang/en/admin/accessories/general.php @@ -16,6 +16,6 @@ return array( 'update' => 'Update Accessory', 'use_default_eula' => 'Use the primary default EULA instead.', 'use_default_eula_disabled' => 'Use the primary default EULA instead. No primary default EULA is set. Please add one in Settings.', - 'clone' => 'Clone', + 'clone' => 'Clone Accessory', );