Merge pull request #237 from openclassify/vedat

#670 Cat edit design need to fix
This commit is contained in:
Fatih Alp 2020-01-16 21:31:16 +03:00 committed by GitHub
commit cba8c3b8bb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 186 additions and 210 deletions

View File

@ -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
}

View File

@ -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("<option value=" + options.id + ">" +
options.name + " </option>").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);
});
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("<option value='" + value2.id + "'" + selected + ">" + value2.name + "</option>");
});
});
$('.category-row').append(completedField());
})
function CategoryField(name, level) {
return '<div class="col-12 col-md-3 category-box p-2" data-level="' + level + '">\n' +
' <div class="col-12 border p-0">\n' +
'<div class="col-12 p-0">\n' +
' <input type="text" id="searchCategory-' + name + '" class="form-control"\n' +
' placeholder="' + search + '">\n' +
'</div>' +
' <select name="' + name + '" class="cat-select w-100 ' + name + '" data-level="'
+ level + '" multiple>\n' +
' </select>\n' +
' </div>\n' +
' </div>';
}
function completedField() {
return '<div class="col-12 col-md-3 category-box py-5 px-2">\n' +
' <div class="col-12 p-0 text-center">\n' +
' <h5>\n' +
continue_message +
' </h5>\n' +
' <button type="submit" name="action" value="update" class="btn btn-primary btn-lg w-100">\n' +
continue_btn +
' </button>\n' +
' </div>\n' +
' </div>';
}
$(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("<option value='" + value.id + "'" + selected + ">" + value.name + "</option>");
});
}
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);
}

View File

@ -249,5 +249,6 @@ return [
'yes' => [
'name' => 'Yes'
],
"no_location" => "No location is selected."
"no_location" => "No location is selected.",
"continue" => 'Continue'
];

View File

@ -251,5 +251,6 @@ return [
'yes' => [
'name' => 'Evet'
],
"no_location" => "Lokasyon eklenmemiş."
"no_location" => "Lokasyon eklenmemiş.",
"continue" => 'Devam Et'
];

View File

@ -1,115 +1,41 @@
{% extends layout('edit-cat') %}
{% block content %}
{% set ad_Detail = adDetail(id) %}
<section id="main" class="clearfix ad-post-page">
<div class="container">
<div class="breadcrumb-section">
<ol class="breadcrumb">
<li><a href="/">{{ trans('visiosoft.module.advs::field.home') }}</a></li>
<li>{{ ad_Detail.name }}</li>
<li>{{ trans('visiosoft.module.advs::field.edit_category') }}</li>
</ol>
<h2 class="title">{{ trans('visiosoft.module.advs::field.home') }}</h2>
</div>
<div class="container">
<nav aria-label="breadcrumb">
<ol class="breadcrumb">
<li class="breadcrumb-item text-primary">
{{ trans('visiosoft.module.advs::field.home') }}
</li>
<li class="breadcrumb-item text-primary">
{{ adv.name }}
</li>
<li class="breadcrumb-item text-primary">
<i class="fas fa-pencil-alt"></i>
<b>
{{ trans('visiosoft.module.advs::field.edit_category') }}
</b>
</li>
<div id="ad-cat-section">
<form action="{{ url_route('adv::edit_category',[id]) }}" method="post">
<input type="hidden" name="id" value="{{ id }}">
<div class="row category-tab">
<div class="col-md-3 col-sm-6 cat-item">
<div class="section cat-option select-category post-option">
<h4>{{ trans('visiosoft.module.advs::field.select_a_category') }}</h4>
<ul role="tablist">
<select class="cat-select" name="cat1" id="cat1" data-level="1" data-value="{{ ad_Detail.cat1 }}" multiple id="">
{% for cat in main_cats %}
<option value="{{ cat.id }}">
<span>{{ cat.name }}</span>
</option>
{% endfor %}
</select>
</ul>
</div>
</div>
<div class="col-md-3 col-sm-6 cat-item cat-item-2">
<div class="section cat-option select-category post-option">
<h4>{{ trans('visiosoft.module.advs::field.select_a_sub_category') }}</h4>
<ul role="tablist">
<select class="cat-select" name="cat2" id="cat2" data-level="3" data-value="{{ ad_Detail.cat2 }}" multiple id="">
</ol>
</nav>
</select>
</ul>
</div>
</div>
<div class="col-md-3 col-sm-6 cat-item cat-item-2">
<div class="section cat-option select-category post-option">
<h4>{{ trans('visiosoft.module.advs::field.select_a_sub_category') }}</h4>
<ul role="tablist">
<select class="cat-select" name="cat3" id="cat3" data-level="3" data-value="{{ ad_Detail.cat3 }}" multiple id="">
</select>
</ul>
</div>
</div>
<div class="col-md-3 col-sm-6 cat-item cat-item-2">
<div class="section cat-option select-category post-option">
<h4>{{ trans('visiosoft.module.advs::field.select_a_sub_category') }}</h4>
<ul role="tablist">
<select class="cat-select" name="cat4" id="cat4" data-level="4" data-value="{{ ad_Detail.cat4 }}" multiple id="">
</select>
</ul>
</div>
</div>
<div class="col-md-3 col-sm-6 cat-item cat-item-2">
<div class="section cat-option select-category post-option">
<h4>{{ trans('visiosoft.module.advs::field.select_a_sub_category') }}</h4>
<ul role="tablist">
<select class="cat-select" name="cat5" id="cat5" data-level="5" data-value="{{ ad_Detail.cat5 }}" multiple id="">
</select>
</ul>
</div>
</div>
<div class="col-md-3 col-sm-6 cat-item cat-item-2">
<div class="section cat-option select-category post-option">
<h4>{{ trans('visiosoft.module.advs::field.select_a_sub_category') }}</h4>
<ul role="tablist">
<select class="cat-select" name="cat6" id="cat6" data-level="6" data-value="{{ ad_Detail.cat6 }}" multiple id="">
</select>
</ul>
</div>
</div>
<div class="col-md-3 col-sm-6 cat-item cat-item-2">
<div class="section cat-option select-category post-option">
<h4>{{ trans('visiosoft.module.advs::field.select_a_sub_category') }}</h4>
<ul role="tablist">
<select class="cat-select" name="cat7" id="cat7" data-level="7" data-value="{{ ad_Detail.cat7 }}" multiple id="">
</select>
</ul>
</div>
</div>
<div class="col-md-3 col-sm-6 cat-item cat-item-3">
<div class="section">
<h3>{{ trans('visiosoft.module.advs::message.update_category_msg') }}</h3>
<button type="submit" name="action" value="update" class="btn btn-success"><i
class="fa fa-save"></i> {{ trans('visiosoft.module.advs::button.update_category.name') }}
</button>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-8 col-sm-offset-2 text-center">
{{ blocks('center-add-ad-banner-area') }}
</div>
</div>
</form>
</div>
<div class="section">
<form action="{{ url_route('adv::edit_category',[id]) }}" method="post">
<input type="hidden" name="id" value="{{ id }}">
<div class="row category-row"></div>
</form>
</div>
</section>
</div>
<script>
var categories = JSON.parse("{{ categories|json_encode() }}".replace(/&quot;/g, '"'));
var id_list = JSON.parse("{{ categories|json_encode() }}".replace(/&quot;/g, '"'));
var continue_btn = "{{ trans('visiosoft.module.advs::field.continue') }}";
var continue_message = "{{ trans('visiosoft.module.advs::field.post_free_ad') }}";
var search = "{{ trans('visiosoft.module.advs::field.search') }}";
</script>
{{ asset_add("scripts.js", "visiosoft.module.advs::js/edit_cats.js") }}
{{ asset_style("visiosoft.module.advs::css/edit_category.css") }}
{% endblock %}

View File

@ -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;
}
}

View File

@ -34,4 +34,6 @@ interface AdvRepositoryInterface extends EntryRepositoryInterface
public function latestAds();
public function getCategoriesWithAdID($id);
}

View File

@ -92,4 +92,5 @@ class AjaxController extends PublicController
return response()->json(['success' => true, 'content' => $my_advs, 'title' => $page_title]);
}
}

View File

@ -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'));
}