diff --git a/packages/Webkul/Admin/src/Http/routes.php b/packages/Webkul/Admin/src/Http/routes.php index 48b4ee63f..2fd906573 100644 --- a/packages/Webkul/Admin/src/Http/routes.php +++ b/packages/Webkul/Admin/src/Http/routes.php @@ -31,7 +31,7 @@ Route::group(['middleware' => ['web']], function () { // Admin Routes - Route::group(['middleware' => ['admin', 'locale']], function () { + Route::group(['middleware' => ['admin']], function () { Route::get('/logout', 'Webkul\User\Http\Controllers\SessionController@destroy')->defaults('_config', [ 'redirect' => 'admin.session.create' ])->name('admin.session.destroy'); diff --git a/packages/Webkul/Admin/src/Resources/lang/en/app.php b/packages/Webkul/Admin/src/Resources/lang/en/app.php index 9730a95db..515ecbe70 100644 --- a/packages/Webkul/Admin/src/Resources/lang/en/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/en/app.php @@ -383,6 +383,7 @@ return [ 'code' => 'Code', 'name' => 'Name', 'description' => 'Description', + 'hostname' => 'Hostname', 'currencies-and-locales' => 'Currencies and Locales', 'locales' => 'Locales', 'default-locale' => 'Default Locale', diff --git a/packages/Webkul/Admin/src/Resources/views/settings/channels/create.blade.php b/packages/Webkul/Admin/src/Resources/views/settings/channels/create.blade.php index e962920c9..b41973d8b 100644 --- a/packages/Webkul/Admin/src/Resources/views/settings/channels/create.blade.php +++ b/packages/Webkul/Admin/src/Resources/views/settings/channels/create.blade.php @@ -45,6 +45,11 @@ @{{ errors.first('description') }} +
+ + +
+ diff --git a/packages/Webkul/Admin/src/Resources/views/settings/channels/edit.blade.php b/packages/Webkul/Admin/src/Resources/views/settings/channels/edit.blade.php index 1603039be..7ca570905 100644 --- a/packages/Webkul/Admin/src/Resources/views/settings/channels/edit.blade.php +++ b/packages/Webkul/Admin/src/Resources/views/settings/channels/edit.blade.php @@ -47,6 +47,11 @@ @{{ errors.first('description') }} +
+ + +
+ diff --git a/packages/Webkul/Core/src/Core.php b/packages/Webkul/Core/src/Core.php index b158e4602..54c234b5f 100644 --- a/packages/Webkul/Core/src/Core.php +++ b/packages/Webkul/Core/src/Core.php @@ -93,7 +93,8 @@ class Core * * @return Collection */ - public function getAllChannels() { + public function getAllChannels() + { static $channels; if($channels) @@ -107,13 +108,23 @@ class Core * * @return mixed */ - public function getCurrentChannel() { + public function getCurrentChannel() + { static $channel; if($channel) return $channel; - return $channel = $this->channelRepository->first(); + $channel = $this->channelRepository->findWhereIn('hostname', [ + request()->getHttpHost(), + 'http://' . request()->getHttpHost(), + 'https://' . request()->getHttpHost() + ])->first(); + + if(!$channel) + $channel = $this->channelRepository->first(); + + return $channel; } /** @@ -121,7 +132,8 @@ class Core * * @return string */ - public function getCurrentChannelCode() { + public function getCurrentChannelCode() + { static $channelCode; if($channelCode) @@ -135,7 +147,8 @@ class Core * * @return mixed */ - public function getDefaultChannel() { + public function getDefaultChannel() + { static $channel; if($channel) @@ -149,7 +162,8 @@ class Core * * @return string */ - public function getDefaultChannelCode() { + public function getDefaultChannelCode() + { static $channelCode; if($channelCode) @@ -163,7 +177,8 @@ class Core * * @return Collection */ - public function getAllLocales() { + public function getAllLocales() + { static $locales; if($locales) diff --git a/packages/Webkul/Core/src/Models/Channel.php b/packages/Webkul/Core/src/Models/Channel.php index 07cddf191..5bf90353d 100644 --- a/packages/Webkul/Core/src/Models/Channel.php +++ b/packages/Webkul/Core/src/Models/Channel.php @@ -9,7 +9,7 @@ use Illuminate\Support\Facades\Storage; class Channel extends Model { - protected $fillable = ['code', 'name', 'description', 'default_locale_id', 'base_currency_id', 'theme']; + protected $fillable = ['code', 'name', 'description', 'theme', 'hostname', 'default_locale_id', 'base_currency_id']; /** * Get the channel locales. diff --git a/packages/Webkul/Core/src/Providers/CoreServiceProvider.php b/packages/Webkul/Core/src/Providers/CoreServiceProvider.php index 82b05cff1..fbf290a81 100644 --- a/packages/Webkul/Core/src/Providers/CoreServiceProvider.php +++ b/packages/Webkul/Core/src/Providers/CoreServiceProvider.php @@ -1,10 +1,11 @@ loadTranslationsFrom(__DIR__ . '/../Resources/lang', 'core'); - $router->aliasMiddleware('locale', Locale::class); - Validator::extend('slug', 'Webkul\Core\Contracts\Validations\Slug@passes'); Validator::extend('code', 'Webkul\Core\Contracts\Validations\Code@passes'); diff --git a/packages/Webkul/Core/src/Http/Middleware/Locale.php b/packages/Webkul/Shop/src/Http/Middleware/Locale.php similarity index 70% rename from packages/Webkul/Core/src/Http/Middleware/Locale.php rename to packages/Webkul/Shop/src/Http/Middleware/Locale.php index 8b128eabc..90d420624 100644 --- a/packages/Webkul/Core/src/Http/Middleware/Locale.php +++ b/packages/Webkul/Shop/src/Http/Middleware/Locale.php @@ -1,15 +1,14 @@ get('locale')) { if($this->locale->findOneByField('code', $locale)) { - // app()->setLocale($locale); + app()->setLocale($locale); + + session()->put('locale', $locale); + } + } else { + if($locale = session()->get('locale')) { + app()->setLocale($locale); } } diff --git a/packages/Webkul/Shop/src/Http/Middleware/Theme.php b/packages/Webkul/Shop/src/Http/Middleware/Theme.php new file mode 100644 index 000000000..0a64ad59f --- /dev/null +++ b/packages/Webkul/Shop/src/Http/Middleware/Theme.php @@ -0,0 +1,29 @@ +getCurrentChannel(); + + if($channel && $channelThemeCode = $channel->theme) { + if($theme->exists($channelThemeCode)) { + $theme->set($channelThemeCode); + } + } + + return $next($request); + } +} \ No newline at end of file diff --git a/packages/Webkul/Shop/src/Http/routes.php b/packages/Webkul/Shop/src/Http/routes.php index 444862394..a2da19300 100644 --- a/packages/Webkul/Shop/src/Http/routes.php +++ b/packages/Webkul/Shop/src/Http/routes.php @@ -1,6 +1,6 @@ ['web']], function () { +Route::group(['middleware' => ['web', 'theme', 'locale']], function () { Route::get('/', 'Webkul\Shop\Http\Controllers\HomeController@index')->defaults('_config', [ 'view' => 'shop::home.index' diff --git a/packages/Webkul/Shop/src/Providers/ShopServiceProvider.php b/packages/Webkul/Shop/src/Providers/ShopServiceProvider.php index ac4fbc117..ab2f2e477 100644 --- a/packages/Webkul/Shop/src/Providers/ShopServiceProvider.php +++ b/packages/Webkul/Shop/src/Providers/ShopServiceProvider.php @@ -6,6 +6,8 @@ use Illuminate\Support\ServiceProvider; use Illuminate\Support\Facades\Event; use Illuminate\Routing\Router; use Illuminate\Support\Facades\Blade; +use Webkul\Shop\Http\Middleware\Locale; +use Webkul\Shop\Http\Middleware\Theme; use Webkul\Shop\Providers\ComposerServiceProvider; use Webkul\Ui\Menu; @@ -16,7 +18,7 @@ class ShopServiceProvider extends ServiceProvider * * @return void */ - public function boot() + public function boot(Router $router) { include __DIR__ . '/../Http/routes.php'; @@ -28,6 +30,10 @@ class ShopServiceProvider extends ServiceProvider $this->loadViewsFrom(__DIR__ . '/../Resources/views', 'shop'); + $router->aliasMiddleware('locale', Locale::class); + + $router->aliasMiddleware('theme', Theme::class); + $this->app->register(ComposerServiceProvider::class); $this->composeView(); diff --git a/packages/Webkul/Shop/src/Resources/assets/sass/app.scss b/packages/Webkul/Shop/src/Resources/assets/sass/app.scss index ea56ef229..3edc7d67e 100644 --- a/packages/Webkul/Shop/src/Resources/assets/sass/app.scss +++ b/packages/Webkul/Shop/src/Resources/assets/sass/app.scss @@ -17,7 +17,113 @@ display: block; } + // product card, requires no changes for responsiveness. + .product-grid-4 { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(235px, 1fr)); + grid-auto-rows: auto; + grid-column-gap: 48px; + grid-row-gap: 15px; + } + + .product-grid-3 { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(235px, 1fr)); + grid-gap: 27px; + grid-auto-rows: auto; + } + + @media only screen and (max-width: 854px) { + .product-grid-4 { + grid-template-columns: 29.5% 29.5% 29.5%; + grid-column-gap: 35px; + } + } + + @media only screen and (max-width: 653px) { + .product-grid-4 { + grid-template-columns: 48.5% 48.5%; + grid-column-gap: 17px; + } + } + + .product-card { + position: relative; + + .product-image { + max-height: 350px; + max-width: 280px; + margin-bottom: 10px; + background: #F2F2F2; + + img { + display: block; + width: 100%; + } + } + + .product-name { + margin-bottom: 14px; + width: 100%; + color: $font-color; + + a { + color: $font-color; + } + } + + .product-description { + display: none; + } + + .product-ratings { + width: 100%; + + .icon { + width: 16px; + height: 16px; + } + } + + .cart-wish-wrap { + display: inline-flex; + justify-content: flex-start; + align-items: center; + height: 40px; + + .addtocart { + margin-right: 10px; + text-transform: uppercase; + } + + .add-to-wishlist { + margin-top: 5px; + } + } + + .sticker { + border-radius: 100px; + position: absolute; + top: 10px; + left: 10px; + text-transform: uppercase; + padding: 4px 13px; + font-size: 14px; + color: #fff; + + &.sale { + background: #FF6472; + } + + &.new { + background: #2ED04C; + } + } + } + .product-list { + min-height: 200px; + .product-card { width: 100%; display: inline-block; @@ -43,6 +149,12 @@ margin-bottom: 0; } } + + &.empty { + h2 { + font-size: 20px; + } + } } section.featured-products { @@ -182,11 +294,8 @@ section.slider-block { //responsive css for slider @media only screen and (max-width: 770px) { - section.slider-block { - div.slider-content { - div.slider-control { display: flex; justify-content:space-between; @@ -737,21 +846,19 @@ section.slider-block { } .form-container { - padding-top: 10px; + padding-top: 5px; .control-group { - margin: 0; - .subscribe-field { width: 100%; - } - .subscribe-field::-webkit-input-placeholder { - font-family: "montserrat", sans-serif; - } + &::-webkit-input-placeholder { + font-family: "montserrat", sans-serif; + } - .subscribe-field::-moz-placeholder { - font-family: "montserrat", sans-serif; + &::-moz-placeholder { + font-family: "montserrat", sans-serif; + } } .btn-primary { @@ -760,6 +867,10 @@ section.slider-block { border-radius: 0px; text-align: center; } + + .locale-switcher { + width: 100%; + } } } } @@ -995,6 +1106,7 @@ section.product-detail { width: 49%; background: black; white-space: nowrap; + text-transform: uppercase; } .buynow { @@ -1002,6 +1114,7 @@ section.product-detail { width: 49%; float:right; white-space: nowrap; + text-transform: uppercase; } } } diff --git a/packages/Webkul/Shop/src/Resources/assets/sass/components.scss b/packages/Webkul/Shop/src/Resources/assets/sass/components.scss index de24f9f32..b4c9bfa0a 100644 --- a/packages/Webkul/Shop/src/Resources/assets/sass/components.scss +++ b/packages/Webkul/Shop/src/Resources/assets/sass/components.scss @@ -1,86 +1,4 @@ -.product-card { - .product-image { - max-height: 350px; - max-width: 280px; - margin-bottom: 10px; - background: #F2F2F2; - - img { - display: block; - width: 100%; - } - } - - .product-name { - margin-bottom: 14px; - width: 100%; - color: $font-color; - - a { - color: $font-color; - } - } - - .product-description { - display: none; - } - - .product-ratings { - width: 100%; - - .icon { - width: 16px; - height: 16px; - } - } - - .cart-wish-wrap { - display: inline-flex; - justify-content: flex-start; - align-items: center; - height: 40px; - - .addtocart { - margin-right: 10px; - text-transform: uppercase; - } - - .add-to-wishlist { - margin-top: 5px; - } - } -} - -// product card, requires no changes for responsiveness. -.product-grid-4 { - display: grid; - grid-template-columns: repeat(auto-fill, minmax(235px, 1fr)); - grid-auto-rows: auto; - grid-column-gap: 48px; - grid-row-gap: 15px; -} - -.product-grid-3 { - display: grid; - grid-template-columns: repeat(auto-fill, minmax(235px, 1fr)); - grid-gap: 27px; - grid-auto-rows: auto; -} - -@media only screen and (max-width: 854px) { - .product-grid-4 { - grid-template-columns: 29.5% 29.5% 29.5%; - grid-column-gap: 35px; - } -} - -@media only screen and (max-width: 653px) { - .product-grid-4 { - grid-template-columns: 48.5% 48.5%; - grid-column-gap: 17px; - } -} @media only screen and (max-width: 425px) { .product-card { diff --git a/packages/Webkul/Shop/src/Resources/lang/en/app.php b/packages/Webkul/Shop/src/Resources/lang/en/app.php index 879c8df7d..eba7c0777 100644 --- a/packages/Webkul/Shop/src/Resources/lang/en/app.php +++ b/packages/Webkul/Shop/src/Resources/lang/en/app.php @@ -4,11 +4,13 @@ return [ 'home' => [ 'page-title' => 'Bagisto - Home', 'featured-products' => 'Featured Products', - 'new-products' => 'New Products', + 'new-products' => 'New Products' + ], - 'product-card' => [ - 'add-to-cart' => 'ADD TO CART' - ] + 'footer' => [ + 'subscribe-newsletter' => 'Subscribe Newsletter', + 'subscribe' => 'Subscribe', + 'locale' => 'Locale', ], 'reviews' => [ @@ -192,7 +194,13 @@ return [ 'up-sell-title' => 'We found other products you might like!', 'reviews-title' => 'Ratings & Reviews', 'write-review-btn' => 'Write Review', - 'choose-option' => 'Choose an option' + 'choose-option' => 'Choose an option', + 'sale' => 'Sale', + 'new' => 'New', + 'empty' => 'No products available in this category.', + 'add-to-cart' => 'Add To Cart', + 'buy-now' => 'Buy Now', + 'whoops' => 'Whoops!' ], 'wishlist' => [ @@ -213,7 +221,8 @@ return [ ], 'title' => 'Shopping Cart', - 'empty' => 'Shopping Cart Is Empty', + 'empty' => 'Your shopping cart is empty.', + 'update-cart' => 'Update Cart', 'continue-shopping' => 'Continue Shopping', 'proceed-to-checkout' => 'Proceed To Checkout', 'remove' => 'Remove', diff --git a/packages/Webkul/Shop/src/Resources/views/checkout/cart/index.blade.php b/packages/Webkul/Shop/src/Resources/views/checkout/cart/index.blade.php index 53ac65869..f8b072085 100644 --- a/packages/Webkul/Shop/src/Resources/views/checkout/cart/index.blade.php +++ b/packages/Webkul/Shop/src/Resources/views/checkout/cart/index.blade.php @@ -22,7 +22,9 @@
+ @csrf + @foreach($cart->items as $item) @endforeach
+
{{ __('shop::app.checkout.cart.continue-shopping') }}
- + @if (!cart()->hasError()) @@ -96,9 +101,21 @@ @include('shop::checkout.total.summary', ['cart' => $cart])
+ @else +
- {{ __('shop::app.checkout.cart.empty') }} + {{ __('shop::app.checkout.cart.title') }} +
+ +
+

+ {{ __('shop::app.checkout.cart.empty') }} +

+ +

+ {{ __('shop::app.checkout.cart.continue-shopping') }} +

@endif diff --git a/packages/Webkul/Shop/src/Resources/views/layouts/footer/footer.blade.php b/packages/Webkul/Shop/src/Resources/views/layouts/footer/footer.blade.php index d6c7daa5b..a16555a2f 100644 --- a/packages/Webkul/Shop/src/Resources/views/layouts/footer/footer.blade.php +++ b/packages/Webkul/Shop/src/Resources/views/layouts/footer/footer.blade.php @@ -3,14 +3,17 @@