[Fixed: conflict resolved.]
This commit is contained in:
parent
fb696d27e5
commit
817d46bb89
|
|
@ -133,7 +133,7 @@ class LocaleController extends Controller
|
|||
$locale = $this->localeRepository->findOrFail($id);
|
||||
|
||||
if ($this->localeRepository->count() == 1) {
|
||||
session()->flash('error', trans('admin::app.settings.locales.last-delete-error'));
|
||||
session()->flash('warning', trans('admin::app.settings.locales.last-delete-error'));
|
||||
} else {
|
||||
try {
|
||||
Event::dispatch('core.locale.delete.before', $id);
|
||||
|
|
|
|||
|
|
@ -114,6 +114,11 @@ class SliderController extends Controller
|
|||
'image.*' => 'sometimes|mimes:jpeg,bmp,png,jpg'
|
||||
]);
|
||||
|
||||
if ( is_null(request()->image)) {
|
||||
session()->flash('error', trans('admin::app.settings.sliders.update-fail'));
|
||||
return redirect()->back();
|
||||
}
|
||||
|
||||
$result = $this->sliderRepository->updateItem(request()->all(), $id);
|
||||
|
||||
if ($result) {
|
||||
|
|
|
|||
|
|
@ -0,0 +1,17 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
'wishlist' => [
|
||||
'success' => 'تمت إضافة العنصر بنجاح إلى قائمة الأمنيات',
|
||||
'failure' => 'لا يمكن إضافة العنصر إلى قائمة الأمنيات',
|
||||
'already' => 'العنصر موجود بالفعل في قائمة الأمنيات الخاصة بك',
|
||||
'removed' => 'تمت إزالة العنصر بنجاح من قائمة الأمنيات',
|
||||
'remove-fail' => 'لا يمكن إزالة العنصر من قائمة الأمنيات',
|
||||
'empty' => 'ليس لديك أي عناصر في قائمة الامنيات',
|
||||
'select-options' => 'تحتاج إلى تحديد خيارات قبل إضافة إلى قائمة الأمنيات',
|
||||
'remove-all-success' => 'تمت إزالة جميع العناصر من قائمة الأمنيات الخاصة بك',
|
||||
],
|
||||
'reviews' => [
|
||||
'empty' => '.لم تقم بمراجعة أي منتج حتى الآن'
|
||||
]
|
||||
];
|
||||
|
|
@ -22,6 +22,7 @@ class VatValidator
|
|||
*/
|
||||
protected static $pattern_expression = array(
|
||||
'AT' => 'U[A-Z\d]{8}',
|
||||
'AE' => '\d{15}',
|
||||
'BE' => '(0\d{9}|\d{10})',
|
||||
'BG' => '\d{9,10}',
|
||||
'CY' => '\d{8}[A-Z]',
|
||||
|
|
@ -50,6 +51,7 @@ class VatValidator
|
|||
'SE' => '\d{12}',
|
||||
'SI' => '\d{8}',
|
||||
'SK' => '\d{10}',
|
||||
'JP' => '\d{12}|\d{13}',
|
||||
);
|
||||
|
||||
/**
|
||||
|
|
@ -61,14 +63,14 @@ class VatValidator
|
|||
*/
|
||||
public function validate(string $vatNumber): bool
|
||||
{
|
||||
$country = request()->input('country');
|
||||
$vatNumber = $this->vatCleaner($vatNumber);
|
||||
list($country, $number) = $this->splitVat($vatNumber);
|
||||
|
||||
if (! isset(self::$pattern_expression[$country])) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return preg_match('/^' . self::$pattern_expression[$country] . '$/', $vatNumber) > 0;
|
||||
return preg_match('/^' . self::$pattern_expression[$country] . '$/', $number) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -81,4 +83,17 @@ class VatValidator
|
|||
$vatNumber_no_spaces = trim($vatNumber);
|
||||
return strtoupper($vatNumber_no_spaces);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $vatNumber
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
private function splitVat(string $vatNumber): array
|
||||
{
|
||||
return [
|
||||
substr($vatNumber, 0, 2),
|
||||
substr($vatNumber, 2),
|
||||
];
|
||||
}
|
||||
}
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1,41 @@
|
|||
/*!
|
||||
* Sizzle CSS Selector Engine v2.3.4
|
||||
* https://sizzlejs.com/
|
||||
*
|
||||
* Copyright JS Foundation and other contributors
|
||||
* Released under the MIT license
|
||||
* https://js.foundation/
|
||||
*
|
||||
* Date: 2019-04-08
|
||||
*/
|
||||
|
||||
/*!
|
||||
* Vue.js v2.6.11
|
||||
* (c) 2014-2019 Evan You
|
||||
* Released under the MIT License.
|
||||
*/
|
||||
|
||||
/*!
|
||||
* accounting.js v0.4.1
|
||||
* Copyright 2014 Open Exchange Rates
|
||||
*
|
||||
* Freely distributable under the MIT license.
|
||||
* Portions of accounting.js are inspired or borrowed from underscore.js
|
||||
*
|
||||
* Full details and documentation:
|
||||
* http://openexchangerates.github.io/accounting.js/
|
||||
*/
|
||||
|
||||
/*!
|
||||
* jQuery JavaScript Library v3.4.1
|
||||
* https://jquery.com/
|
||||
*
|
||||
* Includes Sizzle.js
|
||||
* https://sizzlejs.com/
|
||||
*
|
||||
* Copyright JS Foundation and other contributors
|
||||
* Released under the MIT license
|
||||
* https://jquery.org/license
|
||||
*
|
||||
* Date: 2019-05-01T21:04Z
|
||||
*/
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
{
|
||||
"/js/shop.js": "/js/shop.js?id=d0a3f597b439d75f4a4e",
|
||||
"/css/shop.css": "/css/shop.css?id=dbbd9009872174a61946"
|
||||
"/js/shop.js": "/js/shop.js?id=6d8ea335fbfa47e80e72",
|
||||
"/css/shop.css": "/css/shop.css?id=66ee90f14efb050a20e5"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2549,7 +2549,7 @@ section.cart {
|
|||
|
||||
.misc-controls {
|
||||
position: relative;
|
||||
top: 180px;
|
||||
top: 300px;
|
||||
margin-top: 0px;
|
||||
}
|
||||
}
|
||||
|
|
@ -2595,7 +2595,7 @@ section.cart {
|
|||
.left-side {
|
||||
.misc-controls {
|
||||
display: block;
|
||||
top:160px;
|
||||
top: 300px;
|
||||
|
||||
div {
|
||||
button {
|
||||
|
|
|
|||
|
|
@ -80,7 +80,8 @@ return [
|
|||
'ratingreviews' => ':rating تقيمات & :review باء-الاستعراضات',
|
||||
'star' => 'نجم',
|
||||
'percentage' => ':percentage %',
|
||||
'id-star' => 'نجم'
|
||||
'id-star' => 'نجم',
|
||||
'name' => 'اسم',
|
||||
],
|
||||
|
||||
'customer' => [
|
||||
|
|
@ -203,6 +204,12 @@ return [
|
|||
|
||||
'create' => [
|
||||
'page-title' => 'إضاف عنوان',
|
||||
'company_name' => 'اسم الشركة',
|
||||
'first_name' => 'الاسم الاول',
|
||||
'last_name' => 'الكنية',
|
||||
// Vat Id num
|
||||
'vat_id' => 'رقم تعريف الضريبة على القيمة المضافة',
|
||||
'street-address' => 'عنوان الشارع',
|
||||
'title' => 'أضف العنوان',
|
||||
'address1' => 'العنوان سطر 1',
|
||||
'country' => 'البلد',
|
||||
|
|
|
|||
|
|
@ -87,7 +87,7 @@ return [
|
|||
'star' => 'Star',
|
||||
'percentage' => ':percentage %',
|
||||
'id-star' => 'star',
|
||||
'name' => 'Name'
|
||||
'name' => 'Name',
|
||||
],
|
||||
|
||||
'customer' => [
|
||||
|
|
@ -227,6 +227,7 @@ return [
|
|||
'first_name' => 'First name',
|
||||
'last_name' => 'Last name',
|
||||
'vat_id' => 'Vat id',
|
||||
'vat_help_note' => '[Note: Use Country Code with VAT Id. Eg. INV01234567891]',
|
||||
'title' => 'Add Address',
|
||||
'street-address' => 'Street Address',
|
||||
'country' => 'Country',
|
||||
|
|
|
|||
|
|
@ -207,6 +207,10 @@ return [
|
|||
'create' => [
|
||||
'page-title' => 'Cliente - Adicionar Endereço',
|
||||
'title' => 'Novo Endereço',
|
||||
'company_name' => 'Nome da empresa',
|
||||
'first_name' => 'Primeiro nome',
|
||||
'last_name' => 'Último nome',
|
||||
'vat_id' => 'ID do IVA',
|
||||
'address1' => 'Endereço Linha 1',
|
||||
'street-address' => 'Endereço',
|
||||
'country' => 'País',
|
||||
|
|
|
|||
|
|
@ -45,7 +45,9 @@
|
|||
</div>
|
||||
|
||||
<div class="control-group" :class="[errors.has('vat_id') ? 'has-error' : '']">
|
||||
<label for="vat_id">{{ __('shop::app.customer.account.address.create.vat_id') }}</label>
|
||||
<label for="vat_id">{{ __('shop::app.customer.account.address.create.vat_id') }}
|
||||
<span class="help-note">{{ __('shop::app.customer.account.address.create.vat_help_note') }}</span>
|
||||
</label>
|
||||
<input type="text" class="control" name="vat_id" value="{{ old('vat_id') }}"
|
||||
v-validate="''" data-vv-as=""{{ __('shop::app.customer.account.address.create.vat_id') }}"">
|
||||
<span class="control-error" v-if="errors.has('vat_id')">@{{ errors.first('vat_id') }}</span>
|
||||
|
|
|
|||
|
|
@ -46,7 +46,9 @@
|
|||
</div>
|
||||
|
||||
<div class="control-group" :class="[errors.has('vat_id') ? 'has-error' : '']">
|
||||
<label for="vat_id">{{ __('shop::app.customer.account.address.create.vat_id') }}</label>
|
||||
<label for="vat_id">{{ __('shop::app.customer.account.address.create.vat_id') }}
|
||||
<span class="help-note">{{ __('shop::app.customer.account.address.create.vat_help_note') }}</span>
|
||||
</label>
|
||||
<input type="text" class="control" name="vat_id" value="{{ old('vat_id') ?: $address->vat_id }}"
|
||||
v-validate="''" data-vv-as=""{{ __('shop::app.customer.account.address.create.vat_id') }}"">
|
||||
<span class="control-error" v-if="errors.has('vat_id')">@{{ errors.first('vat_id') }}</span>
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
Binary file not shown.
|
Before Width: | Height: | Size: 699 B After Width: | Height: | Size: 3.7 KiB |
File diff suppressed because one or more lines are too long
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"/js/velocity.js": "/js/velocity.js?id=86ab12533244dd4304cc",
|
||||
"/css/velocity.css": "/css/velocity.css?id=1027f2c6d88fa0c74fa0",
|
||||
"/js/velocity.js": "/js/velocity.js?id=50ea01bd19c367308b08",
|
||||
"/css/velocity.css": "/css/velocity.css?id=e9266605aba73153bf0f",
|
||||
"/css/velocity-admin.css": "/css/velocity-admin.css?id=612d35e452446366eef7"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -34,7 +34,9 @@ class AdminHelper
|
|||
{
|
||||
$data = request()->all();
|
||||
$type = 'category_icon_path';
|
||||
$category = $this->categoryRepository->findOrFail($category);
|
||||
|
||||
if (! $category instanceof \Webkul\Category\Models\Category)
|
||||
$category = $this->categoryRepository->findOrFail($category);
|
||||
|
||||
$category = $this->uploadImage($category, $data, $type);
|
||||
|
||||
|
|
|
|||
|
|
@ -193,5 +193,18 @@ class Helper extends Review
|
|||
|
||||
return $reviews;
|
||||
}
|
||||
|
||||
public function jsonTranslations()
|
||||
{
|
||||
$currentLocale = app()->getLocale();
|
||||
|
||||
$path = __DIR__ . "/../Resources/lang/$currentLocale/app.php";
|
||||
|
||||
if (is_string($path) && is_readable($path)) {
|
||||
return include $path;
|
||||
}
|
||||
|
||||
return [];
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -2,15 +2,15 @@
|
|||
|
||||
namespace Webkul\Velocity\Http\Controllers\Admin;
|
||||
|
||||
use DB;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
use Webkul\Velocity\Repositories\MetadataRepository;
|
||||
use Illuminate\Support\Str;
|
||||
use Webkul\Velocity\Repositories\VelocityMetadataRepository;
|
||||
|
||||
/**
|
||||
* Category Controller
|
||||
*
|
||||
* @author Shubham Mehrotra <shubhammehrotra.symfony@webkul.com> @shubhwebkul
|
||||
* @author Vivek Sharma <viveksh047@webkul.com> @vivek-webkul
|
||||
* @copyright 2019 Webkul Software Pvt Ltd (http://www.webkul.com)
|
||||
*/
|
||||
|
||||
|
|
@ -33,14 +33,17 @@ class ConfigurationController extends Controller
|
|||
VelocityMetadataRepository $velocityMetadataRepository
|
||||
) {
|
||||
$this->_config = request('_config');
|
||||
|
||||
$this->velocityHelper = app('Webkul\Velocity\Helpers\Helper');
|
||||
|
||||
$this->velocityMetaDataRepository = $velocityMetadataRepository;
|
||||
}
|
||||
|
||||
public function renderMetaData()
|
||||
{
|
||||
$velocityHelper = app('Webkul\Velocity\Helpers\Helper');
|
||||
$velocityMetaData = $velocityHelper->getVelocityMetaData();
|
||||
$velocityMetaData = $this->velocityHelper->getVelocityMetaData();
|
||||
|
||||
$velocityMetaData->advertisement = $this->manageAddImages(json_decode($velocityMetaData->advertisement, true));
|
||||
|
||||
return view($this->_config['view'], [
|
||||
'metaData' => $velocityMetaData
|
||||
|
|
@ -60,11 +63,15 @@ class ConfigurationController extends Controller
|
|||
];
|
||||
}
|
||||
|
||||
$velocityMetaData = $this->velocityMetaDataRepository->findorFail($id);
|
||||
|
||||
$advertisement = json_decode($velocityMetaData->advertisement, true);
|
||||
|
||||
$params['advertisement'] = [];
|
||||
|
||||
foreach ($params['images'] as $index => $advertisement) {
|
||||
if ($advertisement['image_1'] !== "") {
|
||||
$params['advertisement'][$index] = $this->uploadAdvertisementImages($advertisement, $index);
|
||||
if ( isset($params['images'])) {
|
||||
foreach ($params['images'] as $index => $images) {
|
||||
$params['advertisement'][$index] = $this->uploadAdvertisementImages($images, $index, $advertisement);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -92,24 +99,42 @@ class ConfigurationController extends Controller
|
|||
return redirect()->route($this->_config['redirect']);
|
||||
}
|
||||
|
||||
public function uploadAdvertisementImages($data, $index)
|
||||
public function uploadAdvertisementImages($data, $index, $advertisement)
|
||||
{
|
||||
$type = 'images';
|
||||
$request = request();
|
||||
$save_image = [];
|
||||
|
||||
$advertisement = [];
|
||||
foreach ($data as $imageId => $image) {
|
||||
$file = $type . '.' . $index . '.' . $imageId;
|
||||
$dir = "velocity/$type";
|
||||
$file = 'images.' . $index . '.' . $imageId;
|
||||
$dir = 'velocity/images';
|
||||
|
||||
if ($request->hasFile($file)) {
|
||||
Storage::delete($dir . $file);
|
||||
if (Str::contains($imageId, 'image_')) {
|
||||
if (request()->hasFile($file) && $image) {
|
||||
Storage::delete($dir . $file);
|
||||
|
||||
$advertisement[$imageId] = $request->file($file)->store($dir);
|
||||
$save_image[substr($imageId, 6, 1)] = request()->file($file)->store($dir);
|
||||
}
|
||||
} else {
|
||||
if ( isset($advertisement[$index][$imageId]) && $advertisement[$index][$imageId]) {
|
||||
$save_image[$imageId] = $advertisement[$index][$imageId];
|
||||
unset($advertisement[$index][$imageId]);
|
||||
}
|
||||
|
||||
if (request()->hasFile($file) && isset($advertisement[$index][$imageId])) {
|
||||
Storage::delete($advertisement[$index][$imageId]);
|
||||
|
||||
$save_image[$imageId] = request()->file($file)->store($dir);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $advertisement;
|
||||
if ( isset($advertisement[$index]) && $advertisement[$index]) {
|
||||
foreach ($advertisement[$index] as $imageId) {
|
||||
Storage::delete($imageId);
|
||||
$save_image[$imageId] = '';
|
||||
}
|
||||
}
|
||||
|
||||
return $save_image;
|
||||
}
|
||||
|
||||
public function uploadImage($data, $index)
|
||||
|
|
@ -129,4 +154,23 @@ class ConfigurationController extends Controller
|
|||
|
||||
return $image;
|
||||
}
|
||||
|
||||
public function manageAddImages($add_images)
|
||||
{
|
||||
$images_path = [];
|
||||
foreach ($add_images as $add_id => $images) {
|
||||
foreach ($images as $key => $image) {
|
||||
if ( $image ) {
|
||||
$images_path[$add_id][] = [
|
||||
'id' => $key,
|
||||
'type' => null,
|
||||
'path' => $image,
|
||||
'url' => Storage::url($image)
|
||||
];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $images_path;
|
||||
}
|
||||
}
|
||||
|
|
@ -221,7 +221,7 @@ use Webkul\Velocity\Repositories\Product\ProductRepository as VelocityProductRep
|
|||
'image' => $productImage,
|
||||
'slug' => $product->url_key,
|
||||
'priceHTML' => view('shop::products.price', ['product' => $product])->render(),
|
||||
'totalReviews' => $totalReviews,
|
||||
'totalReviews' => trans('velocity::app.products.ratings', [ 'totalRatings' => $totalReviews]),
|
||||
'avgRating' => $avgRatings,
|
||||
'firstReviewText' => trans('velocity::app.products.be-first-review'),
|
||||
'addToCartHtml' => view('shop::products.add-to-cart', [
|
||||
|
|
|
|||
|
|
@ -3,7 +3,10 @@
|
|||
namespace Webkul\Velocity\Providers;
|
||||
|
||||
use Illuminate\Routing\Router;
|
||||
use Illuminate\Support\Facades\App;
|
||||
use Illuminate\Support\Facades\File;
|
||||
use Illuminate\Support\Facades\Event;
|
||||
use Illuminate\Support\Facades\Cache;
|
||||
use Illuminate\Foundation\AliasLoader;
|
||||
use Illuminate\Support\ServiceProvider;
|
||||
use Webkul\Velocity\Facades\Velocity as VelocityFacade;
|
||||
|
|
@ -30,24 +33,11 @@ class VelocityServiceProvider extends ServiceProvider
|
|||
|
||||
$this->app->register(EventServiceProvider::class);
|
||||
|
||||
$this->loadGloableVariables();
|
||||
$this->loadPublishableAssets();
|
||||
$this->loadMigrationsFrom(__DIR__ . '/../Database/Migrations');
|
||||
$this->loadTranslationsFrom(__DIR__ . '/../Resources/lang', 'velocity');
|
||||
|
||||
$this->publishes([
|
||||
__DIR__ . '/../../publishable/assets/' => public_path('themes/velocity/assets'),
|
||||
], 'public');
|
||||
|
||||
$this->publishes([
|
||||
__DIR__ . '/../Resources/views/shop' => resource_path('themes/velocity/views'),
|
||||
]);
|
||||
|
||||
$this->loadViewsFrom(__DIR__ . '/../Resources/views', 'velocity');
|
||||
|
||||
$velocityHelper = app('Webkul\Velocity\Helpers\Helper');
|
||||
$velocityMetaData = $velocityHelper->getVelocityMetaData();
|
||||
|
||||
view()->share('showRecentlyViewed', true);
|
||||
view()->share('velocityMetaData', $velocityMetaData);
|
||||
$this->loadTranslationsFrom(__DIR__ . '/../Resources/lang', 'velocity');
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -58,9 +48,7 @@ class VelocityServiceProvider extends ServiceProvider
|
|||
public function register()
|
||||
{
|
||||
$this->registerConfig();
|
||||
|
||||
$this->registerFacades();
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -89,4 +77,30 @@ class VelocityServiceProvider extends ServiceProvider
|
|||
$loader = AliasLoader::getInstance();
|
||||
$loader->alias('velocity', VelocityFacade::class);
|
||||
}
|
||||
|
||||
// this function will provide global variables shared by view (blade files)
|
||||
private function loadPublishableAssets()
|
||||
{
|
||||
// $this->publishes([
|
||||
// __DIR__ . '/../../publishable/assets/' => public_path('themes/velocity/assets'),
|
||||
// ], 'public');
|
||||
|
||||
// $this->publishes([
|
||||
// __DIR__ . '/../Resources/views/shop' => resource_path('themes/velocity/views'),
|
||||
// ]);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
// this function will provide global variables shared by view (blade files)
|
||||
private function loadGloableVariables()
|
||||
{
|
||||
$velocityHelper = app('Webkul\Velocity\Helpers\Helper');
|
||||
$velocityMetaData = $velocityHelper->getVelocityMetaData();
|
||||
|
||||
view()->share('showRecentlyViewed', true);
|
||||
view()->share('velocityMetaData', $velocityMetaData);
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@
|
|||
<template v-if="(! (viewAll == 'false' || viewAll == '')) && viewAll">
|
||||
<div>
|
||||
<a :href="viewAll" :title="`View all ${headerHeading} products`" class="remove-decoration link-color">
|
||||
<h2 class="fs16 fw6 cursor-pointer tab">View All</h2>
|
||||
<h2 class="fs16 fw6 cursor-pointer tab">{{ __('home.view-all') }}</h2>
|
||||
</a>
|
||||
</div>
|
||||
</template>
|
||||
|
|
@ -78,7 +78,7 @@
|
|||
|
||||
return {
|
||||
tabs: tabs,
|
||||
headerHeading: this.heading ? this.heading : 'Products',
|
||||
headerHeading: this.heading ? this.heading : this.__('products.text'),
|
||||
}
|
||||
},
|
||||
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@
|
|||
|
||||
<div class="product-rating" v-if="product.totalReviews && product.totalReviews > 0">
|
||||
<star-ratings :ratings="product.avgRating"></star-ratings>
|
||||
<span>{{ product.totalReviews }} Ratings</span>
|
||||
<span>{{ product.totalReviews }}</span>
|
||||
</div>
|
||||
|
||||
<div class="product-rating" v-else>
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@
|
|||
</div>
|
||||
<span class="category-title">{{ category['name'] }}</span>
|
||||
<i
|
||||
class="rango-arrow-right pr15"
|
||||
class="rango-arrow-right pr15 pull-right"
|
||||
@mouseout="toggleSidebar(id, $event, 'mouseout')"
|
||||
@mouseover="toggleSidebar(id, $event, 'mouseover')"
|
||||
v-if="category.children.length && category.children.length > 0">
|
||||
|
|
|
|||
|
|
@ -0,0 +1,17 @@
|
|||
module.exports = {
|
||||
methods: {
|
||||
/**
|
||||
* Translate the given key.
|
||||
*/
|
||||
__(key) {
|
||||
let splitedKey = key.split('.');
|
||||
let translation = window._translations;
|
||||
|
||||
splitedKey.forEach(key => {
|
||||
translation = translation[key];
|
||||
});
|
||||
|
||||
return translation
|
||||
}
|
||||
},
|
||||
}
|
||||
|
|
@ -47,6 +47,7 @@ window.eventBus = new Vue();
|
|||
|
||||
$(document).ready(function () {
|
||||
// define a mixin object
|
||||
Vue.mixin(require('./UI/components/trans'));
|
||||
Vue.mixin({
|
||||
data: function () {
|
||||
return {
|
||||
|
|
|
|||
|
|
@ -311,7 +311,6 @@ body {
|
|||
|
||||
.no-padding {
|
||||
padding: 0px !important;
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
.btn-normal {
|
||||
|
|
@ -491,11 +490,11 @@ header {
|
|||
color: $font-color;
|
||||
display: inline-block;
|
||||
|
||||
.material-icons {
|
||||
left: 0px;
|
||||
top: 0px;
|
||||
font-size: 26px;
|
||||
position: absolute;
|
||||
i {
|
||||
~ span {
|
||||
top: -2px;
|
||||
left: -4px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -137,7 +137,6 @@
|
|||
|
||||
.limiter::after {
|
||||
margin-left: 10px;
|
||||
content: 'per page';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -224,12 +223,13 @@
|
|||
margin: 0 5px 10px 10px;
|
||||
|
||||
.product-image-container {
|
||||
height: 225px;
|
||||
max-height: 225px;
|
||||
position: relative;
|
||||
|
||||
img {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
max-height: 225px;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -299,7 +299,9 @@
|
|||
}
|
||||
|
||||
~ .wishlist-icon {
|
||||
right: 10px;
|
||||
right: 0;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
position: absolute;
|
||||
}
|
||||
}
|
||||
|
|
@ -657,7 +659,7 @@
|
|||
|
||||
.cart-item-list {
|
||||
> .row {
|
||||
margin-bottom: 20px;
|
||||
margin-bottom: 40px;
|
||||
}
|
||||
|
||||
> .row:last-child {
|
||||
|
|
@ -682,10 +684,6 @@
|
|||
font-size: 18px;
|
||||
}
|
||||
}
|
||||
|
||||
> .row:not(:last-child) {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1292,6 +1290,8 @@
|
|||
}
|
||||
|
||||
.address-container {
|
||||
display: none;
|
||||
|
||||
.address-holder {
|
||||
margin-top: 15px;
|
||||
|
||||
|
|
@ -1312,6 +1312,21 @@
|
|||
display: inline-block;
|
||||
}
|
||||
}
|
||||
|
||||
.add-address-button {
|
||||
height: 100%;
|
||||
display: table;
|
||||
text-align: center;
|
||||
|
||||
> div {
|
||||
display: table-cell;
|
||||
vertical-align: middle;
|
||||
|
||||
span {
|
||||
vertical-align: super;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1454,9 +1469,14 @@
|
|||
}
|
||||
}
|
||||
|
||||
.price-label {
|
||||
margin-right: 6px;
|
||||
}
|
||||
|
||||
.product-price {
|
||||
span:nth-child(1),
|
||||
.special-price {
|
||||
.special-price,
|
||||
.price-from > span:not(:nth-child(2)) {
|
||||
font-size: 20px;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
|
@ -1558,7 +1578,6 @@
|
|||
|
||||
.rango-arrow-right {
|
||||
top: 4px;
|
||||
float: right;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
|
|
@ -1666,9 +1685,6 @@
|
|||
|
||||
.grouped-product-container {
|
||||
.grouped-product-list {
|
||||
padding: 15px 0;
|
||||
border-top: solid 1px rgba(162, 162, 162, 0.2);
|
||||
|
||||
ul {
|
||||
li {
|
||||
width: 100%;
|
||||
|
|
@ -2164,3 +2180,11 @@
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
.vue-slider {
|
||||
max-width: 97%;
|
||||
}
|
||||
|
||||
.profile-update-form {
|
||||
width: 800px;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -169,6 +169,10 @@
|
|||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
.quantity {
|
||||
width: unset;
|
||||
}
|
||||
}
|
||||
|
||||
.thumb-list {
|
||||
|
|
|
|||
|
|
@ -4,8 +4,8 @@ body {
|
|||
|
||||
.velocity-divide-page {
|
||||
.right {
|
||||
padding-right: 230px;
|
||||
padding-left: 0 !important;
|
||||
padding-right: 230px !important;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -97,6 +97,12 @@ body {
|
|||
text-align: left;
|
||||
}
|
||||
}
|
||||
|
||||
+ .account-modal {
|
||||
left: 0;
|
||||
right: 0;
|
||||
margin-left: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.locale-icon {
|
||||
|
|
@ -105,5 +111,158 @@ body {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
#cart-modal-content {
|
||||
left: 0;
|
||||
}
|
||||
|
||||
.category-list-container{
|
||||
.sub-categories {
|
||||
left: -100%;
|
||||
}
|
||||
|
||||
li {
|
||||
a {
|
||||
padding: 7px 15px 5px 15px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.filters-container {
|
||||
.view-mode {
|
||||
> div {
|
||||
padding-right: 6px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.filters-container {
|
||||
.toolbar-wrapper {
|
||||
> div {
|
||||
label {
|
||||
margin-right: 0px;
|
||||
margin-left: 10px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.filter-attributes-content {
|
||||
margin-left: 7px;
|
||||
margin-right: 0px;
|
||||
}
|
||||
.filter-attributes-item {
|
||||
input[type=checkbox] {
|
||||
+ span {
|
||||
margin-right: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
.filter-input {
|
||||
margin-right: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.product-card-new {
|
||||
.card-body {
|
||||
.cart-wish-wrap {
|
||||
margin-right: 0 !important;
|
||||
|
||||
.add-to-cart-btn {
|
||||
padding-left: 35px !important;
|
||||
}
|
||||
}
|
||||
|
||||
.wishlist-icon {
|
||||
left: 0;
|
||||
right: unset;
|
||||
}
|
||||
|
||||
.product-name {
|
||||
width: unset;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.account-content {
|
||||
.account-layout {
|
||||
&.right {
|
||||
width: calc(100% - 20px);
|
||||
padding-right: 250px !important;
|
||||
}
|
||||
|
||||
.account-table-content {
|
||||
.address-holder {
|
||||
> div {
|
||||
padding-right: 0px;
|
||||
padding-left: 15px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.sidebar {
|
||||
.customer-sidebar {
|
||||
border-left: 1px solid $border-general;
|
||||
|
||||
.navigation {
|
||||
li i.icon {
|
||||
padding-right: 0;
|
||||
padding-left: 5px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// product page
|
||||
.product-detail {
|
||||
.right {
|
||||
.info {
|
||||
margin-right: 0px;
|
||||
|
||||
> h2, div {
|
||||
padding-right: 0px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.thumb-list {
|
||||
left: 0;
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
.wishlist-icon {
|
||||
padding-right: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
// Shared
|
||||
.text-right {
|
||||
text-align: left !important;
|
||||
}
|
||||
.text-left {
|
||||
text-align: right !important;
|
||||
}
|
||||
.pl0 {
|
||||
padding-right: 0px !important;
|
||||
}
|
||||
.pl10 {
|
||||
padding-right: 10px !important;
|
||||
}
|
||||
.rango-arrow-right::before {
|
||||
content: "\E907";
|
||||
}
|
||||
.styled-select {
|
||||
+ .select-icon-container {
|
||||
.select-icon {
|
||||
left: 6px;
|
||||
right: unset;
|
||||
}
|
||||
}
|
||||
}
|
||||
.ml15 {
|
||||
margin-right: 15px !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -198,7 +198,7 @@
|
|||
cursor: pointer;
|
||||
}
|
||||
.cursor-not-allowed {
|
||||
cursor: not-allowed;
|
||||
cursor: not-allowed !important;
|
||||
}
|
||||
.cursor-default {
|
||||
cursor: default;
|
||||
|
|
@ -703,11 +703,15 @@ select:focus,
|
|||
.control-error {
|
||||
color: $color-danger;
|
||||
}
|
||||
.mandatory::after {
|
||||
content: "*";
|
||||
font-size: 16px;
|
||||
margin-left: -1px;
|
||||
color: $color-danger;
|
||||
.mandatory {
|
||||
width: 100%;
|
||||
|
||||
&::after {
|
||||
content: "*";
|
||||
font-size: 16px;
|
||||
margin-left: -1px;
|
||||
color: $color-danger;
|
||||
}
|
||||
}
|
||||
|
||||
a {
|
||||
|
|
@ -864,7 +868,8 @@ button[disabled] {
|
|||
|
||||
.has-error {
|
||||
input,
|
||||
select {
|
||||
select,
|
||||
textarea {
|
||||
border-color: $border-danger !important;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,15 +1,33 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
'admin' => [
|
||||
'general' => [
|
||||
'locale_logo' => 'شعار اللغة',
|
||||
],
|
||||
],
|
||||
|
||||
'customer' => [
|
||||
'login-form' => [
|
||||
'customer-login' => 'تسجيل دخول العميل',
|
||||
'registered-user' => 'مستخدم مسجل',
|
||||
'form-login-text' => 'إذا كان لديك حساب ، فقم بتسجيل الدخول باستخدام عنوان بريدك الإلكتروني.',
|
||||
'sign-up' => 'سجل',
|
||||
'new-customer' => 'عميل جديد',
|
||||
'registered-user' => 'مستخدم مسجل',
|
||||
'customer-login' => 'تسجيل دخول العميل',
|
||||
'your-email-address' => 'عنوان بريدك الإلكتروني',
|
||||
'form-login-text' => '.إذا كان لديك حساب ، فقم بتسجيل الدخول باستخدام عنوان بريدك الإلكتروني',
|
||||
],
|
||||
'signup-form' => [
|
||||
'login' => 'تسجيل الدخول',
|
||||
'become-user' => 'كن مستخدم',
|
||||
'user-registration' => 'تسجيل المستخدم',
|
||||
'form-sginup-text' => '.إذا كنت جديدا على متجرنا ، فنحن نحرص على أن تكون أنت عضوًا',
|
||||
],
|
||||
'forget-password' => [
|
||||
'login' => 'تسجيل الدخول',
|
||||
'forgot-password' => 'هل نسيت كلمة المرور',
|
||||
'recover-password' => 'إستعادة كلمة المرور',
|
||||
'recover-password-text' => '.إذا نسيت كلمة المرور ، فاستردها بإدخال عنوان بريدك الإلكتروني',
|
||||
]
|
||||
],
|
||||
|
||||
'menu-navbar' => [
|
||||
|
|
@ -17,39 +35,90 @@ return [
|
|||
],
|
||||
|
||||
'header' => [
|
||||
'all-categories' => 'جميع الفئات',
|
||||
'search-text' => 'ابحث عن منتجات هنا',
|
||||
'welcome-message' => 'أهلا بك, :customer_name',
|
||||
'all-categories' => 'جميع الفئات',
|
||||
'guest' => 'زائر'
|
||||
],
|
||||
|
||||
'minicart' => [
|
||||
'checkout' => 'الدفع',
|
||||
'cart' => 'عربة التسوق',
|
||||
'view-cart' => 'عرض العربة',
|
||||
'checkout' => 'الدفع',
|
||||
],
|
||||
|
||||
'error' => [
|
||||
'go-to-home' => 'الذهاب إلى المنزل',
|
||||
'page-lost-short' => 'الصفحة فقدت المحتوى',
|
||||
'page-lost-description' => "الصفحة التي تبحث عنها غير متوفرة. حاول البحث مرة أخرى أو استخدم زر العودة للخلف أدناه.",
|
||||
],
|
||||
|
||||
'home' => [
|
||||
'view-all' => 'عرض الكل',
|
||||
'add-to-cart' => 'أضف إلى السلة',
|
||||
'payment-methods' => 'طرق الدفع',
|
||||
'shipping-methods' => 'طرق الشحن',
|
||||
'hot-categories' => 'الفئات الساخنة',
|
||||
'popular-categories' => 'فئات شعبية',
|
||||
'customer-reviews' => 'آراء المستهلكين',
|
||||
],
|
||||
|
||||
'products' => [
|
||||
'short-description' => 'أوصاف قصيرة',
|
||||
'more-infomation' => 'معلومات اكثر',
|
||||
'text' => 'منتجات',
|
||||
'details' => 'تفاصيل',
|
||||
'customer-rating' => 'تقييم العملاء',
|
||||
'reviewed' => 'التعليق',
|
||||
'reviews' => 'التعليقات',
|
||||
'view-all-reviews' => 'عرض جميع التقييمات',
|
||||
'write-your-review' => 'اكتب مراجعتك',
|
||||
'quick-view' => 'نظرة سريعة',
|
||||
'recently-viewed' => 'المنتجات المعروضة مؤخرا',
|
||||
'not-available' => 'غير متوفر',
|
||||
'review-by' => 'روجع من قبل',
|
||||
'be-first-review' => 'كن أول من يكتب نقد',
|
||||
'not-available' => 'غير متوفر',
|
||||
'customer-rating' => 'تقييم العملاء',
|
||||
'submit-review' => 'إرسال المراجعة',
|
||||
]
|
||||
'more-infomation' => 'معلومات اكثر',
|
||||
'short-description' => 'أوصاف قصيرة',
|
||||
'ratings' => ':totalRatings تصنيفات',
|
||||
'write-your-review' => 'اكتب مراجعتك',
|
||||
'be-first-review' => 'كن أول من يكتب نقد',
|
||||
'view-all-reviews' => 'عرض جميع التقييمات',
|
||||
'recently-viewed' => 'المنتجات المعروضة مؤخرا',
|
||||
],
|
||||
|
||||
'shop' => [
|
||||
'gender' => [
|
||||
'other' => 'آخر',
|
||||
'male' => 'الذكر',
|
||||
'female' => 'أنثى',
|
||||
],
|
||||
'general' => [
|
||||
'view' => 'رأي',
|
||||
'filter' => 'منقي',
|
||||
'update' => 'تحديث',
|
||||
'addresses' => 'عناوين',
|
||||
'orders' => 'الطلب #٪ s',
|
||||
'reviews' => 'التعليقات',
|
||||
'top-brands' => 'ارقى الماركات',
|
||||
'new-password' => 'كلمة مرور جديدة',
|
||||
'downloadables' => 'المنتجات القابلة للتحميل',
|
||||
'confirm-new-password' => 'تأكيد كلمة المرور الجديدة',
|
||||
'enter-current-password' => 'أدخل كلمة المرور الحالية',
|
||||
|
||||
'alert' => [
|
||||
'info' => 'معلومات',
|
||||
'error' => 'خطأ',
|
||||
'success' => 'نجاح',
|
||||
'warning' => 'تحذير',
|
||||
],
|
||||
],
|
||||
'wishlist' => [
|
||||
'add-wishlist-text' => 'إضافة منتج إلى قائمة الأمنيات',
|
||||
'remove-wishlist-text' => 'أزل المنتج من قائمة الأمنيات'
|
||||
]
|
||||
],
|
||||
|
||||
'responsive' => [
|
||||
'header' => [
|
||||
'greeting' => 'أهلا بك, :customer !',
|
||||
]
|
||||
],
|
||||
]
|
||||
|
||||
?>
|
||||
|
|
@ -4,10 +4,10 @@ return [
|
|||
'admin' => [
|
||||
'system' => [
|
||||
'velocity' => [
|
||||
'extension_name' => 'Velocity Theme',
|
||||
'settings' => 'Settings',
|
||||
'general' => 'General',
|
||||
'category' => 'Category',
|
||||
'settings' => 'Settings',
|
||||
'extension_name' => 'Velocity Theme',
|
||||
'error-module-inactive' => 'Warning: Velocity theme status is inactive',
|
||||
],
|
||||
|
||||
|
|
@ -23,42 +23,42 @@ return [
|
|||
'inactive' => 'Inactive',
|
||||
],
|
||||
'category' => [
|
||||
'icon-status' => 'Category Icon Status',
|
||||
'active' => 'Active',
|
||||
'inactive' => 'Inactive',
|
||||
'right' => 'Right',
|
||||
'all' => 'All',
|
||||
'left' => 'Left',
|
||||
'right' => 'Right',
|
||||
'active' => 'Active',
|
||||
'custom' => 'Custom',
|
||||
'inactive' => 'Inactive',
|
||||
'image-alignment' => 'Image Alignment',
|
||||
'icon-status' => 'Category Icon Status',
|
||||
'image-status' => 'Category Image Status',
|
||||
'sub-category-show' => 'Show Sub Category',
|
||||
'image-height' => 'Image\'s Height [in Pixel]',
|
||||
'image-width' => 'Image\'s Width [in Pixel]',
|
||||
'image-alignment' => 'Image Alignment',
|
||||
'show-tooltip' => 'Show Category\'s Tooltip',
|
||||
'sub-category-show' => 'Show Sub Category',
|
||||
'all' => 'All',
|
||||
'custom' => 'Custom',
|
||||
'num-sub-category' => 'Number Of Sub Category',
|
||||
]
|
||||
],
|
||||
'layouts' => [
|
||||
'velocity' => 'Velocity',
|
||||
'header-content' => 'Header Content',
|
||||
'cms-pages' => 'CMS Pages',
|
||||
'meta-data' => 'Meta Data',
|
||||
'category-menu' => 'Category Menu',
|
||||
'header-content' => 'Header Content',
|
||||
],
|
||||
'contents' => [
|
||||
'title' => 'Content Pages List',
|
||||
'add-title' => 'Add Content',
|
||||
'btn-add-content' => 'Add New Content',
|
||||
'save-btn-title' => 'Save Content',
|
||||
'active' => 'Active',
|
||||
'inactive' => 'Inactive',
|
||||
'select' => '-- Select --',
|
||||
'self' => 'Self',
|
||||
'active' => 'Active',
|
||||
'new-tab' => 'New Tab',
|
||||
'inactive' => 'Inactive',
|
||||
'title' => 'Content List',
|
||||
'select' => '-- Select --',
|
||||
'add-title' => 'Add Content',
|
||||
'btn-add-content' => 'Add Content',
|
||||
'save-btn-title' => 'Save Content',
|
||||
'autocomplete' => '[Autocomplete]',
|
||||
'search-hint' => 'Search product here...',
|
||||
'no-result-found' => 'No record found.',
|
||||
'search-hint' => 'Search product here...',
|
||||
'mass-delete-success' => 'Selected content deleted successfully.',
|
||||
'tab' => [
|
||||
'page' => 'Page Setting',
|
||||
|
|
@ -67,54 +67,54 @@ return [
|
|||
],
|
||||
'page' => [
|
||||
'title' => 'Title',
|
||||
'position' => 'Position',
|
||||
'status' => 'Status',
|
||||
'position' => 'Position',
|
||||
],
|
||||
'content' => [
|
||||
'content-type' => 'Content Type',
|
||||
'custom-title' => 'Custom Title',
|
||||
'custom-heading' => 'Custom Heading',
|
||||
'page-link' => 'Page Link [e.g. http://example.com/../../]',
|
||||
'category-slug' => 'Category Slug',
|
||||
'link-target' => 'Page Link Target',
|
||||
'catalog-type' => 'Product Catalog Type',
|
||||
'custom-product' => 'Store Products',
|
||||
'custom-heading' => 'Custom Heading',
|
||||
'catalog-type' => 'Product Catalog Type',
|
||||
'static-description' => 'Content Description',
|
||||
'page-link' => 'Page Link [e.g. http://example.com/../../]',
|
||||
],
|
||||
'datagrid' => [
|
||||
'id' => 'Content Id',
|
||||
'id' => 'Id',
|
||||
'title' => 'Title',
|
||||
'position' => 'Position',
|
||||
'status' => 'Status',
|
||||
'position' => 'Position',
|
||||
'content-type' => 'Content Type',
|
||||
]
|
||||
],
|
||||
'meta-data' => [
|
||||
'footer' => 'Footer',
|
||||
'title' => 'Velocity meta data',
|
||||
'activate-slider' => 'Activate Slider',
|
||||
'home-page-content' => 'Home Page Content',
|
||||
'footer-left-content' => 'Footer Left Content',
|
||||
'subscription-content' => 'Subscription bar Content',
|
||||
'activate-slider' => 'Activate Slider',
|
||||
'sidebar-categories' => 'Sidebar Categories',
|
||||
'footer-left-raw-content' => '<p>We love to craft softwares and solve the real world problems with the binaries. We are highly committed to our goals. We invest our resources to create world class easy to use softwares and applications for the enterprise business with the top notch, on the edge technology expertise.</p>',
|
||||
'footer-middle-content' => 'Footer Middle Content',
|
||||
'update-meta-data' => 'Update Meta Data',
|
||||
'advertisement-four' => 'Advertisement Four Images',
|
||||
'advertisement-three' => 'Advertisement Three Images',
|
||||
'advertisement-two' => 'Advertisement Two Images',
|
||||
'advertisement-one' => 'Advertisement One Images',
|
||||
'product-view-image' => 'Product View Image',
|
||||
'footer' => 'Footer',
|
||||
'product-policy' => 'Product Policy',
|
||||
'slider-path' => 'Slider Path',
|
||||
'category-logo' => 'Category logo',
|
||||
'product-policy' => 'Product Policy',
|
||||
'update-meta-data' => 'Update Meta Data',
|
||||
'product-view-image' => 'Product View Image',
|
||||
'advertisement-two' => 'Advertisement Two Images',
|
||||
'advertisement-one' => 'Advertisement One Images',
|
||||
'footer-middle-content' => 'Footer Middle Content',
|
||||
'advertisement-four' => 'Advertisement Four Images',
|
||||
'advertisement-three' => 'Advertisement Three Images',
|
||||
],
|
||||
'category' => [
|
||||
'save-btn-title' => 'Save Menu',
|
||||
'title' => 'Category Menu List',
|
||||
'add-title' => 'Add Menu Content',
|
||||
'edit-title' => 'Edit Menu Content',
|
||||
'btn-add-category' => 'Add Category Content',
|
||||
'save-btn-title' => 'Save Menu',
|
||||
'datagrid' => [
|
||||
'category-id' => 'Category Id',
|
||||
'category-name' => 'Category Name',
|
||||
|
|
@ -124,13 +124,13 @@ return [
|
|||
'tab' => [
|
||||
'general' => 'General',
|
||||
],
|
||||
'select' => '-- Select --',
|
||||
'select-category' => 'Choose Category',
|
||||
'icon-class' => 'Icon Class',
|
||||
'tooltip-content' => 'Tooltip Content',
|
||||
'status' => 'Status',
|
||||
'active' => 'Active',
|
||||
'inactive' => 'Inactive',
|
||||
'select' => '-- Select --',
|
||||
'icon-class' => 'Icon Class',
|
||||
'select-category' => 'Choose Category',
|
||||
'tooltip-content' => 'Tooltip Content',
|
||||
'mass-delete-success' => 'Selected categories menu deleted successfully.',
|
||||
],
|
||||
'general' => [
|
||||
|
|
@ -139,121 +139,127 @@ return [
|
|||
],
|
||||
|
||||
'home' => [
|
||||
'page-title' => 'Velocity-Home',
|
||||
'view-all' => 'View All',
|
||||
'add-to-cart' => 'Add To Cart',
|
||||
'hot-categories' => 'Hot Categories',
|
||||
'popular-categories' => 'Popular Categories',
|
||||
'payment-methods' => 'Payment Methods',
|
||||
'customer-reviews' => 'Customer Reviews',
|
||||
'shipping-methods' => 'Shipping Methods',
|
||||
'popular-categories' => 'Popular Categories',
|
||||
],
|
||||
|
||||
'header' => [
|
||||
'title' => 'Account',
|
||||
'welcome-message' => 'Welcome, :customer_name',
|
||||
'dropdown-text' => 'Manage Cart, Orders & Wishlist',
|
||||
'sign-in' => 'Sign In',
|
||||
'sign-up' => 'Sign Up',
|
||||
'account' => 'Account',
|
||||
'cart' => 'Cart',
|
||||
'profile' => 'Profile',
|
||||
'wishlist' => 'Wishlist',
|
||||
'cart' => 'Cart',
|
||||
'guest' => 'Guest',
|
||||
'logout' => 'Logout',
|
||||
'title' => 'Account',
|
||||
'account' => 'Account',
|
||||
'profile' => 'Profile',
|
||||
'wishlist' => 'Wishlist',
|
||||
'all-categories' => 'All Categories',
|
||||
'search-text' => 'Search products here',
|
||||
'all-categories' => 'All Categories'
|
||||
'welcome-message' => 'Welcome, :customer_name',
|
||||
'dropdown-text' => 'Manage Cart, Orders & Wishlist',
|
||||
],
|
||||
|
||||
'menu-navbar' => [
|
||||
'text-category' => 'Shop by Category',
|
||||
'text-more' => 'More',
|
||||
'text-category' => 'Shop by Category',
|
||||
],
|
||||
|
||||
'minicart' => [
|
||||
'view-cart' => 'View Cart',
|
||||
'checkout' => 'Checkout',
|
||||
'cart' => 'Cart',
|
||||
'view-cart' => 'View Cart',
|
||||
],
|
||||
|
||||
'checkout' => [
|
||||
'checkout' => 'Checkout',
|
||||
'qty' => 'Qty',
|
||||
'checkout' => 'Checkout',
|
||||
'cart' => [
|
||||
'cart-subtotal' => 'Cart Subtotal',
|
||||
'view-cart' => 'View Cart',
|
||||
'cart-summary' => 'Cart Summary',
|
||||
],
|
||||
'proceed' => 'Proceed to checkout',
|
||||
'sub-total' => 'Sub Total',
|
||||
'items' => 'Items',
|
||||
'qty' => 'Qty',
|
||||
'items' => 'Items',
|
||||
'subtotal' => 'Subtotal',
|
||||
'sub-total' => 'Sub Total',
|
||||
'proceed' => 'Proceed to checkout',
|
||||
],
|
||||
|
||||
'customer' => [
|
||||
'login-form' => [
|
||||
'customer-login' => 'Customer Login',
|
||||
'registered-user' => 'Registered User',
|
||||
'form-login-text' => 'If you have an account, sign in with your email address.',
|
||||
'sign-up' => 'Sign up',
|
||||
'new-customer' => 'New Customer',
|
||||
'customer-login' => 'Customer Login',
|
||||
'registered-user' => 'Registered User',
|
||||
'your-email-address' => 'Your email address',
|
||||
'form-login-text' => 'If you have an account, sign in with your email address.',
|
||||
],
|
||||
'signup-form' => [
|
||||
'user-registration' => 'User Registration',
|
||||
'login' => 'Login',
|
||||
'become-user' => 'Become User',
|
||||
'user-registration' => 'User Registration',
|
||||
'form-sginup-text' => 'If you are new to our store, we glab to have you as member.',
|
||||
],
|
||||
'forget-password' => [
|
||||
'login' => 'Login',
|
||||
'forgot-password' => 'Forgot Password',
|
||||
'recover-password' => 'Recover Password',
|
||||
'recover-password-text' => 'If you forgot your password, recover it by entering your email address.',
|
||||
'forgot-password' => 'Forgot Password',
|
||||
'login' => 'Login',
|
||||
|
||||
]
|
||||
],
|
||||
|
||||
'error' => [
|
||||
'go-to-home' => 'Go to home',
|
||||
'page-lost-short' => 'Page lost content',
|
||||
'page-lost-description' => "The page you're looking for isn't available. Try to search again or use the Go Back button below.",
|
||||
'go-to-home' => 'Go to home'
|
||||
],
|
||||
|
||||
'products' => [
|
||||
'short-description' => 'Short Descriptions',
|
||||
'more-infomation' => 'More Information',
|
||||
'text' => 'Products',
|
||||
'details' => 'Details',
|
||||
'customer-rating' => 'Customer Rating',
|
||||
'reviews' => 'Reviews',
|
||||
'reviewed' => 'Reviewed',
|
||||
'review-by' => 'Review by',
|
||||
'quick-view' => 'Quick View',
|
||||
'not-available' => 'Not Available',
|
||||
'submit-review' => 'Submit Review',
|
||||
'ratings' => ':totalRatings Ratings',
|
||||
'customer-rating' => 'Customer Rating',
|
||||
'more-infomation' => 'More Information',
|
||||
'view-all-reviews' => 'View All Reviews',
|
||||
'write-your-review' => 'Write Your Review',
|
||||
'quick-view' => 'Quick View',
|
||||
'short-description' => 'Short Descriptions',
|
||||
'recently-viewed' => 'Recently Viewed Products',
|
||||
'not-available' => 'Not Available',
|
||||
'review-by' => 'Review by',
|
||||
'be-first-review' => 'Be the first to write a review',
|
||||
'submit-review' => 'Submit Review',
|
||||
],
|
||||
|
||||
'shop' => [
|
||||
'gender' => [
|
||||
'male' => 'Male',
|
||||
'female' => 'Female',
|
||||
'other' => 'Other',
|
||||
'female' => 'Female',
|
||||
],
|
||||
'general' => [
|
||||
'update' => 'Update',
|
||||
'enter-current-password' => 'Enter your current password',
|
||||
'new-password' => 'New password',
|
||||
'confirm-new-password' => 'Confirm new password',
|
||||
'top-brands' => 'Top Brands',
|
||||
'filter' => 'Filter',
|
||||
'view' => 'View',
|
||||
'addresses' => 'Addresses',
|
||||
'reviews' => 'Reviews',
|
||||
'filter' => 'Filter',
|
||||
'orders' => 'Orders',
|
||||
'update' => 'Update',
|
||||
'reviews' => 'Reviews',
|
||||
'addresses' => 'Addresses',
|
||||
'top-brands' => 'Top Brands',
|
||||
'new-password' => 'New password',
|
||||
'downloadables' => 'Downloadable Products',
|
||||
'confirm-new-password' => 'Confirm new password',
|
||||
'enter-current-password' => 'Enter your current password',
|
||||
|
||||
'alert' => [
|
||||
'info' => 'Info',
|
||||
'error' => 'Error',
|
||||
'success' => 'Success',
|
||||
'warning' => 'Warning',
|
||||
],
|
||||
],
|
||||
'wishlist' => [
|
||||
'add-wishlist-text' => 'Add product to wishlist',
|
||||
|
|
|
|||
|
|
@ -0,0 +1,124 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
'admin' => [
|
||||
'general' => [
|
||||
'locale_logo' => 'Logotipo da localidade',
|
||||
],
|
||||
],
|
||||
|
||||
'customer' => [
|
||||
'login-form' => [
|
||||
'sign-up' => 'inscrever-se',
|
||||
'new-customer' => 'Novo cliente',
|
||||
'customer-login' => 'Login do cliente',
|
||||
'registered-user' => 'Usuário Registrado',
|
||||
'your-email-address' => 'Seu endereço de email',
|
||||
'form-login-text' => 'Se você possui uma conta, entre com seu endereço de e-mail.',
|
||||
],
|
||||
'signup-form' => [
|
||||
'login' => 'Conecte-se',
|
||||
'become-user' => 'Torne-se usuário',
|
||||
'user-registration' => 'Registro de Usuário',
|
||||
'form-sginup-text' => 'Se você é novo em nossa loja, desejamos tê-lo como membro.',
|
||||
],
|
||||
'forget-password' => [
|
||||
'login' => 'Conecte-se',
|
||||
'forgot-password' => 'Esqueceu a senha',
|
||||
'recover-password' => 'Recuperar Senha',
|
||||
'recover-password-text' => 'Se você esqueceu sua senha, recupere-a digitando seu endereço de e-mail.',
|
||||
]
|
||||
],
|
||||
|
||||
'menu-navbar' => [
|
||||
'text-category' => 'Compre por categoria',
|
||||
],
|
||||
|
||||
'header' => [
|
||||
'guest' => 'Hóspede',
|
||||
'search-text' => 'Pesquise produtos aqui',
|
||||
'all-categories' => 'todas as categorias',
|
||||
'welcome-message' => 'Bem-vinda, :customer_name',
|
||||
],
|
||||
|
||||
'minicart' => [
|
||||
'cart' => 'Carrinho',
|
||||
'view-cart' => 'Ver carrinho',
|
||||
'checkout' => 'Verificação de saída',
|
||||
],
|
||||
|
||||
'error' => [
|
||||
'go-to-home' => 'Vá para casa',
|
||||
'page-lost-short' => 'Conteúdo perdido da página',
|
||||
'page-lost-description' => "A página que você está procurando não está disponível. Tente pesquisar novamente ou use o botão Voltar atrás abaixo.",
|
||||
],
|
||||
|
||||
'home' => [
|
||||
'view-all' => 'Ver tudo',
|
||||
'add-to-cart' => 'Adicionar ao carrinho',
|
||||
'hot-categories' => 'Categorias quentes',
|
||||
'shipping-methods' => 'Métodos de Envio',
|
||||
'payment-methods' => 'Métodos de Pagamento',
|
||||
'popular-categories' => 'Categorias populares',
|
||||
'customer-reviews' => 'Opinião dos consumidores',
|
||||
],
|
||||
|
||||
'products' => [
|
||||
'text' => 'Produtos',
|
||||
'details' => 'Detalhes',
|
||||
'reviewed' => 'Revisada',
|
||||
'reviews' => 'Avaliações',
|
||||
'review-by' => 'Revisão por',
|
||||
'quick-view' => 'Olhada rápida',
|
||||
'submit-review' => 'Enviar revisão',
|
||||
'not-available' => 'Não disponível',
|
||||
'ratings' => ':totalRatings Avaliações',
|
||||
'more-infomation' => 'Mais Informações',
|
||||
'short-description' => 'Descrições breves',
|
||||
'customer-rating' => 'Avaliação do cliente',
|
||||
'write-your-review' => 'Escreva sua revisão',
|
||||
'view-all-reviews' => 'Ver todos os comentários',
|
||||
'recently-viewed' => 'Produtos vistos recentemente',
|
||||
'be-first-review' => 'Seja o primeiro a escrever um comentário',
|
||||
],
|
||||
|
||||
'shop' => [
|
||||
'gender' => [
|
||||
'female' => 'Fêmea',
|
||||
'male' => 'Masculino',
|
||||
'other' => 'De outros',
|
||||
],
|
||||
'general' => [
|
||||
'view' => 'Visão',
|
||||
'filter' => 'Filtro',
|
||||
'update' => 'Atualizar',
|
||||
'orders' => 'Encomendas',
|
||||
'reviews' => 'Avaliações',
|
||||
'addresses' => 'Endereços',
|
||||
'new-password' => 'Nova senha',
|
||||
'top-brands' => 'Marcas de topo',
|
||||
'downloadables' => 'Produtos para download',
|
||||
'confirm-new-password' => 'Confirme a nova senha',
|
||||
'enter-current-password' => 'Digite sua senha atual',
|
||||
|
||||
'alert' => [
|
||||
'info' => 'Informações',
|
||||
'error' => 'Erro',
|
||||
'success' => 'Sucesso',
|
||||
'warning' => 'Atenção',
|
||||
],
|
||||
],
|
||||
'wishlist' => [
|
||||
'add-wishlist-text' => 'Adicionar produto à lista de desejos',
|
||||
'remove-wishlist-text' => 'Remover produto da lista de desejos',
|
||||
],
|
||||
],
|
||||
|
||||
'responsive' => [
|
||||
'header' => [
|
||||
'greeting' => 'Bem-vinda, :customer !',
|
||||
]
|
||||
],
|
||||
]
|
||||
|
||||
?>
|
||||
|
|
@ -6,13 +6,17 @@
|
|||
{{ __('velocity::app.admin.contents.content.category-slug') }}
|
||||
</label>
|
||||
|
||||
@php
|
||||
$pageTarget = isset($locale) ? (old($locale)['page_link'] ?? (isset($content) ? $content->translate($locale)['page_link'] : '')) : '';
|
||||
@endphp
|
||||
|
||||
<input
|
||||
type="text"
|
||||
id="page_link"
|
||||
class="control"
|
||||
name="page_link"
|
||||
name="{{$locale}}[page_link]"
|
||||
v-validate="'required|max:150'"
|
||||
value="{{ isset($locale) ? (old($locale)['page_link'] ?? $content->translate($locale)['page_link']) : '' }}"
|
||||
value="{{ $pageTarget }}"
|
||||
data-vv-as=""{{ __('velocity::app.admin.contents.content.page-link') }}"" />
|
||||
|
||||
<span class="control-error" v-if="errors.has('page_link')">
|
||||
|
|
@ -26,7 +30,7 @@
|
|||
</label>
|
||||
|
||||
@php
|
||||
$linkTarget = isset($locale) ? (old($locale)['link_target'] ?? $content->translate($locale)['link_target']) : '';
|
||||
$linkTarget = isset($locale) ? (old($locale)['link_target'] ?? (isset($content) ? $content->translate($locale)['link_target'] : '')) : '';
|
||||
@endphp
|
||||
|
||||
<select class="control" id="link_target" name="{{$locale}}[link_target]" value="">
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
@push('scripts')
|
||||
<script type="text/x-template" id="catalog-product-template">
|
||||
<div>
|
||||
<?php $catalogType = old($locale)['catalog_type'] ?? $content->translate($locale)['catalog_type']; ?>
|
||||
<?php $catalogType = old($locale)['catalog_type'] ?? (isset($content) ? $content->translate($locale)['catalog_type'] : ''); ?>
|
||||
|
||||
<div class="control-group" :class="[errors.has('{{$locale}}[catalog_type]') ? 'has-error' : '']">
|
||||
<label for="catalog_type" class="required">
|
||||
|
|
|
|||
|
|
@ -7,6 +7,8 @@
|
|||
@section('content')
|
||||
<div class="content">
|
||||
|
||||
<?php $locale = request()->get('locale') ?: app()->getLocale(); ?>
|
||||
|
||||
<form method="POST" action="" @submit.prevent="onSubmit" enctype="multipart/form-data">
|
||||
|
||||
<div class="page-header">
|
||||
|
|
|
|||
|
|
@ -6,12 +6,6 @@
|
|||
|
||||
@section('content')
|
||||
<div class="content">
|
||||
<div class="page-header">
|
||||
<div class="page-title">
|
||||
<h1>{{ __('velocity::app.admin.meta-data.title') }}</h1>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<form
|
||||
method="POST"
|
||||
@submit.prevent="onSubmit"
|
||||
|
|
@ -25,6 +19,17 @@
|
|||
|
||||
@csrf
|
||||
|
||||
<div class="page-header">
|
||||
<div class="page-title">
|
||||
<h1>{{ __('velocity::app.admin.meta-data.title') }}</h1>
|
||||
</div>
|
||||
<div class="page-action">
|
||||
<button type="submit" class="btn btn-lg btn-primary">
|
||||
{{ __('velocity::app.admin.meta-data.update-meta-data') }}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<accordian :title="'{{ __('admin::app.catalog.attributes.general') }}'" :active="false">
|
||||
<div slot="body">
|
||||
<div class="control-group">
|
||||
|
|
@ -106,28 +111,48 @@
|
|||
<div class="control-group">
|
||||
<label>{{ __('velocity::app.admin.meta-data.advertisement-four') }}</label>
|
||||
|
||||
<image-wrapper
|
||||
:button-label="'{{ __('admin::app.catalog.products.add-image-btn-title') }}'"
|
||||
input-name="images[4]">
|
||||
</image-wrapper>
|
||||
@if(! isset($metaData->advertisement[4]))
|
||||
<image-wrapper
|
||||
:button-label="'{{ __('admin::app.catalog.products.add-image-btn-title') }}'"
|
||||
input-name="images[4]">
|
||||
</image-wrapper>
|
||||
@else
|
||||
<image-wrapper
|
||||
:button-label="'{{ __('admin::app.catalog.products.add-image-btn-title') }}'"
|
||||
input-name="images[4]" :images='@json($metaData->advertisement[4])'>
|
||||
</image-wrapper>
|
||||
@endif
|
||||
</div>
|
||||
|
||||
<div class="control-group">
|
||||
<label>{{ __('velocity::app.admin.meta-data.advertisement-three') }}</label>
|
||||
|
||||
<image-wrapper
|
||||
:button-label="'{{ __('admin::app.catalog.products.add-image-btn-title') }}'"
|
||||
input-name="images[3]">
|
||||
</image-wrapper>
|
||||
@if(! isset($metaData->advertisement[3]))
|
||||
<image-wrapper
|
||||
:button-label="'{{ __('admin::app.catalog.products.add-image-btn-title') }}'"
|
||||
input-name="images[3]">
|
||||
</image-wrapper>
|
||||
@else
|
||||
<image-wrapper
|
||||
:button-label="'{{ __('admin::app.catalog.products.add-image-btn-title') }}'"
|
||||
input-name="images[3]" :images='@json($metaData->advertisement[3])'>
|
||||
</image-wrapper>
|
||||
@endif
|
||||
</div>
|
||||
|
||||
<div class="control-group">
|
||||
<label>{{ __('velocity::app.admin.meta-data.advertisement-two') }}</label>
|
||||
|
||||
<image-wrapper
|
||||
:button-label="'{{ __('admin::app.catalog.products.add-image-btn-title') }}'"
|
||||
input-name="images[2]">
|
||||
</image-wrapper>
|
||||
@if(! isset($metaData->advertisement[2]))
|
||||
<image-wrapper
|
||||
:button-label="'{{ __('admin::app.catalog.products.add-image-btn-title') }}'"
|
||||
input-name="images[2]">
|
||||
</image-wrapper>
|
||||
@else
|
||||
<image-wrapper
|
||||
:button-label="'{{ __('admin::app.catalog.products.add-image-btn-title') }}'"
|
||||
input-name="images[2]" :images='@json($metaData->advertisement[2])'>
|
||||
</image-wrapper>
|
||||
@endif
|
||||
</div>
|
||||
|
||||
{{-- <div class="control-group">
|
||||
|
|
@ -185,10 +210,6 @@
|
|||
</div>
|
||||
</div>
|
||||
</accordian>
|
||||
|
||||
<button class="btn btn-lg btn-primary" style="margin-top: 20px">
|
||||
{{ __('velocity::app.admin.meta-data.update-meta-data') }}
|
||||
</button>
|
||||
</form>
|
||||
</div>
|
||||
@stop
|
||||
|
|
|
|||
|
|
@ -32,11 +32,11 @@
|
|||
type="button"
|
||||
id="mini-cart"
|
||||
@click="toggleMiniCart"
|
||||
class="btn btn-link disable-box-shadow">
|
||||
:class="`btn btn-link disable-box-shadow ${itemCount == 0 ? 'cursor-not-allowed' : ''}`">
|
||||
|
||||
<div class="mini-cart-content">
|
||||
<i class="material-icons-outlined text-down-3">shopping_cart</i>
|
||||
<span class="badge" v-text="itemCount"></span>
|
||||
<span class="badge" v-text="itemCount" v-if="itemCount != 0"></span>
|
||||
<span class="fs18 fw6 cart-text">{{ __('velocity::app.minicart.cart') }}</span>
|
||||
</div>
|
||||
<div class="down-arrow-container">
|
||||
|
|
|
|||
|
|
@ -11,6 +11,15 @@
|
|||
<cart-component></cart-component>
|
||||
@endsection
|
||||
|
||||
@push('css')
|
||||
<style type="text/css">
|
||||
.quantity {
|
||||
width: unset;
|
||||
float: right;
|
||||
}
|
||||
</style>
|
||||
@endpush
|
||||
|
||||
@push('scripts')
|
||||
@include('shop::checkout.cart.coupon')
|
||||
|
||||
|
|
@ -26,7 +35,7 @@
|
|||
{{ __('velocity::app.checkout.items') }}
|
||||
</span>
|
||||
|
||||
<span class="col-2 fw6 fs16 no-padding text-center">
|
||||
<span class="col-2 fw6 fs16 no-padding text-right">
|
||||
{{ __('velocity::app.checkout.qty') }}
|
||||
</span>
|
||||
|
||||
|
|
@ -67,17 +76,27 @@
|
|||
</a>
|
||||
|
||||
<div class="product-details-content col-6">
|
||||
<div class="row item-title">
|
||||
<div class="row item-title no-margin">
|
||||
<a
|
||||
href="{{ route('shop.productOrCategory.index', $product->url_key) }}"
|
||||
title="{{ $product->name }}"
|
||||
class="unset col-12">
|
||||
class="unset col-12 no-padding">
|
||||
|
||||
<span class="fs20 fw6 link-color">{{ $product->name }}</span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="row col-12">
|
||||
@if (isset($item->additional['attributes']))
|
||||
<div class="row col-12 no-padding no-margin">
|
||||
|
||||
@foreach ($item->additional['attributes'] as $attribute)
|
||||
<b>{{ $attribute['attribute_name'] }} : </b>{{ $attribute['option_label'] }}</br>
|
||||
@endforeach
|
||||
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<div class="row col-12 no-padding no-margin">
|
||||
@include ('shop::products.price', ['product' => $product])
|
||||
</div>
|
||||
|
||||
|
|
@ -130,7 +149,7 @@
|
|||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="product-quantity col-3 no-padding">
|
||||
<quantity-changer
|
||||
:control-name="'qty[{{$item->id}}]'"
|
||||
|
|
@ -166,6 +185,16 @@
|
|||
<span class="fs20 fw6 link-color">{{ $product->name }}</span>
|
||||
</a>
|
||||
|
||||
@if (isset($item->additional['attributes']))
|
||||
<div class="row col-12 no-padding no-margin">
|
||||
|
||||
@foreach ($item->additional['attributes'] as $attribute)
|
||||
<b>{{ $attribute['attribute_name'] }} : </b>{{ $attribute['option_label'] }}</br>
|
||||
@endforeach
|
||||
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<div class="col-12 no-padding">
|
||||
@include ('shop::products.price', ['product' => $product])
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -72,7 +72,7 @@
|
|||
<!--Footer-->
|
||||
<div class="modal-footer">
|
||||
<h2 class="col-6 text-left fw6">
|
||||
{{ __('velocity::app.checkout.cart.cart-subtotal') }}
|
||||
{{ __('shop::app.checkout.cart.cart-subtotal') }}
|
||||
</h2>
|
||||
|
||||
{!! view_render_event('bagisto.shop.checkout.cart-mini.subtotal.before', ['cart' => $cart]) !!}
|
||||
|
|
@ -83,16 +83,16 @@
|
|||
</div>
|
||||
|
||||
<div class="modal-footer">
|
||||
<a class="col-4 text-left fs16 link-color remove-decoration" href="{{ route('shop.checkout.cart.index') }}">
|
||||
{{ __('velocity::app.checkout.cart.view-cart') }}
|
||||
<a class="col text-left fs16 link-color remove-decoration" href="{{ route('shop.checkout.cart.index') }}">
|
||||
{{ __('shop::app.minicart.view-cart') }}
|
||||
</a>
|
||||
|
||||
<div class="col-8 text-right no-padding">
|
||||
<div class="col text-right no-padding">
|
||||
<a href="{{ route('shop.checkout.onepage.index') }}">
|
||||
<button
|
||||
type="button"
|
||||
class="theme-btn fs16 fw6">
|
||||
{{ __('velocity::app.checkout.checkout') }}
|
||||
{{ __('shop::app.minicart.checkout') }}
|
||||
</button>
|
||||
</a>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@
|
|||
<script type="text/x-template" id="checkout-template">
|
||||
<div class="container">
|
||||
<div id="checkout" class="checkout-process row offset-lg-1 col-lg-11 col-md-12">
|
||||
|
||||
<h1 class="col-12">{{ __('velocity::app.checkout.checkout') }}</h1>
|
||||
|
||||
<div class="col-lg-7 col-md-12">
|
||||
|
|
@ -65,7 +66,7 @@
|
|||
type="button"
|
||||
class="theme-btn"
|
||||
@click="placeOrder()"
|
||||
:disabled="disable_button"
|
||||
:disabled="!isPlaceOrderEnabled"
|
||||
id="checkout-place-order-button">
|
||||
{{ __('shop::app.checkout.onepage.place-order') }}
|
||||
</button>
|
||||
|
|
@ -119,6 +120,7 @@
|
|||
disable_button: false,
|
||||
reviewComponentKey: 0,
|
||||
summeryComponentKey: 0,
|
||||
isPlaceOrderEnabled: false,
|
||||
new_billing_address: false,
|
||||
showShippingSection: false,
|
||||
showPaymentSection: false,
|
||||
|
|
@ -228,8 +230,14 @@
|
|||
document.body.style.cursor = 'wait';
|
||||
this.savePayment();
|
||||
}
|
||||
|
||||
this.isPlaceOrderEnabled = true;
|
||||
} else {
|
||||
this.isPlaceOrderEnabled = false;
|
||||
}
|
||||
});
|
||||
} else {
|
||||
this.isPlaceOrderEnabled = false;
|
||||
}
|
||||
},
|
||||
|
||||
|
|
@ -372,25 +380,30 @@
|
|||
},
|
||||
|
||||
placeOrder: function() {
|
||||
this.disable_button = true;
|
||||
if (this.isPlaceOrderEnabled) {
|
||||
this.disable_button = false;
|
||||
this.isPlaceOrderEnabled = false;
|
||||
|
||||
this.$http.post("{{ route('shop.checkout.save-order') }}", {'_token': "{{ csrf_token() }}"})
|
||||
.then(function(response) {
|
||||
if (response.data.success) {
|
||||
if (response.data.redirect_url) {
|
||||
window.location.href = response.data.redirect_url;
|
||||
} else {
|
||||
window.location.href = "{{ route('shop.checkout.success') }}";
|
||||
this.$http.post("{{ route('shop.checkout.save-order') }}", {'_token': "{{ csrf_token() }}"})
|
||||
.then(function(response) {
|
||||
if (response.data.success) {
|
||||
if (response.data.redirect_url) {
|
||||
window.location.href = response.data.redirect_url;
|
||||
} else {
|
||||
window.location.href = "{{ route('shop.checkout.success') }}";
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
.catch(error => {
|
||||
})
|
||||
.catch(error => {
|
||||
this.disable_button = true;
|
||||
|
||||
window.flashMessages = [{'type': 'alert-error', 'message': "{{ __('shop::app.common.error') }}" }];
|
||||
|
||||
this.$root.addFlashMessages();
|
||||
})
|
||||
} else {
|
||||
this.disable_button = true;
|
||||
|
||||
window.flashMessages = [{'type': 'alert-error', 'message': "{{ __('shop::app.common.error') }}" }];
|
||||
|
||||
this.$root.addFlashMessages();
|
||||
})
|
||||
}
|
||||
},
|
||||
|
||||
handleErrorResponse: function(response, scope) {
|
||||
|
|
|
|||
|
|
@ -5,19 +5,15 @@
|
|||
<h3 class="fw6 display-inbl">
|
||||
{{ __('shop::app.checkout.onepage.billing-address') }}
|
||||
</h3>
|
||||
|
||||
<a
|
||||
class="theme-btn light pull-right text-up-14"
|
||||
@click="newBillingAddress()">
|
||||
{{ __('shop::app.checkout.onepage.new-address') }}
|
||||
</a>
|
||||
|
||||
<i class="rango-arrow"></i>
|
||||
</div>
|
||||
|
||||
<div slot="body">
|
||||
<div class="address-container row full-width">
|
||||
<div class="col-lg-6 col-md-12 address-holder" v-for='(addresses, index) in this.allAddress'>
|
||||
<div class="address-container row full-width no-margin">
|
||||
<div
|
||||
:key="index"
|
||||
class="col-lg-6 col-md-12 address-holder pl0"
|
||||
v-for='(addresses, index) in this.allAddress'>
|
||||
<div class="card">
|
||||
<div class="card-body row">
|
||||
|
||||
|
|
@ -53,6 +49,19 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-6 col-md-12 address-holder pl0">
|
||||
<div class="card">
|
||||
<div class="card-body add-address-button">
|
||||
<div class="cursor-pointer" @click="newBillingAddress()">
|
||||
<i class="material-icons">
|
||||
add_circle_outline
|
||||
</i>
|
||||
<span>Add new Address</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="message"></div>
|
||||
|
|
@ -95,6 +104,8 @@
|
|||
{{ __('shop::app.checkout.onepage.billing-address') }}
|
||||
</h3>
|
||||
|
||||
<i class="rango-arrow"></i>
|
||||
|
||||
@auth('customer')
|
||||
@if(count(auth('customer')->user()->addresses))
|
||||
<a
|
||||
|
|
@ -105,8 +116,6 @@
|
|||
</a>
|
||||
@endif
|
||||
@endauth
|
||||
|
||||
<i class="rango-arrow"></i>
|
||||
</div>
|
||||
|
||||
<div class="col-12 no-padding" slot="body">
|
||||
|
|
|
|||
|
|
@ -236,6 +236,70 @@
|
|||
@endauth
|
||||
|
||||
@elseif (isset($billing) && $billing)
|
||||
<div :class="`col-12 form-field ${errors.has('address-form.billing[company_name]') ? 'has-error' : ''}`">
|
||||
<label for="billing[company_name]">
|
||||
{{ __('shop::app.checkout.onepage.company-name') }}
|
||||
</label>
|
||||
|
||||
<input
|
||||
type="text"
|
||||
class="control"
|
||||
id="billing[company_name]"
|
||||
name="billing[company_name]"
|
||||
v-model="address.billing.company_name"
|
||||
@change="validateForm('address-form')"
|
||||
data-vv-as=""{{ __('shop::app.checkout.onepage.company-name') }}"" />
|
||||
|
||||
<span class="control-error" v-if="errors.has('address-form.billing[company_name]')">
|
||||
@{{ errors.first('address-form.billing[company_name]') }}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
{{-- for customer login checkout --}}
|
||||
@if (! $isCustomer)
|
||||
@include('shop::checkout.onepage.customer-checkout')
|
||||
@endif
|
||||
|
||||
<div :class="`col-12 form-field ${errors.has('address-form.billing[first_name]') ? 'has-error' : ''}`">
|
||||
<label for="billing[first_name]" class="mandatory">
|
||||
{{ __('shop::app.checkout.onepage.first-name') }}
|
||||
</label>
|
||||
|
||||
<input
|
||||
type="text"
|
||||
class="control"
|
||||
v-validate="'required'"
|
||||
id="billing[first_name]"
|
||||
name="billing[first_name]"
|
||||
v-model="address.billing.first_name"
|
||||
@change="validateForm('address-form')"
|
||||
data-vv-as=""{{ __('shop::app.checkout.onepage.first-name') }}"" />
|
||||
|
||||
<span class="control-error" v-if="errors.has('address-form.billing[first_name]')">
|
||||
@{{ errors.first('address-form.billing[first_name]') }}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div :class="`col-12 form-field ${errors.has('address-form.billing[last_name]') ? 'has-error' : ''}`">
|
||||
<label for="billing[last_name]" class="mandatory">
|
||||
{{ __('shop::app.checkout.onepage.last-name') }}
|
||||
</label>
|
||||
|
||||
<input
|
||||
type="text"
|
||||
v-validate="'required'"
|
||||
class="control"
|
||||
id="billing[last_name]"
|
||||
name="billing[last_name]"
|
||||
v-model="address.billing.last_name"
|
||||
@change="validateForm('address-form')"
|
||||
data-vv-as=""{{ __('shop::app.checkout.onepage.last-name') }}"" />
|
||||
|
||||
<span class="control-error" v-if="errors.has('address-form.billing[last_name]')">
|
||||
@{{ errors.first('address-form.billing[last_name]') }}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div :class="`col-12 form-field ${errors.has('address-form.billing[email]') ? 'has-error' : ''}`">
|
||||
<label for="billing[email]" class="mandatory">
|
||||
{{ __('shop::app.checkout.onepage.email') }}
|
||||
|
|
@ -257,49 +321,6 @@
|
|||
</span>
|
||||
</div>
|
||||
|
||||
{{-- for customer login checkout --}}
|
||||
@if (! $isCustomer)
|
||||
@include('shop::checkout.onepage.customer-checkout')
|
||||
@endif
|
||||
|
||||
<div :class="`col-12 form-field ${errors.has('address-form.billing[first_name]') ? 'has-error' : ''}`">
|
||||
<label for="billing[first_name]" class="mandatory">
|
||||
{{ __('shop::app.checkout.onepage.first-name') }}
|
||||
</label>
|
||||
|
||||
<input
|
||||
type="text"
|
||||
class="control"
|
||||
v-validate="'required'"
|
||||
id="billing[first_name]"
|
||||
name="billing[first_name]"
|
||||
v-model="address.billing.first_name"
|
||||
data-vv-as=""{{ __('shop::app.checkout.onepage.first-name') }}"" />
|
||||
|
||||
<span class="control-error" v-if="errors.has('address-form.billing[first_name]')">
|
||||
@{{ errors.first('address-form.billing[first_name]') }}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div :class="`col-12 form-field ${errors.has('address-form.billing[last_name]') ? 'has-error' : ''}`">
|
||||
<label for="billing[last_name]" class="mandatory">
|
||||
{{ __('shop::app.checkout.onepage.last-name') }}
|
||||
</label>
|
||||
|
||||
<input
|
||||
type="text"
|
||||
v-validate="'required'"
|
||||
class="control"
|
||||
id="billing[last_name]"
|
||||
name="billing[last_name]"
|
||||
v-model="address.billing.last_name"
|
||||
data-vv-as=""{{ __('shop::app.checkout.onepage.last-name') }}"" />
|
||||
|
||||
<span class="control-error" v-if="errors.has('address-form.billing[last_name]')">
|
||||
@{{ errors.first('address-form.billing[last_name]') }}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div :class="`col-12 form-field ${errors.has('address-form.billing[address1][]') ? 'has-error' : ''}`">
|
||||
<label for="billing_address_0" class="mandatory">
|
||||
{{ __('shop::app.checkout.onepage.address1') }}
|
||||
|
|
@ -312,6 +333,7 @@
|
|||
id="billing_address_0"
|
||||
name="billing[address1][]"
|
||||
v-model="address.billing.address1[0]"
|
||||
@change="validateForm('address-form')"
|
||||
data-vv-as=""{{ __('shop::app.checkout.onepage.address1') }}"" />
|
||||
|
||||
<span class="control-error" v-if="errors.has('address-form.billing[address1][]')">
|
||||
|
|
@ -347,6 +369,7 @@
|
|||
name="billing[city]"
|
||||
v-validate="'required'"
|
||||
v-model="address.billing.city"
|
||||
@change="validateForm('address-form')"
|
||||
data-vv-as=""{{ __('shop::app.checkout.onepage.city') }}"" />
|
||||
|
||||
<span class="control-error" v-if="errors.has('address-form.billing[city]')">
|
||||
|
|
@ -395,6 +418,7 @@
|
|||
v-validate="'required'"
|
||||
v-if="!haveStates('billing')"
|
||||
v-model="address.billing.state"
|
||||
@change="validateForm('address-form')"
|
||||
data-vv-as=""{{ __('shop::app.checkout.onepage.state') }}"" />
|
||||
|
||||
<select
|
||||
|
|
@ -434,6 +458,7 @@
|
|||
v-validate="'required'"
|
||||
name="billing[postcode]"
|
||||
v-model="address.billing.postcode"
|
||||
@change="validateForm('address-form')"
|
||||
data-vv-as=""{{ __('shop::app.checkout.onepage.postcode') }}"" />
|
||||
|
||||
<span class="control-error" v-if="errors.has('address-form.billing[postcode]')">
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
<script type="text/x-template" id="country-state-template">
|
||||
<div>
|
||||
<div class="control-group" :class="[errors.has('country') ? 'has-error' : '']">
|
||||
<label for="country" class="required">
|
||||
<label for="country" class="mandatory">
|
||||
{{ __('shop::app.customer.account.address.create.country') }}
|
||||
</label>
|
||||
|
||||
|
|
@ -26,20 +26,40 @@
|
|||
</div>
|
||||
|
||||
<div class="control-group" :class="[errors.has('state') ? 'has-error' : '']">
|
||||
<label for="state" class="required">
|
||||
<label for="state" class="mandatory">
|
||||
{{ __('shop::app.customer.account.address.create.state') }}
|
||||
</label>
|
||||
|
||||
<input type="text" v-validate="'required'" class="control" id="state" name="state" v-model="state" v-if="!haveStates()" data-vv-as=""{{ __('shop::app.customer.account.address.create.state') }}""/>
|
||||
<select v-validate="'required'" class="control" id="state" name="state" v-model="state" v-if="haveStates()" data-vv-as=""{{ __('shop::app.customer.account.address.create.state') }}"">
|
||||
<input
|
||||
id="state"
|
||||
type="text"
|
||||
name="state"
|
||||
v-model="state"
|
||||
class="control"
|
||||
v-if="!haveStates()"
|
||||
v-validate="'required'"
|
||||
data-vv-as=""{{ __('shop::app.customer.account.address.create.state') }}"" />
|
||||
|
||||
<option value="">{{ __('shop::app.customer.account.address.create.select-state') }}</option>
|
||||
<template v-if="haveStates()">
|
||||
<select
|
||||
id="state"
|
||||
name="state"
|
||||
v-model="state"
|
||||
class="styled-select"
|
||||
v-validate="'required'"
|
||||
data-vv-as=""{{ __('shop::app.customer.account.address.create.state') }}"">
|
||||
|
||||
<option v-for='(state, index) in countryStates[country]' :value="state.code">
|
||||
@{{ state.default_name }}
|
||||
</option>
|
||||
<option value="">{{ __('shop::app.customer.account.address.create.select-state') }}</option>
|
||||
|
||||
</select>
|
||||
<option v-for='(state, index) in countryStates[country]' :value="state.code">
|
||||
@{{ state.default_name }}
|
||||
</option>
|
||||
</select>
|
||||
|
||||
<div class="select-icon-container">
|
||||
<span class="select-icon rango-arrow-down"></span>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<span class="control-error" v-if="errors.has('state')">
|
||||
@{{ errors.first('state') }}
|
||||
|
|
|
|||
|
|
@ -27,27 +27,31 @@
|
|||
</div>
|
||||
|
||||
<div class="control-group" :class="[errors.has('first_name') ? 'has-error' : '']">
|
||||
<label for="first_name" class="required">{{ __('shop::app.customer.account.address.create.first_name') }}</label>
|
||||
<label for="first_name" class="mandatory">{{ __('shop::app.customer.account.address.create.first_name') }}</label>
|
||||
<input type="text" class="control" name="first_name" value="{{ old('first_name') }}" v-validate="'required'" data-vv-as=""{{ __('shop::app.customer.account.address.create.first_name') }}"">
|
||||
<span class="control-error" v-if="errors.has('first_name')">@{{ errors.first('first_name') }}</span>
|
||||
</div>
|
||||
|
||||
<div class="control-group" :class="[errors.has('last_name') ? 'has-error' : '']">
|
||||
<label for="last_name" class="required">{{ __('shop::app.customer.account.address.create.last_name') }}</label>
|
||||
<label for="last_name" class="mandatory">{{ __('shop::app.customer.account.address.create.last_name') }}</label>
|
||||
<input type="text" class="control" name="last_name" value="{{ old('last_name') }}" v-validate="'required'" data-vv-as=""{{ __('shop::app.customer.account.address.create.last_name') }}"">
|
||||
<span class="control-error" v-if="errors.has('last_name')">@{{ errors.first('last_name') }}</span>
|
||||
</div>
|
||||
|
||||
<div class="control-group" :class="[errors.has('vat_id') ? 'has-error' : '']">
|
||||
<label for="vat_id" class="required">{{ __('shop::app.customer.account.address.create.vat_id') }}</label>
|
||||
<label for="vat_id">{{ __('shop::app.customer.account.address.create.vat_id') }}
|
||||
<span class="help-note">{{ __('shop::app.customer.account.address.create.vat_help_note') }}</span>
|
||||
</label>
|
||||
<input type="text" class="control" name="vat_id" value="{{ old('vat_id') }}" v-validate="" data-vv-as=""{{ __('shop::app.customer.account.address.create.vat_id') }}"">
|
||||
<span class="control-error" v-if="errors.has('vat_id')">@{{ errors.first('vat_id') }}</span>
|
||||
</div>
|
||||
|
||||
<?php $addresses = explode(PHP_EOL, (old('address1') ?? '')); ?>
|
||||
@php
|
||||
$addresses = explode(PHP_EOL, (old('address1') ?? ''));
|
||||
@endphp
|
||||
|
||||
<div class="control-group" :class="[errors.has('address1[]') ? 'has-error' : '']">
|
||||
<label for="address_0" class="required">{{ __('shop::app.customer.account.address.create.street-address') }}</label>
|
||||
<label for="address_0" class="mandatory">{{ __('shop::app.customer.account.address.create.street-address') }}</label>
|
||||
<input type="text" class="control" name="address1[]" id="address_0" value="{{ $addresses[0] ?: '' }}" v-validate="'required'" data-vv-as=""{{ __('shop::app.customer.account.address.create.street-address') }}"">
|
||||
<span class="control-error" v-if="errors.has('address1[]')">@{{ errors.first('address1[]') }}</span>
|
||||
</div>
|
||||
|
|
@ -63,19 +67,19 @@
|
|||
@include ('shop::customers.account.address.country-state', ['countryCode' => old('country'), 'stateCode' => old('state')])
|
||||
|
||||
<div class="control-group" :class="[errors.has('city') ? 'has-error' : '']">
|
||||
<label for="city" class="required">{{ __('shop::app.customer.account.address.create.city') }}</label>
|
||||
<label for="city" class="mandatory">{{ __('shop::app.customer.account.address.create.city') }}</label>
|
||||
<input type="text" class="control" name="city" value="{{ old('city') }}" v-validate="'required'" data-vv-as=""{{ __('shop::app.customer.account.address.create.city') }}"">
|
||||
<span class="control-error" v-if="errors.has('city')">@{{ errors.first('city') }}</span>
|
||||
</div>
|
||||
|
||||
<div class="control-group" :class="[errors.has('postcode') ? 'has-error' : '']">
|
||||
<label for="postcode" class="required">{{ __('shop::app.customer.account.address.create.postcode') }}</label>
|
||||
<label for="postcode" class="mandatory">{{ __('shop::app.customer.account.address.create.postcode') }}</label>
|
||||
<input type="text" class="control" name="postcode" value="{{ old('postcode') }}" v-validate="'required'" data-vv-as=""{{ __('shop::app.customer.account.address.create.postcode') }}"">
|
||||
<span class="control-error" v-if="errors.has('postcode')">@{{ errors.first('postcode') }}</span>
|
||||
</div>
|
||||
|
||||
<div class="control-group" :class="[errors.has('phone') ? 'has-error' : '']">
|
||||
<label for="phone" class="required">{{ __('shop::app.customer.account.address.create.phone') }}</label>
|
||||
<label for="phone" class="mandatory">{{ __('shop::app.customer.account.address.create.phone') }}</label>
|
||||
<input type="text" class="control" name="phone" value="{{ old('phone') }}" v-validate="'required'" data-vv-as=""{{ __('shop::app.customer.account.address.create.phone') }}"">
|
||||
<span class="control-error" v-if="errors.has('phone')">@{{ errors.first('phone') }}</span>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -43,7 +43,9 @@
|
|||
</div>
|
||||
|
||||
<div class="control-group" :class="[errors.has('vat_id') ? 'has-error' : '']">
|
||||
<label for="vat_id" class="required">{{ __('shop::app.customer.account.address.create.vat_id') }}</label>
|
||||
<label for="vat_id" class="required">{{ __('shop::app.customer.account.address.create.vat_id') }}
|
||||
<span class="help-note">{{ __('shop::app.customer.account.address.create.vat_help_note') }}</span>
|
||||
</label>
|
||||
<input type="text" class="control" name="vat_id" value="{{ old('vat_id') ?? $address->vat_id }}" v-validate="" data-vv-as=""{{ __('shop::app.customer.account.address.create.vat_id') }}"">
|
||||
<span class="control-error" v-if="errors.has('vat_id')">@{{ errors.first('vat_id') }}</span>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -5,6 +5,12 @@
|
|||
@endsection
|
||||
|
||||
@section('page-detail-wrapper')
|
||||
@if ($addresses->isEmpty())
|
||||
<a href="{{ route('customer.address.create') }}" class="theme-btn light unset pull-right">
|
||||
{{ __('shop::app.customer.account.address.index.add') }}
|
||||
</a>
|
||||
@endif
|
||||
|
||||
<div class="account-head">
|
||||
<span class="back-icon"><a href="{{ route('customer.account.index') }}"><i class="icon icon-menu-back"></i></a></span>
|
||||
<span class="account-heading">{{ __('shop::app.customer.account.address.index.title') }}</span>
|
||||
|
|
@ -25,9 +31,6 @@
|
|||
<div class="account-table-content">
|
||||
@if ($addresses->isEmpty())
|
||||
<div>{{ __('shop::app.customer.account.address.index.empty') }}</div>
|
||||
<a href="{{ route('customer.address.create') }}" class="theme-btn light unset pull-right">
|
||||
{{ __('shop::app.customer.account.address.index.add') }}
|
||||
</a>
|
||||
@else
|
||||
<div class="address-holder col-12 no-padding">
|
||||
@foreach ($addresses as $address)
|
||||
|
|
|
|||
|
|
@ -9,6 +9,10 @@
|
|||
.account-content .account-layout .account-head {
|
||||
margin-bottom: 0px;
|
||||
}
|
||||
.sale-summary .dash-icon {
|
||||
margin-right: 30px;
|
||||
float: right;
|
||||
}
|
||||
</style>
|
||||
@endpush
|
||||
|
||||
|
|
@ -137,46 +141,62 @@
|
|||
<table class="sale-summary">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>{{ __('shop::app.customer.account.order.view.subtotal') }}</td>
|
||||
<td>{{ __('shop::app.customer.account.order.view.subtotal') }}
|
||||
<span class="dash-icon">-</span>
|
||||
</td>
|
||||
<td>{{ core()->formatPrice($order->sub_total, $order->order_currency_code) }}</td>
|
||||
</tr>
|
||||
|
||||
@if ($order->haveStockableItems())
|
||||
<tr>
|
||||
<td>{{ __('shop::app.customer.account.order.view.shipping-handling') }}</td>
|
||||
<td>{{ __('shop::app.customer.account.order.view.shipping-handling') }}
|
||||
<span class="dash-icon">-</span>
|
||||
</td>
|
||||
<td>{{ core()->formatPrice($order->shipping_amount, $order->order_currency_code) }}</td>
|
||||
</tr>
|
||||
@endif
|
||||
|
||||
@if ($order->base_discount_amount > 0)
|
||||
<tr>
|
||||
<td>{{ __('shop::app.customer.account.order.view.discount') }}</td>
|
||||
<td>{{ __('shop::app.customer.account.order.view.discount') }}
|
||||
<span class="dash-icon">-</span>
|
||||
</td>
|
||||
<td>{{ core()->formatPrice($order->discount_amount, $order->order_currency_code) }}</td>
|
||||
</tr>
|
||||
@endif
|
||||
|
||||
<tr class="border-bottom">
|
||||
<td>{{ __('shop::app.customer.account.order.view.tax') }}</td>
|
||||
<td>{{ __('shop::app.customer.account.order.view.tax') }}
|
||||
<span class="dash-icon">-</span>
|
||||
</td>
|
||||
<td>{{ core()->formatPrice($order->tax_amount, $order->order_currency_code) }}</td>
|
||||
</tr>
|
||||
|
||||
<tr class="fw6">
|
||||
<td>{{ __('shop::app.customer.account.order.view.grand-total') }}</td>
|
||||
<td>{{ __('shop::app.customer.account.order.view.grand-total') }}
|
||||
<span class="dash-icon">-</span>
|
||||
</td>
|
||||
<td>{{ core()->formatPrice($order->grand_total, $order->order_currency_code) }}</td>
|
||||
</tr>
|
||||
|
||||
<tr class="fw6">
|
||||
<td>{{ __('shop::app.customer.account.order.view.total-paid') }}</td>
|
||||
<td>{{ __('shop::app.customer.account.order.view.total-paid') }}
|
||||
<span class="dash-icon">-</span>
|
||||
</td>
|
||||
<td>{{ core()->formatPrice($order->grand_total_invoiced, $order->order_currency_code) }}</td>
|
||||
</tr>
|
||||
|
||||
<tr class="fw6">
|
||||
<td>{{ __('shop::app.customer.account.order.view.total-refunded') }}</td>
|
||||
<td>{{ __('shop::app.customer.account.order.view.total-refunded') }}
|
||||
<span class="dash-icon">-</span>
|
||||
</td>
|
||||
<td>{{ core()->formatPrice($order->grand_total_refunded, $order->order_currency_code) }}</td>
|
||||
</tr>
|
||||
|
||||
<tr class="fw6">
|
||||
<td>{{ __('shop::app.customer.account.order.view.total-due') }}</td>
|
||||
<td>{{ __('shop::app.customer.account.order.view.total-due') }}
|
||||
<span class="dash-icon">-</span>
|
||||
</td>
|
||||
<td>{{ core()->formatPrice($order->total_due, $order->order_currency_code) }}</td>
|
||||
</tr>
|
||||
<tbody>
|
||||
|
|
@ -255,34 +275,39 @@
|
|||
<div class="totals">
|
||||
<table class="sale-summary">
|
||||
<tr>
|
||||
<td>{{ __('shop::app.customer.account.order.view.subtotal') }}</td>
|
||||
<td>-</td>
|
||||
<td>{{ __('shop::app.customer.account.order.view.subtotal') }}
|
||||
<span class="dash-icon">-</span>
|
||||
</td>
|
||||
<td>{{ core()->formatPrice($invoice->sub_total, $order->order_currency_code) }}</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>{{ __('shop::app.customer.account.order.view.shipping-handling') }}</td>
|
||||
<td>-</td>
|
||||
<td>{{ __('shop::app.customer.account.order.view.shipping-handling') }}
|
||||
<span class="dash-icon">-</span>
|
||||
</td>
|
||||
<td>{{ core()->formatPrice($invoice->shipping_amount, $order->order_currency_code) }}</td>
|
||||
</tr>
|
||||
|
||||
@if ($order->base_discount_amount > 0)
|
||||
<tr>
|
||||
<td>{{ __('shop::app.customer.account.order.view.discount') }}</td>
|
||||
<td>-</td>
|
||||
<td>{{ __('shop::app.customer.account.order.view.discount') }}
|
||||
<span class="dash-icon">-</span>
|
||||
</td>
|
||||
<td>{{ core()->formatPrice($order->discount_amount, $order->order_currency_code) }}</td>
|
||||
</tr>
|
||||
@endif
|
||||
|
||||
<tr>
|
||||
<td>{{ __('shop::app.customer.account.order.view.tax') }}</td>
|
||||
<td>-</td>
|
||||
<td>{{ __('shop::app.customer.account.order.view.tax') }}
|
||||
<span class="dash-icon">-</span>
|
||||
</td>
|
||||
<td>{{ core()->formatPrice($invoice->tax_amount, $order->order_currency_code) }}</td>
|
||||
</tr>
|
||||
|
||||
<tr class="fw6">
|
||||
<td>{{ __('shop::app.customer.account.order.view.grand-total') }}</td>
|
||||
<td>-</td>
|
||||
<td>{{ __('shop::app.customer.account.order.view.grand-total') }}
|
||||
<span class="dash-icon">-</span>
|
||||
</td>
|
||||
<td>{{ core()->formatPrice($invoice->grand_total, $order->order_currency_code) }}</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
@ -391,50 +416,57 @@
|
|||
<div class="totals">
|
||||
<table class="sale-summary">
|
||||
<tr>
|
||||
<td>{{ __('shop::app.customer.account.order.view.subtotal') }}</td>
|
||||
<td>-</td>
|
||||
<td>{{ __('shop::app.customer.account.order.view.subtotal') }}
|
||||
<span class="dash-icon">-</span>
|
||||
</td>
|
||||
<td>{{ core()->formatPrice($refund->sub_total, $order->order_currency_code) }}</td>
|
||||
</tr>
|
||||
|
||||
@if ($refund->shipping_amount > 0)
|
||||
<tr>
|
||||
<td>{{ __('shop::app.customer.account.order.view.shipping-handling') }}</td>
|
||||
<td>-</td>
|
||||
<td>{{ __('shop::app.customer.account.order.view.shipping-handling') }}
|
||||
<span class="dash-icon">-</span>
|
||||
</td>
|
||||
<td>{{ core()->formatPrice($refund->shipping_amount, $order->order_currency_code) }}</td>
|
||||
</tr>
|
||||
@endif
|
||||
|
||||
@if ($refund->discount_amount > 0)
|
||||
<tr>
|
||||
<td>{{ __('shop::app.customer.account.order.view.discount') }}</td>
|
||||
<td>-</td>
|
||||
<td>{{ __('shop::app.customer.account.order.view.discount') }}
|
||||
<span class="dash-icon">-</span>
|
||||
</td>
|
||||
<td>{{ core()->formatPrice($order->discount_amount, $order->order_currency_code) }}</td>
|
||||
</tr>
|
||||
@endif
|
||||
|
||||
@if ($refund->tax_amount > 0)
|
||||
<tr>
|
||||
<td>{{ __('shop::app.customer.account.order.view.tax') }}</td>
|
||||
<td>-</td>
|
||||
<td>{{ __('shop::app.customer.account.order.view.tax') }}
|
||||
<span class="dash-icon">-</span>
|
||||
</td>
|
||||
<td>{{ core()->formatPrice($refund->tax_amount, $order->order_currency_code) }}</td>
|
||||
</tr>
|
||||
@endif
|
||||
|
||||
<tr>
|
||||
<td>{{ __('shop::app.customer.account.order.view.adjustment-refund') }}</td>
|
||||
<td>-</td>
|
||||
<td>{{ __('shop::app.customer.account.order.view.adjustment-refund') }}
|
||||
<span class="dash-icon">-</span>
|
||||
</td>
|
||||
<td>{{ core()->formatPrice($refund->adjustment_refund, $order->order_currency_code) }}</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>{{ __('shop::app.customer.account.order.view.adjustment-fee') }}</td>
|
||||
<td>-</td>
|
||||
<td>{{ __('shop::app.customer.account.order.view.adjustment-fee') }}
|
||||
<span class="dash-icon">-</span>
|
||||
</td>
|
||||
<td>{{ core()->formatPrice($refund->adjustment_fee, $order->order_currency_code) }}</td>
|
||||
</tr>
|
||||
|
||||
<tr class="fw6">
|
||||
<td>{{ __('shop::app.customer.account.order.view.grand-total') }}</td>
|
||||
<td>-</td>
|
||||
<td>{{ __('shop::app.customer.account.order.view.grand-total') }}
|
||||
<span class="dash-icon">-</span>
|
||||
</td>
|
||||
<td>{{ core()->formatPrice($refund->grand_total, $order->order_currency_code) }}</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
|||
|
|
@ -9,7 +9,23 @@
|
|||
|
||||
@foreach ($menu->items as $menuItem)
|
||||
<ul type="none" class="navigation">
|
||||
@foreach ($menuItem['children'] as $index => $subMenuItem)
|
||||
{{-- rearrange menu items --}}
|
||||
@php
|
||||
$subMenuCollection = [];
|
||||
|
||||
try {
|
||||
$subMenuCollection['orders'] = $menuItem['children']['orders'];
|
||||
$subMenuCollection['downloadables'] = $menuItem['children']['downloadables'];
|
||||
$subMenuCollection['wishlist'] = $menuItem['children']['wishlist'];
|
||||
$subMenuCollection['reviews'] = $menuItem['children']['reviews'];
|
||||
$subMenuCollection['address'] = $menuItem['children']['address'];
|
||||
$subMenuCollection['profile'] = $menuItem['children']['profile'];
|
||||
} catch (\Exception $exception) {
|
||||
$subMenuCollection = $menuItem['children'];
|
||||
}
|
||||
@endphp
|
||||
|
||||
@foreach ($subMenuCollection as $index => $subMenuItem)
|
||||
<li class="{{ $menu->getActive($subMenuItem) }}">
|
||||
<a class="unset fw6 full-width" href="{{ $subMenuItem['url'] }}">
|
||||
<i class="icon {{ $index }} text-down-3"></i>
|
||||
|
|
|
|||
|
|
@ -15,166 +15,166 @@
|
|||
<h1 class="account-heading">
|
||||
{{ __('shop::app.customer.account.profile.index.title') }}
|
||||
</h1>
|
||||
|
||||
<div class="horizontal-rule"></div>
|
||||
</div>
|
||||
|
||||
{!! view_render_event('bagisto.shop.customers.account.profile.view.before', ['customer' => $customer]) !!}
|
||||
|
||||
<form
|
||||
method="POST"
|
||||
@submit.prevent="onSubmit"
|
||||
class="account-table-content"
|
||||
action="{{ route('customer.profile.edit') }}">
|
||||
<div class="profile-update-form">
|
||||
<form
|
||||
method="POST"
|
||||
@submit.prevent="onSubmit"
|
||||
class="account-table-content"
|
||||
action="{{ route('customer.profile.edit') }}">
|
||||
|
||||
@csrf
|
||||
@csrf
|
||||
|
||||
<div class="row">
|
||||
<label class="col-12 mandatory">
|
||||
{{ __('shop::app.customer.account.profile.fname') }}
|
||||
</label>
|
||||
<div :class="`row ${errors.has('first_name') ? 'has-error' : ''}`">
|
||||
<label class="col-12 mandatory">
|
||||
{{ __('shop::app.customer.account.profile.fname') }}
|
||||
</label>
|
||||
|
||||
<div class="col-12">
|
||||
<input value="{{ $customer->first_name }}" name="first_name" type="text" v-validate="'required'" />
|
||||
<span class="control-error" v-if="errors.has('first_name')">@{{ errors.first('first_name') }}</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<label class="col-12">
|
||||
{{ __('shop::app.customer.account.profile.lname') }}
|
||||
</label>
|
||||
|
||||
<div class="col-12">
|
||||
<input value="{{ $customer->last_name }}" name="last_name" type="text" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<label class="col-12 mandatory">
|
||||
{{ __('shop::app.customer.account.profile.gender') }}
|
||||
</label>
|
||||
|
||||
<div class="col-12">
|
||||
<select
|
||||
name="gender"
|
||||
class="control styled-select"
|
||||
v-validate="'required'"
|
||||
data-vv-as=""{{ __('shop::app.customer.account.profile.gender') }}"">
|
||||
|
||||
<option value="" @if ($customer->gender == "") selected @endif></option>
|
||||
<option
|
||||
value="Other"
|
||||
@if ($customer->gender == "Other")
|
||||
selected="selected"
|
||||
@endif>
|
||||
{{ __('velocity::app.shop.gender.other') }}
|
||||
</option>
|
||||
|
||||
<option
|
||||
value="Male"
|
||||
@if ($customer->gender == "Male")
|
||||
selected="selected"
|
||||
@endif>
|
||||
{{ __('velocity::app.shop.gender.male') }}
|
||||
</option>
|
||||
|
||||
<option
|
||||
value="Female"
|
||||
@if ($customer->gender == "Female")
|
||||
selected="selected"
|
||||
@endif>
|
||||
{{ __('velocity::app.shop.gender.female') }}
|
||||
</option>
|
||||
</select>
|
||||
|
||||
<div class="select-icon-container">
|
||||
<span class="select-icon rango-arrow-down"></span>
|
||||
<div class="col-12">
|
||||
<input value="{{ $customer->first_name }}" name="first_name" type="text" v-validate="'required'" />
|
||||
<span class="control-error" v-if="errors.has('first_name')">@{{ errors.first('first_name') }}</span>
|
||||
</div>
|
||||
|
||||
<span class="control-error" v-if="errors.has('gender')">@{{ errors.first('gender') }}</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div :class="`row ${errors.has('date_of_birth') ? 'has-error' : ''}`">
|
||||
<label class="col-12">
|
||||
{{ __('shop::app.customer.account.profile.dob') }}
|
||||
</label>
|
||||
<div class="row">
|
||||
<label class="col-12">
|
||||
{{ __('shop::app.customer.account.profile.lname') }}
|
||||
</label>
|
||||
|
||||
<div class="col-12">
|
||||
<input
|
||||
type="date"
|
||||
name="date_of_birth"
|
||||
placeholder="dd/mm/yyyy"
|
||||
value="{{ old('date_of_birth') ?? $customer->date_of_birth }}"
|
||||
v-validate="" data-vv-as=""{{ __('shop::app.customer.account.profile.dob') }}"" />
|
||||
<div class="col-12">
|
||||
<input value="{{ $customer->last_name }}" name="last_name" type="text" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<span class="control-error" v-if="errors.has('date_of_birth')">
|
||||
@{{ errors.first('date_of_birth') }}
|
||||
<div :class="`row ${errors.has('gender') ? 'has-error' : ''}`">
|
||||
<label class="col-12 mandatory">
|
||||
{{ __('shop::app.customer.account.profile.gender') }}
|
||||
</label>
|
||||
|
||||
<div class="col-12">
|
||||
<select
|
||||
name="gender"
|
||||
v-validate="'required'"
|
||||
class="control styled-select"
|
||||
data-vv-as=""{{ __('shop::app.customer.account.profile.gender') }}"">
|
||||
|
||||
<option value="" @if ($customer->gender == "") selected @endif></option>
|
||||
<option
|
||||
value="Other"
|
||||
@if ($customer->gender == "Other")
|
||||
selected="selected"
|
||||
@endif>
|
||||
{{ __('velocity::app.shop.gender.other') }}
|
||||
</option>
|
||||
|
||||
<option
|
||||
value="Male"
|
||||
@if ($customer->gender == "Male")
|
||||
selected="selected"
|
||||
@endif>
|
||||
{{ __('velocity::app.shop.gender.male') }}
|
||||
</option>
|
||||
|
||||
<option
|
||||
value="Female"
|
||||
@if ($customer->gender == "Female")
|
||||
selected="selected"
|
||||
@endif>
|
||||
{{ __('velocity::app.shop.gender.female') }}
|
||||
</option>
|
||||
</select>
|
||||
|
||||
<div class="select-icon-container">
|
||||
<span class="select-icon rango-arrow-down"></span>
|
||||
</div>
|
||||
|
||||
<span class="control-error" v-if="errors.has('gender')">@{{ errors.first('gender') }}</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div :class="`row ${errors.has('date_of_birth') ? 'has-error' : ''}`">
|
||||
<label class="col-12">
|
||||
{{ __('shop::app.customer.account.profile.dob') }}
|
||||
</label>
|
||||
|
||||
<div class="col-12">
|
||||
<input
|
||||
type="date"
|
||||
name="date_of_birth"
|
||||
placeholder="dd/mm/yyyy"
|
||||
value="{{ old('date_of_birth') ?? $customer->date_of_birth }}"
|
||||
v-validate="" data-vv-as=""{{ __('shop::app.customer.account.profile.dob') }}"" />
|
||||
|
||||
<span class="control-error" v-if="errors.has('date_of_birth')">
|
||||
@{{ errors.first('date_of_birth') }}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<label class="col-12 mandatory">
|
||||
{{ __('shop::app.customer.account.profile.email') }}
|
||||
</label>
|
||||
|
||||
<div class="col-12">
|
||||
<input value="{{ $customer->email }}" name="email" type="text" v-validate="'required'" />
|
||||
<span class="control-error" v-if="errors.has('email')">@{{ errors.first('email') }}</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<label class="col-12">
|
||||
{{ __('velocity::app.shop.general.enter-current-password') }}
|
||||
</label>
|
||||
|
||||
<div :class="`col-12 ${errors.has('oldpassword') ? 'has-error' : ''}`">
|
||||
<input value="" name="oldpassword" type="password" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<label class="col-12">
|
||||
{{ __('velocity::app.shop.general.new-password') }}
|
||||
</label>
|
||||
|
||||
<div :class="`col-12 ${errors.has('password') ? 'has-error' : ''}`">
|
||||
<input
|
||||
value=""
|
||||
name="password"
|
||||
type="password"
|
||||
v-validate="'min:6|max:18'" />
|
||||
|
||||
<span class="control-error" v-if="errors.has('password')">
|
||||
@{{ errors.first('password') }}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<label class="col-12 mandatory">
|
||||
{{ __('shop::app.customer.account.profile.email') }}
|
||||
</label>
|
||||
<div class="row">
|
||||
<label class="col-12">
|
||||
{{ __('velocity::app.shop.general.confirm-new-password') }}
|
||||
</label>
|
||||
|
||||
<div class="col-12">
|
||||
<input value="{{ $customer->email }}" name="email" type="text" v-validate="'required'" />
|
||||
<span class="control-error" v-if="errors.has('email')">@{{ errors.first('email') }}</span>
|
||||
<div :class="`col-12 ${errors.has('password_confirmation') ? 'has-error' : ''}`">
|
||||
<input value="" name="password_confirmation" type="password"
|
||||
v-validate="'min:6|confirmed:password'" data-vv-as="confirm password" />
|
||||
|
||||
<span class="control-error" v-if="errors.has('password_confirmation')">
|
||||
@{{ errors.first('password_confirmation') }}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<label class="col-12">
|
||||
{{ __('velocity::app.shop.general.enter-current-password') }}
|
||||
</label>
|
||||
|
||||
<div :class="`col-12 ${errors.has('oldpassword') ? 'has-error' : ''}`">
|
||||
<input value="" name="oldpassword" type="password" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<label class="col-12">
|
||||
{{ __('velocity::app.shop.general.new-password') }}
|
||||
</label>
|
||||
|
||||
<div :class="`col-12 ${errors.has('password') ? 'has-error' : ''}`">
|
||||
<input
|
||||
value=""
|
||||
name="password"
|
||||
type="password"
|
||||
v-validate="'min:6|max:18'" />
|
||||
|
||||
<span class="control-error" v-if="errors.has('password')">
|
||||
@{{ errors.first('password') }}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<label class="col-12">
|
||||
{{ __('velocity::app.shop.general.confirm-new-password') }}
|
||||
</label>
|
||||
|
||||
<div :class="`col-12 ${errors.has('password_confirmation') ? 'has-error' : ''}`">
|
||||
<input value="" name="password_confirmation" type="password"
|
||||
v-validate="'min:6|confirmed:password'" data-vv-as="confirm password" />
|
||||
|
||||
<span class="control-error" v-if="errors.has('password_confirmation')">
|
||||
@{{ errors.first('password_confirmation') }}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<button
|
||||
type="submit"
|
||||
class="theme-btn mb20">
|
||||
{{ __('velocity::app.shop.general.update') }}
|
||||
</button>
|
||||
</form>
|
||||
<button
|
||||
type="submit"
|
||||
class="theme-btn mb20">
|
||||
{{ __('velocity::app.shop.general.update') }}
|
||||
</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
{!! view_render_event('bagisto.shop.customers.account.profile.view.after', ['customer' => $customer]) !!}
|
||||
@endsection
|
||||
|
|
@ -6,175 +6,173 @@
|
|||
|
||||
@section('page-detail-wrapper')
|
||||
<div class="account-head">
|
||||
<span class="back-icon">
|
||||
<a href="{{ route('customer.account.index') }}">
|
||||
<i class="icon icon-menu-back"></i>
|
||||
</a>
|
||||
</span>
|
||||
<a href="{{ route('customer.session.destroy') }}" class="theme-btn light unset pull-right">
|
||||
{{ __('shop::app.header.logout') }}
|
||||
</a>
|
||||
|
||||
<h1 class="account-heading">
|
||||
{{ __('shop::app.customer.account.profile.index.title') }}
|
||||
</h1>
|
||||
|
||||
<div class="horizontal-rule"></div>
|
||||
</div>
|
||||
|
||||
{!! view_render_event('bagisto.shop.customers.account.profile.view.before', ['customer' => $customer]) !!}
|
||||
|
||||
<form
|
||||
method="POST"
|
||||
@submit.prevent="onSubmit"
|
||||
class="account-table-content"
|
||||
action="{{ route('customer.profile.edit') }}">
|
||||
<div class="profile-update-form">
|
||||
<form
|
||||
method="POST"
|
||||
@submit.prevent="onSubmit"
|
||||
class="account-table-content"
|
||||
action="{{ route('customer.profile.edit') }}">
|
||||
|
||||
@csrf
|
||||
@csrf
|
||||
|
||||
<div class="row">
|
||||
<label class="col-12 mandatory">
|
||||
{{ __('shop::app.customer.account.profile.fname') }}
|
||||
</label>
|
||||
<div :class="`row ${errors.has('first_name') ? 'has-error' : ''}`">
|
||||
<label class="col-12 mandatory">
|
||||
{{ __('shop::app.customer.account.profile.fname') }}
|
||||
</label>
|
||||
|
||||
<div class="col-12">
|
||||
<input value="{{ $customer->first_name }}" name="first_name" type="text" v-validate="'required'" />
|
||||
<span class="control-error" v-if="errors.has('first_name')">@{{ errors.first('first_name') }}</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<label class="col-12">
|
||||
{{ __('shop::app.customer.account.profile.lname') }}
|
||||
</label>
|
||||
|
||||
<div class="col-12">
|
||||
<input value="{{ $customer->last_name }}" name="last_name" type="text" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<label class="col-12 mandatory">
|
||||
{{ __('shop::app.customer.account.profile.gender') }}
|
||||
</label>
|
||||
|
||||
<div class="col-12">
|
||||
<select
|
||||
name="gender"
|
||||
class="control styled-select"
|
||||
v-validate="'required'"
|
||||
data-vv-as=""{{ __('shop::app.customer.account.profile.gender') }}"">
|
||||
|
||||
<option value="" @if ($customer->gender == "") selected @endif></option>
|
||||
<option
|
||||
value="Other"
|
||||
@if ($customer->gender == "Other")
|
||||
selected="selected"
|
||||
@endif>
|
||||
{{ __('velocity::app.shop.gender.other') }}
|
||||
</option>
|
||||
|
||||
<option
|
||||
value="Male"
|
||||
@if ($customer->gender == "Male")
|
||||
selected="selected"
|
||||
@endif>
|
||||
{{ __('velocity::app.shop.gender.male') }}
|
||||
</option>
|
||||
|
||||
<option
|
||||
value="Female"
|
||||
@if ($customer->gender == "Female")
|
||||
selected="selected"
|
||||
@endif>
|
||||
{{ __('velocity::app.shop.gender.female') }}
|
||||
</option>
|
||||
</select>
|
||||
|
||||
<div class="select-icon-container">
|
||||
<span class="select-icon rango-arrow-down"></span>
|
||||
<div class="col-12">
|
||||
<input value="{{ $customer->first_name }}" name="first_name" type="text" v-validate="'required'" />
|
||||
<span class="control-error" v-if="errors.has('first_name')">@{{ errors.first('first_name') }}</span>
|
||||
</div>
|
||||
|
||||
<span class="control-error" v-if="errors.has('gender')">@{{ errors.first('gender') }}</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div :class="`row ${errors.has('date_of_birth') ? 'has-error' : ''}`">
|
||||
<label class="col-12">
|
||||
{{ __('shop::app.customer.account.profile.dob') }}
|
||||
</label>
|
||||
<div class="row">
|
||||
<label class="col-12">
|
||||
{{ __('shop::app.customer.account.profile.lname') }}
|
||||
</label>
|
||||
|
||||
<div class="col-12">
|
||||
<input
|
||||
type="date"
|
||||
name="date_of_birth"
|
||||
placeholder="dd/mm/yyyy"
|
||||
value="{{ old('date_of_birth') ?? $customer->date_of_birth }}"
|
||||
v-validate="" data-vv-as=""{{ __('shop::app.customer.account.profile.dob') }}"" />
|
||||
<div class="col-12">
|
||||
<input value="{{ $customer->last_name }}" name="last_name" type="text" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<span class="control-error" v-if="errors.has('date_of_birth')">
|
||||
@{{ errors.first('date_of_birth') }}
|
||||
<div :class="`row ${errors.has('gender') ? 'has-error' : ''}`">
|
||||
<label class="col-12 mandatory">
|
||||
{{ __('shop::app.customer.account.profile.gender') }}
|
||||
</label>
|
||||
|
||||
<div class="col-12">
|
||||
<select
|
||||
name="gender"
|
||||
v-validate="'required'"
|
||||
class="control styled-select"
|
||||
data-vv-as=""{{ __('shop::app.customer.account.profile.gender') }}"">
|
||||
|
||||
<option value="" @if ($customer->gender == "") selected @endif></option>
|
||||
<option
|
||||
value="Other"
|
||||
@if ($customer->gender == "Other")
|
||||
selected="selected"
|
||||
@endif>
|
||||
{{ __('velocity::app.shop.gender.other') }}
|
||||
</option>
|
||||
|
||||
<option
|
||||
value="Male"
|
||||
@if ($customer->gender == "Male")
|
||||
selected="selected"
|
||||
@endif>
|
||||
{{ __('velocity::app.shop.gender.male') }}
|
||||
</option>
|
||||
|
||||
<option
|
||||
value="Female"
|
||||
@if ($customer->gender == "Female")
|
||||
selected="selected"
|
||||
@endif>
|
||||
{{ __('velocity::app.shop.gender.female') }}
|
||||
</option>
|
||||
</select>
|
||||
|
||||
<div class="select-icon-container">
|
||||
<span class="select-icon rango-arrow-down"></span>
|
||||
</div>
|
||||
|
||||
<span class="control-error" v-if="errors.has('gender')">@{{ errors.first('gender') }}</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div :class="`row ${errors.has('date_of_birth') ? 'has-error' : ''}`">
|
||||
<label class="col-12">
|
||||
{{ __('shop::app.customer.account.profile.dob') }}
|
||||
</label>
|
||||
|
||||
<div class="col-12">
|
||||
<input
|
||||
type="date"
|
||||
name="date_of_birth"
|
||||
placeholder="dd/mm/yyyy"
|
||||
value="{{ old('date_of_birth') ?? $customer->date_of_birth }}"
|
||||
v-validate="" data-vv-as=""{{ __('shop::app.customer.account.profile.dob') }}"" />
|
||||
|
||||
<span class="control-error" v-if="errors.has('date_of_birth')">
|
||||
@{{ errors.first('date_of_birth') }}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<label class="col-12 mandatory">
|
||||
{{ __('shop::app.customer.account.profile.email') }}
|
||||
</label>
|
||||
|
||||
<div class="col-12">
|
||||
<input value="{{ $customer->email }}" name="email" type="text" v-validate="'required'" />
|
||||
<span class="control-error" v-if="errors.has('email')">@{{ errors.first('email') }}</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<label class="col-12">
|
||||
{{ __('velocity::app.shop.general.enter-current-password') }}
|
||||
</label>
|
||||
|
||||
<div :class="`col-12 ${errors.has('oldpassword') ? 'has-error' : ''}`">
|
||||
<input value="" name="oldpassword" type="password" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<label class="col-12">
|
||||
{{ __('velocity::app.shop.general.new-password') }}
|
||||
</label>
|
||||
|
||||
<div :class="`col-12 ${errors.has('password') ? 'has-error' : ''}`">
|
||||
<input
|
||||
value=""
|
||||
name="password"
|
||||
type="password"
|
||||
v-validate="'min:6|max:18'" />
|
||||
|
||||
<span class="control-error" v-if="errors.has('password')">
|
||||
@{{ errors.first('password') }}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<label class="col-12 mandatory">
|
||||
{{ __('shop::app.customer.account.profile.email') }}
|
||||
</label>
|
||||
<div class="row">
|
||||
<label class="col-12">
|
||||
{{ __('velocity::app.shop.general.confirm-new-password') }}
|
||||
</label>
|
||||
|
||||
<div class="col-12">
|
||||
<input value="{{ $customer->email }}" name="email" type="text" v-validate="'required'" />
|
||||
<span class="control-error" v-if="errors.has('email')">@{{ errors.first('email') }}</span>
|
||||
<div :class="`col-12 ${errors.has('password_confirmation') ? 'has-error' : ''}`">
|
||||
<input value="" name="password_confirmation" type="password"
|
||||
v-validate="'min:6|confirmed:password'" data-vv-as="confirm password" />
|
||||
|
||||
<span class="control-error" v-if="errors.has('password_confirmation')">
|
||||
@{{ errors.first('password_confirmation') }}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<label class="col-12">
|
||||
{{ __('velocity::app.shop.general.enter-current-password') }}
|
||||
</label>
|
||||
|
||||
<div :class="`col-12 ${errors.has('oldpassword') ? 'has-error' : ''}`">
|
||||
<input value="" name="oldpassword" type="password" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<label class="col-12">
|
||||
{{ __('velocity::app.shop.general.new-password') }}
|
||||
</label>
|
||||
|
||||
<div :class="`col-12 ${errors.has('password') ? 'has-error' : ''}`">
|
||||
<input
|
||||
value=""
|
||||
name="password"
|
||||
type="password"
|
||||
v-validate="'min:6|max:18'" />
|
||||
|
||||
<span class="control-error" v-if="errors.has('password')">
|
||||
@{{ errors.first('password') }}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<label class="col-12">
|
||||
{{ __('velocity::app.shop.general.confirm-new-password') }}
|
||||
</label>
|
||||
|
||||
<div :class="`col-12 ${errors.has('password_confirmation') ? 'has-error' : ''}`">
|
||||
<input value="" name="password_confirmation" type="password"
|
||||
v-validate="'min:6|confirmed:password'" data-vv-as="confirm password" />
|
||||
|
||||
<span class="control-error" v-if="errors.has('password_confirmation')">
|
||||
@{{ errors.first('password_confirmation') }}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<button
|
||||
type="submit"
|
||||
class="theme-btn mb20">
|
||||
{{ __('velocity::app.shop.general.update') }}
|
||||
</button>
|
||||
</form>
|
||||
<button
|
||||
type="submit"
|
||||
class="theme-btn mb20">
|
||||
{{ __('velocity::app.shop.general.update') }}
|
||||
</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
{!! view_render_event('bagisto.shop.customers.account.profile.view.after', ['customer' => $customer]) !!}
|
||||
@endsection
|
||||
|
|
@ -18,22 +18,31 @@
|
|||
|
||||
<div class="container-fluid advertisement-four-container">
|
||||
<div class="row">
|
||||
<a @if (isset($one)) href="{{ $one }}" @endif class="col-lg-4 col-12 no-padding">
|
||||
<img class="col-12" src="{{ asset('/storage/' . $advertisementFour['image_1']) }}" />
|
||||
</a>
|
||||
@if ( isset($advertisementFour[1]))
|
||||
<a @if (isset($one)) href="{{ $one }}" @endif class="col-lg-4 col-12 no-padding">
|
||||
<img class="col-12" src="{{ asset('/storage/' . $advertisementFour[1]) }}" />
|
||||
</a>
|
||||
@endif
|
||||
|
||||
<div class="col-lg-4 col-12 offers-ct-panel">
|
||||
<a @if (isset($two)) href="{{ $two }}" @endif class="row col-12 remove-padding-margin">
|
||||
<img class="col-12 offers-ct-top" src="{{ asset('/storage/' . $advertisementFour['image_2']) }}" />
|
||||
</a>
|
||||
<a @if (isset($three)) href="{{ $three }}" @endif class="row col-12 remove-padding-margin">
|
||||
<img class="col-12 offers-ct-bottom" src="{{ asset('/storage/' . $advertisementFour['image_3']) }}" />
|
||||
</a>
|
||||
@if ( isset($advertisementFour[2]))
|
||||
<a @if (isset($two)) href="{{ $two }}" @endif class="row col-12 remove-padding-margin">
|
||||
<img class="col-12 offers-ct-top" src="{{ asset('/storage/' . $advertisementFour[2]) }}" />
|
||||
</a>
|
||||
@endif
|
||||
|
||||
@if ( isset($advertisementFour[3]))
|
||||
<a @if (isset($three)) href="{{ $three }}" @endif class="row col-12 remove-padding-margin">
|
||||
<img class="col-12 offers-ct-bottom" src="{{ asset('/storage/' . $advertisementFour[3]) }}" />
|
||||
</a>
|
||||
@endif
|
||||
</div>
|
||||
|
||||
<a @if (isset($four)) href="{{ $four }}" @endif class="col-lg-4 col-12 no-padding">
|
||||
<img class="col-12" src="{{ asset('/storage/' . $advertisementFour['image_4']) }}" />
|
||||
</a>
|
||||
@if ( isset($advertisementFour[4]))
|
||||
<a @if (isset($four)) href="{{ $four }}" @endif class="col-lg-4 col-12 no-padding">
|
||||
<img class="col-12" src="{{ asset('/storage/' . $advertisementFour[4]) }}" />
|
||||
</a>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
|
|
|||
|
|
@ -18,17 +18,23 @@
|
|||
|
||||
<div class="container-fluid advertisement-three-container">
|
||||
<div class="row">
|
||||
<a @if (isset($one)) href="{{ $one }}" @endif class="col-lg-6 col-md-12 no-padding">
|
||||
<img src="{{ asset('/storage/' . $advertisementThree['image_1']) }}" class="full-width" />
|
||||
</a>
|
||||
@if ( isset($advertisementThree[1]))
|
||||
<a @if (isset($one)) href="{{ $one }}" @endif class="col-lg-6 col-md-12 no-padding">
|
||||
<img src="{{ asset('/storage/' . $advertisementThree[1]) }}" class="full-width" />
|
||||
</a>
|
||||
@endif
|
||||
|
||||
<div class="col-lg-6 col-md-12 second-panel">
|
||||
<a @if (isset($two)) href="{{ $two }}" @endif class="row top-container">
|
||||
<img src="{{ asset('/storage/' . $advertisementThree['image_2']) }}" class="col-12 pr0" />
|
||||
</a>
|
||||
<a @if (isset($three)) href="{{ $three }}" @endif class="row bottom-container">
|
||||
<img src="{{ asset('/storage/' . $advertisementThree['image_3']) }}" class="col-12 pr0" />
|
||||
</a>
|
||||
@if ( isset($advertisementThree[2]))
|
||||
<a @if (isset($two)) href="{{ $two }}" @endif class="row top-container">
|
||||
<img src="{{ asset('/storage/' . $advertisementThree[2]) }}" class="col-12 pr0" />
|
||||
</a>
|
||||
@endif
|
||||
@if ( isset($advertisementThree[3]))
|
||||
<a @if (isset($three)) href="{{ $three }}" @endif class="row bottom-container">
|
||||
<img src="{{ asset('/storage/' . $advertisementThree[3]) }}" class="col-12 pr0" />
|
||||
</a>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -18,13 +18,17 @@
|
|||
|
||||
<div class="container-fluid advertisement-two-container">
|
||||
<div class="row">
|
||||
<a class="col-lg-9 col-md-12 no-padding">
|
||||
<img src="{{ asset('/storage/' . $advertisementTwo['image_1']) }}" />
|
||||
</a>
|
||||
|
||||
<a class="col-lg-3 col-md-12 pr0">
|
||||
<img src="{{ asset('/storage/' . $advertisementTwo['image_2']) }}" />
|
||||
</a>
|
||||
@if ( isset($advertisementTwo[1]))
|
||||
<a class="col-lg-9 col-md-12 no-padding">
|
||||
<img src="{{ asset('/storage/' . $advertisementTwo[1]) }}" />
|
||||
</a>
|
||||
@endif
|
||||
|
||||
@if ( isset($advertisementTwo[2]))
|
||||
<a class="col-lg-3 col-md-12 pr0">
|
||||
<img src="{{ asset('/storage/' . $advertisementTwo[2]) }}" />
|
||||
</a>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
|
|
|||
|
|
@ -6,13 +6,13 @@
|
|||
|
||||
@push('scripts')
|
||||
<script type="text/x-template" id="category-products-template">
|
||||
<div class="container-fluid remove-padding-margin" v-if="isCategory">
|
||||
<div class="container-fluid remove-padding-margin" v-if="isCategory && categoryProducts.length > 0">
|
||||
<card-list-header
|
||||
:view-all="`${this.baseUrl}/${categoryDetails.slug}`"
|
||||
:heading="categoryDetails.name">
|
||||
</card-list-header>
|
||||
|
||||
<div class="carousel-products vc-full-screen" v-if="!isMobile()">
|
||||
<div class="carousel-products vc-full-screen ltr" v-if="!isMobile()">
|
||||
<carousel-component
|
||||
slides-per-page="6"
|
||||
navigation-enabled="hide"
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
<div class="container-fluid reviews-container">
|
||||
@if ($reviewCount)
|
||||
<card-list-header
|
||||
heading="Customer Reviews"
|
||||
heading="{{ __('velocity::app.home.customer-reviews') }}"
|
||||
></card-list-header>
|
||||
|
||||
<div class="row">
|
||||
|
|
@ -27,7 +27,7 @@
|
|||
</h4>
|
||||
|
||||
<div class="product-info fs16">
|
||||
<span>Reviewed- <a class="remove-decoration link-color" href="{{ route('shop.productOrCategory.index', $review->product->url_key) }}">{{$review->product->name}}</a></span>
|
||||
<span>{{ __('velocity::app.products.reviewed') }}- <a class="remove-decoration link-color" href="{{ route('shop.productOrCategory.index', $review->product->url_key) }}">{{$review->product->name}}</a></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -9,15 +9,15 @@
|
|||
<div class="container-fluid featured-products" v-if="featuredProducts.length > 0">
|
||||
<card-list-header heading="{{ __('shop::app.home.featured-products') }}">
|
||||
</card-list-header>
|
||||
|
||||
<div class="carousel-products vc-full-screen">
|
||||
|
||||
<div class="carousel-products vc-full-screen ltr">
|
||||
<carousel-component
|
||||
slides-per-page="6"
|
||||
navigation-enabled="hide"
|
||||
pagination-enabled="hide"
|
||||
id="fearured-products-carousel"
|
||||
:slides-count="featuredProducts.length">
|
||||
|
||||
|
||||
<slide
|
||||
:key="index"
|
||||
:slot="`slide-${index}`"
|
||||
|
|
@ -29,7 +29,7 @@
|
|||
</slide>
|
||||
</carousel-component>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="carousel-products vc-small-screen">
|
||||
<carousel-component
|
||||
slides-per-page="2"
|
||||
|
|
@ -37,7 +37,7 @@
|
|||
pagination-enabled="hide"
|
||||
id="fearured-products-carousel"
|
||||
:slides-count="featuredProducts.length">
|
||||
|
||||
|
||||
<slide
|
||||
:key="index"
|
||||
:slot="`slide-${index}`"
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@
|
|||
</style>
|
||||
@endpush
|
||||
|
||||
<div class="row">
|
||||
<div class="row ltr">
|
||||
<div class="col-9 no-padding carousel-products vc-full-screen with-recent-viewed" v-if="!isMobileDevice">
|
||||
<carousel-component
|
||||
slides-per-page="5"
|
||||
|
|
|
|||
|
|
@ -5,15 +5,13 @@
|
|||
$shippings = core()->getConfigData('sales.carriers');
|
||||
$payments = core()->getConfigData('sales.paymentmethods');
|
||||
|
||||
foreach($shippings as $ship)
|
||||
{
|
||||
foreach($shippings as $ship) {
|
||||
if ($ship['active'] == "true") {
|
||||
array_push($activeShippings, $ship['title']);
|
||||
}
|
||||
}
|
||||
|
||||
foreach($payments as $payment)
|
||||
{
|
||||
foreach($payments as $payment) {
|
||||
if ($payment['active'] == "true") {
|
||||
array_push($activePayments, $payment['title']);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,7 +8,9 @@
|
|||
@include('shop::layouts.footer.top-brands')
|
||||
@endif --}}
|
||||
|
||||
@include('shop::layouts.footer.copy-right')
|
||||
@if (core()->getConfigData('general.content.footer.footer_toggle'))
|
||||
@include('shop::layouts.footer.copy-right')
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
|
|||
|
|
@ -152,16 +152,16 @@
|
|||
|
||||
@if ($message = session('success'))
|
||||
messageType = 'alert-success';
|
||||
messageLabel = 'Success';
|
||||
messageLabel = "{{ __('velocity::app.shop.general.alert.success') }}";
|
||||
@elseif ($message = session('warning'))
|
||||
messageType = 'alert-warning';
|
||||
messageLabel = 'Warning';
|
||||
messageLabel = "{{ __('velocity::app.shop.general.alert.warning') }}";
|
||||
@elseif ($message = session('error'))
|
||||
messageType = 'alert-danger';
|
||||
messageLabel = 'Error';
|
||||
messageLabel = "{{ __('velocity::app.shop.general.alert.error') }}";
|
||||
@elseif ($message = session('info'))
|
||||
messageType = 'alert-info';
|
||||
messageLabel = 'Info';
|
||||
messageLabel = "{{ __('velocity::app.shop.general.alert.info') }}";
|
||||
@endif
|
||||
|
||||
if (messageType && '{{ $message }}' !== '') {
|
||||
|
|
@ -169,12 +169,14 @@
|
|||
}
|
||||
|
||||
window.serverErrors = [];
|
||||
@if(isset($errors))
|
||||
@if (isset($errors))
|
||||
@if (count($errors))
|
||||
window.serverErrors = @json($errors->getMessages());
|
||||
@endif
|
||||
@endif
|
||||
})()
|
||||
|
||||
window._translations = @json(app('Webkul\Velocity\Helpers\Helper')->jsonTranslations());
|
||||
})();
|
||||
</script>
|
||||
|
||||
<script
|
||||
|
|
|
|||
|
|
@ -31,6 +31,7 @@
|
|||
|
||||
@foreach (core()->getCurrentChannel()->locales as $locale)
|
||||
@if (isset($serachQuery))
|
||||
@dd(app()->getLocale());
|
||||
<option
|
||||
value="?{{ $serachQuery }}&locale={{ $locale->code }}"
|
||||
{{ $locale->code == app()->getLocale() ? 'selected' : '' }}>
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@
|
|||
type="button"
|
||||
class="theme-btn fs14 fw6">
|
||||
|
||||
{{ __('velocity::app.header.sign-in') }}
|
||||
{{ __('shop::app.header.sign-in') }}
|
||||
</button>
|
||||
</a>
|
||||
</div>
|
||||
|
|
@ -57,7 +57,7 @@
|
|||
<button
|
||||
type="button"
|
||||
class="theme-btn fs14 fw6">
|
||||
{{ __('velocity::app.header.sign-up') }}
|
||||
{{ __('shop::app.header.sign-up') }}
|
||||
</button>
|
||||
</a>
|
||||
</div>
|
||||
|
|
@ -75,7 +75,7 @@
|
|||
|
||||
<ul type="none">
|
||||
<li>
|
||||
<a href="{{ route('customer.profile.index') }}" class="unset">{{ __('shop::app.header.profile') }}</a>
|
||||
<a href="{{ route('customer.orders.index') }}" class="unset">{{ __('velocity::app.shop.general.orders') }}</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
|
|
@ -83,7 +83,7 @@
|
|||
</li>
|
||||
|
||||
<li>
|
||||
<a href="{{ route('shop.checkout.cart.index') }}" class="unset">{{ __('shop::app.header.cart') }}</a>
|
||||
<a href="{{ route('customer.profile.index') }}" class="unset">{{ __('shop::app.header.profile') }}</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{!! view_render_event('bagisto.shop.products.add_to_cart.before', ['product' => $product]) !!}
|
||||
|
||||
<div class="row mx-0">
|
||||
<div class="row mx-0 col-12 no-padding">
|
||||
<div class="add-to-cart-btn pl0">
|
||||
@if (isset($form) && !$form)
|
||||
<button
|
||||
|
|
|
|||
|
|
@ -5,6 +5,10 @@
|
|||
|
||||
@push('css')
|
||||
<style type="text/css">
|
||||
.list-card .wishlist-icon i {
|
||||
padding-left: 10px;
|
||||
}
|
||||
|
||||
.product-price span:first-child, .product-price span:last-child {
|
||||
font-size: 18px;
|
||||
font-weight: 600;
|
||||
|
|
@ -51,14 +55,17 @@
|
|||
@include ('shop::products.price', ['product' => $product])
|
||||
</div>
|
||||
|
||||
<div class="product-rating">
|
||||
<star-ratings ratings="{{ $avgRatings }}"></star-ratings>
|
||||
<span>{{ $totalReviews }} Ratings</span>
|
||||
</div>
|
||||
@if( $totalReviews )
|
||||
<div class="product-rating">
|
||||
<star-ratings ratings="{{ $avgRatings }}"></star-ratings>
|
||||
<span>{{ $totalReviews }} Ratings</span>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<div class="cart-wish-wrap mt5">
|
||||
@include ('shop::products.add-to-cart', [
|
||||
'product' => $product,
|
||||
'addWishlistClass' => 'pl10',
|
||||
'addToCartBtnClass' => 'medium-padding'
|
||||
])
|
||||
</div>
|
||||
|
|
@ -99,7 +106,9 @@
|
|||
@if ($totalReviews)
|
||||
<div class="product-rating col-12 no-padding">
|
||||
<star-ratings ratings="{{ $avgRatings }}"></star-ratings>
|
||||
<span class="align-top">{{ $totalReviews }} Ratings</span>
|
||||
<span class="align-top">
|
||||
{{ __('velocity::app.products.ratings', ['totalRatings' => $totalReviews ]) }}
|
||||
</span>
|
||||
</div>
|
||||
@else
|
||||
<div class="product-rating col-12 no-padding">
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@
|
|||
:ratings="product.rating">
|
||||
</star-ratings>
|
||||
|
||||
<span class="fs16 text-nowrap align-text-bottom" v-if="product.rating > 0">@{{ product.totalReviews }} Reviews</span>
|
||||
<span class="fs16 text-nowrap align-text-bottom" v-if="product.rating > 0">@{{ product.totalReviews }} {{ __('velocity::app.products.reviews') }}</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -46,24 +46,24 @@
|
|||
|
||||
<div class="sorter">
|
||||
<label>{{ __('shop::app.products.sort-by') }}</label>
|
||||
<i class="icon fs16 cell rango-arrow-down select-icon-margin down-icon-position"></i>
|
||||
<select class="selective-div border-normal" onchange="window.location.href = this.value">
|
||||
|
||||
<select class="selective-div border-normal styled-select" onchange="window.location.href = this.value">
|
||||
@foreach ($toolbarHelper->getAvailableOrders() as $key => $order)
|
||||
|
||||
<option value="{{ $toolbarHelper->getOrderUrl($key) }}" {{ $toolbarHelper->isOrderCurrent($key) ? 'selected' : '' }}>
|
||||
{{ __('shop::app.products.' . $order) }}
|
||||
</option>
|
||||
|
||||
@endforeach
|
||||
|
||||
</select>
|
||||
|
||||
<div class="select-icon-container">
|
||||
<span class="select-icon rango-arrow-down"></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="limiter">
|
||||
<label>{{ __('shop::app.products.show') }}</label>
|
||||
<i class="icon fs16 cell rango-arrow-down select-icon-show-margin down-icon-position"></i>
|
||||
<select class="selective-div border-normal" onchange="window.location.href = this.value" style="width: 57px;">
|
||||
|
||||
<select class="selective-div border-normal styled-select" onchange="window.location.href = this.value" style="width: 57px;">
|
||||
|
||||
@foreach ($toolbarHelper->getAvailableLimits() as $limit)
|
||||
|
||||
|
|
@ -74,6 +74,10 @@
|
|||
@endforeach
|
||||
|
||||
</select>
|
||||
|
||||
<div class="select-icon-container">
|
||||
<span class="select-icon rango-arrow-down"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
@ -156,10 +160,6 @@
|
|||
|
||||
methods: {
|
||||
toggleLayeredNavigation: function ({event, actionType}) {
|
||||
// this.$root.navContainer = true;
|
||||
// this.$root.responsiveSidebarTemplate = `<div slot="sidebar-body">
|
||||
// Hello World
|
||||
// </div>`;
|
||||
this.layeredNavigation = !this.layeredNavigation;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -65,7 +65,12 @@
|
|||
></star-ratings>
|
||||
|
||||
<div class="reviews">
|
||||
<span>{{ $avgRatings }} Ratings and {{ $total }} Reviews</span>
|
||||
<span>
|
||||
{{ __('shop::app.reviews.ratingreviews', [
|
||||
'rating' => $avgRatings,
|
||||
'review' => $total])
|
||||
}}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
|
@ -85,11 +90,13 @@
|
|||
|
||||
{!! view_render_event('bagisto.shop.products.view.short_description.before', ['product' => $product]) !!}
|
||||
|
||||
<div class="description">
|
||||
<h3 class="col-lg-12">{{ __('velocity::app.products.short-description') }}</h3>
|
||||
@if ($product->short_description)
|
||||
<div class="description">
|
||||
<h3 class="col-lg-12">{{ __('velocity::app.products.short-description') }}</h3>
|
||||
|
||||
{!! $product->short_description !!}
|
||||
</div>
|
||||
{!! $product->short_description !!}
|
||||
</div>
|
||||
@endif
|
||||
|
||||
{!! view_render_event('bagisto.shop.products.view.short_description.after', ['product' => $product]) !!}
|
||||
|
||||
|
|
@ -97,7 +104,9 @@
|
|||
{!! view_render_event('bagisto.shop.products.view.quantity.before', ['product' => $product]) !!}
|
||||
|
||||
@if ($product->getTypeInstance()->showQuantityBox())
|
||||
<quantity-changer></quantity-changer>
|
||||
<div>
|
||||
<quantity-changer></quantity-changer>
|
||||
</div>
|
||||
@else
|
||||
<input type="hidden" name="quantity" value="1">
|
||||
@endif
|
||||
|
|
|
|||
|
|
@ -1,4 +1,11 @@
|
|||
@if ($product->type == 'bundle')
|
||||
@push('css')
|
||||
<style type="text/css">
|
||||
.bundle-options-wrapper .bundle-option-list {
|
||||
border: unset;
|
||||
}
|
||||
</style>
|
||||
@endpush
|
||||
|
||||
{!! view_render_event('bagisto.shop.products.view.bundle-options.before', ['product' => $product]) !!}
|
||||
|
||||
|
|
@ -51,11 +58,11 @@
|
|||
|
||||
<script type="text/x-template" id="bundle-option-item-template">
|
||||
<div class="bundle-option-item">
|
||||
<div :class="`control-group ${errors.has('bundle_options[' + option.id + '][]') ? 'has-error' : ''}`">
|
||||
<div :class="`control-group custom-form mb10 ${errors.has('bundle_options[' + option.id + '][]') ? 'has-error' : ''}`">
|
||||
<label :class="[option.is_required ? 'required' : '']">@{{ option.label }}</label>
|
||||
|
||||
<div v-if="option.type == 'select'">
|
||||
<select class="control" :name="'bundle_options[' + option.id + '][]'" v-model="selected_product" v-validate="option.is_required ? 'required' : ''" :data-vv-as="option.label + '"'">
|
||||
<select class="control styled-select" :name="'bundle_options[' + option.id + '][]'" v-model="selected_product" v-validate="option.is_required ? 'required' : ''" :data-vv-as="option.label + '"'">
|
||||
<option value="">{{ __('shop::app.products.choose-selection') }}</option>
|
||||
<option v-for="(product, index2) in option.products" :value="product.id">
|
||||
@{{ product.name + ' + ' + product.price.final_price.formated_price }}
|
||||
|
|
@ -64,15 +71,14 @@
|
|||
</div>
|
||||
|
||||
<div v-if="option.type == 'radio'">
|
||||
<span class="radio" v-if="! option.is_required">
|
||||
<span class="radio col-12 ml5" v-if="! option.is_required">
|
||||
<input
|
||||
type="radio"
|
||||
:name="'bundle_options[' + option.id + '][]'"
|
||||
v-model="selected_product"
|
||||
value="0" />
|
||||
|
||||
<label class="radio-view" :for="'bundle_options[' + option.id + '][]'"></label>
|
||||
|
||||
<label class="radio-view no-padding" :for="'bundle_options[' + option.id + '][]'"></label>
|
||||
{{ __('shop::app.products.none') }}
|
||||
</span>
|
||||
|
||||
|
|
@ -94,7 +100,7 @@
|
|||
</div>
|
||||
|
||||
<div v-if="option.type == 'checkbox'">
|
||||
<span class="checkbox" v-for="(product, index2) in option.products">
|
||||
<span class="checkbox col-12 ml5" v-for="(product, index2) in option.products">
|
||||
<input type="checkbox" :name="'bundle_options[' + option.id + '][]'" :value="product.id" v-model="selected_product" v-validate="option.is_required ? 'required' : ''" :data-vv-as="'"' + option.label + '"'" :id="'bundle_options[' + option.id + '][]'">
|
||||
|
||||
@{{ product.name }}
|
||||
|
|
@ -106,7 +112,7 @@
|
|||
</div>
|
||||
|
||||
<div v-if="option.type == 'multiselect'">
|
||||
<select class="control" :name="'bundle_options[' + option.id + '][]'" v-model="selected_product" v-validate="option.is_required ? 'required' : ''" :data-vv-as="'"' + option.label + '"'" multiple>
|
||||
<select class="control styled-select" :name="'bundle_options[' + option.id + '][]'" v-model="selected_product" v-validate="option.is_required ? 'required' : ''" :data-vv-as="'"' + option.label + '"'" multiple>
|
||||
<option v-for="(product, index2) in option.products" :value="product.id">
|
||||
@{{ product.name + ' + ' + product.price.final_price.formated_price }}
|
||||
</option>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,61 @@
|
|||
@foreach ($cart->items as $item)
|
||||
<?php
|
||||
$product = $item->product;
|
||||
|
||||
if ($product->cross_sells()->count()) {
|
||||
$products[] = $product;
|
||||
$products = array_unique($products);
|
||||
}
|
||||
?>
|
||||
@endforeach
|
||||
|
||||
@if (isset($products))
|
||||
|
||||
<card-list-header
|
||||
heading="{{ __('shop::app.products.cross-sell-title') }}"
|
||||
view-all="false"
|
||||
row-class="pt20"
|
||||
></card-list-header>
|
||||
|
||||
<div class="carousel-products vc-full-screen">
|
||||
<carousel-component
|
||||
slides-per-page="6"
|
||||
navigation-enabled="hide"
|
||||
pagination-enabled="hide"
|
||||
id="upsell-products-carousel"
|
||||
:slides-count="{{ sizeof($products) }}">
|
||||
|
||||
@foreach($products as $product)
|
||||
@foreach ($product->cross_sells()->paginate(2) as $index => $crossSellProduct)
|
||||
<slide slot="slide-{{ $index }}">
|
||||
@include ('shop::products.list.card', [
|
||||
'product' => $crossSellProduct,
|
||||
'addToCartBtnClass' => 'small-padding',
|
||||
])
|
||||
</slide>
|
||||
@endforeach
|
||||
@endforeach
|
||||
</carousel-component>
|
||||
</div>
|
||||
|
||||
<div class="carousel-products vc-small-screen">
|
||||
<carousel-component
|
||||
:slides-count="{{ sizeof($products) }}"
|
||||
slides-per-page="2"
|
||||
id="upsell-products-carousel"
|
||||
navigation-enabled="hide"
|
||||
pagination-enabled="hide">
|
||||
|
||||
@foreach($products as $product)
|
||||
@foreach ($product->cross_sells()->paginate(2) as $index => $crossSellProduct)
|
||||
<slide slot="slide-{{ $index }}">
|
||||
@include ('shop::products.list.card', [
|
||||
'product' => $crossSellProduct,
|
||||
'addToCartBtnClass' => 'small-padding',
|
||||
])
|
||||
</slide>
|
||||
@endforeach
|
||||
@endforeach
|
||||
</carousel-component>
|
||||
</div>
|
||||
@endif
|
||||
|
|
@ -27,7 +27,7 @@
|
|||
{!! view_render_event('bagisto.shop.products.view.gallery.after', ['product' => $product]) !!}
|
||||
|
||||
<script type="text/x-template" id="product-gallery-template">
|
||||
<ul class="thumb-list col-12 row" type="none">
|
||||
<ul class="thumb-list col-12 row ltr" type="none">
|
||||
@if (sizeof($images) > 4)
|
||||
<li class="arrow left" @click="scroll('prev')">
|
||||
<i class="rango-arrow-left fs24"></i>
|
||||
|
|
|
|||
|
|
@ -30,14 +30,19 @@
|
|||
<div class="row customer-rating" slot="body">
|
||||
<div class="row full-width text-center mb30">
|
||||
<div class="col-lg-12 col-xl-6">
|
||||
<h4 class="col-lg-12 fs16">{{ $avgRatings }} Star</h4>
|
||||
<h4 class="col-lg-12 fs16">{{ $avgRatings }} {{ __('shop::app.reviews.star') }}</h4>
|
||||
|
||||
<star-ratings
|
||||
:size="24"
|
||||
:ratings="{{ $avgStarRating }}"
|
||||
></star-ratings>
|
||||
|
||||
<span class="fs16 fw6 display-block">{{ $avgRatings }} Ratings and {{ $total }} Reviews</span>
|
||||
<span class="fs16 fw6 display-block">
|
||||
{{ __('shop::app.reviews.ratingreviews', [
|
||||
'rating' => $avgRatings,
|
||||
'review' => $total])
|
||||
}}
|
||||
</span>
|
||||
|
||||
@if (core()->getConfigData('catalog.products.review.guest_review') || auth()->guard('customer')->check())
|
||||
<a href="{{ route('shop.reviews.create', ['slug' => $product->url_key ]) }}">
|
||||
|
|
@ -51,7 +56,7 @@
|
|||
@for ($i = 5; $i >= 1; $i--)
|
||||
|
||||
<div class="row">
|
||||
<span class="col-3 no-padding fs16 fw6">{{ $i }} Star</span>
|
||||
<span class="col-3 no-padding fs16 fw6">{{ $i }} {{ __('shop::app.reviews.star') }}</span>
|
||||
|
||||
<div class="col-7 rating-bar" title="{{ $percentageRatings[$i] }}%">
|
||||
<div style="width: {{ $percentageRatings[$i] }}%"></div>
|
||||
|
|
@ -69,14 +74,19 @@
|
|||
<div class="row customer-rating">
|
||||
<div class="row full-width text-center mb30">
|
||||
<div class="col-lg-12 col-xl-6">
|
||||
<h3 class="col-lg-12">{{ $avgRatings }} Star</h3>
|
||||
<h3 class="col-lg-12">{{ $avgRatings }} {{ __('shop::app.reviews.star') }}</h3>
|
||||
|
||||
<star-ratings
|
||||
:size="24"
|
||||
:ratings="{{ $avgStarRating }}"
|
||||
></star-ratings>
|
||||
|
||||
<span class="fs16 display-block">{{ $avgRatings }} Ratings and {{ $total }} Reviews</span>
|
||||
<span class="fs16 display-block">
|
||||
{{ __('shop::app.reviews.ratingreviews', [
|
||||
'rating' => $avgRatings,
|
||||
'review' => $total])
|
||||
}}
|
||||
</span>
|
||||
|
||||
@if (core()->getConfigData('catalog.products.review.guest_review') || auth()->guard('customer')->check())
|
||||
<a href="{{ route('shop.reviews.create', ['slug' => $product->url_key ]) }}">
|
||||
|
|
|
|||
|
|
@ -0,0 +1,49 @@
|
|||
<?php
|
||||
$productUpSells = $product->up_sells()->get();
|
||||
?>
|
||||
|
||||
@if ($productUpSells->count())
|
||||
<card-list-header
|
||||
heading="{{ __('shop::app.products.up-sell-title') }}"
|
||||
view-all="false"
|
||||
row-class="pt20"
|
||||
></card-list-header>
|
||||
|
||||
<div class="carousel-products vc-full-screen">
|
||||
<carousel-component
|
||||
slides-per-page="6"
|
||||
navigation-enabled="hide"
|
||||
pagination-enabled="hide"
|
||||
id="upsell-products-carousel"
|
||||
:slides-count="{{ sizeof($productUpSells) }}">
|
||||
|
||||
@foreach ($productUpSells as $index => $upSellProduct)
|
||||
<slide slot="slide-{{ $index }}">
|
||||
@include ('shop::products.list.card', [
|
||||
'product' => $upSellProduct,
|
||||
'addToCartBtnClass' => 'small-padding',
|
||||
])
|
||||
</slide>
|
||||
@endforeach
|
||||
</carousel-component>
|
||||
</div>
|
||||
|
||||
<div class="carousel-products vc-small-screen">
|
||||
<carousel-component
|
||||
:slides-count="{{ sizeof($productUpSells) }}"
|
||||
slides-per-page="2"
|
||||
id="upsell-products-carousel"
|
||||
navigation-enabled="hide"
|
||||
pagination-enabled="hide">
|
||||
|
||||
@foreach ($productUpSells as $index => $upSellProduct)
|
||||
<slide slot="slide-{{ $index }}">
|
||||
@include ('shop::products.list.card', [
|
||||
'product' => $upSellProduct,
|
||||
'addToCartBtnClass' => 'small-padding',
|
||||
])
|
||||
</slide>
|
||||
@endforeach
|
||||
</carousel-component>
|
||||
</div>
|
||||
@endif
|
||||
Loading…
Reference in New Issue