On the new origin

This commit is contained in:
prashant-webkul 2018-09-10 15:01:34 +05:30
parent e07be27d8b
commit 40e04abddf
29 changed files with 603 additions and 349 deletions

View File

@ -37,7 +37,8 @@
"webkul/laravel-category": "self.version",
"webkul/laravel-product": "self.version",
"webkul/laravel-shop": "self.version",
"webkul/laravel-theme": "self.version"
"webkul/laravel-theme": "self.version",
"webkul/laravel-cart": "self.version"
},
"autoload": {
"classmap": [

View File

@ -2,6 +2,7 @@
@section('page_title')
@endsection
@stop
@section('content')

1
packages/Webkul/Cart/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
/node_modules

View File

@ -1,14 +1,15 @@
{
"name": "webkul/laravel-cart",
"description": "Cart Package for customer.",
"license": "MIT",
"authors": [
{
"name": "prashant-webkul",
"email": "prashant.singh852@webkul.com"
"name": "Prashant",
"email": "prashant@webkul.com"
}
],
"require": {},
"require": {
"webkul/laravel-core": "dev-master"
},
"autoload": {
"psr-4": {
"Webkul\\Cart\\": "src/"

View File

@ -4,7 +4,7 @@ use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateCartItemsTable extends Migration
class CreateCartProductsTable extends Migration
{
/**
* Run the migrations.
@ -13,7 +13,7 @@ class CreateCartItemsTable extends Migration
*/
public function up()
{
Schema::create('cart_items', function (Blueprint $table) {
Schema::create('cart_products', function (Blueprint $table) {
$table->increments('id');
$table->integer('product_id')->unsigned();
$table->foreign('product_id')->references('id')->on('products');

View File

@ -4,9 +4,11 @@ namespace Webkul\Cart\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Webkul\Cart\Repositories\CartRepository;
use Webkul\Cart\Repositories\CartItemsRepository;
use Webkul\Cart\Repositories\CartRepository as Cart;
use Webkul\Cart\Repositories\CartProductRepository as cartProduct;
use Webkul\Customer\Repositories\CustomerRepository;
use Session;
use Cookie;
/**
* Cart controller for the customer
@ -29,17 +31,228 @@ class CartController extends Controller
protected $cart;
protected $cartProduct;
public function __construct(CartRepository $cart)
{
$this->middleware(['customer', 'guest']);
protected $customer;
$this->_config = request('_config');
public function __construct(Cart $cart, cartProduct $cartProduct, CustomerRepository $customer) {
$this->middleware('customer')->except(['add', 'remove']);
$this->customer = $customer;
$this->cart = $cart;
$this->cartProduct = $cartProduct;
}
public function add() {
return "Adding Items to Cart";
public function add($id) {
$minutes = 5;
$products = array();
$customerLoggedIn = auth()->guard('customer')->check();
if($customerLoggedIn) {
//customer is authenticated
//assuming that there is data in cookie and customers' cart also.
$data['customer_id'] = auth()->guard('customer')->user()->id;
$data['channel_id'] = core()->getCurrentChannel()->id;
$cookieProducts = unserialize(Cookie::get('session_c'));
$cartCustomer = $this->cart->findOneByField('customer_id', $data['customer_id']);
//case when cookie has products and customer also have data in cart
if(isset($cartCustomer) && isset($cartCookie)) {
//there are already items in cart of customer
//for unsetting the cookie for the cart
// Cookie::queue(Cookie::forget('session_c'));
//check if there is any repetition in the products
$cartId = $cartCustomer->id ?? $cartCustomer['id'];
$previousCartProducts = $this->cart->withProducts($cartId);
//if there are products already in cart of that customer
if(isset($previousCartProducts)) {
foreach($previousCartProducts as $previousCartProduct) {
dump($previousCartProducts);
foreach($cookieProducts as $key => $cookieProduct) {
if($previousCartProduct->id == $cookieProduct) {
unset($cookieProducts[$key]);
}
}
}
}
/*if the above block executes it will remove duplicates
else product in cookies will be stored in the database.*/
foreach($cookieProducts as $key => $cookieProduct) {
$product['product_id'] = $cookieProduct;
$product['quantity'] = 1;
$product['cart_id'] = $cartId;
$this->cartProduct->create($product);
}
dump('Added the new items into the customer cart.');
return redirect()->back();
} else if(isset($cartCustomer) && !isset($cartCookie)){
//case when there is no data in customer's cart
$cartId = $cartCustomer->id ?? $cartCustomer['id'];
$previousCartProducts = $this->cart->withProducts($cartId);
foreach($previousCartProducts as $previousCartProduct) {
if($previousCartProduct->id == $id) {
dd('product already in the cart::AUTH');
return redirect()->back();
}
}
$product['product_id'] = $id;
$product['quantity'] = 1;
$product['cart_id'] = $cartId;
$this->cartProduct->create($product);
dump('new item added in the cart');
return redirect()->back();
} else if(!isset($cartCustomer) && isset($cartCookie)) {
$products = unserialize(Cookie::get('session_c'));
if ($cart = $this->cart->create($data)) {
foreach($products as $product) {
$product['product_id'] = $id;
$product['quantity'] = 1;
$product['cart_id'] = $cart;
$this->cartProduct->create($product);
}
return redirect()->back();
} else {
session()->flash('error', 'Cannot Add Your Items To Cart');
return redirect()->back();
}
}
} else {
//case when the customer is unauthenticated
if(Cookie::has('session_c')) {
$products = unserialize(Cookie::get('session_c'));
foreach($products as $key => $value) {
if($value == $id) {
dd('product already in the cart');
return redirect()->back();
}
}
array_push($products, $id);
Cookie::queue('session_c', serialize($products));
return redirect()->back();
} else {
array_push($products, $id);
Cookie::queue('session_c', serialize($products), $minutes);
return redirect()->back();
}
}
// if(Cookie::has('session_id')) {
// //add the item to the cart if not already there
// //Cookie::queue(\Cookie::forget('myCookie'));
// $match_prev_session = $this->cart->findOneByField('session_id', Cookie::get('session_id'));
// if(isset($match_prev_session)) {
// $cart_id = $match_prev_session->id; //cart ID from the existing session values from database and cookie
// $products = $this->cart->getProducts($match_prev_session->id); //getting the products associated with that cart id.
// $existingProductsLookup = $this->cartProduct->model->where(['product_id' => $id, 'cart_id' => $cart_id]);
// dd($existingProductsLookup);
// //no action to be taken if the product already exists
// if(isset($existingProductsLookup)) {
// return redirect()->back();
// } else {
// //insert the new products using cartProduct when product is new
// $cartProduct['product_id'] = $id;
// $cartProduct['quantity'] = 1;
// $cartProduct['cart_id'] = $cart_id;
// $this->cartProduct->create($cartProduct);
// return redirect()->back();
// }
// } else {
// return response()->json(['Cookie Already There', Cookie::get('session_id'), $id], 200);
// }
// } else {
// /*
// make the entry in database
// and show the database entry
// in cart
// */
// Cookie::queue('session_id', session()->getId(), $minutes);
// $data['session_id'] = session()->getId();
// $data['channel_id'] = core()->getCurrentChannel()->id;
// if($cart = $this->cart->create($data)) {
// $product['product_id'] = $id;
// $product['quantity'] = 1;
// $product['cart_id'] = $cart;
// $this->cartProduct->create($product);
// return redirect()->back();
// }
// }
}
public function remove($id) {
dd("Removing Item from Cart");
}
}

View File

@ -0,0 +1,13 @@
<?php
namespace Webkul\Cart\Http\Controllers;
use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Routing\Controller as BaseController;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
class Controller extends BaseController
{
use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
}

View File

@ -2,11 +2,19 @@
namespace Webkul\Cart\Models;
class Cart
use Illuminate\Database\Eloquent\Model;
use Webkul\Product\Models\Product;
class Cart extends Model
{
protected $table = 'cart';
protected $fillable = ['customer_id','session_id','channel_id','coupon_code','is_gift'];
protected $hidden = ['coupon_code'];
public function with_products() {
return $this->belongsToMany(Product::class, 'cart_products');
}
}

View File

@ -1,10 +1,11 @@
<?php
namespace Webkul\Cart\Models;
use Illuminate\Database\Eloquent\Model;
class CartItems
class CartProduct extends Model
{
protected $table = 'cart_items';
protected $table = 'cart_products';
protected $fillable = ['product_id','quantity','cart_id','tax_category_id','coupon_code'];
}

View File

@ -5,15 +5,17 @@ namespace Webkul\Cart\Providers;
use Illuminate\Support\ServiceProvider;
use Illuminate\Routing\Router;
use Webkul\Customer\Http\Middleware\RedirectIfNotCustomer;
use Webkul\User\Http\Middleware\RedirectIfNotAdmin;
class CartServiceProvider extends ServiceProvider
{
public function boot(Router $router)
{
$this->loadMigrationsFrom(__DIR__ . '/../Database/Migrations');
$router->aliasMiddleware('admin', RedirectIfNotAdmin::class);
$router->aliasMiddleware('customer', RedirectIfNotCustomer::class);
$this->loadMigrationsFrom(__DIR__ . '/../Database/migrations');
}
/**

View File

@ -11,7 +11,7 @@ use Webkul\Core\Eloquent\Repository;
* @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com)
*/
class CartItemsRepository extends Repository
class CartProductRepository extends Repository
{
/**
* Specify Model class name
@ -21,7 +21,7 @@ class CartItemsRepository extends Repository
function model()
{
return 'Webkul\Cart\Models\CartItems';
return 'Webkul\Cart\Models\CartProduct';
}
/**

View File

@ -51,4 +51,9 @@ class CartRepository extends Repository
return $cart;
}
public function getProducts($id) {
return $this->model->find($id)->with_products;
}
}

View File

@ -140,7 +140,8 @@ class Core
$channel = $this->getCurrentChannel();
$currencyCode = $channel->base_currency->code;
// $currencyCode = $channel->base_currency->code;
$currencyCode = $channel->base_currency;
return currency($price, $currencyCode);
}

View File

@ -17,6 +17,7 @@ use Auth;
* @author Prashant Singh <prashant.singh852@webkul.com>
* @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com)
*/
class AccountController extends Controller
{
/**

View File

@ -53,9 +53,16 @@ class SessionController extends Controller
return back();
}
$cookieProducts = unserialize(Cookie::get('session_c'));
if(isset($cookieProducts)){
return redirect()->action('Cart\Http\Controllers\CartController@add', [$cookieProducts]);
} else {
return redirect()->intended(route($this->_config['redirect']));
}
}
public function destroy($id)
{
auth()->guard('customer')->logout();

View File

@ -18,6 +18,8 @@ class Product extends Model
protected $with = ['attribute_family', 'inventories'];
// protected $table = 'products';
/**
* Get the product attribute family that owns the product.
*/

View File

@ -14,6 +14,14 @@ Route::group(['middleware' => ['web']], function () {
'view' => 'shop::products.view'
])->name('shop.products.index');
// //Routes for product cart
// Route::post('products/cart/test', 'Webkul\Cart\Http\Controllers\CartController@test')->name('cart.test');
Route::post('products/cart/add/{id}', 'Webkul\Cart\Http\Controllers\CartController@add')->name('cart.add');
Route::post('product/cart/remove/{id}', 'Webkul\Cart\Http\Controllers\CartController@remove')->name('cart.remove');
//Routes for product cart ends
// Product Review routes
Route::get('/reviews/{slug}', 'Webkul\Shop\Http\Controllers\ReviewController@index')->defaults('_config', [
@ -28,10 +36,6 @@ Route::group(['middleware' => ['web']], function () {
'redirect' => 'admin.reviews.index'
])->name('admin.reviews.store');
// Route::view('/products/{slug}', 'shop::store.product.details.index');
Route::view('/cart', 'shop::store.product.view.cart.index');
//customer routes starts here
Route::prefix('customer')->group(function () {
@ -44,7 +48,6 @@ Route::group(['middleware' => ['web']], function () {
'redirect' => 'customer.account.index'
])->name('customer.session.create');
// Registration Routes
Route::get('register', 'Webkul\Customer\Http\Controllers\RegistrationController@show')->defaults('_config', [
'view' => 'shop::customers.signup.index' //hint path
@ -113,7 +116,7 @@ Route::group(['middleware' => ['web']], function () {
])->name('customer.address.edit');
Route::post('address/edit', 'Webkul\Customer\Http\Controllers\AddressController@edit')->defaults('_config', [
'view' => 'shop::customers.account.address.address'
'redirect' => 'customer.address.index'
])->name('customer.address.edit');
/* Routes for Addresses ends here */

View File

@ -17,7 +17,7 @@ class ComposerServiceProvider extends ServiceProvider
public function boot()
{
//using the class based composers...
View::composer('shop::layouts.header.index', 'Webkul\Shop\Http\ViewComposers\Categories\CategoryComposer');
View::composer(['shop::layouts.header.index', 'shop::layouts.footer'], 'Webkul\Shop\Http\ViewComposers\Categories\CategoryComposer');
}
/**

View File

@ -998,9 +998,6 @@ section.slider-block {
}
//account ends here
//customers page css ends here
// product pages css starts here
@ -1018,124 +1015,101 @@ section.product-detail, section.product-review {
flex-flow: row;
margin-top: 21px;
.mixed-group {
// .rating-reviews {
// margin-top: 30px;
.single-image {
padding: 2px;
// .title-inline {
// display: inline-flex;
// align-items: center;
// justify-content: space-between;
// margin-bottom: 20px;
// width: 100%;
img {
height: 280px;
width: 280px;
}
}
// button {
// float: right;
// border-radius: 0px !important;
// }
// }
.details {
// .overall {
// display: flex;
// flex-direction: row;
// align-items: center;
// justify-content: space-between;
// height: 150px;
.product-name {
margin-top: 20px;
font-size: 24px;
margin-bottom: 20px;
}
// .left-side {
// margin-bottom: 20px;
.product-price {
margin-bottom: 14px;
}
}
}
// .number{
// font-size: 34px;
// }
// }
.rating-reviews {
margin-top: 30px;
// .right-side {
// display: block;
.title-inline {
display: inline-flex;
align-items: center;
justify-content: space-between;
margin-bottom: 20px;
width: 100%;
// .rater {
// display: inline-flex;
// align-items: center;
button {
float: right;
border-radius: 0px !important;
}
}
// .star {
// width: 50px;
// height: 20px;
// padding: 1px;
// margin-right: 8px;
// }
.overall {
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
height: 150px;
// .line-bar {
// height: 4px;
// width: 158px;
// margin-right: 12px;
// background: $bar-color;
.left-side {
margin-bottom: 20px;
// .line-value {
// height: 4px;
// width: 100px;
// background-color: $dark-blue-shade;
// }
// }
// }
// }
// }
.number{
font-size: 34px;
}
}
// .reviews {
// margin-top: 34px;
// margin-bottom: 90px;
.right-side {
display: block;
// .review {
// margin-bottom: 25px;
.rater {
display: inline-flex;
align-items: center;
// .title {
// margin-bottom: 5px;
// }
.star {
width: 50px;
height: 20px;
padding: 1px;
margin-right: 8px;
}
// .stars {
// margin-bottom: 15px;
// }
// .message {
// margin-bottom: 10px;
// }
// }
// .view-all {
// margin-top:15px;
// color: $logo-color;
// margin-bottom:15px;
// }
// }
// }
.line-bar {
height: 4px;
width: 158px;
margin-right: 12px;
background: $bar-color;
.line-value {
height: 4px;
width: 100px;
background-color: $dark-blue-shade;
}
}
}
}
}
.reviews {
margin-top: 34px;
margin-bottom: 90px;
.review {
margin-bottom: 25px;
.title {
margin-bottom: 5px;
}
.stars {
margin-bottom: 15px;
}
.message {
margin-bottom: 10px;
}
}
.view-all {
margin-top:15px;
color: $logo-color;
margin-bottom:15px;
}
}
}
.product-gallery-group {
margin-right: 2.5%;
position: inherit;
div.product-image-group {
display:flex;
flex-direction: row;
justify-content: flex-start;
margin-right: 2.5%;
.side-group {
display: flex;
@ -1160,8 +1134,33 @@ section.product-detail, section.product-review {
}
}
}
.product-button-group {
display: inline-flex;
justify-content: space-between;
width: 100%;
// padding: 0.6%;
.details {
form{
width: 100%;
height: 45px;
.add-to-cart {
width: 100%;
border-radius: 0px;
background-color: $color-black;
}
.buy-now {
width: 100%;
border-radius: 0px;
}
}
}
}
.product-details {
width: 100%;
.product-heading {
font-size: 24px;

View File

@ -1,6 +1,5 @@
<section class="featured-products">
<div class="featured-heading">
{{ $session_id = session()->getId() }}<br/>
New Products<br/>
<span class="featured-seperator" style="color:lightgrey;">_____</span>
</div>

View File

@ -4,11 +4,9 @@
<div class="list-container">
<span class="list-heading">Categories</span>
<ul class="list-group">
<li>MEN</li>
<li>Women</li>
<li>Kids</li>
<li>Accessories</li>
<li>Home & Living</li>
@foreach($categories as $key => $category)
<li>{{ $category['name'] }}</li>
@endforeach
</ul>
</div>
<div class="list-container">

View File

@ -1,4 +1,4 @@
<div class="header">
<div class="header" id="header">
<div class="header-top">

View File

@ -7,12 +7,11 @@
<span class="breadcrumb">Home</span> > <span class="breadcrumb">Men</span> > <span class="breadcrumb">Slit Open Jeans</span>
</div>
<div class="layouter">
@include ('shop::products.view.gallery')
<div class="details">
<div class="product-details" id="dealit">
<div class="product-heading">
<span>{{ $product->name }}</span>
@ -62,4 +61,77 @@
@include ('shop::products.view.up-sells')
</section>
@push('scripts')
<script type="text/javascript">
var topBoundOfProductGallery = 0;
function getTopBound() {
var rect = document.getElementById("getbound").getBoundingClientRect();
topBoundOfProductGallery = rect.top;
console.log('From Top = ', rect.top);
}
window.onload = getTopBound;
// window.onscroll = function() {
// myFunction()
// };
// $(document).ready(function () {
// $(document).scroll(function (event) {
// var scroll = $(document).scrollTop();
// if(scroll > 182) {
// $('#dealit').css('width', '50%');
// $('#dealit').css('margin-left', '59.7%');
// $('#getbound').css('position', 'fixed');
// $('#getbound').css('top', '0');
// } else if(scroll < 182) {
// $('#dealit').css('width', '100%');
// $('#dealit').css('margin-left', '');
// $('#getbound').css('position', '');
// $('#getbound').css('top', '');
// }
// });
// });
// function myFunction() {
// if(document.body.scrollTop > 182 || document.documentElement.scrollTop > 182) {
// // document.getElementById('dealit').style.style = 'none';
// document.getElementById('dealit').classList.remove("product-details");
// document.getElementById('dealit').width = '50%';
// document.getElementById('dealit').marginLeft = '60%';
// document.getElementById('getbound').style.position = 'fixed';
// document.getElementById('getbound').style.top = '0';
// }
// else if(document.body.scrollTop < 182 || document.documentElement.scrollTop < 182) {
// document.getElementById('dealit').classList.add("product-details");
// document.getElementById('dealit').width = '100%';
// document.getElementById('dealit').marginLeft = '0';
// document.getElementById('getbound').style.position = '';
// document.getElementById('getbound').style.top = '';
// }
// }
</script>
@endpush
@endsection

View File

@ -1,3 +1,4 @@
<div class="product-gallery-group" id="getbound">
<div class="product-image-group">
<div class="side-group">
@ -14,3 +15,21 @@
</div>
</div>
<div class="product-button-group">
<form method="POST" action="{{ route('cart.add', $product->id) }}">
{{ csrf_field() }}
<input type="hidden" name="product_id" value="{{ $product->id }}">
<input type="hidden" name="qty" value="1">
<input type="submit" class="btn btn-lg add-to-cart" value="Add to Cart">
</form>
{{-- <form>
<input type="hidden" name="product_id" value="">
<input type="hidden" name="qty" value="1">
<button type="submit" class="btn btn-lg btn-primary buy-now">Buy Now</button>
</form> --}}
</div>
</div>

View File

@ -953,7 +953,7 @@ class ProductGrid
$this->allAttributes = $this->getAttributes();
$this->getDbQueryResults();
dd($this->results);
// dd($this->results);
return view('ui::datagrid.index', [
'css' => $this->css,
'results' => $this->results,

View File

@ -1130,134 +1130,12 @@ section.product-detail div.layouter, section.product-review div.layouter {
margin-top: 21px;
}
section.product-detail div.layouter .mixed-group .single-image, section.product-review div.layouter .mixed-group .single-image {
padding: 2px;
section.product-detail div.layouter .product-gallery-group, section.product-review div.layouter .product-gallery-group {
margin-right: 2.5%;
position: inherit;
}
section.product-detail div.layouter .mixed-group .single-image img, section.product-review div.layouter .mixed-group .single-image img {
height: 280px;
width: 280px;
}
section.product-detail div.layouter .mixed-group .details .product-name, section.product-review div.layouter .mixed-group .details .product-name {
margin-top: 20px;
font-size: 24px;
margin-bottom: 20px;
}
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 .rating-reviews, section.product-review div.layouter .rating-reviews {
margin-top: 30px;
}
section.product-detail div.layouter .rating-reviews .title-inline, section.product-review div.layouter .rating-reviews .title-inline {
display: -webkit-inline-box;
display: -ms-inline-flexbox;
display: inline-flex;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
-webkit-box-pack: justify;
-ms-flex-pack: justify;
justify-content: space-between;
margin-bottom: 20px;
width: 100%;
}
section.product-detail div.layouter .rating-reviews .title-inline button, section.product-review div.layouter .rating-reviews .title-inline button {
float: right;
border-radius: 0px !important;
}
section.product-detail div.layouter .rating-reviews .overall, section.product-review div.layouter .rating-reviews .overall {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-orient: horizontal;
-webkit-box-direction: normal;
-ms-flex-direction: row;
flex-direction: row;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
-webkit-box-pack: justify;
-ms-flex-pack: justify;
justify-content: space-between;
height: 150px;
}
section.product-detail div.layouter .rating-reviews .overall .left-side, section.product-review div.layouter .rating-reviews .overall .left-side {
margin-bottom: 20px;
}
section.product-detail div.layouter .rating-reviews .overall .left-side .number, section.product-review div.layouter .rating-reviews .overall .left-side .number {
font-size: 34px;
}
section.product-detail div.layouter .rating-reviews .overall .right-side, section.product-review div.layouter .rating-reviews .overall .right-side {
display: block;
}
section.product-detail div.layouter .rating-reviews .overall .right-side .rater, section.product-review div.layouter .rating-reviews .overall .right-side .rater {
display: -webkit-inline-box;
display: -ms-inline-flexbox;
display: inline-flex;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
}
section.product-detail div.layouter .rating-reviews .overall .right-side .rater .star, section.product-review div.layouter .rating-reviews .overall .right-side .rater .star {
width: 50px;
height: 20px;
padding: 1px;
margin-right: 8px;
}
section.product-detail div.layouter .rating-reviews .overall .right-side .rater .line-bar, section.product-review div.layouter .rating-reviews .overall .right-side .rater .line-bar {
height: 4px;
width: 158px;
margin-right: 12px;
background: #D8D8D8;
}
section.product-detail div.layouter .rating-reviews .overall .right-side .rater .line-bar .line-value, section.product-review div.layouter .rating-reviews .overall .right-side .rater .line-bar .line-value {
height: 4px;
width: 100px;
background-color: #0031F0;
}
section.product-detail div.layouter .rating-reviews .reviews, section.product-review div.layouter .rating-reviews .reviews {
margin-top: 34px;
margin-bottom: 90px;
}
section.product-detail div.layouter .rating-reviews .reviews .review, section.product-review div.layouter .rating-reviews .reviews .review {
margin-bottom: 25px;
}
section.product-detail div.layouter .rating-reviews .reviews .review .title, section.product-review div.layouter .rating-reviews .reviews .review .title {
margin-bottom: 5px;
}
section.product-detail div.layouter .rating-reviews .reviews .review .stars, section.product-review div.layouter .rating-reviews .reviews .review .stars {
margin-bottom: 15px;
}
section.product-detail div.layouter .rating-reviews .reviews .review .message, section.product-review div.layouter .rating-reviews .reviews .review .message {
margin-bottom: 10px;
}
section.product-detail div.layouter .rating-reviews .reviews .view-all, section.product-review div.layouter .rating-reviews .reviews .view-all {
margin-top: 15px;
color: #0031f0;
margin-bottom: 15px;
}
section.product-detail div.layouter div.product-image-group, section.product-review div.layouter div.product-image-group {
section.product-detail div.layouter .product-gallery-group div.product-image-group, section.product-review div.layouter .product-gallery-group div.product-image-group {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
@ -1268,10 +1146,9 @@ section.product-detail div.layouter div.product-image-group, section.product-rev
-webkit-box-pack: start;
-ms-flex-pack: start;
justify-content: flex-start;
margin-right: 2.5%;
}
section.product-detail div.layouter div.product-image-group .side-group, section.product-review div.layouter div.product-image-group .side-group {
section.product-detail div.layouter .product-gallery-group div.product-image-group .side-group, section.product-review div.layouter .product-gallery-group div.product-image-group .side-group {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
@ -1282,98 +1159,128 @@ section.product-detail div.layouter div.product-image-group .side-group, section
margin-right: 4px;
}
section.product-detail div.layouter div.product-image-group .product-hero-image, section.product-review div.layouter div.product-image-group .product-hero-image {
section.product-detail div.layouter .product-gallery-group div.product-image-group .product-hero-image, section.product-review div.layouter .product-gallery-group div.product-image-group .product-hero-image {
display: block;
position: relative;
}
section.product-detail div.layouter div.product-image-group .product-hero-image .wishlist, section.product-review div.layouter div.product-image-group .product-hero-image .wishlist {
section.product-detail div.layouter .product-gallery-group div.product-image-group .product-hero-image .wishlist, section.product-review div.layouter .product-gallery-group div.product-image-group .product-hero-image .wishlist {
position: absolute;
top: 10px;
right: 12px;
}
section.product-detail div.layouter div.product-image-group .product-hero-image .share, section.product-review div.layouter div.product-image-group .product-hero-image .share {
section.product-detail div.layouter .product-gallery-group div.product-image-group .product-hero-image .share, section.product-review div.layouter .product-gallery-group div.product-image-group .product-hero-image .share {
position: absolute;
top: 10px;
right: 45px;
}
section.product-detail div.layouter .details .product-heading, section.product-review div.layouter .details .product-heading {
section.product-detail div.layouter .product-gallery-group .product-button-group, section.product-review div.layouter .product-gallery-group .product-button-group {
display: -webkit-inline-box;
display: -ms-inline-flexbox;
display: inline-flex;
-webkit-box-pack: justify;
-ms-flex-pack: justify;
justify-content: space-between;
width: 100%;
}
section.product-detail div.layouter .product-gallery-group .product-button-group form, section.product-review div.layouter .product-gallery-group .product-button-group form {
width: 100%;
height: 45px;
}
section.product-detail div.layouter .product-gallery-group .product-button-group form .add-to-cart, section.product-review div.layouter .product-gallery-group .product-button-group form .add-to-cart {
width: 100%;
border-radius: 0px;
background-color: black;
}
section.product-detail div.layouter .product-gallery-group .product-button-group form .buy-now, section.product-review div.layouter .product-gallery-group .product-button-group form .buy-now {
width: 100%;
border-radius: 0px;
}
section.product-detail div.layouter .product-details, section.product-review div.layouter .product-details {
width: 100%;
}
section.product-detail div.layouter .product-details .product-heading, section.product-review div.layouter .product-details .product-heading {
font-size: 24px;
color: #242424;
margin-bottom: 14px;
}
section.product-detail div.layouter .details .rating, section.product-review div.layouter .details .rating {
section.product-detail div.layouter .product-details .rating, section.product-review div.layouter .product-details .rating {
color: #242424;
margin-bottom: 14px;
}
section.product-detail div.layouter .details .product-price, section.product-review div.layouter .details .product-price {
section.product-detail div.layouter .product-details .product-price, section.product-review div.layouter .product-details .product-price {
margin-bottom: 14px;
font-size: 24px;
}
section.product-detail div.layouter .details .product-price .special-price, section.product-review div.layouter .details .product-price .special-price {
section.product-detail div.layouter .product-details .product-price .special-price, section.product-review div.layouter .product-details .product-price .special-price {
font-size: 24px;
}
section.product-detail div.layouter .details .stock-status, section.product-review div.layouter .details .stock-status {
section.product-detail div.layouter .product-details .stock-status, section.product-review div.layouter .product-details .stock-status {
margin-bottom: 14px;
}
section.product-detail div.layouter .details .description, section.product-review div.layouter .details .description {
section.product-detail div.layouter .product-details .description, section.product-review div.layouter .product-details .description {
margin-bottom: 14px;
}
section.product-detail div.layouter .details .full-specifications td, section.product-review div.layouter .details .full-specifications td {
section.product-detail div.layouter .product-details .full-specifications td, section.product-review div.layouter .product-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 {
section.product-detail div.layouter .product-details .full-specifications td:first-child, section.product-review div.layouter .product-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 {
section.product-detail div.layouter .product-details .accordian .accordian-header, section.product-review div.layouter .product-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 {
section.product-detail div.layouter .product-details .attributes, section.product-review div.layouter .product-details .attributes {
display: block;
width: 100%;
}
section.product-detail div.layouter .details .attributes .attribute, section.product-review div.layouter .details .attributes .attribute {
section.product-detail div.layouter .product-details .attributes .attribute, section.product-review div.layouter .product-details .attributes .attribute {
height: 39px;
margin-bottom: 20px;
}
section.product-detail div.layouter .details .attributes .attribute .title, section.product-review div.layouter .details .attributes .attribute .title {
section.product-detail div.layouter .product-details .attributes .attribute .title, section.product-review div.layouter .product-details .attributes .attribute .title {
float: left;
height: 100%;
min-width: 130px;
padding-top: 9px;
}
section.product-detail div.layouter .details .attributes .attribute .values, section.product-review div.layouter .details .attributes .attribute .values {
section.product-detail div.layouter .product-details .attributes .attribute .values, section.product-review div.layouter .product-details .attributes .attribute .values {
display: -webkit-inline-box;
display: -ms-inline-flexbox;
display: inline-flex;
}
section.product-detail div.layouter .details .attributes .attribute .values .colors, section.product-review div.layouter .details .attributes .attribute .values .colors {
section.product-detail div.layouter .product-details .attributes .attribute .values .colors, section.product-review div.layouter .product-details .attributes .attribute .values .colors {
margin-right: 5px;
}
section.product-detail div.layouter .details .attributes .attribute .values .colors:last-child, section.product-review div.layouter .details .attributes .attribute .values .colors:last-child {
section.product-detail div.layouter .product-details .attributes .attribute .values .colors:last-child, section.product-review div.layouter .product-details .attributes .attribute .values .colors:last-child {
margin-right: 0;
}
section.product-detail div.layouter .details .attributes .attribute .values .red, section.product-review div.layouter .details .attributes .attribute .values .red {
section.product-detail div.layouter .product-details .attributes .attribute .values .red, section.product-review div.layouter .product-details .attributes .attribute .values .red {
height: 37px;
width: 37px;
background: red;
@ -1381,7 +1288,7 @@ section.product-detail div.layouter .details .attributes .attribute .values .red
border-radius: 2px;
}
section.product-detail div.layouter .details .attributes .attribute .values .blue, section.product-review div.layouter .details .attributes .attribute .values .blue {
section.product-detail div.layouter .product-details .attributes .attribute .values .blue, section.product-review div.layouter .product-details .attributes .attribute .values .blue {
height: 37px;
width: 37px;
background: blue;
@ -1389,7 +1296,7 @@ section.product-detail div.layouter .details .attributes .attribute .values .blu
border-radius: 2px;
}
section.product-detail div.layouter .details .attributes .attribute .values .green, section.product-review div.layouter .details .attributes .attribute .values .green {
section.product-detail div.layouter .product-details .attributes .attribute .values .green, section.product-review div.layouter .product-details .attributes .attribute .values .green {
height: 37px;
width: 37px;
background: green;
@ -1397,7 +1304,7 @@ section.product-detail div.layouter .details .attributes .attribute .values .gre
border-radius: 2px;
}
section.product-detail div.layouter .details .attributes .attribute .values .size, section.product-review div.layouter .details .attributes .attribute .values .size {
section.product-detail div.layouter .product-details .attributes .attribute .values .size, section.product-review div.layouter .product-details .attributes .attribute .values .size {
margin-right: 5px;
line-height: 38px;
height: 37px;
@ -1408,69 +1315,69 @@ section.product-detail div.layouter .details .attributes .attribute .values .siz
vertical-align: middle;
}
section.product-detail div.layouter .details .attributes .attribute .values .size:last-child, section.product-review div.layouter .details .attributes .attribute .values .size:last-child {
section.product-detail div.layouter .product-details .attributes .attribute .values .size:last-child, section.product-review div.layouter .product-details .attributes .attribute .values .size:last-child {
margin-right: 0;
}
section.product-detail div.layouter .details .attributes .attribute .values .quantity .values .control, section.product-review div.layouter .details .attributes .attribute .values .quantity .values .control {
section.product-detail div.layouter .product-details .attributes .attribute .values .quantity .values .control, section.product-review div.layouter .product-details .attributes .attribute .values .quantity .values .control {
height: 37px !important;
width: 30px !important;
}
section.product-detail div.layouter .details .full-description, section.product-review div.layouter .details .full-description {
section.product-detail div.layouter .product-details .full-description, section.product-review div.layouter .product-details .full-description {
font-size: 16px;
}
section.product-detail div.layouter .details .rating-reviews, section.product-review div.layouter .details .rating-reviews {
section.product-detail div.layouter .product-details .rating-reviews, section.product-review div.layouter .product-details .rating-reviews {
margin-top: 30px;
}
section.product-detail div.layouter .details .rating-reviews .title, section.product-review div.layouter .details .rating-reviews .title {
section.product-detail div.layouter .product-details .rating-reviews .title, section.product-review div.layouter .product-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 {
section.product-detail div.layouter .product-details .rating-reviews .overall, section.product-review div.layouter .product-details .rating-reviews .overall {
margin-bottom: 5px;
}
section.product-detail div.layouter .details .rating-reviews .overall .review-info .number, section.product-review div.layouter .details .rating-reviews .overall .review-info .number {
section.product-detail div.layouter .product-details .rating-reviews .overall .review-info .number, section.product-review div.layouter .product-details .rating-reviews .overall .review-info .number {
font-size: 34px;
}
section.product-detail div.layouter .details .rating-reviews .overall button, section.product-review div.layouter .details .rating-reviews .overall button {
section.product-detail div.layouter .product-details .rating-reviews .overall button, section.product-review div.layouter .product-details .rating-reviews .overall button {
float: right;
border-radius: 0px !important;
}
section.product-detail div.layouter .details .rating-reviews .reviews, section.product-review div.layouter .details .rating-reviews .reviews {
section.product-detail div.layouter .product-details .rating-reviews .reviews, section.product-review div.layouter .product-details .rating-reviews .reviews {
margin-top: 34px;
margin-bottom: 80px;
}
section.product-detail div.layouter .details .rating-reviews .reviews .review, section.product-review div.layouter .details .rating-reviews .reviews .review {
section.product-detail div.layouter .product-details .rating-reviews .reviews .review, section.product-review div.layouter .product-details .rating-reviews .reviews .review {
margin-bottom: 25px;
}
section.product-detail div.layouter .details .rating-reviews .reviews .review .stars, section.product-review div.layouter .details .rating-reviews .reviews .review .stars {
section.product-detail div.layouter .product-details .rating-reviews .reviews .review .stars, section.product-review div.layouter .product-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 {
section.product-detail div.layouter .product-details .rating-reviews .reviews .review .stars .icon, section.product-review div.layouter .product-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 {
section.product-detail div.layouter .product-details .rating-reviews .reviews .review .message, section.product-review div.layouter .product-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 {
section.product-detail div.layouter .product-details .rating-reviews .reviews .review .reviewer-details, section.product-review div.layouter .product-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 {
section.product-detail div.layouter .product-details .rating-reviews .reviews .view-all, section.product-review div.layouter .product-details .rating-reviews .reviews .view-all {
margin-top: 15px;
color: #0031f0;
margin-bottom: 15px;