codigo actual del servidor, con avances de joan
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
<script>
|
||||
function account_delete_confirm_modal(delete_url)
|
||||
{
|
||||
jQuery('#account_delete_confirm').modal('show', {backdrop: 'static'});
|
||||
document.getElementById('account_delete_link').setAttribute('href' , delete_url);
|
||||
}
|
||||
</script>
|
||||
|
||||
<div class="modal fade" id="account_delete_confirm" tabindex="-1" role="dialog" aria-labelledby="account_delete_confirmModalLabel" aria-hidden="true">
|
||||
<div class="modal-dialog modal-lg">
|
||||
<div class="modal-content">
|
||||
|
||||
<div class="modal-header d-block py-4">
|
||||
<div class="d-flex justify-content-center">
|
||||
<span class="avatar avatar-md mb-2 mt-2">
|
||||
@if (Auth::check() && Auth::user()->avatar_original != null)
|
||||
<img src="{{ uploaded_asset(Auth::user()->avatar_original) }}" class="m-auto"
|
||||
onerror="this.onerror=null;this.src='{{ static_asset('assets/img/avatar-place.png') }}';">
|
||||
@else
|
||||
<img src="{{ static_asset('assets/img/avatar-place.png') }}" class="image rounded-circle m-auto"
|
||||
onerror="this.onerror=null;this.src='{{ static_asset('assets/img/avatar-place.png') }}';">
|
||||
@endif
|
||||
</span>
|
||||
</div>
|
||||
<h4 class="modal-title text-center fw-700" id="account_delete_confirmModalLabel" style="color: #ff9819;">{{ translate('Delete Your Account')}}</h4>
|
||||
<p class="fs-16 fw-600 text-center" style="color: #8d8d8d;">{{ translate('Warning: You cannot undo this action')}}</p>
|
||||
</div>
|
||||
|
||||
<div class="modal-body pt-3 pb-5 px-xl-5">
|
||||
<p class="text-danger mt-3"><i><strong>{{ translate('Note: ')}} {{ translate("Don't Click to any button or don't do any action during account Deletion, it may takes some times.")}}</strong></i></p>
|
||||
<p class="fs-14 fw-700" style="color: #8d8d8d;">{{ translate('Deleting Account Means:')}}</p>
|
||||
<div class="row bg-soft-warning py-2 mb-2 ml-0 mr-0 border-left border-width-2 border-danger">
|
||||
<div class="col-1">
|
||||
<img src="{{ static_asset('assets/img/warning.png') }}" class="h-20px">
|
||||
</div>
|
||||
<div class="col">
|
||||
<p class="fw-600 mb-0">{{ translate('If you create any classified ptoducts, after deleting your account, those products will no longer in our system') }}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row bg-soft-warning py-3 ml-0 mr-0 border-left border-width-2 border-danger">
|
||||
<div class="col-1">
|
||||
<img src="{{ static_asset('assets/img/warning.png') }}" class="h-20px">
|
||||
</div>
|
||||
<div class="col">
|
||||
<p class="fw-600 mb-0">{{ translate('After deleting your account, wallet balance will no longer in our system') }}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-secondary rounded-0 w-150px" data-dismiss="modal">{{ translate('Cancel')}}</button>
|
||||
<a id="account_delete_link" class="btn btn-danger rounded-0 w-150px">{{ translate('Delete Account')}}</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
269
resources/views/frontend/partials/addToCart.blade.php
Normal file
269
resources/views/frontend/partials/addToCart.blade.php
Normal file
@@ -0,0 +1,269 @@
|
||||
<div class="modal-body px-4 py-5 c-scrollbar-light">
|
||||
<div class="row">
|
||||
<!-- Product Image gallery -->
|
||||
<div class="col-lg-6">
|
||||
<div class="row gutters-10 flex-row-reverse">
|
||||
@php
|
||||
$photos = explode(',',$product->photos);
|
||||
@endphp
|
||||
<div class="col">
|
||||
<div class="aiz-carousel product-gallery" data-nav-for='.product-gallery-thumb' data-fade='true' data-auto-height='true'>
|
||||
@foreach ($photos as $key => $photo)
|
||||
<div class="carousel-box img-zoom rounded-0">
|
||||
<img class="img-fluid lazyload"
|
||||
src="{{ static_asset('assets/img/placeholder.jpg') }}"
|
||||
data-src="{{ uploaded_asset($photo) }}"
|
||||
onerror="this.onerror=null;this.src='{{ static_asset('assets/img/placeholder.jpg') }}';">
|
||||
</div>
|
||||
@endforeach
|
||||
@foreach ($product->stocks as $key => $stock)
|
||||
@if ($stock->image != null)
|
||||
<div class="carousel-box img-zoom rounded-0">
|
||||
<img class="img-fluid lazyload"
|
||||
src="{{ static_asset('assets/img/placeholder.jpg') }}"
|
||||
data-src="{{ uploaded_asset($stock->image) }}"
|
||||
onerror="this.onerror=null;this.src='{{ static_asset('assets/img/placeholder.jpg') }}';">
|
||||
</div>
|
||||
@endif
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-auto w-90px">
|
||||
<div class="aiz-carousel carousel-thumb product-gallery-thumb" data-items='5' data-nav-for='.product-gallery' data-vertical='true' data-focus-select='true'>
|
||||
@foreach ($photos as $key => $photo)
|
||||
<div class="carousel-box c-pointer border rounded-0">
|
||||
<img class="lazyload mw-100 size-60px mx-auto"
|
||||
src="{{ static_asset('assets/img/placeholder.jpg') }}"
|
||||
data-src="{{ uploaded_asset($photo) }}"
|
||||
onerror="this.onerror=null;this.src='{{ static_asset('assets/img/placeholder.jpg') }}';">
|
||||
</div>
|
||||
@endforeach
|
||||
@foreach ($product->stocks as $key => $stock)
|
||||
@if ($stock->image != null)
|
||||
<div class="carousel-box c-pointer border rounded-0" data-variation="{{ $stock->variant }}">
|
||||
<img class="lazyload mw-100 size-50px mx-auto"
|
||||
src="{{ static_asset('assets/img/placeholder.jpg') }}"
|
||||
data-src="{{ uploaded_asset($stock->image) }}"
|
||||
onerror="this.onerror=null;this.src='{{ static_asset('assets/img/placeholder.jpg') }}';">
|
||||
</div>
|
||||
@endif
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Product Info -->
|
||||
<div class="col-lg-6">
|
||||
<div class="text-left">
|
||||
<!-- Product name -->
|
||||
<h2 class="mb-2 fs-16 fw-700 text-dark">
|
||||
{{ $product->getTranslation('name') }}
|
||||
</h2>
|
||||
|
||||
<!-- Product Price & Club Point -->
|
||||
@if(home_price($product) != home_discounted_price($product))
|
||||
<div class="row no-gutters mt-3">
|
||||
<div class="col-3">
|
||||
<div class="text-secondary fs-14 fw-400">{{ translate('Price')}}</div>
|
||||
</div>
|
||||
<div class="col-9">
|
||||
<div class="">
|
||||
<strong class="fs-16 fw-700 text-primary">
|
||||
{{ home_discounted_price($product) }}
|
||||
</strong>
|
||||
<del class="fs-14 opacity-60 ml-2">
|
||||
{{ home_price($product) }}
|
||||
</del>
|
||||
@if($product->unit != null)
|
||||
<span class="opacity-70 ml-1">/{{ $product->getTranslation('unit') }}</span>
|
||||
@endif
|
||||
@if(discount_in_percentage($product) > 0)
|
||||
<span class="bg-primary ml-2 fs-11 fw-700 text-white w-35px text-center px-2" style="padding-top:2px;padding-bottom:2px;">-{{discount_in_percentage($product)}}%</span>
|
||||
@endif
|
||||
</div>
|
||||
|
||||
<!-- Club Point -->
|
||||
@if (addon_is_activated('club_point') && $product->earn_point > 0)
|
||||
<div class="mt-2 bg-warning d-flex justify-content-center align-items-center px-3 py-1" style="width: fit-content;">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12">
|
||||
<g id="Group_23922" data-name="Group 23922" transform="translate(-973 -633)">
|
||||
<circle id="Ellipse_39" data-name="Ellipse 39" cx="6" cy="6" r="6" transform="translate(973 633)" fill="#fff"/>
|
||||
<g id="Group_23920" data-name="Group 23920" transform="translate(973 633)">
|
||||
<path id="Path_28698" data-name="Path 28698" d="M7.667,3H4.333L3,5,6,9,9,5Z" transform="translate(0 0)" fill="#f3af3d"/>
|
||||
<path id="Path_28699" data-name="Path 28699" d="M5.33,3h-1L3,5,6,9,4.331,5Z" transform="translate(0 0)" fill="#f3af3d" opacity="0.5"/>
|
||||
<path id="Path_28700" data-name="Path 28700" d="M12.666,3h1L15,5,12,9l1.664-4Z" transform="translate(-5.995 0)" fill="#f3af3d"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
<small class="fs-11 fw-500 text-white ml-2">{{ translate('Club Point') }}: {{ $product->earn_point }}</small>
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
@else
|
||||
<div class="row no-gutters mt-3">
|
||||
<div class="col-3">
|
||||
<div class="text-secondary fs-14 fw-400">{{ translate('Price')}}</div>
|
||||
</div>
|
||||
<div class="col-9">
|
||||
<div class="">
|
||||
<strong class="fs-16 fw-700 text-primary">
|
||||
{{ home_discounted_price($product) }}
|
||||
</strong>
|
||||
@if ($product->unit != null)
|
||||
<span class="opacity-70">/{{ $product->unit }}</span>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
@php
|
||||
$qty = 0;
|
||||
foreach ($product->stocks as $key => $stock) {
|
||||
$qty += $stock->qty;
|
||||
}
|
||||
@endphp
|
||||
|
||||
<!-- Product Choice options form -->
|
||||
<form id="option-choice-form">
|
||||
@csrf
|
||||
<input type="hidden" name="id" value="{{ $product->id }}">
|
||||
|
||||
@if($product->digital !=1)
|
||||
<!-- Product Choice options -->
|
||||
@if ($product->choice_options != null)
|
||||
@foreach (json_decode($product->choice_options) as $key => $choice)
|
||||
|
||||
<div class="row no-gutters mt-3">
|
||||
<div class="col-3">
|
||||
<div class="text-secondary fs-14 fw-400 mt-2 ">{{ \App\Models\Attribute::find($choice->attribute_id)->getTranslation('name') }}</div>
|
||||
</div>
|
||||
<div class="col-9">
|
||||
<div class="aiz-radio-inline">
|
||||
@foreach ($choice->values as $key => $value)
|
||||
<label class="aiz-megabox pl-0 mr-2 mb-0">
|
||||
<input
|
||||
type="radio"
|
||||
name="attribute_id_{{ $choice->attribute_id }}"
|
||||
value="{{ $value }}"
|
||||
@if($key == 0) checked @endif
|
||||
>
|
||||
<span class="aiz-megabox-elem rounded-0 d-flex align-items-center justify-content-center py-1 px-3">
|
||||
{{ $value }}
|
||||
</span>
|
||||
</label>
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@endforeach
|
||||
@endif
|
||||
|
||||
<!-- Color -->
|
||||
@if (count(json_decode($product->colors)) > 0)
|
||||
<div class="row no-gutters mt-3">
|
||||
<div class="col-3">
|
||||
<div class="text-secondary fs-14 fw-400 mt-2">{{ translate('Color')}}</div>
|
||||
</div>
|
||||
<div class="col-9">
|
||||
<div class="aiz-radio-inline">
|
||||
@foreach (json_decode($product->colors) as $key => $color)
|
||||
<label class="aiz-megabox pl-0 mr-2 mb-0" data-toggle="tooltip" data-title="{{ \App\Models\Color::where('code', $color)->first()->name }}">
|
||||
<input
|
||||
type="radio"
|
||||
name="color"
|
||||
value="{{ \App\Models\Color::where('code', $color)->first()->name }}"
|
||||
@if($key == 0) checked @endif
|
||||
>
|
||||
<span class="aiz-megabox-elem rounded-0 d-flex align-items-center justify-content-center p-1">
|
||||
<span class="size-25px d-inline-block rounded" style="background: {{ $color }};"></span>
|
||||
</span>
|
||||
</label>
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<!-- Quantity -->
|
||||
<div class="row no-gutters mt-3">
|
||||
<div class="col-3">
|
||||
<div class="text-secondary fs-14 fw-400 mt-2">{{ translate('Quantity')}}</div>
|
||||
</div>
|
||||
<div class="col-9">
|
||||
<div class="product-quantity d-flex align-items-center">
|
||||
<div class="row no-gutters align-items-center aiz-plus-minus mr-3" style="width: 130px;">
|
||||
<button class="btn col-auto btn-icon btn-sm btn-light rounded-0" type="button" data-type="minus" data-field="quantity" disabled="">
|
||||
<i class="las la-minus"></i>
|
||||
</button>
|
||||
<input type="number" name="quantity" class="col border-0 text-center flex-grow-1 fs-16 input-number" placeholder="1" value="{{ $product->min_qty }}" min="{{ $product->min_qty }}" max="10" lang="en">
|
||||
<button class="btn col-auto btn-icon btn-sm btn-light rounded-0" type="button" data-type="plus" data-field="quantity">
|
||||
<i class="las la-plus"></i>
|
||||
</button>
|
||||
</div>
|
||||
<div class="avialable-amount opacity-60">
|
||||
@if($product->stock_visibility_state == 'quantity')
|
||||
(<span id="available-quantity">{{ $qty }}</span> {{ translate('available')}})
|
||||
@elseif($product->stock_visibility_state == 'text' && $qty >= 1)
|
||||
(<span id="available-quantity">{{ translate('In Stock') }}</span>)
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<!-- Total Price -->
|
||||
<div class="row no-gutters mt-3 pb-3 d-none" id="chosen_price_div">
|
||||
<div class="col-3">
|
||||
<div class="text-secondary fs-14 fw-400 mt-1">{{ translate('Total Price')}}</div>
|
||||
</div>
|
||||
<div class="col-9">
|
||||
<div class="product-price">
|
||||
<strong id="chosen_price" class="fs-20 fw-700 text-primary">
|
||||
|
||||
</strong>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
|
||||
<!-- Add to cart -->
|
||||
<div class="mt-3">
|
||||
@if ($product->digital == 1)
|
||||
<button type="button" class="btn btn-primary rounded-0 buy-now fw-600 add-to-cart" onclick="addToCart()">
|
||||
<i class="la la-shopping-cart"></i>
|
||||
<span class="d-none d-md-inline-block">{{ translate('Add to cart')}}</span>
|
||||
</button>
|
||||
@elseif($qty > 0)
|
||||
@if ($product->external_link != null)
|
||||
<a type="button" class="btn btn-soft-primary rounded-0 mr-2 add-to-cart fw-600" href="{{ $product->external_link }}">
|
||||
<i class="las la-share"></i>
|
||||
<span class="d-none d-md-inline-block">{{ translate($product->external_link_btn)}}</span>
|
||||
</a>
|
||||
@else
|
||||
<button type="button" class="btn btn-primary rounded-0 buy-now fw-600 add-to-cart" onclick="addToCart()">
|
||||
<i class="la la-shopping-cart"></i>
|
||||
<span class="d-none d-md-inline-block">{{ translate('Add to cart')}}</span>
|
||||
</button>
|
||||
@endif
|
||||
@endif
|
||||
<button type="button" class="btn btn-secondary rounded-0 out-of-stock fw-600 d-none" disabled>
|
||||
<i class="la la-cart-arrow-down"></i>{{ translate('Out of Stock')}}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
$('#option-choice-form input').on('change', function () {
|
||||
getVariantPrice();
|
||||
});
|
||||
</script>
|
||||
86
resources/views/frontend/partials/addedToCart.blade.php
Normal file
86
resources/views/frontend/partials/addedToCart.blade.php
Normal file
@@ -0,0 +1,86 @@
|
||||
<div class="modal-body px-4 py-5 c-scrollbar-light">
|
||||
<!-- Item added to your cart -->
|
||||
<div class="text-center text-success mb-4">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="36" height="36" viewBox="0 0 36 36">
|
||||
<g id="Group_23957" data-name="Group 23957" transform="translate(-6269 7766)">
|
||||
<path id="Path_28713" data-name="Path 28713" d="M12.8,32.8a3.6,3.6,0,1,0,3.6,3.6A3.584,3.584,0,0,0,12.8,32.8ZM2,4V7.6H5.6l6.471,13.653-2.43,4.41A3.659,3.659,0,0,0,9.2,27.4,3.6,3.6,0,0,0,12.8,31H34.4V27.4H13.565a.446.446,0,0,1-.45-.45.428.428,0,0,1,.054-.216L14.78,23.8H28.19a3.612,3.612,0,0,0,3.15-1.854l6.435-11.682A1.74,1.74,0,0,0,38,9.4a1.8,1.8,0,0,0-1.8-1.8H9.587L7.877,4H2ZM30.8,32.8a3.6,3.6,0,1,0,3.6,3.6A3.584,3.584,0,0,0,30.8,32.8Z" transform="translate(6267 -7770)" fill="#85b567"/>
|
||||
<rect id="Rectangle_18068" data-name="Rectangle 18068" width="9" height="3" rx="1.5" transform="translate(6284.343 -7757.879) rotate(45)" fill="#fff"/>
|
||||
<rect id="Rectangle_18069" data-name="Rectangle 18069" width="3" height="13" rx="1.5" transform="translate(6295.657 -7760.707) rotate(45)" fill="#fff"/>
|
||||
</g>
|
||||
</svg>
|
||||
<h3 class="fs-28 fw-500">{{ translate('Item added to your cart!')}}</h3>
|
||||
</div>
|
||||
|
||||
<!-- Product Info -->
|
||||
<div class="media mb-1">
|
||||
<img src="{{ static_asset('assets/img/placeholder.jpg') }}" data-src="{{ uploaded_asset($product->thumbnail_img) }}"
|
||||
class="mr-4 lazyload size-90px img-fit rounded-0" alt="Product Image" onerror="this.onerror=null;this.src='{{ static_asset('assets/img/placeholder.jpg') }}';">
|
||||
<div class="media-body mt-2 text-left d-flex flex-column justify-content-between">
|
||||
<h6 class="fs-14 fw-700 text-truncate-2">
|
||||
{{ $product->getTranslation('name') }}
|
||||
</h6>
|
||||
<div class="row mt-2">
|
||||
<div class="col-sm-3 fs-14 fw-400 text-secondary">
|
||||
<div>{{ translate('Price')}}</div>
|
||||
</div>
|
||||
<div class="col-sm-9">
|
||||
<div class="fs-16 fw-700 text-primary">
|
||||
<strong>
|
||||
{{ single_price(($data['price'] + $data['tax']) * $data['quantity']) }}
|
||||
</strong>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Related product -->
|
||||
<div class="bg-white shadow-sm">
|
||||
<div class="py-3">
|
||||
<h3 class="fs-16 fw-700 mb-0 text-dark">
|
||||
<span class="mr-4">{{ translate('Frequently Bought Together')}}</span>
|
||||
</h3>
|
||||
</div>
|
||||
<div class="p-3">
|
||||
<div class="aiz-carousel gutters-5 half-outside-arrow" data-items="2" data-xl-items="3" data-lg-items="4" data-md-items="3" data-sm-items="2" data-xs-items="2" data-arrows='true' data-infinite='true'>
|
||||
@foreach (filter_products(\App\Models\Product::where('category_id', $product->category_id)->where('id', '!=', $product->id))->limit(10)->get() as $key => $related_product)
|
||||
<div class="carousel-box hov-scale-img hov-shadow-sm">
|
||||
<div class="aiz-card-box my-2 has-transition">
|
||||
<div class="">
|
||||
<a href="{{ route('product', $related_product->slug) }}" class="d-block">
|
||||
<img class="img-fit lazyload mx-auto h-140px h-md-200px has-transition"
|
||||
src="{{ static_asset('assets/img/placeholder.jpg') }}"
|
||||
data-src="{{ uploaded_asset($related_product->thumbnail_img) }}"
|
||||
alt="{{ $related_product->getTranslation('name') }}"
|
||||
onerror="this.onerror=null;this.src='{{ static_asset('assets/img/placeholder.jpg') }}';">
|
||||
</a>
|
||||
</div>
|
||||
<div class="p-md-3 p-2 text-center">
|
||||
<h3 class="fw-400 fs-14 text-dark text-truncate-2 lh-1-4 mb-0 h-35px">
|
||||
<a href="{{ route('product', $related_product->slug) }}" class="d-block text-reset hov-text-primary">{{ $related_product->getTranslation('name') }}</a>
|
||||
</h3>
|
||||
<div class="fs-14 mt-3">
|
||||
<span class="fw-700 text-primary">{{ home_discounted_base_price($related_product) }}</span>
|
||||
@if(home_base_price($related_product) != home_discounted_base_price($related_product))
|
||||
<del class="fw-600 opacity-50 ml-1">{{ home_base_price($related_product) }}</del>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Back to shopping & Checkout buttons -->
|
||||
<div class="row gutters-5">
|
||||
<div class="col-sm-6">
|
||||
<button class="btn btn-warning mb-3 mb-sm-0 btn-block rounded-0 text-white" data-dismiss="modal">{{ translate('Back to shopping')}}</button>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<a href="{{ route('cart') }}" class="btn btn-primary mb-3 mb-sm-0 btn-block rounded-0">{{ translate('Proceed to Checkout')}}</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
123
resources/views/frontend/partials/address_edit_modal.blade.php
Normal file
123
resources/views/frontend/partials/address_edit_modal.blade.php
Normal file
@@ -0,0 +1,123 @@
|
||||
<form class="form-default" role="form" action="{{ route('addresses.update', $address_data->id) }}" method="POST">
|
||||
@csrf
|
||||
<div class="p-3">
|
||||
<!-- Address -->
|
||||
<div class="row">
|
||||
<div class="col-md-2">
|
||||
<label>{{ translate('Address')}}</label>
|
||||
</div>
|
||||
<div class="col-md-10">
|
||||
<textarea class="form-control mb-3 rounded-0" placeholder="{{ translate('Your Address')}}" rows="2" name="address" required>{{ $address_data->address }}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Country -->
|
||||
<div class="row">
|
||||
<div class="col-md-2">
|
||||
<label>{{ translate('Country')}}</label>
|
||||
</div>
|
||||
<div class="col-md-10">
|
||||
<div class="mb-3">
|
||||
<select class="form-control aiz-selectpicker rounded-0" data-live-search="true" data-placeholder="{{ translate('Select your country')}}" name="country_id" id="edit_country" required>
|
||||
<option value="">{{ translate('Select your country') }}</option>
|
||||
@foreach (\App\Models\Country::where('status', 1)->get() as $key => $country)
|
||||
<option value="{{ $country->id }}" @if($address_data->country_id == $country->id) selected @endif>
|
||||
{{ $country->name }}
|
||||
</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- State -->
|
||||
<div class="row">
|
||||
<div class="col-md-2">
|
||||
<label>{{ translate('State')}}</label>
|
||||
</div>
|
||||
<div class="col-md-10">
|
||||
<select class="form-control mb-3 aiz-selectpicker rounded-0" name="state_id" id="edit_state" data-live-search="true" required>
|
||||
@foreach ($states as $key => $state)
|
||||
<option value="{{ $state->id }}" @if($address_data->state_id == $state->id) selected @endif>
|
||||
{{ $state->name }}
|
||||
</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- City -->
|
||||
<div class="row">
|
||||
<div class="col-md-2">
|
||||
<label>{{ translate('City')}}</label>
|
||||
</div>
|
||||
<div class="col-md-10">
|
||||
<select class="form-control mb-3 aiz-selectpicker rounded-0" data-live-search="true" name="city_id" required>
|
||||
@foreach ($cities as $key => $city)
|
||||
<option value="{{ $city->id }}" @if($address_data->city_id == $city->id) selected @endif>
|
||||
{{ $city->name }}
|
||||
</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@if (get_setting('google_map') == 1)
|
||||
<!-- Google Map -->
|
||||
<div class="row mt-3 mb-3">
|
||||
<input id="edit_searchInput" class="controls" type="text" placeholder="Enter a location">
|
||||
<div id="edit_map"></div>
|
||||
<ul id="geoData">
|
||||
<li style="display: none;">Full Address: <span id="location"></span></li>
|
||||
<li style="display: none;">Postal Code: <span id="postal_code"></span></li>
|
||||
<li style="display: none;">Country: <span id="country"></span></li>
|
||||
<li style="display: none;">Latitude: <span id="lat"></span></li>
|
||||
<li style="display: none;">Longitude: <span id="lon"></span></li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- Longitude -->
|
||||
<div class="row">
|
||||
<div class="col-md-2" id="">
|
||||
<label for="exampleInputuname">{{ translate('Longitude')}}</label>
|
||||
</div>
|
||||
<div class="col-md-10" id="">
|
||||
<input type="text" class="form-control mb-3 rounded-0" id="edit_longitude" name="longitude" value="{{ $address_data->longitude }}" readonly="">
|
||||
</div>
|
||||
</div>
|
||||
<!-- Latitude -->
|
||||
<div class="row">
|
||||
<div class="col-md-2" id="">
|
||||
<label for="exampleInputuname">{{ translate('Latitude')}}</label>
|
||||
</div>
|
||||
<div class="col-md-10" id="">
|
||||
<input type="text" class="form-control mb-3 rounded-0" id="edit_latitude" name="latitude" value="{{ $address_data->latitude }}" readonly="">
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<!-- Postal code -->
|
||||
<div class="row">
|
||||
<div class="col-md-2">
|
||||
<label>{{ translate('Postal code')}}</label>
|
||||
</div>
|
||||
<div class="col-md-10">
|
||||
<input type="text" class="form-control mb-3 rounded-0" placeholder="{{ translate('Your Postal Code')}}" value="{{ $address_data->postal_code }}" name="postal_code" value="" required>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Phone -->
|
||||
<div class="row">
|
||||
<div class="col-md-2">
|
||||
<label>{{ translate('Phone')}}</label>
|
||||
</div>
|
||||
<div class="col-md-10">
|
||||
<input type="text" class="form-control mb-3 rounded-0" placeholder="{{ translate('+880')}}" value="{{ $address_data->phone }}" name="phone" value="" required>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Save button -->
|
||||
<div class="form-group text-right">
|
||||
<button type="submit" class="btn btn-primary rounded-0 w-150px">{{translate('Save')}}</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
240
resources/views/frontend/partials/address_modal.blade.php
Normal file
240
resources/views/frontend/partials/address_modal.blade.php
Normal file
@@ -0,0 +1,240 @@
|
||||
<!-- New Address Modal -->
|
||||
<div class="modal fade" id="new-address-modal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
|
||||
<div class="modal-dialog modal-dialog-centered modal-md" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title" id="exampleModalLabel">{{ translate('New Address') }}</h5>
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
<form class="form-default" role="form" action="{{ route('addresses.store') }}" method="POST">
|
||||
@csrf
|
||||
<div class="modal-body c-scrollbar-light">
|
||||
<div class="p-3">
|
||||
<!-- Address -->
|
||||
<div class="row">
|
||||
<div class="col-md-2">
|
||||
<label>{{ translate('Address')}}</label>
|
||||
</div>
|
||||
<div class="col-md-10">
|
||||
<textarea class="form-control mb-3 rounded-0" placeholder="{{ translate('Your Address')}}" rows="2" name="address" required></textarea>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Country -->
|
||||
<div class="row">
|
||||
<div class="col-md-2">
|
||||
<label>{{ translate('Country')}}</label>
|
||||
</div>
|
||||
<div class="col-md-10">
|
||||
<div class="mb-3">
|
||||
<select class="form-control aiz-selectpicker rounded-0" data-live-search="true" data-placeholder="{{ translate('Select your country') }}" name="country_id" required>
|
||||
<option value="">{{ translate('Select your country') }}</option>
|
||||
@foreach (\App\Models\Country::where('status', 1)->get() as $key => $country)
|
||||
<option value="{{ $country->id }}">{{ $country->name }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- State -->
|
||||
<div class="row">
|
||||
<div class="col-md-2">
|
||||
<label>{{ translate('State')}}</label>
|
||||
</div>
|
||||
<div class="col-md-10">
|
||||
<select class="form-control mb-3 aiz-selectpicker rounded-0" data-live-search="true" name="state_id" required>
|
||||
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- City -->
|
||||
<div class="row">
|
||||
<div class="col-md-2">
|
||||
<label>{{ translate('City')}}</label>
|
||||
</div>
|
||||
<div class="col-md-10">
|
||||
<select class="form-control mb-3 aiz-selectpicker rounded-0" data-live-search="true" name="city_id" required>
|
||||
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@if (get_setting('google_map') == 1)
|
||||
<!-- Google Map -->
|
||||
<div class="row mt-3 mb-3">
|
||||
<input id="searchInput" class="controls" type="text" placeholder="{{translate('Enter a location')}}">
|
||||
<div id="map"></div>
|
||||
<ul id="geoData">
|
||||
<li style="display: none;">Full Address: <span id="location"></span></li>
|
||||
<li style="display: none;">Postal Code: <span id="postal_code"></span></li>
|
||||
<li style="display: none;">Country: <span id="country"></span></li>
|
||||
<li style="display: none;">Latitude: <span id="lat"></span></li>
|
||||
<li style="display: none;">Longitude: <span id="lon"></span></li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- Longitude -->
|
||||
<div class="row">
|
||||
<div class="col-md-2" id="">
|
||||
<label for="exampleInputuname">{{ translate('Longitude')}}</label>
|
||||
</div>
|
||||
<div class="col-md-10" id="">
|
||||
<input type="text" class="form-control mb-3 rounded-0" id="longitude" name="longitude" readonly="">
|
||||
</div>
|
||||
</div>
|
||||
<!-- Latitude -->
|
||||
<div class="row">
|
||||
<div class="col-md-2" id="">
|
||||
<label for="exampleInputuname">{{ translate('Latitude')}}</label>
|
||||
</div>
|
||||
<div class="col-md-10" id="">
|
||||
<input type="text" class="form-control mb-3 rounded-0" id="latitude" name="latitude" readonly="">
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<!-- Postal code -->
|
||||
<div class="row">
|
||||
<div class="col-md-2">
|
||||
<label>{{ translate('Postal code')}}</label>
|
||||
</div>
|
||||
<div class="col-md-10">
|
||||
<input type="text" class="form-control mb-3 rounded-0" placeholder="{{ translate('Your Postal Code')}}" name="postal_code" value="" required>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Phone -->
|
||||
<div class="row">
|
||||
<div class="col-md-2">
|
||||
<label>{{ translate('Phone')}}</label>
|
||||
</div>
|
||||
<div class="col-md-10">
|
||||
<input type="text" class="form-control mb-3 rounded-0" placeholder="{{ translate('+880')}}" name="phone" value="" required>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Save button -->
|
||||
<div class="form-group text-right">
|
||||
<button type="submit" class="btn btn-primary rounded-0 w-150px">{{translate('Save')}}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Edit Address Modal -->
|
||||
<div class="modal fade" id="edit-address-modal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
|
||||
<div class="modal-dialog modal-dialog-centered modal-md" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title" id="exampleModalLabel">{{ translate('New Address') }}</h5>
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="modal-body c-scrollbar-light" id="edit_modal_body">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@section('script')
|
||||
<script type="text/javascript">
|
||||
function add_new_address(){
|
||||
$('#new-address-modal').modal('show');
|
||||
}
|
||||
|
||||
function edit_address(address) {
|
||||
var url = '{{ route("addresses.edit", ":id") }}';
|
||||
url = url.replace(':id', address);
|
||||
|
||||
$.ajax({
|
||||
headers: {
|
||||
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
|
||||
},
|
||||
url: url,
|
||||
type: 'GET',
|
||||
success: function (response) {
|
||||
$('#edit_modal_body').html(response.html);
|
||||
$('#edit-address-modal').modal('show');
|
||||
AIZ.plugins.bootstrapSelect('refresh');
|
||||
|
||||
@if (get_setting('google_map') == 1)
|
||||
var lat = -33.8688;
|
||||
var long = 151.2195;
|
||||
|
||||
if(response.data.address_data.latitude && response.data.address_data.longitude) {
|
||||
lat = parseFloat(response.data.address_data.latitude);
|
||||
long = parseFloat(response.data.address_data.longitude);
|
||||
}
|
||||
|
||||
initialize(lat, long, 'edit_');
|
||||
@endif
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
$(document).on('change', '[name=country_id]', function() {
|
||||
var country_id = $(this).val();
|
||||
get_states(country_id);
|
||||
});
|
||||
|
||||
$(document).on('change', '[name=state_id]', function() {
|
||||
var state_id = $(this).val();
|
||||
get_city(state_id);
|
||||
});
|
||||
|
||||
function get_states(country_id) {
|
||||
$('[name="state"]').html("");
|
||||
$.ajax({
|
||||
headers: {
|
||||
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
|
||||
},
|
||||
url: "{{route('get-state')}}",
|
||||
type: 'POST',
|
||||
data: {
|
||||
country_id : country_id
|
||||
},
|
||||
success: function (response) {
|
||||
var obj = JSON.parse(response);
|
||||
if(obj != '') {
|
||||
$('[name="state_id"]').html(obj);
|
||||
AIZ.plugins.bootstrapSelect('refresh');
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function get_city(state_id) {
|
||||
$('[name="city"]').html("");
|
||||
$.ajax({
|
||||
headers: {
|
||||
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
|
||||
},
|
||||
url: "{{route('get-city')}}",
|
||||
type: 'POST',
|
||||
data: {
|
||||
state_id: state_id
|
||||
},
|
||||
success: function (response) {
|
||||
var obj = JSON.parse(response);
|
||||
if(obj != '') {
|
||||
$('[name="city_id"]').html(obj);
|
||||
AIZ.plugins.bootstrapSelect('refresh');
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
@if (get_setting('google_map') == 1)
|
||||
@include('frontend.partials.google_map')
|
||||
@endif
|
||||
@endsection
|
||||
@@ -0,0 +1,9 @@
|
||||
<div class="modal-body p-4 added-to-cart">
|
||||
<div class="text-center text-danger">
|
||||
<h2>{{translate('oops..')}}</h2>
|
||||
<h3>{{translate('Remove auction product from cart to add this product.')}}</h3>
|
||||
</div>
|
||||
<div class="text-center mt-5">
|
||||
<button class="btn btn-outline-primary" data-dismiss="modal">{{translate('Back to shopping')}}</button>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,51 @@
|
||||
@php
|
||||
$best_selers = Cache::remember('best_selers', 86400, function () {
|
||||
return \App\Models\Shop::where('verification_status', 1)->orderBy('num_of_sale', 'desc')->take(20)->get();
|
||||
});
|
||||
@endphp
|
||||
|
||||
@if (get_setting('vendor_system_activation') == 1)
|
||||
<section class="mb-4">
|
||||
<div class="container">
|
||||
<div class="px-2 py-4 px-md-4 py-md-3 bg-white shadow-sm rounded">
|
||||
<div class="d-flex mb-3 align-items-baseline border-bottom">
|
||||
<h3 class="h5 fw-700 mb-0">
|
||||
<span class="border-bottom border-primary border-width-2 pb-3 d-inline-block">{{ translate('Best Sellers')}}</span>
|
||||
</h3>
|
||||
<a href="{{ route('sellers') }}" class="ml-auto mr-0 btn btn-primary btn-sm shadow-md">{{ translate('View All Sellers') }}</a>
|
||||
</div>
|
||||
<div class="aiz-carousel gutters-10 half-outside-arrow" data-items="3" data-lg-items="3" data-md-items="2" data-sm-items="2" data-xs-items="1" data-rows="2">
|
||||
@foreach ($best_selers as $key => $seller)
|
||||
@if ($seller->user != null)
|
||||
<div class="carousel-box">
|
||||
<div class="row no-gutters box-3 align-items-center border border-light rounded hov-shadow-md my-2 has-transition">
|
||||
<div class="col-4">
|
||||
<a href="{{ route('shop.visit', $seller->slug) }}" class="d-block p-3">
|
||||
<img src="{{ static_asset('assets/img/placeholder.jpg') }}"
|
||||
data-src="@if ($seller->logo !== null) {{ uploaded_asset($seller->logo) }} @else {{ static_asset('assets/img/placeholder.jpg') }} @endif"
|
||||
alt="{{ $seller->name }}"
|
||||
class="img-fluid lazyload">
|
||||
</a>
|
||||
</div>
|
||||
<div class="col-8 border-left border-light">
|
||||
<div class="p-3 text-left">
|
||||
<h2 class="h6 fw-600 text-truncate">
|
||||
<a href="{{ route('shop.visit', $seller->slug) }}" class="text-reset">{{ $seller->name }}</a>
|
||||
</h2>
|
||||
<div class="rating rating-sm mb-2">
|
||||
{{ renderStarRating($seller->rating) }}
|
||||
</div>
|
||||
<a href="{{ route('shop.visit', $seller->slug) }}" class="btn btn-soft-primary btn-sm">
|
||||
{{ translate('Visit Store') }} <i class="las la-angle-right"></i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
@endif
|
||||
@@ -0,0 +1,34 @@
|
||||
@php
|
||||
$best_selling_products = Cache::remember('best_selling_products', 86400, function () {
|
||||
return filter_products(\App\Models\Product::where('published', 1)->orderBy('num_of_sale', 'desc'))->limit(20)->get();
|
||||
});
|
||||
@endphp
|
||||
|
||||
@if (get_setting('best_selling') == 1 && count($best_selling_products) > 0)
|
||||
<section class="mb-2 mb-md-3 mt-2 mt-md-3">
|
||||
<div class="container">
|
||||
<!-- Top Section -->
|
||||
<div class="d-flex mb-2 mb-md-3 align-items-baseline justify-content-between">
|
||||
<!-- Title -->
|
||||
<h3 class="fs-16 fs-md-20 fw-700 mb-2 mb-sm-0">
|
||||
<span class="">{{ translate('Best Selling') }}</span>
|
||||
</h3>
|
||||
<!-- Links -->
|
||||
<div class="d-flex">
|
||||
<a type="button" class="arrow-prev slide-arrow link-disable text-secondary mr-2" onclick="clickToSlide('slick-prev','section_best_selling')"><i class="las la-angle-left fs-20 fw-600"></i></a>
|
||||
<a type="button" class="arrow-next slide-arrow text-secondary ml-2" onclick="clickToSlide('slick-next','section_best_selling')"><i class="las la-angle-right fs-20 fw-600"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Product Section -->
|
||||
<div class="px-sm-3">
|
||||
<div class="aiz-carousel sm-gutters-16 arrow-none" data-items="6" data-xl-items="5" data-lg-items="4" data-md-items="3" data-sm-items="2" data-xs-items="2" data-arrows='true' data-infinite='false'>
|
||||
@foreach ($best_selling_products as $key => $product)
|
||||
<div class="carousel-box px-3 position-relative has-transition hov-animate-outline border-right border-top border-bottom @if($key == 0) border-left @endif">
|
||||
@include('frontend.partials.product_box_1',['product' => $product])
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
@endif
|
||||
110
resources/views/frontend/partials/cart.blade.php
Normal file
110
resources/views/frontend/partials/cart.blade.php
Normal file
@@ -0,0 +1,110 @@
|
||||
@php
|
||||
if (auth()->user() != null) {
|
||||
$user_id = Auth::user()->id;
|
||||
$cart = \App\Models\Cart::where('user_id', $user_id)->get();
|
||||
} else {
|
||||
$temp_user_id = Session()->get('temp_user_id');
|
||||
if ($temp_user_id) {
|
||||
$cart = \App\Models\Cart::where('temp_user_id', $temp_user_id)->get();
|
||||
}
|
||||
}
|
||||
|
||||
$total = 0;
|
||||
if(isset($cart) && count($cart) > 0){
|
||||
foreach ($cart as $key => $cartItem){
|
||||
$product = \App\Models\Product::find($cartItem['product_id']);
|
||||
$total = $total + cart_product_price($cartItem, $product, false) * $cartItem['quantity'];
|
||||
}
|
||||
}
|
||||
@endphp
|
||||
<!-- Cart button with cart count -->
|
||||
<a href="javascript:void(0)" class="d-flex align-items-center text-dark px-3 h-100" data-toggle="dropdown" data-display="static" title="{{translate('Cart')}}">
|
||||
<span class="mr-2">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="20.562" viewBox="0 0 24 20.562">
|
||||
<g id="_5e67fc94b53aaec8ca181b806dd815ee" data-name="5e67fc94b53aaec8ca181b806dd815ee" transform="translate(-33.276 -101)">
|
||||
<path id="Path_32659" data-name="Path 32659" d="M34.034,102.519H38.2l-.732-.557c.122.37.243.739.365,1.112q.441,1.333.879,2.666.528,1.6,1.058,3.211.46,1.394.917,2.788c.149.451.291.9.446,1.352l.008.02a.76.76,0,0,0,1.466-.4c-.122-.37-.243-.739-.365-1.112q-.441-1.333-.879-2.666-.528-1.607-1.058-3.213-.46-1.394-.917-2.788c-.149-.451-.289-.9-.446-1.352l-.008-.02a.783.783,0,0,0-.732-.557H34.037a.76.76,0,0,0,0,1.519Z" fill="#fff"/>
|
||||
<path id="Path_32660" data-name="Path 32660" d="M288.931,541.934q-.615,1.1-1.233,2.193c-.058.106-.119.21-.177.317a.767.767,0,0,0,.656,1.142h11.6c.534,0,1.071.01,1.608,0h.023a.76.76,0,0,0,0-1.519h-11.6c-.534,0-1.074-.015-1.608,0h-.023l.656,1.142q.615-1.1,1.233-2.193c.058-.106.119-.21.177-.316a.759.759,0,0,0-1.312-.765Z" transform="translate(-247.711 -429.41)" fill="#fff"/>
|
||||
<circle id="Ellipse_553" data-name="Ellipse 553" cx="1.724" cy="1.724" r="1.724" transform="translate(49.612 117.606)" fill="#fff"/>
|
||||
<path id="Path_32661" data-name="Path 32661" d="M658.4,739.2a2.267,2.267,0,0,0,1.489,2.1,2.232,2.232,0,0,0,2.433-.648A2.231,2.231,0,1,0,658.4,739.2a.506.506,0,0,0,1.013,0c0-.041,0-.084.005-.124a.381.381,0,0,1,.005-.053c.008-.1,0,.033-.005.03a.979.979,0,0,1,.061-.248c.008-.02.023-.106.04-.111s-.046.094-.018.043a.656.656,0,0,0,.028-.061,2.3,2.3,0,0,1,.129-.215c.048-.073-.068.078.013-.015.025-.028.051-.058.078-.086s.056-.056.084-.081l.038-.033c.018-.015.091-.051.025-.023s-.015.013,0,0,.035-.025.056-.038a.947.947,0,0,1,.086-.051c.038-.023.078-.041.119-.061.013-.008.066-.033,0,0s.025-.008.033-.01A1.56,1.56,0,0,1,660.4,738l.068-.013c.056-.013-.048.005-.048.005.046,0,.094-.01.139-.01a2.043,2.043,0,0,1,.248.008c.094.008-.1-.018.02.005.046.008.089.02.134.03s.076.023.114.035a.589.589,0,0,1,.063.023c0,.008-.094-.048-.043-.018.071.043.149.076.22.122.018.013.035.025.056.038s.056.023,0,0-.018-.015,0,0l.051.043a2.274,2.274,0,0,1,.172.177c.076.084-.035-.058.013.015.02.033.043.063.063.1s.041.068.058.1l.023.046c.048.091.01-.008,0-.013.03.01.063.192.073.225l.023.1c.02.1,0-.03,0-.033.013.013.008.071.008.086a1.749,1.749,0,0,1,0,.23.63.63,0,0,0-.005.071c0,.051-.03.043.005-.03a.791.791,0,0,0-.028.134c-.018.071-.046.139-.066.21s.046-.086.013-.028a.245.245,0,0,0-.02.046c-.02.041-.041.078-.063.117s-.041.066-.063.1c-.068.1.048-.051-.01.018a1.932,1.932,0,0,1-.172.18c-.01.01-.071.076-.089.076,0,0,.1-.071.023-.02-.015.01-.028.018-.041.028-.071.046-.144.084-.218.122s.091-.03-.018.008l-.111.038-.116.03c-.018,0-.033.008-.051.01-.111.025.081-.005.015,0a2.045,2.045,0,0,1-.248.01c-.041,0-.081-.005-.124-.008-.015,0-.076-.008,0,0s-.018-.005-.035-.008a1.912,1.912,0,0,1-.261-.076c-.015-.005-.066-.03,0,0s-.015-.008-.03-.015c-.041-.02-.078-.041-.117-.063s-.073-.048-.111-.073c-.061-.038.008.02.023.02-.01,0-.043-.035-.051-.043a1.872,1.872,0,0,1-.187-.187.3.3,0,0,1-.043-.051c0,.01.061.086.02.023-.025-.038-.051-.073-.073-.111s-.048-.089-.071-.132c-.053-.1.025.081-.015-.033a1.836,1.836,0,0,1-.073-.263.163.163,0,0,0-.01-.051c.038.084.008.071,0,.013s-.008-.106-.008-.16a.513.513,0,0,0-1.026,0Z" transform="translate(-609.293 -619.872)" fill="#fff"/>
|
||||
<circle id="Ellipse_554" data-name="Ellipse 554" cx="1.724" cy="1.724" r="1.724" transform="translate(40.884 117.606)" fill="#fff"/>
|
||||
<path id="Path_32662" data-name="Path 32662" d="M270.814,272.355a2.267,2.267,0,0,0,1.489,2.1,2.232,2.232,0,0,0,2.433-.648,2.231,2.231,0,1,0-3.922-1.453.506.506,0,0,0,1.013,0c0-.041,0-.084.005-.124a.377.377,0,0,1,.005-.053c.008-.1,0,.033-.005.03a.981.981,0,0,1,.061-.248c.008-.02.023-.106.04-.111s-.046.094-.018.043a.656.656,0,0,0,.028-.061,2.3,2.3,0,0,1,.129-.215c.048-.073-.068.079.013-.015.025-.028.051-.058.078-.086s.056-.056.084-.081l.038-.033c.018-.015.091-.051.025-.023s-.015.013,0,0,.035-.025.056-.038a.96.96,0,0,1,.086-.051c.038-.023.078-.04.119-.061.013-.008.066-.033,0,0s.025-.008.033-.01a1.564,1.564,0,0,1,.213-.061l.068-.013c.056-.013-.048.005-.048.005.046,0,.094-.01.139-.01a2.031,2.031,0,0,1,.248.008c.094.008-.1-.018.02.005.046.008.089.02.134.03s.076.023.114.035a.583.583,0,0,1,.063.023c0,.008-.094-.048-.043-.018.071.043.149.076.22.122.018.013.035.025.056.038s.056.023,0,0-.018-.015,0,0l.051.043a2.257,2.257,0,0,1,.172.177c.076.084-.035-.058.013.015.02.033.043.063.063.1s.04.068.058.1l.023.046c.048.091.01-.008,0-.013.03.01.063.192.073.225l.023.1c.02.1,0-.03,0-.033.013.013.008.071.008.086a1.749,1.749,0,0,1,0,.23.622.622,0,0,0-.005.071c0,.051-.03.043.005-.03a.788.788,0,0,0-.028.134c-.018.071-.046.139-.066.21s.046-.086.013-.028a.249.249,0,0,0-.02.046c-.02.04-.041.078-.063.116s-.041.066-.063.1c-.068.1.048-.051-.01.018a1.929,1.929,0,0,1-.172.18c-.01.01-.071.076-.089.076,0,0,.1-.071.023-.02-.015.01-.028.018-.041.028-.071.046-.144.084-.218.122s.091-.03-.018.008l-.111.038-.116.03c-.018,0-.033.008-.051.01-.111.025.081-.005.015,0a2.039,2.039,0,0,1-.248.01c-.041,0-.081-.005-.124-.008-.015,0-.076-.008,0,0s-.018-.005-.035-.008a1.919,1.919,0,0,1-.261-.076c-.015-.005-.066-.03,0,0s-.015-.008-.03-.015c-.04-.02-.078-.04-.116-.063s-.073-.048-.111-.073c-.061-.038.008.02.023.02-.01,0-.043-.035-.051-.043a1.873,1.873,0,0,1-.187-.187.3.3,0,0,1-.043-.051c0,.01.061.086.02.023-.025-.038-.051-.073-.073-.111s-.048-.089-.071-.132c-.053-.1.025.081-.015-.033a1.84,1.84,0,0,1-.073-.263.164.164,0,0,0-.01-.051c.038.084.008.071,0,.013s-.008-.106-.008-.16a.513.513,0,0,0-1.026,0ZM287.2,258l-3.074,7.926H272.313L269.7,258Z" transform="translate(-230.437 -153.024)" fill="#fff"/>
|
||||
<path id="Path_32663" data-name="Path 32663" d="M267.044,237.988q-.52,1.341-1.038,2.682-.828,2.138-1.654,4.274l-.38.983.489-.372H254.1c-.476,0-.957-.02-1.436,0h-.02l.489.372q-.444-1.348-.886-2.694-.7-2.131-1.4-4.264c-.109-.327-.215-.653-.324-.983l-.489.641h16.791c.228,0,.456.005.681,0h.03a.506.506,0,0,0,0-1.013H250.744c-.228,0-.456-.005-.681,0h-.03a.511.511,0,0,0-.489.641q.444,1.348.886,2.694.7,2.131,1.4,4.264c.109.327.215.653.324.983a.523.523,0,0,0,.489.372h10.359c.476,0,.957.018,1.436,0h.02a.526.526,0,0,0,.489-.372q.52-1.341,1.038-2.682.828-2.138,1.654-4.274l.38-.983a.508.508,0,0,0-.355-.623A.52.52,0,0,0,267.044,237.988Z" transform="translate(-210.769 -133.152)" fill="#fff"/>
|
||||
</g>
|
||||
</svg>
|
||||
</span>
|
||||
<span class="d-none d-xl-block ml-2 fs-14 fw-700 text-white">{{ single_price($total) }}</span>
|
||||
<span class="nav-box-text d-none d-xl-block ml-2 text-white fs-12">
|
||||
(<span class="cart-count">{{(isset($cart) && count($cart) > 0) ? count($cart) : 0 }}</span> {{translate('Items')}})
|
||||
</span>
|
||||
</a>
|
||||
|
||||
<!-- Cart Items -->
|
||||
<div class="dropdown-menu dropdown-menu-right dropdown-menu-lg p-0 stop-propagation rounded-0">
|
||||
@if (isset($cart) && count($cart) > 0)
|
||||
<div class="fs-16 fw-700 text-soft-dark pt-4 pb-2 mx-4 border-bottom" style="border-color: #e5e5e5 !important;">
|
||||
{{ translate('Cart Items') }}
|
||||
</div>
|
||||
<!-- Cart Products -->
|
||||
<ul class="h-360px overflow-auto c-scrollbar-light list-group list-group-flush mx-1">
|
||||
@foreach ($cart as $key => $cartItem)
|
||||
@php
|
||||
$product = \App\Models\Product::find($cartItem['product_id']);
|
||||
@endphp
|
||||
@if ($product != null)
|
||||
<li class="list-group-item border-0 hov-scale-img">
|
||||
<span class="d-flex align-items-center">
|
||||
<a href="{{ route('product', $product->slug) }}"
|
||||
class="text-reset d-flex align-items-center flex-grow-1">
|
||||
<img src="{{ static_asset('assets/img/placeholder.jpg') }}"
|
||||
data-src="{{ uploaded_asset($product->thumbnail_img) }}"
|
||||
class="img-fit lazyload size-60px has-transition"
|
||||
alt="{{ $product->getTranslation('name') }}"
|
||||
onerror="this.onerror=null;this.src='{{ static_asset('assets/img/placeholder.jpg') }}';">
|
||||
<span class="minw-0 pl-2 flex-grow-1">
|
||||
<span class="fw-700 fs-13 text-dark mb-2 text-truncate-2" title="{{ $product->getTranslation('name') }}">
|
||||
{{ $product->getTranslation('name') }}
|
||||
</span>
|
||||
<span class="fs-14 fw-400 text-secondary">{{ $cartItem['quantity'] }}x</span>
|
||||
<span class="fs-14 fw-400 text-secondary">{{ cart_product_price($cartItem, $product) }}</span>
|
||||
</span>
|
||||
</a>
|
||||
<span class="">
|
||||
<button onclick="removeFromCart({{ $cartItem['id'] }})"
|
||||
class="btn btn-sm btn-icon stop-propagation">
|
||||
<i class="la la-close fs-18 fw-600 text-secondary"></i>
|
||||
</button>
|
||||
</span>
|
||||
</span>
|
||||
</li>
|
||||
@endif
|
||||
@endforeach
|
||||
</ul>
|
||||
<!-- Subtotal -->
|
||||
<div class="px-3 py-2 fs-15 border-top d-flex justify-content-between mx-4" style="border-color: #e5e5e5 !important;">
|
||||
<span class="fs-14 fw-400 text-secondary">{{ translate('Subtotal') }}</span>
|
||||
<span class="fs-16 fw-700 text-dark">{{ single_price($total) }}</span>
|
||||
</div>
|
||||
<!-- View cart & Checkout Buttons -->
|
||||
<div class="py-3 text-center border-top mx-4" style="border-color: #e5e5e5 !important;">
|
||||
<div class="row gutters-10 justify-content-center">
|
||||
<div class="col-sm-6 mb-2">
|
||||
<a href="{{ route('cart') }}" class="btn btn-warning btn-sm btn-block rounded-4 text-white">
|
||||
{{ translate('View cart') }}
|
||||
</a>
|
||||
</div>
|
||||
@if (Auth::check())
|
||||
<div class="col-sm-6">
|
||||
<a href="{{ route('checkout.shipping_info') }}" class="btn btn-primary btn-sm btn-block rounded-4">
|
||||
{{ translate('Checkout') }}
|
||||
</a>
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
@else
|
||||
<div class="text-center p-3">
|
||||
<i class="las la-frown la-3x opacity-60 mb-3"></i>
|
||||
<h3 class="h6 fw-700">{{ translate('Your Cart is empty') }}</h3>
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
142
resources/views/frontend/partials/cart_details.blade.php
Normal file
142
resources/views/frontend/partials/cart_details.blade.php
Normal file
@@ -0,0 +1,142 @@
|
||||
<div class="container">
|
||||
@if( $carts && count($carts) > 0 )
|
||||
<div class="row">
|
||||
<div class="col-xxl-8 col-xl-10 mx-auto">
|
||||
<div class="border bg-white p-3 p-lg-4 text-left">
|
||||
<div class="mb-4">
|
||||
<!-- Headers -->
|
||||
<div class="row gutters-5 d-none d-lg-flex border-bottom mb-3 pb-3 text-secondary fs-12">
|
||||
<div class="col col-md-1 fw-600">{{ translate('Qty')}}</div>
|
||||
<div class="col-md-5 fw-600">{{ translate('Product')}}</div>
|
||||
<div class="col fw-600">{{ translate('Price')}}</div>
|
||||
<div class="col fw-600">{{ translate('Tax')}}</div>
|
||||
<div class="col fw-600">{{ translate('Total')}}</div>
|
||||
<div class="col-auto fw-600">{{ translate('Remove')}}</div>
|
||||
</div>
|
||||
<!-- Cart Items -->
|
||||
<ul class="list-group list-group-flush">
|
||||
@php
|
||||
$total = 0;
|
||||
@endphp
|
||||
@foreach ($carts as $key => $cartItem)
|
||||
@php
|
||||
$product = \App\Models\Product::find($cartItem['product_id']);
|
||||
$product_stock = $product->stocks->where('variant', $cartItem['variation'])->first();
|
||||
// $total = $total + ($cartItem['price'] + $cartItem['tax']) * $cartItem['quantity'];
|
||||
$total = $total + cart_product_price($cartItem, $product, false) * $cartItem['quantity'];
|
||||
$product_name_with_choice = $product->getTranslation('name');
|
||||
if ($cartItem['variation'] != null) {
|
||||
$product_name_with_choice = $product->getTranslation('name').' - '.$cartItem['variation'];
|
||||
}
|
||||
@endphp
|
||||
<li class="list-group-item px-0">
|
||||
<div class="row gutters-5 align-items-center">
|
||||
<!-- Quantity -->
|
||||
<div class="col-md-1 col order-1 order-md-0">
|
||||
@if ($cartItem['digital'] != 1 && $product->auction_product == 0)
|
||||
<div class="d-flex flex-column align-items-start aiz-plus-minus mr-2 ml-0">
|
||||
<button
|
||||
class="btn col-auto btn-icon btn-sm btn-circle btn-light"
|
||||
type="button" data-type="plus"
|
||||
data-field="quantity[{{ $cartItem['id'] }}]">
|
||||
<i class="las la-plus"></i>
|
||||
</button>
|
||||
<input type="number" name="quantity[{{ $cartItem['id'] }}]"
|
||||
class="col border-0 text-left px-0 flex-grow-1 fs-14 input-number"
|
||||
placeholder="1" value="{{ $cartItem['quantity'] }}"
|
||||
min="{{ $product->min_qty }}"
|
||||
max="{{ $product_stock->qty }}"
|
||||
onchange="updateQuantity({{ $cartItem['id'] }}, this)" style="padding-left:0.75rem !important;">
|
||||
<button
|
||||
class="btn col-auto btn-icon btn-sm btn-circle btn-light"
|
||||
type="button" data-type="minus"
|
||||
data-field="quantity[{{ $cartItem['id'] }}]">
|
||||
<i class="las la-minus"></i>
|
||||
</button>
|
||||
</div>
|
||||
@elseif($product->auction_product == 1)
|
||||
<span class="fw-700 fs-14">1</span>
|
||||
@endif
|
||||
</div>
|
||||
<!-- Product Image & name -->
|
||||
<div class="col-md-5 d-flex align-items-center mb-2 mb-md-0">
|
||||
<span class="mr-2 ml-0">
|
||||
<img src="{{ uploaded_asset($product->thumbnail_img) }}"
|
||||
class="img-fit size-70px"
|
||||
alt="{{ $product->getTranslation('name') }}"
|
||||
onerror="this.onerror=null;this.src='{{ static_asset('assets/img/placeholder.jpg') }}';">
|
||||
</span>
|
||||
<span class="fs-14">{{ $product_name_with_choice }}</span>
|
||||
</div>
|
||||
<!-- Price -->
|
||||
<div class="col-md col-4 order-2 order-md-0 my-3 my-md-0">
|
||||
<span class="opacity-60 fs-12 d-block d-md-none">{{ translate('Price')}}</span>
|
||||
<span class="fw-700 fs-14">{{ cart_product_price($cartItem, $product, true, false) }}</span>
|
||||
</div>
|
||||
<!-- Tax -->
|
||||
<div class="col-md col-4 order-3 order-md-0 my-3 my-md-0">
|
||||
<span class="opacity-60 fs-12 d-block d-md-none">{{ translate('Tax')}}</span>
|
||||
<span class="fw-700 fs-14">{{ cart_product_tax($cartItem, $product) }}</span>
|
||||
</div>
|
||||
<!-- Total -->
|
||||
<div class="col-md col-5 order-4 order-md-0 my-3 my-md-0">
|
||||
<span class="opacity-60 fs-12 d-block d-md-none">{{ translate('Total')}}</span>
|
||||
<span class="fw-700 fs-16 text-primary">{{ single_price(cart_product_price($cartItem, $product, false) * $cartItem['quantity']) }}</span>
|
||||
</div>
|
||||
<!-- Remove From Cart -->
|
||||
<div class="col-md-auto col-6 order-5 order-md-0 text-right">
|
||||
<a href="javascript:void(0)" onclick="removeFromCartView(event, {{ $cartItem['id'] }})" class="btn btn-icon btn-sm btn-soft-primary bg-soft-warning hov-bg-primary btn-circle">
|
||||
<i class="las la-trash fs-16"></i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<!-- Subtotal -->
|
||||
<div class="px-0 py-2 mb-4 border-top d-flex justify-content-between">
|
||||
<span class="opacity-60 fs-14">{{translate('Subtotal')}}</span>
|
||||
<span class="fw-700 fs-16">{{ single_price($total) }}</span>
|
||||
</div>
|
||||
<div class="row align-items-center">
|
||||
<!-- Return to shop -->
|
||||
<div class="col-md-6 text-center text-md-left order-1 order-md-0">
|
||||
<a href="{{ route('home') }}" class="btn btn-link fs-14 fw-700 px-0">
|
||||
<i class="las la-arrow-left fs-16"></i>
|
||||
{{ translate('Return to shop')}}
|
||||
</a>
|
||||
</div>
|
||||
<!-- Continue to Shipping -->
|
||||
<div class="col-md-6 text-center text-md-right">
|
||||
@if(Auth::check())
|
||||
<a href="{{ route('checkout.shipping_info') }}" class="btn btn-primary fs-14 fw-700 rounded-0 px-4">
|
||||
{{ translate('Continue to Shipping')}}
|
||||
</a>
|
||||
@else
|
||||
<button class="btn btn-primary fs-14 fw-700 rounded-0 px-4" onclick="showLoginModal()">{{ translate('Continue to Shipping')}}</button>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@else
|
||||
<div class="row">
|
||||
<div class="col-xl-8 mx-auto">
|
||||
<div class="border bg-white p-4">
|
||||
<!-- Empty cart -->
|
||||
<div class="text-center p-3">
|
||||
<i class="las la-frown la-3x opacity-60 mb-3"></i>
|
||||
<h3 class="h4 fw-700">{{translate('Your Cart is empty')}}</h3>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
AIZ.extra.plusMinus();
|
||||
</script>
|
||||
247
resources/views/frontend/partials/cart_summary.blade.php
Normal file
247
resources/views/frontend/partials/cart_summary.blade.php
Normal file
@@ -0,0 +1,247 @@
|
||||
<div class="card rounded-0 border shadow-none">
|
||||
|
||||
<div class="card-header pt-4 pb-1 border-bottom-0">
|
||||
<h3 class="fs-16 fw-700 mb-0">{{ translate('Summary') }}</h3>
|
||||
<div class="text-right">
|
||||
<!-- Items Count -->
|
||||
<span class="badge badge-inline badge-primary fs-12 rounded-0 px-2">
|
||||
{{ count($carts) }}
|
||||
{{ translate('Items') }}
|
||||
</span>
|
||||
|
||||
<!-- Minimum Order Amount -->
|
||||
@php
|
||||
$coupon_discount = 0;
|
||||
@endphp
|
||||
@if (Auth::check() && get_setting('coupon_system') == 1)
|
||||
@php
|
||||
$coupon_code = null;
|
||||
@endphp
|
||||
|
||||
@foreach ($carts as $key => $cartItem)
|
||||
@php
|
||||
$product = \App\Models\Product::find($cartItem['product_id']);
|
||||
@endphp
|
||||
@if ($cartItem->coupon_applied == 1)
|
||||
@php
|
||||
$coupon_code = $cartItem->coupon_code;
|
||||
break;
|
||||
@endphp
|
||||
@endif
|
||||
@endforeach
|
||||
|
||||
@php
|
||||
$coupon_discount = carts_coupon_discount($coupon_code);
|
||||
@endphp
|
||||
@endif
|
||||
|
||||
@php $subtotal_for_min_order_amount = 0; @endphp
|
||||
@foreach ($carts as $key => $cartItem)
|
||||
@php $subtotal_for_min_order_amount += cart_product_price($cartItem, $cartItem->product, false, false) * $cartItem['quantity']; @endphp
|
||||
@endforeach
|
||||
@if (get_setting('minimum_order_amount_check') == 1 && $subtotal_for_min_order_amount < get_setting('minimum_order_amount'))
|
||||
<span class="badge badge-inline badge-primary fs-12 rounded-0 px-2">
|
||||
{{ translate('Minimum Order Amount') . ' ' . single_price(get_setting('minimum_order_amount')) }}
|
||||
</span>
|
||||
@endif
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Club point -->
|
||||
@if (addon_is_activated('club_point'))
|
||||
<div class="px-4 pt-1 w-100 d-flex align-items-center justify-content-between">
|
||||
<h3 class="fs-14 fw-700 mb-0">{{ translate('Total Clubpoint') }}</h3>
|
||||
<div class="text-right">
|
||||
<span class="badge badge-inline badge-warning fs-12 rounded-0 px-2 text-white">
|
||||
@php
|
||||
$total_point = 0;
|
||||
@endphp
|
||||
@foreach ($carts as $key => $cartItem)
|
||||
@php
|
||||
$product = \App\Models\Product::find($cartItem['product_id']);
|
||||
$total_point += $product->earn_point * $cartItem['quantity'];
|
||||
@endphp
|
||||
@endforeach
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12" class="mr-2">
|
||||
<g id="Group_23922" data-name="Group 23922" transform="translate(-973 -633)">
|
||||
<circle id="Ellipse_39" data-name="Ellipse 39" cx="6" cy="6" r="6" transform="translate(973 633)" fill="#fff"/>
|
||||
<g id="Group_23920" data-name="Group 23920" transform="translate(973 633)">
|
||||
<path id="Path_28698" data-name="Path 28698" d="M7.667,3H4.333L3,5,6,9,9,5Z" transform="translate(0 0)" fill="#f3af3d"/>
|
||||
<path id="Path_28699" data-name="Path 28699" d="M5.33,3h-1L3,5,6,9,4.331,5Z" transform="translate(0 0)" fill="#f3af3d" opacity="0.5"/>
|
||||
<path id="Path_28700" data-name="Path 28700" d="M12.666,3h1L15,5,12,9l1.664-4Z" transform="translate(-5.995 0)" fill="#f3af3d"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
{{ $total_point }}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<div class="card-body">
|
||||
<!-- Products Info -->
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="product-name border-top-0 border-bottom-1 pl-0 fs-12 fw-400 opacity-60">{{ translate('Product') }}</th>
|
||||
<th class="product-total text-right border-top-0 border-bottom-1 pr-0 fs-12 fw-400 opacity-60">{{ translate('Total') }}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@php
|
||||
$subtotal = 0;
|
||||
$tax = 0;
|
||||
$shipping = 0;
|
||||
$product_shipping_cost = 0;
|
||||
$shipping_region = $shipping_info['city'];
|
||||
@endphp
|
||||
@foreach ($carts as $key => $cartItem)
|
||||
@php
|
||||
$product = \App\Models\Product::find($cartItem['product_id']);
|
||||
$subtotal += cart_product_price($cartItem, $product, false, false) * $cartItem['quantity'];
|
||||
$tax += cart_product_tax($cartItem, $product, false) * $cartItem['quantity'];
|
||||
$product_shipping_cost = $cartItem['shipping_cost'];
|
||||
|
||||
$shipping += $product_shipping_cost;
|
||||
|
||||
$product_name_with_choice = $product->getTranslation('name');
|
||||
if ($cartItem['variant'] != null) {
|
||||
$product_name_with_choice = $product->getTranslation('name') . ' - ' . $cartItem['variant'];
|
||||
}
|
||||
@endphp
|
||||
<tr class="cart_item">
|
||||
<td class="product-name pl-0 fs-14 text-dark fw-400 border-top-0 border-bottom">
|
||||
{{ $product_name_with_choice }}
|
||||
<strong class="product-quantity">
|
||||
× {{ $cartItem['quantity'] }}
|
||||
</strong>
|
||||
</td>
|
||||
<td class="product-total text-right pr-0 fs-14 text-primary fw-600 border-top-0 border-bottom">
|
||||
<span
|
||||
class="pl-4 pr-0">{{ single_price(cart_product_price($cartItem, $cartItem->product, false, false) * $cartItem['quantity']) }}</span>
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<input type="hidden" id="sub_total" value="{{ $subtotal }}">
|
||||
|
||||
<table class="table" style="margin-top: 2rem!important;">
|
||||
<tfoot>
|
||||
<!-- Subtotal -->
|
||||
<tr class="cart-subtotal">
|
||||
<th class="pl-0 fs-14 pt-0 pb-2 text-dark fw-600 border-top-0">{{ translate('Subtotal') }}</th>
|
||||
<td class="text-right pr-0 fs-14 pt-0 pb-2 fw-600 text-primary border-top-0">
|
||||
<span class="fw-600">{{ single_price($subtotal) }}</span>
|
||||
</td>
|
||||
</tr>
|
||||
<!-- Tax -->
|
||||
<tr class="cart-shipping">
|
||||
<th class="pl-0 fs-14 pt-0 pb-2 text-dark fw-600 border-top-0">{{ translate('Tax') }}</th>
|
||||
<td class="text-right pr-0 fs-14 pt-0 pb-2 fw-600 text-primary border-top-0">
|
||||
<span class="fw-600">{{ single_price($tax) }}</span>
|
||||
</td>
|
||||
</tr>
|
||||
<!-- Total Shipping -->
|
||||
<tr class="cart-shipping">
|
||||
<th class="pl-0 fs-14 pt-0 pb-2 text-dark fw-600 border-top-0">{{ translate('Total Shipping') }}</th>
|
||||
<td class="text-right pr-0 fs-14 pt-0 pb-2 fw-600 text-primary border-top-0">
|
||||
<span class="fw-600">{{ single_price($shipping) }}</span>
|
||||
</td>
|
||||
</tr>
|
||||
<!-- Redeem point -->
|
||||
@if (Session::has('club_point'))
|
||||
<tr class="cart-shipping">
|
||||
<th class="pl-0 fs-14 pt-0 pb-2 text-dark fw-600 border-top-0">{{ translate('Redeem point') }}</th>
|
||||
<td class="text-right pr-0 fs-14 pt-0 pb-2 fw-600 text-primary border-top-0">
|
||||
<span class="fw-600">{{ single_price(Session::get('club_point')) }}</span>
|
||||
</td>
|
||||
</tr>
|
||||
@endif
|
||||
<!-- Coupon Discount -->
|
||||
@if ($coupon_discount > 0)
|
||||
<tr class="cart-shipping">
|
||||
<th class="pl-0 fs-14 pt-0 pb-2 text-dark fw-600 border-top-0">{{ translate('Coupon Discount') }}</th>
|
||||
<td class="text-right pr-0 fs-14 pt-0 pb-2 fw-600 text-primary border-top-0">
|
||||
<span class="fw-600">{{ single_price($coupon_discount) }}</span>
|
||||
</td>
|
||||
</tr>
|
||||
@endif
|
||||
|
||||
@php
|
||||
$total = $subtotal + $tax + $shipping;
|
||||
if (Session::has('club_point')) {
|
||||
$total -= Session::get('club_point');
|
||||
}
|
||||
if ($coupon_discount > 0) {
|
||||
$total -= $coupon_discount;
|
||||
}
|
||||
@endphp
|
||||
<!-- Total -->
|
||||
<tr class="cart-total">
|
||||
<th class="pl-0 fs-14 text-dark fw-600"><span class="strong-600">{{ translate('Total') }}</span></th>
|
||||
<td class="text-right pr-0 fs-14 fw-600 text-primary">
|
||||
<strong><span>{{ single_price($total) }}</span></strong>
|
||||
</td>
|
||||
</tr>
|
||||
</tfoot>
|
||||
</table>
|
||||
|
||||
<!-- Remove Redeem Point -->
|
||||
@if (addon_is_activated('club_point'))
|
||||
@if (Session::has('club_point'))
|
||||
<div class="mt-3">
|
||||
<form class="" action="{{ route('checkout.remove_club_point') }}" method="POST"
|
||||
enctype="multipart/form-data">
|
||||
@csrf
|
||||
<div class="input-group">
|
||||
<div class="form-control">{{ Session::get('club_point') }}</div>
|
||||
<div class="input-group-append">
|
||||
<button type="submit"
|
||||
class="btn btn-primary">{{ translate('Remove Redeem Point') }}</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
@endif
|
||||
@endif
|
||||
|
||||
<!-- Coupon System -->
|
||||
@if (Auth::check() && get_setting('coupon_system') == 1)
|
||||
@if ($coupon_discount > 0 && $coupon_code)
|
||||
<div class="mt-3">
|
||||
<form class="" id="remove-coupon-form" enctype="multipart/form-data">
|
||||
@csrf
|
||||
<div class="input-group">
|
||||
<div class="form-control">{{ $coupon_code }}</div>
|
||||
<div class="input-group-append">
|
||||
<button type="button" id="coupon-remove"
|
||||
class="btn btn-primary">{{ translate('Change Coupon') }}</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
@else
|
||||
<div class="mt-3">
|
||||
<form class="" id="apply-coupon-form" enctype="multipart/form-data">
|
||||
@csrf
|
||||
<input type="hidden" name="owner_id" value="{{ $carts[0]['owner_id'] }}">
|
||||
<div class="input-group">
|
||||
<input type="text" class="form-control rounded-0" name="code"
|
||||
onkeydown="return event.key != 'Enter';"
|
||||
placeholder="{{ translate('Have coupon code? Apply here') }}" required>
|
||||
<div class="input-group-append">
|
||||
<button type="button" id="coupon-apply"
|
||||
class="btn btn-primary rounded-0">{{ translate('Apply') }}</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
@endif
|
||||
@endif
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,16 @@
|
||||
<div class="card-columns">
|
||||
@foreach (\App\Utility\CategoryUtility::get_immediate_children_ids($category->id) as $key => $first_level_id)
|
||||
<div class="card shadow-none border-0">
|
||||
<ul class="list-unstyled mb-3">
|
||||
<li class="fs-14 fw-700 mb-3">
|
||||
<a class="text-reset hov-text-primary" href="{{ route('products.category', \App\Models\Category::find($first_level_id)->slug) }}">{{ \App\Models\Category::find($first_level_id)->getTranslation('name') }}</a>
|
||||
</li>
|
||||
@foreach (\App\Utility\CategoryUtility::get_immediate_children_ids($first_level_id) as $key => $second_level_id)
|
||||
<li class="mb-2 fs-14 pl-2">
|
||||
<a class="text-reset hov-text-primary animate-underline-primary" href="{{ route('products.category', \App\Models\Category::find($second_level_id)->slug) }}">{{ \App\Models\Category::find($second_level_id)->getTranslation('name') }}</a>
|
||||
</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
24
resources/views/frontend/partials/category_menu.blade.php
Normal file
24
resources/views/frontend/partials/category_menu.blade.php
Normal file
@@ -0,0 +1,24 @@
|
||||
<div class="aiz-category-menu bg-white rounded-0 border-top" id="category-sidebar" style="width:270px;">
|
||||
<ul class="list-unstyled categories no-scrollbar mb-0 text-left ">
|
||||
@foreach (\App\Models\Category::where('level', 0)->orderBy('order_level', 'desc')->get()->take(10) as $key => $category)
|
||||
<li class="category-nav-element border border-top-0" data-id="{{ $category->id }}">
|
||||
<a href="{{ route('products.category', $category->slug) }}" class="text-truncate text-dark px-4 fs-14 d-block hov-column-gap-1">
|
||||
<img class="cat-image lazyload mr-2 opacity-60"
|
||||
src="{{ static_asset('assets/img/placeholder.jpg') }}"
|
||||
data-src="{{ uploaded_asset($category->icon) }}"
|
||||
width="16"
|
||||
alt="{{ $category->getTranslation('name') }}"
|
||||
onerror="this.onerror=null;this.src='{{ static_asset('assets/img/placeholder.jpg') }}';">
|
||||
<span class="cat-name has-transition">{{ $category->getTranslation('name') }}</span>
|
||||
</a>
|
||||
@if(count(\App\Utility\CategoryUtility::get_immediate_children_ids($category->id))>0)
|
||||
<div class="sub-cat-menu c-scrollbar-light border p-4 shadow-none">
|
||||
<div class="c-preloader text-center absolute-center">
|
||||
<i class="las la-spinner la-spin la-3x opacity-70"></i>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
</div>
|
||||
10
resources/views/frontend/partials/compare.blade.php
Normal file
10
resources/views/frontend/partials/compare.blade.php
Normal file
@@ -0,0 +1,10 @@
|
||||
<a href="{{ route('compare') }}" class="d-flex align-items-center text-dark" data-toggle="tooltip" data-title="{{ translate('Compare') }}" data-placement="top">
|
||||
<span class="position-relative d-inline-block">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
|
||||
<path id="_9f8e765afedd47ec9e49cea83c37dfea" data-name="9f8e765afedd47ec9e49cea83c37dfea" d="M18.037,5.547v.8a.8.8,0,0,1-.8.8H7.221a.4.4,0,0,0-.4.4V9.216a.642.642,0,0,1-1.1.454L2.456,6.4a.643.643,0,0,1,0-.909L5.723,2.227a.642.642,0,0,1,1.1.454V4.342a.4.4,0,0,0,.4.4H17.234a.8.8,0,0,1,.8.8Zm-3.685,4.86a.642.642,0,0,0-1.1.454v1.661a.4.4,0,0,1-.4.4H2.84a.8.8,0,0,0-.8.8v.8a.8.8,0,0,0,.8.8H12.854a.4.4,0,0,1,.4.4V17.4a.642.642,0,0,0,1.1.454l3.267-3.268a.643.643,0,0,0,0-.909Z" transform="translate(-2.037 -2.038)" fill="#fff"/>
|
||||
</svg>
|
||||
@if(Session::has('compare'))
|
||||
<span class="badge badge-primary badge-inline badge-pill absolute-top-right--10px">{{ count(Session::get('compare'))}}</span>
|
||||
@endif
|
||||
</span>
|
||||
</a>
|
||||
104
resources/views/frontend/partials/coupon_box.blade.php
Normal file
104
resources/views/frontend/partials/coupon_box.blade.php
Normal file
@@ -0,0 +1,104 @@
|
||||
@if ($key == 0 || ($key+1 > 3 && ($key+1 -(floor(($key+1)%3)*3)) == 1))
|
||||
@php $bg = "linear-gradient(to right, #e2583e 0%, #bf1931 100%);"; @endphp
|
||||
@elseif ($key == 1 || ($key+1 > 3 && ($key+1 -(floor(($key+1)%3)*3)) == 2))
|
||||
@php $bg = "linear-gradient(to right, #7cc4c3 0%, #479493 100%);"; @endphp
|
||||
@elseif ($key == 2 || ($key+1 > 3 && ($key+1 -(floor(($key+1)%3)*3)) == 3))
|
||||
@php $bg = "linear-gradient(to right, #98b3d1 0%, #5f4a8b 100%);"; @endphp
|
||||
@endif
|
||||
|
||||
@if($coupon->type == 'product_base')
|
||||
@php
|
||||
$products = json_decode($coupon->details);
|
||||
$coupon_products = [];
|
||||
foreach($products as $product) {
|
||||
array_push($coupon_products, $product->product_id);
|
||||
}
|
||||
@endphp
|
||||
@else
|
||||
@php
|
||||
$order_discount = json_decode($coupon->details);
|
||||
@endphp
|
||||
@endif
|
||||
@php
|
||||
if($coupon->user->user_type != 'admin') {
|
||||
$shop = $coupon->user->shop;
|
||||
$name = $shop->name;
|
||||
}
|
||||
else {
|
||||
$name = get_setting('website_name');
|
||||
}
|
||||
@endphp
|
||||
|
||||
<div style="min-height: 232px; border-radius: 24px; background: {{ $bg }};" class="d-flex align-items-center position-relative">
|
||||
|
||||
<!-- Shop Name & discount -->
|
||||
<div class="position-absolute" style="top:2rem; left:2rem;">
|
||||
<h3 class="fs-13 text-white fw-500 px-3">{{ $name }}
|
||||
@if (\Request::route()->getName() == 'coupons.all')
|
||||
<a
|
||||
@if($coupon->user->user_type != 'admin')
|
||||
href="{{ route('shop.visit', $shop->slug) }}"
|
||||
@else
|
||||
href="{{ route('inhouse.all') }}"
|
||||
@endif
|
||||
class="ml-3 text-white hov-text-warning fs-13" style="text-decoration: underline;"
|
||||
>
|
||||
{{ translate('Visit Store') }}
|
||||
</a>
|
||||
@endif
|
||||
</h3>
|
||||
<div class="align-self-center px-3 flex-grow-1 text-white">
|
||||
@if($coupon->discount_type == 'amount')
|
||||
<p class="fs-16 fw-500 mb-1">{{ single_price($coupon->discount) }} {{ translate('OFF') }}</p>
|
||||
@else
|
||||
<p class="fs-16 fw-500 mb-1">{{ $coupon->discount }}% {{ translate('OFF') }}</p>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Middle design -->
|
||||
<div class="d-flex jystify-content-between align-items-center w-100 position-absolute">
|
||||
<span class="bg-white rounded-content" style="min-height: 48px; min-width: 48px; margin-left: -24px;"></span>
|
||||
<hr class="border border-dashed border-white opacity-40 w-100 mx-2">
|
||||
<span class="bg-white rounded-content" style="min-height: 48px; min-width: 48px; margin-right: -24px;"></span>
|
||||
</div>
|
||||
|
||||
<!-- Coupon Details -->
|
||||
<div class="position-absolute" style="bottom:1rem; left:2rem; right:2rem">
|
||||
<div class="px-4 mt-2">
|
||||
@if($coupon->type == 'product_base')
|
||||
<!-- Coupon Products -->
|
||||
@php $products = App\Models\Product::whereIn('id', $coupon_products)->get(); @endphp
|
||||
<div class="aiz-carousel coupon-slider gutters-16 arrow-none" data-items="6" data-lg-items="6" data-md-items="4" data-sm-items="4" data-xs-items="4" data-arrows='true' data-infinite='true' data-autoplay="true">
|
||||
@foreach($products as $key => $product)
|
||||
<a href="{{ route('product', $product->slug) }}" title="{{ $product->name }}" class='p-1 border border-transparent hov-border' target="_blank">
|
||||
<img class="img-fit mx-auto h-48px w-48px"
|
||||
src="{{ uploaded_asset($product->thumbnail_img) }}"
|
||||
data-src="{{ uploaded_asset($product->thumbnail_img) }}"
|
||||
onerror="this.onerror=null;this.src='{{ static_asset('assets/img/placeholder.jpg') }}';"
|
||||
alt="">
|
||||
</a>
|
||||
@endforeach
|
||||
</div>
|
||||
@else
|
||||
<!-- Coupon Discount range -->
|
||||
<span class="fs-12 text-white pb-lg-3 d-block m-auto ">
|
||||
@if($coupon->discount_type == 'amount')
|
||||
{{ translate('Min Spend ') }} <strong>{{ single_price($order_discount->min_buy) }}</strong> {{ translate('from') }} <strong>{{ $name }}</strong> {{ translate('to get') }} <strong>{{ single_price($coupon->discount) }}</strong> {{ translate('OFF on total orders') }}
|
||||
@else
|
||||
{{ translate('Min Spend ') }} <strong>{{ single_price($order_discount->min_buy) }}</strong> {{ translate('from') }} <strong>{{ $name }}</strong> {{ translate('to get') }} <strong>{{ $coupon->discount }}%</strong> {{ translate('OFF on total orders') }}
|
||||
@endif
|
||||
</span>
|
||||
@endif
|
||||
</div>
|
||||
|
||||
<!-- Coupon Code -->
|
||||
<div class="text-right">
|
||||
<span class="fs-13 d-block mb-0 text-white">
|
||||
{{ translate('Code') }}:
|
||||
<span class="fw-600">{{ $coupon->code }}</span>
|
||||
<span class="ml-2 text-white fs-16" style="cursor:pointer;" onclick="copyCouponCode('{{ $coupon->code }}')" data-toggle="tooltip" data-title="{{ translate('Copy the Code') }}" data-placement="top"><i class="las la-copy"></i></span>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
BIN
resources/views/frontend/partials/desktop.ini
Normal file
BIN
resources/views/frontend/partials/desktop.ini
Normal file
Binary file not shown.
@@ -0,0 +1,34 @@
|
||||
@php
|
||||
$featured_products = Cache::remember('featured_products', 3600, function () {
|
||||
return filter_products(\App\Models\Product::where('published', 1)->where('featured', '1'))->latest()->limit(12)->get();
|
||||
});
|
||||
@endphp
|
||||
|
||||
@if (count($featured_products) > 0)
|
||||
<section class="mb-2 mb-md-3 mt-2 mt-md-3">
|
||||
<div class="container">
|
||||
<!-- Top Section -->
|
||||
<div class="d-flex mb-2 mb-md-3 align-items-baseline justify-content-between">
|
||||
<!-- Title -->
|
||||
<h3 class="fs-16 fs-md-20 fw-700 mb-2 mb-sm-0">
|
||||
<span class="">{{ translate('Featured Products') }}</span>
|
||||
</h3>
|
||||
<!-- Links -->
|
||||
<div class="d-flex">
|
||||
<a type="button" class="arrow-prev slide-arrow link-disable text-secondary mr-2" onclick="clickToSlide('slick-prev','section_featured')"><i class="las la-angle-left fs-20 fw-600"></i></a>
|
||||
<a type="button" class="arrow-next slide-arrow text-secondary ml-2" onclick="clickToSlide('slick-next','section_featured')"><i class="las la-angle-right fs-20 fw-600"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Products Section -->
|
||||
<div class="px-sm-3">
|
||||
<div class="aiz-carousel sm-gutters-16 arrow-none" data-items="6" data-xl-items="5" data-lg-items="4" data-md-items="3" data-sm-items="2" data-xs-items="2" data-arrows='true' data-infinite='false'>
|
||||
@foreach ($featured_products as $key => $product)
|
||||
<div class="carousel-box px-3 position-relative has-transition hov-animate-outline border-right border-top border-bottom @if($key == 0) border-left @endif">
|
||||
@include('frontend.partials.product_box_1',['product' => $product])
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
@endif
|
||||
118
resources/views/frontend/partials/google_map.blade.php
Normal file
118
resources/views/frontend/partials/google_map.blade.php
Normal file
@@ -0,0 +1,118 @@
|
||||
<script>
|
||||
let default_longtitude = '';
|
||||
let default_latitude = '';
|
||||
@if (get_setting('google_map_longtitude') != '' && get_setting('google_map_longtitude') != '')
|
||||
default_longtitude = {{ get_setting('google_map_longtitude') }};
|
||||
default_latitude = {{ get_setting('google_map_latitude') }};
|
||||
@endif
|
||||
|
||||
function initialize(lat = -33.8688, lang = 151.2195, id_format = '') {
|
||||
var long = lang;
|
||||
var lat = lat;
|
||||
if (default_longtitude != '' && default_latitude != '') {
|
||||
long = default_longtitude;
|
||||
lat = default_latitude;
|
||||
}
|
||||
|
||||
var map = new google.maps.Map(document.getElementById(id_format + 'map'), {
|
||||
center: {
|
||||
lat: lat,
|
||||
lng: long
|
||||
},
|
||||
zoom: 13
|
||||
});
|
||||
|
||||
var myLatlng = new google.maps.LatLng(lat, long);
|
||||
|
||||
var input = document.getElementById(id_format + 'searchInput');
|
||||
// console.log(input);
|
||||
map.controls[google.maps.ControlPosition.TOP_LEFT].push(input);
|
||||
|
||||
var autocomplete = new google.maps.places.Autocomplete(input);
|
||||
|
||||
autocomplete.bindTo('bounds', map);
|
||||
|
||||
var infowindow = new google.maps.InfoWindow();
|
||||
var marker = new google.maps.Marker({
|
||||
map: map,
|
||||
position: myLatlng,
|
||||
anchorPoint: new google.maps.Point(0, -29),
|
||||
draggable: true,
|
||||
});
|
||||
|
||||
map.addListener('click', function(event) {
|
||||
marker.setPosition(event.latLng);
|
||||
document.getElementById(id_format + 'latitude').value = event.latLng.lat();
|
||||
document.getElementById(id_format + 'longitude').value = event.latLng.lng();
|
||||
infowindow.setContent('Latitude: ' + event.latLng.lat() + '<br>Longitude: ' + event.latLng.lng());
|
||||
infowindow.open(map, marker);
|
||||
});
|
||||
|
||||
google.maps.event.addListener(marker, 'dragend', function(event) {
|
||||
document.getElementById(id_format + 'latitude').value = event.latLng.lat();
|
||||
document.getElementById(id_format + 'longitude').value = event.latLng.lng();
|
||||
infowindow.setContent('Latitude: ' + event.latLng.lat() + '<br>Longitude: ' + event.latLng.lng());
|
||||
infowindow.open(map, marker);
|
||||
});
|
||||
|
||||
autocomplete.addListener('place_changed', function() {
|
||||
infowindow.close();
|
||||
marker.setVisible(false);
|
||||
var place = autocomplete.getPlace();
|
||||
|
||||
if (!place.geometry) {
|
||||
window.alert("Autocomplete's returned place contains no geometry");
|
||||
return;
|
||||
}
|
||||
|
||||
// If the place has a geometry, then present it on a map.
|
||||
if (place.geometry.viewport) {
|
||||
map.fitBounds(place.geometry.viewport);
|
||||
} else {
|
||||
map.setCenter(place.geometry.location);
|
||||
map.setZoom(17);
|
||||
}
|
||||
/*
|
||||
marker.setIcon(({
|
||||
url: place.icon,
|
||||
size: new google.maps.Size(71, 71),
|
||||
origin: new google.maps.Point(0, 0),
|
||||
anchor: new google.maps.Point(17, 34),
|
||||
scaledSize: new google.maps.Size(35, 35)
|
||||
}));
|
||||
*/
|
||||
marker.setPosition(place.geometry.location);
|
||||
marker.setVisible(true);
|
||||
|
||||
var address = '';
|
||||
if (place.address_components) {
|
||||
address = [
|
||||
(place.address_components[0] && place.address_components[0].short_name || ''),
|
||||
(place.address_components[1] && place.address_components[1].short_name || ''),
|
||||
(place.address_components[2] && place.address_components[2].short_name || '')
|
||||
].join(' ');
|
||||
}
|
||||
|
||||
infowindow.setContent('<div><strong>' + place.name + '</strong><br>' + address);
|
||||
infowindow.open(map, marker);
|
||||
|
||||
//Location details
|
||||
for (var i = 0; i < place.address_components.length; i++) {
|
||||
if (place.address_components[i].types[0] == 'postal_code') {
|
||||
document.getElementById('postal_code').innerHTML = place.address_components[i].long_name;
|
||||
}
|
||||
if (place.address_components[i].types[0] == 'country') {
|
||||
document.getElementById('country').innerHTML = place.address_components[i].long_name;
|
||||
}
|
||||
}
|
||||
document.getElementById('location').innerHTML = place.formatted_address;
|
||||
document.getElementById(id_format + 'latitude').value = place.geometry.location.lat();
|
||||
document.getElementById(id_format + 'longitude').value = place.geometry.location.lng();
|
||||
});
|
||||
|
||||
}
|
||||
</script>
|
||||
|
||||
<script
|
||||
src="https://maps.googleapis.com/maps/api/js?key={{ env('MAP_API_KEY') }}&libraries=places&language=en&callback=initialize"
|
||||
async defer></script>
|
||||
@@ -0,0 +1,37 @@
|
||||
@if(get_setting('home_categories') != null)
|
||||
@php $home_categories = json_decode(get_setting('home_categories')); @endphp
|
||||
@foreach ($home_categories as $key1 => $value)
|
||||
@php $category = \App\Models\Category::find($value); @endphp
|
||||
<section class="@if($key1 != 0) mt-4 @endif" style="">
|
||||
<div class="container">
|
||||
<div class="row gutters-16">
|
||||
<!-- Home category Baner & name -->
|
||||
<div class="col-xl-3 col-lg-4 col-md-5">
|
||||
<div class="h-200px h-sm-250px h-md-340px">
|
||||
<div class="h-100 w-100 w-xl-auto position-relative hov-scale-img overflow-hidden">
|
||||
<div class="position-absolute h-100 w-100 overflow-hidden">
|
||||
<img src="{{ uploaded_asset($category->cover_image) }}" alt="{{ $category->getTranslation('name') }}" class="img-fit h-100 has-transition"
|
||||
onerror="this.onerror=null;this.src='{{ static_asset('assets/img/placeholder.jpg') }}';">
|
||||
</div>
|
||||
<div class="pb-4 px-3 absolute-bottom-left w-100 has-transition h-100 d-flex flex-column align-items-center justify-content-end" style="background: linear-gradient(to top, rgba(0,0,0,0.7) 0%,rgba(0,0,0,0) 100%) !important;">
|
||||
<a class="fs-16 fw-700 text-white text-center animate-underline-white home-category-name d-flex align-items-center hov-column-gap-1" href="{{ route('products.category', $category->slug) }}" style="width: max-content;">{{ $category->getTranslation('name') }} <i class="las la-angle-right"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Category Products -->
|
||||
<div class="col-xl-9 col-lg-8 col-md-7">
|
||||
<div class="aiz-carousel arrow-x-0 border-right arrow-inactive-none" data-items="5" data-xxl-items="5" data-xl-items="4.5" data-lg-items="3" data-md-items="2" data-sm-items="2" data-xs-items="2" data-arrows='true' data-infinite='false'>
|
||||
@foreach (get_cached_products($category->id)->take(5) as $key => $product)
|
||||
<div class="carousel-box px-3 position-relative has-transition border-right border-top border-bottom @if($key == 0) border-left @endif hov-animate-outline">
|
||||
@include('frontend.partials.product_box_1',['product' => $product])
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
@endforeach
|
||||
@endif
|
||||
|
||||
139
resources/views/frontend/partials/login_modal.blade.php
Normal file
139
resources/views/frontend/partials/login_modal.blade.php
Normal file
@@ -0,0 +1,139 @@
|
||||
<div class="modal fade" id="login_modal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel"
|
||||
aria-hidden="true">
|
||||
<div class="modal-dialog modal-dialog-zoom" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h6 class="modal-title fw-600">{{ translate('Login') }}</h6>
|
||||
<button type="button" class="close" data-dismiss="modal">
|
||||
<span aria-hidden="true"></span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="p-3">
|
||||
<form class="form-default" role="form" action="{{ route('cart.login.submit') }}" method="POST">
|
||||
@csrf
|
||||
|
||||
@if (addon_is_activated('otp_system') && env('DEMO_MODE') != 'On')
|
||||
<!-- Phone -->
|
||||
<div class="form-group phone-form-group mb-1">
|
||||
<input type="tel" id="phone-code"
|
||||
class="form-control{{ $errors->has('phone') ? ' is-invalid' : '' }}"
|
||||
value="{{ old('phone') }}" placeholder="" name="phone" autocomplete="off">
|
||||
</div>
|
||||
<!-- Country Code -->
|
||||
<input type="hidden" name="country_code" value="">
|
||||
<!-- Email -->
|
||||
<div class="form-group email-form-group mb-1 d-none">
|
||||
<input type="email"
|
||||
class="form-control {{ $errors->has('email') ? ' is-invalid' : '' }}"
|
||||
value="{{ old('email') }}" placeholder="{{ translate('Email') }}" name="email"
|
||||
id="email" autocomplete="off">
|
||||
@if ($errors->has('email'))
|
||||
<span class="invalid-feedback" role="alert">
|
||||
<strong>{{ $errors->first('email') }}</strong>
|
||||
</span>
|
||||
@endif
|
||||
</div>
|
||||
<!-- Use Email Instead -->
|
||||
<div class="form-group text-right">
|
||||
<button class="btn btn-link p-0 text-primary" type="button"
|
||||
onclick="toggleEmailPhone(this)"><i>*{{ translate('Use Email Instead') }}</i></button>
|
||||
</div>
|
||||
@else
|
||||
<!-- Use Email Instead -->
|
||||
<div class="form-group">
|
||||
<input type="email"
|
||||
class="form-control{{ $errors->has('email') ? ' is-invalid' : '' }}"
|
||||
value="{{ old('email') }}" placeholder="{{ translate('Email') }}" name="email"
|
||||
id="email" autocomplete="off">
|
||||
@if ($errors->has('email'))
|
||||
<span class="invalid-feedback" role="alert">
|
||||
<strong>{{ $errors->first('email') }}</strong>
|
||||
</span>
|
||||
@endif
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<!-- Password -->
|
||||
<div class="form-group">
|
||||
<input type="password" name="password" class="form-control h-auto rounded-0 form-control-lg"
|
||||
placeholder="{{ translate('Password') }}">
|
||||
</div>
|
||||
|
||||
<!-- Remember Me & Forgot password -->
|
||||
<div class="row mb-2">
|
||||
<div class="col-6">
|
||||
<label class="aiz-checkbox">
|
||||
<input type="checkbox" name="remember" {{ old('remember') ? 'checked' : '' }}>
|
||||
<span class=opacity-60>{{ translate('Remember Me') }}</span>
|
||||
<span class="aiz-square-check"></span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="col-6 text-right">
|
||||
<a href="{{ route('password.request') }}"
|
||||
class="text-reset opacity-60 hov-opacity-100 fs-14">{{ translate('Forgot password?') }}</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Login Button -->
|
||||
<div class="mb-5">
|
||||
<button type="submit"
|
||||
class="btn btn-primary btn-block fw-600 rounded-0">{{ translate('Login') }}</button>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<!-- Register Now -->
|
||||
<div class="text-center mb-3">
|
||||
<p class="text-muted mb-0">{{ translate('Dont have an account?') }}</p>
|
||||
<a href="{{ route('user.registration') }}">{{ translate('Register Now') }}</a>
|
||||
</div>
|
||||
|
||||
<!-- Social Login -->
|
||||
@if (get_setting('google_login') == 1 || get_setting('facebook_login') == 1 || get_setting('twitter_login') == 1 || get_setting('apple_login') == 1)
|
||||
<div class="separator mb-3">
|
||||
<span class="bg-white px-3 opacity-60">{{ translate('Or Login With') }}</span>
|
||||
</div>
|
||||
<ul class="list-inline social colored text-center mb-5">
|
||||
<!-- Facebook -->
|
||||
@if (get_setting('facebook_login') == 1)
|
||||
<li class="list-inline-item">
|
||||
<a href="{{ route('social.login', ['provider' => 'facebook']) }}"
|
||||
class="facebook">
|
||||
<i class="lab la-facebook-f"></i>
|
||||
</a>
|
||||
</li>
|
||||
@endif
|
||||
<!-- Google -->
|
||||
@if (get_setting('google_login') == 1)
|
||||
<li class="list-inline-item">
|
||||
<a href="{{ route('social.login', ['provider' => 'google']) }}"
|
||||
class="google">
|
||||
<i class="lab la-google"></i>
|
||||
</a>
|
||||
</li>
|
||||
@endif
|
||||
<!-- Twitter -->
|
||||
@if (get_setting('twitter_login') == 1)
|
||||
<li class="list-inline-item">
|
||||
<a href="{{ route('social.login', ['provider' => 'twitter']) }}"
|
||||
class="twitter">
|
||||
<i class="lab la-twitter"></i>
|
||||
</a>
|
||||
</li>
|
||||
@endif
|
||||
<!-- Apple -->
|
||||
@if (get_setting('apple_login') == 1)
|
||||
<li class="list-inline-item">
|
||||
<a href="{{ route('social.login', ['provider' => 'apple']) }}"
|
||||
class="apple">
|
||||
<i class="lab la-apple"></i>
|
||||
</a>
|
||||
</li>
|
||||
@endif
|
||||
</ul>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
47
resources/views/frontend/partials/messages.blade.php
Normal file
47
resources/views/frontend/partials/messages.blade.php
Normal file
@@ -0,0 +1,47 @@
|
||||
@foreach ($conversation->messages as $key => $message)
|
||||
@if ($message->user_id == Auth::user()->id)
|
||||
<div class="block block-comment mb-3">
|
||||
<div class="d-flex flex-row-reverse">
|
||||
<div class="pl-3">
|
||||
<div class="block-image">
|
||||
@if ($message->user->avatar_original != null)
|
||||
<img src="{{ uploaded_asset($message->user->avatar_original) }}" class="rounded-circle">
|
||||
@else
|
||||
<img src="{{ static_asset('assets/img/avatar-place.png') }}" class="rounded-circle">
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex-grow-1 ml-5 pl-5">
|
||||
<div class="p-3 bg-gray rounded">
|
||||
{{ $message->message }}
|
||||
</div>
|
||||
<span class="comment-date alpha-7 small mt-1 d-block text-right">
|
||||
{{ date('h:i:m d-m-Y', strtotime($message->created_at)) }}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@else
|
||||
<div class="block block-comment mb-3">
|
||||
<div class="d-flex">
|
||||
<div class="pr-3">
|
||||
<div class="block-image">
|
||||
@if ($message->user->avatar_original != null)
|
||||
<img src="{{ uploaded_asset($message->user->avatar_original) }}" class="rounded-circle">
|
||||
@else
|
||||
<img src="{{ static_asset('assets/img/avatar-place.png') }}" class="rounded-circle">
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex-grow-1 mr-5 pr-5">
|
||||
<div class="p-3 bg-gray rounded">
|
||||
{{ $message->message }}
|
||||
</div>
|
||||
<span class="comment-date alpha-7 small mt-1 d-block">
|
||||
{{ date('h:i:m d-m-Y', strtotime($message->created_at)) }}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
@endforeach
|
||||
@@ -0,0 +1,9 @@
|
||||
<div class="modal-body p-4 added-to-cart">
|
||||
<div class="text-center text-danger">
|
||||
<h2>{{translate('oops..')}}</h2>
|
||||
<h3>{{translate('You have to add minimum '.$min_qty.' products!')}}</h3>
|
||||
</div>
|
||||
<div class="text-center mt-5">
|
||||
<button class="btn btn-outline-primary" data-dismiss="modal">{{translate('Back to shopping')}}</button>
|
||||
</div>
|
||||
</div>
|
||||
62
resources/views/frontend/partials/modal.blade.php
Normal file
62
resources/views/frontend/partials/modal.blade.php
Normal file
@@ -0,0 +1,62 @@
|
||||
<script>
|
||||
function confirm_modal(delete_url)
|
||||
{
|
||||
jQuery('#confirm-delete').modal('show', {backdrop: 'static'});
|
||||
document.getElementById('delete_link').setAttribute('href' , delete_url);
|
||||
}
|
||||
</script>
|
||||
|
||||
<div class="modal fade" id="confirm-delete" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
|
||||
<div class="modal-header">
|
||||
{{-- <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> --}}
|
||||
<h4 class="modal-title" id="myModalLabel">{{ translate('Confirmation')}}</h4>
|
||||
</div>
|
||||
|
||||
<div class="modal-body">
|
||||
<p>{{ translate('Delete confirmation message')}}</p>
|
||||
</div>
|
||||
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-secondary rounded-0" data-dismiss="modal">{{ translate('Cancel')}}</button>
|
||||
<a id="delete_link" class="btn btn-danger btn-ok rounded-0">{{ translate('Delete')}}</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Login Modal -->
|
||||
@include('frontend.partials.login_modal')
|
||||
|
||||
<!-- Bid Modal -->
|
||||
<div class="modal fade" id="bid_for_product" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
|
||||
<div class="modal-dialog modal-dialog-centered" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title" id="exampleModalLabel">{{ translate('Bid For Product') }} <small id="min_bid_amount"></small> </h5>
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||||
</button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<form class="form-horizontal" action="{{ route('auction_product_bids.store') }}" method="POST" enctype="multipart/form-data">
|
||||
@csrf
|
||||
<input type="hidden" name="product_id" id="bid_product_id" value="">
|
||||
<div class="form-group">
|
||||
<label class="form-label">
|
||||
{{translate('Place Bid Price')}}
|
||||
<span class="text-danger">*</span>
|
||||
</label>
|
||||
<div class="form-group">
|
||||
<input type="number" step="0.01" class="form-control form-control-sm" name="amount" id="bid_amount" min="" placeholder="{{ translate('Enter Amount') }}" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group text-right">
|
||||
<button type="submit" class="btn btn-sm btn-primary transition-3d-hover mr-1">{{ translate('Submit') }}</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,9 @@
|
||||
<div class="modal-body p-4 added-to-cart">
|
||||
<div class="text-center text-danger">
|
||||
<h2>{{translate('oops..')}}</h2>
|
||||
<h3>{{translate('This item is out of stock!')}}</h3>
|
||||
</div>
|
||||
<div class="text-center mt-5">
|
||||
<button class="btn btn-outline-primary" data-dismiss="modal">{{translate('Back to shopping')}}</button>
|
||||
</div>
|
||||
</div>
|
||||
40
resources/views/frontend/partials/pick_up_points.blade.php
Normal file
40
resources/views/frontend/partials/pick_up_points.blade.php
Normal file
@@ -0,0 +1,40 @@
|
||||
<div class="card-header bg-white py-3">
|
||||
<h5 class="heading-6 mb-0">{{translate('Select Nearest Pick-up Point')}}</h5>
|
||||
</div>
|
||||
@php
|
||||
$admin_products = array();
|
||||
$seller_products = array();
|
||||
foreach (Session::get('cart') as $key => $cartItem){
|
||||
if(\App\Models\Product::find($cartItem['id'])->added_by == 'admin'){
|
||||
array_push($admin_products, $cartItem['id']);
|
||||
}
|
||||
else{
|
||||
$product_ids = array();
|
||||
if(isset($seller_products[\App\Models\Product::find($cartItem['id'])->user_id])){
|
||||
$product_ids = $seller_products[\App\Models\Product::find($cartItem['id'])->user_id];
|
||||
}
|
||||
array_push($product_ids, $cartItem['id']);
|
||||
$seller_products[\App\Models\Product::find($cartItem['id'])->user_id] = $product_ids;
|
||||
}
|
||||
}
|
||||
// dd($seller_products);
|
||||
@endphp
|
||||
@if (!empty($admin_products))
|
||||
@foreach ($pick_up_points as $key => $pick_up_point)
|
||||
<label class="mega-radio w-100">
|
||||
<input type="radio" name="pickup_point_id" value="{{ $pick_up_point->id }}" checked required>
|
||||
<span class="d-block">
|
||||
<br><strong>{{ translate('Address') }}: {{ $pick_up_point->getTranslation('name') }}</strong>
|
||||
<br><strong>{{ translate('Address') }}: {{ $pick_up_point->getTranslation('address') }}</strong>
|
||||
<br><strong>{{ translate('Phone') }}: {{ $pick_up_point->phone }}</strong>
|
||||
</span>
|
||||
</label>
|
||||
@endforeach
|
||||
@endif
|
||||
@if (!empty($seller_products))
|
||||
@foreach ($seller_products as $key => $seller_product)
|
||||
@foreach ($seller_product as $key => $value)
|
||||
{{ $value }}<br>
|
||||
@endforeach
|
||||
@endforeach
|
||||
@endif
|
||||
33
resources/views/frontend/partials/price_variations.blade.php
Normal file
33
resources/views/frontend/partials/price_variations.blade.php
Normal file
@@ -0,0 +1,33 @@
|
||||
|
||||
@foreach(json_decode($subsubcategory->options) as $key=> $option)
|
||||
<div class="form-group clearfix row">
|
||||
<div class="col-sm-2">
|
||||
<label class="control-label">{{$option->title}}</label>
|
||||
</div>
|
||||
<div class="col-sm-10">
|
||||
<div class="customer_choice_options_types_wrap">
|
||||
<div class="customer_choice_options_types_wrap_child">
|
||||
@if($option->type == 'radio' || $option->type == 'select')
|
||||
@foreach($option->options as $options)
|
||||
<div class="form-group clearfix row">
|
||||
<div class="col-sm-4">
|
||||
<input class="form-control" type="text" value="{{$options}}" disabled>
|
||||
</div>
|
||||
<div class="col-sm-4">
|
||||
<input class="form-control" type="number" lang="en" min="0" step="0.01" name="{{$option->name}}_{{$options}}_price" required>
|
||||
</div>
|
||||
<div class="col-sm-4">
|
||||
<select class="form-control selectpicker" name="{{$option->name}}_{{$options}}_variation">
|
||||
<option value="increase">{{translate('Increase')}}</option>
|
||||
<option value="decrease">{{translate('Decrease')}}</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
@endforeach
|
||||
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endforeach
|
||||
109
resources/views/frontend/partials/product_box_1.blade.php
Normal file
109
resources/views/frontend/partials/product_box_1.blade.php
Normal file
@@ -0,0 +1,109 @@
|
||||
@php
|
||||
if (auth()->user() != null) {
|
||||
$user_id = Auth::user()->id;
|
||||
$cart = \App\Models\Cart::where('user_id', $user_id)->get();
|
||||
} else {
|
||||
$temp_user_id = Session()->get('temp_user_id');
|
||||
if ($temp_user_id) {
|
||||
$cart = \App\Models\Cart::where('temp_user_id', $temp_user_id)->get();
|
||||
}
|
||||
}
|
||||
|
||||
$cart_added = array();
|
||||
if(isset($cart) && count($cart) > 0){
|
||||
$cart_added = $cart->pluck('product_id')->toArray();
|
||||
}
|
||||
@endphp
|
||||
<div class="aiz-card-box h-auto bg-white py-3 hov-scale-img">
|
||||
<div class="position-relative h-140px h-md-200px img-fit overflow-hidden">
|
||||
@php
|
||||
$product_url = route('product', $product->slug);
|
||||
if($product->auction_product == 1) {
|
||||
$product_url = route('auction-product', $product->slug);
|
||||
}
|
||||
@endphp
|
||||
<!-- Image -->
|
||||
<a href="{{ $product_url }}" class="d-block h-100">
|
||||
<img class="lazyload mx-auto img-fit has-transition"
|
||||
src="{{ static_asset('assets/img/placeholder.jpg') }}"
|
||||
data-src="{{ uploaded_asset($product->thumbnail_img) }}"
|
||||
alt="{{ $product->getTranslation('name') }}" title="{{ $product->getTranslation('name') }}"
|
||||
onerror="this.onerror=null;this.src='{{ static_asset('assets/img/placeholder.jpg') }}';">
|
||||
</a>
|
||||
<!-- Discount percentage tag -->
|
||||
@if(discount_in_percentage($product) > 0)
|
||||
<span class="absolute-top-left bg-primary ml-1 mt-1 fs-11 fw-700 text-white w-35px text-center" style="padding-top:2px;padding-bottom:2px;">-{{discount_in_percentage($product)}}%</span>
|
||||
@endif
|
||||
<!-- Wholesale tag -->
|
||||
@if ($product->wholesale_product)
|
||||
<span class="absolute-top-left fs-11 text-white fw-700 px-2 lh-1-8 ml-1 mt-1" style="background-color: #455a64; @if(discount_in_percentage($product) > 0) top:25px; @endif">
|
||||
{{ translate('Wholesale') }}
|
||||
</span>
|
||||
@endif
|
||||
@if($product->auction_product == 0)
|
||||
<!-- wishlisht & compare icons -->
|
||||
<div class="absolute-top-right aiz-p-hov-icon">
|
||||
<a href="javascript:void(0)" class="hov-svg-white" onclick="addToWishList({{ $product->id }})" data-toggle="tooltip" data-title="{{ translate('Add to wishlist') }}" data-placement="left">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="14.4" viewBox="0 0 16 14.4">
|
||||
<g id="_51a3dbe0e593ba390ac13cba118295e4" data-name="51a3dbe0e593ba390ac13cba118295e4" transform="translate(-3.05 -4.178)">
|
||||
<path id="Path_32649" data-name="Path 32649" d="M11.3,5.507l-.247.246L10.8,5.506A4.538,4.538,0,1,0,4.38,11.919l.247.247,6.422,6.412,6.422-6.412.247-.247A4.538,4.538,0,1,0,11.3,5.507Z" transform="translate(0 0)" fill="#919199"/>
|
||||
<path id="Path_32650" data-name="Path 32650" d="M11.3,5.507l-.247.246L10.8,5.506A4.538,4.538,0,1,0,4.38,11.919l.247.247,6.422,6.412,6.422-6.412.247-.247A4.538,4.538,0,1,0,11.3,5.507Z" transform="translate(0 0)" fill="#919199"/>
|
||||
</g>
|
||||
</svg>
|
||||
</a>
|
||||
<a href="javascript:void(0)" class="hov-svg-white" onclick="addToCompare({{ $product->id }})" data-toggle="tooltip" data-title="{{ translate('Add to compare') }}" data-placement="left">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
|
||||
<path id="_9f8e765afedd47ec9e49cea83c37dfea" data-name="9f8e765afedd47ec9e49cea83c37dfea" d="M18.037,5.547v.8a.8.8,0,0,1-.8.8H7.221a.4.4,0,0,0-.4.4V9.216a.642.642,0,0,1-1.1.454L2.456,6.4a.643.643,0,0,1,0-.909L5.723,2.227a.642.642,0,0,1,1.1.454V4.342a.4.4,0,0,0,.4.4H17.234a.8.8,0,0,1,.8.8Zm-3.685,4.86a.642.642,0,0,0-1.1.454v1.661a.4.4,0,0,1-.4.4H2.84a.8.8,0,0,0-.8.8v.8a.8.8,0,0,0,.8.8H12.854a.4.4,0,0,1,.4.4V17.4a.642.642,0,0,0,1.1.454l3.267-3.268a.643.643,0,0,0,0-.909Z" transform="translate(-2.037 -2.038)" fill="#919199"/>
|
||||
</svg>
|
||||
</a>
|
||||
</div>
|
||||
<!-- add to cart -->
|
||||
<a class="cart-btn absolute-bottom-left w-100 h-35px aiz-p-hov-icon text-white fs-13 fw-700 d-flex flex-column justify-content-center align-items-center @if(in_array($product->id, $cart_added)) active @endif"
|
||||
href="javascript:void(0)" onclick="showAddToCartModal({{ $product->id }})">
|
||||
<span class="cart-btn-text">{{ translate('Add to Cart') }}</span>
|
||||
<br>
|
||||
<span><i class="las la-2x la-shopping-cart"></i></span>
|
||||
</a>
|
||||
@endif
|
||||
@if($product->auction_product == 1 && $product->auction_start_date <= strtotime("now") && $product->auction_end_date >= strtotime("now"))
|
||||
<!-- Place Bid -->
|
||||
@php
|
||||
$highest_bid = $product->bids->max('amount');
|
||||
$min_bid_amount = $highest_bid != null ? $highest_bid+1 : $product->starting_bid;
|
||||
@endphp
|
||||
<a class="cart-btn absolute-bottom-left w-100 h-35px aiz-p-hov-icon text-white fs-13 fw-700 d-flex flex-column justify-content-center align-items-center @if(in_array($product->id, $cart_added)) active @endif"
|
||||
href="javascript:void(0)" onclick="bid_single_modal({{ $product->id }}, {{ $min_bid_amount }})">
|
||||
<span class="cart-btn-text">{{ translate('Place Bid') }}</span>
|
||||
<br>
|
||||
<span><i class="las la-2x la-gavel"></i></span>
|
||||
</a>
|
||||
@endif
|
||||
</div>
|
||||
|
||||
<div class="p-2 p-md-3 text-left">
|
||||
<!-- Product name -->
|
||||
<h3 class="fw-400 fs-13 text-truncate-2 lh-1-4 mb-0 h-35px text-center">
|
||||
<a href="{{ $product_url }}" class="d-block text-reset hov-text-primary" title="{{ $product->getTranslation('name') }}">{{ $product->getTranslation('name') }}</a>
|
||||
</h3>
|
||||
<div class="fs-14 d-flex justify-content-center mt-3">
|
||||
@if($product->auction_product == 0)
|
||||
<!-- Previous price -->
|
||||
@if(home_base_price($product) != home_discounted_base_price($product))
|
||||
<div class="disc-amount has-transition">
|
||||
<del class="fw-400 text-secondary mr-1">{{ home_base_price($product) }}</del>
|
||||
</div>
|
||||
@endif
|
||||
<!-- price -->
|
||||
<div class="">
|
||||
<span class="fw-700 text-primary">{{ home_discounted_base_price($product) }}</span>
|
||||
</div>
|
||||
@endif
|
||||
@if($product->auction_product == 1)
|
||||
<!-- Bid Amount -->
|
||||
<div class="">
|
||||
<span class="fw-700 text-primary">{{ single_price($product->starting_bid) }}</span>
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,53 @@
|
||||
<div class="py-3">
|
||||
<h3 class="fs-16 fw-700 mb-0">
|
||||
<span>{{ translate('Other Questions') }}</span>
|
||||
</h3>
|
||||
</div>
|
||||
|
||||
<!-- Product queries -->
|
||||
@forelse ($product_queries as $product_query)
|
||||
<div class="produc-queries mb-4">
|
||||
<div class="query d-flex my-2">
|
||||
<span class="mt-1">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="36" viewBox="0 0 24 36">
|
||||
<g id="Group_23928" data-name="Group 23928" transform="translate(-654 -2397)">
|
||||
<path id="Path_28707" data-name="Path 28707" d="M0,0H24V24H0Z" transform="translate(654 2397)" fill="#d43533"/>
|
||||
<text id="Q" transform="translate(666 2414)" fill="#fff" font-size="14" font-family="Roboto-Bold, Roboto" font-weight="700"><tspan x="-4.833" y="0">Q</tspan></text>
|
||||
<path id="Path_28708" data-name="Path 28708" d="M0,0H12L0,12Z" transform="translate(666 2421)" fill="#d43533"/>
|
||||
<path id="Path_28711" data-name="Path 28711" d="M0,0H12L0,12Z" transform="translate(666 2421)" fill="#1b1b28" opacity="0.2"/>
|
||||
</g>
|
||||
</svg>
|
||||
</span>
|
||||
<div class="ml-3 mt-0 p-0">
|
||||
<div class="fs-14">{{ strip_tags($product_query->question) }}</div>
|
||||
<span class="text-secondary">{{ $product_query->user->name }} </span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="answer d-flex my-2">
|
||||
<span class="mt-1">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="36" viewBox="0 0 24 36">
|
||||
<g id="Group_23929" data-name="Group 23929" transform="translate(-654 -2453)">
|
||||
<path id="Path_28709" data-name="Path 28709" d="M0,0H24V24H0Z" transform="translate(654 2453)" fill="#f3af3d"/>
|
||||
<text id="A" transform="translate(666 2470)" fill="#fff" font-size="14" font-family="Roboto-Bold, Roboto" font-weight="700"><tspan x="-4.71" y="0">A</tspan></text>
|
||||
<path id="Path_28710" data-name="Path 28710" d="M0,0H12L0,12Z" transform="translate(666 2477)" fill="#f3af3d"/>
|
||||
<path id="Path_28712" data-name="Path 28712" d="M0,0H12L0,12Z" transform="translate(666 2477)" fill="#1b1b28" opacity="0.1"/>
|
||||
</g>
|
||||
</svg>
|
||||
</span>
|
||||
<div class="ml-3 mt-0 p-0">
|
||||
<div class="fs-14">
|
||||
{{ strip_tags($product_query->reply ? $product_query->reply : translate('Seller did not respond yet')) }}
|
||||
</div>
|
||||
<span class=" text-secondary"> {{ $product_query->product->user->name }}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@empty
|
||||
<p>{{ translate('No none asked to seller yet') }}</p>
|
||||
@endforelse
|
||||
|
||||
<!-- Pagination -->
|
||||
<div class="aiz-pagination product-queries-pagination py-2 d-flex justify-content-end">
|
||||
{{ $product_queries->links() }}
|
||||
</div>
|
||||
81
resources/views/frontend/partials/search_content.blade.php
Normal file
81
resources/views/frontend/partials/search_content.blade.php
Normal file
@@ -0,0 +1,81 @@
|
||||
<div class="">
|
||||
@if (sizeof($keywords) > 0)
|
||||
<div class="px-2 py-1 text-uppercase fs-10 text-right text-muted bg-soft-secondary">{{translate('Popular Suggestions')}}</div>
|
||||
<ul class="list-group list-group-raw">
|
||||
@foreach ($keywords as $key => $keyword)
|
||||
<li class="list-group-item py-1">
|
||||
<a class="text-reset hov-text-primary" href="{{ route('suggestion.search', $keyword) }}">{{ $keyword }}</a>
|
||||
</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
@endif
|
||||
</div>
|
||||
<div class="">
|
||||
@if (count($categories) > 0)
|
||||
<div class="px-2 py-1 text-uppercase fs-10 text-right text-muted bg-soft-secondary">{{translate('Category Suggestions')}}</div>
|
||||
<ul class="list-group list-group-raw">
|
||||
@foreach ($categories as $key => $category)
|
||||
<li class="list-group-item py-1">
|
||||
<a class="text-reset hov-text-primary" href="{{ route('products.category', $category->slug) }}">{{ $category->getTranslation('name') }}</a>
|
||||
</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
@endif
|
||||
</div>
|
||||
<div class="">
|
||||
@if (count($products) > 0)
|
||||
<div class="px-2 py-1 text-uppercase fs-10 text-right text-muted bg-soft-secondary">{{translate('Products')}}</div>
|
||||
<ul class="list-group list-group-raw">
|
||||
@foreach ($products as $key => $product)
|
||||
<li class="list-group-item">
|
||||
<a class="text-reset" href="{{ route('product', $product->slug) }}">
|
||||
<div class="d-flex search-product align-items-center">
|
||||
<div class="mr-3">
|
||||
<img class="size-40px img-fit rounded" src="{{ uploaded_asset($product->thumbnail_img) }}">
|
||||
</div>
|
||||
<div class="flex-grow-1 overflow--hidden minw-0">
|
||||
<div class="product-name text-truncate fs-14 mb-5px">
|
||||
{{ $product->getTranslation('name') }}
|
||||
</div>
|
||||
<div class="">
|
||||
@if(home_base_price($product) != home_discounted_base_price($product))
|
||||
<del class="opacity-60 fs-15">{{ home_base_price($product) }}</del>
|
||||
@endif
|
||||
<span class="fw-600 fs-16 text-primary">{{ home_discounted_base_price($product) }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
@endif
|
||||
</div>
|
||||
@if(get_setting('vendor_system_activation') == 1)
|
||||
<div class="">
|
||||
@if (count($shops) > 0)
|
||||
<div class="px-2 py-1 text-uppercase fs-10 text-right text-muted bg-soft-secondary">{{translate('Shops')}}</div>
|
||||
<ul class="list-group list-group-raw">
|
||||
@foreach ($shops as $key => $shop)
|
||||
<li class="list-group-item">
|
||||
<a class="text-reset" href="{{ route('shop.visit', $shop->slug) }}">
|
||||
<div class="d-flex search-product align-items-center">
|
||||
<div class="mr-3">
|
||||
<img class="size-40px img-fit rounded" src="{{ uploaded_asset($shop->logo) }}">
|
||||
</div>
|
||||
<div class="flex-grow-1 overflow--hidden">
|
||||
<div class="product-name text-truncate fs-14 mb-5px">
|
||||
{{ $shop->name }}
|
||||
</div>
|
||||
<div class="opacity-60">
|
||||
{{ $shop->address }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
@endif
|
||||
</div>
|
||||
@endif
|
||||
108
resources/views/frontend/partials/wallet_modal.blade.php
Normal file
108
resources/views/frontend/partials/wallet_modal.blade.php
Normal file
@@ -0,0 +1,108 @@
|
||||
<div class="modal fade" id="wallet_modal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
|
||||
<div class="modal-dialog modal-dialog-centered modal-md" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title" id="exampleModalLabel">{{ translate('Recharge Wallet') }}</h5>
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close"></button>
|
||||
</div>
|
||||
<div class="modal-body gry-bg px-3 pt-3" style="overflow-y: inherit;">
|
||||
<form class="" action="{{ route('wallet.recharge') }}" method="post">
|
||||
@csrf
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
<label>{{ translate('Payment Method') }} <span class="text-danger">*</span></label>
|
||||
</div>
|
||||
<div class="col-md-8">
|
||||
<div class="mb-3">
|
||||
<select class="form-control selectpicker rounded-0" data-minimum-results-for-search="Infinity"
|
||||
name="payment_option" data-live-search="true">
|
||||
@if (get_setting('paypal_payment') == 1)
|
||||
<option value="paypal">{{ translate('Paypal') }}</option>
|
||||
@endif
|
||||
@if (get_setting('stripe_payment') == 1)
|
||||
<option value="stripe">{{ translate('Stripe') }}</option>
|
||||
@endif
|
||||
@if (get_setting('mercadopago_payment') == 1)
|
||||
<option value="mercadopago">{{ translate('Mercadopago') }}</option>
|
||||
@endif
|
||||
@if (get_setting('toyyibpay_payment') == 1)
|
||||
<option value="toyyibpay">{{ translate('ToyyibPay') }}</option>
|
||||
@endif
|
||||
@if (get_setting('sslcommerz_payment') == 1)
|
||||
<option value="sslcommerz">{{ translate('SSLCommerz') }}</option>
|
||||
@endif
|
||||
@if (get_setting('instamojo_payment') == 1)
|
||||
<option value="instamojo">{{ translate('Instamojo') }}</option>
|
||||
@endif
|
||||
@if (get_setting('paystack') == 1)
|
||||
<option value="paystack">{{ translate('Paystack') }}</option>
|
||||
@endif
|
||||
@if (get_setting('voguepay') == 1)
|
||||
<option value="voguepay">{{ translate('VoguePay') }}</option>
|
||||
@endif
|
||||
@if (get_setting('payhere') == 1)
|
||||
<option value="payhere">{{ translate('Payhere') }}</option>
|
||||
@endif
|
||||
@if (get_setting('ngenius') == 1)
|
||||
<option value="ngenius">{{ translate('Ngenius') }}</option>
|
||||
@endif
|
||||
@if (get_setting('razorpay') == 1)
|
||||
<option value="razorpay">{{ translate('Razorpay') }}</option>
|
||||
@endif
|
||||
@if (get_setting('iyzico') == 1)
|
||||
<option value="iyzico">{{ translate('Iyzico') }}</option>
|
||||
@endif
|
||||
@if (get_setting('bkash') == 1)
|
||||
<option value="bkash">{{ translate('Bkash') }}</option>
|
||||
@endif
|
||||
@if (get_setting('nagad') == 1)
|
||||
<option value="nagad">{{ translate('Nagad') }}</option>
|
||||
@endif
|
||||
@if (get_setting('payku') == 1)
|
||||
<option value="payku">{{ translate('Payku') }}</option>
|
||||
@endif
|
||||
@if (addon_is_activated('african_pg'))
|
||||
@if (get_setting('mpesa') == 1)
|
||||
<option value="mpesa">{{ translate('Mpesa') }}</option>
|
||||
@endif
|
||||
@if (get_setting('flutterwave') == 1)
|
||||
<option value="flutterwave">{{ translate('Flutterwave') }}</option>
|
||||
@endif
|
||||
@if (get_setting('payfast') == 1)
|
||||
<option value="payfast">{{ translate('PayFast') }}</option>
|
||||
@endif
|
||||
@endif
|
||||
@if (addon_is_activated('paytm') && get_setting('paytm_payment'))
|
||||
<option value="paytm">{{ translate('Paytm') }}</option>
|
||||
@endif
|
||||
@if (get_setting('authorizenet') == 1)
|
||||
<option value="authorizenet">{{ translate('Authorize Net') }}</option>
|
||||
@endif
|
||||
@if (addon_is_activated('paytm') && get_setting('myfatoorah') == 1)
|
||||
<option value="myfatoorah">{{ translate('MyFatoorah') }}</option>
|
||||
@endif
|
||||
@if (addon_is_activated('paytm') && get_setting('khalti_payment') == 1)
|
||||
<option value="khalti">{{ translate('Khalti') }}</option>
|
||||
@endif
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
<label>{{ translate('Amount') }} <span class="text-danger">*</span></label>
|
||||
</div>
|
||||
<div class="col-md-8">
|
||||
<input type="number" lang="en" class="form-control mb-3 rounded-0" name="amount"
|
||||
placeholder="{{ translate('Amount') }}" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group text-right">
|
||||
<button type="submit"
|
||||
class="btn btn-sm btn-primary rounded-0 transition-3d-hover mr-1">{{ translate('Confirm') }}</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
13
resources/views/frontend/partials/wishlist.blade.php
Normal file
13
resources/views/frontend/partials/wishlist.blade.php
Normal file
@@ -0,0 +1,13 @@
|
||||
<a href="{{ route('wishlists.index') }}" class="d-flex align-items-center text-dark" data-toggle="tooltip" data-title="{{ translate('Wishlist') }}" data-placement="top">
|
||||
<span class="position-relative d-inline-block">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="14.4" viewBox="0 0 16 14.4">
|
||||
<g id="_51a3dbe0e593ba390ac13cba118295e4" data-name="51a3dbe0e593ba390ac13cba118295e4" transform="translate(-3.05 -4.178)">
|
||||
<path id="Path_32649" data-name="Path 32649" d="M11.3,5.507l-.247.246L10.8,5.506A4.538,4.538,0,1,0,4.38,11.919l.247.247,6.422,6.412,6.422-6.412.247-.247A4.538,4.538,0,1,0,11.3,5.507Z" transform="translate(0 0)" fill="#fff"/>
|
||||
<path id="Path_32650" data-name="Path 32650" d="M11.3,5.507l-.247.246L10.8,5.506A4.538,4.538,0,1,0,4.38,11.919l.247.247,6.422,6.412,6.422-6.412.247-.247A4.538,4.538,0,1,0,11.3,5.507Z" transform="translate(0 0)" fill="#fff"/>
|
||||
</g>
|
||||
</svg>
|
||||
@if(Auth::check() && count(Auth::user()->wishlists)>0)
|
||||
<span class="badge badge-primary badge-inline badge-pill absolute-top-right--10px">{{ count(Auth::user()->wishlists)}}</span>
|
||||
@endif
|
||||
</span>
|
||||
</a>
|
||||
@@ -0,0 +1,19 @@
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title strong-600 heading-5">{{translate('Seller Message')}}</h5>
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="modal-body gry-bg px-3 pt-3">
|
||||
<div class="row">
|
||||
<div class="col-lg-2">
|
||||
<label>{{translate('Message')}} <span class="text-danger">*</span></label>
|
||||
</div>
|
||||
<div class="col-lg-10">
|
||||
<textarea name="meta_description" rows="8" class="form-control rounded-0" disabled>{{ $seller_withdraw_request->message }}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button class="btn btn-default" data-dismiss="modal">{{translate('Cancel')}}</button>
|
||||
</div>
|
||||
Reference in New Issue
Block a user