mirror of
https://github.com/getnamingo/registry.git
synced 2025-05-10 16:58:34 +02:00
Added language selector at the panel
This commit is contained in:
parent
01caf929a1
commit
75073dae34
4 changed files with 44 additions and 18 deletions
|
@ -9,10 +9,10 @@ use Psr\Container\ContainerInterface;
|
|||
|
||||
class HomeController extends Controller
|
||||
{
|
||||
public function index(Request $request, Response $response)
|
||||
{
|
||||
public function index(Request $request, Response $response)
|
||||
{
|
||||
return view($response,'index.twig');
|
||||
}
|
||||
}
|
||||
|
||||
public function dashboard(Request $request, Response $response)
|
||||
{
|
||||
|
@ -23,11 +23,11 @@ class HomeController extends Controller
|
|||
|
||||
public function mode(Request $request, Response $response)
|
||||
{
|
||||
if ($_SESSION['_screen_mode'] == 'dark') {
|
||||
$_SESSION['_screen_mode'] = 'light';
|
||||
} else {
|
||||
$_SESSION['_screen_mode'] = 'dark';
|
||||
}
|
||||
if ($_SESSION['_screen_mode'] == 'dark') {
|
||||
$_SESSION['_screen_mode'] = 'light';
|
||||
} else {
|
||||
$_SESSION['_screen_mode'] = 'dark';
|
||||
}
|
||||
$referer = $request->getHeaderLine('Referer');
|
||||
if (!empty($referer)) {
|
||||
return $response->withHeader('Location', $referer)->withStatus(302);
|
||||
|
@ -44,4 +44,19 @@ class HomeController extends Controller
|
|||
|
||||
return $psrResponse;
|
||||
}
|
||||
|
||||
public function lang(Request $request, Response $response)
|
||||
{
|
||||
$data = $request->getQueryParams();
|
||||
if (!empty($data)) {
|
||||
$_SESSION['_lang'] = array_key_first($data);
|
||||
} else {
|
||||
unset($_SESSION['_lang']);
|
||||
}
|
||||
$referer = $request->getHeaderLine('Referer');
|
||||
if (!empty($referer)) {
|
||||
return $response->withHeader('Location', $referer)->withStatus(302);
|
||||
}
|
||||
return $response->withHeader('Location', '/dashboard')->withStatus(302);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -44,11 +44,18 @@ $routeParser = $app->getRouteCollector()->getRouteParser();
|
|||
|
||||
require_once __DIR__ . '/database.php';
|
||||
|
||||
$desiredLanguage = 'en_US'; // Default language
|
||||
// Known set of languages
|
||||
$allowedLanguages = ['en_US', 'uk_UA', 'es_ES']; // Add more as needed
|
||||
|
||||
// Check for a URL parameter
|
||||
if (isset($_GET['lang'])) {
|
||||
$desiredLanguage = $_GET['lang'];
|
||||
if (isset($_SESSION['_lang']) && in_array($_SESSION['_lang'], $allowedLanguages)) {
|
||||
// Use regex to validate the format: two letters, underscore, two letters
|
||||
if (preg_match('/^[a-z]{2}_[A-Z]{2}$/', $_SESSION['_lang'])) {
|
||||
$desiredLanguage = $_SESSION['_lang'];
|
||||
} else {
|
||||
$desiredLanguage = 'en_US';
|
||||
}
|
||||
} else {
|
||||
$desiredLanguage = 'en_US';
|
||||
}
|
||||
|
||||
$languageFile = '../lang/' . $desiredLanguage . '/messages.po';
|
||||
|
|
|
@ -30,10 +30,13 @@
|
|||
<div class="navbar-nav flex-row order-md-last">
|
||||
<div class="nav-item d-none d-md-flex me-3">
|
||||
<div class="btn-list">
|
||||
<a href="https://github.com/getnamingo/registry" class="btn" target="_blank" rel="noreferrer">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" class="icon" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M9 19c-4.3 1.4 -4.3 -2.5 -6 -3m12 5v-3.5c0 -1 .1 -1.4 -.5 -2c2.8 -.3 5.5 -1.4 5.5 -6a4.6 4.6 0 0 0 -1.3 -3.2a4.2 4.2 0 0 0 -.1 -3.2s-1.1 -.3 -3.5 1.3a12.3 12.3 0 0 0 -6.2 0c-2.4 -1.6 -3.5 -1.3 -3.5 -1.3a4.2 4.2 0 0 0 -.1 3.2a4.6 4.6 0 0 0 -1.3 3.2c0 4.6 2.7 5.7 5.5 6c-.6 .6 -.6 1.2 -.5 2v3.5" /></svg>
|
||||
Source code
|
||||
</a>
|
||||
<div class="dropdown">
|
||||
<a href="#" class="btn dropdown-toggle" data-bs-toggle="dropdown"><span class="flag flag-country-gb-eng"></span> English</a>
|
||||
<div class="dropdown-menu">
|
||||
<a href="/lang?en_US" class="dropdown-item"><span class="flag flag-country-gb-eng"></span> English</a>
|
||||
<a href="/lang?uk_UA" class="dropdown-item"><span class="flag flag-country-ua"></span> Ukrainian</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="d-none d-md-flex">
|
||||
|
|
|
@ -45,6 +45,7 @@ $app->group('', function ($route) {
|
|||
$route->get('/profile/plans', ProfileController::class .':plans')->setName('plans');
|
||||
$route->get('/profile/invoices', ProfileController::class .':invoices')->setName('invoices');
|
||||
$route->get('/mode', HomeController::class .':mode')->setName('mode');
|
||||
$route->get('/lang', HomeController::class .':lang')->setName('lang');
|
||||
$route->get('/avatar', HomeController::class .':avatar')->setName('avatar');
|
||||
$route->get('/logout', AuthController::class . ':logout')->setName('logout');
|
||||
$route->post('/change-password', PasswordController::class . ':changePassword')->setName('change.password');
|
||||
|
|
Loading…
Add table
Reference in a new issue