From 9bb9ae5ce765741c162937d9826c3be5382896c1 Mon Sep 17 00:00:00 2001 From: rahul shukla Date: Wed, 26 Dec 2018 14:46:27 +0530 Subject: [PATCH] configuration changes --- .../Controllers/ConfigurationController.php | 2 +- .../views/configuration/field-type.blade.php | 16 +- packages/Webkul/Core/src/Core.php | 14 +- .../src/Repositories/CoreConfigRepository.php | 154 ++++++++++-------- packages/Webkul/Ui/webpack.mix.js | 4 +- 5 files changed, 105 insertions(+), 85 deletions(-) diff --git a/packages/Webkul/Admin/src/Http/Controllers/ConfigurationController.php b/packages/Webkul/Admin/src/Http/Controllers/ConfigurationController.php index e3461018d..5b21605da 100644 --- a/packages/Webkul/Admin/src/Http/Controllers/ConfigurationController.php +++ b/packages/Webkul/Admin/src/Http/Controllers/ConfigurationController.php @@ -82,7 +82,7 @@ class ConfigurationController extends Controller $slugs = $this->getDefaultConfigSlugs(); if(count($slugs)) { - return redirect()->route('admin.configuration.index', $slugs); + return redirect()->route('admin.configuration.index', $slugs); } return view($this->_config['view'], ['config' => $this->configTree]); 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 bb32a82ff..221ec19b3 100644 --- a/packages/Webkul/Admin/src/Resources/views/configuration/field-type.blade.php +++ b/packages/Webkul/Admin/src/Resources/views/configuration/field-type.blade.php @@ -10,15 +10,15 @@ $key = $item['key']; $key = explode(".", $key); - array_shift($key); $firstField = current($key); $secondField = next($key); - $key = implode(".", $key); + $thirdField = end($key); + + $name = $item['key'] . '.' . $field['name']; - $name = $key . '.' . $field['name']; ?> -
+
\ No newline at end of file diff --git a/packages/Webkul/Core/src/Core.php b/packages/Webkul/Core/src/Core.php index 0e694b17d..02cc928b9 100644 --- a/packages/Webkul/Core/src/Core.php +++ b/packages/Webkul/Core/src/Core.php @@ -530,8 +530,13 @@ class Core } } - if(!$coreConfigValue) + if (!$coreConfigValue) { + $fields = explode(".", $field); + array_shift($fields); + $field = implode(".", $fields); + return Config::get($field); + } return $coreConfigValue->value; } @@ -677,12 +682,7 @@ class Core if (isset($coreData['fields'])) { foreach ($coreData['fields'] as $field) { - $key = $coreData['key']; - $key = explode(".", $key); - array_shift($key); - - $key = implode(".", $key); - $name = $key . '.' . $field['name']; + $name = $coreData['key'] . '.' . $field['name']; if ($name == $fieldName ) { return $field; diff --git a/packages/Webkul/Core/src/Repositories/CoreConfigRepository.php b/packages/Webkul/Core/src/Repositories/CoreConfigRepository.php index fb9de9779..7a8852f81 100644 --- a/packages/Webkul/Core/src/Repositories/CoreConfigRepository.php +++ b/packages/Webkul/Core/src/Repositories/CoreConfigRepository.php @@ -38,83 +38,103 @@ class CoreConfigRepository extends Repository unset($data['channel']); } - foreach ($data as $method => $value) - { - foreach ($value as $key => $formData) - { - foreach (array_keys($formData) as $title) + foreach ($data as $method => $fieldData) { + $recurssiveData = $this->recuressiveArray($fieldData , $method); + + foreach ($recurssiveData as $fieldName => $value) { + $field = core()->getConfigField($fieldName); + + $channel_based = false; + $locale_based = false; + + if (isset($field['channel_based']) && $field['channel_based']) { + $channel_based = true; + } + + if (isset($field['locale_based']) && $field['locale_based']) { + $locale_based = true; + } + + if (isset($field['channel_based']) && $field['channel_based']) { - $fieldName = $method . '.' . $key . '.' .$title; - $value = $formData[$title]; - $field = core()->getConfigField($fieldName); - - $channel_based = false; - $locale_based = false; - - if (isset($field['channel_based']) && $field['channel_based']) { - $channel_based = true; + if (isset($field['locale_based']) && $field['locale_based']) + { + $coreConfigValue = $this->model + ->where('code', $fieldName) + ->where('locale_code', $locale) + ->where('channel_code', $channel) + ->get(); } - - if (isset($field['locale_based']) && $field['locale_based']) { - $locale_based = true; + else + { + $coreConfigValue = $this->model + ->where('code', $fieldName) + ->where('channel_code', $channel) + ->get(); } - - if (isset($field['channel_based']) && $field['channel_based']) + } else + { + if (isset($field['locale_based']) && $field['locale_based']) { - if (isset($field['locale_based']) && $field['locale_based']) - { - $coreConfigValue = $this->model - ->where('code', $fieldName) - ->where('locale_code', $locale) - ->where('channel_code', $channel) - ->get(); - } - else - { - $coreConfigValue = $this->model - ->where('code', $fieldName) - ->where('channel_code', $channel) - ->get(); - } - } else - { - if (isset($field['locale_based']) && $field['locale_based']) - { - $coreConfigValue = $this->model - ->where('code', $fieldName) - ->where('locale_code', $locale) - ->get(); - } - else - { - $coreConfigValue = $this->model - ->where('code', $fieldName) - ->get(); - } + $coreConfigValue = $this->model + ->where('code', $fieldName) + ->where('locale_code', $locale) + ->get(); } - - if (!count($coreConfigValue) > 0) + else { - $this->model->create([ - 'code' => $fieldName, - 'value' => $value, - 'locale_code' => $locale_based ? $locale : null, - 'channel_code' => $channel_based ? $channel : null - ]); - } else - { - $updataData['code'] = $fieldName; - $updataData['value'] = $value; - $updataData['locale_code'] = $locale_based ? $locale : null; - $updataData['channel_code'] = $channel_based ? $channel : null; + $coreConfigValue = $this->model + ->where('code', $fieldName) + ->get(); + } + } - foreach ($coreConfigValue as $coreConfig) - { - $coreConfig->update($updataData); - } + if (!count($coreConfigValue) > 0) + { + $this->model->create([ + 'code' => $fieldName, + 'value' => $value, + 'locale_code' => $locale_based ? $locale : null, + 'channel_code' => $channel_based ? $channel : null + ]); + } else + { + $updataData['code'] = $fieldName; + $updataData['value'] = $value; + $updataData['locale_code'] = $locale_based ? $locale : null; + $updataData['channel_code'] = $channel_based ? $channel : null; + + foreach ($coreConfigValue as $coreConfig) + { + $coreConfig->update($updataData); } } } } } + + /** + * @param array $formData + * @param string $method + * @return array + */ + public function recuressiveArray(array $formData, $method) { + static $data =[]; + foreach ($formData as $form => $formValue) { + $value = $method . '.' . $form; + if (is_array($formValue)) { + $this->recuressiveArray($formValue, $value); + } else { + $data[$value] = $formValue; + } + } + + return $data; + } + + + + + + } \ No newline at end of file diff --git a/packages/Webkul/Ui/webpack.mix.js b/packages/Webkul/Ui/webpack.mix.js index 54dca326b..62c9ba3ef 100644 --- a/packages/Webkul/Ui/webpack.mix.js +++ b/packages/Webkul/Ui/webpack.mix.js @@ -1,8 +1,8 @@ const { mix } = require("laravel-mix"); require("laravel-mix-merge-manifest"); -// var publicPath = 'publishable/assets'; -var publicPath = "../../../public/vendor/webkul/ui/assets"; +var publicPath = 'publishable/assets'; +// var publicPath = "../../../public/vendor/webkul/ui/assets"; mix.setPublicPath(publicPath).mergeManifest(); mix.disableNotifications();