From 0066fde2e204589a346230df8bb10ebcefa60f94 Mon Sep 17 00:00:00 2001 From: vedatakd Date: Thu, 16 Jan 2020 19:17:21 +0300 Subject: [PATCH] #670 Cat edit design need to fix --- .../resources/css/edit_category.css | 25 --- .../advs-module/resources/js/edit_cats.js | 198 +++++++++++------- .../advs-module/resources/lang/en/field.php | 3 +- .../advs-module/resources/lang/tr/field.php | 3 +- .../resources/views/new-ad/edit-cat.twig | 138 +++--------- .../advs-module/src/Adv/AdvRepository.php | 16 ++ .../Adv/Contract/AdvRepositoryInterface.php | 2 + .../src/Http/Controller/AjaxController.php | 1 + .../src/Http/Controller/advsController.php | 10 +- 9 files changed, 186 insertions(+), 210 deletions(-) diff --git a/addons/default/visiosoft/advs-module/resources/css/edit_category.css b/addons/default/visiosoft/advs-module/resources/css/edit_category.css index b57b632d8..2f3d078ee 100644 --- a/addons/default/visiosoft/advs-module/resources/css/edit_category.css +++ b/addons/default/visiosoft/advs-module/resources/css/edit_category.css @@ -1,5 +1,4 @@ .cat-select { - width: 100%; border: none; overflow-y: auto } @@ -11,28 +10,4 @@ padding-left: 10px; font-size: 16px; color: #505050; -} - -.cat-item-2 { - display: none; -} - -.cat-item-3 { - display: none; -} - -.cat-item-3 .section { - min-height: 320px; -} - -.btn-1 { - background-color: #00a651; - padding: 5px 50px 7px; - color: #fff; - border: 1px solid #dadada; - margin-right: 5px; -} - -#cat1 span { - font-size: 20px } \ No newline at end of file diff --git a/addons/default/visiosoft/advs-module/resources/js/edit_cats.js b/addons/default/visiosoft/advs-module/resources/js/edit_cats.js index 5863add8c..d3bf04e10 100644 --- a/addons/default/visiosoft/advs-module/resources/js/edit_cats.js +++ b/addons/default/visiosoft/advs-module/resources/js/edit_cats.js @@ -1,74 +1,128 @@ -function getCats(catId, divId, current = null) { - if (divId != "") { - $.ajax({ - type: 'get', - url: '/ajax/getcats/' + divId, - success: function (response) { - if (response.length <= 0) { - $('.cat-item-3').show(); - stop(); - } else { - response.forEach(function (options) { - $(catId).append("").closest('.cat-item-2').show(); - }); - } - } - }).promise().done(function () { - if (current != null) - $(current).val([divId]); - }) - } - -}; - -function hideCats(num) { - var startNo = num; - var endNo = 6; - - while (startNo <= endNo) { - $('#cat' + startNo).html("").closest('.cat-item-2').hide(); - $('.cat-item-3').hide(); - startNo++; - } -}; - - -jQuery(document).ready(function ($) { - $('select[name="cat1"], select[name="cat2"], select[name="cat3"], ' + - 'select[name="cat4"], select[name="cat5"], select[name="cat6"], select[name="cat7"]').on('change', function () { - var all = $(this).val(); - var data_level = $(this).attr('data-level'); - $(this).val(all[all.length - 1]) - divId = $(this).find('option:selected').val(); - if (divId == 0) { - hideCats(parseInt(data_level) + 1); - } - hideCats(parseInt(data_level) + 1); - getCats("#cat" + (parseInt(data_level) + 1), divId); - - +function crud(params, url, type, callback) { + $.ajax({ + type: type, + async: false, + data: params, + url: url, + success: function (response) { + callback(response); + }, }); +} + +var level = 0; +var selected; +var all_categories = {}; +var promiseForCategory = new Promise(function (resolve) { + $.each(categories, function (index, value) { + crud({'level': level, "cat": categories['cat' + level]}, '/class/ajaxCategory', 'POST', function (callback) { + // console.log('cat' + (level + 1), categories['cat' + level], callback) + all_categories['cat' + (level + 1)] = callback; + }) + level++; + }); + resolve(all_categories); }); -jQuery(document).promise().done(function () { - level = 1; - getCats("#cat" + (level + 1), $("#cat" + level).attr('data-value'), "#cat" + level); -}).promise().done(function () { - level = 2; - getCats("#cat" + (level + 1), $("#cat" + level).attr('data-value'), "#cat" + level); -}).promise().done(function () { - level = 3; - getCats("#cat" + (level + 1), $("#cat" + level).attr('data-value'), "#cat" + level); -}).promise().done(function () { - level = 4; - getCats("#cat" + (level + 1), $("#cat" + level).attr('data-value'), "#cat" + level); -}).promise().done(function () { - level = 5; - getCats("#cat" + (level + 1), $("#cat" + level).attr('data-value'), "#cat" + level); -}).promise().done(function () { - level = 6; - getCats("#cat" + (level + 1), $("#cat" + level).attr('data-value'), "#cat" + level); -}).promise().done(function () { - level = 7; - getCats("#cat" + (level + 1), $("#cat" + level).attr('data-value'), "#cat" + level); -}); \ No newline at end of file + +promiseForCategory.then(function (categories_list) { + level = 0; + $.each(categories_list, function (index, value) { + level++; + $('.category-row').append(CategoryField(index, level)); + searchCategoryName(index) + $.each(value, function (index2, value2) { + selected = ""; + if (id_list[index] == value2.id) { + selected = "selected"; + } + $('.' + index).append(""); + }); + }); + $('.category-row').append(completedField()); +}) + +function CategoryField(name, level) { + return '
\n' + + '
\n' + + '
\n' + + ' \n' + + '
' + + ' \n' + + '
\n' + + '
'; +} + +function completedField() { + return '
\n' + + '
\n' + + '
\n' + + continue_message + + '
\n' + + ' \n' + + '
\n' + + '
'; +} + + +$(document).ready(function () { + + $(".cat-select").on('change', function (e) { + if (Object.keys($(this).val()).length > 1) { + $('option[value="' + $(this).val().toString().split(',')[1] + '"]').prop('selected', false); + } + }); + selectedValue() +}); + + +function selectedValue() { + return $('.cat-select').on('change', function () { + var value = $(this).val(); + var all_category_box = $('.category-row').find('.category-box'); + var level = parseInt($(this).attr('data-level')) + 1; + + //Remove right select fields + for (var i = level - 1; i <= all_category_box.length - 1; i++) { + all_category_box[i].remove(); + } + + scroolToSelect(all_category_box) + + crud({"cat": value[0], 'level': level}, '/class/ajaxCategory', 'POST', function (callback) { + if (callback.length <= 0) { + $('.category-row').append(completedField()); + } else { + $('.category-row').append(CategoryField('cat' + level, level)); + $.each(callback, function (index, value) { + $('.cat' + level).append(""); + }); + } + selectedValue().unbind() + searchCategoryName('cat' + level) + return selectedValue(); + }) + }) +} + +function searchCategoryName(name) { + var searchField = $("#searchCategory-" + name); + searchField.unbind(); + searchField.on("keyup", function () { + var value = this.value.toLowerCase().trim(); + $('.' + name + ' option').show().filter(function () { + return $(this).text().toLowerCase().trim().indexOf(value) == -1; + }).hide(); + }); +} + +function scroolToSelect(fields) { + //Scrool Screen + $([document.documentElement, document.body]).animate({ + scrollTop: $(fields[fields.length - 1]).offset().top + 300 + }, 1000); +} 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 4cdb91172..3611256e1 100644 --- a/addons/default/visiosoft/advs-module/resources/lang/en/field.php +++ b/addons/default/visiosoft/advs-module/resources/lang/en/field.php @@ -251,5 +251,6 @@ return [ 'yes' => [ 'name' => 'Yes' ], - "no_location" => "No location is selected." + "no_location" => "No location is selected.", + "continue" => 'Continue' ]; diff --git a/addons/default/visiosoft/advs-module/resources/lang/tr/field.php b/addons/default/visiosoft/advs-module/resources/lang/tr/field.php index 067fddb25..efd510d87 100644 --- a/addons/default/visiosoft/advs-module/resources/lang/tr/field.php +++ b/addons/default/visiosoft/advs-module/resources/lang/tr/field.php @@ -251,5 +251,6 @@ return [ 'yes' => [ 'name' => 'Evet' ], - "no_location" => "Lokasyon eklenmemiş." + "no_location" => "Lokasyon eklenmemiş.", + "continue" => 'Devam Et' ]; diff --git a/addons/default/visiosoft/advs-module/resources/views/new-ad/edit-cat.twig b/addons/default/visiosoft/advs-module/resources/views/new-ad/edit-cat.twig index 239826e7f..328e9fe23 100644 --- a/addons/default/visiosoft/advs-module/resources/views/new-ad/edit-cat.twig +++ b/addons/default/visiosoft/advs-module/resources/views/new-ad/edit-cat.twig @@ -1,115 +1,41 @@ {% extends layout('edit-cat') %} {% block content %} - {% set ad_Detail = adDetail(id) %} -
-
- +
+
+ + + + {{ asset_add("scripts.js", "visiosoft.module.advs::js/edit_cats.js") }} {{ asset_style("visiosoft.module.advs::css/edit_category.css") }} {% endblock %} diff --git a/addons/default/visiosoft/advs-module/src/Adv/AdvRepository.php b/addons/default/visiosoft/advs-module/src/Adv/AdvRepository.php index d956664dd..8569b780f 100644 --- a/addons/default/visiosoft/advs-module/src/Adv/AdvRepository.php +++ b/addons/default/visiosoft/advs-module/src/Adv/AdvRepository.php @@ -363,5 +363,21 @@ class AdvRepository extends EntryRepository implements AdvRepositoryInterface return $ads; } + public function getCategoriesWithAdID($id) + { + $adv = $this->model->find($id); + + if (!is_null($adv)) { + $categories = array(); + foreach ($adv->toArray() as $key => $field) { + if (preg_match('/cat\d/', $key) and !is_null($field)) { + $categories[$key] = $field; + } + } + return $categories; + } + return null; + } + } diff --git a/addons/default/visiosoft/advs-module/src/Adv/Contract/AdvRepositoryInterface.php b/addons/default/visiosoft/advs-module/src/Adv/Contract/AdvRepositoryInterface.php index 13c083a8f..31e038bca 100644 --- a/addons/default/visiosoft/advs-module/src/Adv/Contract/AdvRepositoryInterface.php +++ b/addons/default/visiosoft/advs-module/src/Adv/Contract/AdvRepositoryInterface.php @@ -34,4 +34,6 @@ interface AdvRepositoryInterface extends EntryRepositoryInterface public function latestAds(); + public function getCategoriesWithAdID($id); + } 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 ea82429bd..bf8aac2a5 100644 --- a/addons/default/visiosoft/advs-module/src/Http/Controller/AjaxController.php +++ b/addons/default/visiosoft/advs-module/src/Http/Controller/AjaxController.php @@ -92,4 +92,5 @@ class AjaxController extends PublicController return response()->json(['success' => true, 'content' => $my_advs, 'title' => $page_title]); } + } \ No newline at end of file diff --git a/addons/default/visiosoft/advs-module/src/Http/Controller/advsController.php b/addons/default/visiosoft/advs-module/src/Http/Controller/advsController.php index b5c3aa9c8..c92588e45 100644 --- a/addons/default/visiosoft/advs-module/src/Http/Controller/advsController.php +++ b/addons/default/visiosoft/advs-module/src/Http/Controller/advsController.php @@ -661,9 +661,9 @@ class AdvsController extends PublicController redirect('/login?redirect=' . url()->current())->send(); } - $is_ad = $this->adv_model->userAdv(true)->find($id); + $adv = $this->adv_model->userAdv(true)->find($id); - if (is_null($is_ad)) { + if (is_null($adv)) { abort(403); } @@ -677,14 +677,14 @@ class AdvsController extends PublicController } } - $is_ad->update($params); + $adv->update($params); $this->messages->success(trans('visiosoft.module.advs::message.updated_category_msg')); return redirect('/advs/edit_advs/' . $id); } - $main_cats = $this->category_repository->mainCats(); + $categories = $this->adv_repository->getCategoriesWithAdID($id); - return $this->view->make('visiosoft.module.advs::new-ad/edit-cat', compact('main_cats', 'id')); + return $this->view->make('visiosoft.module.advs::new-ad/edit-cat', compact('id', 'adv','categories')); }