From 63f4d08f0f44c951f22316ddb624511071647196 Mon Sep 17 00:00:00 2001 From: Dane Everitt Date: Wed, 20 Jan 2016 22:39:02 -0500 Subject: [PATCH] Add language switching support --- .../Controllers/Base/LanguageController.php | 70 +++++++++++++++++++ app/Http/Kernel.php | 1 + app/Http/Middleware/LanguageMiddleware.php | 60 ++++++++++++++++ app/Http/Routes/LanguageRoutes.php | 38 ++++++++++ 4 files changed, 169 insertions(+) create mode 100644 app/Http/Controllers/Base/LanguageController.php create mode 100644 app/Http/Middleware/LanguageMiddleware.php create mode 100644 app/Http/Routes/LanguageRoutes.php diff --git a/app/Http/Controllers/Base/LanguageController.php b/app/Http/Controllers/Base/LanguageController.php new file mode 100644 index 000000000..c4afc1e50 --- /dev/null +++ b/app/Http/Controllers/Base/LanguageController.php @@ -0,0 +1,70 @@ + + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +namespace Pterodactyl\Http\Controllers\Base; + +use Auth; +use Session; + +use Pterodactyl\Models\User; +use Illuminate\Http\Request; +use Pterodactyl\Http\Controllers\Controller; + +class LanguageController extends Controller +{ + + protected $languages = [ + 'de' => 'Danish', + 'en' => 'English', + 'es' => 'Spanish', + 'fr' => 'French', + 'it' => 'Italian', + 'pl' => 'Polish', + 'pt' => 'Portuguese', + 'ru' => 'Russian', + 'se' => 'Swedish', + 'zh' => 'Chinese', + ]; + + /** + * Controller Constructor + */ + public function __construct() + { + // + } + + public function setLanguage(Request $request, $language) + { + if (array_key_exists($language, $this->languages)) { + if (Auth::check()) { + $user = User::findOrFail(Auth::user()->id); + $user->language = $language; + $user->save(); + } + Session::set('applocale', $language); + } + return redirect()->back(); + } + +} diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php index 513fa4d9d..3ed333627 100644 --- a/app/Http/Kernel.php +++ b/app/Http/Kernel.php @@ -17,6 +17,7 @@ class Kernel extends HttpKernel \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, \Illuminate\Session\Middleware\StartSession::class, \Illuminate\View\Middleware\ShareErrorsFromSession::class, + \Pterodactyl\Http\Middleware\LanguageMiddleware::class, ]; /** diff --git a/app/Http/Middleware/LanguageMiddleware.php b/app/Http/Middleware/LanguageMiddleware.php new file mode 100644 index 000000000..5b52705c6 --- /dev/null +++ b/app/Http/Middleware/LanguageMiddleware.php @@ -0,0 +1,60 @@ + + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +namespace Pterodactyl\Http\Middleware; + +use Auth; +use Closure; +use Session; +use Settings; + +use Illuminate\Support\Facades\App; + +class LanguageMiddleware +{ + + public function __construct() + { + // + } + + /** + * Handle an incoming request. + * + * @param \Illuminate\Http\Request $request + * @param \Closure $next + * @return mixed + */ + public function handle($request, Closure $next) + { + if (Session::has('applocale')) { + App::setLocale(Session::get('applocale')); + } else if(Auth::check() && isset(Auth::user()->language)) { + Session::set('applocale', Auth::user()->language); + App::setLocale(Auth::user()->language); + } else { + App::setLocale(Settings::get('default_language', 'en')); + } + return $next($request); + } +} diff --git a/app/Http/Routes/LanguageRoutes.php b/app/Http/Routes/LanguageRoutes.php new file mode 100644 index 000000000..4989f7ca6 --- /dev/null +++ b/app/Http/Routes/LanguageRoutes.php @@ -0,0 +1,38 @@ + + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +namespace Pterodactyl\Http\Routes; + +use Illuminate\Routing\Router; + +class LanguageRoutes { + + public function map(Router $router) + { + $router->get('language/{lang}', [ + 'as' => 'langauge.set', + 'uses' => 'Base\LanguageController@setLanguage' + ]); + } + +}