Skip to content

Commit

Permalink
Fixed #7987 - allow toggle of required/optional in custom fields/fiel…
Browse files Browse the repository at this point in the history
…dsets

Signed-off-by: snipe <[email protected]>
  • Loading branch information
snipe committed Apr 24, 2020
1 parent 88d39b4 commit bea3a7b
Show file tree
Hide file tree
Showing 3 changed files with 66 additions and 3 deletions.
41 changes: 40 additions & 1 deletion app/Http/Controllers/CustomFieldsetsController.php
Original file line number Diff line number Diff line change
Expand Up @@ -189,12 +189,51 @@ public function associate(Request $request, $id)
}
}

$results = $set->fields()->attach(Input::get('field_id'), ["required" => ($request->input('required') == "on"),"order" => $request->input('order', 1)]);
$results = $set->fields()->attach($request->input('field_id'), ["required" => ($request->input('required') == "on"),"order" => $request->input('order', 1)]);

return redirect()->route("fieldsets.show", [$id])->with("success", trans('admin/custom_fields/message.field.create.assoc_success'));
}
return redirect()->route("fieldsets.show", [$id])->with("error", 'No field selected.');


}

/**
* Set the field in a fieldset to required
*
* @author [A. Gianotto] [<[email protected]>]
* @since [v5.0]
*/
public function makeFieldRequired($fieldset_id, $field_id)
{

$this->authorize('update', CustomFieldset::class);
$field = CustomField::findOrFail($field_id);
$fieldset = CustomFieldset::findOrFail($fieldset_id);
$fields[$field->id] = ['required' => 1];
$fieldset->fields()->syncWithoutDetaching($fields);

return redirect()->route('fieldsets.show', ['fieldset' => $fieldset_id])
->with("success", trans('Field successfully set to required'));

}

/**
* Set the field in a fieldset to optional
*
* @author [A. Gianotto] [<[email protected]>]
* @since [v5.0]
*/
public function makeFieldOptional($fieldset_id, $field_id)
{
$this->authorize('update', CustomFieldset::class);
$field = CustomField::findOrFail($field_id);
$fieldset = CustomFieldset::findOrFail($fieldset_id);
$fields[$field->id] = ['required' => 0];
$fieldset->fields()->syncWithoutDetaching($fields);

return redirect()->route('fieldsets.show', ['fieldset' => $fieldset_id])
->with("success", trans('Field successfully set to optional'));

}
}
15 changes: 13 additions & 2 deletions resources/views/custom_fields/fieldsets/view.blade.php
Original file line number Diff line number Diff line change
Expand Up @@ -56,10 +56,21 @@
<td>{{$field->format}}</td>
<td>{{$field->element}}</td>
<td>{{ $field->field_encrypted=='1' ? trans('general.yes') : trans('general.no') }}</td>
<td>{{$field->pivot->required ? "REQUIRED" : "OPTIONAL"}}</td>
<td>
@if ($field->pivot->required)
<a href="{{ route('fields.optional', [$custom_fieldset->id, $field->id]) }}">
<i class="fa fa-check text-success" aria-hidden="true"></i>
<span class="sr-only">Required - click to make optional</span>
</a>
@else
<a href="{{ route('fields.required', [$custom_fieldset->id, $field->id]) }}">
<i class="fa fa-times text-danger" aria-hidden="true"></i>
<span class="sr-only">Optional - click to make required</span>
</a>
@endif
<td>
@can('update', $custom_fieldset)
<a href="{{ route('fields.disassociate', [$field,$custom_fieldset->id]) }}" class="btn btn-sm btn-danger">Remove</a>
<a href="{{ route('fields.disassociate', [$field, $custom_fieldset->id]) }}" class="btn btn-sm btn-danger">Remove</a>
@endcan
</td>
</tr>
Expand Down
13 changes: 13 additions & 0 deletions routes/web/fields.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,17 @@

Route::group([ 'prefix' => 'fields','middleware' => ['auth'] ], function () {

Route::get('required/{fieldset_id}/{field_id}',
['uses' => 'CustomFieldsetsController@makeFieldRequired',
'as' => 'fields.required']
);

Route::get('optional/{fieldset_id}/{field_id}',
['uses' => 'CustomFieldsetsController@makeFieldOptional',
'as' => 'fields.optional']
);


Route::get('{field_id}/fieldset/{fieldset_id}/disassociate',
['uses' => 'CustomFieldsController@deleteFieldFromFieldset',
'as' => 'fields.disassociate']
Expand All @@ -20,6 +31,8 @@
Route::resource('fieldsets', 'CustomFieldsetsController', [
'parameters' => ['fieldset' => 'field_id', 'field' => 'field_id']
]);


});

Route::resource('fields', 'CustomFieldsController', [
Expand Down

0 comments on commit bea3a7b

Please sign in to comment.