294 lines
16 KiB
PHP
294 lines
16 KiB
PHP
{{-- MINI CRUD EDIT WHEN JSON IS TRANSLATABLE --}}
|
|
@foreach ($data as $k => $input)
|
|
@php
|
|
$input = json_decode(json_encode($input), true);
|
|
@endphp
|
|
@switch(intval($input['inputType']))
|
|
@case(intval(App\Enums\InputType::video->value))
|
|
@case(intval(App\Enums\InputType::videoVimeo->value))
|
|
@case(intval(App\Enums\InputType::videoYoutube->value))
|
|
<div class="minicrud-input col-12 col-md-6 mb-3">
|
|
<fieldset class="border h-100 bg-white p-3">
|
|
<legend>{{ $input['label'] }} *</legend>
|
|
<div class="row">
|
|
<div class="col-12 mb-3">
|
|
@include('bo.partials.inputs.varchar', [
|
|
'id' => Str::slug($input['label']),
|
|
'label' => $input['label'],
|
|
'hasWordCounter' => true,
|
|
'name' => 'data['.$k.'][value]',
|
|
'value' => old("data.{$k}.value", $input['value'] ?? null),
|
|
'required' => isset($input['required']) ? !empty($input['required']) : true,
|
|
'model' => $model ?? null,
|
|
'helper' => match(intval($input['inputType'])) {
|
|
intval(App\Enums\InputType::videoYoutube->value) => __('video id eg: keZURbOo4-M'),
|
|
intval(App\Enums\InputType::videoVimeo->value) => __('video id eg: 74918975'),
|
|
intval(App\Enums\InputType::video->value) => __('video id eg: keZURbOo4-M or 74918975'),
|
|
}
|
|
])
|
|
@include('modules.input-error', [
|
|
'inputName' => "data.{$k}.value"
|
|
])
|
|
</div>
|
|
</div>
|
|
</fieldset>
|
|
</div>
|
|
@break
|
|
|
|
@case(intval(App\Enums\InputType::url->value))
|
|
@case(intval(App\Enums\InputType::string->value))
|
|
<div class="minicrud-input col-12 col-md-6 mb-3">
|
|
<fieldset class="border h-100 bg-white p-3">
|
|
<legend>{{ $input['label'] }} *</legend>
|
|
<div class="row">
|
|
<div class="col-12 mb-3">
|
|
@include('bo.partials.inputs.varchar', [
|
|
'id' => Str::slug($input['label']),
|
|
'label' => $input['label'],
|
|
'hasWordCounter' => true,
|
|
'name' => 'data['.$k.'][value]',
|
|
'value' => old("data.{$k}.value", $input['value'] ?? null),
|
|
'required' => isset($input['required']) ? !empty($input['required']) : true,
|
|
'model' => $model ?? null,
|
|
'helper' => __('validation.between.string', [
|
|
'attribute' => $input['label'],
|
|
'min' => 3,
|
|
'max' => 255
|
|
])
|
|
])
|
|
@include('modules.input-error', [
|
|
'inputName' => "data.{$k}.value"
|
|
])
|
|
</div>
|
|
</div>
|
|
</fieldset>
|
|
</div>
|
|
@break
|
|
|
|
@case(intval(App\Enums\InputType::number->value))
|
|
<div class="minicrud-input col-12 mb-3">
|
|
<fieldset class="border p-3 mb-3">
|
|
<div class="d-flex flex-row justify-content-start align-items-center mb-2">
|
|
<legend class="w-auto m-0">
|
|
<label for="number{{$k}}" class="col-form-label">
|
|
<b>{{ $input['label'] }}</b>
|
|
</label>
|
|
</legend>
|
|
@if(!empty($input['tooltip']))
|
|
<span class="ms-1" data-bs-toggle="tooltip" data-bs-html="true" title="{{ $input['tooltip'] }}">
|
|
<i class="fa fa-question-circle"></i>
|
|
</span>
|
|
@endif
|
|
</div>
|
|
<div class="row mb-3">
|
|
<div class="form-group">
|
|
<input id="number{{$k}}" type="number" step="0.01" class="form-control"
|
|
aria-describedby="NumberHelp{{$k}}"
|
|
name="data[{{ $k }}][value]" placeholder="{{ $input['label'] }}"
|
|
value="{{ old("data.{$k}.value") ?? ($input['value'] ?? '') }}" @if(!isset($input['required']) or $input['required']) required @endif>
|
|
@include('back::modules.input-error', [
|
|
'inputName' => "data.{$k}.value",
|
|
'helperId' => "NumberHelp{$k}",
|
|
'helper' => $input['helper'] ?? '',
|
|
])
|
|
</div>
|
|
</div>
|
|
</fieldset>
|
|
</div>
|
|
@break
|
|
|
|
@case(intval(App\Enums\InputType::text->value))
|
|
<div class="minicrud-input col-12 mb-3">
|
|
<fieldset class="border bg-white p-3">
|
|
<legend>{{ $input['label'] }} *</legend>
|
|
<div class="row mb-3">
|
|
<div class="col-12">
|
|
@include('bo.partials.inputs.text-html', [
|
|
'id' => Str::slug($input['label']),
|
|
'name' => "data[{$k}][value]",
|
|
'value' =>old("data.{$k}.value", $input['value'] ?? null),
|
|
'model' => $model ?? null,
|
|
'helper' => __('crud.minicrud.text_warning') . '. ' . __('validation.min.string', [
|
|
'attribute' => $input['label'],
|
|
'min' => 3
|
|
]),
|
|
])
|
|
@include('modules.input-error', [
|
|
'inputName' => "data.{$k}.value"
|
|
])
|
|
</div>
|
|
</div>
|
|
</fieldset>
|
|
</div>
|
|
@break
|
|
|
|
@case(intval(App\Enums\InputType::boolean->value))
|
|
<div class="minicrud-input col-12 col-md-6 mb-3">
|
|
<fieldset class="border bg-white p-3">
|
|
<legend>{{ $input['label'] }} *</legend>
|
|
<div class="row mb-3">
|
|
<div class="col-12">
|
|
<label class="col-form-label" for="{{ Str::slug($input['label']) }}"><b>{{ __('crud.minicrud.visibility_label') }}</b></label>
|
|
<div class="form-check form-switch ms-2">
|
|
<input
|
|
id="{{ Str::slug($input['label']) }}"
|
|
aria-describedby="{{ Str::slug($input['label']) }}Help"
|
|
name="data[{{ $k }}][value]"
|
|
type="checkbox"
|
|
class="ml-2 form-check-input"
|
|
value="1"
|
|
@if(old("data.{$k}.value", (old('_token') ? false : ($input['value'] ?? null ?? false)))) checked @endif>
|
|
</div>
|
|
@include('modules.input-error', [
|
|
'inputName' => "data.{$k}.value", 'helperId' => Str::slug($input['label']). 'Help' , 'helper' => __('crud.minicrud.visibility_helper')
|
|
])
|
|
</div>
|
|
</div>
|
|
</fieldset>
|
|
</div>
|
|
@break
|
|
@case(intval(App\Enums\InputType::image->value))
|
|
<div class="minicrud-input col-12 mb-3">
|
|
<fieldset class="border h-100 bg-white p-3">
|
|
<legend>{{ $input['label'] }} *</legend>
|
|
<div class="row">
|
|
{{-- PICTURE_ALT --}}
|
|
<div class="col-12 col-md-6 mb-3">
|
|
@include('bo.partials.inputs.varchar', [
|
|
'id' => Str::slug($input['label']) . '-alt',
|
|
'label' => __('crud.minicrud.picture_alt_label'),
|
|
'hasWordCounter' => true,
|
|
'name' => 'data['.$k.'][alt]',
|
|
'value' => old("data.{$k}.alt", $input['alt'] ?? null),
|
|
'required' => is_bool($input['required'] ?? null) ? $input['required'] : true,
|
|
'model' => $model ?? null,
|
|
'helper' => __('crud.minicrud.picture_alt_helper') . '. ' . __('validation.min.string', [
|
|
'attribute' => __('crud.minicrud.picture_alt_label'),
|
|
'min' => 3
|
|
]),
|
|
])
|
|
@include('modules.input-error', [
|
|
'inputName' => "data.{$k}.alt"
|
|
])
|
|
</div>
|
|
{{-- PICTURE_TITLE --}}
|
|
<div class="col-12 col-md-6 mb-3">
|
|
@include('bo.partials.inputs.varchar', [
|
|
'id' => Str::slug($input['label']) . '-title',
|
|
'label' => __('crud.minicrud.picture_title_label'),
|
|
'hasWordCounter' => true,
|
|
'name' => 'data['.$k.'][title]',
|
|
'value' => old("data.{$k}.title", $input['title'] ?? null),
|
|
'required' => is_bool($input['required'] ?? null) ? $input['required'] : true,
|
|
'model' => $model ?? null,
|
|
'helper' => __('crud.minicrud.picture_title_helper') . '. ' . __('validation.min.string', [
|
|
'attribute' => __('crud.minicrud.picture_title_label'),
|
|
'min' => 3
|
|
]),
|
|
])
|
|
@include('modules.input-error', [
|
|
'inputName' => "data.{$k}.title"
|
|
])
|
|
</div>
|
|
{{-- PICTURE --}}
|
|
<div class="col-12 mb-3">
|
|
@include('bo.partials.inputs.varchar-picture', [
|
|
'id' => Str::slug($input['label']),
|
|
'name' => "data[{$k}][value]",
|
|
'width' => $input['dimensions']['width'],
|
|
'height' => $input['dimensions']['height'],
|
|
'model' => $model ?? null,
|
|
'value' => old("data.{$k}.value", $input['value'] ?? null),
|
|
'helper' => __('crud.minicrud.dimensions_must_be', [
|
|
'width' => $input['dimensions']['width'],
|
|
'height' => $input['dimensions']['height'],
|
|
]),
|
|
'required' => is_bool($input['required'] ?? null) ? $input['required'] : true,
|
|
'preview' => true,
|
|
])
|
|
@include('modules.input-error', [
|
|
'inputName' => "data.{$k}.value"
|
|
])
|
|
</div>
|
|
</div>
|
|
</fieldset>
|
|
</div>
|
|
@break
|
|
@case(App\Enums\InputType::email->value)
|
|
<div class="minicrud-input col-12 col-md-6 mb-3">
|
|
<fieldset class="border p-3 mb-3">
|
|
<div class="d-flex flex-row justify-content-start align-items-center mb-2">
|
|
<legend class="w-auto m-0">
|
|
<label for="title{{$k}}" class="col-form-label">
|
|
<b>{{ $input['label'] }}</b>
|
|
</label>
|
|
</legend>
|
|
@if(!empty($input['tooltip']))
|
|
<span class="ms-1" data-bs-toggle="tooltip" data-bs-html="true" title="{{ $input['tooltip'] }}">
|
|
<i class="fa fa-question-circle"></i>
|
|
</span>
|
|
@endif
|
|
</div>
|
|
<div class="row mb-3">
|
|
<div class="form-group">
|
|
<input id="title{{$k}}" type="email" class="form-control" name="data[{{$k}}][value]"
|
|
placeholder="{{ $input['label'] }}" value="{{ old("data.{$k}.value") ?? ($input['value'] ?? '') }}" @if(!isset($input['required']) or $input['required']) required @endif>
|
|
@include('modules.input-error', [
|
|
'inputName' => "data.{$k}.value",
|
|
'helperId' => "{$k}StringHelp",
|
|
'helper' => $input['helper'] ?? '',
|
|
])
|
|
</div>
|
|
</div>
|
|
</fieldset>
|
|
</div>
|
|
@break
|
|
@case(intval(App\Enums\InputType::imageArray->value))
|
|
@case(intval(App\Enums\InputType::labelArray->value))
|
|
@case(intval(App\Enums\InputType::selectEnum->value))
|
|
<div class="minicrud-input col-12 col-md-6 mb-3">
|
|
<fieldset class="border h-100 bg-white p-3">
|
|
<legend>{{ $input['label'] }} *</legend>
|
|
<div class="row">
|
|
<div class="col-12 mb-3">
|
|
@include('bo.partials.inputs.tinyint-enum', [
|
|
'id' => Str::slug($input["label"]),
|
|
'label' => __('crud.minicrud.associated_enum', ['enum' => $input['label']]),
|
|
'name' => "data[{$k}][value]",
|
|
'model' => $model ?? null,
|
|
'value' => old("data.{$k}.value", $input['value'] ?? null),
|
|
'required' => true,
|
|
'associatedModels' => $selectedEnum ?? [],
|
|
'helper' => __('crud.minicrud.enum_select', ['enum' => $input['label']]),
|
|
])
|
|
@include('modules.input-error', [
|
|
'inputName' => "data.{$k}.value"
|
|
])
|
|
</div>
|
|
</div>
|
|
</fieldset>
|
|
</div>
|
|
@break
|
|
|
|
@default
|
|
@php throw new Exception('Input type not handled'); @endphp
|
|
@endswitch
|
|
@endforeach
|
|
|
|
@push('scripts')
|
|
<script nonce="{{ $nonce }}">
|
|
document.addEventListener('DOMContentLoaded', function() {
|
|
let minicrud = document.getElementById('minicrud').closest('form');
|
|
if (minicrud) {
|
|
minicrud.addEventListener('submit', function(e) {
|
|
document.querySelectorAll('input[type="file"]').forEach(function(input) {
|
|
if (input.dataset['old-value'] && !input.value) {
|
|
input.setAttribute('type', 'text');
|
|
input.value = input.getAttribute('old-value');
|
|
}
|
|
});
|
|
});
|
|
}
|
|
});
|
|
</script>
|
|
@endpush
|