diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php
index 8537a5535..05992519f 100644
--- a/app/Http/Kernel.php
+++ b/app/Http/Kernel.php
@@ -19,7 +19,7 @@ class Kernel extends HttpKernel
\App\Http\Middleware\TrimStrings::class,
\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
\App\Http\Middleware\TrustProxies::class,
- \Illuminate\Session\Middleware\StartSession::class,
+ // \Illuminate\Session\Middleware\StartSession::class,
];
/**
diff --git a/packages/Webkul/Admin/src/Http/routes.php b/packages/Webkul/Admin/src/Http/routes.php
index 3b82f2c7f..c3e8114de 100644
--- a/packages/Webkul/Admin/src/Http/routes.php
+++ b/packages/Webkul/Admin/src/Http/routes.php
@@ -298,6 +298,14 @@ Route::group(['middleware' => ['web']], function () {
'redirect' => 'admin.locales.index'
])->name('admin.locales.store');
+ Route::get('/locales/edit/{id}', 'Webkul\Core\Http\Controllers\LocaleController@edit')->defaults('_config', [
+ 'view' => 'admin::settings.locales.edit'
+ ])->name('admin.locales.edit');
+
+ Route::put('/locales/edit/{id}', 'Webkul\Core\Http\Controllers\LocaleController@update')->defaults('_config', [
+ 'redirect' => 'admin.locales.index'
+ ])->name('admin.locales.update');
+
Route::get('/locales/delete/{id}', 'Webkul\Core\Http\Controllers\LocaleController@destroy')->name('admin.locales.delete');
@@ -314,6 +322,14 @@ Route::group(['middleware' => ['web']], function () {
'redirect' => 'admin.currencies.index'
])->name('admin.currencies.store');
+ Route::get('/currencies/edit/{id}', 'Webkul\Core\Http\Controllers\CurrencyController@edit')->defaults('_config', [
+ 'view' => 'admin::settings.currencies.edit'
+ ])->name('admin.currencies.edit');
+
+ Route::put('/currencies/edit/{id}', 'Webkul\Core\Http\Controllers\CurrencyController@update')->defaults('_config', [
+ 'redirect' => 'admin.currencies.index'
+ ])->name('admin.currencies.update');
+
Route::get('/currencies/delete/{id}', 'Webkul\Core\Http\Controllers\CurrencyController@destroy')->name('admin.currencies.delete');
diff --git a/packages/Webkul/Admin/src/Resources/lang/en/app.php b/packages/Webkul/Admin/src/Resources/lang/en/app.php
index dbf2d439d..5e4fd888e 100644
--- a/packages/Webkul/Admin/src/Resources/lang/en/app.php
+++ b/packages/Webkul/Admin/src/Resources/lang/en/app.php
@@ -311,8 +311,8 @@ return [
'settings' => [
'locales' => [
'title' => 'Locales',
- 'add-locale-title' => 'Add Locale',
- 'edit-locale-title' => 'Edit Locale',
+ 'add-title' => 'Add Locale',
+ 'edit-title' => 'Edit Locale',
'add-title' => 'Add Locale',
'save-btn-title' => 'Save Locale',
'general' => 'General',
diff --git a/packages/Webkul/Admin/src/Resources/views/catalog/categories/create.blade.php b/packages/Webkul/Admin/src/Resources/views/catalog/categories/create.blade.php
index 4c26d509b..4fcf60eb0 100644
--- a/packages/Webkul/Admin/src/Resources/views/catalog/categories/create.blade.php
+++ b/packages/Webkul/Admin/src/Resources/views/catalog/categories/create.blade.php
@@ -89,7 +89,7 @@
-
+
@{{ errors.first('slug') }}
diff --git a/packages/Webkul/Admin/src/Resources/views/catalog/categories/edit.blade.php b/packages/Webkul/Admin/src/Resources/views/catalog/categories/edit.blade.php
index 0cc75d9e8..2055b3ad0 100644
--- a/packages/Webkul/Admin/src/Resources/views/catalog/categories/edit.blade.php
+++ b/packages/Webkul/Admin/src/Resources/views/catalog/categories/edit.blade.php
@@ -102,7 +102,7 @@
-
+
@{{ errors.first('{!!$locale!!}[slug]') }}
diff --git a/packages/Webkul/Admin/src/Resources/views/catalog/products/edit.blade.php b/packages/Webkul/Admin/src/Resources/views/catalog/products/edit.blade.php
index 22b0820df..a26f04d62 100644
--- a/packages/Webkul/Admin/src/Resources/views/catalog/products/edit.blade.php
+++ b/packages/Webkul/Admin/src/Resources/views/catalog/products/edit.blade.php
@@ -88,7 +88,7 @@
{{ $attribute->admin_name }}
@if ($attribute->type == 'price')
- ({{ core()->getBaseCurrencySymbol() }})
+ ({{ currency()->symbol(core()->getBaseCurrencyCode()) }})
@endif
@{{ errors.first('name') }}
-
-
-
-
- @{{ errors.first('symbol') }}
-
diff --git a/packages/Webkul/Admin/src/Resources/views/settings/currencies/edit.blade.php b/packages/Webkul/Admin/src/Resources/views/settings/currencies/edit.blade.php
new file mode 100644
index 000000000..002f919d4
--- /dev/null
+++ b/packages/Webkul/Admin/src/Resources/views/settings/currencies/edit.blade.php
@@ -0,0 +1,50 @@
+@extends('admin::layouts.content')
+
+@section('page_title')
+ {{ __('admin::app.settings.currencies.edit-title') }}
+@stop
+
+@section('content')
+
+@stop
\ No newline at end of file
diff --git a/packages/Webkul/Admin/src/Resources/views/settings/locales/create.blade.php b/packages/Webkul/Admin/src/Resources/views/settings/locales/create.blade.php
index f4bf97d2b..4a9abb012 100644
--- a/packages/Webkul/Admin/src/Resources/views/settings/locales/create.blade.php
+++ b/packages/Webkul/Admin/src/Resources/views/settings/locales/create.blade.php
@@ -1,7 +1,7 @@
@extends('admin::layouts.content')
@section('page_title')
- {{ __('admin::app.settings.locales.add-locale-title') }}
+ {{ __('admin::app.settings.locales.add-title') }}
@stop
@section('content')
diff --git a/packages/Webkul/Admin/src/Resources/views/settings/locales/edit.blade.php b/packages/Webkul/Admin/src/Resources/views/settings/locales/edit.blade.php
new file mode 100644
index 000000000..418bfbe6e
--- /dev/null
+++ b/packages/Webkul/Admin/src/Resources/views/settings/locales/edit.blade.php
@@ -0,0 +1,50 @@
+@extends('admin::layouts.content')
+
+@section('page_title')
+ {{ __('admin::app.settings.locales.edit-title') }}
+@stop
+
+@section('content')
+
+@stop
\ No newline at end of file
diff --git a/packages/Webkul/Core/src/Contracts/Validations/Code.php b/packages/Webkul/Core/src/Contracts/Validations/Code.php
index 03311fa76..e77e7c7b5 100644
--- a/packages/Webkul/Core/src/Contracts/Validations/Code.php
+++ b/packages/Webkul/Core/src/Contracts/Validations/Code.php
@@ -15,7 +15,7 @@ class Code implements Rule
*/
public function passes($attribute, $value)
{
- return preg_match('/^[a-z]+[a-z0-9_]+$/', $value);
+ return preg_match('/^[a-zA-Z]+[a-zA-Z0-9_]+$/', $value);
}
/**
diff --git a/packages/Webkul/Core/src/Core.php b/packages/Webkul/Core/src/Core.php
index 54c234b5f..26126db19 100644
--- a/packages/Webkul/Core/src/Core.php
+++ b/packages/Webkul/Core/src/Core.php
@@ -237,21 +237,6 @@ class Core
return ($currency = $this->getBaseCurrency()) ? $currencyCode = $currency->code : '';
}
- /**
- * Returns base channel's currency symbol
- *
- * @return string
- */
- public function getBaseCurrencySymbol()
- {
- static $currencySymbol;
-
- if($currencySymbol)
- return $currencySymbol;
-
- return $currencySymbol = $this->getBaseCurrency()->symbol ?? $this->getBaseCurrencyCode();
- }
-
/**
* Returns base channel's currency model
*
@@ -284,21 +269,6 @@ class Core
return ($currency = $this->getChannelBaseCurrency()) ? $currencyCode = $currency->code : '';
}
- /**
- * Returns base channel's currency symbol
- *
- * @return string
- */
- public function getChannelBaseCurrencySymbol()
- {
- static $currencySymbol;
-
- if($currencySymbol)
- return $currencySymbol;
-
- return $currencySymbol = $this->getChannelBaseCurrency()->symbol;
- }
-
/**
* Returns current channel's currency model
*
@@ -311,7 +281,12 @@ class Core
if($currency)
return $currency;
- return $currency = $this->currencyRepository->first();
+ if($currencyCode = session()->get('currency')) {
+ if($currency = $this->currencyRepository->findOneByField('code', $currencyCode))
+ return $currency;
+ }
+
+ return $currency = $this->getChannelBaseCurrency();
}
/**
@@ -329,21 +304,6 @@ class Core
return ($currency = $this->getCurrentCurrency()) ? $currencyCode = $currency->code : '';
}
- /**
- * Returns current channel's currency symbol
- *
- * @return string
- */
- public function getCurrentCurrencySymbol()
- {
- static $currencySymbol;
-
- if($currencySymbol)
- return $currencySymbol;
-
- return $currencySymbol = $this->getCurrentCurrency()->symbol;
- }
-
/**
* Converts price
*
diff --git a/packages/Webkul/Core/src/Database/Migrations/2018_07_20_054502_create_currencies_table.php b/packages/Webkul/Core/src/Database/Migrations/2018_07_20_054502_create_currencies_table.php
index 010961fff..5d8dc5af5 100644
--- a/packages/Webkul/Core/src/Database/Migrations/2018_07_20_054502_create_currencies_table.php
+++ b/packages/Webkul/Core/src/Database/Migrations/2018_07_20_054502_create_currencies_table.php
@@ -16,7 +16,6 @@ class CreateCurrenciesTable extends Migration
Schema::create('currencies', function (Blueprint $table) {
$table->increments('id');
$table->string('code');
- $table->string('symbol');
$table->string('name');
$table->timestamps();
});
diff --git a/packages/Webkul/Core/src/Http/Controllers/CurrencyController.php b/packages/Webkul/Core/src/Http/Controllers/CurrencyController.php
index 3c41908a2..a2be0789a 100644
--- a/packages/Webkul/Core/src/Http/Controllers/CurrencyController.php
+++ b/packages/Webkul/Core/src/Http/Controllers/CurrencyController.php
@@ -73,8 +73,7 @@ class CurrencyController extends Controller
{
$this->validate(request(), [
'code' => 'required|unique:countries,code',
- 'name' => 'required',
- 'symbol' => 'required'
+ 'name' => 'required'
]);
$this->currency->create(request()->all());
@@ -84,6 +83,40 @@ class CurrencyController extends Controller
return redirect()->route($this->_config['redirect']);
}
+ /**
+ * Show the form for editing the specified resource.
+ *
+ * @param int $id
+ * @return \Illuminate\Http\Response
+ */
+ public function edit($id)
+ {
+ $currency = $this->currency->find($id);
+
+ return view($this->_config['view'], compact('currency'));
+ }
+
+ /**
+ * Update the specified resource in storage.
+ *
+ * @param \Illuminate\Http\Request $request
+ * @param int $id
+ * @return \Illuminate\Http\Response
+ */
+ public function update(Request $request, $id)
+ {
+ $this->validate(request(), [
+ 'code' => ['required', 'unique:currencies,code,' . $id, new \Webkul\Core\Contracts\Validations\Code],
+ 'name' => 'required'
+ ]);
+
+ $this->currency->update(request()->all(), $id);
+
+ session()->flash('success', 'Currency updated successfully.');
+
+ return redirect()->route($this->_config['redirect']);
+ }
+
/**
* Remove the specified resource from storage.
*
diff --git a/packages/Webkul/Core/src/Http/Controllers/LocaleController.php b/packages/Webkul/Core/src/Http/Controllers/LocaleController.php
index 2cbf71847..bdc77fdee 100644
--- a/packages/Webkul/Core/src/Http/Controllers/LocaleController.php
+++ b/packages/Webkul/Core/src/Http/Controllers/LocaleController.php
@@ -83,6 +83,40 @@ class LocaleController extends Controller
return redirect()->route($this->_config['redirect']);
}
+ /**
+ * Show the form for editing the specified resource.
+ *
+ * @param int $id
+ * @return \Illuminate\Http\Response
+ */
+ public function edit($id)
+ {
+ $locale = $this->locale->find($id);
+
+ return view($this->_config['view'], compact('locale'));
+ }
+
+ /**
+ * Update the specified resource in storage.
+ *
+ * @param \Illuminate\Http\Request $request
+ * @param int $id
+ * @return \Illuminate\Http\Response
+ */
+ public function update(Request $request, $id)
+ {
+ $this->validate(request(), [
+ 'code' => ['required', 'unique:locales,code,' . $id, new \Webkul\Core\Contracts\Validations\Code],
+ 'name' => 'required'
+ ]);
+
+ $this->locale->update(request()->all(), $id);
+
+ session()->flash('success', 'Locale updated successfully.');
+
+ return redirect()->route($this->_config['redirect']);
+ }
+
/**
* Remove the specified resource from storage.
*
diff --git a/packages/Webkul/Core/src/Models/Currency.php b/packages/Webkul/Core/src/Models/Currency.php
index 6b58d0ac0..787b55459 100644
--- a/packages/Webkul/Core/src/Models/Currency.php
+++ b/packages/Webkul/Core/src/Models/Currency.php
@@ -12,6 +12,6 @@ class Currency extends Model
* @var array
*/
protected $fillable = [
- 'code', 'name', 'symbol'
+ 'code', 'name'
];
}
\ No newline at end of file
diff --git a/packages/Webkul/Shop/src/Http/Middleware/Currency.php b/packages/Webkul/Shop/src/Http/Middleware/Currency.php
new file mode 100644
index 000000000..3f8b5ca55
--- /dev/null
+++ b/packages/Webkul/Shop/src/Http/Middleware/Currency.php
@@ -0,0 +1,44 @@
+currency = $currency;
+ }
+
+ /**
+ * Handle an incoming request.
+ *
+ * @param \Illuminate\Http\Request $request
+ * @param \Closure $next
+ * @return mixed
+ */
+ public function handle($request, Closure $next)
+ {
+ if($currency = $request->get('currency')) {
+ if($this->currency->findOneByField('code', $currency)) {
+ session()->put('currency', $currency);
+ }
+ } else {
+ if(!session()->get('currency')) {
+ session()->put('currency', core()->getChannelBaseCurrencyCode());
+ }
+ }
+
+ 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 a2da19300..2cdafeb71 100644
--- a/packages/Webkul/Shop/src/Http/routes.php
+++ b/packages/Webkul/Shop/src/Http/routes.php
@@ -1,6 +1,6 @@
['web', 'theme', 'locale']], function () {
+Route::group(['middleware' => ['web', 'theme', 'locale', 'currency']], 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 ab2f2e477..1053d5dff 100644
--- a/packages/Webkul/Shop/src/Providers/ShopServiceProvider.php
+++ b/packages/Webkul/Shop/src/Providers/ShopServiceProvider.php
@@ -8,6 +8,7 @@ use Illuminate\Routing\Router;
use Illuminate\Support\Facades\Blade;
use Webkul\Shop\Http\Middleware\Locale;
use Webkul\Shop\Http\Middleware\Theme;
+use Webkul\Shop\Http\Middleware\Currency;
use Webkul\Shop\Providers\ComposerServiceProvider;
use Webkul\Ui\Menu;
@@ -31,8 +32,8 @@ class ShopServiceProvider extends ServiceProvider
$this->loadViewsFrom(__DIR__ . '/../Resources/views', 'shop');
$router->aliasMiddleware('locale', Locale::class);
-
$router->aliasMiddleware('theme', Theme::class);
+ $router->aliasMiddleware('currency', Currency::class);
$this->app->register(ComposerServiceProvider::class);
diff --git a/packages/Webkul/Shop/src/Resources/assets/sass/app.scss b/packages/Webkul/Shop/src/Resources/assets/sass/app.scss
index b5e7d6337..9e62189cb 100644
--- a/packages/Webkul/Shop/src/Resources/assets/sass/app.scss
+++ b/packages/Webkul/Shop/src/Resources/assets/sass/app.scss
@@ -391,6 +391,21 @@ section.slider-block {
align-items: center;
// cursor: pointer;
+ .currency-switcher {
+ float: right;
+ border-right: 2px solid $border-color;
+ cursor: pointer;
+
+ .dropdown-list {
+ width: 100px;
+ top: 37px;
+
+ .dropdown-container {
+ padding: 0 10px;
+ }
+ }
+ }
+
ul.account-dropdown-container {
float: right;
border-right: 2px solid $border-color;
@@ -399,6 +414,7 @@ section.slider-block {
display: flex;
flex-direction: row;
margin-right: 14px;
+ margin-left: 14px;
.dropdown-list {
width: 300px;
@@ -622,21 +638,6 @@ section.slider-block {
display: none;
}
- .nav > li:last-child {
- display:flex; align-items:center;
- border-radius: 0 0 4px 0;
- float:right;
- display: none;
-
- img {
- margin-right:6px;
- }
- }
-
- .nav > li:last-child > a {
- border-radius: 0 4px 0 0;
- }
-
.nav li li a {
margin-top: 1px;
}
diff --git a/packages/Webkul/Shop/src/Resources/views/layouts/header/index.blade.php b/packages/Webkul/Shop/src/Resources/views/layouts/header/index.blade.php
index 2f0b3455d..0136b76a3 100644
--- a/packages/Webkul/Shop/src/Resources/views/layouts/header/index.blade.php
+++ b/packages/Webkul/Shop/src/Resources/views/layouts/header/index.blade.php
@@ -25,6 +25,27 @@
+ @if (core()->getCurrentChannel()->currencies->count() > 1)
+
+
+ USD
+
+
+
+
+
+
+ @foreach (core()->getCurrentChannel()->currencies as $currency)
+ -
+ {{ $currency->code }}
+
+ @endforeach
+
+
+
+
+ @endif
+
-
diff --git a/packages/Webkul/Ui/src/Resources/assets/js/directives/code.vue b/packages/Webkul/Ui/src/Resources/assets/js/directives/code.vue
index 31c048778..473121418 100644
--- a/packages/Webkul/Ui/src/Resources/assets/js/directives/code.vue
+++ b/packages/Webkul/Ui/src/Resources/assets/js/directives/code.vue
@@ -3,7 +3,7 @@
bind(el, binding, vnode) {
let handler = function(e) {
setTimeout(function() {
- e.target.value = e.target.value.toString().toLowerCase()
+ e.target.value = e.target.value.toString()
.replace(/[^\w_ ]+/g,'')
.trim()
.replace(/ +/g,'-');
diff --git a/public/themes/default/assets/css/shop.css b/public/themes/default/assets/css/shop.css
index b181cfa3e..d41f65326 100644
--- a/public/themes/default/assets/css/shop.css
+++ b/public/themes/default/assets/css/shop.css
@@ -956,6 +956,21 @@ section.slider-block div.slider-content div.slider-control .light-right-icon {
align-items: center;
}
+.header .header-top div.right-content .currency-switcher {
+ float: right;
+ border-right: 2px solid #C7C7C7;
+ cursor: pointer;
+}
+
+.header .header-top div.right-content .currency-switcher .dropdown-list {
+ width: 100px;
+ top: 37px;
+}
+
+.header .header-top div.right-content .currency-switcher .dropdown-list .dropdown-container {
+ padding: 0 10px;
+}
+
.header .header-top div.right-content ul.account-dropdown-container {
float: right;
border-right: 2px solid #C7C7C7;
@@ -970,6 +985,7 @@ section.slider-block div.slider-content div.slider-control .light-right-icon {
-ms-flex-direction: row;
flex-direction: row;
margin-right: 14px;
+ margin-left: 14px;
}
.header .header-top div.right-content ul.account-dropdown-container li.account-dropdown .dropdown-list {
@@ -1222,26 +1238,6 @@ section.slider-block div.slider-content div.slider-control .light-right-icon {
display: none;
}
-.header .header-bottom .nav > li:last-child {
- display: -webkit-box;
- display: -ms-flexbox;
- display: flex;
- -webkit-box-align: center;
- -ms-flex-align: center;
- align-items: center;
- border-radius: 0 0 4px 0;
- float: right;
- display: none;
-}
-
-.header .header-bottom .nav > li:last-child img {
- margin-right: 6px;
-}
-
-.header .header-bottom .nav > li:last-child > a {
- border-radius: 0 4px 0 0;
-}
-
.header .header-bottom .nav li li a {
margin-top: 1px;
}