diff --git a/app/Criteria/MyCriteria.php b/app/Criteria/MyCriteria.php
new file mode 100644
index 000000000..6e32e67b2
--- /dev/null
+++ b/app/Criteria/MyCriteria.php
@@ -0,0 +1,27 @@
+ 'Value Per Channel',
'is_filterable' => 'Use in Layered Navigation',
'is_configurable' => 'Use To Create Configurable Product',
- 'admin_name' => 'Admin Name'
+ 'admin_name' => 'Admin Name',
+ 'is_visible_on_front' => 'Visible on Product View Page on Front-end'
],
'families' => [
'families' => 'Families',
diff --git a/packages/Webkul/Admin/src/Resources/views/catalog/attributes/create.blade.php b/packages/Webkul/Admin/src/Resources/views/catalog/attributes/create.blade.php
index 35112e645..b6b37b540 100644
--- a/packages/Webkul/Admin/src/Resources/views/catalog/attributes/create.blade.php
+++ b/packages/Webkul/Admin/src/Resources/views/catalog/attributes/create.blade.php
@@ -154,6 +154,14 @@
{{ __('admin::app.catalog.attributes.yes') }}
+
+
-
+ @inject ('productRepository', 'Webkul\Product\Repositories\ProductRepository')
- @inject ('productHelper', 'Webkul\Product\Product\Collection')
-
- getCollection($category->id); ?>
-
- @foreach ($products as $product)
+ findAllByCategory($category->id); ?>
- @include ('shop::products.card', ['product' => $product])
+ @include ('shop::products.list.toolbar')
- @endforeach
+ @inject ('toolbarHelper', 'Webkul\Product\Product\Toolbar')
-
+ @if ($toolbarHelper->getCurrentMode() == 'grid')
+
+
+ @foreach ($products as $product)
+ @include ('shop::products.list.card', ['product' => $product])
+
+ @endforeach
+
+
+ @else
+
+
+ @foreach ($products as $product)
+
+ @include ('shop::products.list.card', ['product' => $product])
+
+ @endforeach
+
+
+ @endif
+
{{ $products->appends(request()->input())->links() }}
@@ -28,8 +44,4 @@
-@stop
-
-@push('scripts')
-
-@endpush
\ No newline at end of file
+@stop
\ No newline at end of file
diff --git a/packages/Webkul/Shop/src/Resources/views/products/list/card.blade.php b/packages/Webkul/Shop/src/Resources/views/products/list/card.blade.php
new file mode 100644
index 000000000..34f182e1a
--- /dev/null
+++ b/packages/Webkul/Shop/src/Resources/views/products/list/card.blade.php
@@ -0,0 +1,35 @@
+
\ No newline at end of file
diff --git a/packages/Webkul/Shop/src/Resources/views/products/layered-navigation.blade.php b/packages/Webkul/Shop/src/Resources/views/products/list/layered-navigation.blade.php
similarity index 97%
rename from packages/Webkul/Shop/src/Resources/views/products/layered-navigation.blade.php
rename to packages/Webkul/Shop/src/Resources/views/products/list/layered-navigation.blade.php
index 2ebce2670..ed9764ac9 100644
--- a/packages/Webkul/Shop/src/Resources/views/products/layered-navigation.blade.php
+++ b/packages/Webkul/Shop/src/Resources/views/products/list/layered-navigation.blade.php
@@ -1,7 +1,9 @@
@inject ('attributeRepository', 'Webkul\Attribute\Repositories\AttributeRepository')
+
+
@push('scripts')
@@ -129,8 +131,8 @@
sliderConfig: {
value: [
- 100,
- 250
+ 0,
+ 0
],
max: 500,
processStyle: {
@@ -171,7 +173,7 @@
clearFilters () {
if(this.attribute.type == 'price') {
- this.sliderConfig.value = [100, 250];
+ this.sliderConfig.value = [0, 0];
}
this.appliedFilters = [];
diff --git a/packages/Webkul/Shop/src/Resources/views/products/list/toolbar.blade.php b/packages/Webkul/Shop/src/Resources/views/products/list/toolbar.blade.php
new file mode 100644
index 000000000..f189f9b3f
--- /dev/null
+++ b/packages/Webkul/Shop/src/Resources/views/products/list/toolbar.blade.php
@@ -0,0 +1,67 @@
+@inject ('toolbarHelper', 'Webkul\Product\Product\Toolbar')
+
+
\ No newline at end of file
diff --git a/packages/Webkul/Shop/src/Resources/views/products/reviews/create.blade.php b/packages/Webkul/Shop/src/Resources/views/products/reviews/create.blade.php
new file mode 100644
index 000000000..e69de29bb
diff --git a/packages/Webkul/Shop/src/Resources/views/products/reviews/index.blade.php b/packages/Webkul/Shop/src/Resources/views/products/reviews/index.blade.php
new file mode 100644
index 000000000..e69de29bb
diff --git a/packages/Webkul/Shop/src/Resources/views/products/reviews/product.blade.php b/packages/Webkul/Shop/src/Resources/views/products/reviews/product.blade.php
new file mode 100644
index 000000000..e69de29bb
diff --git a/packages/Webkul/Shop/src/Resources/views/products/view.blade.php b/packages/Webkul/Shop/src/Resources/views/products/view.blade.php
new file mode 100644
index 000000000..8e776dd5f
--- /dev/null
+++ b/packages/Webkul/Shop/src/Resources/views/products/view.blade.php
@@ -0,0 +1,65 @@
+@extends('shop::layouts.master')
+
+@section('content-wrapper')
+
+
+
+ Home > Men > Slit Open Jeans
+
+
+
+
+
+ @include ('shop::products.view.gallery')
+
+
+
+
+ {{ $product->name }}
+
+
+
+
+ 75 Ratings & 11 Reviews
+
+
+ @include ('shop::products.price', ['product' => $product])
+
+ @include ('shop::products.view.stock')
+
+
+
+
+ {{ $product->short_description }}
+
+
+ @if ($product->type == 'configurable')
+
+ @include ('shop::products.view.configurable-options')
+
+ @endif
+
+
+
+ {{ __('shop::app.products.description') }}
+
+
+
+
+
+ {{ $product->description }}
+
+
+
+
+ @include ('shop::products.view.attributes')
+
+ @include ('shop::products.view.reviews')
+
+
+
+
+ @include ('shop::products.view.up-sells')
+
+
+@endsection
diff --git a/packages/Webkul/Shop/src/Resources/views/products/view/attributes.blade.php b/packages/Webkul/Shop/src/Resources/views/products/view/attributes.blade.php
new file mode 100644
index 000000000..c78988d35
--- /dev/null
+++ b/packages/Webkul/Shop/src/Resources/views/products/view/attributes.blade.php
@@ -0,0 +1,23 @@
+@inject ('productViewHelper', 'Webkul\Product\Product\View')
+
+
+
+ {{ __('shop::app.products.specification') }}
+
+
+
+
+
+
+ @foreach ($productViewHelper->getAdditionalData($product) as $attribute)
+
+
+ {{ $attribute['label'] }}
+ - {{ $attribute['value'] }}
+
+
+ @endforeach
+
+
+
+
\ No newline at end of file
diff --git a/packages/Webkul/Shop/src/Resources/views/products/view/configurable-options.blade.php b/packages/Webkul/Shop/src/Resources/views/products/view/configurable-options.blade.php
new file mode 100644
index 000000000..1ebdb1f39
--- /dev/null
+++ b/packages/Webkul/Shop/src/Resources/views/products/view/configurable-options.blade.php
@@ -0,0 +1,33 @@
+
+
+
\ No newline at end of file
diff --git a/packages/Webkul/Shop/src/Resources/views/products/view/gallery.blade.php b/packages/Webkul/Shop/src/Resources/views/products/view/gallery.blade.php
new file mode 100644
index 000000000..bbe5e664d
--- /dev/null
+++ b/packages/Webkul/Shop/src/Resources/views/products/view/gallery.blade.php
@@ -0,0 +1,16 @@
+
\ No newline at end of file
diff --git a/packages/Webkul/Shop/src/Resources/views/products/view/reviews.blade.php b/packages/Webkul/Shop/src/Resources/views/products/view/reviews.blade.php
new file mode 100644
index 000000000..b84816615
--- /dev/null
+++ b/packages/Webkul/Shop/src/Resources/views/products/view/reviews.blade.php
@@ -0,0 +1,71 @@
+@inject ('reviewHelper', 'Webkul\Product\Product\Review')
+
+@if ($total = $reviewHelper->getTotalReviews($product))
+
+
+ Ratings & Reviews
+
+
+
+
+
+
+ {{ $reviewHelper->getAverageRating($product) }}
+
+
+
+ @for ($i = 1; $i <= $reviewHelper->getAverageRating($product); $i++)
+
+
+
+ @endfor
+
+
+
+ {{ __('shop::app.products.total-reviews', ['total' => $total]) }}
+
+
+
+
+
Write Review
+
+
+
+
+
+ @foreach ($product->reviews()->paginate(5) as $review)
+
+
+ {{ $review->title }}
+
+
+
+ @for ($i = 1; $i <= $review->rating; $i++)
+
+
+
+ @endfor
+
+
+
+ {{ $review->comment }}
+
+
+
+
+ {{ __('shop::app.products.by', ['name' => $review->customer->name]) }},
+
+
+
+ {{ $reviewHelper->formatDate($review->created_at) }}
+
+
+
+ @endforeach
+
+
View All
+
+
+
+
+@endif
\ No newline at end of file
diff --git a/packages/Webkul/Shop/src/Resources/views/products/view/stock.blade.php b/packages/Webkul/Shop/src/Resources/views/products/view/stock.blade.php
new file mode 100644
index 000000000..e765ddda0
--- /dev/null
+++ b/packages/Webkul/Shop/src/Resources/views/products/view/stock.blade.php
@@ -0,0 +1,3 @@
+
+ InStock
+
\ No newline at end of file
diff --git a/packages/Webkul/Shop/src/Resources/views/products/view/up-sells.blade.php b/packages/Webkul/Shop/src/Resources/views/products/view/up-sells.blade.php
new file mode 100644
index 000000000..e9b561e75
--- /dev/null
+++ b/packages/Webkul/Shop/src/Resources/views/products/view/up-sells.blade.php
@@ -0,0 +1,20 @@
+@if ($product->up_sells()->count())
+
+
+
+ {{ __('shop::app.products.up-sell-title') }}
+
+
+
+
+
+ @foreach ($product->up_sells()->paginate(4) as $up_sell_product)
+
+ @include ('shop::products.list.card', ['product' => $up_sell_product])
+
+ @endforeach
+
+
+
+
+@endif
\ No newline at end of file
diff --git a/packages/Webkul/User/src/Http/Controllers/AccountController.php b/packages/Webkul/User/src/Http/Controllers/AccountController.php
index be7fb8772..94b89fde9 100644
--- a/packages/Webkul/User/src/Http/Controllers/AccountController.php
+++ b/packages/Webkul/User/src/Http/Controllers/AccountController.php
@@ -56,8 +56,12 @@ class AccountController extends Controller
'password' => 'nullable|confirmed'
]);
+ $data = request()->all();
- $user->update(request(['name', 'email', 'password']));
+ if(!$data['password'])
+ unset($data['password']);
+
+ $user->update($data);
session()->flash('success', 'Account changes saved successfully.');
diff --git a/packages/Webkul/User/src/Http/Controllers/UserController.php b/packages/Webkul/User/src/Http/Controllers/UserController.php
index 41b00bd49..e89e3c8a8 100644
--- a/packages/Webkul/User/src/Http/Controllers/UserController.php
+++ b/packages/Webkul/User/src/Http/Controllers/UserController.php
@@ -118,7 +118,12 @@ class UserController extends Controller
*/
public function update(UserForm $request, $id)
{
- $this->admin->update(request()->all(), $id);
+ $data = request()->all();
+
+ if(!$data['password'])
+ unset($data['password']);
+
+ $this->admin->update($data, $id);
session()->flash('success', 'User updated successfully.');
diff --git a/public/themes/default/assets/css/shop.css b/public/themes/default/assets/css/shop.css
index 57c7a7337..e13993b9c 100644
--- a/public/themes/default/assets/css/shop.css
+++ b/public/themes/default/assets/css/shop.css
@@ -11,11 +11,24 @@
margin-bottom: 2px;
}
+.grid-view-icon {
+ background-image: URL("../images/icon-grid-view.svg");
+ width: 24px;
+ height: 24px;
+}
+
+.list-view-icon {
+ background-image: URL("../images/icon-list-view.svg");
+ width: 24px;
+ height: 24px;
+}
+
body {
margin: 0;
padding: 0;
font-weight: 500;
- font-size: 14px;
+ color: #242424;
+ font-size: 16px;
}
* {
@@ -430,7 +443,7 @@ section.slider-block div.slider-content div.slider-control .light-right-icon {
.layered-filter-wrapper {
width: 25%;
float: left;
- margin-right: 20px;
+ padding-right: 20px;
min-height: 1px;
}
@@ -521,6 +534,11 @@ section.slider-block div.slider-content div.slider-control .light-right-icon {
width: 100%;
}
+.main-container-wrapper .main {
+ display: inline-block;
+ width: 75%;
+}
+
.main-container-wrapper .product-grid {
display: grid;
grid-gap: 15px;
@@ -551,49 +569,36 @@ section.slider-block div.slider-content div.slider-control .light-right-icon {
justify-content: center;
}
-.main-container-wrapper .product-grid .product-card .product-image img {
+.main-container-wrapper .product-card .product-image img {
-ms-flex-item-align: center;
align-self: center;
width: 100%;
margin-bottom: 14px;
}
-.main-container-wrapper .product-grid .product-card .product-name {
+.main-container-wrapper .product-card .product-name {
font-size: 16px;
margin-bottom: 14px;
width: 100%;
+ color: #242424;
}
-.main-container-wrapper .product-grid .product-card .product-price {
+.main-container-wrapper .product-card .product-name a {
+ color: #242424;
+}
+
+.main-container-wrapper .product-card .product-description {
font-size: 16px;
margin-bottom: 14px;
- width: 100%;
- font-weight: 600;
+ display: none;
}
-.main-container-wrapper .product-grid .product-card .product-price .price-label {
- font-size: 14px;
- font-weight: 400;
-}
-
-.main-container-wrapper .product-grid .product-card .product-price .regular-price {
- font-size: 16px;
- color: #A5A5A5;
- text-decoration: line-through;
- margin-right: 10px;
-}
-
-.main-container-wrapper .product-grid .product-card .product-price .special-price {
- font-size: 16px;
- color: #FF6472;
-}
-
-.main-container-wrapper .product-grid .product-card .product-ratings {
+.main-container-wrapper .product-card .product-ratings {
width: 100%;
margin-bottom: 14px;
}
-.main-container-wrapper .product-grid .product-card .cart-fav-seg {
+.main-container-wrapper .product-card .cart-fav-seg {
display: -webkit-inline-box;
display: -ms-inline-flexbox;
display: inline-flex;
@@ -603,12 +608,91 @@ section.slider-block div.slider-content div.slider-control .light-right-icon {
align-items: center;
}
-.main-container-wrapper .product-grid .product-card .cart-fav-seg .addtocart {
+.main-container-wrapper .product-card .cart-fav-seg .addtocart {
border-radius: 0px;
margin-right: 10px;
text-transform: uppercase;
}
+.main-container-wrapper .product-list .product-card {
+ width: 100%;
+ display: inline-block;
+ margin-bottom: 20px;
+}
+
+.main-container-wrapper .product-list .product-card .product-image {
+ float: left;
+ width: 30%;
+ height: 350px;
+}
+
+.main-container-wrapper .product-list .product-card .product-image img {
+ height: 100%;
+}
+
+.main-container-wrapper .product-list .product-card .product-information {
+ float: right;
+ width: 70%;
+ padding-left: 30px;
+}
+
+.main-container-wrapper .product-list .product-card:last-child {
+ margin-bottom: 0;
+}
+
+.main-container-wrapper .top-toolbar {
+ width: 100%;
+ display: inline-block;
+ margin-bottom: 25px;
+}
+
+.main-container-wrapper .top-toolbar .page-info {
+ float: left;
+ color: #242424;
+ line-height: 45px;
+}
+
+.main-container-wrapper .top-toolbar .pager {
+ float: right;
+}
+
+.main-container-wrapper .top-toolbar .pager label {
+ font-size: 16px;
+ margin-right: 5px;
+}
+
+.main-container-wrapper .top-toolbar .pager select {
+ background: #FFFFFF;
+ border: 1px solid #C7C7C7;
+ border-radius: 3px;
+ font-size: 16px;
+ color: #242424;
+ padding: 10px;
+}
+
+.main-container-wrapper .top-toolbar .pager .view-mode {
+ display: inline-block;
+ margin-right: 20px;
+}
+
+.main-container-wrapper .top-toolbar .pager .view-mode a, .main-container-wrapper .top-toolbar .pager .view-mode span {
+ display: inline-block;
+ vertical-align: middle;
+}
+
+.main-container-wrapper .top-toolbar .pager .view-mode a.grid-view, .main-container-wrapper .top-toolbar .pager .view-mode span.grid-view {
+ margin-right: 10px;
+}
+
+.main-container-wrapper .top-toolbar .pager .sorter {
+ display: inline-block;
+ margin-right: 10px;
+}
+
+.main-container-wrapper .top-toolbar .pager .limiter {
+ display: inline-block;
+}
+
.main-container-wrapper .bottom-toolbar {
display: block;
margin-top: 40px;
@@ -690,6 +774,30 @@ section.slider-block div.slider-content div.slider-control .light-right-icon {
width: 100%;
}
+.product-price {
+ font-size: 16px;
+ margin-bottom: 14px;
+ width: 100%;
+ font-weight: 600;
+}
+
+.product-price .price-label {
+ font-size: 14px;
+ font-weight: 400;
+}
+
+.product-price .regular-price {
+ font-size: 16px;
+ color: #A5A5A5;
+ text-decoration: line-through;
+ margin-right: 10px;
+}
+
+.product-price .special-price {
+ font-size: 16px;
+ color: #FF6472;
+}
+
.footer {
background-color: #f2f2f2;
padding-left: 10%;
@@ -1037,21 +1145,10 @@ section.product-detail div.layouter .mixed-group .details .product-name, section
margin-bottom: 20px;
}
-section.product-detail div.layouter .mixed-group .details .price, section.product-review div.layouter .mixed-group .details .price {
+section.product-detail div.layouter .mixed-group .details .product-price, section.product-review div.layouter .mixed-group .details .product-price {
margin-bottom: 14px;
}
-section.product-detail div.layouter .mixed-group .details .price .main-price, section.product-review div.layouter .mixed-group .details .price .main-price {
- font-size: 24px;
- color: #FF6472;
-}
-
-section.product-detail div.layouter .mixed-group .details .price .real-price, section.product-review div.layouter .mixed-group .details .price .real-price {
- color: #A5A5A5;
- -webkit-text-decoration-line: line-through;
- text-decoration-line: line-through;
-}
-
section.product-detail div.layouter .rating-reviews, section.product-review div.layouter .rating-reviews {
margin-top: 30px;
}
@@ -1213,13 +1310,13 @@ section.product-detail div.layouter .details .rating, section.product-review div
margin-bottom: 14px;
}
-section.product-detail div.layouter .details .price, section.product-review div.layouter .details .price {
+section.product-detail div.layouter .details .product-price, section.product-review div.layouter .details .product-price {
margin-bottom: 14px;
+ font-size: 24px;
}
-section.product-detail div.layouter .details .price .main-price, section.product-review div.layouter .details .price .main-price {
+section.product-detail div.layouter .details .product-price .special-price, section.product-review div.layouter .details .product-price .special-price {
font-size: 24px;
- color: #FF6472;
}
section.product-detail div.layouter .details .stock-status, section.product-review div.layouter .details .stock-status {
@@ -1230,9 +1327,19 @@ section.product-detail div.layouter .details .description, section.product-revie
margin-bottom: 14px;
}
-section.product-detail div.layouter .details hr, section.product-review div.layouter .details hr {
- border-top: 1px solid #E8E8E8;
- margin-bottom: 17px;
+section.product-detail div.layouter .details .full-specifications td, section.product-review div.layouter .details .full-specifications td {
+ padding: 10px 0;
+ color: #5E5E5E;
+}
+
+section.product-detail div.layouter .details .full-specifications td:first-child, section.product-review div.layouter .details .full-specifications td:first-child {
+ padding-right: 40px;
+}
+
+section.product-detail div.layouter .details .accordian .accordian-header, section.product-review div.layouter .details .accordian .accordian-header {
+ font-size: 16px;
+ padding-left: 0;
+ font-weight: 600;
}
section.product-detail div.layouter .details .attributes, section.product-review div.layouter .details .attributes {
@@ -1320,13 +1427,14 @@ section.product-detail div.layouter .details .rating-reviews, section.product-re
section.product-detail div.layouter .details .rating-reviews .title, section.product-review div.layouter .details .rating-reviews .title {
margin-bottom: 15px;
+ font-weight: 600;
}
section.product-detail div.layouter .details .rating-reviews .overall, section.product-review div.layouter .details .rating-reviews .overall {
margin-bottom: 5px;
}
-section.product-detail div.layouter .details .rating-reviews .overall .number, section.product-review div.layouter .details .rating-reviews .overall .number {
+section.product-detail div.layouter .details .rating-reviews .overall .review-info .number, section.product-review div.layouter .details .rating-reviews .overall .review-info .number {
font-size: 34px;
}
@@ -1346,12 +1454,22 @@ section.product-detail div.layouter .details .rating-reviews .reviews .review, s
section.product-detail div.layouter .details .rating-reviews .reviews .review .stars, section.product-review div.layouter .details .rating-reviews .reviews .review .stars {
margin-bottom: 15px;
+ display: inline-block;
+}
+
+section.product-detail div.layouter .details .rating-reviews .reviews .review .stars .icon, section.product-review div.layouter .details .rating-reviews .reviews .review .stars .icon {
+ width: 18px;
+ height: 18px;
}
section.product-detail div.layouter .details .rating-reviews .reviews .review .message, section.product-review div.layouter .details .rating-reviews .reviews .review .message {
margin-bottom: 10px;
}
+section.product-detail div.layouter .details .rating-reviews .reviews .review .reviewer-details, section.product-review div.layouter .details .rating-reviews .reviews .review .reviewer-details {
+ color: #5E5E5E;
+}
+
section.product-detail div.layouter .details .rating-reviews .reviews .view-all, section.product-review div.layouter .details .rating-reviews .reviews .view-all {
margin-top: 15px;
color: #0031f0;
@@ -1591,18 +1709,29 @@ section.cart .cart-content .right-side .coupon-section .after-coupon-amount .amo
font-weight: bold;
}
-.related-products-wrapper {
+.attached-products-wrapper {
margin-bottom: 80px;
}
-.related-products-wrapper .title {
- margin-bottom: 22px;
+.attached-products-wrapper .title {
+ margin-bottom: 40px;
font-size: 18px;
color: #242424;
text-align: center;
+ position: relative;
}
-.related-products-wrapper .horizontal-rule {
+.attached-products-wrapper .title .border-bottom {
+ border-bottom: 1px solid rgba(162, 162, 162, 0.2);
+ display: inline-block;
+ width: 100px;
+ position: absolute;
+ top: 40px;
+ left: 50%;
+ margin-left: -50px;
+}
+
+.attached-products-wrapper .horizontal-rule {
height: 1px;
background: #E8E8E8;
width: 148px;
@@ -1610,9 +1739,3 @@ section.cart .cart-content .right-side .coupon-section .after-coupon-amount .amo
margin-left: auto;
margin-right: auto;
}
-
-.related-products-wrapper .related-products {
- display: grid;
- grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
- grid-gap: 10px;
-}