From 41e0275c951798bb69836ee3f8350cae45542e39 Mon Sep 17 00:00:00 2001 From: spencerrlongg Date: Wed, 3 Jan 2024 12:42:36 -0600 Subject: [PATCH 001/129] `htmlentities()` --- resources/views/models/custom_fields_form.blade.php | 2 +- resources/views/models/custom_fields_form_bulk_edit.blade.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/views/models/custom_fields_form.blade.php b/resources/views/models/custom_fields_form.blade.php index bae98373e4..90985ce77f 100644 --- a/resources/views/models/custom_fields_form.blade.php +++ b/resources/views/models/custom_fields_form.blade.php @@ -9,7 +9,7 @@ @if ($field->element=='listbox') {{ Form::select($field->db_column_name(), $field->formatFieldValuesAsArray(), - Request::old($field->db_column_name(),(isset($item) ? Helper::gracefulDecrypt($field, htmlspecialchars($item->{$field->db_column_name()}, ENT_QUOTES)) : $field->defaultValue($model->id))), ['class'=>'format select2 form-control']) }} + Request::old($field->db_column_name(),(isset($item) ? Helper::gracefulDecrypt($field, htmlentities($item->{$field->db_column_name()})) : $field->defaultValue($model->id))), ['class'=>'format select2 form-control']) }} @elseif ($field->element=='textarea') diff --git a/resources/views/models/custom_fields_form_bulk_edit.blade.php b/resources/views/models/custom_fields_form_bulk_edit.blade.php index f30c60d331..f01815d5e3 100644 --- a/resources/views/models/custom_fields_form_bulk_edit.blade.php +++ b/resources/views/models/custom_fields_form_bulk_edit.blade.php @@ -25,7 +25,7 @@ @if ($field->element=='listbox') {{ Form::select($field->db_column_name(), $field->formatFieldValuesAsArray(), - Request::old($field->db_column_name(),(isset($item) ? Helper::gracefulDecrypt($field, htmlspecialchars($item->{$field->db_column_name()}, ENT_QUOTES)) : $field->defaultValue($model->id))), ['class'=>'format select2 form-control']) }} + Request::old($field->db_column_name(),(isset($item) ? Helper::gracefulDecrypt($field, htmlentities($item->{$field->db_column_name()})) : $field->defaultValue($model->id))), ['class'=>'format select2 form-control']) }} @elseif ($field->element=='textarea') @if($field->is_unique) From 2b0dd8851c254e1f5aabf00ac01a4f436e836c85 Mon Sep 17 00:00:00 2001 From: spencerrlongg Date: Fri, 26 Jan 2024 11:47:09 -0600 Subject: [PATCH 002/129] probably needs more testing... but should work --- app/Http/Controllers/CustomFieldsController.php | 2 +- resources/views/models/custom_fields_form.blade.php | 2 +- resources/views/models/custom_fields_form_bulk_edit.blade.php | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/Http/Controllers/CustomFieldsController.php b/app/Http/Controllers/CustomFieldsController.php index ffe5eceec2..b109c65f78 100644 --- a/app/Http/Controllers/CustomFieldsController.php +++ b/app/Http/Controllers/CustomFieldsController.php @@ -103,7 +103,7 @@ class CustomFieldsController extends Controller "name" => trim($request->get("name")), "element" => $request->get("element"), "help_text" => $request->get("help_text"), - "field_values" => $request->get("field_values"), + "field_values" => e($request->get("field_values")), "field_encrypted" => $request->get("field_encrypted", 0), "show_in_email" => $show_in_email, "is_unique" => $request->get("is_unique", 0), diff --git a/resources/views/models/custom_fields_form.blade.php b/resources/views/models/custom_fields_form.blade.php index 90985ce77f..bae98373e4 100644 --- a/resources/views/models/custom_fields_form.blade.php +++ b/resources/views/models/custom_fields_form.blade.php @@ -9,7 +9,7 @@ @if ($field->element=='listbox') {{ Form::select($field->db_column_name(), $field->formatFieldValuesAsArray(), - Request::old($field->db_column_name(),(isset($item) ? Helper::gracefulDecrypt($field, htmlentities($item->{$field->db_column_name()})) : $field->defaultValue($model->id))), ['class'=>'format select2 form-control']) }} + Request::old($field->db_column_name(),(isset($item) ? Helper::gracefulDecrypt($field, htmlspecialchars($item->{$field->db_column_name()}, ENT_QUOTES)) : $field->defaultValue($model->id))), ['class'=>'format select2 form-control']) }} @elseif ($field->element=='textarea') diff --git a/resources/views/models/custom_fields_form_bulk_edit.blade.php b/resources/views/models/custom_fields_form_bulk_edit.blade.php index f01815d5e3..f30c60d331 100644 --- a/resources/views/models/custom_fields_form_bulk_edit.blade.php +++ b/resources/views/models/custom_fields_form_bulk_edit.blade.php @@ -25,7 +25,7 @@ @if ($field->element=='listbox') {{ Form::select($field->db_column_name(), $field->formatFieldValuesAsArray(), - Request::old($field->db_column_name(),(isset($item) ? Helper::gracefulDecrypt($field, htmlentities($item->{$field->db_column_name()})) : $field->defaultValue($model->id))), ['class'=>'format select2 form-control']) }} + Request::old($field->db_column_name(),(isset($item) ? Helper::gracefulDecrypt($field, htmlspecialchars($item->{$field->db_column_name()}, ENT_QUOTES)) : $field->defaultValue($model->id))), ['class'=>'format select2 form-control']) }} @elseif ($field->element=='textarea') @if($field->is_unique) From 4cb804cf038bc900aeb2e081df489cde69a59cf6 Mon Sep 17 00:00:00 2001 From: spencerrlongg Date: Fri, 26 Jan 2024 11:56:02 -0600 Subject: [PATCH 003/129] get rid of `e()` on store and update --- app/Http/Controllers/CustomFieldsController.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/Http/Controllers/CustomFieldsController.php b/app/Http/Controllers/CustomFieldsController.php index b109c65f78..23ea9da34b 100644 --- a/app/Http/Controllers/CustomFieldsController.php +++ b/app/Http/Controllers/CustomFieldsController.php @@ -103,7 +103,7 @@ class CustomFieldsController extends Controller "name" => trim($request->get("name")), "element" => $request->get("element"), "help_text" => $request->get("help_text"), - "field_values" => e($request->get("field_values")), + "field_values" => $request->get("field_values"), "field_encrypted" => $request->get("field_encrypted", 0), "show_in_email" => $show_in_email, "is_unique" => $request->get("is_unique", 0), @@ -260,7 +260,7 @@ class CustomFieldsController extends Controller $field->name = trim(e($request->get("name"))); $field->element = e($request->get("element")); - $field->field_values = e($request->get("field_values")); + $field->field_values = $request->get("field_values"); $field->user_id = Auth::id(); $field->help_text = $request->get("help_text"); $field->show_in_email = $show_in_email; From 1248260df37b28ba1d62e1498c9d562a8ab6ba23 Mon Sep 17 00:00:00 2001 From: spencerrlongg Date: Fri, 26 Jan 2024 12:33:35 -0600 Subject: [PATCH 004/129] i don't think the output needs to separately escaped, the entire statement is already wrapped in `{{}}` --- resources/views/models/custom_fields_form.blade.php | 2 +- resources/views/models/custom_fields_form_bulk_edit.blade.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/views/models/custom_fields_form.blade.php b/resources/views/models/custom_fields_form.blade.php index bae98373e4..3c49ef8f7e 100644 --- a/resources/views/models/custom_fields_form.blade.php +++ b/resources/views/models/custom_fields_form.blade.php @@ -9,7 +9,7 @@ @if ($field->element=='listbox') {{ Form::select($field->db_column_name(), $field->formatFieldValuesAsArray(), - Request::old($field->db_column_name(),(isset($item) ? Helper::gracefulDecrypt($field, htmlspecialchars($item->{$field->db_column_name()}, ENT_QUOTES)) : $field->defaultValue($model->id))), ['class'=>'format select2 form-control']) }} + Request::old($field->db_column_name(),(isset($item) ? Helper::gracefulDecrypt($field, $item->{$field->db_column_name()}) : $field->defaultValue($model->id))), ['class'=>'format select2 form-control']) }} @elseif ($field->element=='textarea') diff --git a/resources/views/models/custom_fields_form_bulk_edit.blade.php b/resources/views/models/custom_fields_form_bulk_edit.blade.php index f30c60d331..dc0ad1f88a 100644 --- a/resources/views/models/custom_fields_form_bulk_edit.blade.php +++ b/resources/views/models/custom_fields_form_bulk_edit.blade.php @@ -25,7 +25,7 @@ @if ($field->element=='listbox') {{ Form::select($field->db_column_name(), $field->formatFieldValuesAsArray(), - Request::old($field->db_column_name(),(isset($item) ? Helper::gracefulDecrypt($field, htmlspecialchars($item->{$field->db_column_name()}, ENT_QUOTES)) : $field->defaultValue($model->id))), ['class'=>'format select2 form-control']) }} + Request::old($field->db_column_name(),(isset($item) ? Helper::gracefulDecrypt($field, $item->{$field->db_column_name()}) : $field->defaultValue($model->id))), ['class'=>'format select2 form-control']) }} @elseif ($field->element=='textarea') @if($field->is_unique) From 43d8474caa4f5ff39c61493a067ecd113f3b13dc Mon Sep 17 00:00:00 2001 From: spencerrlongg Date: Tue, 6 Feb 2024 17:45:46 -0600 Subject: [PATCH 005/129] a note to remember this tomorrow --- app/Http/Controllers/AssetModelsController.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/Http/Controllers/AssetModelsController.php b/app/Http/Controllers/AssetModelsController.php index 012f40e399..02d9404556 100755 --- a/app/Http/Controllers/AssetModelsController.php +++ b/app/Http/Controllers/AssetModelsController.php @@ -513,6 +513,8 @@ class AssetModelsController extends Controller $validator = Validator::make($data, $rules); + // Okay, this is the problem. Seems to be failing every time, kind of makes sense because it looks like + // $rules is an empty array, but I need to wrap my head around this entire method a little more. if($validator->fails()){ return false; } From bcfa913450e96f1248fd45fcaa61c8bc8b79f1e6 Mon Sep 17 00:00:00 2001 From: spencerrlongg Date: Wed, 7 Feb 2024 20:03:37 -0600 Subject: [PATCH 006/129] condition makes this work, needs more testing --- app/Http/Controllers/AssetModelsController.php | 4 ++-- app/Models/CustomFieldset.php | 7 +++++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/app/Http/Controllers/AssetModelsController.php b/app/Http/Controllers/AssetModelsController.php index 02d9404556..f1a8c85c20 100755 --- a/app/Http/Controllers/AssetModelsController.php +++ b/app/Http/Controllers/AssetModelsController.php @@ -11,6 +11,7 @@ use App\Models\User; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Input; +use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\View; use Illuminate\Support\Facades\Validator; use Redirect; @@ -513,9 +514,8 @@ class AssetModelsController extends Controller $validator = Validator::make($data, $rules); - // Okay, this is the problem. Seems to be failing every time, kind of makes sense because it looks like - // $rules is an empty array, but I need to wrap my head around this entire method a little more. if($validator->fails()){ + Log::debug($validator->errors()); return false; } diff --git a/app/Models/CustomFieldset.php b/app/Models/CustomFieldset.php index a62f96d631..0d0f3974ff 100644 --- a/app/Models/CustomFieldset.php +++ b/app/Models/CustomFieldset.php @@ -92,8 +92,11 @@ class CustomFieldset extends Model array_push($rule, $field->attributes['format']); $rules[$field->db_column_name()] = $rule; - //add not_array to rules for all fields - $rules[$field->db_column_name()][] = 'not_array'; + // add not_array to rules for all fields + // condition added to fix issue with model default updates + if ($field->element != 'checkbox') { + $rules[$field->db_column_name()][] = 'not_array'; + } } return $rules; From d55358652bc33acd49b153ce81c2379acc1432e3 Mon Sep 17 00:00:00 2001 From: spencerrlongg Date: Tue, 13 Feb 2024 13:45:56 -0600 Subject: [PATCH 007/129] cleanup for pr --- app/Http/Controllers/AssetModelsController.php | 2 -- app/Models/CustomFieldset.php | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/app/Http/Controllers/AssetModelsController.php b/app/Http/Controllers/AssetModelsController.php index f1a8c85c20..012f40e399 100755 --- a/app/Http/Controllers/AssetModelsController.php +++ b/app/Http/Controllers/AssetModelsController.php @@ -11,7 +11,6 @@ use App\Models\User; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Input; -use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\View; use Illuminate\Support\Facades\Validator; use Redirect; @@ -515,7 +514,6 @@ class AssetModelsController extends Controller $validator = Validator::make($data, $rules); if($validator->fails()){ - Log::debug($validator->errors()); return false; } diff --git a/app/Models/CustomFieldset.php b/app/Models/CustomFieldset.php index 0d0f3974ff..e9be7c53c9 100644 --- a/app/Models/CustomFieldset.php +++ b/app/Models/CustomFieldset.php @@ -93,7 +93,7 @@ class CustomFieldset extends Model array_push($rule, $field->attributes['format']); $rules[$field->db_column_name()] = $rule; // add not_array to rules for all fields - // condition added to fix issue with model default updates + // temporary condition added to fix issue with model default updates in the gui if ($field->element != 'checkbox') { $rules[$field->db_column_name()][] = 'not_array'; } From 4093327b7fd74cf7ab68c74418ffc2fde827b737 Mon Sep 17 00:00:00 2001 From: akemidx Date: Tue, 13 Feb 2024 16:52:12 -0500 Subject: [PATCH 008/129] adding in Last Checkin Date to Hardware view and index --- app/Http/Controllers/Api/AssetsController.php | 2 +- .../Controllers/Assets/AssetCheckinController.php | 2 +- app/Http/Transformers/AssetsTransformer.php | 1 + app/Presenters/AssetPresenter.php | 7 +++++++ resources/views/hardware/view.blade.php | 12 ++++++++++++ 5 files changed, 22 insertions(+), 2 deletions(-) diff --git a/app/Http/Controllers/Api/AssetsController.php b/app/Http/Controllers/Api/AssetsController.php index f5168a5914..3c1059374c 100644 --- a/app/Http/Controllers/Api/AssetsController.php +++ b/app/Http/Controllers/Api/AssetsController.php @@ -879,7 +879,7 @@ class AssetsController extends Controller } $asset->expected_checkin = null; - $asset->last_checkout = null; + //$asset->last_checkout = null; $asset->last_checkin = now(); $asset->assigned_to = null; $asset->assignedTo()->disassociate($asset); diff --git a/app/Http/Controllers/Assets/AssetCheckinController.php b/app/Http/Controllers/Assets/AssetCheckinController.php index 4fe10e895f..a8ed32deb1 100644 --- a/app/Http/Controllers/Assets/AssetCheckinController.php +++ b/app/Http/Controllers/Assets/AssetCheckinController.php @@ -67,7 +67,7 @@ class AssetCheckinController extends Controller } $asset->expected_checkin = null; - $asset->last_checkout = null; + //$asset->last_checkout = null; $asset->last_checkin = now(); $asset->assigned_to = null; $asset->assignedTo()->disassociate($asset); diff --git a/app/Http/Transformers/AssetsTransformer.php b/app/Http/Transformers/AssetsTransformer.php index f5d5ae12b5..eeb0b60451 100644 --- a/app/Http/Transformers/AssetsTransformer.php +++ b/app/Http/Transformers/AssetsTransformer.php @@ -87,6 +87,7 @@ class AssetsTransformer 'purchase_date' => Helper::getFormattedDateObject($asset->purchase_date, 'date'), 'age' => $asset->purchase_date ? $asset->purchase_date->diffForHumans() : '', 'last_checkout' => Helper::getFormattedDateObject($asset->last_checkout, 'datetime'), + 'last_checkin' => Helper::getFormattedDateObject($asset->last_checkin, 'datetime'), 'expected_checkin' => Helper::getFormattedDateObject($asset->expected_checkin, 'date'), 'purchase_cost' => Helper::formatCurrencyOutput($asset->purchase_cost), 'checkin_counter' => (int) $asset->checkin_counter, diff --git a/app/Presenters/AssetPresenter.php b/app/Presenters/AssetPresenter.php index de7c2c7709..c3b78ddb0f 100644 --- a/app/Presenters/AssetPresenter.php +++ b/app/Presenters/AssetPresenter.php @@ -244,6 +244,13 @@ class AssetPresenter extends Presenter 'visible' => false, 'title' => trans('admin/hardware/table.checkout_date'), 'formatter' => 'dateDisplayFormatter', + ], [ + 'field' => 'last_checkin', + 'searchable' => false, + 'sortable' => true, + 'visible' => false, + 'title' => trans('admin/hardware/table.last_checkin_date'), + 'formatter' => 'dateDisplayFormatter', ], [ 'field' => 'expected_checkin', 'searchable' => false, diff --git a/resources/views/hardware/view.blade.php b/resources/views/hardware/view.blade.php index d856427bd3..01e3abdf04 100755 --- a/resources/views/hardware/view.blade.php +++ b/resources/views/hardware/view.blade.php @@ -775,6 +775,18 @@ @endif + @if ($asset->last_checkin!='') +
+
+ + {{ trans('admin/hardware/table.last_checkin_date') }} + +
+
+ {{ Helper::getFormattedDateObject($asset->last_checkin, 'datetime', false) }} +
+
+ @endif From c5e8d1c276b653f638a8f3f106a80961293b6219 Mon Sep 17 00:00:00 2001 From: akemidx Date: Tue, 13 Feb 2024 17:09:51 -0500 Subject: [PATCH 009/129] custom report tinker --- app/Http/Controllers/ReportsController.php | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/app/Http/Controllers/ReportsController.php b/app/Http/Controllers/ReportsController.php index 162469bcd2..b881396582 100644 --- a/app/Http/Controllers/ReportsController.php +++ b/app/Http/Controllers/ReportsController.php @@ -694,12 +694,13 @@ class ReportsController extends Controller } if (($request->filled('checkin_date_start'))) { - $assets->whereBetween('last_checkin', [ - Carbon::parse($request->input('checkin_date_start'))->startOfDay(), + $checkin_start = \Carbon::parse($request->input('checkin_date_start'))->startOfDay(); // use today's date is `checkin_date_end` is not provided - Carbon::parse($request->input('checkin_date_end', now()))->endOfDay(), - ]); + $checkin_end = \Carbon::parse($request->input('checkin_date_end', now()))->endOfDay(); + + $assets->whereBetween('assets.last_checkin', [$checkin_start, $checkin_end ]); } + //last checkin is exporting, but currently is a date and not a datetime in the custom report ONLY. if (($request->filled('expected_checkin_start')) && ($request->filled('expected_checkin_end'))) { $assets->whereBetween('assets.expected_checkin', [$request->input('expected_checkin_start'), $request->input('expected_checkin_end')]); From dcf2168454245f1d84a4c8ee3f2c6e706ffc744f Mon Sep 17 00:00:00 2001 From: spencerrlongg Date: Tue, 13 Feb 2024 19:35:37 -0600 Subject: [PATCH 010/129] initial stuff, need to switch branches --- app/Models/CustomFieldset.php | 7 +++++++ app/Providers/ValidationServiceProvider.php | 21 +++++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/app/Models/CustomFieldset.php b/app/Models/CustomFieldset.php index e9be7c53c9..373c137bc4 100644 --- a/app/Models/CustomFieldset.php +++ b/app/Models/CustomFieldset.php @@ -5,6 +5,8 @@ namespace App\Models; use Gate; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; +use Illuminate\Support\Facades\Log; +use Illuminate\Validation\Rule; use Watson\Validating\ValidatingTrait; class CustomFieldset extends Model @@ -97,6 +99,11 @@ class CustomFieldset extends Model if ($field->element != 'checkbox') { $rules[$field->db_column_name()][] = 'not_array'; } + if ($field->element == 'checkbox') { + //Log::alert($field->formatFieldValuesAsArray()); + $values = $field->formatFieldValuesAsArray(); + //$rules[$field->db_column_name()] = 'checkboxes'; + } } return $rules; diff --git a/app/Providers/ValidationServiceProvider.php b/app/Providers/ValidationServiceProvider.php index 50468c8d72..754c2de9a0 100644 --- a/app/Providers/ValidationServiceProvider.php +++ b/app/Providers/ValidationServiceProvider.php @@ -2,9 +2,11 @@ namespace App\Providers; +use App\Models\CustomField; use App\Models\Department; use App\Models\Setting; use DB; +use Illuminate\Support\Facades\Log; use Illuminate\Support\ServiceProvider; use Illuminate\Validation\Rule; use Validator; @@ -294,6 +296,25 @@ class ValidationServiceProvider extends ServiceProvider Validator::extend('not_array', function ($attribute, $value, $parameters, $validator) { return !is_array($value); }); + + Validator::extend('checkboxes', function ($attribute, $value, $parameters, $validator){ + $options = CustomField::where('db_column', $attribute)->formatFieldValuesAsArray(); + if(!is_array($value)) { + $exploded = explode(',', $value); + $valid = array_intersect($exploded, $options); + if(array_count_values($valid) > 0) { + return true; + } + } + if(is_array($value)) { + $valid = array_intersect($value, $options); + if(array_count_values($valid) > 0) { + return true; + } + } + + + }); } /** From 57a75e68b91e765b6ac205b66db851a1cdb87085 Mon Sep 17 00:00:00 2001 From: spencerrlongg Date: Wed, 14 Feb 2024 00:52:50 -0600 Subject: [PATCH 011/129] maybe i do the inverse here? --- app/Models/CustomFieldset.php | 2 +- app/Providers/ValidationServiceProvider.php | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/app/Models/CustomFieldset.php b/app/Models/CustomFieldset.php index 373c137bc4..c73d277a10 100644 --- a/app/Models/CustomFieldset.php +++ b/app/Models/CustomFieldset.php @@ -102,7 +102,7 @@ class CustomFieldset extends Model if ($field->element == 'checkbox') { //Log::alert($field->formatFieldValuesAsArray()); $values = $field->formatFieldValuesAsArray(); - //$rules[$field->db_column_name()] = 'checkboxes'; + $rules[$field->db_column_name()] = 'checkboxes'; } } diff --git a/app/Providers/ValidationServiceProvider.php b/app/Providers/ValidationServiceProvider.php index 754c2de9a0..860564ec1f 100644 --- a/app/Providers/ValidationServiceProvider.php +++ b/app/Providers/ValidationServiceProvider.php @@ -298,15 +298,15 @@ class ValidationServiceProvider extends ServiceProvider }); Validator::extend('checkboxes', function ($attribute, $value, $parameters, $validator){ - $options = CustomField::where('db_column', $attribute)->formatFieldValuesAsArray(); + $options = CustomField::where('db_column', $attribute)->first()->formatFieldValuesAsArray(); + // for legacy, allows users to submit a comma separated string of options if(!is_array($value)) { $exploded = explode(',', $value); - $valid = array_intersect($exploded, $options); - if(array_count_values($valid) > 0) { - return true; + $invalid = array_diff($exploded, $options); + if(count($invalid) > 0) { + return false; } - } - if(is_array($value)) { + } else { $valid = array_intersect($value, $options); if(array_count_values($valid) > 0) { return true; From 25241542d2b74c27f03062895ff260e833d11695 Mon Sep 17 00:00:00 2001 From: spencerrlongg Date: Wed, 14 Feb 2024 02:12:31 -0600 Subject: [PATCH 012/129] progress, going to sleep --- .../Controllers/AssetModelsController.php | 6 ++++-- app/Models/CustomFieldset.php | 2 +- app/Providers/ValidationServiceProvider.php | 19 ++++++++++--------- 3 files changed, 15 insertions(+), 12 deletions(-) diff --git a/app/Http/Controllers/AssetModelsController.php b/app/Http/Controllers/AssetModelsController.php index 012f40e399..455fc82491 100755 --- a/app/Http/Controllers/AssetModelsController.php +++ b/app/Http/Controllers/AssetModelsController.php @@ -7,6 +7,7 @@ use App\Http\Requests\ImageUploadRequest; use App\Models\Actionlog; use App\Models\Asset; use App\Models\AssetModel; +use App\Models\CustomField; use App\Models\User; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\DB; @@ -169,6 +170,7 @@ class AssetModelsController extends Controller if ($this->shouldAddDefaultValues($request->input())) { if (!$this->assignCustomFieldsDefaultValues($model, $request->input('default_values'))){ + //TODO: this needs to return the actual validation errors, will come back to this before opening PR return redirect()->back()->withInput()->with('error', trans('admin/custom_fields/message.fieldset_default_value.error')); } } @@ -489,11 +491,11 @@ class AssetModelsController extends Controller * @param array $defaultValues * @return void */ - private function assignCustomFieldsDefaultValues(AssetModel $model, array $defaultValues) + private function assignCustomFieldsDefaultValues(AssetModel $model, array $defaultValues): bool { $data = array(); foreach ($defaultValues as $customFieldId => $defaultValue) { - $customField = \App\Models\CustomField::find($customFieldId); + $customField = CustomField::find($customFieldId); $data[$customField->db_column] = $defaultValue; } diff --git a/app/Models/CustomFieldset.php b/app/Models/CustomFieldset.php index c73d277a10..f5e9897dd3 100644 --- a/app/Models/CustomFieldset.php +++ b/app/Models/CustomFieldset.php @@ -102,7 +102,7 @@ class CustomFieldset extends Model if ($field->element == 'checkbox') { //Log::alert($field->formatFieldValuesAsArray()); $values = $field->formatFieldValuesAsArray(); - $rules[$field->db_column_name()] = 'checkboxes'; + $rules[$field->db_column_name()][] = 'checkboxes'; } } diff --git a/app/Providers/ValidationServiceProvider.php b/app/Providers/ValidationServiceProvider.php index 860564ec1f..0bd201a262 100644 --- a/app/Providers/ValidationServiceProvider.php +++ b/app/Providers/ValidationServiceProvider.php @@ -297,23 +297,24 @@ class ValidationServiceProvider extends ServiceProvider return !is_array($value); }); + // This is only used in Models/CustomFieldset.php - it does automatic validation for checkboxes by making sure + // that the submitted values actually exist in the options. Validator::extend('checkboxes', function ($attribute, $value, $parameters, $validator){ $options = CustomField::where('db_column', $attribute)->first()->formatFieldValuesAsArray(); + if(is_array($value)) { + $invalid = array_diff($value, $options); + if(count($invalid) > 0) { + return false; + } + } // for legacy, allows users to submit a comma separated string of options - if(!is_array($value)) { + elseif(!is_array($value)) { $exploded = explode(',', $value); $invalid = array_diff($exploded, $options); if(count($invalid) > 0) { return false; } - } else { - $valid = array_intersect($value, $options); - if(array_count_values($valid) > 0) { - return true; - } - } - - + } else return true; }); } From 72c118a70f2704fb4dc4c038ef16cdc159e996ec Mon Sep 17 00:00:00 2001 From: spencerrlongg Date: Wed, 14 Feb 2024 11:41:46 -0600 Subject: [PATCH 013/129] cleanup --- app/Models/CustomFieldset.php | 7 +++---- app/Providers/ValidationServiceProvider.php | 3 ++- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/app/Models/CustomFieldset.php b/app/Models/CustomFieldset.php index f5e9897dd3..4d960ede41 100644 --- a/app/Models/CustomFieldset.php +++ b/app/Models/CustomFieldset.php @@ -94,14 +94,13 @@ class CustomFieldset extends Model array_push($rule, $field->attributes['format']); $rules[$field->db_column_name()] = $rule; - // add not_array to rules for all fields - // temporary condition added to fix issue with model default updates in the gui + + // add not_array to rules for all fields but checkboxes if ($field->element != 'checkbox') { $rules[$field->db_column_name()][] = 'not_array'; } + if ($field->element == 'checkbox') { - //Log::alert($field->formatFieldValuesAsArray()); - $values = $field->formatFieldValuesAsArray(); $rules[$field->db_column_name()][] = 'checkboxes'; } } diff --git a/app/Providers/ValidationServiceProvider.php b/app/Providers/ValidationServiceProvider.php index 0bd201a262..835587571d 100644 --- a/app/Providers/ValidationServiceProvider.php +++ b/app/Providers/ValidationServiceProvider.php @@ -314,7 +314,8 @@ class ValidationServiceProvider extends ServiceProvider if(count($invalid) > 0) { return false; } - } else return true; + } + return true; }); } From d9c61fdb025e2751af0584ca2d275a8ead7be570 Mon Sep 17 00:00:00 2001 From: spencerrlongg Date: Wed, 14 Feb 2024 11:52:25 -0600 Subject: [PATCH 014/129] validation msg --- app/Http/Controllers/AssetModelsController.php | 3 +-- resources/lang/en-US/validation.php | 1 + 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/Http/Controllers/AssetModelsController.php b/app/Http/Controllers/AssetModelsController.php index 455fc82491..34f12b826b 100755 --- a/app/Http/Controllers/AssetModelsController.php +++ b/app/Http/Controllers/AssetModelsController.php @@ -169,8 +169,7 @@ class AssetModelsController extends Controller $model->fieldset_id = $request->input('fieldset_id'); if ($this->shouldAddDefaultValues($request->input())) { - if (!$this->assignCustomFieldsDefaultValues($model, $request->input('default_values'))){ - //TODO: this needs to return the actual validation errors, will come back to this before opening PR + if ($msg = !$this->assignCustomFieldsDefaultValues($model, $request->input('default_values'))){ return redirect()->back()->withInput()->with('error', trans('admin/custom_fields/message.fieldset_default_value.error')); } } diff --git a/resources/lang/en-US/validation.php b/resources/lang/en-US/validation.php index 1c6ad8a148..98084afcd4 100644 --- a/resources/lang/en-US/validation.php +++ b/resources/lang/en-US/validation.php @@ -105,6 +105,7 @@ return [ 'gte' => [ 'numeric' => 'Value cannot be negative' ], + 'checkboxes' => ':attribute contains invalid options.', /* From fb28882f65d5832b4b7d744af8790c93efaeb35e Mon Sep 17 00:00:00 2001 From: spencerrlongg Date: Wed, 14 Feb 2024 11:59:14 -0600 Subject: [PATCH 015/129] trim potential spaces --- app/Providers/ValidationServiceProvider.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Providers/ValidationServiceProvider.php b/app/Providers/ValidationServiceProvider.php index 835587571d..02a2bf3136 100644 --- a/app/Providers/ValidationServiceProvider.php +++ b/app/Providers/ValidationServiceProvider.php @@ -309,7 +309,7 @@ class ValidationServiceProvider extends ServiceProvider } // for legacy, allows users to submit a comma separated string of options elseif(!is_array($value)) { - $exploded = explode(',', $value); + $exploded = array_map('trim', explode(',', $value)); $invalid = array_diff($exploded, $options); if(count($invalid) > 0) { return false; From 1ceb703129974e05e4f77e82a3895bb6b1778070 Mon Sep 17 00:00:00 2001 From: spencerrlongg Date: Wed, 14 Feb 2024 12:44:09 -0600 Subject: [PATCH 016/129] rm var --- app/Http/Controllers/AssetModelsController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Http/Controllers/AssetModelsController.php b/app/Http/Controllers/AssetModelsController.php index 34f12b826b..aa4c9dd238 100755 --- a/app/Http/Controllers/AssetModelsController.php +++ b/app/Http/Controllers/AssetModelsController.php @@ -169,7 +169,7 @@ class AssetModelsController extends Controller $model->fieldset_id = $request->input('fieldset_id'); if ($this->shouldAddDefaultValues($request->input())) { - if ($msg = !$this->assignCustomFieldsDefaultValues($model, $request->input('default_values'))){ + if (!$this->assignCustomFieldsDefaultValues($model, $request->input('default_values'))){ return redirect()->back()->withInput()->with('error', trans('admin/custom_fields/message.fieldset_default_value.error')); } } From 115e0fc11927e0196bd37f2cc6f3a8168f06019f Mon Sep 17 00:00:00 2001 From: spencerrlongg Date: Wed, 14 Feb 2024 13:15:23 -0600 Subject: [PATCH 017/129] implode submitted arrays to save --- app/Http/Controllers/Api/AssetsController.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/app/Http/Controllers/Api/AssetsController.php b/app/Http/Controllers/Api/AssetsController.php index f5168a5914..6ef3b30503 100644 --- a/app/Http/Controllers/Api/AssetsController.php +++ b/app/Http/Controllers/Api/AssetsController.php @@ -584,6 +584,11 @@ class AssetsController extends Controller } } } + if ($field->element == 'checkbox') { + if(is_array($field_val)) { + $field_val = implode(',', $field_val); + } + } $asset->{$field->db_column} = $field_val; From c6d85a1b0bb15102a4f1c1e1d15e6633be342996 Mon Sep 17 00:00:00 2001 From: spencerrlongg Date: Tue, 20 Feb 2024 12:23:24 -0600 Subject: [PATCH 018/129] allows arrays on checkbox values --- app/Http/Controllers/Api/AssetsController.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/app/Http/Controllers/Api/AssetsController.php b/app/Http/Controllers/Api/AssetsController.php index 6ef3b30503..dbeb1b6c63 100644 --- a/app/Http/Controllers/Api/AssetsController.php +++ b/app/Http/Controllers/Api/AssetsController.php @@ -663,6 +663,11 @@ class AssetsController extends Controller $asset->{$field->db_column} = \Crypt::encrypt($request->input($field->db_column)); } } else { + if ($field->element == 'checkbox') { + if(is_array($field_val)) { + $field_val = implode(',', $field_val); + } + } $asset->{$field->db_column} = $request->input($field->db_column); } } From 26728a85addc318c86677b1095377f9e2506bf7f Mon Sep 17 00:00:00 2001 From: spencerrlongg Date: Tue, 20 Feb 2024 13:18:40 -0600 Subject: [PATCH 019/129] this seems to work for patches --- app/Http/Controllers/Api/AssetsController.php | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/app/Http/Controllers/Api/AssetsController.php b/app/Http/Controllers/Api/AssetsController.php index dbeb1b6c63..2922766286 100644 --- a/app/Http/Controllers/Api/AssetsController.php +++ b/app/Http/Controllers/Api/AssetsController.php @@ -556,7 +556,7 @@ class AssetsController extends Controller $model = AssetModel::find($request->input('model_id')); // Check that it's an object and not a collection - // (Sometimes people send arrays here and they shouldn't + // (Sometimes people send arrays here and they shouldn't, unless it's a checkbox) if (($model) && ($model instanceof AssetModel) && ($model->fieldset)) { foreach ($model->fieldset->fields as $field) { @@ -657,18 +657,21 @@ class AssetsController extends Controller // Update custom fields if (($model) && (isset($model->fieldset))) { foreach ($model->fieldset->fields as $field) { + $field_val = $request->input($field->db_column, null); if ($request->has($field->db_column)) { if ($field->field_encrypted == '1') { if (Gate::allows('admin')) { - $asset->{$field->db_column} = \Crypt::encrypt($request->input($field->db_column)); + $asset->{$field->db_column} = Crypt::encrypt($field_val); } - } else { - if ($field->element == 'checkbox') { - if(is_array($field_val)) { - $field_val = implode(',', $field_val); - } + } + if ($field->element == 'checkbox') { + if(is_array($field_val)) { + $field_val = implode(',', $field_val); + $asset->{$field->db_column} = $field_val; } - $asset->{$field->db_column} = $request->input($field->db_column); + } + else { + $asset->{$field->db_column} = $field_val; } } } From d67ff54f4b29e2c8d3d1b5b395cc938df3aa03f5 Mon Sep 17 00:00:00 2001 From: spencerrlongg Date: Tue, 20 Feb 2024 16:20:03 -0600 Subject: [PATCH 020/129] temporary decrypt, almost there --- app/Providers/ValidationServiceProvider.php | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/app/Providers/ValidationServiceProvider.php b/app/Providers/ValidationServiceProvider.php index 02a2bf3136..80697ce458 100644 --- a/app/Providers/ValidationServiceProvider.php +++ b/app/Providers/ValidationServiceProvider.php @@ -6,6 +6,7 @@ use App\Models\CustomField; use App\Models\Department; use App\Models\Setting; use DB; +use Illuminate\Support\Facades\Crypt; use Illuminate\Support\Facades\Log; use Illuminate\Support\ServiceProvider; use Illuminate\Validation\Rule; @@ -300,13 +301,22 @@ class ValidationServiceProvider extends ServiceProvider // This is only used in Models/CustomFieldset.php - it does automatic validation for checkboxes by making sure // that the submitted values actually exist in the options. Validator::extend('checkboxes', function ($attribute, $value, $parameters, $validator){ - $options = CustomField::where('db_column', $attribute)->first()->formatFieldValuesAsArray(); + $field = CustomField::where('db_column', $attribute)->first(); + $options = $field->formatFieldValuesAsArray(); + + // temporarily decrypt for validation + if($field->field_encrypted) { + $value = Crypt::decrypt($value); + } + dump(is_array($value)); + if(is_array($value)) { $invalid = array_diff($value, $options); if(count($invalid) > 0) { return false; } } + // for legacy, allows users to submit a comma separated string of options elseif(!is_array($value)) { $exploded = array_map('trim', explode(',', $value)); @@ -315,6 +325,7 @@ class ValidationServiceProvider extends ServiceProvider return false; } } + return true; }); } From 20dbacd22f5c35a3b5c1a6cb4865d205019e1fe4 Mon Sep 17 00:00:00 2001 From: spencerrlongg Date: Wed, 21 Feb 2024 21:33:34 -0600 Subject: [PATCH 021/129] store good, update needs work --- app/Http/Controllers/Api/AssetsController.php | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/app/Http/Controllers/Api/AssetsController.php b/app/Http/Controllers/Api/AssetsController.php index 2922766286..75d64d440f 100644 --- a/app/Http/Controllers/Api/AssetsController.php +++ b/app/Http/Controllers/Api/AssetsController.php @@ -585,6 +585,16 @@ class AssetsController extends Controller } } if ($field->element == 'checkbox') { + if ($field->field_encrypted) { + // to not break a bunch of stuff, we must decrypt + implode if the checkbox value is an array + $field_val_decrypt = Crypt::decrypt($field_val); + if (is_array($field_val_decrypt)) { + $field_val_decrypt_imploded = implode(',', $field_val_decrypt); + $field_val = Crypt::encrypt($field_val_decrypt_imploded); + } else + $field_val = Crypt::encrypt($field_val_decrypt); + + } if(is_array($field_val)) { $field_val = implode(',', $field_val); } @@ -665,6 +675,16 @@ class AssetsController extends Controller } } if ($field->element == 'checkbox') { + //if ($field->field_encrypted) { + // // to not break a bunch of stuff, we must decrypt + implode if the checkbox value is an array + // $field_val_decrypt = Crypt::decrypt($field_val); + // if (is_array($field_val_decrypt)) { + // $field_val_decrypt_imploded = implode(',', $field_val_decrypt); + // $field_val = Crypt::encrypt($field_val_decrypt_imploded); + // } else + // $field_val = Crypt::encrypt($field_val_decrypt); + // + //} if(is_array($field_val)) { $field_val = implode(',', $field_val); $asset->{$field->db_column} = $field_val; From 14358651e491fb2725ff1af5b0050675e25c4f49 Mon Sep 17 00:00:00 2001 From: spencerrlongg Date: Thu, 22 Feb 2024 13:28:23 -0600 Subject: [PATCH 022/129] pushing to test other branches --- app/Http/Controllers/Api/AssetsController.php | 23 +++++++++++-------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/app/Http/Controllers/Api/AssetsController.php b/app/Http/Controllers/Api/AssetsController.php index 75d64d440f..c3d4ce8d21 100644 --- a/app/Http/Controllers/Api/AssetsController.php +++ b/app/Http/Controllers/Api/AssetsController.php @@ -668,23 +668,26 @@ class AssetsController extends Controller if (($model) && (isset($model->fieldset))) { foreach ($model->fieldset->fields as $field) { $field_val = $request->input($field->db_column, null); + if ($request->has($field->db_column)) { + //if ($field->field_encrypted) { + // // to not break a bunch of stuff, we must decrypt + implode if the checkbox value is an array + // $field_val_decrypt = Crypt::decrypt($field_val); + // if (is_array($field_val_decrypt)) { + // $field_val_decrypt_imploded = implode(',', $field_val_decrypt); + // $field_val = Crypt::encrypt($field_val_decrypt_imploded); + // } else + // $field_val = Crypt::encrypt($field_val_decrypt); + // + //} if ($field->field_encrypted == '1') { if (Gate::allows('admin')) { $asset->{$field->db_column} = Crypt::encrypt($field_val); } } + if ($field->element == 'checkbox') { - //if ($field->field_encrypted) { - // // to not break a bunch of stuff, we must decrypt + implode if the checkbox value is an array - // $field_val_decrypt = Crypt::decrypt($field_val); - // if (is_array($field_val_decrypt)) { - // $field_val_decrypt_imploded = implode(',', $field_val_decrypt); - // $field_val = Crypt::encrypt($field_val_decrypt_imploded); - // } else - // $field_val = Crypt::encrypt($field_val_decrypt); - // - //} + if(is_array($field_val)) { $field_val = implode(',', $field_val); $asset->{$field->db_column} = $field_val; From b6fa6cba2244926071281789c2c2fdfead7e2874 Mon Sep 17 00:00:00 2001 From: spencerrlongg Date: Thu, 22 Feb 2024 15:01:14 -0600 Subject: [PATCH 023/129] note before switching tasks --- app/Providers/ValidationServiceProvider.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/Providers/ValidationServiceProvider.php b/app/Providers/ValidationServiceProvider.php index 80697ce458..71c24694db 100644 --- a/app/Providers/ValidationServiceProvider.php +++ b/app/Providers/ValidationServiceProvider.php @@ -305,6 +305,8 @@ class ValidationServiceProvider extends ServiceProvider $options = $field->formatFieldValuesAsArray(); // temporarily decrypt for validation + // so, this is breaking patches, i don't really get why. + // is it not encrypted here on an update? need to do more testing. :( if($field->field_encrypted) { $value = Crypt::decrypt($value); } From ad0f873ecee737c73b8d157b89001146c14437ba Mon Sep 17 00:00:00 2001 From: spencerrlongg Date: Tue, 5 Mar 2024 11:58:00 -0600 Subject: [PATCH 024/129] rm validation stuff --- app/Http/Controllers/Api/AssetsController.php | 22 ------------------- app/Providers/ValidationServiceProvider.php | 8 ------- 2 files changed, 30 deletions(-) diff --git a/app/Http/Controllers/Api/AssetsController.php b/app/Http/Controllers/Api/AssetsController.php index c3d4ce8d21..7b3db3090c 100644 --- a/app/Http/Controllers/Api/AssetsController.php +++ b/app/Http/Controllers/Api/AssetsController.php @@ -585,16 +585,6 @@ class AssetsController extends Controller } } if ($field->element == 'checkbox') { - if ($field->field_encrypted) { - // to not break a bunch of stuff, we must decrypt + implode if the checkbox value is an array - $field_val_decrypt = Crypt::decrypt($field_val); - if (is_array($field_val_decrypt)) { - $field_val_decrypt_imploded = implode(',', $field_val_decrypt); - $field_val = Crypt::encrypt($field_val_decrypt_imploded); - } else - $field_val = Crypt::encrypt($field_val_decrypt); - - } if(is_array($field_val)) { $field_val = implode(',', $field_val); } @@ -670,24 +660,12 @@ class AssetsController extends Controller $field_val = $request->input($field->db_column, null); if ($request->has($field->db_column)) { - //if ($field->field_encrypted) { - // // to not break a bunch of stuff, we must decrypt + implode if the checkbox value is an array - // $field_val_decrypt = Crypt::decrypt($field_val); - // if (is_array($field_val_decrypt)) { - // $field_val_decrypt_imploded = implode(',', $field_val_decrypt); - // $field_val = Crypt::encrypt($field_val_decrypt_imploded); - // } else - // $field_val = Crypt::encrypt($field_val_decrypt); - // - //} if ($field->field_encrypted == '1') { if (Gate::allows('admin')) { $asset->{$field->db_column} = Crypt::encrypt($field_val); } } - if ($field->element == 'checkbox') { - if(is_array($field_val)) { $field_val = implode(',', $field_val); $asset->{$field->db_column} = $field_val; diff --git a/app/Providers/ValidationServiceProvider.php b/app/Providers/ValidationServiceProvider.php index 71c24694db..d13898fb3f 100644 --- a/app/Providers/ValidationServiceProvider.php +++ b/app/Providers/ValidationServiceProvider.php @@ -304,14 +304,6 @@ class ValidationServiceProvider extends ServiceProvider $field = CustomField::where('db_column', $attribute)->first(); $options = $field->formatFieldValuesAsArray(); - // temporarily decrypt for validation - // so, this is breaking patches, i don't really get why. - // is it not encrypted here on an update? need to do more testing. :( - if($field->field_encrypted) { - $value = Crypt::decrypt($value); - } - dump(is_array($value)); - if(is_array($value)) { $invalid = array_diff($value, $options); if(count($invalid) > 0) { From af06b1cd06fb2e11a1e93bf4a96939d44992c668 Mon Sep 17 00:00:00 2001 From: spencerrlongg Date: Tue, 5 Mar 2024 13:37:30 -0600 Subject: [PATCH 025/129] hide encryption option for checkbox and radio --- resources/views/custom_fields/fields/edit.blade.php | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/resources/views/custom_fields/fields/edit.blade.php b/resources/views/custom_fields/fields/edit.blade.php index 504b556faa..fa869bc372 100644 --- a/resources/views/custom_fields/fields/edit.blade.php +++ b/resources/views/custom_fields/fields/edit.blade.php @@ -135,7 +135,7 @@ @if (!$field->id) -
+
- @endif @@ -302,11 +301,21 @@ $(this).find("option:selected").each(function(){ if (($(this).attr("value")!="text") && ($(this).attr("value")!="textarea")){ $("#field_values_text").show(); + if ($(this).attr("value") == "checkbox" || $(this).attr("value") == "radio") { + $("#encryption_section").hide(); + } } else{ + $("#encryption_section").show(); $("#field_values_text").hide(); } }); }).change(); + // $(".field_element").change(function(){ + // $(this).find("option:selected").each(function(){ + // if + // }) + // }) + }); From a251e61d73a11a853250934c17235fabb19dc2d4 Mon Sep 17 00:00:00 2001 From: spencerrlongg Date: Tue, 5 Mar 2024 13:40:44 -0600 Subject: [PATCH 026/129] rm commented code and add comment --- resources/views/custom_fields/fields/edit.blade.php | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/resources/views/custom_fields/fields/edit.blade.php b/resources/views/custom_fields/fields/edit.blade.php index fa869bc372..e21e9fba48 100644 --- a/resources/views/custom_fields/fields/edit.blade.php +++ b/resources/views/custom_fields/fields/edit.blade.php @@ -297,6 +297,7 @@ }).change(); // Only display the field element if the type is not text + // and don't display encryption option for checkbox or radio $(".field_element").change(function(){ $(this).find("option:selected").each(function(){ if (($(this).attr("value")!="text") && ($(this).attr("value")!="textarea")){ @@ -310,12 +311,6 @@ } }); }).change(); - // $(".field_element").change(function(){ - // $(this).find("option:selected").each(function(){ - // if - // }) - // }) - }); From 3a0a13d06d377bc86695006885730f57cb641bc2 Mon Sep 17 00:00:00 2001 From: spencerrlongg Date: Tue, 5 Mar 2024 16:35:06 -0600 Subject: [PATCH 027/129] tests written but something not working... --- tests/Feature/Api/Assets/AssetStoreTest.php | 66 +++++++++++++++++++++ 1 file changed, 66 insertions(+) diff --git a/tests/Feature/Api/Assets/AssetStoreTest.php b/tests/Feature/Api/Assets/AssetStoreTest.php index 92a58a5006..f7a0aaf6dc 100644 --- a/tests/Feature/Api/Assets/AssetStoreTest.php +++ b/tests/Feature/Api/Assets/AssetStoreTest.php @@ -438,4 +438,70 @@ class AssetStoreTest extends TestCase $json->has('messages.company_id')->etc(); }); } + + public function testCustomFieldCheckboxPassesValidationForValidOptionsWithString() + { + $model = AssetModel::factory()->create(); + $status = Statuslabel::factory()->create(); + + $this->settings->enableAutoIncrement(); + + $this->actingAsForApi(User::factory()->createAssets()->create()) + ->postJson(route('api.assets.store'), [ + 'model_id' => $model->id, + 'status_id' => $status->id, + '_snipeit_test_checkbox_7' => 'One, Two, Three', + ]) + ->assertOk() + ->assertStatusMessageIs('success'); + } + + public function testCustomFieldCheckboxPassesValidationForValidOptionsWithArray() + { + $model = AssetModel::factory()->create(); + $status = Statuslabel::factory()->create(); + + $this->settings->enableAutoIncrement(); + + $this->actingAsForApi(User::factory()->createAssets()->create()) + ->postJson(route('api.assets.store'), [ + 'model_id' => $model->id, + 'status_id' => $status->id, + '_snipeit_test_checkbox_7' => ['One', 'Two', 'Three'], + ]) + ->assertOk() + ->assertStatusMessageIs('success'); + } + + public function testCustomFieldCheckboxFailsValidationForInvalidOptionsWithString() + { + $model = AssetModel::factory()->create(); + $status = Statuslabel::factory()->create(); + + $this->settings->enableAutoIncrement(); + + $this->actingAsForApi(User::factory()->createAssets()->create()) + ->postJson(route('api.assets.store'), [ + 'model_id' => $model->id, + 'status_id' => $status->id, + '_snipeit_test_checkbox_7' => "One, Two, Four, Five", + ]) + ->assertStatusMessageIs('error'); + } + + public function testCustomFieldCheckboxFailsValidationForInvalidOptionsWithArray() + { + $model = AssetModel::factory()->create(); + $status = Statuslabel::factory()->create(); + + $this->settings->enableAutoIncrement(); + + $this->actingAsForApi(User::factory()->createAssets()->create()) + ->postJson(route('api.assets.store'), [ + 'model_id' => $model->id, + 'status_id' => $status->id, + '_snipeit_test_checkbox_7' => ['One', 'Two', 'Four', 'Five'] + ]) + ->assertStatusMessageIs('error'); + } } From 04e0a9d4a560dfcdaa1f1a1b3b71af3c35e2da0c Mon Sep 17 00:00:00 2001 From: spencerrlongg Date: Fri, 8 Mar 2024 13:14:59 -0600 Subject: [PATCH 028/129] commented tests for now --- tests/Feature/Api/Assets/AssetStoreTest.php | 134 ++++++++++---------- 1 file changed, 69 insertions(+), 65 deletions(-) diff --git a/tests/Feature/Api/Assets/AssetStoreTest.php b/tests/Feature/Api/Assets/AssetStoreTest.php index f7a0aaf6dc..cafd71f558 100644 --- a/tests/Feature/Api/Assets/AssetStoreTest.php +++ b/tests/Feature/Api/Assets/AssetStoreTest.php @@ -439,69 +439,73 @@ class AssetStoreTest extends TestCase }); } - public function testCustomFieldCheckboxPassesValidationForValidOptionsWithString() - { - $model = AssetModel::factory()->create(); - $status = Statuslabel::factory()->create(); - - $this->settings->enableAutoIncrement(); - - $this->actingAsForApi(User::factory()->createAssets()->create()) - ->postJson(route('api.assets.store'), [ - 'model_id' => $model->id, - 'status_id' => $status->id, - '_snipeit_test_checkbox_7' => 'One, Two, Three', - ]) - ->assertOk() - ->assertStatusMessageIs('success'); - } - - public function testCustomFieldCheckboxPassesValidationForValidOptionsWithArray() - { - $model = AssetModel::factory()->create(); - $status = Statuslabel::factory()->create(); - - $this->settings->enableAutoIncrement(); - - $this->actingAsForApi(User::factory()->createAssets()->create()) - ->postJson(route('api.assets.store'), [ - 'model_id' => $model->id, - 'status_id' => $status->id, - '_snipeit_test_checkbox_7' => ['One', 'Two', 'Three'], - ]) - ->assertOk() - ->assertStatusMessageIs('success'); - } - - public function testCustomFieldCheckboxFailsValidationForInvalidOptionsWithString() - { - $model = AssetModel::factory()->create(); - $status = Statuslabel::factory()->create(); - - $this->settings->enableAutoIncrement(); - - $this->actingAsForApi(User::factory()->createAssets()->create()) - ->postJson(route('api.assets.store'), [ - 'model_id' => $model->id, - 'status_id' => $status->id, - '_snipeit_test_checkbox_7' => "One, Two, Four, Five", - ]) - ->assertStatusMessageIs('error'); - } - - public function testCustomFieldCheckboxFailsValidationForInvalidOptionsWithArray() - { - $model = AssetModel::factory()->create(); - $status = Statuslabel::factory()->create(); - - $this->settings->enableAutoIncrement(); - - $this->actingAsForApi(User::factory()->createAssets()->create()) - ->postJson(route('api.assets.store'), [ - 'model_id' => $model->id, - 'status_id' => $status->id, - '_snipeit_test_checkbox_7' => ['One', 'Two', 'Four', 'Five'] - ]) - ->assertStatusMessageIs('error'); - } + // Commenting these tests because they should be good, but there's a factory problem with + // custom fields that's preventing them from working properly. Leaving them here for now + // so that we can uncomment once we figure out how to resolve that. + //public function testCustomFieldCheckboxPassesValidationForValidOptionsWithString() + //{ + // $model = AssetModel::factory()->create(); + // $status = Statuslabel::factory()->create(); + // + // + // $this->settings->enableAutoIncrement(); + // + // $this->actingAsForApi(User::factory()->createAssets()->create()) + // ->postJson(route('api.assets.store'), [ + // 'model_id' => $model->id, + // 'status_id' => $status->id, + // '_snipeit_test_checkbox_7' => 'One, Two, Three', + // ]) + // ->assertOk() + // ->assertStatusMessageIs('success'); + //} + // + //public function testCustomFieldCheckboxPassesValidationForValidOptionsWithArray() + //{ + // $model = AssetModel::factory()->create(); + // $status = Statuslabel::factory()->create(); + // + // $this->settings->enableAutoIncrement(); + // + // $this->actingAsForApi(User::factory()->createAssets()->create()) + // ->postJson(route('api.assets.store'), [ + // 'model_id' => $model->id, + // 'status_id' => $status->id, + // '_snipeit_test_checkbox_7' => ['One', 'Two', 'Three'], + // ]) + // ->assertOk() + // ->assertStatusMessageIs('success'); + //} + // + //public function testCustomFieldCheckboxFailsValidationForInvalidOptionsWithString() + //{ + // $model = AssetModel::factory()->mbp13Model()->create(); + // $status = Statuslabel::factory()->create(); + // + // $this->settings->enableAutoIncrement(); + // + // $this->actingAsForApi(User::factory()->createAssets()->create()) + // ->postJson(route('api.assets.store'), [ + // 'model_id' => $model->id, + // 'status_id' => $status->id, + // '_snipeit_test_checkbox_7' => "One, Two, Four, Five", + // ]) + // ->assertStatusMessageIs('error'); + //} + // + //public function testCustomFieldCheckboxFailsValidationForInvalidOptionsWithArray() + //{ + // $model = AssetModel::factory()->mbp13Model()->create(); + // $status = Statuslabel::factory()->create(); + // + // $this->settings->enableAutoIncrement(); + // + // $this->actingAsForApi(User::factory()->createAssets()->create()) + // ->postJson(route('api.assets.store'), [ + // 'model_id' => $model->id, + // 'status_id' => $status->id, + // '_snipeit_test_checkbox_7' => ['One', 'Two', 'Four', 'Five'] + // ]) + // ->assertStatusMessageIs('error'); + //} } From c5c6b3bbc6031f3c7f70312eff6800a710653f4e Mon Sep 17 00:00:00 2001 From: snipe Date: Mon, 11 Mar 2024 14:23:25 +0000 Subject: [PATCH 029/129] Starting the revised print page Signed-off-by: snipe --- resources/views/users/print.blade.php | 182 ++++++++++++++++++++++---- 1 file changed, 156 insertions(+), 26 deletions(-) diff --git a/resources/views/users/print.blade.php b/resources/views/users/print.blade.php index cd82289863..19680f65c2 100644 --- a/resources/views/users/print.blade.php +++ b/resources/views/users/print.blade.php @@ -3,9 +3,24 @@ {{ trans('general.assigned_to', ['name' => $show_user->present()->fullName()]) }} - {{ date('Y-m-d H:i', time()) }} + + + + {{-- stylesheets --}} + + + + + + + @@ -55,25 +74,44 @@ @php $counter = 1; @endphp - - - - - - - - - - - - - - - - - - +
+ poots +
+ +
{{ trans('general.assets') }}
{{ trans('admin/hardware/table.asset_tag') }}{{ trans('general.name') }}{{ trans('general.category') }}{{ trans('admin/hardware/form.model') }}{{ trans('admin/hardware/form.serial') }}{{ trans('admin/hardware/table.checkout_date') }}{{ trans('general.signature') }}
+ + + + + + + + + + + + + + + + + + @foreach ($assets as $asset) @@ -85,13 +123,13 @@ - - @if($settings->show_assigned_assets) + @if ($settings->show_assigned_assets) @php $assignedCounter = 1; @endphp @@ -116,6 +154,7 @@ $counter++ @endphp @endforeach +
{{ trans('general.assets') }}
#{{ trans('admin/hardware/table.asset_tag') }}{{ trans('general.name') }}{{ trans('general.category') }}{{ trans('admin/hardware/form.model') }}{{ trans('admin/hardware/form.serial') }}{{ trans('admin/hardware/table.checkout_date') }}{{ trans('general.signature') }}
{{ $asset->serial }} {{ $asset->last_checkout }} + @if (($asset->assetlog->first()) && ($asset->assetlog->first()->accept_signature!='')) @endif
@endif @@ -256,6 +295,97 @@ +{{-- Javascript files --}} + + + + +@push('css') + +@endpush + +@push('js') + + + + + + From 0fcf2239605b3d6463b40123c8ba9e6d9d620c7d Mon Sep 17 00:00:00 2001 From: Marcus Moore Date: Tue, 12 Mar 2024 12:00:10 -0700 Subject: [PATCH 030/129] Add minimal validation for asset_tags --- app/Http/Controllers/Assets/AssetsController.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/Http/Controllers/Assets/AssetsController.php b/app/Http/Controllers/Assets/AssetsController.php index 0683a54e3a..6054718e6b 100755 --- a/app/Http/Controllers/Assets/AssetsController.php +++ b/app/Http/Controllers/Assets/AssetsController.php @@ -102,6 +102,10 @@ class AssetsController extends Controller { $this->authorize(Asset::class); + // There are a lot more rules to add here but prevents + // errors around `asset_tags` not being present below. + $this->validate($request, ['asset_tags' => ['required', 'array']]); + // Handle asset tags - there could be one, or potentially many. // This is only necessary on create, not update, since bulk editing is handled // differently From 85123b3e66a8483c3997ff1d1136dd99bb74c99e Mon Sep 17 00:00:00 2001 From: snipe Date: Wed, 13 Mar 2024 12:36:17 +0000 Subject: [PATCH 031/129] Rework print page Still seeing a weird error tho, not done yet Signed-off-by: snipe --- resources/views/users/print.blade.php | 148 +++++++++++++++++--------- 1 file changed, 97 insertions(+), 51 deletions(-) diff --git a/resources/views/users/print.blade.php b/resources/views/users/print.blade.php index 19680f65c2..6a9e3d43d1 100644 --- a/resources/views/users/print.blade.php +++ b/resources/views/users/print.blade.php @@ -37,6 +37,11 @@ max-height: 40px; } + h4 { + margin-top: 20px; + margin-bottom: 10px; + } + + From 79c5697042c3352899ab3631c730796f14c3dd57 Mon Sep 17 00:00:00 2001 From: snipe Date: Wed, 3 Apr 2024 13:06:49 +0100 Subject: [PATCH 121/129] Fixed dev - take 2! Signed-off-by: snipe --- resources/views/hardware/view.blade.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/resources/views/hardware/view.blade.php b/resources/views/hardware/view.blade.php index 461f2a4688..15ccf856ec 100755 --- a/resources/views/hardware/view.blade.php +++ b/resources/views/hardware/view.blade.php @@ -32,8 +32,6 @@
- - +
From df95447ea43595d158e67a0294bf4f8dc43d5831 Mon Sep 17 00:00:00 2001 From: snipe Date: Wed, 3 Apr 2024 13:08:08 +0100 Subject: [PATCH 122/129] New dev assets Signed-off-by: snipe --- public/css/build/app.css | Bin 23961 -> 24071 bytes public/css/build/overrides.css | Bin 17111 -> 17221 bytes public/css/dist/all.css | Bin 515737 -> 515957 bytes public/mix-manifest.json | 6 +++--- 4 files changed, 3 insertions(+), 3 deletions(-) diff --git a/public/css/build/app.css b/public/css/build/app.css index f6e9fd6804ddce93d82e412404d2f5d59b247679..9ba05108f81cb4407b2285bf05ec3adf41c0c9e3 100644 GIT binary patch delta 100 zcmbQao3VWl;|4F&$$gP>KFRrcC5f4NsYMEUX_*zNDY_+zNja&yN%<+2s3JM}i7AnKpkl7g7TNRNV*M diff --git a/public/css/build/overrides.css b/public/css/build/overrides.css index f32d3051ddf9df39cde17fe34eba1e24e3c8fefe..52928e416c314d71ea05327fd4b4884c90719278 100644 GIT binary patch delta 95 zcmccK%6PPmaYKjHF7M2#)7Pc+yi}j~}ddj9geZwm@4S{Md1%)cz%)FG;3M&N* g6N70wOk&dySTJ#Ij}>CqVcPz{kUgt~H1$Gi0QjFL?f?J) delta 63 zcmeymPk!cJ`Gyw87N!>F7M2#)7Pc+yi}knr2(jBTO+T;3&bB>sCp(YY_Jj!bh&T*k E0Lcavx&QzG diff --git a/public/mix-manifest.json b/public/mix-manifest.json index 68309ab7e0..b467422888 100644 --- a/public/mix-manifest.json +++ b/public/mix-manifest.json @@ -1,8 +1,8 @@ { "/js/build/app.js": "/js/build/app.js?id=ea5f3edebafdb29b616d23fa89106080", "/css/dist/skins/skin-blue.css": "/css/dist/skins/skin-blue.css?id=f677207c6cf9678eb539abecb408c374", - "/css/build/overrides.css": "/css/build/overrides.css?id=742bf17cd1ed6feaa90756beeb09d749", - "/css/build/app.css": "/css/build/app.css?id=1e755f4e7a6968ee5d46747a4ffeca47", + "/css/build/overrides.css": "/css/build/overrides.css?id=ba34afc5bd6ee746744fd109672f715e", + "/css/build/app.css": "/css/build/app.css?id=1b976575001241a8f97ec4fad7bd1f3d", "/css/build/AdminLTE.css": "/css/build/AdminLTE.css?id=dc383f8560a8d4adb51d44fb4043e03b", "/css/dist/skins/skin-orange.css": "/css/dist/skins/skin-orange.css?id=6f0563e726c2fe4fab4026daaa5bfdf2", "/css/dist/skins/skin-orange-dark.css": "/css/dist/skins/skin-orange-dark.css?id=e6e53eef152bba01a4c666a4d8b01117", @@ -18,7 +18,7 @@ "/css/dist/skins/skin-green.css": "/css/dist/skins/skin-green.css?id=0a82a6ae6bb4e58fe62d162c4fb50397", "/css/dist/skins/skin-contrast.css": "/css/dist/skins/skin-contrast.css?id=da6c7997d9de2f8329142399f0ce50da", "/css/dist/skins/skin-red.css": "/css/dist/skins/skin-red.css?id=44bf834f2110504a793dadec132a5898", - "/css/dist/all.css": "/css/dist/all.css?id=205f918653b20e1eb25f5c322b7a6832", + "/css/dist/all.css": "/css/dist/all.css?id=53cc9f0f60753c049f4e49617d21c0fe", "/css/dist/signature-pad.css": "/css/dist/signature-pad.css?id=6a89d3cd901305e66ced1cf5f13147f7", "/css/dist/signature-pad.min.css": "/css/dist/signature-pad.min.css?id=6a89d3cd901305e66ced1cf5f13147f7", "/css/webfonts/fa-brands-400.ttf": "/css/webfonts/fa-brands-400.ttf?id=69e5d8e4e818f05fd882cceb758d1eba", From 5f7f4c9b917281063cad85de4a7af503aeb8a24a Mon Sep 17 00:00:00 2001 From: Godfrey M Date: Wed, 3 Apr 2024 10:41:50 -0700 Subject: [PATCH 123/129] aligns dropdown menu for user in nav --- resources/assets/less/overrides.less | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/resources/assets/less/overrides.less b/resources/assets/less/overrides.less index 72b8437eb2..bc41659594 100644 --- a/resources/assets/less/overrides.less +++ b/resources/assets/less/overrides.less @@ -688,6 +688,12 @@ th.css-accessory > .th-inner::before .sidebar-menu { margin-top:100px } + .navbar-custom-menu > .navbar-nav > li.dropdown.user.user-menu { + float:right; + } + .navbar-custom-menu > .navbar-nav > li > .dropdown-menu { + margin-right:-39px; + } } @media screen and (max-width: 1268px) and (min-width: 912px){ From a72d4e5dc1988ee13359cbf34f6fa2942ed4d243 Mon Sep 17 00:00:00 2001 From: snipe Date: Thu, 4 Apr 2024 14:23:58 +0100 Subject: [PATCH 124/129] Fixed ambiguous id clause in custom report Signed-off-by: snipe --- app/Http/Controllers/ReportsController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Http/Controllers/ReportsController.php b/app/Http/Controllers/ReportsController.php index 6372c37beb..c1ae800342 100644 --- a/app/Http/Controllers/ReportsController.php +++ b/app/Http/Controllers/ReportsController.php @@ -696,7 +696,7 @@ class ReportsController extends Controller ->whereBetween('action_date',[$checkout_start, $checkout_end]) ->pluck('item_id'); - $assets->whereIn('id',$actionlogassets); + $assets->whereIn('assets.id',$actionlogassets); } if (($request->filled('checkin_date_start'))) { From e11287ec25d15969edce68c410f9f1ddcf01b7d2 Mon Sep 17 00:00:00 2001 From: snipe Date: Thu, 4 Apr 2024 15:00:55 +0100 Subject: [PATCH 125/129] Redirect on checkin if the asset is already checked in Signed-off-by: snipe --- app/Http/Controllers/Assets/AssetCheckinController.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/Http/Controllers/Assets/AssetCheckinController.php b/app/Http/Controllers/Assets/AssetCheckinController.php index 82cb98abe9..30ffd8bba2 100644 --- a/app/Http/Controllers/Assets/AssetCheckinController.php +++ b/app/Http/Controllers/Assets/AssetCheckinController.php @@ -39,6 +39,12 @@ class AssetCheckinController extends Controller $this->authorize('checkin', $asset); + // This asset is already checked in, redirect + + if (is_null($asset->assignedTo)) { + return redirect()->route('hardware.index')->with('error', trans('admin/hardware/message.checkin.already_checked_in')); + } + return view('hardware/checkin', compact('asset'))->with('statusLabel_list', Helper::statusLabelList())->with('backto', $backto); } From 774d0aa90cfd23c6e7dffe4d08a6cdd0e0ad2a8c Mon Sep 17 00:00:00 2001 From: snipe Date: Thu, 4 Apr 2024 15:05:35 +0100 Subject: [PATCH 126/129] Updated dev assets Signed-off-by: snipe --- public/css/build/app.css | Bin 24071 -> 24249 bytes public/css/build/overrides.css | Bin 17221 -> 17399 bytes public/css/dist/all.css | Bin 515957 -> 516313 bytes public/mix-manifest.json | 6 +++--- 4 files changed, 3 insertions(+), 3 deletions(-) diff --git a/public/css/build/app.css b/public/css/build/app.css index 9ba05108f81cb4407b2285bf05ec3adf41c0c9e3..a5a5ba53d663f3deb035afc81ed384ee39851c43 100644 GIT binary patch delta 169 zcmZqQ!?<%VWvEjm^&t;)MX1^f>DP delta 18 acmey~&UmzqalF7M2#)7Pc+y4_&8ksbdkFKKBZXkg#4#QGP*6etDi=X>n>1 zn3x{dz#=!@_bQ9#^bJ>7M5jl)vU5(?>t$hQ)-|@A-gt&xW4qW{_IRP~2@&kmN~mKN E0P0#i*Z=?k delta 61 zcmcb4Q2y&a`Gyw87N!>F7M2#)7Pc+y4_&8AyD@T3uXSY?-(Gc&Jzi+LP$c`b5_C}j Dy-gJ@ diff --git a/public/mix-manifest.json b/public/mix-manifest.json index b467422888..8052e88763 100644 --- a/public/mix-manifest.json +++ b/public/mix-manifest.json @@ -1,8 +1,8 @@ { "/js/build/app.js": "/js/build/app.js?id=ea5f3edebafdb29b616d23fa89106080", "/css/dist/skins/skin-blue.css": "/css/dist/skins/skin-blue.css?id=f677207c6cf9678eb539abecb408c374", - "/css/build/overrides.css": "/css/build/overrides.css?id=ba34afc5bd6ee746744fd109672f715e", - "/css/build/app.css": "/css/build/app.css?id=1b976575001241a8f97ec4fad7bd1f3d", + "/css/build/overrides.css": "/css/build/overrides.css?id=5ee51def3786ccd4ac36287ed74496e7", + "/css/build/app.css": "/css/build/app.css?id=8e63a06059e22f0cd450bcde31055f81", "/css/build/AdminLTE.css": "/css/build/AdminLTE.css?id=dc383f8560a8d4adb51d44fb4043e03b", "/css/dist/skins/skin-orange.css": "/css/dist/skins/skin-orange.css?id=6f0563e726c2fe4fab4026daaa5bfdf2", "/css/dist/skins/skin-orange-dark.css": "/css/dist/skins/skin-orange-dark.css?id=e6e53eef152bba01a4c666a4d8b01117", @@ -18,7 +18,7 @@ "/css/dist/skins/skin-green.css": "/css/dist/skins/skin-green.css?id=0a82a6ae6bb4e58fe62d162c4fb50397", "/css/dist/skins/skin-contrast.css": "/css/dist/skins/skin-contrast.css?id=da6c7997d9de2f8329142399f0ce50da", "/css/dist/skins/skin-red.css": "/css/dist/skins/skin-red.css?id=44bf834f2110504a793dadec132a5898", - "/css/dist/all.css": "/css/dist/all.css?id=53cc9f0f60753c049f4e49617d21c0fe", + "/css/dist/all.css": "/css/dist/all.css?id=bf3a5397f580f3469fa92ecf8ea93dbc", "/css/dist/signature-pad.css": "/css/dist/signature-pad.css?id=6a89d3cd901305e66ced1cf5f13147f7", "/css/dist/signature-pad.min.css": "/css/dist/signature-pad.min.css?id=6a89d3cd901305e66ced1cf5f13147f7", "/css/webfonts/fa-brands-400.ttf": "/css/webfonts/fa-brands-400.ttf?id=69e5d8e4e818f05fd882cceb758d1eba", From a9ed748fb2be3ade683d235e6abd1ee4563ef83b Mon Sep 17 00:00:00 2001 From: Godfrey M Date: Thu, 4 Apr 2024 11:39:49 -0700 Subject: [PATCH 127/129] adds audit dates to label options --- resources/views/partials/label2-field-definitions.blade.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/resources/views/partials/label2-field-definitions.blade.php b/resources/views/partials/label2-field-definitions.blade.php index 8d8c680c94..b9c2ce3d55 100644 --- a/resources/views/partials/label2-field-definitions.blade.php +++ b/resources/views/partials/label2-field-definitions.blade.php @@ -313,6 +313,8 @@ + + From d548b800d5227f0a1fe30144212b70e9d3edd0f6 Mon Sep 17 00:00:00 2001 From: Godfrey M Date: Thu, 4 Apr 2024 15:43:33 -0700 Subject: [PATCH 128/129] nullifies location after ldap user sync --- app/Console/Commands/LdapSync.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Console/Commands/LdapSync.php b/app/Console/Commands/LdapSync.php index 05f60ee4e1..bd91c2bf25 100755 --- a/app/Console/Commands/LdapSync.php +++ b/app/Console/Commands/LdapSync.php @@ -390,7 +390,7 @@ class LdapSync extends Command $user->location_id = $location->id; } } - + $location = null; $user->ldap_import = 1; $errors = ''; From 90cf612ac7666c721ca56a64a5ae9ccd6a64ed9e Mon Sep 17 00:00:00 2001 From: snipe Date: Mon, 8 Apr 2024 10:50:52 +0100 Subject: [PATCH 129/129] Remove city as required field on location modal Signed-off-by: snipe --- resources/views/modals/location.blade.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/views/modals/location.blade.php b/resources/views/modals/location.blade.php index 112e710249..0b5424b294 100644 --- a/resources/views/modals/location.blade.php +++ b/resources/views/modals/location.blade.php @@ -17,7 +17,7 @@
-
+