@props([ 'fields' => [], 'currentLocaleCode' => core()->getRequestedLocaleCode(), 'currentChannelCode' => core()->getRequestedChannelCode(), 'fieldsWrapper' => 'values', 'fieldValues' => [], 'channelCurrencies' => [], 'variantFields' => [], ]) @foreach($fields as $field) @php $isLocalizable = $field->isLocaleBasedAttribute(); $isChannelBased = $field->isChannelBasedAttribute(); $isConfigurableAttribute = in_array($field->code, $variantFields); /** This only changes the value in the current page as we are not saving this attribute */ if ($isConfigurableAttribute) { $field->is_required = true; } $value = ''; $formattedoptions = []; $fieldName = $fieldsWrapper . $field->getAttributeInputFieldName($currentChannelCode, $currentLocaleCode); $flatFieldName = $fieldsWrapper . $field->getFlatAttributeName($currentChannelCode, $currentLocaleCode); if ($fieldValues) { $value = $field->getValueFromProductValues($fieldValues, $currentChannelCode, $currentLocaleCode); } $value = old($flatFieldName) ?? $value; $fieldLabel = $field->translate($currentLocaleCode)['name'] ?? ''; $fieldLabel = empty($fieldLabel) ? '['.$field->code.']' : $fieldLabel; $fieldType = $field->type; @endphp {!! view_render_event('unopim.admin.products.dynamic-attribute-fields.field.before', ['field' => $field]) !!}
{{ $fieldLabel }} @if ($field->is_required || $isConfigurableAttribute) @endif
@if ($isChannelBased) {{ "{$currentChannelCode}" }} @endif @if ($isLocalizable) {{ "{$currentLocaleCode}" }} @endif
{!! view_render_event('unopim.admin.products.dynamic-attribute-fields.control.'.$fieldType.'.before', ['field' => $field, 'value' => $value, 'fieldName' => $fieldName]) !!} @switch ($fieldType) @case ('checkbox') @if (! empty($value)) @endIf @php $fieldName = $fieldName.'[]'; $selectedValue = ! empty($value) && is_string($value) ? explode(',', $value) : $value; $selectedValue = empty($selectedValue) || ! is_array($selectedValue) ? [] : $selectedValue; @endphp @foreach ($field->options as $option)
@endforeach @break @case ('boolean') @break @case('image') @php if (is_array($value)) { $value = current($value); } $savedImage = ! empty($value) ? [ 'id' => 0, 'url' => Storage::url($value), 'value' => $value, ] : []; @endphp @if (! empty($value)) @endIf @break @case('gallery') @php $savedImages = ! empty($value) ? array_map(function ($image, $index) { return [ 'id' => uniqid(), 'url' => Storage::url($image), 'value' => $image, ]; }, (array)$value, array_keys((array)$value)) : []; @endphp @if (! empty($value)) @endIf @break @case('file') @php $fileName = last(explode('/', $value)); $fileName = strlen($fileName) > 20 ? substr($fileName, 0, 20) . '...' : $fileName; $savedFile = ! empty($value) ? [ 'id' => 0, 'url' => Storage::url($value), 'value' => $value, 'fileName' => $fileName, ] : []; @endphp @if (! empty($value)) @endIf @break @case('price') @php $value = !is_array($value) && !empty($value) ? json_decode($value, true) : $value; @endphp
@foreach ($channelCurrencies as $currency) @php $currencyValue = $value[$currency->code] ?? ''; @endphp
{{ core()->currencySymbol($currency->code) }}
@endForeach
@break @case('multiselect') @php $value = str_contains($value, ',') ? explode(',', $value) : (empty($value) ? '' : [$value]); @endphp @case('select') @php $selectedValue = []; foreach ($field->options->whereIn('code', $value) as $option) { $translatedOptionLabel = $option->translate($currentLocaleCode)?->label; $selectedValue[] = [ 'id' => $option->id, 'code' => $option->code, 'label' => ! empty($translatedOptionLabel) ? $translatedOptionLabel : "[{$option->code}]", ]; } if ('select' == $fieldType) { $selectedValue = ! empty($selectedValue[0]) ? $selectedValue[0] : $selectedValue; } $value = ! empty($selectedValue) ? json_encode($selectedValue) : ''; @endphp @default @endswitch @php if ($isConfigurableAttribute) { $field->is_required = $field->getOriginal('is_required'); } @endphp @if ($field->is_unique) @endIf {!! view_render_event('unopim.admin.products.dynamic-attribute-fields.control.'.$fieldType.'.after', ['field' => $field, 'value' => $value, 'fieldName' => $fieldName]) !!}
{!! view_render_event('unopim.admin.products.dynamic-attribute-fields.field.after', ['fieldType' => $fieldType]) !!} @endforeach