Merge remote-tracking branch 'upstream/master' into laravel-8-support

This commit is contained in:
devansh bawari 2021-03-02 13:52:25 +05:30
commit 6424b08473
22 changed files with 313 additions and 164 deletions

45
composer.lock generated
View File

@ -1545,6 +1545,51 @@
}, },
"time": "2021-02-11T11:04:51+00:00" "time": "2021-02-11T11:04:51+00:00"
}, },
{
"name": "enshrined/svg-sanitize",
"version": "0.14.0",
"source": {
"type": "git",
"url": "https://github.com/darylldoyle/svg-sanitizer.git",
"reference": "beff89576a72540ee99476aeb9cfe98222e76fb8"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/darylldoyle/svg-sanitizer/zipball/beff89576a72540ee99476aeb9cfe98222e76fb8",
"reference": "beff89576a72540ee99476aeb9cfe98222e76fb8",
"shasum": ""
},
"require": {
"ext-dom": "*",
"ext-libxml": "*"
},
"require-dev": {
"codeclimate/php-test-reporter": "^0.1.2",
"phpunit/phpunit": "^6"
},
"type": "library",
"autoload": {
"psr-4": {
"enshrined\\svgSanitize\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"GPL-2.0-or-later"
],
"authors": [
{
"name": "Daryll Doyle",
"email": "daryll@enshrined.co.uk"
}
],
"description": "An SVG sanitizer for PHP",
"support": {
"issues": "https://github.com/darylldoyle/svg-sanitizer/issues",
"source": "https://github.com/darylldoyle/svg-sanitizer/tree/0.14.0"
},
"time": "2021-01-21T10:13:20+00:00"
},
{ {
"name": "ezimuel/guzzlestreams", "name": "ezimuel/guzzlestreams",
"version": "3.0.1", "version": "3.0.1",

View File

@ -320,23 +320,27 @@ class Cart
return false; return false;
} }
$this->cartItemRepository->delete($itemId); if ($cartItem = $cart->items()->find($itemId)) {
$cartItem->delete();
if ($cart->items()->get()->count() == 0) { if ($cart->items()->get()->count() == 0) {
$this->cartRepository->delete($cart->id); $this->cartRepository->delete($cart->id);
if (session()->has('cart')) { if (session()->has('cart')) {
session()->forget('cart'); session()->forget('cart');
}
} }
Shipping::collectRates();
Event::dispatch('checkout.cart.delete.after', $itemId);
$this->collectTotals();
return true;
} }
Shipping::collectRates(); return false;
Event::dispatch('checkout.cart.delete.after', $itemId);
$this->collectTotals();
return true;
} }
/** /**

View File

@ -35,7 +35,7 @@ class CheckForMaintenanceMode extends Original
protected $except = []; protected $except = [];
/** /**
* Exclude ips. * Exclude IPs.
*/ */
protected $excludedIPs = []; protected $excludedIPs = [];
@ -49,14 +49,11 @@ class CheckForMaintenanceMode extends Original
/* application */ /* application */
$this->app = $app; $this->app = $app;
/* current channel */
$this->channel = core()->getCurrentChannel();
/* adding exception for admin routes */ /* adding exception for admin routes */
$this->except[] = env('APP_ADMIN_URL', 'admin') . '*'; $this->except[] = env('APP_ADMIN_URL', 'admin') . '*';
/* adding exception for ips */ /* exclude ips */
$this->excludedIPs = array_map('trim', explode(',', $this->channel->allowed_ips)); $this->setAllowedIps();
} }
/** /**
@ -116,4 +113,18 @@ class CheckForMaintenanceMode extends Original
return $next($request); return $next($request);
} }
/**
* Set allowed IPs.
*
* @return void
*/
protected function setAllowedIps()
{
$this->channel = core()->getCurrentChannel();
if ($this->channel) {
$this->excludedIPs = array_map('trim', explode(',', $this->channel->allowed_ips));
}
}
} }

View File

@ -0,0 +1,27 @@
<?php
namespace Webkul\Core\Traits;
use Illuminate\Support\Facades\Storage;
use enshrined\svgSanitize\Sanitizer as MainSanitizer;
trait Sanitizer
{
/**
* Sanitize SVG file.
*
* @param string $path
* @return void
*/
public function sanitizeSVG($path)
{
/* sanitizer instance */
$sanitizer = new MainSanitizer();
/* grab svg file */
$dirtySVG = Storage::get($path);
/* save sanitized svg */
Storage::put($path, $sanitizer->sanitize($dirtySVG));
}
}

View File

@ -11,12 +11,12 @@ use Webkul\Core\Eloquent\Repository;
use Illuminate\Support\Facades\Event; use Illuminate\Support\Facades\Event;
use Webkul\Attribute\Models\Attribute; use Webkul\Attribute\Models\Attribute;
use Webkul\Product\Models\ProductFlat; use Webkul\Product\Models\ProductFlat;
use Illuminate\Support\Facades\Storage;
use Illuminate\Container\Container as App; use Illuminate\Container\Container as App;
use Illuminate\Pagination\LengthAwarePaginator; use Illuminate\Pagination\LengthAwarePaginator;
use Webkul\Product\Models\ProductAttributeValueProxy; use Webkul\Product\Models\ProductAttributeValueProxy;
use Webkul\Attribute\Repositories\AttributeRepository; use Webkul\Attribute\Repositories\AttributeRepository;
use Illuminate\Database\Eloquent\ModelNotFoundException; use Illuminate\Database\Eloquent\ModelNotFoundException;
use Illuminate\Support\Facades\Storage;
class ProductRepository extends Repository class ProductRepository extends Repository
{ {
@ -212,8 +212,12 @@ class ProductRepository extends Repository
if ($priceFilter = request('price')) { if ($priceFilter = request('price')) {
$priceRange = explode(',', $priceFilter); $priceRange = explode(',', $priceFilter);
if (count($priceRange) > 0) { if (count($priceRange) > 0) {
$qb->where('variants.min_price', '>=', core()->convertToBasePrice($priceRange[0]));
$qb->where('variants.min_price', '<=', core()->convertToBasePrice(end($priceRange))); $priceQuery = DB::raw('(CASE WHEN ' . DB::getTablePrefix() . 'catalog_rule_product_prices.price > 0 THEN ' . DB::getTablePrefix() . 'catalog_rule_product_prices.price ELSE ' . DB::getTablePrefix() . 'variants.min_price END)');
$qb->leftJoin('catalog_rule_product_prices', 'catalog_rule_product_prices.product_id', '=', 'variants.product_id')
->where($priceQuery, '>=', core()->convertToBasePrice($priceRange[0]))
->where($priceQuery, '<=', core()->convertToBasePrice(end($priceRange)));
} }
} }
@ -812,11 +816,23 @@ class ProductRepository extends Repository
* @return Model * @return Model
*/ */
public function checkOutOfStockItem($query) { public function checkOutOfStockItem($query) {
return $query->leftJoin('products as ps', 'product_flat.product_id', '=', 'ps.id') return $query
->leftJoin('products as ps', 'product_flat.product_id', '=', 'ps.id')
->leftJoin('product_inventories as pv', 'product_flat.product_id', '=', 'pv.product_id') ->leftJoin('product_inventories as pv', 'product_flat.product_id', '=', 'pv.product_id')
->where(function ($qb) { ->where(function ($qb) {
$qb $qb
->WhereIn('ps.type', ['configurable', 'grouped', 'downloadable', 'bundle', 'booking']) ->where('ps.type', 'configurable')
->where(function ($qb) {
$qb
->selectRaw('SUM(' . DB::getTablePrefix() . 'product_inventories.qty)')
->from('product_flat')
->leftJoin('product_inventories', 'product_inventories.product_id', '=', 'product_flat.product_id')
->whereRaw(DB::getTablePrefix() . 'product_flat.parent_id = ps.id');
}, '>', 0);
})
->orWhere(function ($qb) {
$qb
->WhereIn('ps.type', ['grouped', 'downloadable', 'bundle', 'booking'])
->orwhereIn('ps.type', ['simple', 'virtual'])->where('pv.qty' , '>' , 0); ->orwhereIn('ps.type', ['simple', 'virtual'])->where('pv.qty' , '>' , 0);
}); });
} }

View File

@ -2,13 +2,16 @@
namespace Webkul\Product\Repositories; namespace Webkul\Product\Repositories;
use Illuminate\Container\Container as App; use Webkul\Core\Traits\Sanitizer;
use Illuminate\Support\Facades\Storage;
use Webkul\Core\Eloquent\Repository; use Webkul\Core\Eloquent\Repository;
use Illuminate\Support\Facades\Storage;
use Illuminate\Container\Container as App;
use Webkul\Product\Repositories\ProductRepository; use Webkul\Product\Repositories\ProductRepository;
class SearchRepository extends Repository class SearchRepository extends Repository
{ {
use Sanitizer;
/** /**
* ProductRepository object * ProductRepository object
* *
@ -51,6 +54,10 @@ class SearchRepository extends Repository
{ {
$path = request()->file('image')->store('product-search'); $path = request()->file('image')->store('product-search');
if ($data['image']->getMimeType() === 'image/svg') {
$this->sanitizeSVG($path);
}
return Storage::url($path); return Storage::url($path);
} }
} }

View File

@ -2,9 +2,9 @@
namespace Webkul\Shop\Http\Controllers; namespace Webkul\Shop\Http\Controllers;
use PDF;
use Webkul\Sales\Repositories\OrderRepository; use Webkul\Sales\Repositories\OrderRepository;
use Webkul\Sales\Repositories\InvoiceRepository; use Webkul\Sales\Repositories\InvoiceRepository;
use PDF;
class OrderController extends Controller class OrderController extends Controller
{ {
@ -83,6 +83,10 @@ class OrderController extends Controller
{ {
$invoice = $this->invoiceRepository->findOrFail($id); $invoice = $this->invoiceRepository->findOrFail($id);
if ($invoice->order->customer_id !== auth()->guard('customer')->user()->id) {
abort(404);
}
$pdf = PDF::loadView('shop::customers.account.orders.pdf', compact('invoice'))->setPaper('a4'); $pdf = PDF::loadView('shop::customers.account.orders.pdf', compact('invoice'))->setPaper('a4');
return $pdf->download('invoice-' . $invoice->created_at->format('d-m-Y') . '.pdf'); return $pdf->download('invoice-' . $invoice->created_at->format('d-m-Y') . '.pdf');

File diff suppressed because one or more lines are too long

View File

@ -1,5 +1,5 @@
{ {
"/js/velocity.js": "/js/velocity.js?id=88772f0049a360a2c02e", "/js/velocity.js": "/js/velocity.js?id=88772f0049a360a2c02e",
"/css/velocity-admin.css": "/css/velocity-admin.css?id=4322502d80a0e4a0affd", "/css/velocity-admin.css": "/css/velocity-admin.css?id=4322502d80a0e4a0affd",
"/css/velocity.css": "/css/velocity.css?id=b900a5750cddffe0d3f5" "/css/velocity.css": "/css/velocity.css?id=ab692d526032812a7666"
} }

View File

@ -2,18 +2,14 @@
namespace Webkul\Velocity\Http\Controllers\Admin; namespace Webkul\Velocity\Http\Controllers\Admin;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Str; use Illuminate\Support\Str;
use Webkul\Core\Traits\Sanitizer;
use Illuminate\Support\Facades\Storage;
use Webkul\Velocity\Repositories\VelocityMetadataRepository; use Webkul\Velocity\Repositories\VelocityMetadataRepository;
class ConfigurationController extends Controller class ConfigurationController extends Controller
{ {
/** use Sanitizer;
* VelocityMetadataRepository object
*
* @var \Webkul\Velocity\Repositories\VelocityMetadataRepository
*/
protected $velocityMetaDataRepository;
/** /**
* Locale * Locale
@ -25,6 +21,13 @@ class ConfigurationController extends Controller
*/ */
protected $channel; protected $channel;
/**
* VelocityMetadataRepository $velocityMetaDataRepository
*
* @var \Webkul\Velocity\Repositories\VelocityMetadataRepository
*/
protected $velocityMetaDataRepository;
/** /**
* Create a new controller instance. * Create a new controller instance.
* *
@ -43,6 +46,8 @@ class ConfigurationController extends Controller
} }
/** /**
* Render meta data.
*
* @return \Illuminate\View\View * @return \Illuminate\View\View
*/ */
public function renderMetaData() public function renderMetaData()
@ -65,6 +70,8 @@ class ConfigurationController extends Controller
} }
/** /**
* Store meta data.
*
* @param int $id * @param int $id
* @return \Illuminate\Http\Response * @return \Illuminate\Http\Response
*/ */
@ -105,16 +112,6 @@ class ConfigurationController extends Controller
} }
} }
if (isset($params['product_view_images'])) {
foreach ($params['product_view_images'] as $index => $productViewImage) {
if ($productViewImage !== "") {
$params['product_view_images'][$index] = $this->uploadImage($productViewImage, $index);
}
}
$params['product_view_images'] = json_encode($params['product_view_images']);
}
$params['advertisement'] = json_encode($params['advertisement']); $params['advertisement'] = json_encode($params['advertisement']);
$params['home_page_content'] = str_replace('=&gt;', '=>', $params['home_page_content']); $params['home_page_content'] = str_replace('=&gt;', '=>', $params['home_page_content']);
@ -132,10 +129,11 @@ class ConfigurationController extends Controller
} }
/** /**
* Upload advertisement images.
*
* @param array $data * @param array $data
* @param int $index * @param int $index
* @param array $advertisement * @param array $advertisement
*
* @return array * @return array
*/ */
public function uploadAdvertisementImages($data, $index, $advertisement) public function uploadAdvertisementImages($data, $index, $advertisement)
@ -152,16 +150,20 @@ class ConfigurationController extends Controller
if (Str::contains($imageId, 'image_')) { if (Str::contains($imageId, 'image_')) {
if (request()->hasFile($file) && $image) { if (request()->hasFile($file) && $image) {
$filter_index = substr($imageId, 6, 1); $filter_index = substr($imageId, 6, 1);
if ( isset($data[$filter_index]) ) { if (isset($data[$filter_index])) {
$size = array_key_last($saveData[$index]); $size = array_key_last($saveData[$index]);
$saveImage[$size + 1] = request()->file($file)->store($dir); $saveImage[$size + 1] = $path = request()->file($file)->store($dir);
} else { } else {
$saveImage[substr($imageId, 6, 1)] = request()->file($file)->store($dir); $saveImage[substr($imageId, 6, 1)] = $path = request()->file($file)->store($dir);
}
if ($image->getMimeType() === 'image/svg') {
$this->sanitizeSVG($path);
} }
} }
} else { } else {
if ( isset($advertisement[$index][$imageId]) && $advertisement[$index][$imageId] && !request()->hasFile($file)) { if (isset($advertisement[$index][$imageId]) && $advertisement[$index][$imageId] && !request()->hasFile($file)) {
$saveImage[$imageId] = $advertisement[$index][$imageId]; $saveImage[$imageId] = $advertisement[$index][$imageId];
unset($advertisement[$index][$imageId]); unset($advertisement[$index][$imageId]);
@ -200,30 +202,8 @@ class ConfigurationController extends Controller
} }
/** /**
* @param array $data * Manage add images.
* @param int $index
* *
* @return mixed
*/
public function uploadImage($data, $index)
{
$type = 'product_view_images';
$request = request();
$image = '';
$file = $type . '.' . $index;
$dir = "velocity/$type";
if ($request->hasFile($file)) {
Storage::delete($dir . $file);
$image = $request->file($file)->store($dir);
}
return $image;
}
/**
* @param array $addImages * @param array $addImages
* *
* @return array * @return array
@ -250,21 +230,25 @@ class ConfigurationController extends Controller
return $imagePaths; return $imagePaths;
} }
/**
* Create meta data.
*
* @param string $locale
* @param string $channel
*
* @return array
*/
private function createMetaData($locale, $channel) private function createMetaData($locale, $channel)
{ {
\DB::table('velocity_meta_data')->insert([ \DB::table('velocity_meta_data')->insert([
'locale' => $locale, 'locale' => $locale,
'channel' => $channel, 'channel' => $channel,
'header_content_count' => '5', 'header_content_count' => '5',
'home_page_content' => "<p>@include('shop::home.advertisements.advertisement-four')@include('shop::home.featured-products') @include('shop::home.product-policy') @include('shop::home.advertisements.advertisement-three') @include('shop::home.new-products') @include('shop::home.advertisements.advertisement-two')</p>", 'home_page_content' => "<p>@include('shop::home.advertisements.advertisement-four')@include('shop::home.featured-products') @include('shop::home.product-policy') @include('shop::home.advertisements.advertisement-three') @include('shop::home.new-products') @include('shop::home.advertisements.advertisement-two')</p>",
'footer_left_content' => __('velocity::app.admin.meta-data.footer-left-raw-content'), 'footer_left_content' => __('velocity::app.admin.meta-data.footer-left-raw-content'),
'footer_middle_content' => '<div class="col-lg-6 col-md-12 col-sm-12 no-padding"><ul type="none"><li><a href="{!! url(\'page/about-us\') !!}">About Us</a></li><li><a href="{!! url(\'page/cutomer-service\') !!}">Customer Service</a></li><li><a href="{!! url(\'page/whats-new\') !!}">What&rsquo;s New</a></li><li><a href="{!! url(\'page/contact-us\') !!}">Contact Us </a></li></ul></div><div class="col-lg-6 col-md-12 col-sm-12 no-padding"><ul type="none"><li><a href="{!! url(\'page/return-policy\') !!}"> Order and Returns </a></li><li><a href="{!! url(\'page/payment-policy\') !!}"> Payment Policy </a></li><li><a href="{!! url(\'page/shipping-policy\') !!}"> Shipping Policy</a></li><li><a href="{!! url(\'page/privacy-policy\') !!}"> Privacy and Cookies Policy </a></li></ul></div>', 'footer_middle_content' => '<div class="col-lg-6 col-md-12 col-sm-12 no-padding"><ul type="none"><li><a href="{!! url(\'page/about-us\') !!}">About Us</a></li><li><a href="{!! url(\'page/cutomer-service\') !!}">Customer Service</a></li><li><a href="{!! url(\'page/whats-new\') !!}">What&rsquo;s New</a></li><li><a href="{!! url(\'page/contact-us\') !!}">Contact Us </a></li></ul></div><div class="col-lg-6 col-md-12 col-sm-12 no-padding"><ul type="none"><li><a href="{!! url(\'page/return-policy\') !!}"> Order and Returns </a></li><li><a href="{!! url(\'page/payment-policy\') !!}"> Payment Policy </a></li><li><a href="{!! url(\'page/shipping-policy\') !!}"> Shipping Policy</a></li><li><a href="{!! url(\'page/privacy-policy\') !!}"> Privacy and Cookies Policy </a></li></ul></div>',
'slider' => 1, 'slider' => 1,
'subscription_bar_content' => '<div class="social-icons col-lg-6"><a href="https://webkul.com" target="_blank" class="unset" rel="noopener noreferrer"><i class="fs24 within-circle rango-facebook" title="facebook"></i> </a> <a href="https://webkul.com" target="_blank" class="unset" rel="noopener noreferrer"><i class="fs24 within-circle rango-twitter" title="twitter"></i> </a> <a href="https://webkul.com" target="_blank" class="unset" rel="noopener noreferrer"><i class="fs24 within-circle rango-linked-in" title="linkedin"></i> </a> <a href="https://webkul.com" target="_blank" class="unset" rel="noopener noreferrer"><i class="fs24 within-circle rango-pintrest" title="Pinterest"></i> </a> <a href="https://webkul.com" target="_blank" class="unset" rel="noopener noreferrer"><i class="fs24 within-circle rango-youtube" title="Youtube"></i> </a> <a href="https://webkul.com" target="_blank" class="unset" rel="noopener noreferrer"><i class="fs24 within-circle rango-instagram" title="instagram"></i></a></div>', 'subscription_bar_content' => '<div class="social-icons col-lg-6"><a href="https://webkul.com" target="_blank" class="unset" rel="noopener noreferrer"><i class="fs24 within-circle rango-facebook" title="facebook"></i> </a> <a href="https://webkul.com" target="_blank" class="unset" rel="noopener noreferrer"><i class="fs24 within-circle rango-twitter" title="twitter"></i> </a> <a href="https://webkul.com" target="_blank" class="unset" rel="noopener noreferrer"><i class="fs24 within-circle rango-linked-in" title="linkedin"></i> </a> <a href="https://webkul.com" target="_blank" class="unset" rel="noopener noreferrer"><i class="fs24 within-circle rango-pintrest" title="Pinterest"></i> </a> <a href="https://webkul.com" target="_blank" class="unset" rel="noopener noreferrer"><i class="fs24 within-circle rango-youtube" title="Youtube"></i> </a> <a href="https://webkul.com" target="_blank" class="unset" rel="noopener noreferrer"><i class="fs24 within-circle rango-instagram" title="instagram"></i></a></div>',
'product_policy' => '<div class="row col-12 remove-padding-margin"><div class="col-lg-4 col-sm-12 product-policy-wrapper"><div class="card"><div class="policy"><div class="left"><i class="rango-van-ship fs40"></i></div> <div class="right"><span class="font-setting fs20">Free Shipping on Order $20 or More</span></div></div></div></div> <div class="col-lg-4 col-sm-12 product-policy-wrapper"><div class="card"><div class="policy"><div class="left"><i class="rango-exchnage fs40"></i></div> <div class="right"><span class="font-setting fs20">Product Replace &amp; Return Available </span></div></div></div></div> <div class="col-lg-4 col-sm-12 product-policy-wrapper"><div class="card"><div class="policy"><div class="left"><i class="rango-exchnage fs40"></i></div> <div class="right"><span class="font-setting fs20">Product Exchange and EMI Available </span></div></div></div></div></div>', 'product_policy' => '<div class="row col-12 remove-padding-margin"><div class="col-lg-4 col-sm-12 product-policy-wrapper"><div class="card"><div class="policy"><div class="left"><i class="rango-van-ship fs40"></i></div> <div class="right"><span class="font-setting fs20">Free Shipping on Order $20 or More</span></div></div></div></div> <div class="col-lg-4 col-sm-12 product-policy-wrapper"><div class="card"><div class="policy"><div class="left"><i class="rango-exchnage fs40"></i></div> <div class="right"><span class="font-setting fs20">Product Replace &amp; Return Available </span></div></div></div></div> <div class="col-lg-4 col-sm-12 product-policy-wrapper"><div class="card"><div class="policy"><div class="left"><i class="rango-exchnage fs40"></i></div> <div class="right"><span class="font-setting fs20">Product Exchange and EMI Available </span></div></div></div></div></div>',
]); ]);
} }

View File

@ -1,4 +1,4 @@
@import "icons"; @import "main/icons";
@font-face { @font-face {
font-family: 'Webkul Rango'; font-family: 'Webkul Rango';

View File

@ -1,18 +1,25 @@
@import "rango"; /* main imports */
@import "icons"; @import "main/rango";
@import "mixins"; @import "main/icons";
@import "variables"; @import "main/mixins";
@import "main/variables";
/* shared components */
@import "components/shared";
/* components */
@import "components/UI"; @import "components/UI";
@import "components/app"; @import "components/app";
@import "components/home"; @import "components/home";
@import "components/footer"; @import "components/footer";
@import "components/shared";
@import "components/product-view"; @import "components/product-view";
@import "components/media"; @import "components/media";
@import "components/rtl"; @import "components/rtl";
/* static */
@import "static/material-icons"; @import "static/material-icons";
/* starting */
* { * {
margin: 0; margin: 0;
padding: 0; padding: 0;
@ -27,6 +34,7 @@
width: 3px; width: 3px;
height: 5px; height: 5px;
} }
/* Track */ /* Track */
::-webkit-scrollbar-track { ::-webkit-scrollbar-track {
background: #D8D8D8; background: #D8D8D8;
@ -474,7 +482,7 @@ header {
background-color: $theme-color; background-color: $theme-color;
i { i {
color: $btn-text-color; color: $button-text-color;
} }
} }
} }

View File

@ -406,7 +406,7 @@
padding: 0 10px !important; padding: 0 10px !important;
font-size: 24px !important; font-size: 24px !important;
font-weight: 600 !important; font-weight: 600 !important;
color: $dark-color !important; color: $black-color !important;
background-color: $white-color; background-color: $white-color;
border: 1px solid $border-common !important; border: 1px solid $border-common !important;
} }
@ -501,7 +501,7 @@
label { label {
font-size: 18px; font-size: 18px;
color: $light-grey-clr; color: $grey-color;
text-transform: uppercase; text-transform: uppercase;
} }
} }
@ -525,12 +525,12 @@
button[type=button].btn-secondary { button[type=button].btn-secondary {
border: none; border: none;
font-size: 16px; font-size: 16px;
color: $dark-color; color: $black-color;
background-color: $light-color; background-color: $white-color;
:hover { :hover {
color: $dark-color !important; color: $black-color !important;
background-color: $light-color !important; background-color: $white-color !important;
} }
:focus, :focus,
@ -641,8 +641,8 @@
text-align: center; text-align: center;
position: absolute; position: absolute;
border-radius: 50%; border-radius: 50%;
color: $light-color; color: $white-color;
background: $dark-color; background: $black-color;
} }
} }
@ -774,7 +774,7 @@
} }
.customer-email { .customer-email {
color: $light-grey-clr; color: $grey-color;
} }
} }
@ -876,7 +876,7 @@
font-size: 16px; font-size: 16px;
padding: 5px 16px; padding: 5px 16px;
border-radius: 1px; border-radius: 1px;
background: $btn-text-color; background: $button-text-color;
border: 1px solid $border-common; border: 1px solid $border-common;
} }
@ -1192,7 +1192,7 @@
&.next, &.next,
&.previous { &.previous {
cursor: not-allowed; cursor: not-allowed;
color: $light-grey-clr !important; color: $grey-color !important;
} }
} }
@ -1271,13 +1271,13 @@
font-size: 18px; font-size: 18px;
font-weight: 600; font-weight: 600;
padding-bottom: 10px; padding-bottom: 10px;
color: $light-grey-clr; color: $grey-color;
} }
.section-content { .section-content {
label + span { label + span {
font-weight: 600; font-weight: 600;
color: $light-grey-clr; color: $grey-color;
} }
.totals { .totals {
@ -1318,7 +1318,7 @@
font-size: 18px; font-size: 18px;
padding: 10px 0; padding: 10px 0;
font-weight: 600; font-weight: 600;
color: $light-grey-clr; color: $grey-color;
} }
} }
} }
@ -1497,7 +1497,7 @@
font-size: 16px; font-size: 16px;
padding: 5px 16px; padding: 5px 16px;
border-radius: 1px; border-radius: 1px;
background: $btn-text-color; background: $button-text-color;
border: 1px solid $border-common; border: 1px solid $border-common;
} }
@ -1708,7 +1708,7 @@
&.sale { &.sale {
padding: 2px 14px; padding: 2px 14px;
background-color: $color-danger; background-color: $danger-color;
} }
&.new { &.new {
@ -1867,7 +1867,7 @@
z-index: 100; z-index: 100;
padding-top: 10px; padding-top: 10px;
position: absolute; position: absolute;
background: $light-color; background: $white-color;
border-left: 1px solid $border-common; border-left: 1px solid $border-common;
box-shadow: 0 10px 20px rgba(0,0,0,0.19), 0 6px 6px rgba(0,0,0,0.23); box-shadow: 0 10px 20px rgba(0,0,0,0.19), 0 6px 6px rgba(0,0,0,0.23);
overflow-y: auto; overflow-y: auto;
@ -2131,7 +2131,7 @@
width: 100%; width: 100%;
height: 100%; height: 100%;
border-radius: 50%; border-radius: 50%;
background-color: $light-color; background-color: $white-color;
box-shadow: 0.5px 0.5px 2px 1px rgba(0,0,0,.32); box-shadow: 0.5px 0.5px 2px 1px rgba(0,0,0,.32);
} }
@ -2148,7 +2148,7 @@
text-align: center; text-align: center;
border-radius: 5px; border-radius: 5px;
white-space: nowrap; white-space: nowrap;
color: $light-color; color: $white-color;
border-color: $theme-color !important; border-color: $theme-color !important;
background-color: $theme-color !important; background-color: $theme-color !important;
} }

View File

@ -32,7 +32,7 @@
.social-icons { .social-icons {
height: 100%; height: 100%;
padding: 20px 0; padding: 20px 0;
color: $light-color; color: $white-color;
i { i {
margin: 0; margin: 0;

View File

@ -40,7 +40,6 @@ body {
} }
} }
.hide-text { .hide-text {
white-space: nowrap; white-space: nowrap;
width: 100%; width: 100%;

View File

@ -5,11 +5,10 @@
direction: rtl; direction: rtl;
} }
.padding-15 { .padding-10 {
padding: 15px; padding: 15px;
} }
.padding-15 {
.padding-10 {
padding: 15px; padding: 15px;
} }
@ -72,6 +71,7 @@
.pt20 { .pt20 {
padding-top: 20px !important; padding-top: 20px !important;
} }
.pl0 { .pl0 {
padding-left: 0px !important; padding-left: 0px !important;
} }
@ -93,6 +93,7 @@
.pl40 { .pl40 {
padding-left: 40px !important; padding-left: 40px !important;
} }
.pr0 { .pr0 {
padding-right: 0px !important; padding-right: 0px !important;
} }
@ -105,6 +106,7 @@
.pr40 { .pr40 {
padding-right: 40px !important; padding-right: 40px !important;
} }
.pb0 { .pb0 {
padding-bottom: 0px !important; padding-bottom: 0px !important;
} }
@ -117,6 +119,7 @@
.pb30 { .pb30 {
padding-bottom: 30px !important; padding-bottom: 30px !important;
} }
.mt5 { .mt5 {
margin-top: 5px !important; margin-top: 5px !important;
} }
@ -126,6 +129,7 @@
.mt15 { .mt15 {
margin-top: 15px !important; margin-top: 15px !important;
} }
.mr5 { .mr5 {
margin-right: 5px; margin-right: 5px;
} }
@ -141,6 +145,7 @@
.mr20 { .mr20 {
margin-right: 20px; margin-right: 20px;
} }
.mb5 { .mb5 {
margin-bottom: 5px !important; margin-bottom: 5px !important;
} }
@ -159,15 +164,13 @@
.mb30 { .mb30 {
margin-bottom: 30px; margin-bottom: 30px;
} }
.ml0 { .ml0 {
margin-left: 0px !important; margin-left: 0px !important;
} }
.ml5 { .ml5 {
margin-left: 5px; margin-left: 5px;
} }
.ml0 {
margin-left: 0px;
}
.ml10 { .ml10 {
margin-left: 10px !important; margin-left: 10px !important;
} }
@ -177,6 +180,7 @@
.ml30 { .ml30 {
margin-left: 30px !important; margin-left: 30px !important;
} }
.body-blur { .body-blur {
filter: blur(4px); filter: blur(4px);
-webkit-filter: blur(4px); -webkit-filter: blur(4px);
@ -264,7 +268,7 @@
padding: 10px 20px; padding: 10px 20px;
vertical-align: top; vertical-align: top;
border: 1px solid transparent; border: 1px solid transparent;
color: $light-color !important; color: $white-color !important;
background-color: $theme-color !important; background-color: $theme-color !important;
&:hover, &:hover,
@ -277,7 +281,7 @@
&.light { &.light {
color: $theme-color !important; color: $theme-color !important;
background-color: $light-color !important; background-color: $white-color !important;
box-shadow: 0 1px 0 0 #CFCFCF; box-shadow: 0 1px 0 0 #CFCFCF;
border: 1px solid rgba(0,0,0,0.12); border: 1px solid rgba(0,0,0,0.12);
@ -307,8 +311,8 @@
padding: 9px 20px; padding: 9px 20px;
border-radius: 2px; border-radius: 2px;
vertical-align: top; vertical-align: top;
color: $dark-color !important; color: $black-color !important;
background-color: $light-color !important; background-color: $white-color !important;
} }
.sale-btn { .sale-btn {
@ -625,6 +629,7 @@
top: 6px; top: 6px;
position: relative; position: relative;
} }
.text-up-1 { .text-up-1 {
top: -1px; top: -1px;
position: relative; position: relative;
@ -721,7 +726,7 @@ select:focus,
} }
.control-error { .control-error {
color: $color-danger; color: $danger-color;
} }
.mandatory, .mandatory,
@ -732,7 +737,7 @@ select:focus,
content: "*"; content: "*";
font-size: 16px; font-size: 16px;
margin-left: -1px; margin-left: -1px;
color: $color-danger; color: $danger-color;
} }
} }

View File

@ -1,4 +1,3 @@
// Mixins
@mixin box-shadow($shadows...) { @mixin box-shadow($shadows...) {
-webkit-box-shadow: $shadows; -webkit-box-shadow: $shadows;
-moz-box-shadow: $shadows; -moz-box-shadow: $shadows;

View File

@ -1,35 +1,54 @@
/* /*
Added back again because in chrome this is not using and light house also saying not used. |
But in mozilla all fonts are gone which creating problem. | Added back again because in chrome this is not using and light house also saying not used.
| But in mozilla all fonts are gone which creating problem.
|
*/ */
@import url('https://fonts.googleapis.com/css?family=Source+Sans+Pro&display=swap'); @import url('https://fonts.googleapis.com/css?family=Source+Sans+Pro&display=swap');
/* velocity variables */ /*
$white-color: #FFFFFF; |--------------------------------------------------------------------------
$black-color: #111111; | Velocity Variables
$font-color: rgba(0,0,0,0.83); |--------------------------------------------------------------------------
$font-color-light: rgba(255, 255, 255, 0.83); |
$button-primary-bg: #21A179; | Below are all the variables used in Velocity's SCSS.
$border-primary: #269c77; |
$button-danger: #F05153; */
$border-danger: #F05153; /* theme colors */
$color-danger: #F05153;
$border-common: #CCCCCC;
$border-dark: #DCDCDC;
$border-light: #ECECEC;
$border-general: #E5E5E5;
$theme-color: #26A37C; $theme-color: #26A37C;
$theme-dark-color: #247959; $theme-dark-color: #247959;
$btn-text-color: #FFFFFF;
$light-color: #FFFFFF; /* background colors */
$dark-color: #000000; $light-background: #F7F7F9;
$light1-black: #141516;
$light2-black: #cfcfd0; /* font colors */
$font-color: rgba(0,0,0,0.83);
$font-color-light: rgba(255, 255, 255, 0.83);
/* button colors */
$button-danger: #F05153;
$button-primary-bg: #21A179;
$button-text-color: #FFFFFF;
/* border colors */
$border-common: #CCCCCC;
$border-danger: #F05153;
$border-dark: #DCDCDC;
$border-general: #E5E5E5;
$border-light: #ECECEC;
$border-primary: #269c77;
/* link colors */
$link-color: #4D7EA8; $link-color: #4D7EA8;
$light-link-color: #28557B; $light-link-color: #28557B;
$grey-clr: rgba(0,0,0,0.53);
$light-grey-clr: rgb(158, 158, 158); /* remaining colors */
$light-background: #F7F7F9; $black-color: #111111;
$danger-color: #F05153;
$grey-color: rgb(158, 158, 158);
$light1-black: #141516;
$light2-black: #cfcfd0;
$white-color: #FFFFFF;
/* other stuffs */ /* other stuffs */
$sidebar-width: 230px; $sidebar-width: 230px;

View File

@ -205,19 +205,6 @@
@include('shop::products.view.related-products') @include('shop::products.view.related-products')
@include('shop::products.view.up-sells') @include('shop::products.view.up-sells')
</div> </div>
<div class="store-meta-images col-3">
@if(
isset($velocityMetaData['product_view_images'])
&& $velocityMetaData['product_view_images']
)
@foreach (json_decode($velocityMetaData['product_view_images'], true) as $image)
@if ($image && $image !== '')
<img src="{{ url()->to('/') }}/storage/{{ $image }}" alt=""/>
@endif
@endforeach
@endif
</div>
</div> </div>
{!! view_render_event('bagisto.shop.products.view.after', ['product' => $product]) !!} {!! view_render_event('bagisto.shop.products.view.after', ['product' => $product]) !!}
@endsection @endsection

View File

@ -1,3 +1,4 @@
# Rewrite Module
<IfModule mod_rewrite.c> <IfModule mod_rewrite.c>
<IfModule mod_negotiation.c> <IfModule mod_negotiation.c>
Options -MultiViews -Indexes Options -MultiViews -Indexes
@ -20,8 +21,41 @@
RewriteRule ^ index.php [L] RewriteRule ^ index.php [L]
</IfModule> </IfModule>
<IfModule mod_expires.c> # Media Files Cache-Control
<filesMatch ".(css|jpg|jpeg|png|gif|js|svg|ico|webp|ttf)$"> <FilesMatch ".(jpg|jpeg|gif|png|svg|swf|webp)$">
Header set Cache-Control "max-age=31536000, public" <IfModule mod_headers.c>
</filesMatch> Header set Cache-Control "max-age=604800, public"
</IfModule>
</FilesMatch>
# Text Files Cache-Control
<FilesMatch ".(xml|txt|css|js)$">
<IfModule mod_headers.c>
Header set Cache-Control "max-age=604800, proxy-revalidate"
</IfModule>
</FilesMatch>
# Text Compression
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE application/json
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
AddOutputFilterByType DEFLATE application/x-font
AddOutputFilterByType DEFLATE application/x-font-opentype
AddOutputFilterByType DEFLATE application/x-font-otf
AddOutputFilterByType DEFLATE application/x-font-truetype
AddOutputFilterByType DEFLATE application/x-font-ttf
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE font/opentype
AddOutputFilterByType DEFLATE font/otf
AddOutputFilterByType DEFLATE font/ttf
AddOutputFilterByType DEFLATE image/svg+xml
AddOutputFilterByType DEFLATE image/x-icon
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE text/plain
</IfModule> </IfModule>