diff --git a/app/Http/Controllers/Accessories/AccessoriesController.php b/app/Http/Controllers/Accessories/AccessoriesController.php
index f0b54a9498..7d4e697b98 100755
--- a/app/Http/Controllers/Accessories/AccessoriesController.php
+++ b/app/Http/Controllers/Accessories/AccessoriesController.php
@@ -115,6 +115,33 @@ 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;
+
+ return view('accessories/edit')
+ ->with('item', $accessory);
+
+ }
/**
* Save edited Accessory from form post
diff --git a/app/Http/Controllers/Assets/BulkAssetsController.php b/app/Http/Controllers/Assets/BulkAssetsController.php
index bcaa3900b6..7f9e812ab4 100644
--- a/app/Http/Controllers/Assets/BulkAssetsController.php
+++ b/app/Http/Controllers/Assets/BulkAssetsController.php
@@ -102,8 +102,11 @@ class BulkAssetsController extends Controller
|| ($request->filled('company_id'))
|| ($request->filled('status_id'))
|| ($request->filled('model_id'))
+ || ($request->filled('next_audit_date'))
|| ($request->filled('null_purchase_date'))
|| ($request->filled('null_expected_checkin_date'))
+ || ($request->filled('null_next_audit_date'))
+
) {
foreach ($assets as $assetId) {
@@ -116,7 +119,8 @@ class BulkAssetsController extends Controller
->conditionallyAddItem('requestable')
->conditionallyAddItem('status_id')
->conditionallyAddItem('supplier_id')
- ->conditionallyAddItem('warranty_months');
+ ->conditionallyAddItem('warranty_months')
+ ->conditionallyAddItem('next_audit_date');
if ($request->input('null_purchase_date')=='1') {
$this->update_array['purchase_date'] = null;
@@ -126,6 +130,10 @@ class BulkAssetsController extends Controller
$this->update_array['expected_checkin'] = null;
}
+ if ($request->input('null_next_audit_date')=='1') {
+ $this->update_array['next_audit_date'] = null;
+ }
+
if ($request->filled('purchase_cost')) {
$this->update_array['purchase_cost'] = Helper::ParseCurrency($request->input('purchase_cost'));
}
diff --git a/app/Http/Transformers/AccessoriesTransformer.php b/app/Http/Transformers/AccessoriesTransformer.php
index e812beb23e..cdc94ebed9 100644
--- a/app/Http/Transformers/AccessoriesTransformer.php
+++ b/app/Http/Transformers/AccessoriesTransformer.php
@@ -51,6 +51,8 @@ class AccessoriesTransformer
'checkin' => false,
'update' => Gate::allows('update', Accessory::class),
'delete' => Gate::allows('delete', Accessory::class),
+ 'clone' => Gate::allows('create', Accessory::class),
+
];
$permissions_array['user_can_checkout'] = false;
diff --git a/app/Http/Transformers/AssetMaintenancesTransformer.php b/app/Http/Transformers/AssetMaintenancesTransformer.php
index 6e7c2d5b2c..7766d7cd3a 100644
--- a/app/Http/Transformers/AssetMaintenancesTransformer.php
+++ b/app/Http/Transformers/AssetMaintenancesTransformer.php
@@ -45,6 +45,10 @@ class AssetMaintenancesTransformer
'name'=> e($assetmaintenance->asset->location->name),
] : null,
+ 'rtd_location' => ($assetmaintenance->asset->defaultLoc) ? [
+ 'id' => (int) $assetmaintenance->asset->defaultLoc->id,
+ 'name'=> e($assetmaintenance->asset->defaultLoc->name),
+ ] : null,
'notes' => ($assetmaintenance->notes) ? e($assetmaintenance->notes) : null,
'supplier' => ($assetmaintenance->supplier) ? ['id' => $assetmaintenance->supplier->id, 'name'=> e($assetmaintenance->supplier->name)] : null,
'cost' => Helper::formatCurrencyOutput($assetmaintenance->cost),
diff --git a/config/logging.php b/config/logging.php
index 65b717750d..7cb5d86039 100644
--- a/config/logging.php
+++ b/config/logging.php
@@ -112,27 +112,31 @@ $config = [
'handler' => \Rollbar\Laravel\MonologHandler::class,
'access_token' => env('ROLLBAR_TOKEN'),
'level' => env('ROLLBAR_LEVEL', 'error'),
- 'check_ignore' => function($isUncaught, $args, $payload) {
- if (App::environment('production') && is_object($args) && get_class($args) == Rollbar\ErrorWrapper::class && $args->errorLevel == E_WARNING ) {
- \Log::info("IGNORING E_WARNING in production mode: ".$args->getMessage());
- return true; // "TRUE - you should ignore it!"
- }
- $needle = "ArieTimmerman\\Laravel\\SCIMServer\\Exceptions\\SCIMException";
- if (App::environment('production') && is_string($args) && strncmp($args, $needle, strlen($needle) ) === 0 ) {
- \Log::info("String: '$args' looks like a SCIM Exception; ignoring error");
- return true; //yes, *do* ignore it
- }
- return false;
- },
],
],
];
-// Only add rollbar if the .env has a rollbar token
if ((env('APP_ENV')=='production') && (env('ROLLBAR_TOKEN'))) {
+ // Only add rollbar if the .env has a rollbar token
$config['channels']['stack']['channels'] = ['single', 'rollbar'];
+
+ // and only add the rollbar filter under the same conditions
+ // Note: it will *not* be cacheable
+ $config['channels']['rollbar']['check_ignore'] = function ($isUncaught, $args, $payload) {
+ if (App::environment('production') && is_object($args) && get_class($args) == Rollbar\ErrorWrapper::class && $args->errorLevel == E_WARNING ) {
+ \Log::info("IGNORING E_WARNING in production mode: ".$args->getMessage());
+ return true; // "TRUE - you should ignore it!"
+ }
+ $needle = "ArieTimmerman\\Laravel\\SCIMServer\\Exceptions\\SCIMException";
+ if (App::environment('production') && is_string($args) && strncmp($args, $needle, strlen($needle) ) === 0 ) {
+ \Log::info("String: '$args' looks like a SCIM Exception; ignoring error");
+ return true; //yes, *do* ignore it
+ }
+ return false;
+ };
+
}
diff --git a/resources/lang/en/admin/accessories/general.php b/resources/lang/en/admin/accessories/general.php
index e9a2e69ff6..84a3e83383 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 Accessory',
);
diff --git a/resources/views/accessories/view.blade.php b/resources/views/accessories/view.blade.php
index fd31722204..a34cf572c4 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)
+