mirror of
https://github.com/openclassify/openclassify.git
synced 2026-01-11 18:01:10 -06:00
Merge pull request #360 from openclassify/dia
#858 ilanlar toplu süre uzatma
This commit is contained in:
commit
5df4567e66
@ -26,4 +26,5 @@ return [
|
||||
'delete_author_error' => 'You cannot delete a post that does not belong to you',
|
||||
'success_delete' => 'Ad Deleted',
|
||||
'pending_ad_status' => 'Your ad is pending approval by the Editor.',
|
||||
'extended' => ':number ad(s) has been extended successfully.',
|
||||
];
|
||||
|
||||
@ -118,6 +118,8 @@ class AdvRepository extends EntryRepository implements AdvRepositoryInterface
|
||||
if (!empty($param['date'])) {
|
||||
if ($param['date'] === 'day') {
|
||||
$query = $query->where('advs_advs.publish_at', '>=', Carbon::now()->subDay());
|
||||
} elseif ($param['date'] === 'two_days') {
|
||||
$query = $query->where('advs_advs.publish_at', '>=', Carbon::now()->subDays(2));
|
||||
} elseif ($param['date'] === 'week') {
|
||||
$query = $query->where('advs_advs.publish_at', '>=', Carbon::now()->subWeek());
|
||||
} elseif ($param['date'] === 'month') {
|
||||
@ -133,6 +135,9 @@ class AdvRepository extends EntryRepository implements AdvRepositoryInterface
|
||||
if (!empty($param['map']) && $param['map'] == true) {
|
||||
$query = $query->whereNotNull('map_Val');
|
||||
}
|
||||
if (!empty($param['get_ads']) && $param['get_ads'] == true) {
|
||||
$query = $query->where('is_get_adv', 1);
|
||||
}
|
||||
|
||||
foreach ($param as $para => $value) {
|
||||
if (substr($para, 0, 3) === "cf_") {
|
||||
@ -175,6 +180,9 @@ class AdvRepository extends EntryRepository implements AdvRepositoryInterface
|
||||
}
|
||||
if (!empty($param['sort_by'])) {
|
||||
switch ($param['sort_by']) {
|
||||
case "popular":
|
||||
$query = $query->orderBy('advs_advs.count_show_ad', 'desc');
|
||||
break;
|
||||
case "sort_price_up":
|
||||
$query = $query->orderBy('advs_advs.price', 'desc');
|
||||
break;
|
||||
@ -355,5 +363,18 @@ class AdvRepository extends EntryRepository implements AdvRepositoryInterface
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
public function extendAds($allAds, $isAdmin = false)
|
||||
{
|
||||
if (!is_numeric($allAds)) {
|
||||
if ($isAdmin && auth()->user()->hasRole('admin')) {
|
||||
$advs = $this->newQuery();
|
||||
} else {
|
||||
$advs = $this->newQuery()->where('created_by_id', auth()->id());
|
||||
}
|
||||
} else {
|
||||
$advs = $this->newQuery()->where('id', $allAds);
|
||||
}
|
||||
$newDate = date('Y-m-d H:i:s', strtotime(date('Y-m-d H:i:s') . ' + ' . setting_value('visiosoft.module.advs::default_published_time') . ' day'));
|
||||
return $advs->update(['finish_at' => $newDate]);
|
||||
}
|
||||
}
|
||||
|
||||
@ -36,4 +36,5 @@ interface AdvRepositoryInterface extends EntryRepositoryInterface
|
||||
|
||||
public function getCategoriesWithAdID($id);
|
||||
|
||||
public function extendAds($allAds, $isAdmin = false);
|
||||
}
|
||||
|
||||
@ -31,7 +31,7 @@ class AdvsModule extends Module
|
||||
'href' => "/advs/create_adv",
|
||||
],
|
||||
'extend_all' => [
|
||||
'href' => "/admin/advs/extendAll",
|
||||
'href' => "/advs/extendAll/admin",
|
||||
'icon' => 'fa fa-calendar',
|
||||
'type' => 'info'
|
||||
],
|
||||
|
||||
@ -212,9 +212,13 @@ class AdvsModuleServiceProvider extends AddonServiceProvider
|
||||
'as' => 'ajax::getAds',
|
||||
'uses' => 'Visiosoft\AdvsModule\Http\Controller\AjaxController@getMyAds'
|
||||
],
|
||||
'admin/advs/extendAll' => [
|
||||
'advs/extendAll/{isAdmin?}' => [
|
||||
'as' => 'advs::extendAll',
|
||||
'uses' => 'Visiosoft\AdvsModule\Http\Controller\Admin\AdvsController@extendAll',
|
||||
'uses' => 'Visiosoft\AdvsModule\Http\Controller\AdvsController@extendAll',
|
||||
],
|
||||
'advs/extend/{adId}' => [
|
||||
'as' => 'advs::extendSingle',
|
||||
'uses' => 'Visiosoft\AdvsModule\Http\Controller\AdvsController@extendSingle',
|
||||
],
|
||||
];
|
||||
|
||||
|
||||
@ -257,13 +257,4 @@ class AdvsController extends AdminController
|
||||
<a href='" . $request->server('HTTP_REFERER') . "'><b>Return Back</b></a>";
|
||||
echo "<br><a href='/admin'><b>Return Admin Panel</b></a>";
|
||||
}
|
||||
|
||||
public function extendAll()
|
||||
{
|
||||
$advs = $this->model->get();
|
||||
$new_date = date('Y-m-d H:i:s', strtotime(date('Y-m-d H:i:s') . ' + ' . setting_value('visiosoft.module.advs::default_published_time') . ' day'));
|
||||
$advs->update(['finish_at' => $new_date]);
|
||||
$this->messages->success(trans('visiosoft.module.advs::field.extended'));
|
||||
return $this->redirect->to('admin/advs/advs');
|
||||
}
|
||||
}
|
||||
|
||||
@ -78,7 +78,6 @@ class AjaxController extends PublicController
|
||||
} else {
|
||||
$page_title = trans('visiosoft.module.advs::field.my_adv.name');
|
||||
$my_advs = $my_advs->myAdvsByUser();
|
||||
|
||||
}
|
||||
$my_advs = $my_advs->orderByDesc('id');
|
||||
$my_advs = $advRepository->addAttributes($my_advs->get());
|
||||
@ -86,11 +85,8 @@ class AjaxController extends PublicController
|
||||
foreach ($my_advs as $index => $ad) {
|
||||
$my_advs[$index]->detail_url = $this->adv_model->getAdvDetailLinkByModel($ad, 'list');
|
||||
$my_advs[$index] = $this->adv_model->AddAdsDefaultCoverImage($ad);
|
||||
|
||||
}
|
||||
|
||||
return response()->json(['success' => true, 'content' => $my_advs, 'title' => $page_title]);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@ -364,7 +364,7 @@ class AdvsController extends PublicController
|
||||
$this->template->set('meta_keywords', implode(',', explode(' ', $adv->name)));
|
||||
$this->template->set('meta_description', strip_tags($adv->advs_desc, ''));
|
||||
$this->template->set('meta_title', $adv->name . "|" . end($categories)['name']);
|
||||
|
||||
$this->template->set('meta_image', $adv->cover_photo);
|
||||
|
||||
if ($adv->created_by_id == isset(auth()->user()->id) OR $adv->status == "approved") {
|
||||
return $this->view->make('visiosoft.module.advs::ad-detail/detail', compact('adv', 'complaints', 'recommended_advs', 'categories', 'features', 'profile', 'comments', 'qrSRC'));
|
||||
@ -974,4 +974,17 @@ class AdvsController extends PublicController
|
||||
return "success";
|
||||
}
|
||||
|
||||
}
|
||||
public function extendAll($isAdmin = null)
|
||||
{
|
||||
$adsExtended = $this->adv_repository->extendAds(true, $isAdmin);
|
||||
$this->messages->success(trans('visiosoft.module.advs::message.extended', ['number' => $adsExtended]));
|
||||
return $this->redirect->back();
|
||||
}
|
||||
|
||||
public function extendSingle($adId)
|
||||
{
|
||||
$adsExtended = $this->adv_repository->extendAds($adId);
|
||||
$this->messages->success(trans('visiosoft.module.advs::message.extended', ['number' => $adsExtended]));
|
||||
return $this->redirect->back();
|
||||
}
|
||||
}
|
||||
@ -4,6 +4,13 @@
|
||||
<meta property="og:description" content="{{ template.get('og_description', trans(template.meta_description)) }}"/>
|
||||
<meta property="og:title" content="{{ template.get('og_title', trans(template.meta_title)) }}"/>
|
||||
<meta property="og:url" content="{{ template.get('og_url', url_current()) }}"/>
|
||||
<meta property="og:image" content="{{ template.get('og_image') }}"/>
|
||||
<meta property="og:image" content="{{ template.get('og_image', trans(template.meta_image)) }}"/>
|
||||
<meta property="og:type" content="website"/>
|
||||
|
||||
<!-- Meta for twitter sharing -->
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:site" content="{{ template.get('og_site_name', setting_value('streams::name', config_get('streams::distribution.name'))) }}">
|
||||
<meta name="twitter:title" content="{{ template.get('og_title', trans(template.meta_title)) }}">
|
||||
<meta name="twitter:description" content="{{ template.get('og_description', trans(template.meta_description)) }}">
|
||||
<meta name="twitter:image" content="{{ template.get('og_image', trans(template.meta_image)) }}">
|
||||
{% endblock %}
|
||||
@ -1,3 +1,70 @@
|
||||
var current_page = 1;
|
||||
var records_per_page = ads_per_page;
|
||||
var ads_type = "";
|
||||
|
||||
var objJson = [];
|
||||
|
||||
function prevPage()
|
||||
{
|
||||
if (current_page > 1) {
|
||||
current_page--;
|
||||
changePage(current_page);
|
||||
}
|
||||
}
|
||||
|
||||
function nextPage(event)
|
||||
{
|
||||
if (current_page < numPages()) {
|
||||
current_page++;
|
||||
changePage(current_page);
|
||||
}
|
||||
}
|
||||
|
||||
function changePage(page)
|
||||
{
|
||||
var btn_next = $("#btn_next");
|
||||
var btn_prev = $("#btn_prev");
|
||||
var listing_table = $("#nav-" + ads_type);
|
||||
var page_span = $("#page");
|
||||
|
||||
// Validate page
|
||||
if (page < 1) page = 1;
|
||||
if (page > numPages()) page = numPages();
|
||||
|
||||
listing_table.html("");
|
||||
|
||||
for (var i = (page-1) * records_per_page; i < (page * records_per_page) && i < objJson.length; i++) {
|
||||
listing_table.append(addAdsRow(objJson[i].id, objJson[i].detail_url, objJson[i].cover_photo, objJson[i].name,
|
||||
objJson[i].price + " " + objJson[i].currency,
|
||||
objJson[i].city_name, objJson[i].country_name, objJson[i].cat1_name, objJson[i].cat2_name, objJson[i].status));
|
||||
}
|
||||
|
||||
page_span.html(page + "/" + numPages());
|
||||
|
||||
if (numPages() === 1) {
|
||||
page_span.hide();
|
||||
} else {
|
||||
page_span.show();
|
||||
}
|
||||
|
||||
if (page === 1) {
|
||||
btn_prev.hide();
|
||||
} else {
|
||||
btn_prev.show();
|
||||
}
|
||||
|
||||
if (page === numPages()) {
|
||||
btn_next.hide();
|
||||
} else {
|
||||
btn_next.show();
|
||||
}
|
||||
}
|
||||
|
||||
function numPages()
|
||||
{
|
||||
return Math.ceil(objJson.length / records_per_page);
|
||||
}
|
||||
|
||||
function crud(params, url, type, callback) {
|
||||
$.ajax({
|
||||
type: type,
|
||||
@ -11,18 +78,16 @@ function crud(params, url, type, callback) {
|
||||
|
||||
function getMyAds(type) {
|
||||
crud({'type': type}, '/ajax/getAds', 'GET', function (callback) {
|
||||
$('#nav-' + type).html("");
|
||||
$.each(callback.content, function (index, adv) {
|
||||
$('#nav-' + type).append(addAdsRow(adv.id, adv.detail_url, adv.cover_photo, adv.name,
|
||||
adv.price + " " + adv.currency,
|
||||
adv.city_name, adv.country_name, adv.cat1_name, adv.cat2_name, adv.status));
|
||||
});
|
||||
ads_type = type;
|
||||
current_page = 1;
|
||||
objJson = callback.content;
|
||||
changePage(1);
|
||||
})
|
||||
}
|
||||
|
||||
$('.profile-ads-tab a').on('click', function () {
|
||||
getMyAds($(this).attr('data-type'))
|
||||
})
|
||||
});
|
||||
|
||||
getMyAds('approved');
|
||||
|
||||
@ -85,6 +150,11 @@ function dropdownRow(id, type) {
|
||||
delete_ad +
|
||||
"</a>\n";
|
||||
|
||||
dropdown += "<a class='dropdown-item text-info' href='/advs/extend/" + id + "'>" +
|
||||
"<i class='fas fa-calendar'></i> " +
|
||||
extend_ad +
|
||||
"</a>\n";
|
||||
|
||||
dropdown += "</div></div>";
|
||||
return dropdown;
|
||||
|
||||
|
||||
@ -7,6 +7,8 @@ return [
|
||||
'update_password' => 'Update Password',
|
||||
'update_profile' => 'Update Profile',
|
||||
'delete' => 'Delete',
|
||||
'extend' => 'Extend',
|
||||
'extend_all' => 'Extend All',
|
||||
'edit' => 'Edit',
|
||||
'go_profile' => 'Go to Profile Detail',
|
||||
'go_user' => 'Go to User Detail',
|
||||
|
||||
@ -10,7 +10,6 @@
|
||||
|
||||
<div class="col-md-12 bg-light ads-section">
|
||||
<nav class="profile-ads-tab">
|
||||
|
||||
<div class="nav nav-tabs nav-fill" id="nav-tab" role="tablist">
|
||||
<a class="nav-item nav-link active text-dark" data-type="approved" id="nav-approved-tab"
|
||||
data-toggle="tab"
|
||||
@ -33,6 +32,11 @@
|
||||
</a>
|
||||
</div>
|
||||
</nav>
|
||||
<div class="bg-dark p-2 mt-2 rounded">
|
||||
<a href="{{ url_route("advs::extendAll") }}" class="btn btn-primary">
|
||||
{{ trans('visiosoft.module.profile::button.extend_all') }}
|
||||
</a>
|
||||
</div>
|
||||
<div class="tab-content py-3 px-3 px-sm-0" id="nav-tabContent">
|
||||
<div class="tab-pane fade show active" id="nav-approved" role="tabpanel"
|
||||
aria-labelledby="nav-approved-tab">
|
||||
@ -43,6 +47,19 @@
|
||||
<div class="tab-pane fade show" id="nav-passive" role="tabpanel"
|
||||
aria-labelledby="nav-passive-tab">
|
||||
</div>
|
||||
|
||||
<!-- Pagination links -->
|
||||
<nav aria-label="Page navigation example">
|
||||
<ul class="pagination justify-content-center">
|
||||
<li class="page-item">
|
||||
<a id="btn_prev" class="page-link" href="javascript:prevPage()">Previous</a>
|
||||
</li>
|
||||
<li class="page-item"><span id="page" class="page-link">1</span></li>
|
||||
<li class="page-item">
|
||||
<a id="btn_next" class="page-link" href="javascript:nextPage()">Next</a>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -52,7 +69,9 @@
|
||||
var approve = "{{ trans('visiosoft.module.advs::field.approve') }}";
|
||||
var passive = "{{ trans('visiosoft.module.advs::field.passive') }}";
|
||||
var delete_ad = "{{ trans('visiosoft.module.profile::button.delete') }}";
|
||||
var extend_ad = "{{ trans('visiosoft.module.profile::button.extend') }}";
|
||||
var edit_ad = "{{ trans('visiosoft.module.profile::button.edit') }}";
|
||||
var ads_per_page = "{{ setting_value('streams::per_page') }}";
|
||||
</script>
|
||||
{{ asset_add('scripts.js','visiosoft.module.profile::assets/js/ads.js') }}
|
||||
{% endblock %}
|
||||
Loading…
Reference in New Issue
Block a user