diff --git a/classes/admin.php b/classes/admin.php index 71b46121..3a217d56 100644 --- a/classes/admin.php +++ b/classes/admin.php @@ -107,7 +107,7 @@ class Admin $language = $this->grav['uri']->param('lang'); if (!$language) { if (!$this->session->admin_lang) { - $this->session->admin_lang = $this->grav['language']->getLanguage(); + $this->session->admin_lang = $this->grav['language']->getLanguage(); } $language = $this->session->admin_lang; } @@ -187,6 +187,9 @@ class Admin /** @var Grav $grav */ $grav = $this->grav; + unset($this->grav['user']); + $this->grav['user'] = $user; + $this->setMessage($this->translate('PLUGIN_ADMIN.LOGIN_LOGGED_IN'), 'info'); $grav->redirect($post['redirect']); } @@ -950,18 +953,27 @@ class Admin * * @param array|mixed $args * + * @param mixed $languages * @return string */ - public function translate($args) + public function translate($args, $languages = null) { if (is_array($args)) { $lookup = array_shift($args); + if (!empty($args)) { + $languages = array_shift($args); + } } else { $lookup = $args; $args = []; } - $languages = [$this->grav['user']->authenticated ? $this->grav['user']->language : ($this->grav['language']->getLanguage() ?: 'en')]; + if (!$languages) { + $languages = [$this->grav['user']->authenticated ? $this->grav['user']->language : ($this->grav['language']->getLanguage() ?: 'en')]; + } else { + $languages = (array) $languages; + } + if ($lookup) { if (empty($languages) || reset($languages) == null) { diff --git a/classes/controller.php b/classes/controller.php index fa90da93..29146ce3 100644 --- a/classes/controller.php +++ b/classes/controller.php @@ -269,9 +269,10 @@ class AdminController */ protected function taskLogout() { + $language = $this->grav['user']->authenticated ? $this->grav['user']->language : ($this->grav['language']->getLanguage() ?: 'en'); + $this->admin->session()->invalidate()->start(); - $this->admin->setMessage($this->admin->translate('PLUGIN_ADMIN.LOGGED_OUT'), 'info'); - $this->setRedirect('/logout'); + $this->setRedirect('/logout/lang:'.$language); return true; } diff --git a/themes/grav/templates/logout.html.twig b/themes/grav/templates/logout.html.twig index 4c6f034e..c41cf34c 100644 --- a/themes/grav/templates/logout.html.twig +++ b/themes/grav/templates/logout.html.twig @@ -10,7 +10,8 @@

{{ title }}

- {{ admin.setMessage('PLUGIN_ADMIN.LOGGED_OUT'|tu) }} + {{ dump (uri.param('lang')) }} + {{ admin.setMessage('PLUGIN_ADMIN.LOGGED_OUT'|tu(uri.param('lang'))) }} {% include 'partials/messages.html.twig' %}