Skip to content

Commit a00ecd7

Browse files
committed
Clean up the fieldset experience for custom fields for users
1 parent 6459dd0 commit a00ecd7

File tree

4 files changed

+27
-10
lines changed

4 files changed

+27
-10
lines changed

app/Helpers/Helper.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -583,7 +583,7 @@ public static function customFieldsetList()
583583
static $itemtypes_having_custom_fields = [
584584
0 => \App\Models\Asset::class,
585585
1 => \App\Models\User::class,
586-
2 => \App\Models\Accessory::class
586+
// 2 => \App\Models\Accessory::class
587587
];
588588

589589
/**

app/Http/Controllers/CustomFieldsController.php

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
use App\Http\Requests\CustomFieldRequest;
77
use App\Models\CustomField;
88
use App\Models\CustomFieldset;
9+
use App\Models\User;
910
use Illuminate\Support\Facades\Auth;
1011
use Illuminate\Http\Request;
1112
use Redirect;
@@ -34,6 +35,10 @@ class CustomFieldsController extends Controller
3435
public function index(Request $request)
3536
{
3637
$this->authorize('view', CustomField::class);
38+
if ( $request->input('tab') == 1 ) {
39+
// Users section, make sure to auto-create the first fieldset if so
40+
CustomFieldset::firstOrCreate(['type' => Helper::$itemtypes_having_custom_fields[1]], ['name' => 'default']);
41+
}
3742

3843
$fieldsets = CustomFieldset::with('fields')->where("type", Helper::$itemtypes_having_custom_fields[$request->get('tab',0)])->get(); //cannot eager-load 'customizable' because it's not a relation
3944
$fields = CustomField::with('fieldset')->where("type", Helper::$itemtypes_having_custom_fields[$request->get('tab',0)])->get();
@@ -69,7 +74,7 @@ public function show()
6974
public function create(Request $request)
7075
{
7176
$this->authorize('create', CustomField::class);
72-
$fieldsets = CustomFieldset::get();
77+
$fieldsets = CustomFieldset::where('type', Helper::$itemtypes_having_custom_fields[$request->get('tab')])->get();
7378

7479
return view('custom_fields.fields.edit', [
7580
'predefinedFormats' => Helper::predefined_formats(),
@@ -128,7 +133,10 @@ public function store(CustomFieldRequest $request)
128133

129134
// Sync fields with fieldsets
130135
$fieldset_array = $request->input('associate_fieldsets');
131-
if ($request->has('associate_fieldsets') && (is_array($fieldset_array))) {
136+
if ($request->get('tab') == 1 ) {
137+
$fieldset_array = [CustomFieldset::firstOrCreate(['type' => User::class],['name' => 'default'])->id => true];
138+
}
139+
if (($request->has('associate_fieldsets') || $request->get('tab') == 1) && (is_array($fieldset_array))) {
132140
$field->fieldset()->sync(array_keys($fieldset_array));
133141
} else {
134142
$field->fieldset()->sync([]);
@@ -188,11 +196,16 @@ public function destroy($field_id)
188196
if ($field = CustomField::find($field_id)) {
189197
$this->authorize('delete', $field);
190198

199+
if ($field->type == User::class) {
200+
$field->fieldset()->detach(); // remove from 'default' group (and others, if they exist in the future!)
201+
}
191202
if (($field->fieldset) && ($field->fieldset->count() > 0)) {
192203
return redirect()->back()->withErrors(['message' => 'Field is in-use']);
193204
}
205+
$type = $field->type;
194206
$field->delete();
195-
return redirect()->route('fields.index',['tab' => Request::query('tab',0)])
207+
return redirect()->route('fields.index',['tab' => array_search($type, Helper::$itemtypes_having_custom_fields)])
208+
196209
->with('success', trans('admin/custom_fields/message.field.delete.success'));
197210
}
198211

resources/views/custom_fields/fields/edit.blade.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -120,16 +120,16 @@
120120
</div>
121121
</div>
122122

123-
124-
125123
<!-- Auto-Add to Future Fieldsets -->
126124
<div class="form-group {{ $errors->has('auto_add_to_fieldsets') ? ' has-error' : '' }}" id="auto_add_to_fieldsets">
125+
@if (Request::query('tab') != 1)
127126
<div class="col-md-9 col-md-offset-3">
128127
<label class="form-control">
129128
<input type="checkbox" name="auto_add_to_fieldsets" aria-label="auto_add_to_fieldsets" value="1"{{ (old('auto_add_to_fieldsets') || $field->auto_add_to_fieldsets) ? ' checked="checked"' : '' }}>
130129
{{ trans('admin/custom_fields/general.auto_add_to_fieldsets') }}
131130
</label>
132131
</div>
132+
@endif
133133

134134
<div class="col-md-9 col-md-offset-3">
135135
<label class="form-control">
@@ -182,7 +182,7 @@
182182

183183
</div>
184184

185-
@if ($fieldsets->count() > 0)
185+
@if ($fieldsets->count() > 0 && Request::query('tab') != 1)
186186
<!-- begin fieldset columns -->
187187
<div class="col-md-4">
188188

resources/views/custom_fields/index.blade.php

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,16 @@
2323
{{-- TODO - generalize this so it's less 'hardcoded' --}}
2424
<li {!! !Request::query('tab') ? 'class="active"': '' !!}><a href="{{ route("fields.index",["tab" => 0]) }}">Asset Custom Fields</a></li>
2525
<li {!! Request::query('tab') == 1 ? 'class="active"': '' !!}><a href="{{ route("fields.index",["tab" => 1]) }}">Users</a></li>
26-
<li {!! Request::query('tab') == 2 ? 'class="active"': '' !!}><a href="{{ route("fields.index",["tab" => 2]) }}">Accessories</a></li>
26+
{{-- <li {!! Request::query('tab') == 2 ? 'class="active"': '' !!}><a href="{{ route("fields.index",["tab" => 2]) }}">Accessories</a></li>--}}
2727
</ul>
2828
</div>
2929
</div>
3030
</div>
3131
</div>
3232
</div>
33+
{{-- Do not show fieldsets for Users' customf ields --}}
34+
@if(Request::query('tab') != 1)
35+
3336
<div class="row">
3437
<div class="col-md-12">
3538
<div class="box box-default">
@@ -119,6 +122,7 @@ class="table table-striped snipe-table"
119122

120123

121124
</div> <!-- .row-->
125+
@endif
122126
@endcan
123127
@can('view', \App\Models\CustomField::class)
124128
<div class="row">
@@ -201,15 +205,15 @@ class="table table-striped snipe-table"
201205
<nobr>
202206
{{ Form::open(array('route' => array('fields.destroy', $field->id), 'method' => 'delete', 'style' => 'display:inline-block')) }}
203207
@can('update', $field)
204-
<a href="{{ route('fields.edit', $field->id) }}" class="btn btn-warning btn-sm">
208+
<a href="{{ route('fields.edit', $field->id) }}?tab={{ array_search($field->type, Helper::$itemtypes_having_custom_fields) }}" class="btn btn-warning btn-sm">
205209
<i class="fas fa-pencil-alt" aria-hidden="true"></i>
206210
<span class="sr-only">{{ trans('button.edit') }}</span>
207211
</a>
208212
@endcan
209213

210214
@can('delete', $field)
211215

212-
@if($field->fieldset->count()>0)
216+
@if($field->fieldset->count()>0 && Request::query('tab') != 1 )
213217
<button type="submit" class="btn btn-danger btn-sm disabled" disabled>
214218
<i class="fas fa-trash" aria-hidden="true"></i>
215219
<span class="sr-only">{{ trans('button.delete') }}</span></button>

0 commit comments

Comments
 (0)