Merge remote-tracking branch 'upstream/master' into some-minor-issue
This commit is contained in:
commit
5ff8c5f037
|
|
@ -6,6 +6,7 @@ use Exception;
|
|||
use Illuminate\View\View;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Event;
|
||||
use Illuminate\Validation\ValidationException;
|
||||
use Webkul\CartRule\Repositories\CartRuleRepository;
|
||||
use Webkul\CartRule\Repositories\CartRuleCouponRepository;
|
||||
|
||||
|
|
@ -113,30 +114,39 @@ class CartRuleController extends Controller
|
|||
*/
|
||||
public function store()
|
||||
{
|
||||
$this->validate(request(), [
|
||||
'name' => 'required',
|
||||
'channels' => 'required|array|min:1',
|
||||
'customer_groups' => 'required|array|min:1',
|
||||
'coupon_type' => 'required',
|
||||
'use_auto_generation' => 'required_if:coupon_type,==,1',
|
||||
'coupon_code' => 'required_if:use_auto_generation,==,0|unique:cart_rule_coupons,code',
|
||||
'starts_from' => 'nullable|date',
|
||||
'ends_till' => 'nullable|date|after_or_equal:starts_from',
|
||||
'action_type' => 'required',
|
||||
'discount_amount' => 'required|numeric',
|
||||
]);
|
||||
try {
|
||||
$this->validate(request(), [
|
||||
'name' => 'required',
|
||||
'channels' => 'required|array|min:1',
|
||||
'customer_groups' => 'required|array|min:1',
|
||||
'coupon_type' => 'required',
|
||||
'use_auto_generation' => 'required_if:coupon_type,==,1',
|
||||
'coupon_code' => 'required_if:use_auto_generation,==,0|unique:cart_rule_coupons,code',
|
||||
'starts_from' => 'nullable|date',
|
||||
'ends_till' => 'nullable|date|after_or_equal:starts_from',
|
||||
'action_type' => 'required',
|
||||
'discount_amount' => 'required|numeric',
|
||||
]);
|
||||
|
||||
$data = request()->all();
|
||||
$data = request()->all();
|
||||
|
||||
Event::dispatch('promotions.cart_rule.create.before');
|
||||
Event::dispatch('promotions.cart_rule.create.before');
|
||||
|
||||
$cartRule = $this->cartRuleRepository->create($data);
|
||||
$cartRule = $this->cartRuleRepository->create($data);
|
||||
|
||||
Event::dispatch('promotions.cart_rule.create.after', $cartRule);
|
||||
Event::dispatch('promotions.cart_rule.create.after', $cartRule);
|
||||
|
||||
session()->flash('success', trans('admin::app.response.create-success', ['name' => 'Cart Rule']));
|
||||
session()->flash('success', trans('admin::app.response.create-success', ['name' => 'Cart Rule']));
|
||||
|
||||
return redirect()->route($this->_config['redirect']);
|
||||
return redirect()->route($this->_config['redirect']);
|
||||
} catch (ValidationException $e) {
|
||||
|
||||
if ($firstError = collect($e->errors())->first()) {
|
||||
session()->flash('error', $firstError[0]);
|
||||
}
|
||||
}
|
||||
|
||||
return redirect()->back();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -163,30 +173,39 @@ class CartRuleController extends Controller
|
|||
*/
|
||||
public function update(Request $request, $id)
|
||||
{
|
||||
$this->validate(request(), [
|
||||
'name' => 'required',
|
||||
'channels' => 'required|array|min:1',
|
||||
'customer_groups' => 'required|array|min:1',
|
||||
'coupon_type' => 'required',
|
||||
'use_auto_generation' => 'required_if:coupon_type,==,1',
|
||||
'coupon_code' => 'required_if:use_auto_generation,==,0|unique:cart_rule_coupons,code,' . $id,
|
||||
'starts_from' => 'nullable|date',
|
||||
'ends_till' => 'nullable|date|after_or_equal:starts_from',
|
||||
'action_type' => 'required',
|
||||
'discount_amount' => 'required|numeric',
|
||||
]);
|
||||
try {
|
||||
$this->validate(request(), [
|
||||
'name' => 'required',
|
||||
'channels' => 'required|array|min:1',
|
||||
'customer_groups' => 'required|array|min:1',
|
||||
'coupon_type' => 'required',
|
||||
'use_auto_generation' => 'required_if:coupon_type,==,1',
|
||||
'coupon_code' => 'required_if:use_auto_generation,==,0|unique:cart_rule_coupons,code,' . $id,
|
||||
'starts_from' => 'nullable|date',
|
||||
'ends_till' => 'nullable|date|after_or_equal:starts_from',
|
||||
'action_type' => 'required',
|
||||
'discount_amount' => 'required|numeric',
|
||||
]);
|
||||
|
||||
$cartRule = $this->cartRuleRepository->findOrFail($id);
|
||||
$cartRule = $this->cartRuleRepository->findOrFail($id);
|
||||
|
||||
Event::dispatch('promotions.cart_rule.update.before', $cartRule);
|
||||
Event::dispatch('promotions.cart_rule.update.before', $cartRule);
|
||||
|
||||
$cartRule = $this->cartRuleRepository->update(request()->all(), $id);
|
||||
$cartRule = $this->cartRuleRepository->update(request()->all(), $id);
|
||||
|
||||
Event::dispatch('promotions.cart_rule.update.after', $cartRule);
|
||||
Event::dispatch('promotions.cart_rule.update.after', $cartRule);
|
||||
|
||||
session()->flash('success', trans('admin::app.response.update-success', ['name' => 'Cart Rule']));
|
||||
session()->flash('success', trans('admin::app.response.update-success', ['name' => 'Cart Rule']));
|
||||
|
||||
return redirect()->route($this->_config['redirect']);
|
||||
return redirect()->route($this->_config['redirect']);
|
||||
} catch (ValidationException $e) {
|
||||
|
||||
if ($firstError = collect($e->errors())->first()) {
|
||||
session()->flash('error', $firstError[0]);
|
||||
}
|
||||
}
|
||||
|
||||
return redirect()->back();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"/js/velocity.js": "/js/velocity.js?id=460299ba5abce2721c4e",
|
||||
"/js/velocity.js": "/js/velocity.js?id=0b2aa0d8887d7cbf62b5",
|
||||
"/css/velocity-admin.css": "/css/velocity-admin.css?id=4322502d80a0e4a0affd",
|
||||
"/css/velocity.css": "/css/velocity.css?id=d1461e1147981876a7fd"
|
||||
"/css/velocity.css": "/css/velocity.css?id=2df490c7a6700e2c0c3b"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
<template v-else-if="productCollections.length > 0">
|
||||
<card-list-header
|
||||
:heading="isCategory ? categoryDetails.name : productTitle"
|
||||
:view-all="isCategory ? `${this.baseUrl}/${categoryDetails.slug}` : ''">
|
||||
:view-all="isCategory ? `${this.baseUrl}/${categoryDetails.url_path}` : ''">
|
||||
</card-list-header>
|
||||
|
||||
<div class="row" :class="localeDirection">
|
||||
|
|
|
|||
|
|
@ -2450,14 +2450,22 @@
|
|||
width: 800px;
|
||||
}
|
||||
|
||||
|
||||
/* compare products */
|
||||
.compare-products {
|
||||
width: 100%;
|
||||
cursor: pointer;
|
||||
overflow-x: auto;
|
||||
padding-bottom: 20px;
|
||||
word-break: break-word;
|
||||
margin-left: 0 !important;
|
||||
margin-right: 10px !important;
|
||||
|
||||
.active {
|
||||
cursor: grabbing;
|
||||
cursor: -webkit-grabbing;
|
||||
transform: scale(1);
|
||||
}
|
||||
|
||||
tr {
|
||||
width: 100%;
|
||||
}
|
||||
|
|
@ -2520,6 +2528,20 @@
|
|||
}
|
||||
}
|
||||
|
||||
/* hide scrollbar for chrome, safari and opera */
|
||||
.compare-products::-webkit-scrollbar {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* hide scrollbar for ie, edge and firefox */
|
||||
.compare-products {
|
||||
/* ie and edge */
|
||||
-ms-overflow-style: none;
|
||||
|
||||
/* firefox */
|
||||
scrollbar-width: none;
|
||||
}
|
||||
|
||||
//CSS for loader
|
||||
.cp-spinner {
|
||||
width: 48px;
|
||||
|
|
|
|||
|
|
@ -165,6 +165,8 @@
|
|||
|
||||
mounted: function () {
|
||||
this.getComparedProducts();
|
||||
|
||||
this.activateSlider();
|
||||
},
|
||||
|
||||
methods: {
|
||||
|
|
@ -192,10 +194,6 @@
|
|||
.then(response => {
|
||||
this.isProductListLoaded = true;
|
||||
|
||||
if (response.data.products.length > 3) {
|
||||
$('.compare-products').css('overflow-x', 'scroll');
|
||||
}
|
||||
|
||||
this.products = response.data.products;
|
||||
})
|
||||
.catch(error => {
|
||||
|
|
@ -286,6 +284,47 @@
|
|||
}
|
||||
|
||||
return attributeOptions;
|
||||
},
|
||||
|
||||
activateSlider: function () {
|
||||
/* main slider */
|
||||
const slider = document.querySelector('.compare-products');
|
||||
|
||||
let startX;
|
||||
let scrollLeft;
|
||||
|
||||
/* check for mouse down */
|
||||
let isMouseDown = false;
|
||||
|
||||
slider.addEventListener('mousedown', (e) => {
|
||||
isMouseDown = true;
|
||||
slider.classList.add('active');
|
||||
|
||||
startX = e.pageX - slider.offsetLeft;
|
||||
scrollLeft = slider.scrollLeft;
|
||||
});
|
||||
|
||||
slider.addEventListener('mouseleave', () => {
|
||||
isMouseDown = false;
|
||||
slider.classList.remove('active');
|
||||
});
|
||||
|
||||
slider.addEventListener('mouseup', () => {
|
||||
isMouseDown = false;
|
||||
slider.classList.remove('active');
|
||||
});
|
||||
|
||||
slider.addEventListener('mousemove', (e) => {
|
||||
if (! isMouseDown) {
|
||||
return;
|
||||
}
|
||||
|
||||
e.preventDefault();
|
||||
|
||||
const x = e.pageX - slider.offsetLeft;
|
||||
const walk = (x - startX) * 3;
|
||||
slider.scrollLeft = scrollLeft - walk;
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
|
|
|
|||
|
|
@ -102,7 +102,7 @@
|
|||
style="width: 100%"
|
||||
@endif>
|
||||
|
||||
<shimmer-component v-if="isLoading && !isMobile()" shimmer-count="4"></shimmer-component>
|
||||
<shimmer-component v-if="isLoading" shimmer-count="4"></shimmer-component>
|
||||
|
||||
<template v-else-if="products.length > 0">
|
||||
@if ($toolbarHelper->getCurrentMode() == 'grid')
|
||||
|
|
|
|||
Loading…
Reference in New Issue