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 @@