From 12d68fcb575699eb61608ced14fa5aa506d831c7 Mon Sep 17 00:00:00 2001 From: jitendra Date: Thu, 18 Oct 2018 13:49:03 +0530 Subject: [PATCH] Front currency switcher, currency edit page and locale edit page added --- app/Http/Kernel.php | 2 +- packages/Webkul/Admin/src/Http/routes.php | 16 ++++++ .../Admin/src/Resources/lang/en/app.php | 4 +- .../views/catalog/categories/create.blade.php | 2 +- .../views/catalog/categories/edit.blade.php | 2 +- .../views/catalog/products/edit.blade.php | 2 +- .../settings/currencies/create.blade.php | 6 --- .../views/settings/currencies/edit.blade.php | 50 ++++++++++++++++++ .../views/settings/locales/create.blade.php | 2 +- .../views/settings/locales/edit.blade.php | 50 ++++++++++++++++++ .../Core/src/Contracts/Validations/Code.php | 2 +- packages/Webkul/Core/src/Core.php | 52 +++---------------- ...8_07_20_054502_create_currencies_table.php | 1 - .../Http/Controllers/CurrencyController.php | 37 ++++++++++++- .../src/Http/Controllers/LocaleController.php | 34 ++++++++++++ packages/Webkul/Core/src/Models/Currency.php | 2 +- .../Shop/src/Http/Middleware/Currency.php | 44 ++++++++++++++++ packages/Webkul/Shop/src/Http/routes.php | 2 +- .../src/Providers/ShopServiceProvider.php | 3 +- .../Shop/src/Resources/assets/sass/app.scss | 31 +++++------ .../views/layouts/header/index.blade.php | 21 ++++++++ .../Resources/assets/js/directives/code.vue | 2 +- public/themes/default/assets/css/shop.css | 36 ++++++------- 23 files changed, 301 insertions(+), 102 deletions(-) create mode 100644 packages/Webkul/Admin/src/Resources/views/settings/currencies/edit.blade.php create mode 100644 packages/Webkul/Admin/src/Resources/views/settings/locales/edit.blade.php create mode 100644 packages/Webkul/Shop/src/Http/Middleware/Currency.php 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') +
+ +
+ + +
+
+ @csrf() + + + +
+ +
+ + + + @{{ errors.first('code') }} +
+ +
+ + + @{{ errors.first('name') }} +
+
+
+ +
+
+
+
+@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') +
+ +
+ + +
+
+ @csrf() + + + +
+ +
+ + + + @{{ errors.first('code') }} +
+ +
+ + + @{{ errors.first('name') }} +
+
+
+ +
+
+
+
+@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) +
+ + + +
+ @endif +