From 87971c03eb14829a9b424e4f331b9f668a47a711 Mon Sep 17 00:00:00 2001 From: Diatrex Date: Fri, 27 Nov 2020 14:02:42 +0300 Subject: [PATCH] #2353 admin add fast product --- .../advs-module/resources/css/simple.scss | 7 + .../advs-module/resources/js/simple.js | 44 ++++ .../advs-module/resources/lang/en/button.php | 2 + .../advs-module/resources/lang/en/field.php | 9 + .../advs-module/resources/views/blank.twig | 11 + .../resources/views/form/form.twig | 29 --- .../views/form/partials/default.twig | 10 - .../resources/views/form/partials/fields.twig | 243 ------------------ .../resources/views/form/partials/layout.twig | 27 -- .../resources/views/form/section.twig | 3 - .../advs-module/src/Adv/AdvModel.php | 10 + .../src/Adv/Contract/AdvInterface.php | 2 + .../src/Adv/Form/SimpleAdvFormBuilder.php | 46 ++++ .../src/Adv/Form/SimpleAdvFormHandler.php | 23 ++ .../visiosoft/advs-module/src/AdvsModule.php | 11 +- .../src/AdvsModuleServiceProvider.php | 4 - .../Http/Controller/Admin/AdvsController.php | 12 +- .../src/Http/Controller/AjaxController.php | 1 - 18 files changed, 169 insertions(+), 325 deletions(-) create mode 100644 addons/default/visiosoft/advs-module/resources/css/simple.scss create mode 100644 addons/default/visiosoft/advs-module/resources/js/simple.js create mode 100644 addons/default/visiosoft/advs-module/resources/views/blank.twig delete mode 100644 addons/default/visiosoft/advs-module/resources/views/form/form.twig delete mode 100644 addons/default/visiosoft/advs-module/resources/views/form/partials/default.twig delete mode 100644 addons/default/visiosoft/advs-module/resources/views/form/partials/fields.twig delete mode 100644 addons/default/visiosoft/advs-module/resources/views/form/partials/layout.twig delete mode 100644 addons/default/visiosoft/advs-module/resources/views/form/section.twig create mode 100644 addons/default/visiosoft/advs-module/src/Adv/Form/SimpleAdvFormBuilder.php create mode 100644 addons/default/visiosoft/advs-module/src/Adv/Form/SimpleAdvFormHandler.php diff --git a/addons/default/visiosoft/advs-module/resources/css/simple.scss b/addons/default/visiosoft/advs-module/resources/css/simple.scss new file mode 100644 index 000000000..8109ec8b7 --- /dev/null +++ b/addons/default/visiosoft/advs-module/resources/css/simple.scss @@ -0,0 +1,7 @@ +$cats: 10; + +@for $i from 2 through $cats { + .cat#{$i} { + display: none; + } +} \ No newline at end of file diff --git a/addons/default/visiosoft/advs-module/resources/js/simple.js b/addons/default/visiosoft/advs-module/resources/js/simple.js new file mode 100644 index 000000000..513d17e4e --- /dev/null +++ b/addons/default/visiosoft/advs-module/resources/js/simple.js @@ -0,0 +1,44 @@ +function getCats(i, cat = null, change = false) { + $(`.cat${i}`).show() + $(`#cat${i}`).prop('disabled', true) + + $.get('/class/ajaxCategory', { level: i - 1, cat }) + .then((response) => { + if (response.length) { + const currSelect = $(`#cat${i}`) + currSelect.html(` + + `) + for (let ii = 0; ii < response.length; ii++) { + currSelect.append(` + + `) + } + currSelect.prop('disabled', false) + + if (typeof ad !== 'undefined' && !change) { + if (ad[`cat${i}`]) { + currSelect.val(ad[`cat${i}`]) + getCats(i + 1, ad[`cat${i}`]) + } + } + } else { + $(`.cat${i}`).hide() + } + }) +} +getCats(1); + +for (let i = 1; i <= 10; i++) { + $(`#cat${i}`).on('change', function () { + changeCat(i + 1, this.value) + }) +} + +function changeCat(level, id) { + $(`.cat${level - 1}`) + .nextUntil('.cat10 +').hide() + .find('select').val('') + + getCats(level, id, true) +} diff --git a/addons/default/visiosoft/advs-module/resources/lang/en/button.php b/addons/default/visiosoft/advs-module/resources/lang/en/button.php index 9285e73b8..48657e31a 100644 --- a/addons/default/visiosoft/advs-module/resources/lang/en/button.php +++ b/addons/default/visiosoft/advs-module/resources/lang/en/button.php @@ -2,6 +2,7 @@ return [ 'new_adv' => 'New classified', + 'new_classified' => 'New classified', 'new_category' => 'New Category', 'new_country' => 'New Country', 'new_city' => 'New City', @@ -39,4 +40,5 @@ return [ 'new_option_configuration' => 'New Option configuration', 'create_configurations' => 'Create Configurations', 'replicate' => 'Replicate', + 'fast_create' => 'Fast create', ]; diff --git a/addons/default/visiosoft/advs-module/resources/lang/en/field.php b/addons/default/visiosoft/advs-module/resources/lang/en/field.php index c3ec7489f..43aa321a6 100644 --- a/addons/default/visiosoft/advs-module/resources/lang/en/field.php +++ b/addons/default/visiosoft/advs-module/resources/lang/en/field.php @@ -82,6 +82,15 @@ return [ 'cat7' => [ 'name' => 'Sub Category 6' ], + 'cat8' => [ + 'name' => 'Sub Category 7' + ], + 'cat9' => [ + 'name' => 'Sub Category 8' + ], + 'cat10' => [ + 'name' => 'Sub Category 9' + ], 'currency' => [ 'name' => 'Currency' ], diff --git a/addons/default/visiosoft/advs-module/resources/views/blank.twig b/addons/default/visiosoft/advs-module/resources/views/blank.twig new file mode 100644 index 000000000..79333af1d --- /dev/null +++ b/addons/default/visiosoft/advs-module/resources/views/blank.twig @@ -0,0 +1,11 @@ +{% extends template.layout ?: "theme::layouts/default" %} + +{% block content %} + {{ content|raw }} + + {% if form.mode == 'edit' %} + + {% endif %} +{% endblock %} diff --git a/addons/default/visiosoft/advs-module/resources/views/form/form.twig b/addons/default/visiosoft/advs-module/resources/views/form/form.twig deleted file mode 100644 index 49e0d2d7f..000000000 --- a/addons/default/visiosoft/advs-module/resources/views/form/form.twig +++ /dev/null @@ -1,29 +0,0 @@ -{{ asset_add("scripts.js", "streams::js/form/form.js") }} -{{ asset_add("scripts.js", "streams::js/form/keyboard.js") }} -{{ asset_add("scripts.js", "streams::js/form/translations.js") }} - -{% block content %} - -
- - {{ form_open({ - 'class': 'form ' ~ form.options.class , - 'enctype': 'multipart/form-data', - 'url': form.options.url ?: url_full() - }) }} - - {#{% include "streams::form/partials/controls" with {"position": "top"} %}#} - {% include form.options.get('heading', "streams::form/partials/heading") %} - - {% if (form.model.table()== 'advs_advs') %} - {% include "visiosoft.module.advs::form/partials/layout" %} - {% else %} - {% include "streams::form/partials/layout" %} - {% endif %} - {% include "streams::form/partials/controls" %} - - {{ form_close() }} - -
- -{% endblock %} diff --git a/addons/default/visiosoft/advs-module/resources/views/form/partials/default.twig b/addons/default/visiosoft/advs-module/resources/views/form/partials/default.twig deleted file mode 100644 index 7cc1c540b..000000000 --- a/addons/default/visiosoft/advs-module/resources/views/form/partials/default.twig +++ /dev/null @@ -1,10 +0,0 @@ -
- - {% include "streams::form/partials/header" with {"section": section} %} - -
- - {% include "visiosoft.module.advs::form/partials/fields" with {"fields": form.fields.base().pluck('field_name').all()} %} - -
-
diff --git a/addons/default/visiosoft/advs-module/resources/views/form/partials/fields.twig b/addons/default/visiosoft/advs-module/resources/views/form/partials/fields.twig deleted file mode 100644 index cee0dcd1a..000000000 --- a/addons/default/visiosoft/advs-module/resources/views/form/partials/fields.twig +++ /dev/null @@ -1,243 +0,0 @@ - {% for field in fields %} - {% if (field=='category') %} -
- {% for field in form.fields.translations(field) %} - {{ field.input | raw }} - {% endfor %} -
- {% else %} - {% if (field == 'price' or field == 'currency' ) %} - {% if (field == 'price') %} -
-
- {% for field in form.fields.translations(field) %} - {{ field.render({'form': form})|raw }} - {% endfor %} -
- {% set field = 'currency' %} -
- {% for field in form.fields.translations(field) %} - {{ field.render({'form': form})|raw }} - {% endfor %} -
-
- {% endif %} - {% elseif(field=='country' or field=='city' or field=='district' or field=='neighborhood') %} - {% if(field=='country') %} -
-
-
- {% for field in form.fields.translations(field) %} - {{ field.render({'form': form})|raw }} - {% endfor %} -
- {% set field = 'city' %} -
- {% for field in form.fields.translations(field) %} - {{ field.render({'form': form})|raw }} - {% endfor %} -
- {% set field = 'district' %} -
- {% for field in form.fields.translations(field) %} - {{ field.render({'form': form})|raw }} - {% endfor %} -
- {% set field = 'neighborhood' %} -
- {% for field in form.fields.translations(field) %} - {{ field.render({'form': form})|raw }} - {% endfor %} -
-
-
-
-
-
- {% endif %} - {% else %} -
- {% for field in form.fields.translations(field) %} - {{ field.render({'form': form})|raw }} - {% endfor %} -
- {% endif %} - {% endif%} - {% if (field=='files') %} -
- {% for field in form.fields.translations(field) %} - {{ field.input | raw }} - {% endfor %} -
- {% endif %} - {% endfor %} - - - \ No newline at end of file diff --git a/addons/default/visiosoft/advs-module/resources/views/form/partials/layout.twig b/addons/default/visiosoft/advs-module/resources/views/form/partials/layout.twig deleted file mode 100644 index e6643f08f..000000000 --- a/addons/default/visiosoft/advs-module/resources/views/form/partials/layout.twig +++ /dev/null @@ -1,27 +0,0 @@ -{% if form.fields.empty %} - -
-
- {{ trans("streams::message.no_fields_available") }} -
-
- -{% else %} - - {% if not form.sections.empty() %} - - {% for section in form.sections %} - {% if section.view %} - {% include section.view %} - {% elseif section.html %} - {{ section.html|raw }} - {% else %} - {% include "streams::form/partials/section" %} - {% endif %} - {% endfor %} - - {% else %} - {% include "visiosoft.module.advs::form/partials/default" %} - {% endif %} - -{% endif %} diff --git a/addons/default/visiosoft/advs-module/resources/views/form/section.twig b/addons/default/visiosoft/advs-module/resources/views/form/section.twig deleted file mode 100644 index fa4613fab..000000000 --- a/addons/default/visiosoft/advs-module/resources/views/form/section.twig +++ /dev/null @@ -1,3 +0,0 @@ -a - -{% include "visiosoft.module.advs::form/partials/fields" with {"fields": form.fields.base().where('field_name', '!=', 'price').where('field_name', '!=', 'currency').pluck('field_name').all()} %} \ No newline at end of file diff --git a/addons/default/visiosoft/advs-module/src/Adv/AdvModel.php b/addons/default/visiosoft/advs-module/src/Adv/AdvModel.php index f64bc6ea7..3998afffa 100644 --- a/addons/default/visiosoft/advs-module/src/Adv/AdvModel.php +++ b/addons/default/visiosoft/advs-module/src/Adv/AdvModel.php @@ -395,4 +395,14 @@ class AdvModel extends AdvsAdvsEntryModel implements AdvInterface { return $this->status; } + + public function approve() + { + $defaultAdPublishTime = setting_value('visiosoft.module.advs::default_published_time'); + $this->update([ + 'status' => 'approved', + 'finish_at' => date('Y-m-d H:i:s', strtotime(date('Y-m-d H:i:s') . ' + ' . $defaultAdPublishTime . ' day')), + 'publish_at' => date('Y-m-d H:i:s') + ]); + } } diff --git a/addons/default/visiosoft/advs-module/src/Adv/Contract/AdvInterface.php b/addons/default/visiosoft/advs-module/src/Adv/Contract/AdvInterface.php index c5e4a5940..3c6374283 100644 --- a/addons/default/visiosoft/advs-module/src/Adv/Contract/AdvInterface.php +++ b/addons/default/visiosoft/advs-module/src/Adv/Contract/AdvInterface.php @@ -85,4 +85,6 @@ interface AdvInterface extends EntryInterface public function getProductOptionsValues(); public function getStatus(); + + public function approve(); } diff --git a/addons/default/visiosoft/advs-module/src/Adv/Form/SimpleAdvFormBuilder.php b/addons/default/visiosoft/advs-module/src/Adv/Form/SimpleAdvFormBuilder.php new file mode 100644 index 000000000..0664685b5 --- /dev/null +++ b/addons/default/visiosoft/advs-module/src/Adv/Form/SimpleAdvFormBuilder.php @@ -0,0 +1,46 @@ + [ + 'visiosoft.module.advs::js/simple.js' + ], + 'styles.css' => [ + 'visiosoft.module.advs::css/simple.scss' + ], + ]; + + protected $options = [ + 'wrapper_view' => 'visiosoft.module.advs::blank' + ]; + + protected $buttons = [ + 'cancel', + ]; +} diff --git a/addons/default/visiosoft/advs-module/src/Adv/Form/SimpleAdvFormHandler.php b/addons/default/visiosoft/advs-module/src/Adv/Form/SimpleAdvFormHandler.php new file mode 100644 index 000000000..276d47308 --- /dev/null +++ b/addons/default/visiosoft/advs-module/src/Adv/Form/SimpleAdvFormHandler.php @@ -0,0 +1,23 @@ +canSave()) { + return; + } + + $builder->saveForm(); + + $ad = $builder->getFormEntry(); + if ($ad->status !== 'approved') { + $ad->approve(); + } + + $advRepository->cover_image_update($ad); + } +} diff --git a/addons/default/visiosoft/advs-module/src/AdvsModule.php b/addons/default/visiosoft/advs-module/src/AdvsModule.php index e67849917..50b814e24 100644 --- a/addons/default/visiosoft/advs-module/src/AdvsModule.php +++ b/addons/default/visiosoft/advs-module/src/AdvsModule.php @@ -11,15 +11,12 @@ class AdvsModule extends Module protected $sections = [ 'advs' => [ 'buttons' => [ - 'new_adv' => [ + 'new_classified' => [ 'href' => "/advs/create_adv", ], -// 'new_classified' => [ -// 'href' => "/advs/create_adv", -// ], -// 'new_adv' => [ -// 'text' => 'visiosoft.module.advs::button.fast_create' -// ], + 'new_adv' => [ + 'text' => 'visiosoft.module.advs::button.fast_create' + ], 'extend_all' => [ 'href' => "/advs/extendAll/admin", 'icon' => 'fa fa-calendar', diff --git a/addons/default/visiosoft/advs-module/src/AdvsModuleServiceProvider.php b/addons/default/visiosoft/advs-module/src/AdvsModuleServiceProvider.php index 2596b8fdc..4ee0bf3ea 100644 --- a/addons/default/visiosoft/advs-module/src/AdvsModuleServiceProvider.php +++ b/addons/default/visiosoft/advs-module/src/AdvsModuleServiceProvider.php @@ -241,10 +241,6 @@ class AdvsModuleServiceProvider extends AddonServiceProvider ProductoptionsValueRepositoryInterface::class => ProductoptionsValueRepository::class, ]; - protected $overrides = [ - 'streams::form/form' => 'visiosoft.module.advs::form/form', - ]; - public function boot(AddonCollection $addonCollection, FileModel $fileModel) { $settings_url = [ diff --git a/addons/default/visiosoft/advs-module/src/Http/Controller/Admin/AdvsController.php b/addons/default/visiosoft/advs-module/src/Http/Controller/Admin/AdvsController.php index 455211cc0..2cf4c14a2 100644 --- a/addons/default/visiosoft/advs-module/src/Http/Controller/Admin/AdvsController.php +++ b/addons/default/visiosoft/advs-module/src/Http/Controller/Admin/AdvsController.php @@ -9,6 +9,7 @@ use Illuminate\Http\Request; use Visiosoft\AdvsModule\Adv\Contract\AdvRepositoryInterface; use Visiosoft\AdvsModule\Adv\AdvModel; use Visiosoft\AdvsModule\Adv\Event\ChangedStatusAd; +use Visiosoft\AdvsModule\Adv\Form\SimpleAdvFormBuilder; use Visiosoft\AdvsModule\Adv\Table\AdvTableBuilder; use Anomaly\Streams\Platform\Http\Controller\AdminController; use Visiosoft\AdvsModule\Option\Contract\OptionRepositoryInterface; @@ -54,6 +55,16 @@ class AdvsController extends AdminController return $table->render(); } + public function create(SimpleAdvFormBuilder $form) + { + return $form->render(); + } + + public function edit(SimpleAdvFormBuilder $form, $id) + { + return $form->render($id); + } + public function choose($advId, Request $request, UserRepositoryInterface $users) { if (empty($request->all())) { @@ -67,7 +78,6 @@ class AdvsController extends AdminController public function actions($id, $type, SettingRepositoryInterface $settings, AdvModel $advModel) { - $ad = $advModel->where('advs_advs.id', '=', $id)->first(); $ad->status = $type; diff --git a/addons/default/visiosoft/advs-module/src/Http/Controller/AjaxController.php b/addons/default/visiosoft/advs-module/src/Http/Controller/AjaxController.php index 3f82cc8b6..b3ee086e2 100644 --- a/addons/default/visiosoft/advs-module/src/Http/Controller/AjaxController.php +++ b/addons/default/visiosoft/advs-module/src/Http/Controller/AjaxController.php @@ -42,7 +42,6 @@ class AjaxController extends PublicController public function categories(Request $request) { - $datas = []; if ($request->level == 0) { $datas = CategoryModel::whereNull('parent_category_id')->get(); } else {