openrat-cms

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

commit ef4e68395be724ca65805d10e52cc261f9b5b09a
parent 572ea0aba8c5c5b7854bcf89ddd6cabe8c38c6a7
Author: dankert <openrat@jandankert.de>
Date:   Wed,  9 Mar 2022 01:57:45 +0100

Fix: Do not write the language to a cookie.

Diffstat:
MDockerfile | 6++++++
MREADME.md | 22++++++++++++----------
Mmodules/cms/Dispatcher.class.php | 28++++++++++++++++------------
Mmodules/cms/action/Action.class.php | 5-----
Mmodules/cms/action/ProfileAction.class.php | 5++---
Mmodules/cms/action/profile/ProfileEditAction.class.php | 2+-
Mmodules/cms/output/UIOutput.class.php | 13+++++++------
7 files changed, 44 insertions(+), 37 deletions(-)

diff --git a/Dockerfile b/Dockerfile @@ -17,6 +17,8 @@ ENV DB_TYPE="mysql" \ CMS_OPERATOR="" \ CMS_LOG_LEVEL="info" \ CMS_PRODUCTION="true" \ + CMS_TIMEZONE="" \ + CMS_LANGUAGE="" \ DOCROOT="/var/www/localhost/cms" # Configuring apache webserver @@ -107,6 +109,10 @@ publish:\n\ application:\n\ name: "${env:CMS_NAME}"\n\ operator: "${env:CMS_OPERATOR}"\n\ +ui:\n\ + timezone: "${env:CMS_TIMEZONE}"\n\ +i18n:\n\ + default: "${env:CMS_LANGUAGE}"\n\ \n\ ' >> /etc/openrat.yml diff --git a/README.md b/README.md @@ -87,16 +87,18 @@ Be sure to replace the variables. The following environment variables could be set in the docker container: -| Name | Description | Default | -| ----------- | ----------- | ------- | -|DB_TYPE|database type|mysql -|DB_HOST|database hostname|localhost -|DB_NAME|database schema|cms -|DB_USER|database user| -|DB_PASS|database password| -|CMS_MOTD|Message of the day|Welcome to dockerized CMS -|CMS_NAME|Software name|OpenRat CMS (Docker) -|CMS_OPERATOR|Name of your company|Docker-Host +| Name | Description | Default | +|--------------|----------------------| ------- | +| DB_TYPE | database type |mysql +| DB_HOST | database hostname |localhost +| DB_NAME | database schema |cms +| DB_USER | database user |cms +| DB_PASS | database password |\<empty\> +| CMS_MOTD | Message of the day |Welcome to dockerized CMS +| CMS_NAME | Software name |OpenRat CMS (Docker) +| CMS_OPERATOR | Name of your company |Docker-Host +| CMS_TIMEZONE | Timezone |UTC +| CMS_LANGUAGE | Language |Browser ### Local installation diff --git a/modules/cms/Dispatcher.class.php b/modules/cms/Dispatcher.class.php @@ -285,22 +285,26 @@ class Dispatcher // Sprache lesen $languages = []; - if ( Cookie::has( Action::COOKIE_LANGUAGE)) - $languages[] = Cookie::get(Action::COOKIE_LANGUAGE); - $i18nConfig = (new Config($conf))->subset('i18n'); + if ( $user = Session::getUser() ) + $languages[] = $user->language; // user language has precedence. + else { + $i18nConfig = (new Config($conf))->subset('i18n'); - if ( $i18nConfig->is('use_http',true ) ) - // Die vom Browser angeforderten Sprachen ermitteln - $languages = array_merge( $languages,Http::getLanguages() ); + $languages[] = $i18nConfig->get('default','en'); + + if ( $i18nConfig->is('use_http',true ) ) + // Die vom Browser angeforderten Sprachen ermitteln + $languages = array_merge( $languages,Http::getLanguages() ); + } + + // Default-Sprache hinzufuegen. + // Wird dann verwendet, wenn die vom Browser angeforderten Sprachen + // nicht vorhanden sind + $languages[] = 'en'; // last fallback. - // Default-Sprache hinzufuegen. - // Wird dann verwendet, wenn die vom Browser angeforderten Sprachen - // nicht vorhanden sind - $languages[] = $i18nConfig->get('default','en'); - $languages[] = 'en'; // last fallback. - foreach ($languages as $l) { + foreach ($languages as $l) { if (!in_array($l, Messages::$AVAILABLE_LANGUAGES)) continue; // language is not available. diff --git a/modules/cms/action/Action.class.php b/modules/cms/action/Action.class.php @@ -296,11 +296,6 @@ abstract class Action /** - * Language ISO code. - */ - const COOKIE_LANGUAGE = 'or_language'; - - /** * Last used username. */ const COOKIE_USERNAME = 'or_username'; diff --git a/modules/cms/action/ProfileAction.class.php b/modules/cms/action/ProfileAction.class.php @@ -67,13 +67,12 @@ class ProfileAction extends BaseAction */ protected function setLanguage($languageISOcode ) { + // Overwrite configuration $conf = Session::getConfig(); $language = new Language(); $conf['language'] = $language->getLanguage($languageISOcode); $conf['language']['language_code'] = $languageISOcode; - - Session::setConfig($conf); - $this->setCookie( Action::COOKIE_LANGUAGE,$languageISOcode); + Session::setConfig($conf); } diff --git a/modules/cms/action/profile/ProfileEditAction.class.php b/modules/cms/action/profile/ProfileEditAction.class.php @@ -53,7 +53,7 @@ class ProfileEditAction extends ProfileAction implements Method { $this->user->hotp = $this->request->has('hotp' ); $this->user->totp = $this->request->has('totp' ); - + // Overwrite user in session with new settings. Session::setUser( $this->user ); $this->user->persist(); diff --git a/modules/cms/output/UIOutput.class.php b/modules/cms/output/UIOutput.class.php @@ -83,8 +83,10 @@ class UIOutput extends BaseOutput $user = Session::getUser(); // the user timezone has precedence. if ( $user && $user->timezone ) // user is set and a timezone is set return( $user->timezone ); - else - return Configuration::subset('ui')->get('timezone'); + elseif ( $configuredTimezone = Configuration::subset('ui')->get('timezone') ) + return $configuredTimezone; // Timezone from configuration + + return null; } @@ -106,15 +108,14 @@ class UIOutput extends BaseOutput $templateFile = Startup::MODULE_DIR . 'cms/ui/themes/default/html/views/' . $action.'/'.$subaction . '.php'; - if ( DEVELOPMENT ) { + self::setTimezone(); + + if ( DEVELOPMENT ) { header('X-OR-Template: '.$templateFile ); echo "<!-- \n".var_export($outputData,true)."\n-->"; } - - self::setTimezone(); - $engine = new TemplateRunner(); //$engine->request = $request; $engine->executeTemplate( $templateFile, $outputData );