diff --git a/app/Http/Controllers/CustomFieldsController.php b/app/Http/Controllers/CustomFieldsController.php index 43540ed421..4eb31450ee 100644 --- a/app/Http/Controllers/CustomFieldsController.php +++ b/app/Http/Controllers/CustomFieldsController.php @@ -86,14 +86,24 @@ class CustomFieldsController extends Controller { $this->authorize('create', CustomField::class); + $show_in_email = $request->get("show_in_email", 0); + $display_in_user_view = $request->get("display_in_user_view", 0); + + // Override the display settings if the field is encrypted + if ($request->get("field_encrypted") == '1') { + $show_in_email = '0'; + $display_in_user_view = '0'; + } + $field = new CustomField([ "name" => trim($request->get("name")), "element" => $request->get("element"), "help_text" => $request->get("help_text"), "field_values" => $request->get("field_values"), "field_encrypted" => $request->get("field_encrypted", 0), - "show_in_email" => $request->get("show_in_email", 0), + "show_in_email" => $show_in_email, "is_unique" => $request->get("is_unique", 0), + "display_in_user_view" => $display_in_user_view, "user_id" => Auth::id() ]); @@ -221,13 +231,24 @@ class CustomFieldsController extends Controller $this->authorize('update', $field); + + $show_in_email = $request->get("show_in_email", 0); + $display_in_user_view = $request->get("display_in_user_view", 0); + + // Override the display settings if the field is encrypted + if ($request->get("field_encrypted") == '1') { + $show_in_email = '0'; + $display_in_user_view = '0'; + } + $field->name = trim(e($request->get("name"))); $field->element = e($request->get("element")); $field->field_values = e($request->get("field_values")); $field->user_id = Auth::id(); $field->help_text = $request->get("help_text"); - $field->show_in_email = $request->get("show_in_email", 0); + $field->show_in_email = $show_in_email; $field->is_unique = $request->get("is_unique", 0); + $field->display_in_user_view = $display_in_user_view; if ($request->get('format') == 'CUSTOM REGEX') { $field->format = e($request->get('custom_format')); diff --git a/app/Http/Controllers/ViewAssetsController.php b/app/Http/Controllers/ViewAssetsController.php index 63267cbd05..55499ab22b 100755 --- a/app/Http/Controllers/ViewAssetsController.php +++ b/app/Http/Controllers/ViewAssetsController.php @@ -8,6 +8,7 @@ use App\Models\AssetModel; use App\Models\Company; use App\Models\Setting; use App\Models\User; +use App\Models\CustomField; use App\Notifications\RequestAssetCancelation; use App\Notifications\RequestAssetNotification; use Illuminate\Http\Request; @@ -29,23 +30,32 @@ class ViewAssetsController extends Controller public function getIndex() { $user = User::with( + 'assets', 'assets.model', + 'assets.model.fieldset.fields', 'consumables', 'accessories', 'licenses', - 'userloc', - 'userlog' - )->withTrashed()->find(Auth::user()->id); + )->find(Auth::user()->id); - $userlog = $user->userlog->load('item', 'user', 'target'); + // Loop through all the custom fields that are applied to any model the user has assigned + foreach ($user->assets as $asset) { + foreach ($asset->model->fieldset->fields as $field) { + // check and make sure they're allowed to see the value of the custom field + if ($field->display_in_user_view == '1') { + $field_array[$field->db_column] = $field->name; + } + } + } + + // Since some models may re-use the same fieldsets/fields, let's make the array unique so we don't repeat columns + array_unique($field_array); if (isset($user->id)) { - return view('account/view-assets', compact('user', 'userlog')) + return view('account/view-assets', compact('user', 'field_array' )) ->with('settings', Setting::getSettings()); - } else { - // Redirect to the user management page - return redirect()->route('users.index')->with('error', trans('admin/users/message.user_not_found', compact('id'))); } + // Redirect to the user management page return redirect()->route('users.index') ->with('error', trans('admin/users/message.user_not_found', $user->id)); diff --git a/app/Http/Transformers/CustomFieldsTransformer.php b/app/Http/Transformers/CustomFieldsTransformer.php index 472a000002..9ada5183ab 100644 --- a/app/Http/Transformers/CustomFieldsTransformer.php +++ b/app/Http/Transformers/CustomFieldsTransformer.php @@ -47,6 +47,7 @@ class CustomFieldsTransformer 'field_values_array' => ($field->field_values) ? explode("\r\n", e($field->field_values)) : null, 'type' => e($field->element), 'required' => (($field->pivot) && ($field->pivot->required=='1')) ? true : false, + 'display_in_user_view' => ($field->display_in_user_view =='1') ? true : false, 'created_at' => Helper::getFormattedDateObject($field->created_at, 'datetime'), 'updated_at' => Helper::getFormattedDateObject($field->updated_at, 'datetime'), ]; diff --git a/app/Models/CustomField.php b/app/Models/CustomField.php index 0f19ccb446..e94b3fcc2f 100644 --- a/app/Models/CustomField.php +++ b/app/Models/CustomField.php @@ -64,6 +64,7 @@ class CustomField extends Model 'help_text', 'show_in_email', 'is_unique', + 'display_in_user_view', ]; /** diff --git a/database/migrations/2022_11_07_134348_add_display_to_user_in_custom_fields.php b/database/migrations/2022_11_07_134348_add_display_to_user_in_custom_fields.php new file mode 100644 index 0000000000..a29b223df7 --- /dev/null +++ b/database/migrations/2022_11_07_134348_add_display_to_user_in_custom_fields.php @@ -0,0 +1,32 @@ +boolean('display_in_user_view')->nullable()->default(0); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('custom_fields', function (Blueprint $table) { + $table->dropColumn('display_in_user_view'); + }); + } +} diff --git a/resources/lang/en/admin/custom_fields/general.php b/resources/lang/en/admin/custom_fields/general.php index 7434117830..92bf240a76 100644 --- a/resources/lang/en/admin/custom_fields/general.php +++ b/resources/lang/en/admin/custom_fields/general.php @@ -44,4 +44,6 @@ return [ 'db_convert_warning' => 'WARNING. This field is in the custom fields table as :db_column but should be :expected.', 'is_unique' => 'This value must be unique across all assets', 'unique' => 'Unique', + 'display_in_user_view' => 'Allow the checked out user to view these values in their View Assigned Assets page', + 'display_in_user_view_table' => 'Visible to User', ]; diff --git a/resources/views/account/view-assets.blade.php b/resources/views/account/view-assets.blade.php index 6081091c23..c1a391e453 100755 --- a/resources/views/account/view-assets.blade.php +++ b/resources/views/account/view-assets.blade.php @@ -129,7 +129,7 @@
- @if(!empty($user->email)) + @if (!empty($user->email))
{{ csrf_field() }} @@ -397,13 +397,18 @@ }'> - # + # {{ trans('general.image') }} {{ trans('general.category') }} {{ trans('admin/hardware/table.asset_tag') }} {{ trans('general.name') }} {{ trans('admin/hardware/table.asset_model') }} {{ trans('admin/hardware/table.serial') }} + + @foreach ($field_array as $db_column => $field_name) + {{ $field_name }} + @endforeach + @@ -434,37 +439,15 @@ @endif {{ $asset->serial }} - - @if($settings->show_assigned_assets) - @php - $assignedCounter = 1 - @endphp - @foreach ($asset->assignedAssets as $asset) - - {{ $counter }}.{{ $assignedCounter }} - {{ $asset->model->category->name }} - {{ $asset->asset_tag }} - {{ $asset->name }} - - @if ($asset->physical=='1') - {{ $asset->model->name }} - @endif - - {{ $asset->serial }} - - @if (($asset->image) && ($asset->image!='')) - - @elseif (($asset->model) && ($asset->model->image!='')) - - @endif - - - @php - $assignedCounter++ - @endphp + @foreach ($field_array as $db_column => $field_value) + + {{ $asset->{$db_column} }} + @endforeach - @endif + + + @php $counter++ @endphp @@ -551,7 +534,7 @@ @foreach ($user->accessories as $accessory) - {!! $accessory->name !!} + {{ $accessory->name }} {!! Helper::formatCurrencyOutput($accessory->purchase_cost) !!} @@ -599,7 +582,7 @@ @foreach ($user->consumables as $consumable) - {!! $consumable->name !!} + {{ $consumable->name }} {!! Helper::formatCurrencyOutput($consumable->purchase_cost) !!} diff --git a/resources/views/custom_fields/fields/edit.blade.php b/resources/views/custom_fields/fields/edit.blade.php index ba2fd0c6e0..b9b9715a2e 100644 --- a/resources/views/custom_fields/fields/edit.blade.php +++ b/resources/views/custom_fields/fields/edit.blade.php @@ -116,6 +116,17 @@
+ +
+
+ +
+ +
+
@@ -206,11 +217,13 @@ $('#field_encrypted').on('ifChecked', function(event){ $("#encrypt_warning").show(); $("#show_in_email").hide(); + $("#display_in_user_view").hide(); }); $('#field_encrypted').on('ifUnchecked', function(event){ $("#encrypt_warning").hide(); $("#show_in_email").show(); + $("#display_in_user_view").show(); }); diff --git a/resources/views/custom_fields/index.blade.php b/resources/views/custom_fields/index.blade.php index 4638f615cb..08c43cdd7b 100644 --- a/resources/views/custom_fields/index.blade.php +++ b/resources/views/custom_fields/index.blade.php @@ -126,16 +126,17 @@ }'> - {{ trans('general.name') }} - {{ trans('admin/custom_fields/general.help_text')}} - {{ trans('general.email') }} - {{ trans('admin/custom_fields/general.unique') }} - {{ trans('admin/custom_fields/general.db_field') }} - {{ trans('admin/custom_fields/general.field_format') }} - + {{ trans('general.name') }} + {{ trans('admin/custom_fields/general.help_text')}} + {{ trans('admin/custom_fields/general.unique') }} + {{ trans('admin/custom_fields/general.db_field') }} + {{ trans('admin/custom_fields/general.field_format') }} + - {{ trans('admin/custom_fields/general.field_element_short') }} + + + {{ trans('admin/custom_fields/general.field_element_short') }} {{ trans('admin/custom_fields/general.fieldsets') }} {{ trans('button.actions') }} @@ -145,7 +146,7 @@ {{ $field->name }} {{ $field->help_text }} - {!! ($field->show_in_email=='1') ? '' : '' !!} + {!! ($field->is_unique=='1') ? '' : '' !!} {{ $field->convertUnicodeDbSlug() }} @@ -156,6 +157,8 @@ {{ $field->format }} {!! ($field->field_encrypted=='1' ? '' : '') !!} + {!! ($field->display_in_user_view=='1' ? '' : '') !!} + {!! ($field->show_in_email=='1') ? '' : '' !!} {{ $field->element }} @foreach($field->fieldset as $fieldset) diff --git a/resources/views/models/view.blade.php b/resources/views/models/view.blade.php index fe6ab3d0cf..3b9078d29c 100755 --- a/resources/views/models/view.blade.php +++ b/resources/views/models/view.blade.php @@ -145,17 +145,21 @@ - @if ( Helper::checkUploadIsImage($file->get_src('assetmodels'))) + @if ((Storage::exists('private_uploads/assetmodels/'.$file->filename)) && ( Helper::checkUploadIsImage($file->get_src('assetmodels')))) @endif - {{ $file->filename }} + @if (Storage::exists('private_uploads/assetmodels/'.$file->filename)) + {{ $file->filename }} + @else + {{ $file->filename }} + @endif - - {{ Helper::formatFilesizeUnits(Storage::size('private_uploads/assetmodels/'.$file->filename)) }} + + {{ (Storage::exists('private_uploads/assetmodels/'.$file->filename)) ? Helper::formatFilesizeUnits(Storage::size('private_uploads/assetmodels/'.$file->filename)) : '' }} @if ($file->note) @@ -163,7 +167,7 @@ @endif - @if ($file->filename) + @if (($file->filename) && (Storage::exists('private_uploads/assetmodels/'.$file->filename)))