diff --git a/packages/Webkul/Admin/src/Resources/views/configuration/dependent-field-type.blade.php b/packages/Webkul/Admin/src/Resources/views/configuration/dependent-field-type.blade.php
new file mode 100644
index 000000000..2e48f43c1
--- /dev/null
+++ b/packages/Webkul/Admin/src/Resources/views/configuration/dependent-field-type.blade.php
@@ -0,0 +1,125 @@
+@php
+ $dependField = $coreConfigRepository->getDependentFieldOrValue($field);
+ $dependValue = $coreConfigRepository->getDependentFieldOrValue($field, 'value');
+
+ $dependNameKey = $item['key'] . '.' . $dependField;
+ $dependName = $coreConfigRepository->getNameField($dependNameKey);
+
+ $field['options'] = $coreConfigRepository->getDependentFieldOptions($field, $value);
+
+ $selectedOption = core()->getConfigData($nameKey, $channel, $locale) ?? '';
+ $dependSelectedOption = core()->getConfigData($dependNameKey, $channel, $locale) ?? '';
+@endphp
+
+@if (strpos($field['validation'], 'required_if') !== false)
+
+@else
+
+@endif
+
+@push('scripts')
+
+
+
+@endpush
\ No newline at end of file
diff --git a/packages/Webkul/Admin/src/Resources/views/configuration/field-type.blade.php b/packages/Webkul/Admin/src/Resources/views/configuration/field-type.blade.php
index 5b0599d10..1d7da27ef 100755
--- a/packages/Webkul/Admin/src/Resources/views/configuration/field-type.blade.php
+++ b/packages/Webkul/Admin/src/Resources/views/configuration/field-type.blade.php
@@ -1,490 +1,307 @@
-getNameField($name);
+ $name = $coreConfigRepository->getNameField($nameKey);
+
+ $value = $coreConfigRepository->getValueByRepository($field);
$validations = $coreConfigRepository->getValidations($field);
$channelLocaleInfo = $coreConfigRepository->getChannelLocaleInfo($field, $channel, $locale);
+@endphp
- if (isset($field['repository'])) {
- $temp = explode("@", $field['repository']);
- $class = app(current($temp));
- $method = end($temp);
- $value = $class->$method();
- }
+@if ($field['type'] == 'depends')
- $key = $item['key'];
- $key = explode(".", $key);
- $firstField = current($key);
- $secondField = next($key);
- $thirdField = end($key);
-?>
+ @include('admin::configuration.dependent-field-type')
- @if ($field['type'] == 'depends')
+@else
+
-
- $dependValue = end($depends);
+ {{ trans($field['title']) }}
- if (isset($value) && $value) {
- $i = 0;
- foreach ($value as $key => $result) {
- $data['title'] = $result;
- $data['value'] = $key;
- $options[$i] = $data;
- $i++;
- }
- $field['options'] = $options;
- }
+
{{ $channelLocaleInfo }}
- if (! isset($field['options'])) {
- $field['options'] = '';
- }
-
- $selectedOption = core()->getConfigData($name, $channel, $locale) ?? '';
- $dependSelectedOption = core()->getConfigData(implode('.', [$firstField, $secondField, $thirdField, $dependField]), $channel, $locale) ?? '';
- ?>
-
- @if (strpos($field['validation'], 'required_if') !== false)
-
- @else
-
- @endif
-
- @else
-
-
-
-
-
- @if ($field['type'] == 'text')
-
-
-
- @elseif ($field['type'] == 'password')
-
-
-
- @elseif ($field['type'] == 'number')
-
-
-
- @elseif ($field['type'] == 'color')
-
-
-
-
- @elseif ($field['type'] == 'textarea')
-
-
-
- @elseif ($field['type'] == 'select')
-
-
-
- @elseif ($field['type'] == 'multiselect')
-
-
-
- @elseif ($field['type'] == 'country')
-
- getConfigData($name, $channel, $locale) ?? '';
- ?>
-
-
-
- @elseif ($field['type'] == 'state')
-
- getConfigData($name, $channel, $locale) ?? '';
- ?>
-
-
-
- @elseif ($field['type'] == 'boolean')
-
- getConfigData($name, $channel, $locale) ?? (isset($field['default_value']) ? $field['default_value'] : ''); ?>
-
-
-
- @elseif ($field['type'] == 'image')
-
- getConfigData($name, $channel, $locale));
- $result = core()->getConfigData($name, $channel, $locale);
- ?>
-
- @if ($result)
-
-
-
- @endif
-
-
-
- @if ($result)
-
-
-
-
-
- {{ __('admin::app.configuration.delete') }}
-
-
- @endif
-
- @elseif ($field['type'] == 'file')
-
- getConfigData($name, $channel, $locale);
- $src = explode("/", $result);
- $path = end($src);
- ?>
-
- @if ($result)
-
-
-
- @endif
-
-
-
- @if ($result)
-
-
-
-
-
- {{ __('admin::app.configuration.delete') }}
-
-
- @endif
-
- @endif
-
- @if (isset($field['info']))
-
{{ trans($field['info']) }}
- @endif
-
-
- @if ($field['type'] == 'multiselect')
- @{{ errors.first('{!! $firstField !!}[{!! $secondField !!}][{!! $thirdField !!}][{!! $field['name'] !!}][]') }}
- @else
- @{{ errors.first('{!! $firstField !!}[{!! $secondField !!}][{!! $thirdField !!}][{!! $field['name'] !!}]') }}
- @endif
-
-
-
-
- @endif
-
-@push('scripts')
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+@endif
-
- data: function() {
- return {
- isRequire: false,
- isVisible: false,
- savedValue: "",
- }
- },
+
+
+
+
+
+ @endif
@endpush
diff --git a/packages/Webkul/Core/src/Repositories/CoreConfigRepository.php b/packages/Webkul/Core/src/Repositories/CoreConfigRepository.php
index 571612619..7037935de 100755
--- a/packages/Webkul/Core/src/Repositories/CoreConfigRepository.php
+++ b/packages/Webkul/Core/src/Repositories/CoreConfigRepository.php
@@ -5,11 +5,12 @@ namespace Webkul\Core\Repositories;
use Webkul\Core\Eloquent\Repository;
use Webkul\Core\Contracts\CoreConfig;
use Illuminate\Support\Facades\Storage;
+use Webkul\Core\Traits\CoreConfigField;
use Prettus\Repository\Traits\CacheableRepository;
class CoreConfigRepository extends Repository
{
- use CacheableRepository;
+ use CoreConfigField, CacheableRepository;
/**
* Specify model class name.
@@ -166,37 +167,4 @@ class CoreConfigRepository extends Repository
return $return;
}
-
- public function getNameField($key)
- {
- $nameField = '';
-
- foreach (explode('.', $key) as $key => $field) {
- $nameField .= $key === 0 ? $field : '[' . $field . ']';
- }
-
- return $nameField;
- }
-
- public function getValidations($field)
- {
- return isset($field['validation'])
- ? $field['validation']
- : '';
- }
-
- public function getChannelLocaleInfo($field, $channel, $locale)
- {
- $info = [];
-
- if (isset($field['channel_based']) && $field['channel_based']) {
- $info[] = $channel;
- }
-
- if (isset($field['locale_based']) && $field['locale_based']) {
- $info[] = $locale;
- }
-
- return ! empty($info) ? '[' . implode(' - ', $info) . ']' : '';
- }
}
diff --git a/packages/Webkul/Core/src/Traits/CoreConfigField.php b/packages/Webkul/Core/src/Traits/CoreConfigField.php
new file mode 100644
index 000000000..e13503a0e
--- /dev/null
+++ b/packages/Webkul/Core/src/Traits/CoreConfigField.php
@@ -0,0 +1,81 @@
+ $field) {
+ $nameField .= $key === 0 ? $field : '[' . $field . ']';
+ }
+
+ return $nameField;
+ }
+
+ public function getValidations($field)
+ {
+ return isset($field['validation'])
+ ? $field['validation']
+ : '';
+ }
+
+ public function getValueByRepository($field)
+ {
+ if (isset($field['repository'])) {
+ $temp = explode("@", $field['repository']);
+ $class = app(current($temp));
+ $method = end($temp);
+ return $class->$method();
+ }
+
+ return null;
+ }
+
+ public function getDependentFieldOrValue($field, $fieldOrValue = 'field')
+ {
+ $depends = explode(":", $field['depend']);
+
+ return $fieldOrValue === 'field'
+ ? current($depends) : end($depends);
+ }
+
+ public function getDependentFieldOptions($field, $dependentValues)
+ {
+ $fieldOptions = null;
+
+ if ($dependentValues) {
+ $i = 0;
+
+ foreach ($dependentValues as $key => $result) {
+ $data['title'] = $result;
+ $data['value'] = $key;
+ $options[$i] = $data;
+ $i++;
+ }
+
+ $fieldOptions = $options;
+ }
+
+ return ! isset($field['options'])
+ ? ''
+ : $fieldOptions;
+ }
+
+ public function getChannelLocaleInfo($field, $channel, $locale)
+ {
+ $info = [];
+
+ if (isset($field['channel_based']) && $field['channel_based']) {
+ $info[] = $channel;
+ }
+
+ if (isset($field['locale_based']) && $field['locale_based']) {
+ $info[] = $locale;
+ }
+
+ return ! empty($info) ? '[' . implode(' - ', $info) . ']' : '';
+ }
+}
\ No newline at end of file