conflict resolve
This commit is contained in:
commit
8fbf2b7b79
|
|
@ -1,51 +0,0 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
|
||||
'flatrate' => [
|
||||
[
|
||||
'code' => 'flatrate_one',
|
||||
'title' => 'Flatrate One',
|
||||
'name' => 'fixed 20% discount for today',
|
||||
'description' => 'this is a flat rate',
|
||||
'status' => '1',
|
||||
'price' => '10',
|
||||
'type' => [
|
||||
'per_unit' => 'Per Unit',
|
||||
'per order' => 'Per Order',
|
||||
],
|
||||
'class' => 'Webkul\Shipping\Helper\Rate',
|
||||
],
|
||||
|
||||
[
|
||||
'code' => 'flatrate_two',
|
||||
'title' => 'Flatrate Two',
|
||||
'name' => 'fixed 50% discount till 10/10/2018',
|
||||
'description' => 'this is a flat rate',
|
||||
'status' => '1',
|
||||
'price' => '100',
|
||||
'type' => [
|
||||
'per unit' => 'Per Unit',
|
||||
'per order' => 'Per Order',
|
||||
],
|
||||
'class' => 'Webkul\Shipping\Helper\Rate',
|
||||
],
|
||||
|
||||
[
|
||||
'code' => 'flatrate_three',
|
||||
'title' => 'Flatrate Three',
|
||||
'name' => 'fixed 30% discount',
|
||||
'description' => 'this is a flat rate',
|
||||
'status' => '1',
|
||||
'price' => '1000',
|
||||
'type' => [
|
||||
'per unit' => 'Per Unit',
|
||||
'per order' => 'Per Order',
|
||||
],
|
||||
'class' => 'Webkul\Shipping\Helper\Rate',
|
||||
]
|
||||
]
|
||||
|
||||
]
|
||||
|
||||
?>
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
'flatrate' => [
|
||||
'code' => 'flatrate',
|
||||
'title' => 'Flatrate',
|
||||
'description' => 'This is a flat rate',
|
||||
'status' => '1',
|
||||
'default_rate' => '10',
|
||||
'type' => [
|
||||
'per_unit' => 'Per Unit',
|
||||
'per order' => 'Per Order',
|
||||
],
|
||||
'class' => 'Webkul\Shipping\Carriers\FlatRate',
|
||||
]
|
||||
];
|
||||
|
||||
?>
|
||||
|
|
@ -4,7 +4,6 @@
|
|||
{{ __('admin::app.catalog.attributes.add-title') }}
|
||||
@stop
|
||||
|
||||
|
||||
@section('content')
|
||||
<div class="content">
|
||||
<form method="POST" action="{{ route('admin.catalog.attributes.store') }}" @submit.prevent="onSubmit">
|
||||
|
|
|
|||
|
|
@ -18,7 +18,9 @@
|
|||
?>
|
||||
<div class="control-group" :class="[errors.has('inventories[{{ $inventorySource->id }}]') ? 'has-error' : '']">
|
||||
<label>{{ $inventorySource->name }}</label>
|
||||
|
||||
<input type="text" v-validate="'numeric|min:0'" name="inventories[{{ $inventorySource->id }}]" class="control" value="{{ $qty }}"/>
|
||||
|
||||
<span class="control-error" v-if="errors.has('inventories[{{ $inventorySource->id }}]')">@{{ errors.first('inventories[{!! $inventorySource->id !!}]') }}</span>
|
||||
</div>
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
<ul class="menubar">
|
||||
@foreach($menu->items as $menuItem)
|
||||
<li class="menu-item {{ $menu->getActive($menuItem) }}">
|
||||
<a href="{{ $menuItem['url'] }}">
|
||||
<a href="{{ count($menuItem['children']) ? current($menuItem['children'])['url'] : $menuItem['url'] }}">
|
||||
<span class="icon {{ $menuItem['icon-class'] }}">
|
||||
</span>
|
||||
{{ $menuItem['name'] }}
|
||||
|
|
|
|||
|
|
@ -1,8 +1,7 @@
|
|||
@extends('admin::layouts.content')
|
||||
|
||||
@section('page_title')
|
||||
|
||||
@endsection
|
||||
{{ __('admin::app.users.users.title') }}
|
||||
@stop
|
||||
|
||||
@section('content')
|
||||
|
|
|
|||
|
|
@ -32,84 +32,93 @@ class Cart {
|
|||
|
||||
protected $customer;
|
||||
|
||||
public function __construct(CartRepository $cart, CartProductRepository $cartProduct, CustomerRepository $customer) {
|
||||
//Cookie expiry limit in minutes
|
||||
protected $minutes = 150;
|
||||
|
||||
public function __construct(CartRepository $cart, CartProductRepository $cartProduct, CustomerRepository $customer ,$minutes = 150) {
|
||||
|
||||
$this->customer = $customer;
|
||||
|
||||
$this->cart = $cart;
|
||||
|
||||
$this->cartProduct = $cartProduct;
|
||||
|
||||
$this->minutes = $minutes;
|
||||
}
|
||||
|
||||
public function guestUnitAdd($id) {
|
||||
|
||||
//empty array for storing the products
|
||||
$products = array();
|
||||
|
||||
$minutes = 10;
|
||||
|
||||
if(Cookie::has('cart_session_id')) {
|
||||
|
||||
//getting the cart session id from cookie
|
||||
$cart_session_id = Cookie::get('cart_session_id');
|
||||
|
||||
//finding current cart instance in the database table.
|
||||
$current_cart = $this->cart->findOneByField('session_id', $cart_session_id);
|
||||
|
||||
// dd('Cookie = ',$cart_session_id, 'Session = ', session()->get('cart_session_id'), 'DB = ', $current_cart->session_id);
|
||||
|
||||
//check there is any cart or not
|
||||
if(isset($current_cart)) {
|
||||
$current_cart_id = $current_cart['id'] ?? $current_cart->id;
|
||||
|
||||
$current_cart_session_id = $current_cart['session_id'] ?? $current_cart->session_id;
|
||||
} else {
|
||||
//if someone deleted then take the flow to the normal
|
||||
$this->repairCart($cart_session_id, $id);
|
||||
}
|
||||
|
||||
|
||||
//matching the session id present in the cookie and database are same or not.
|
||||
if((session()->get('cart_session_id') == Cookie::get('cart_session_id')) && ($current_cart_session_id == session()->get('cart_session_id'))) {
|
||||
$current_cart_products = array();
|
||||
|
||||
$current_cart_products = $this->cart->getProducts($current_cart_id);
|
||||
|
||||
//checking new product coming in the cart is new or previously added item.
|
||||
foreach($current_cart_products as $key => $value) {
|
||||
|
||||
$product_id = $value['id'] ?? $value->id;
|
||||
|
||||
if($product_id == $id) {
|
||||
//create status code to communicate with session flash
|
||||
session()->flash('error', 'Item Already In Cart');
|
||||
|
||||
//remove this its temporary
|
||||
dump('Item Already In Cart');
|
||||
|
||||
return redirect()->back();
|
||||
}
|
||||
}
|
||||
|
||||
//cart data being attached to the instace.
|
||||
$cart_data = $this->cart->attach($current_cart_id, $id, 1);
|
||||
|
||||
//getting the products after being attached to cart instance
|
||||
$cart_products = $this->cart->getProducts($current_cart_id);
|
||||
|
||||
//storing the information in session.
|
||||
session()->put('cart_data', [$current_cart, $cart_products]);
|
||||
|
||||
session()->flash('Success', 'Item Added In Cart');
|
||||
session()->flash('Success', 'Item Added To Cart Successfully');
|
||||
|
||||
dump($cart_products);
|
||||
|
||||
//return the control to the controller
|
||||
return redirect()->back();
|
||||
|
||||
} else {
|
||||
// throw new \Exception('Error, Many or Few Session discrepancies found.');
|
||||
|
||||
//repair the cart, will remake the session
|
||||
//and add the product in the new cart instance.
|
||||
$this->repairCart($cart_session_id, $id);
|
||||
}
|
||||
} else {
|
||||
//function call
|
||||
$this->createNewCart($id);
|
||||
}
|
||||
}
|
||||
|
||||
/*helpers*/
|
||||
public function makeCartSession($to_process) {
|
||||
session()->put('cart_session_id', $to_process);
|
||||
|
||||
return session()->get('cart_session_id');
|
||||
}
|
||||
|
||||
/**
|
||||
* Create New Cart
|
||||
|
|
@ -117,23 +126,20 @@ class Cart {
|
|||
* Session.
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
*/
|
||||
|
||||
public function createNewCart($id) {
|
||||
$minutes = 120;
|
||||
|
||||
$fresh_cart_session_id = session()->getId();
|
||||
|
||||
Cookie::queue('cart_session_id', $fresh_cart_session_id, $minutes);
|
||||
|
||||
$cart_session_id = $this->makeCartSession($fresh_cart_session_id);
|
||||
|
||||
$data['session_id'] = $fresh_cart_session_id;
|
||||
|
||||
$data['channel_id'] = core()->getCurrentChannel()->id;
|
||||
|
||||
if($cart = $this->cart->create($data)) {
|
||||
|
||||
$this->makeCartSession($fresh_cart_session_id);
|
||||
|
||||
$new_cart_id = $cart->id ?? $cart['id'];
|
||||
|
||||
$cart_product['product_id'] = $id;
|
||||
|
|
@ -146,7 +152,7 @@ class Cart {
|
|||
|
||||
session()->put('cart_data', [$cart, $cart_product]);
|
||||
|
||||
session()->flash('success', 'Product Added To Cart');
|
||||
session()->flash('success', 'Item Added To Cart Successfully');
|
||||
|
||||
return redirect()->back();
|
||||
}
|
||||
|
|
@ -156,6 +162,20 @@ class Cart {
|
|||
return redirect()->back();
|
||||
}
|
||||
|
||||
/**
|
||||
* This makes session
|
||||
* cart.
|
||||
*/
|
||||
public function makeCartSession($cart_session_id) {
|
||||
|
||||
$fresh_cart_session_id = $cart_session_id;
|
||||
|
||||
Cookie::queue('cart_session_id', $fresh_cart_session_id, $this->minutes);
|
||||
|
||||
session()->put('cart_session_id', $fresh_cart_session_id);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Reset Session and
|
||||
* Cookie values
|
||||
|
|
@ -164,8 +184,7 @@ class Cart {
|
|||
*
|
||||
* @return mixed
|
||||
*/
|
||||
|
||||
public function repairCart($cart_session_id, $product_id) {
|
||||
public function repairCart($cart_session_id ="null", $product_id = 0) {
|
||||
|
||||
if($cart_session_id == session()->get('cart_session_id')) {
|
||||
$data['session_id'] = $cart_session_id;
|
||||
|
|
@ -178,7 +197,7 @@ class Cart {
|
|||
|
||||
$this->cart->attach($cart_id, $product_id, 1);
|
||||
|
||||
session()->flash('success', 'Product Added In Cart');
|
||||
session()->flash('success', 'Item Added To Cart Successfully');
|
||||
|
||||
return redirect()->back();
|
||||
|
||||
|
|
@ -206,8 +225,8 @@ class Cart {
|
|||
public function guestUnitRemove($id) {
|
||||
|
||||
//remove the products here
|
||||
if(Cookie::has('session_c')) {
|
||||
$products = unserialize(Cookie::get('session_c'));
|
||||
if(Cookie::has('session_cart_id')) {
|
||||
$products = unserialize(Cookie::get('session_cart_id'));
|
||||
|
||||
foreach($products as $key => $value) {
|
||||
if($value == $id) {
|
||||
|
|
@ -215,7 +234,7 @@ class Cart {
|
|||
|
||||
array_push($products, $id);
|
||||
|
||||
Cookie::queue('session_c', serialize($products));
|
||||
Cookie::queue('session_cart_id', serialize($products));
|
||||
|
||||
return redirect()->back();
|
||||
}
|
||||
|
|
@ -233,46 +252,80 @@ class Cart {
|
|||
|
||||
$products = array();
|
||||
|
||||
// $customerLoggedIn = auth()->guard('customer')->check();
|
||||
|
||||
// //customer is authenticated
|
||||
// if ($customerLoggedIn) {
|
||||
//assuming that there is data in cookie and customer's cart also.
|
||||
if(!auth()->guard('customer')->check()) {
|
||||
throw new \Exception('This function is protected for auth customers only.');
|
||||
}
|
||||
|
||||
$data['customer_id'] = auth()->guard('customer')->user()->id;
|
||||
|
||||
$data['channel_id'] = core()->getCurrentChannel()->id;
|
||||
|
||||
$customerCart = $this->cart->findOneByField('customer_id', $data['customer_id']);
|
||||
$customer_cart = $this->cart->findOneByField('customer_id', $data['customer_id']);
|
||||
|
||||
//if there are products already in cart of that customer.
|
||||
$customerCartId = $customerCart->id ?? $customerCart['id'];
|
||||
$customer_cart_id = $customer_cart->id ?? $customer_cart['id'];
|
||||
|
||||
$customerCartProducts = $this->cart->getProducts($customerCartId);
|
||||
/**
|
||||
* Check if their any
|
||||
* instance of current
|
||||
* customer in the cart
|
||||
* table.
|
||||
*/
|
||||
if(isset($customer_cart)) {
|
||||
$customer_cart_products = $this->cart->getProducts($customer_cart_id);
|
||||
|
||||
if (isset($customerCartProducts)) {
|
||||
if (isset($customer_cart_products)) {
|
||||
|
||||
foreach ($customerCartProducts as $previousCartProduct) {
|
||||
foreach ($customer_cart_products as $customer_cart_product) {
|
||||
if($customer_cart_product->id == $id) {
|
||||
dump('Item already exists in cart');
|
||||
|
||||
if($previousCartProduct->id == $id) {
|
||||
dd('product already exists in cart');
|
||||
session()->flash('error', 'Item already exists in cart');
|
||||
|
||||
session()->flash('error', 'Product already exists in cart');
|
||||
return redirect()->back();
|
||||
|
||||
return redirect()->back();
|
||||
//maybe increase the quantity in here
|
||||
}
|
||||
}
|
||||
//add the product in the cart
|
||||
|
||||
$this->cart->attach($customer_cart_id, $id, 1);
|
||||
|
||||
session()->flash('success', 'Item Added To Cart Successfully');
|
||||
|
||||
return redirect()->back();
|
||||
} else {
|
||||
$this->cart->destroy($customer_cart_id);
|
||||
|
||||
session()->flash('error', 'Try Adding The Item Again');
|
||||
|
||||
dd('cart instance without any product found, delete it and create a new one for the current product id');
|
||||
|
||||
return redirect()->back();
|
||||
}
|
||||
//add the product in the cart
|
||||
} else {
|
||||
/**
|
||||
* this will work
|
||||
* for logged in users
|
||||
* and they do not have
|
||||
* any cart instance
|
||||
* found in the database.
|
||||
*/
|
||||
|
||||
$product['product_id'] = $id;
|
||||
if($new_cart = $this->cart->create($data)) {
|
||||
$new_cart_id = $new_cart->id ?? $new_cart['id'];
|
||||
|
||||
$product['quantity'] = 1;
|
||||
$this->cart->attach($new_cart_id, $id, 1);
|
||||
|
||||
$product['cart_id'] = $customerCartId;
|
||||
session()->flash('success', 'Item Added To Cart Successfully');
|
||||
|
||||
$this->cartProduct->create($product);
|
||||
return redirect()->back();
|
||||
|
||||
return redirect()->back();
|
||||
} else {
|
||||
session()->flash('error', 'Cannot Add Item in Cart');
|
||||
|
||||
return redirect()->back();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -295,105 +348,81 @@ class Cart {
|
|||
*/
|
||||
|
||||
public function mergeCart() {
|
||||
|
||||
//considering cookie as a source of truth.
|
||||
if(Cookie::has('cart_session_id')) {
|
||||
/*
|
||||
Check for previous cart of customer and
|
||||
pull products from that cart instance
|
||||
and then check for unique products
|
||||
and delete the record with session id
|
||||
and increase the quantity of the products
|
||||
that are added again before deleting the
|
||||
guest cart record.
|
||||
*/
|
||||
|
||||
//To hold the customer ID which is currently logged in
|
||||
$customer_id = auth()->guard('customer')->user()->id;
|
||||
|
||||
//having the session id saved in the cart.
|
||||
$cart_session_id = Cookie::get('cart_session_id');
|
||||
|
||||
$current_cart = $this->cart->findOneByField('session_id', $cart_session_id);
|
||||
//pull the record from cart table for above session id.
|
||||
$guest_cart = $this->cart->findOneByField('session_id', $cart_session_id);
|
||||
|
||||
//it is impossible to not have an entry in cart table and cart_products.
|
||||
//will later handle the exceoption.
|
||||
$current_cart_id = $current_cart['id'] ?? $current_cart->id;
|
||||
if(!isset($guest_cart)) {
|
||||
dd('Some One Deleted Cart or it wasn\'t there from the start');
|
||||
|
||||
$current_cart_session_id = $current_cart['session_id'] ?? $current_cart->session_id;
|
||||
|
||||
$current_cart_products = $this->cart->getProducts($current_cart_id);
|
||||
|
||||
$customer_id = auth()->guard('customer')->user()->id; //working
|
||||
|
||||
if($cart_session_id == $current_cart_session_id) {
|
||||
$current_cart_products = array();
|
||||
|
||||
$customer_cart = $this->cart->findByField(['customer_id'=> $customer_id]);
|
||||
|
||||
//check previous saved cart of customer.
|
||||
if(!$customer_cart->isEmpty()) {
|
||||
|
||||
$customer_cart_id = $customer_cart->id;
|
||||
|
||||
$customer_cart_products = $this->cart->getProducts($customer_cart_id);
|
||||
|
||||
foreach($current_cart_products as $key => $value) {
|
||||
|
||||
$product_id = $value['id'] ?? $value->id;
|
||||
|
||||
foreach($current_cart_products as $key => $current_cart_product) {
|
||||
|
||||
$current_product_id = $current_cart_product['id'] ?? $current_cart_product->id;
|
||||
|
||||
if($current_product_id == $product_id) {
|
||||
|
||||
unset($current_cart_products[$key]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
foreach($current_cart_products as $current_cart_product) {
|
||||
|
||||
$current_cart_product_id = $current_cart_product['id'] ?? $current_cart_product->id;
|
||||
|
||||
$this->cart->attach($current_cart_id, $current_cart_product_id, 1);
|
||||
}
|
||||
|
||||
$this->cart->update(['customer_id' => $customer_id], $current_cart_id);
|
||||
|
||||
$customer_cart = $this->cart->findOneByField('customer_id', $customer_id);
|
||||
|
||||
$customer_cart_id = $customer_cart->id;
|
||||
|
||||
if($this->cart->getProducts($customer_cart_id) && isset($current_cart_products)) {
|
||||
foreach($current_cart_products as $key => $value) {
|
||||
|
||||
array_push($cart_products, $current_cart_product);
|
||||
}
|
||||
}
|
||||
|
||||
session()->put('cart_data', [$customer_cart, $cart_products]);
|
||||
|
||||
session()->flash('Success', 'Item Added In Cart');
|
||||
|
||||
dump($cart_products);
|
||||
|
||||
return redirect()->back();
|
||||
} else {
|
||||
|
||||
$session_id = session()->getId();
|
||||
|
||||
$customer_id = auth()->guard('customer')->user()->id;
|
||||
|
||||
$updated_cart = $this->cart->update(['customer_id' => $customer_id, 'session_id' => $session_id], $current_cart_id);
|
||||
|
||||
$updated_cart_products = $this->cart->getProducts($updated_cart->id);
|
||||
|
||||
Cookie::queue('cart_session_id', $session_id, 120);
|
||||
|
||||
session()->put('cart_session_id', $session_id);
|
||||
|
||||
session('cart_data', [$updated_cart, $updated_cart_products]);
|
||||
|
||||
return redirect()->back();
|
||||
}
|
||||
} else {
|
||||
throw new \Exception('Error, Session discrepancies found.');
|
||||
|
||||
$this->repairCart($cart_session_id, $id);
|
||||
return redirect()->back();
|
||||
}
|
||||
} else {
|
||||
throw new \Exception('Nothing found');
|
||||
|
||||
return redirect()->back();
|
||||
$guest_cart_products = $this->cart->getProducts($guest_cart->id);
|
||||
|
||||
//check if the current logged in customer is also
|
||||
//having any previously saved cart instances.
|
||||
$customer_cart = $this->cart->findOneByField('customer_id', $customer_id);
|
||||
|
||||
if(isset($customer_cart)) {
|
||||
$customer_cart_products = $this->cart->getProducts($customer_cart->id);
|
||||
|
||||
foreach($guest_cart_products as $key => $guest_cart_product) {
|
||||
|
||||
foreach($customer_cart_products as $customer_cart_product) {
|
||||
|
||||
if($guest_cart_product->id == $customer_cart_product->id) {
|
||||
|
||||
$quantity = $guest_cart_product->toArray()['pivot']['quantity'] + 1;
|
||||
|
||||
$pivot = $guest_cart_product->toArray()['pivot'];
|
||||
|
||||
$saveQuantity = $this->cart->updateRelatedForMerge($pivot, 'quantity', $quantity);
|
||||
|
||||
unset($guest_cart_products[$key]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//insert the new products here.
|
||||
foreach ($guest_cart_products as $key => $guest_cart_product) {
|
||||
$product = $guest_cart_product->toArray();
|
||||
|
||||
$this->cart->updateRelatedForMerge($product['pivot'], 'cart_id', $customer_cart->id);
|
||||
}
|
||||
|
||||
//detach with guest cart records
|
||||
$this->cart->detachAndDeleteParent($guest_cart->id);
|
||||
|
||||
Cookie::queue(Cookie::forget('cart_session_id'));
|
||||
|
||||
return redirect()->back();
|
||||
} else {
|
||||
//this will just update the customer id column in the cart table
|
||||
$this->cart->update(['customer_id' => $customer_id], $guest_cart->id);
|
||||
|
||||
Cookie::queue(Cookie::forget('cart_session_id'));
|
||||
|
||||
return redirect()->back();
|
||||
}
|
||||
}
|
||||
return redirect()->back();
|
||||
}
|
||||
}
|
||||
|
|
@ -42,7 +42,7 @@ class CartController extends Controller
|
|||
|
||||
public function __construct(CartRepository $cart, CartProductRepository $cartProduct, CustomerRepository $customer) {
|
||||
|
||||
$this->middleware('customer')->except(['add', 'remove']);
|
||||
$this->middleware('customer')->except(['add', 'remove', 'test']);
|
||||
|
||||
$this->customer = $customer;
|
||||
|
||||
|
|
@ -80,4 +80,21 @@ class CartController extends Controller
|
|||
|
||||
return redirect()->back();
|
||||
}
|
||||
|
||||
// public function test() {
|
||||
// $cookie = Cookie::get('cart_session_id');
|
||||
|
||||
// $cart = $this->cart->findOneByField('session_id', $cookie);
|
||||
|
||||
// $cart_products = $this->cart->getProducts($cart->id);
|
||||
|
||||
// foreach($cart_products as $cart_product) {
|
||||
// $quantity = $cart_product->toArray()['pivot']['quantity'] + 1;
|
||||
|
||||
// $pivot = $cart_product->toArray()['pivot'];
|
||||
|
||||
// $saveQuantity = $this->cart->saveRelated($pivot, 'quantity', $quantity+1);
|
||||
// }
|
||||
// dd('done');
|
||||
// }
|
||||
}
|
||||
|
|
@ -10,23 +10,26 @@ use Auth;
|
|||
* Chekout controller for the customer
|
||||
* and guest for placing order
|
||||
*
|
||||
* @author Rahul Shukla <rahulshukla.symfony517@webkul.com>
|
||||
* @author Jitendra Singh <jitendra@webkul.com>
|
||||
* @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com)
|
||||
*/
|
||||
class CheckoutController extends Controller
|
||||
{
|
||||
|
||||
/**
|
||||
* Display a listing of the resource.
|
||||
* Contains route related configuration
|
||||
*
|
||||
* @return \Illuminate\Http\Response
|
||||
* @var array
|
||||
*/
|
||||
protected $_config;
|
||||
|
||||
/**
|
||||
* Create a new controller instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
// $this->middleware(['customer', 'guest']);
|
||||
|
||||
$this->_config = request('_config');
|
||||
}
|
||||
|
||||
|
|
@ -37,9 +40,7 @@ class CheckoutController extends Controller
|
|||
*/
|
||||
public function index()
|
||||
{
|
||||
$customer_id = auth()->guard('customer')->user();
|
||||
|
||||
return view($this->_config['view'],compact('customer_id'));
|
||||
return view($this->_config['view']);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,59 @@
|
|||
<?php
|
||||
|
||||
namespace Webkul\Cart\Http\ViewComposers;
|
||||
|
||||
use Illuminate\View\View;
|
||||
use Illuminate\Support\Collection;
|
||||
|
||||
use Webkul\Cart\Repositories\CartRepository;
|
||||
|
||||
use Cookie;
|
||||
use Cart;
|
||||
/**
|
||||
* cart List Composer on Navigation Menu
|
||||
*
|
||||
* @author Prashant Singh <prashant.singh852@webkul.com>
|
||||
* @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com)
|
||||
*/
|
||||
|
||||
class CartComposer
|
||||
{
|
||||
|
||||
/**
|
||||
* The cart implementation
|
||||
* for shop bundle's navigation
|
||||
* menu
|
||||
*/
|
||||
protected $cart;
|
||||
|
||||
/**
|
||||
* Bind data to the view.
|
||||
*
|
||||
* @param View $view
|
||||
* @return void
|
||||
*/
|
||||
public function __construct(CartRepository $cart) {
|
||||
$this->cart = $cart;
|
||||
}
|
||||
|
||||
public function compose(View $view) {
|
||||
if(auth()->guard('customer')->check()) {
|
||||
$cart = $this->cart->findOneByField('customer_id', auth()->guard('customer')->user()->id);
|
||||
|
||||
$cart_products = $this->cart->getProducts($cart['id']);
|
||||
|
||||
// dd($cart_products);
|
||||
|
||||
$view->with('cart', $cart_products);
|
||||
|
||||
} else {
|
||||
if(Cookie::has('cart_session_id')) {
|
||||
$cart = $this->cart->findOneByField('session_id', Cookie::get('cart_session_id'));
|
||||
|
||||
$cart_products = $this->cart->getProducts($cart['id']);
|
||||
|
||||
$view->with('cart', $cart_products);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -10,11 +10,12 @@ class Cart extends Model
|
|||
{
|
||||
protected $table = 'cart';
|
||||
|
||||
protected $fillable = ['customer_id','session_id','channel_id','coupon_code','is_gift'];
|
||||
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');
|
||||
|
||||
return $this->belongsToMany(Product::class, 'cart_products')->withPivot('id', 'product_id','quantity', 'cart_id');
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ use Illuminate\Foundation\AliasLoader;
|
|||
use Webkul\User\Http\Middleware\RedirectIfNotAdmin;
|
||||
use Webkul\Customer\Http\Middleware\RedirectIfNotCustomer;
|
||||
use Webkul\Cart\Facades\Cart;
|
||||
use Webkul\Cart\Providers\ComposerServiceProvider;
|
||||
|
||||
class CartServiceProvider extends ServiceProvider
|
||||
{
|
||||
|
|
@ -19,9 +20,9 @@ class CartServiceProvider extends ServiceProvider
|
|||
|
||||
$router->aliasMiddleware('admin', RedirectIfNotAdmin::class);
|
||||
|
||||
// $router->aliasMiddleware('customer', RedirectIfNotCustomer::class);
|
||||
$router->aliasMiddleware('customer', RedirectIfNotCustomer::class);
|
||||
|
||||
$this->register(EventServiceProvider::class);
|
||||
$this->app->register(ComposerServiceProvider::class);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -41,14 +42,14 @@ class CartServiceProvider extends ServiceProvider
|
|||
*/
|
||||
protected function registerFacades()
|
||||
{
|
||||
$loader = AliasLoader::getInstance();
|
||||
|
||||
$loader->alias('cart', Cart::class);
|
||||
//to make the cart facade and bind the
|
||||
//alias to the class needed to be called.
|
||||
$loader = AliasLoader::getInstance();
|
||||
$loader->alias('cart', CartFacade::class);
|
||||
|
||||
$this->app->singleton('cart', function () {
|
||||
return new cart();
|
||||
return new Cart();
|
||||
});
|
||||
|
||||
$this->app->bind('cart', 'Webkul\Cart\Cart');
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,32 @@
|
|||
<?php
|
||||
|
||||
namespace Webkul\Cart\Providers;
|
||||
|
||||
use Illuminate\Support\Facades\Event;
|
||||
use Illuminate\Support\Facades\Blade;
|
||||
use Illuminate\Support\ServiceProvider;
|
||||
use View;
|
||||
|
||||
class ComposerServiceProvider extends ServiceProvider
|
||||
{
|
||||
/**
|
||||
* Register bindings in the container.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function boot()
|
||||
{
|
||||
//using the class based composers...
|
||||
View::composer(['shop::layouts.header.index'], 'Webkul\Cart\Http\ViewComposers\CartComposer');
|
||||
}
|
||||
|
||||
/**
|
||||
* Register the service provider.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function register()
|
||||
{
|
||||
//
|
||||
}
|
||||
}
|
||||
|
|
@ -16,7 +16,7 @@ class CartRepository extends Repository
|
|||
/**
|
||||
* Specify Model class name
|
||||
*
|
||||
* @return mixed
|
||||
* @return Mixed
|
||||
*/
|
||||
|
||||
function model()
|
||||
|
|
@ -26,7 +26,7 @@ class CartRepository extends Repository
|
|||
|
||||
/**
|
||||
* @param array $data
|
||||
* @return mixed
|
||||
* @return Mixed
|
||||
*/
|
||||
|
||||
public function create(array $data)
|
||||
|
|
@ -40,7 +40,7 @@ class CartRepository extends Repository
|
|||
* @param array $data
|
||||
* @param $id
|
||||
* @param string $attribute
|
||||
* @return mixed
|
||||
* @return Mixed
|
||||
*/
|
||||
|
||||
public function update(array $data, $id, $attribute = "id")
|
||||
|
|
@ -61,18 +61,43 @@ class CartRepository extends Repository
|
|||
* Method to attach
|
||||
* associations
|
||||
*
|
||||
* @return Eloquent
|
||||
* @return Mixed
|
||||
*/
|
||||
public function attach($cart_id, $product_id, $quantity) {
|
||||
|
||||
$this->model->findOrFail($cart_id)->with_products()->attach($cart_id, ['product_id' => $product_id, 'cart_id' => $cart_id, 'quantity' => $quantity]);
|
||||
return $this->model->findOrFail($cart_id)->with_products()->attach($cart_id, ['product_id' => $product_id, 'cart_id' => $cart_id, 'quantity' => $quantity]);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Method to detach
|
||||
* associations
|
||||
* This will update the
|
||||
* quantity of product
|
||||
* for the customer,
|
||||
* in case of merge.
|
||||
*
|
||||
* @return Eloquent
|
||||
* @return Mixed
|
||||
*/
|
||||
public function updateRelatedForMerge($pivot, $column, $value) {
|
||||
$cart_product = $this->model->findOrFail($pivot['cart_id']);
|
||||
|
||||
return $cart_product->with_products()->updateExistingPivot($pivot['product_id'], array($column => $value));
|
||||
}
|
||||
|
||||
/**
|
||||
* Method to detach
|
||||
* associations.
|
||||
*
|
||||
* Use this only with
|
||||
* guest cart only.
|
||||
*
|
||||
* @return Mixed
|
||||
*/
|
||||
public function detachAndDeleteParent($cart_id) {
|
||||
$cart = $this->model->find($cart_id);
|
||||
|
||||
//apply strict check for verifying guest ownership on this record.
|
||||
$cart->with_products()->detach();
|
||||
|
||||
return $this->model->destroy($cart_id);
|
||||
}
|
||||
}
|
||||
|
|
@ -23,6 +23,7 @@ class CreateCustomerAddressesTable extends Migration
|
|||
$table->string('state');
|
||||
$table->string('city');
|
||||
$table->integer('postcode');
|
||||
$table->string('phone');
|
||||
$table->timestamps();
|
||||
});
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
<?php
|
||||
|
||||
namespace Webkul\Shipping\Carrier;
|
||||
namespace Webkul\Shipping\Carriers;
|
||||
|
||||
use Webkul\Shipping\Contracts\AbstractShipping;
|
||||
use Config;
|
||||
|
|
@ -11,13 +11,8 @@ use Config;
|
|||
*/
|
||||
class FlatRate extends AbstractShipping
|
||||
{
|
||||
|
||||
public function calculate()
|
||||
{
|
||||
$all = Config::get('carrier');
|
||||
return $all;
|
||||
return [];
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -12,6 +12,4 @@ abstract class AbstractShipping
|
|||
abstract public function calculate();
|
||||
|
||||
}
|
||||
|
||||
|
||||
?>
|
||||
|
|
@ -1,31 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace Webkul\Shipping\Helper;
|
||||
|
||||
use Webkul\Shipping\Carrier\FlatRate;
|
||||
|
||||
/**
|
||||
* Class Rate.
|
||||
*
|
||||
*/
|
||||
class Rate extends FlatRate
|
||||
{
|
||||
public function collectRates()
|
||||
{
|
||||
$data = $this->calculate();
|
||||
$rates =[];
|
||||
|
||||
foreach($data as $rate){
|
||||
foreach($rate as $flat){
|
||||
$rates[$flat['name']] = $flat['price'];
|
||||
}
|
||||
}
|
||||
|
||||
return $rates;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
<?php
|
||||
|
||||
namespace Webkul\Shipping\Helper;
|
||||
|
||||
use Illuminate\Support\Facades\Config;
|
||||
|
||||
/**
|
||||
* Class Rate.
|
||||
*
|
||||
*/
|
||||
class Rate
|
||||
{
|
||||
public function collectRates()
|
||||
{
|
||||
$rates = [];
|
||||
|
||||
$shippingMethods = Config::get('carriers');
|
||||
|
||||
foreach($shippingMethods as $shippingMethod) {
|
||||
$object = new $shippingMethod['class'];
|
||||
|
||||
if($rate = $object->calculate()) {
|
||||
$rates[] = $rate;
|
||||
}
|
||||
}
|
||||
|
||||
return $rates;
|
||||
}
|
||||
}
|
||||
|
|
@ -15,14 +15,6 @@ class ShippingServiceProvider extends ServiceProvider
|
|||
*/
|
||||
public function boot(Router $router)
|
||||
{
|
||||
|
||||
// $router->aliasMiddleware('customer', RedirectIfNotCustomer::class);
|
||||
|
||||
// $this->loadMigrationsFrom(__DIR__ . '/../Database/migrations');
|
||||
|
||||
// include __DIR__ . '/../Http/routes.php';
|
||||
|
||||
// $this->loadViewsFrom(__DIR__ . '/../Resources/views', 'shipping');
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ Route::group(['middleware' => ['web']], function () {
|
|||
]);
|
||||
|
||||
Route::get('/checkout', 'Webkul\Cart\Http\Controllers\CheckoutController@index')->defaults('_config', [
|
||||
'view' => 'shop::customers.checkout.index'
|
||||
'view' => 'shop::checkout.onepage'
|
||||
])->name('shop.checkout');
|
||||
|
||||
/* dummy routes ends here */
|
||||
|
|
@ -27,15 +27,8 @@ Route::group(['middleware' => ['web']], function () {
|
|||
|
||||
Route::post('product/remove/{id}', 'Webkul\Cart\Http\Controllers\CartController@remove')->name('cart.remove');
|
||||
|
||||
// Route::post('product/customer/cart/add/{id}', 'Webkul\Cart\Http\Controllers\CartController@add')->name('cart.customer.add');
|
||||
|
||||
// Route::post('product/customer/cart/remove/{id}', 'Webkul\Cart\Http\Controllers\CartController@remove')->name('cart.customer.remove');
|
||||
|
||||
Route::get('product/customer/cart/merge', 'Webkul\Cart\Http\Controllers\CartController@handleMerge')->name('cart.merge');
|
||||
|
||||
//Routes for product cart ends
|
||||
|
||||
|
||||
// Product Review routes
|
||||
Route::get('/reviews/{slug}', 'Webkul\Shop\Http\Controllers\ReviewController@show')->defaults('_config', [
|
||||
'view' => 'shop::products.reviews.index'
|
||||
|
|
@ -53,13 +46,6 @@ Route::group(['middleware' => ['web']], function () {
|
|||
'redirect' => 'admin.reviews.index'
|
||||
])->name('admin.reviews.store');
|
||||
|
||||
// Route::post('/reviews/create/{slug}', 'Webkul\Core\Http\Controllers\ReviewController@store')->defaults('_config', [
|
||||
// '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 () {
|
||||
|
|
@ -90,12 +76,6 @@ Route::group(['middleware' => ['web']], function () {
|
|||
'redirect' => 'customer.session.index'
|
||||
])->name('customer.session.destroy');
|
||||
|
||||
Route::view('/cart', 'shop::store.product.cart.cart.index')->name('customer.cart');
|
||||
|
||||
Route::view('/product', 'shop::store.product.details.home.index')->name('customer.product');
|
||||
|
||||
Route::view('/product/review', 'shop::store.product.review.index')->name('customer.product.review');
|
||||
|
||||
//customer account
|
||||
Route::prefix('account')->group(function () {
|
||||
|
||||
|
|
|
|||
|
|
@ -1,13 +1,16 @@
|
|||
window.jQuery = window.$ = $ = require("jquery");
|
||||
window.Vue = require("vue");
|
||||
window.VeeValidate = require("vee-validate");
|
||||
window.axios = require("axios");
|
||||
|
||||
Vue.use(VeeValidate);
|
||||
Vue.prototype.$http = axios
|
||||
|
||||
Vue.component("category-nav", require("./components/category-nav.vue"));
|
||||
Vue.component("category-item", require("./components/category-item.vue"));
|
||||
Vue.component("image-slider", require("./components/image-slider.vue"));
|
||||
Vue.component("vue-slider", require("vue-slider-component"));
|
||||
Vue.component("cart-dropdown", require("./components/cart-dropdown.vue"));
|
||||
|
||||
$(document).ready(function () {
|
||||
|
||||
|
|
@ -50,6 +53,7 @@ $(document).ready(function () {
|
|||
const flashes = this.$refs.flashes;
|
||||
|
||||
flashMessages.forEach(function (flash) {
|
||||
console.log(flash);
|
||||
flashes.addFlash(flash);
|
||||
}, this);
|
||||
},
|
||||
|
|
|
|||
|
|
@ -0,0 +1,156 @@
|
|||
<template>
|
||||
<div>
|
||||
<ul class="cart-dropdown" @click="dropOrHide">
|
||||
<li class="cart-summary">
|
||||
<span class="icon cart-icon"></span>
|
||||
|
||||
<span class="cart"><span class="cart-count" v-if="totalitems > 0">{{ totalitems }}</span>Products</span>
|
||||
|
||||
<span class="icon arrow-down-icon"></span>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="dropdown-cart" :class="{ show: toggle }">
|
||||
<div class="dropdown-header">
|
||||
<p class="heading">Cart Subtotal - $80</p>
|
||||
<i class="icon icon-menu-close" @click="dropOrHide"></i>
|
||||
</div>
|
||||
|
||||
<div class="dropdown-content">
|
||||
<div class="item">
|
||||
<div class="item-image">
|
||||
<img />
|
||||
</div>
|
||||
<div class="item-details">
|
||||
<div class="item-name">Some Item Name</div>
|
||||
<div class="item-price">$ Some Price</div>
|
||||
<div class="item-qty">Some Quantity</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="dropdown-footer">
|
||||
<a href="/">View Shopping Cart</a>
|
||||
<button class="btn btn-primary btn-lg">CHECKOUT</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</template>
|
||||
<script>
|
||||
|
||||
// define the item component
|
||||
|
||||
export default {
|
||||
props: {
|
||||
items: Array,
|
||||
},
|
||||
|
||||
data(){
|
||||
return {
|
||||
toggle: true,
|
||||
totalitems: 0,
|
||||
cart_items: []
|
||||
};
|
||||
},
|
||||
|
||||
computed: {
|
||||
makeDropdown() {
|
||||
|
||||
}
|
||||
},
|
||||
|
||||
mounted: function() {
|
||||
if(this.items != undefined)
|
||||
this.initializeDropdown();
|
||||
},
|
||||
|
||||
methods: {
|
||||
dropOrHide: function() {
|
||||
if(this.toggle == false) {
|
||||
this.toggle = true;
|
||||
} else {
|
||||
this.toggle = false;
|
||||
}
|
||||
},
|
||||
|
||||
initializeDropdown: function() {
|
||||
this.totalitems = this.items.length;
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style>
|
||||
.show {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.dropdown-cart {
|
||||
position: absolute;
|
||||
background: #FFFFFF;
|
||||
border: 1px solid #E8E8E8;
|
||||
box-shadow: 1px 3px 6px 0 rgba(0,0,0,0.40);
|
||||
padding: 20px;
|
||||
border-radius: 1px;
|
||||
right: 10%;
|
||||
top: 75px;
|
||||
width: 387px;
|
||||
z-index: 5;
|
||||
}
|
||||
.dropdown-cart > .dropdown-header {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.dropdown-cart > .dropdown-header p{
|
||||
display: inline;
|
||||
line-height: 25px;
|
||||
}
|
||||
|
||||
.dropdown-cart > .dropdown-header i{
|
||||
cursor: pointer;
|
||||
float: right;
|
||||
height: 22px;
|
||||
width: 22px;
|
||||
}
|
||||
|
||||
.dropdown-content {
|
||||
padding-top: 10px;
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
|
||||
.dropdown-content .item{
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
border-bottom: 1px solid #E8E8E8;
|
||||
}
|
||||
.dropdown-content .item img{
|
||||
height: 75px;
|
||||
width: 75px;
|
||||
margin-right: 8px;
|
||||
}
|
||||
|
||||
.item-details .item-name {
|
||||
font-size: 16px;
|
||||
font-weight: bold;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.item-details .item-price {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.item-details .item-qty {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.dropdown-footer {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.dropdown-footer button {
|
||||
border-radius: 0px;
|
||||
}
|
||||
|
||||
</style>
|
||||
|
|
@ -29,7 +29,6 @@ export default {
|
|||
|
||||
computed: {
|
||||
haveChildren() {
|
||||
console.log(this.item);
|
||||
return this.item.children.length ? true : false;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@ body {
|
|||
.header {
|
||||
margin-top: 16px;
|
||||
margin-bottom: 21px;
|
||||
user-select: none;
|
||||
|
||||
.header-top {
|
||||
margin-bottom: 16px;
|
||||
|
|
@ -294,7 +295,6 @@ body {
|
|||
.nav li li:hover > a:first-child:nth-last-child(2):before {
|
||||
right: 10px;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -311,7 +311,7 @@ body {
|
|||
.header-top {
|
||||
margin-bottom: 16px;
|
||||
display: flex;
|
||||
max-width: 92%;
|
||||
// max-width: 92%;
|
||||
width: 100%;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
|
|
@ -483,7 +483,7 @@ body {
|
|||
.header-top {
|
||||
margin-bottom: 16px;
|
||||
display: flex;
|
||||
max-width: 92%;
|
||||
// max-width: 92%;
|
||||
width: 100%;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
|
|
@ -1228,7 +1228,6 @@ section.slider-block {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
.product-price {
|
||||
font-size: 16px;
|
||||
margin-bottom: 14px;
|
||||
|
|
@ -3202,87 +3201,95 @@ section.cart {
|
|||
}
|
||||
|
||||
}
|
||||
|
||||
// responsive order css end here
|
||||
|
||||
// checkout starts here
|
||||
|
||||
.checkout-process{
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
width: 100%;
|
||||
margin-top:3%;
|
||||
margin-top: 20px;
|
||||
margin-bottom: 20px;
|
||||
|
||||
.left-side {
|
||||
width: 67%;
|
||||
margin-right: 8%;
|
||||
height: 100px;
|
||||
.col-main {
|
||||
width: 65%;
|
||||
padding-right: 40px;
|
||||
|
||||
.checkout-menu {
|
||||
ul.checkout-steps {
|
||||
width: 100%;
|
||||
display: inline-flex;
|
||||
justify-content: space-between;
|
||||
width: 100%;
|
||||
padding-bottom: 15px;
|
||||
border-bottom: 1px solid #E8E8E8;;
|
||||
|
||||
ul.checkout-detail {
|
||||
height: 60px;
|
||||
display: inline-flex;
|
||||
justify-content: space-between;
|
||||
width: 100%;
|
||||
padding: 5px;
|
||||
li {
|
||||
height: 48px;
|
||||
display:flex;
|
||||
|
||||
|
||||
li {
|
||||
.decorator {
|
||||
height: 48px;
|
||||
width: 48px;
|
||||
border: 1px solid black;
|
||||
border-radius: 50%;
|
||||
display: inline-flex;
|
||||
border: 1px solid #E8E8E8;
|
||||
|
||||
.wrapper {
|
||||
display:flex;
|
||||
img {
|
||||
margin: auto;
|
||||
}
|
||||
}
|
||||
|
||||
.decorator {
|
||||
height: 48px;
|
||||
width: 48px;
|
||||
border: 1px solid black;
|
||||
border-radius: 50%;
|
||||
display: inline-flex;
|
||||
border: 1px solid #E8E8E8;
|
||||
img {
|
||||
margin: auto;
|
||||
}
|
||||
}
|
||||
span {
|
||||
margin-left: 7px;
|
||||
margin-top: auto;
|
||||
margin-bottom: auto;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
.decorator.active {
|
||||
border: 1px solid blue;
|
||||
}
|
||||
|
||||
span {
|
||||
margin-left: 7px;
|
||||
margin-top: auto;
|
||||
margin-bottom: auto;
|
||||
font-size: 16px;
|
||||
}
|
||||
&.active {
|
||||
color: #2650EF;
|
||||
|
||||
.decorator {
|
||||
border: 1px solid #2650EF;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.horizontal-rule {
|
||||
margin-top: 1%;
|
||||
.step-content {
|
||||
padding-top: 20px;
|
||||
|
||||
.form-header {
|
||||
width: 100%;
|
||||
height: 1px;
|
||||
vertical-align: middle;
|
||||
background: #e8e8e8;
|
||||
display: inline-block;
|
||||
|
||||
h1 {
|
||||
float: left;
|
||||
}
|
||||
|
||||
.btn {
|
||||
float: right;
|
||||
}
|
||||
}
|
||||
|
||||
.form-container {
|
||||
border-bottom: 1px solid #E8E8E8;
|
||||
padding-top: 20px;
|
||||
padding-bottom: 20px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.right-side {
|
||||
height: 300px;
|
||||
width: 300px;
|
||||
.col-right {
|
||||
width: 35%;
|
||||
padding-left: 40px;
|
||||
|
||||
.purchase-detail {
|
||||
margin-top:22px;
|
||||
margin-left:18px;
|
||||
.order-summary {
|
||||
|
||||
.price {
|
||||
|
||||
span{
|
||||
span {
|
||||
margin-left: 3px;
|
||||
font-size: 16px;
|
||||
color: #242424;
|
||||
|
|
@ -3290,7 +3297,6 @@ section.cart {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
.item-detail {
|
||||
margin-top:12px;
|
||||
|
||||
|
|
@ -3301,8 +3307,9 @@ section.cart {
|
|||
font-size: 16px;
|
||||
color: #242424;
|
||||
}
|
||||
|
||||
.right {
|
||||
float:right;
|
||||
float: right;
|
||||
font-size: 16px;
|
||||
color: #242424;
|
||||
}
|
||||
|
|
@ -3318,7 +3325,7 @@ section.cart {
|
|||
}
|
||||
|
||||
.payble-amount {
|
||||
margin-top:12px;
|
||||
margin-top: 12px;
|
||||
|
||||
span {
|
||||
margin-left: 3px;
|
||||
|
|
@ -3329,6 +3336,7 @@ section.cart {
|
|||
color: #242424;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.right {
|
||||
|
||||
float:right;
|
||||
|
|
@ -3339,68 +3347,6 @@ section.cart {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
.order-info{
|
||||
width: 67%;
|
||||
margin-right: 6%;
|
||||
height: 1350px;
|
||||
margin-top: -190px;
|
||||
|
||||
.order-guest {
|
||||
|
||||
.order-text{
|
||||
font-size: 24px;
|
||||
color: #242424;
|
||||
letter-spacing: -0.58px;
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
|
||||
.sign-in {
|
||||
float:right;
|
||||
}
|
||||
|
||||
|
||||
.control-group {
|
||||
margin-top:30px;
|
||||
|
||||
label {
|
||||
font-size:14px;
|
||||
}
|
||||
|
||||
.control {
|
||||
width:600px;
|
||||
}
|
||||
|
||||
span {
|
||||
color:red;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
.different-billing-addr {
|
||||
margin-top: 5%;
|
||||
|
||||
span {
|
||||
font-size: 16px;
|
||||
color: #242424;
|
||||
letter-spacing: -0.38px;
|
||||
}
|
||||
}
|
||||
|
||||
.horizontal-rule {
|
||||
margin-top: 6%;
|
||||
width: 100%;
|
||||
height: 1px;
|
||||
vertical-align: middle;
|
||||
background: #e8e8e8;
|
||||
}
|
||||
|
||||
.countinue-button {
|
||||
margin-top: 3%;
|
||||
}
|
||||
}
|
||||
|
||||
// checkout ends here
|
||||
|
|
@ -3408,10 +3354,9 @@ section.cart {
|
|||
// responsive checkout start here
|
||||
|
||||
@media all and (max-width: 480px) {
|
||||
|
||||
.checkout-process{
|
||||
width: 100%;
|
||||
margin-top:3%;
|
||||
margin-top: 3%;
|
||||
|
||||
.left-side {
|
||||
width: 100%;
|
||||
|
|
@ -3430,12 +3375,11 @@ section.cart {
|
|||
height: 48px;
|
||||
|
||||
.wrapper {
|
||||
display:flex;
|
||||
display: flex;
|
||||
|
||||
span {
|
||||
display: none;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -3456,7 +3400,7 @@ section.cart {
|
|||
}
|
||||
|
||||
.right-side {
|
||||
display:none;
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -3566,96 +3510,11 @@ section.cart {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
// responsive checkout end here
|
||||
|
||||
|
||||
// sign of checkout starts here
|
||||
|
||||
.signin-form{
|
||||
width: 67%;
|
||||
margin-right: 6%;
|
||||
height: 520px;
|
||||
margin-top: -190px;
|
||||
|
||||
.signin-guest {
|
||||
|
||||
.signin-text{
|
||||
font-size: 24px;
|
||||
color: #242424;
|
||||
letter-spacing: -0.58px;
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
|
||||
.order-button {
|
||||
float:right;
|
||||
background: #0031F0;
|
||||
font-size: 14px;
|
||||
color: #FFFFFF;
|
||||
letter-spacing: -0.26px;
|
||||
text-align: center;
|
||||
height: 38px;
|
||||
width: 153px;
|
||||
border: none;
|
||||
}
|
||||
|
||||
|
||||
.control-group {
|
||||
margin-top:30px;
|
||||
|
||||
label {
|
||||
font-size:14px;
|
||||
}
|
||||
|
||||
.control {
|
||||
width:600px;
|
||||
}
|
||||
|
||||
span {
|
||||
color:red;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
.forgot-pass {
|
||||
|
||||
span {
|
||||
font-size: 16px;
|
||||
color: #0031F0;
|
||||
letter-spacing: -0.38px;
|
||||
}
|
||||
}
|
||||
|
||||
.horizontal-rule {
|
||||
margin-top: 6%;
|
||||
width: 100%;
|
||||
height: 1px;
|
||||
vertical-align: middle;
|
||||
background: #e8e8e8;
|
||||
}
|
||||
|
||||
.countinue-button {
|
||||
margin-top: 3%;
|
||||
|
||||
button {
|
||||
background: #0031F0;
|
||||
font-size: 14px;
|
||||
color: #FFFFFF;
|
||||
letter-spacing: -0.26px;
|
||||
text-align: center;
|
||||
height: 38px;
|
||||
width: 137px;
|
||||
border: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// sign checkout end here
|
||||
|
||||
|
||||
//shipment start here
|
||||
|
||||
.ship-method {
|
||||
width: 67%;
|
||||
margin-right: 6%;
|
||||
|
|
@ -3731,11 +3590,9 @@ section.cart {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
//shipment end here
|
||||
|
||||
// payment method start here
|
||||
|
||||
.payment-method {
|
||||
width: 67%;
|
||||
margin-right: 6%;
|
||||
|
|
@ -3823,12 +3680,10 @@ section.cart {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
// payment method end here
|
||||
|
||||
|
||||
// complete page start here
|
||||
|
||||
.complete-page{
|
||||
width:880px;
|
||||
height: 1050px;
|
||||
|
|
@ -4184,12 +4039,10 @@ section.cart {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
// complete page end here
|
||||
|
||||
|
||||
// review page start here
|
||||
|
||||
section.review {
|
||||
font-size: 16px;
|
||||
color: $product-font-color;
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
background-size: cover;
|
||||
}
|
||||
|
||||
.dropdown-right-icon{
|
||||
.dropdown-right-icon {
|
||||
background-image:URL('../images/icon-dropdown-left.svg');
|
||||
width: 8px;
|
||||
height: 8px;
|
||||
|
|
@ -11,6 +11,14 @@
|
|||
margin-bottom: 2px;
|
||||
}
|
||||
|
||||
.icon-menu-close {
|
||||
background-image:URL('../images/icon-menu-close.svg');
|
||||
width: 8px;
|
||||
height: 8px;
|
||||
margin-left:auto;
|
||||
margin-bottom: 2px;
|
||||
}
|
||||
|
||||
.grid-view-icon {
|
||||
background-image:URL('../images/icon-grid-view.svg');
|
||||
width: 24px;
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ return [
|
|||
'account_exists' => 'Already have an account',
|
||||
'title' => 'Sign In'
|
||||
],
|
||||
|
||||
'signup-form' => [
|
||||
'title' => 'Sign Up',
|
||||
'firstname' => 'First Name',
|
||||
|
|
@ -19,10 +20,12 @@ return [
|
|||
'conditions' => 'Conditions',
|
||||
'using' => 'by using this website'
|
||||
],
|
||||
|
||||
'login-text' => [
|
||||
'no_account' => 'Don\'t have account',
|
||||
'title' => 'Sign In',
|
||||
],
|
||||
|
||||
'login-form' => [
|
||||
'title' => 'Sign Up',
|
||||
'email' => 'E-Mail',
|
||||
|
|
@ -53,5 +56,35 @@ return [
|
|||
'reviews-title' => 'Ratings & Reviews',
|
||||
'write-review-btn' => 'Write Review',
|
||||
'choose-option' => 'Choose an option'
|
||||
],
|
||||
|
||||
'checkout' => [
|
||||
'cart' => [
|
||||
|
||||
],
|
||||
|
||||
'onepage' => [
|
||||
'title' => 'Checkout',
|
||||
'information' => 'Information',
|
||||
'shipping' => 'Shipping',
|
||||
'payment' => 'Payment',
|
||||
'complete' => 'Complete',
|
||||
'billing-address' => 'Billing Address',
|
||||
'sign-in' => 'Sign In',
|
||||
'first-name' => 'First Name',
|
||||
'last-name' => 'Last Name',
|
||||
'email' => 'Email',
|
||||
'address1' => 'Address',
|
||||
'address2' => 'Address 2',
|
||||
'city' => 'City',
|
||||
'state' => 'State',
|
||||
'postcode' => 'Zip/Postcode',
|
||||
'phone' => 'Telephone',
|
||||
'country' => 'Country',
|
||||
'order-summary' => 'Order Summary',
|
||||
'shipping-address' => 'Shipping Address',
|
||||
'use_for_shipping' => 'Ship to this address',
|
||||
'continue' => 'Continue'
|
||||
]
|
||||
]
|
||||
];
|
||||
|
|
@ -0,0 +1,121 @@
|
|||
@extends('shop::layouts.master')
|
||||
|
||||
@section('page_title')
|
||||
{{ __('shop::app.checkout.onepage.title') }}
|
||||
@stop
|
||||
|
||||
@section('content-wrapper')
|
||||
|
||||
<checkout></checkout>
|
||||
|
||||
@endsection
|
||||
|
||||
@push('scripts')
|
||||
|
||||
<script type="text/x-template" id="checkout-template">
|
||||
<div id="checkout" class="checkout-process">
|
||||
|
||||
<div class="col-main">
|
||||
|
||||
<ul class="checkout-steps">
|
||||
<li class="active">
|
||||
<div class="decorator">
|
||||
<img src="{{ bagisto_asset('images/address.svg') }}" />
|
||||
</div>
|
||||
|
||||
<span>{{ __('shop::app.checkout.onepage.information') }}</span>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<div class="decorator">
|
||||
<img src="{{ bagisto_asset('images/shipping.svg') }}" />
|
||||
</div>
|
||||
|
||||
<span>{{ __('shop::app.checkout.onepage.shipping') }}</span>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<div class="decorator">
|
||||
<img src="{{ bagisto_asset('images/payment.svg') }}" />
|
||||
</div>
|
||||
|
||||
<span>{{ __('shop::app.checkout.onepage.payment') }}</span>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<div class="decorator">
|
||||
<img src="{{ bagisto_asset('images/finish.svg') }}" />
|
||||
</div>
|
||||
|
||||
<span>{{ __('shop::app.checkout.onepage.complete') }}</span>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<div class="step-content information">
|
||||
|
||||
@include('shop::checkout.onepage.customer-info')
|
||||
|
||||
<div class="button-group">
|
||||
|
||||
<button type="button" class="btn btn-lg btn-primary" @click="validateForm('address-form')">
|
||||
{{ __('shop::app.checkout.onepage.continue') }}
|
||||
</button>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="step-content shipping">
|
||||
</div>
|
||||
|
||||
<div class="step-content payment">
|
||||
</div>
|
||||
|
||||
<div class="step-content review">
|
||||
</div>
|
||||
|
||||
@include('shop::checkout.onepage.summary')
|
||||
|
||||
</div>
|
||||
</script>
|
||||
|
||||
<script>
|
||||
Vue.component('checkout', {
|
||||
|
||||
template: '#checkout-template',
|
||||
|
||||
inject: ['$validator'],
|
||||
|
||||
data: () => ({
|
||||
billing: {
|
||||
use_for_shipping: true
|
||||
},
|
||||
shipping: {},
|
||||
}),
|
||||
|
||||
created () {
|
||||
|
||||
},
|
||||
|
||||
methods: {
|
||||
validateForm: function (scope) {
|
||||
this.$validator.validateAll(scope).then((result) => {
|
||||
if(result) {
|
||||
this.saveAddress()
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
saveAddress () {
|
||||
// this.$http.get('https://api.coindesk.com/v1/bpi/currentprice.json')
|
||||
// .then(function(response) {
|
||||
// console.log(response)
|
||||
// })
|
||||
}
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
@endpush
|
||||
|
|
@ -0,0 +1,278 @@
|
|||
<form data-vv-scope="address-form">
|
||||
|
||||
<div class="form-container">
|
||||
|
||||
<div class="form-header">
|
||||
<h1>{{ __('shop::app.checkout.onepage.billing-address') }}</h1>
|
||||
|
||||
<a href="{{ route('customer.session.index') }}" class="btn btn-lg btn-primary">
|
||||
{{ __('shop::app.checkout.onepage.sign-in') }}
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="control-group" :class="[errors.has('address-form.billing[first_name]') ? 'has-error' : '']">
|
||||
<label for="billing[first_name]" class="required">
|
||||
{{ __('shop::app.checkout.onepage.first-name') }}
|
||||
</label>
|
||||
|
||||
<input type="text" v-validate="'required'" class="control" id="billing[first_name]" name="billing[first_name]" v-model="billing.first_name"/>
|
||||
|
||||
<span class="control-error" v-if="errors.has('address-form.billing[first_name]')">
|
||||
@{{ errors.first('address-form.billing[first_name]') }}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div class="control-group" :class="[errors.has('address-form.billing[last_name]') ? 'has-error' : '']">
|
||||
<label for="billing[last_name]" class="required">
|
||||
{{ __('shop::app.checkout.onepage.last-name') }}
|
||||
</label>
|
||||
|
||||
<input type="text" v-validate="'required'" class="control" id="billing[last_name]" name="billing[last_name]" v-model="billing.last_name"/>
|
||||
|
||||
<span class="control-error" v-if="errors.has('address-form.billing[last_name]')">
|
||||
@{{ errors.first('address-form.billing[last_name]') }}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div class="control-group" :class="[errors.has('address-form.billing[email]') ? 'has-error' : '']">
|
||||
<label for="billing[email]" class="required">
|
||||
{{ __('shop::app.checkout.onepage.email') }}
|
||||
</label>
|
||||
|
||||
<input type="text" v-validate="'required'" class="control" id="billing[email]" name="billing[email]" v-model="billing.email"/>
|
||||
|
||||
<span class="control-error" v-if="errors.has('address-form.billing[email]')">
|
||||
@{{ errors.first('address-form.billing[email]') }}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div class="control-group" :class="[errors.has('address-form.billing[address1]') ? 'has-error' : '']">
|
||||
<label for="billing[address1]" class="required">
|
||||
{{ __('shop::app.checkout.onepage.address1') }}
|
||||
</label>
|
||||
|
||||
<input type="text" v-validate="'required'" class="control" id="billing[address1]" name="billing[address1]" v-model="billing.address1"/>
|
||||
|
||||
<span class="control-error" v-if="errors.has('address-form.billing[address1]')">
|
||||
@{{ errors.first('address-form.billing[address1]') }}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div class="control-group">
|
||||
<label for="billing[address2]">
|
||||
{{ __('shop::app.checkout.onepage.address2') }}
|
||||
</label>
|
||||
|
||||
<input type="text" class="control" id="billing[address2]" name="billing[address2]" v-model="billing.address2"/>
|
||||
</div>
|
||||
|
||||
<div class="control-group" :class="[errors.has('address-form.billing[city]') ? 'has-error' : '']">
|
||||
<label for="billing[city]" class="required">
|
||||
{{ __('shop::app.checkout.onepage.city') }}
|
||||
</label>
|
||||
|
||||
<input type="text" v-validate="'required'" class="control" id="billing[city]" name="billing[city]" v-model="billing.city"/>
|
||||
|
||||
<span class="control-error" v-if="errors.has('address-form.billing[city]')">
|
||||
@{{ errors.first('address-form.billing[city]') }}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div class="control-group" :class="[errors.has('address-form.billing[state]') ? 'has-error' : '']">
|
||||
<label for="billing[state]" class="required">
|
||||
{{ __('shop::app.checkout.onepage.state') }}
|
||||
</label>
|
||||
|
||||
<input type="text" v-validate="'required'" class="control" id="billing[state]" name="billing[state]" v-model="billing.state"/>
|
||||
|
||||
<span class="control-error" v-if="errors.has('address-form.billing[state]')">
|
||||
@{{ errors.first('address-form.billing[state]') }}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div class="control-group" :class="[errors.has('address-form.billing[postcode]') ? 'has-error' : '']">
|
||||
<label for="billing[postcode]" class="required">
|
||||
{{ __('shop::app.checkout.onepage.postcode') }}
|
||||
</label>
|
||||
|
||||
<input type="text" v-validate="'required'" class="control" id="billing[postcode]" name="billing[postcode]" v-model="billing.postcode"/>
|
||||
|
||||
<span class="control-error" v-if="errors.has('address-form.billing[postcode]')">
|
||||
@{{ errors.first('address-form.billing[postcode]') }}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div class="control-group" :class="[errors.has('address-form.billing[phone]') ? 'has-error' : '']">
|
||||
<label for="billing[phone]" class="required">
|
||||
{{ __('shop::app.checkout.onepage.phone') }}
|
||||
</label>
|
||||
|
||||
<input type="text" v-validate="'required'" class="control" id="billing[phone]" name="billing[phone]" v-model="billing.phone"/>
|
||||
|
||||
<span class="control-error" v-if="errors.has('address-form.billing[phone]')">
|
||||
@{{ errors.first('address-form.billing[phone]') }}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div class="control-group" :class="[errors.has('address-form.billing[country]') ? 'has-error' : '']">
|
||||
<label for="billing[country]" class="required">
|
||||
{{ __('shop::app.checkout.onepage.country') }}
|
||||
</label>
|
||||
|
||||
<select type="text" v-validate="'required'" class="control" id="billing[country]" name="billing[country]" v-model="billing.country">
|
||||
<option value=""></option>
|
||||
|
||||
@foreach (country()->all() as $code => $country)
|
||||
|
||||
<option value="{{ $country}}">{{ $country }}</option>
|
||||
|
||||
@endforeach
|
||||
</select>
|
||||
|
||||
<span class="control-error" v-if="errors.has('address-form.billing[country]')">
|
||||
@{{ errors.first('address-form.billing[country]') }}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div class="control-group">
|
||||
<span class="checkbox">
|
||||
<input type="checkbox" id="billing[use_for_shipping]" name="billing[use_for_shipping]" v-model="billing.use_for_shipping"/>
|
||||
<label class="checkbox-view" for="billing[use_for_shipping]"></label>
|
||||
{{ __('shop::app.checkout.onepage.use_for_shipping') }}
|
||||
</span>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-container" v-if="!billing.use_for_shipping">
|
||||
|
||||
<div class="form-header">
|
||||
<h1>{{ __('shop::app.checkout.onepage.shipping-address') }}</h1>
|
||||
</div>
|
||||
|
||||
<div class="control-group" :class="[errors.has('address-form.shipping[first_name]') ? 'has-error' : '']">
|
||||
<label for="shipping[first_name]" class="required">
|
||||
{{ __('shop::app.checkout.onepage.first-name') }}
|
||||
</label>
|
||||
|
||||
<input type="text" v-validate="'required'" class="control" id="shipping[first_name]" name="shipping[first_name]" v-model="shipping.first_name"/>
|
||||
|
||||
<span class="control-error" v-if="errors.has('address-form.shipping[first_name]')">
|
||||
@{{ errors.first('address-form.shipping[first_name]') }}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div class="control-group" :class="[errors.has('address-form.shipping[last_name]') ? 'has-error' : '']">
|
||||
<label for="shipping[last_name]" class="required">
|
||||
{{ __('shop::app.checkout.onepage.last-name') }}
|
||||
</label>
|
||||
|
||||
<input type="text" v-validate="'required'" class="control" id="shipping[last_name]" name="shipping[last_name]" v-model="shipping.last_name"/>
|
||||
|
||||
<span class="control-error" v-if="errors.has('address-form.shipping[last_name]')">
|
||||
@{{ errors.first('address-form.shipping[last_name]') }}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div class="control-group" :class="[errors.has('address-form.shipping[email]') ? 'has-error' : '']">
|
||||
<label for="shipping[email]" class="required">
|
||||
{{ __('shop::app.checkout.onepage.email') }}
|
||||
</label>
|
||||
|
||||
<input type="text" v-validate="'required'" class="control" id="shipping[email]" name="shipping[email]" v-model="shipping.email"/>
|
||||
|
||||
<span class="control-error" v-if="errors.has('address-form.shipping[email]')">
|
||||
@{{ errors.first('address-form.shipping[email]') }}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div class="control-group" :class="[errors.has('address-form.shipping[address1]') ? 'has-error' : '']">
|
||||
<label for="shipping[address1]" class="required">
|
||||
{{ __('shop::app.checkout.onepage.address1') }}
|
||||
</label>
|
||||
|
||||
<input type="text" v-validate="'required'" class="control" id="shipping[address1]" name="shipping[address1]" v-model="shipping.address1"/>
|
||||
|
||||
<span class="control-error" v-if="errors.has('address-form.shipping[address1]')">
|
||||
@{{ errors.first('address-form.shipping[address1]') }}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div class="control-group">
|
||||
<label for="shipping[address2]">
|
||||
{{ __('shop::app.checkout.onepage.address2') }}
|
||||
</label>
|
||||
|
||||
<input type="text" class="control" id="shipping[address2]" name="shipping[address2]" v-model="shipping.address2"/>
|
||||
</div>
|
||||
|
||||
<div class="control-group" :class="[errors.has('address-form.shipping[city]') ? 'has-error' : '']">
|
||||
<label for="shipping[city]" class="required">
|
||||
{{ __('shop::app.checkout.onepage.city') }}
|
||||
</label>
|
||||
|
||||
<input type="text" v-validate="'required'" class="control" id="shipping[city]" name="shipping[city]" v-model="shipping.city"/>
|
||||
|
||||
<span class="control-error" v-if="errors.has('address-form.shipping[city]')">
|
||||
@{{ errors.first('address-form.shipping[city]') }}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div class="control-group" :class="[errors.has('address-form.shipping[state]') ? 'has-error' : '']">
|
||||
<label for="shipping[state]" class="required">
|
||||
{{ __('shop::app.checkout.onepage.state') }}
|
||||
</label>
|
||||
|
||||
<input type="text" v-validate="'required'" class="control" id="shipping[state]" name="shipping[state]" v-model="shipping.state"/>
|
||||
|
||||
<span class="control-error" v-if="errors.has('address-form.shipping[state]')">
|
||||
@{{ errors.first('address-form.shipping[state]') }}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div class="control-group" :class="[errors.has('address-form.shipping[postcode]') ? 'has-error' : '']">
|
||||
<label for="shipping[postcode]" class="required">
|
||||
{{ __('shop::app.checkout.onepage.postcode') }}
|
||||
</label>
|
||||
|
||||
<input type="text" v-validate="'required'" class="control" id="shipping[postcode]" name="shipping[postcode]" v-model="shipping.postcode"/>
|
||||
|
||||
<span class="control-error" v-if="errors.has('address-form.shipping[postcode]')">
|
||||
@{{ errors.first('address-form.shipping[postcode]') }}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div class="control-group" :class="[errors.has('address-form.shipping[phone]') ? 'has-error' : '']">
|
||||
<label for="shipping[phone]" class="required">
|
||||
{{ __('shop::app.checkout.onepage.phone') }}
|
||||
</label>
|
||||
|
||||
<input type="text" v-validate="'required'" class="control" id="shipping[phone]" name="shipping[phone]" v-model="shipping.phone"/>
|
||||
|
||||
<span class="control-error" v-if="errors.has('address-form.shipping[phone]')">
|
||||
@{{ errors.first('address-form.shipping[phone]') }}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div class="control-group" :class="[errors.has('address-form.shipping[country]') ? 'has-error' : '']">
|
||||
<label for="shipping[country]" class="required">
|
||||
{{ __('shop::app.checkout.onepage.country') }}
|
||||
</label>
|
||||
|
||||
<select type="text" v-validate="'required'" class="control" id="shipping[country]" name="shipping[country]" v-model="shipping.country">
|
||||
<option value=""></option>
|
||||
|
||||
@foreach (country()->all() as $code => $country)
|
||||
|
||||
<option value="{{ $country}}">{{ $country }}</option>
|
||||
|
||||
@endforeach
|
||||
</select>
|
||||
|
||||
<span class="control-error" v-if="errors.has('address-form.shipping[country]')">
|
||||
@{{ errors.first('address-form.shipping[country]') }}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
|
|
@ -0,0 +1,37 @@
|
|||
<div class="col-right">
|
||||
<div class="order-summary">
|
||||
<div class="price">
|
||||
<span>{{ __('shop::app.checkout.onepage.order-summary') }}</span>
|
||||
</div>
|
||||
|
||||
<div class="item-detail">
|
||||
<span>
|
||||
<label>2 Items Price</label>
|
||||
<label class="right">$ 2,506.00</label>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div class="item-detail">
|
||||
<span>
|
||||
<label>Delivery Charges</label>
|
||||
<label class="right">$ 40.00</label>
|
||||
</span>
|
||||
</div>
|
||||
<div class="item-detail">
|
||||
<span>
|
||||
<label>Coupan Discount</label>
|
||||
<label class="right">$ 25.00</label>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div class="horizontal-rule">
|
||||
</div>
|
||||
|
||||
<div class="payble-amount">
|
||||
<span>
|
||||
<label>Amount Payble</label>
|
||||
<label class="right">$ 2571.00</label>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -1,37 +1,3 @@
|
|||
<div class="right-side">
|
||||
<div class="purchase-detail">
|
||||
<div class="price">
|
||||
<span>Price Detail</span>
|
||||
</div>
|
||||
|
||||
<div class="item-detail">
|
||||
<span>
|
||||
<label>2 Items Price</label>
|
||||
<label class="right">$ 2,506.00</label>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div class="item-detail">
|
||||
<span>
|
||||
<label>Delivery Charges</label>
|
||||
<label class="right">$ 40.00</label>
|
||||
</span>
|
||||
</div>
|
||||
<div class="item-detail">
|
||||
<span>
|
||||
<label>Coupan Discount</label>
|
||||
<label class="right">$ 25.00</label>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div class="horizontal-rule">
|
||||
</div>
|
||||
|
||||
<div class="payble-amount">
|
||||
<span>
|
||||
<label>Amount Payble</label>
|
||||
<label class="right">$ 2571.00</label>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
|
@ -45,15 +45,12 @@
|
|||
}else{
|
||||
this.isGuest=true;
|
||||
this.disabled=1;
|
||||
|
||||
console.log(this.disabled);
|
||||
}
|
||||
} ,
|
||||
|
||||
methods: {
|
||||
count () {
|
||||
this.isShipMethod=true;
|
||||
console.log(this.isShipMethod)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,5 @@
|
|||
<div class="header" id="header">
|
||||
|
||||
<div class="header-top">
|
||||
|
||||
<div class="left-content">
|
||||
|
||||
<ul class="logo-container">
|
||||
|
|
@ -57,6 +55,7 @@
|
|||
|
||||
<ul>
|
||||
<li><a href="{{ route('customer.session.index') }}">Sign In</a></li>
|
||||
|
||||
<li><a href="{{ route('customer.register.index') }}">Sign Up</a></li>
|
||||
</ul>
|
||||
|
||||
|
|
@ -66,18 +65,20 @@
|
|||
@endguest
|
||||
@auth('customer')
|
||||
<div class="dropdown-list bottom-right" style="display: none;">
|
||||
|
||||
<div class="dropdown-container">
|
||||
|
||||
<label>Account</label>
|
||||
|
||||
<ul>
|
||||
<li><a href="{{ route('customer.account.index') }}">Account</a></li>
|
||||
|
||||
<li><a href="{{ route('customer.profile.index') }}">Profile</a></li>
|
||||
|
||||
<li><a href="{{ route('customer.address.index') }}">Address</a></li>
|
||||
|
||||
<li><a href="{{ route('customer.wishlist.index') }}">Wishlist</a></li>
|
||||
<li><a href="{{ route('customer.cart') }}">Cart</a></li>
|
||||
|
||||
{{-- <li><a href="{{ route('customer.cart') }}">Cart</a></li> --}}
|
||||
<li><a href="{{ route('customer.orders.index') }}">Orders</a></li>
|
||||
|
||||
<li><a href="{{ route('customer.session.destroy') }}">Logout</a></li>
|
||||
</ul>
|
||||
|
||||
|
|
@ -90,21 +91,7 @@
|
|||
|
||||
</ul>
|
||||
|
||||
<ul class="cart-dropdown">
|
||||
|
||||
<li class="cart-summary">
|
||||
|
||||
<span class="icon cart-icon"></span>
|
||||
|
||||
<span class="cart"><span class="cart-count">5</span>Products</span>
|
||||
|
||||
<span class="icon arrow-down-icon"></span>
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
<cart-dropdown @if(isset($cart)) :items='@json($cart)' @endif></cart-dropdown>
|
||||
|
||||
{{-- Meant for responsive views only --}}
|
||||
<ul class="ham-dropdown-container">
|
||||
|
|
@ -138,13 +125,13 @@
|
|||
</div>
|
||||
|
||||
<div class="suggestion">
|
||||
<span> designer sarees </span>
|
||||
<span>Designer sarees</span>
|
||||
</div>
|
||||
<div class="suggestion">
|
||||
<span> India patter sarees </span>
|
||||
<span>India patter sarees</span>
|
||||
</div>
|
||||
<div class="suggestion">
|
||||
<span> Border Sarees </span>
|
||||
<span>Border Sarees</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
@ -155,93 +142,7 @@
|
|||
</div>
|
||||
|
||||
@push('scripts')
|
||||
|
||||
<script>
|
||||
|
||||
window.onload = function() {
|
||||
|
||||
var sort = document.getElementById("sortable");
|
||||
var search = document.getElementById("search");
|
||||
|
||||
sort.addEventListener("click", myFunction);
|
||||
search.addEventListener("click", myFunction);
|
||||
|
||||
// function for changing icon for responsive header
|
||||
|
||||
function myFunction(){
|
||||
|
||||
let className = document.getElementById(this.id).className;
|
||||
|
||||
let slider = document.getElementsByClassName("slider-block");
|
||||
let feature = document.getElementsByClassName("featured-products");
|
||||
let newUpdate = document.getElementsByClassName("news-update");
|
||||
|
||||
for (let i=0 ; i < slider.length ; i++){
|
||||
slider[i].style.display="none";
|
||||
}
|
||||
|
||||
for (let i=0 ; i < feature.length ; i++){
|
||||
feature[i].style.display="none";
|
||||
}
|
||||
|
||||
for (let i=0 ; i < newUpdate.length ; i++){
|
||||
newUpdate[i].style.display="none";
|
||||
}
|
||||
|
||||
if( className == 'icon search-icon') {
|
||||
|
||||
search.classList.remove('icon', 'search-icon');
|
||||
search.classList.add('icon', 'cross-icon');
|
||||
|
||||
sort.classList.remove('icon', 'cross-icon');
|
||||
sort.classList.remove('icon', 'sortable-icon');
|
||||
sort.classList.add('icon', 'sortable-icon');
|
||||
document.getElementsByClassName("header-bottom")[0].style.display="none";
|
||||
document.getElementsByClassName("search-suggestion")[0].style.display="block";
|
||||
|
||||
}else if ( className == 'icon sortable-icon'){
|
||||
|
||||
sort.classList.remove('icon', 'sortable-icon');
|
||||
sort.classList.add('icon', 'cross-icon');
|
||||
|
||||
search.classList.remove('icon', 'cross-icon');
|
||||
search.classList.remove('icon', 'search-icon');
|
||||
search.classList.add('icon', 'search-icon');
|
||||
|
||||
document.getElementsByClassName("header-bottom")[0].style.display="block";
|
||||
document.getElementsByClassName("search-suggestion")[0].style.display="none";
|
||||
|
||||
} else {
|
||||
|
||||
sort.classList.remove('icon', 'cross-icon');
|
||||
search.classList.remove('icon', 'cross-icon');
|
||||
sort.classList.remove('icon', 'sortable-icon');
|
||||
search.classList.remove('icon', 'search-icon');
|
||||
sort.classList.add('icon', 'sortable-icon');
|
||||
search.classList.add('icon', 'search-icon');
|
||||
document.getElementsByClassName("header-bottom")[0].style.display="none";
|
||||
document.getElementsByClassName("search-suggestion")[0].style.display="none";
|
||||
|
||||
let slider = document.getElementsByClassName("slider-block");
|
||||
let feature = document.getElementsByClassName("featured-products");
|
||||
let newUpdate = document.getElementsByClassName("news-update");
|
||||
|
||||
for (let i=0 ; i < slider.length ; i++){this.id
|
||||
slider[i].style.display="block";
|
||||
}
|
||||
|
||||
for (let i=0 ; i < feature.length ; i++){
|
||||
feature[i].style.display="block";
|
||||
}
|
||||
|
||||
for (let i=0 ; i < newUpdate.length ; i++){
|
||||
newUpdate[i].style.display="block";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
@endpush
|
||||
|
|
@ -2,6 +2,6 @@
|
|||
|
||||
@include ('shop::products.add-to-cart', ['product' => $product])
|
||||
|
||||
<span><img src="{{ bagisto_asset('images/wishlist.svg') }}" /></span>
|
||||
<span class="wishlist"><img src="{{ bagisto_asset('images/wishlist.svg') }}" /></span>
|
||||
|
||||
</div>
|
||||
|
|
@ -133,7 +133,6 @@
|
|||
for(var key in percentage){
|
||||
width= percentage[key] * 1.58;
|
||||
let id =key + 'star';
|
||||
console.log(id);
|
||||
document.getElementById(key).style.width = width + "px";
|
||||
document.getElementById(key).style.height = 4 + "px";
|
||||
document.getElementById(id).innerHTML = i + '\xa0\xa0' + "star";
|
||||
|
|
|
|||
|
|
@ -1,5 +1,10 @@
|
|||
@extends('shop::layouts.master')
|
||||
|
||||
@section('page_title')
|
||||
{{ $product->name }}
|
||||
@stop
|
||||
|
||||
|
||||
@section('content-wrapper')
|
||||
<section class="product-detail">
|
||||
<div class="category-breadcrumbs">
|
||||
|
|
@ -8,7 +13,6 @@
|
|||
|
||||
</div>
|
||||
<div class="layouter">
|
||||
{{-- {{ dd(session()->getId()) }} --}}
|
||||
<form method="POST" action="{{ route('cart.add', $product->id) }}">
|
||||
@csrf()
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,20 @@
|
|||
|
||||
@inject ('configurableOptionHelper', 'Webkul\Product\Product\ConfigurableOption')
|
||||
|
||||
<product-options></product-options>
|
||||
<product-options>
|
||||
<!--<div class="attribute control-group has-error">
|
||||
<label class="reqiured">Color</label>
|
||||
<select name="super_attribute[104]" id="attribute_104" class="control" data-vv-id="1" aria-required="true" aria-invalid="true">
|
||||
<option value="">Choose an option</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="attribute control-group">
|
||||
<label class="reqiured">Size</label>
|
||||
<select name="super_attribute[105]" disabled="disabled" id="attribute_105" class="control" data-vv-id="2" aria-required="true" aria-invalid="false">
|
||||
</select>
|
||||
</div>-->
|
||||
</product-options>
|
||||
|
||||
@push('scripts')
|
||||
|
||||
|
|
|
|||
|
|
@ -65,7 +65,6 @@
|
|||
},
|
||||
|
||||
created () {
|
||||
console.log(this.images[0])
|
||||
this.changeImage(this.images[0])
|
||||
|
||||
this.prepareThumbs()
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
class='alert-wrapper'
|
||||
>
|
||||
<flash
|
||||
v-for='(flash, index) in flashes'
|
||||
v-for='(flash) in flashes'
|
||||
:key='flash.uid'
|
||||
:flash="flash"
|
||||
@onRemoveFlash="removeFlash($event)"
|
||||
|
|
|
|||
|
|
@ -452,6 +452,11 @@ h2 {
|
|||
}
|
||||
}
|
||||
|
||||
.button-group {
|
||||
margin-top: 20px;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.alert-wrapper {
|
||||
width: 300px;
|
||||
top: 10px;
|
||||
|
|
|
|||
|
|
@ -105,13 +105,13 @@
|
|||
<th class="grid_head" data-column-name="{{ $column->alias }}" data-column-label="{{ $column->label }}">{!! $column->sorting() !!}</th>
|
||||
@endif
|
||||
@endforeach
|
||||
@if(isset($attribute_columns))
|
||||
{{-- @if(isset($attribute_columns))
|
||||
@foreach($attribute_columns as $key => $value)
|
||||
<th>
|
||||
{{ $value }}
|
||||
</th>
|
||||
@endforeach
|
||||
@endif
|
||||
@endif --}}
|
||||
<th>
|
||||
Actions
|
||||
</th>
|
||||
|
|
@ -131,11 +131,11 @@
|
|||
<td class="">{!! $column->render($result) !!}</td>
|
||||
@endforeach
|
||||
|
||||
@if(isset($attribute_columns))
|
||||
{{-- @if(isset($attribute_columns))
|
||||
@foreach ($attribute_columns as $atc)
|
||||
<td>{{ $result->{$atc} }}</td>
|
||||
@endforeach
|
||||
@endif
|
||||
@endif --}}
|
||||
|
||||
<td class="action">
|
||||
@foreach($actions as $action)
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ mix.js(
|
|||
],
|
||||
"js/ui.js"
|
||||
)
|
||||
// .copy(__dirname + "/src/Resources/assets/images", publicPath + "/images")
|
||||
.copy(__dirname + "/src/Resources/assets/images", publicPath + "/images")
|
||||
.sass(__dirname + "/src/Resources/assets/sass/app.scss", "css/ui.css")
|
||||
.options({
|
||||
processCssUrls: false
|
||||
|
|
|
|||
|
|
@ -11,6 +11,14 @@
|
|||
margin-bottom: 2px;
|
||||
}
|
||||
|
||||
.icon-menu-close {
|
||||
background-image: URL("../images/icon-menu-close.svg");
|
||||
width: 8px;
|
||||
height: 8px;
|
||||
margin-left: auto;
|
||||
margin-bottom: 2px;
|
||||
}
|
||||
|
||||
.grid-view-icon {
|
||||
background-image: URL("../images/icon-grid-view.svg");
|
||||
width: 24px;
|
||||
|
|
@ -64,6 +72,10 @@ body {
|
|||
.header {
|
||||
margin-top: 16px;
|
||||
margin-bottom: 21px;
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
.header .header-top {
|
||||
|
|
@ -404,7 +416,6 @@ body {
|
|||
display: -webkit-box;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
max-width: 92%;
|
||||
width: 100%;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
|
|
@ -557,7 +568,6 @@ body {
|
|||
display: -webkit-box;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
max-width: 92%;
|
||||
width: 100%;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
|
|
@ -2996,21 +3006,17 @@ section.cart .cart-content .right-side .coupon-section .after-coupon-amount .amo
|
|||
-ms-flex-direction: row;
|
||||
flex-direction: row;
|
||||
width: 100%;
|
||||
margin-top: 3%;
|
||||
margin-top: 20px;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.checkout-process .left-side {
|
||||
width: 67%;
|
||||
margin-right: 8%;
|
||||
height: 100px;
|
||||
.checkout-process .col-main {
|
||||
width: 65%;
|
||||
padding-right: 40px;
|
||||
}
|
||||
|
||||
.checkout-process .left-side .checkout-menu {
|
||||
.checkout-process .col-main ul.checkout-steps {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.checkout-process .left-side .checkout-menu ul.checkout-detail {
|
||||
height: 60px;
|
||||
display: -webkit-inline-box;
|
||||
display: -ms-inline-flexbox;
|
||||
display: inline-flex;
|
||||
|
|
@ -3018,20 +3024,18 @@ section.cart .cart-content .right-side .coupon-section .after-coupon-amount .amo
|
|||
-ms-flex-pack: justify;
|
||||
justify-content: space-between;
|
||||
width: 100%;
|
||||
padding: 5px;
|
||||
padding-bottom: 15px;
|
||||
border-bottom: 1px solid #E8E8E8;
|
||||
}
|
||||
|
||||
.checkout-process .left-side .checkout-menu ul.checkout-detail li {
|
||||
.checkout-process .col-main ul.checkout-steps li {
|
||||
height: 48px;
|
||||
}
|
||||
|
||||
.checkout-process .left-side .checkout-menu ul.checkout-detail li .wrapper {
|
||||
display: -webkit-box;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.checkout-process .left-side .checkout-menu ul.checkout-detail li .wrapper .decorator {
|
||||
.checkout-process .col-main ul.checkout-steps li .decorator {
|
||||
height: 48px;
|
||||
width: 48px;
|
||||
border: 1px solid black;
|
||||
|
|
@ -3042,66 +3046,80 @@ section.cart .cart-content .right-side .coupon-section .after-coupon-amount .amo
|
|||
border: 1px solid #E8E8E8;
|
||||
}
|
||||
|
||||
.checkout-process .left-side .checkout-menu ul.checkout-detail li .wrapper .decorator img {
|
||||
.checkout-process .col-main ul.checkout-steps li .decorator img {
|
||||
margin: auto;
|
||||
}
|
||||
|
||||
.checkout-process .left-side .checkout-menu ul.checkout-detail li .wrapper .decorator.active {
|
||||
border: 1px solid blue;
|
||||
}
|
||||
|
||||
.checkout-process .left-side .checkout-menu ul.checkout-detail li .wrapper span {
|
||||
.checkout-process .col-main ul.checkout-steps li span {
|
||||
margin-left: 7px;
|
||||
margin-top: auto;
|
||||
margin-bottom: auto;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
.checkout-process .left-side .checkout-menu .horizontal-rule {
|
||||
margin-top: 1%;
|
||||
.checkout-process .col-main ul.checkout-steps li.active {
|
||||
color: #2650EF;
|
||||
}
|
||||
|
||||
.checkout-process .col-main ul.checkout-steps li.active .decorator {
|
||||
border: 1px solid #2650EF;
|
||||
}
|
||||
|
||||
.checkout-process .col-main .step-content {
|
||||
padding-top: 20px;
|
||||
}
|
||||
|
||||
.checkout-process .col-main .step-content .form-header {
|
||||
width: 100%;
|
||||
height: 1px;
|
||||
vertical-align: middle;
|
||||
background: #e8e8e8;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.checkout-process .right-side {
|
||||
height: 300px;
|
||||
width: 300px;
|
||||
.checkout-process .col-main .step-content .form-header h1 {
|
||||
float: left;
|
||||
}
|
||||
|
||||
.checkout-process .right-side .purchase-detail {
|
||||
margin-top: 22px;
|
||||
margin-left: 18px;
|
||||
.checkout-process .col-main .step-content .form-header .btn {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.checkout-process .right-side .purchase-detail .price span {
|
||||
.checkout-process .col-main .step-content .form-container {
|
||||
border-bottom: 1px solid #E8E8E8;
|
||||
padding-top: 20px;
|
||||
padding-bottom: 20px;
|
||||
}
|
||||
|
||||
.checkout-process .col-right {
|
||||
width: 35%;
|
||||
padding-left: 40px;
|
||||
}
|
||||
|
||||
.checkout-process .col-right .order-summary .price span {
|
||||
margin-left: 3px;
|
||||
font-size: 16px;
|
||||
color: #242424;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.checkout-process .right-side .purchase-detail .item-detail {
|
||||
.checkout-process .col-right .order-summary .item-detail {
|
||||
margin-top: 12px;
|
||||
}
|
||||
|
||||
.checkout-process .right-side .purchase-detail .item-detail span {
|
||||
.checkout-process .col-right .order-summary .item-detail span {
|
||||
margin-left: 3px;
|
||||
}
|
||||
|
||||
.checkout-process .right-side .purchase-detail .item-detail span label {
|
||||
.checkout-process .col-right .order-summary .item-detail span label {
|
||||
font-size: 16px;
|
||||
color: #242424;
|
||||
}
|
||||
|
||||
.checkout-process .right-side .purchase-detail .item-detail span .right {
|
||||
.checkout-process .col-right .order-summary .item-detail span .right {
|
||||
float: right;
|
||||
font-size: 16px;
|
||||
color: #242424;
|
||||
}
|
||||
|
||||
.checkout-process .right-side .purchase-detail .horizontal-rule {
|
||||
.checkout-process .col-right .order-summary .horizontal-rule {
|
||||
margin-top: 6%;
|
||||
width: 100%;
|
||||
height: 1px;
|
||||
|
|
@ -3109,83 +3127,27 @@ section.cart .cart-content .right-side .coupon-section .after-coupon-amount .amo
|
|||
background: #e8e8e8;
|
||||
}
|
||||
|
||||
.checkout-process .right-side .purchase-detail .payble-amount {
|
||||
.checkout-process .col-right .order-summary .payble-amount {
|
||||
margin-top: 12px;
|
||||
}
|
||||
|
||||
.checkout-process .right-side .purchase-detail .payble-amount span {
|
||||
.checkout-process .col-right .order-summary .payble-amount span {
|
||||
margin-left: 3px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.checkout-process .right-side .purchase-detail .payble-amount span label {
|
||||
.checkout-process .col-right .order-summary .payble-amount span label {
|
||||
font-size: 16px;
|
||||
color: #242424;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.checkout-process .right-side .purchase-detail .payble-amount span .right {
|
||||
.checkout-process .col-right .order-summary .payble-amount span .right {
|
||||
float: right;
|
||||
font-size: 16px;
|
||||
color: #242424;
|
||||
}
|
||||
|
||||
.order-info {
|
||||
width: 67%;
|
||||
margin-right: 6%;
|
||||
height: 1350px;
|
||||
margin-top: -190px;
|
||||
}
|
||||
|
||||
.order-info .order-guest .order-text {
|
||||
font-size: 24px;
|
||||
color: #242424;
|
||||
letter-spacing: -0.58px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.order-info .sign-in {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.order-info .control-group {
|
||||
margin-top: 30px;
|
||||
}
|
||||
|
||||
.order-info .control-group label {
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.order-info .control-group .control {
|
||||
width: 600px;
|
||||
}
|
||||
|
||||
.order-info .control-group span {
|
||||
color: red;
|
||||
}
|
||||
|
||||
.order-info .different-billing-addr {
|
||||
margin-top: 5%;
|
||||
}
|
||||
|
||||
.order-info .different-billing-addr span {
|
||||
font-size: 16px;
|
||||
color: #242424;
|
||||
letter-spacing: -0.38px;
|
||||
}
|
||||
|
||||
.order-info .horizontal-rule {
|
||||
margin-top: 6%;
|
||||
width: 100%;
|
||||
height: 1px;
|
||||
vertical-align: middle;
|
||||
background: #e8e8e8;
|
||||
}
|
||||
|
||||
.order-info .countinue-button {
|
||||
margin-top: 3%;
|
||||
}
|
||||
|
||||
@media all and (max-width: 480px) {
|
||||
.checkout-process {
|
||||
width: 100%;
|
||||
|
|
@ -3312,77 +3274,6 @@ section.cart .cart-content .right-side .coupon-section .after-coupon-amount .amo
|
|||
}
|
||||
}
|
||||
|
||||
.signin-form {
|
||||
width: 67%;
|
||||
margin-right: 6%;
|
||||
height: 520px;
|
||||
margin-top: -190px;
|
||||
}
|
||||
|
||||
.signin-form .signin-guest .signin-text {
|
||||
font-size: 24px;
|
||||
color: #242424;
|
||||
letter-spacing: -0.58px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.signin-form .order-button {
|
||||
float: right;
|
||||
background: #0031F0;
|
||||
font-size: 14px;
|
||||
color: #FFFFFF;
|
||||
letter-spacing: -0.26px;
|
||||
text-align: center;
|
||||
height: 38px;
|
||||
width: 153px;
|
||||
border: none;
|
||||
}
|
||||
|
||||
.signin-form .control-group {
|
||||
margin-top: 30px;
|
||||
}
|
||||
|
||||
.signin-form .control-group label {
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.signin-form .control-group .control {
|
||||
width: 600px;
|
||||
}
|
||||
|
||||
.signin-form .control-group span {
|
||||
color: red;
|
||||
}
|
||||
|
||||
.signin-form .forgot-pass span {
|
||||
font-size: 16px;
|
||||
color: #0031F0;
|
||||
letter-spacing: -0.38px;
|
||||
}
|
||||
|
||||
.signin-form .horizontal-rule {
|
||||
margin-top: 6%;
|
||||
width: 100%;
|
||||
height: 1px;
|
||||
vertical-align: middle;
|
||||
background: #e8e8e8;
|
||||
}
|
||||
|
||||
.signin-form .countinue-button {
|
||||
margin-top: 3%;
|
||||
}
|
||||
|
||||
.signin-form .countinue-button button {
|
||||
background: #0031F0;
|
||||
font-size: 14px;
|
||||
color: #FFFFFF;
|
||||
letter-spacing: -0.26px;
|
||||
text-align: center;
|
||||
height: 38px;
|
||||
width: 137px;
|
||||
border: none;
|
||||
}
|
||||
|
||||
.ship-method {
|
||||
width: 67%;
|
||||
margin-right: 6%;
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -73,7 +73,7 @@
|
|||
@else
|
||||
<a href="{{ route('login') }}">Login</a>
|
||||
<a href="{{ route('register') }}">Register</a>
|
||||
@endauth
|
||||
@endauthexample-component
|
||||
</div>
|
||||
@endif
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue