mirror of
https://github.com/openclassify/openclassify.git
synced 2026-01-11 18:01:10 -06:00
#670 Cat edit design need to fix
This commit is contained in:
parent
d4eb3f74d6
commit
0066fde2e2
@ -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
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
|
||||
@ -251,5 +251,6 @@ return [
|
||||
'yes' => [
|
||||
'name' => 'Yes'
|
||||
],
|
||||
"no_location" => "No location is selected."
|
||||
"no_location" => "No location is selected.",
|
||||
"continue" => 'Continue'
|
||||
];
|
||||
|
||||
@ -251,5 +251,6 @@ return [
|
||||
'yes' => [
|
||||
'name' => 'Evet'
|
||||
],
|
||||
"no_location" => "Lokasyon eklenmemiş."
|
||||
"no_location" => "Lokasyon eklenmemiş.",
|
||||
"continue" => 'Devam Et'
|
||||
];
|
||||
|
||||
@ -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(/"/g, '"'));
|
||||
var id_list = JSON.parse("{{ categories|json_encode() }}".replace(/"/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 %}
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -34,4 +34,6 @@ interface AdvRepositoryInterface extends EntryRepositoryInterface
|
||||
|
||||
public function latestAds();
|
||||
|
||||
public function getCategoriesWithAdID($id);
|
||||
|
||||
}
|
||||
|
||||
@ -92,4 +92,5 @@ class AjaxController extends PublicController
|
||||
return response()->json(['success' => true, 'content' => $my_advs, 'title' => $page_title]);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@ -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'));
|
||||
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user