RETROTEC-AG/OpenXE#17 Locale des GUI-Users ermitteln

Sprache in den Usereinstellungen speichern
This commit is contained in:
Roland Rusch 2023-08-25 17:12:47 +02:00
parent a18a139e64
commit c258166bcb
5 changed files with 73 additions and 33 deletions

View File

@ -75,7 +75,7 @@ class FiskalyTransferService
* @throws Exception
* @return Transaction
*
* @depracated
* @deprecated
*/
public function createTransactionFromSingleJournal(
int $cashierId,
@ -270,7 +270,7 @@ class FiskalyTransferService
* @throws Exception
* @return Transaction
*
* @depracated
* @deprecated
*/
public function transferPosSession($posSession): Transaction
{

View File

@ -474,9 +474,12 @@ class User
return $this->cache[$cacheKey]['name'];
}
/**
* @return array
* @deprecated Eine Liste der verfügbaren Sprachen sollte IMHO zentral im Übersetzer generiert werden.
*/
public function GetSprachen()
{
@ -505,15 +508,20 @@ class User
return $defaultLanguages;
}
/**
* @return string
* Die vom User gewählte Sprache zurückgeben.
* Null, falls die Sprache nicht erkannt wird.
*
* @return string|null
*/
public function GetSprache()
public function GetSprache(): string|null
{
$sprachen = $this->GetSprachen();
return reset($sprachen);
return \Xentral\Components\I18n\Bootstrap::findLanguage(
strval($this->GetField('sprachebevorzugen'))
)[Xentral\Components\I18n\Iso639\Key::DEFAULT];
}
/**

View File

@ -12131,14 +12131,14 @@ function SendPaypalFromAuftrag($auftrag, $test = false)
$this->app->Tpl->Add($target, $html);
}
/**@deprected**/
/**@deprecated**/
function HelpIcon()
{
$module = $this->app->Secure->GetGET("module");
$action = $this->app->Secure->GetGET("action");
}
/**@deprected**/
/**@deprecated**/
function PrinterIcon()
{
// $this->app->Tpl->Add('TABSPRINT',"&nbsp;<a style=\"color:white;font-size:9pt\" href=\"#\" onclick=\"wawisionPrint();\"><img src=\"./themes/new/images/icons_druck.png\" height=\"18\"></a>");
@ -13856,7 +13856,7 @@ function SendPaypalFromAuftrag($auftrag, $test = false)
}
}
/**@depreacated */
/**@deprecated */
function CheckSamePage()
{
$id = $this->app->Secure->GetGET("id");
@ -13868,7 +13868,7 @@ function SendPaypalFromAuftrag($auftrag, $test = false)
}
/**
* @depreacated
* @deprecated
* @refactor Artikel Modul
*/
function SeitenSperrAuswahl($ueberschrift,$meldung)
@ -13911,7 +13911,7 @@ $( this ).dialog( "close" );
');
}
/**@depreacated */
/**@deprecated */
function SeitenSperrInfo($meldung)
{
$this->app->Tpl->Set('SPERRMELDUNG', '$("a#inline").fancybox({
@ -27759,7 +27759,7 @@ function Firmendaten($field,$projekt="")
return $ret;
}
/** @depracated */
/** @deprecated */
function GetPrioTicketSelect($prio)
{
$prios = array('4'=>'niedrig','3'=>'normal','2'=>'hoch');

View File

@ -2635,10 +2635,16 @@ class Firmendaten {
}
return $out;
}
/**
* Liefert einen Array aus Strings zurück. Immer mindestens 'deutsch' enthalten
* Liefert einen Array aus Strings zurück. Immer mindestens 'deutsch' enthalten.
*
* @return array
* @todo Sollte eventuell zusammengelegt oder in den Übersetzer verschoben werden.
* @see \Firmendaten::getLanguages()
* @deprecated
*/
private function getLanguages(){

View File

@ -2819,7 +2819,19 @@ $this->app->Tpl->Add('TODOFORUSER',"<tr><td width=\"90%\">".$tmp[$i]['aufgabe'].
header('Location: '.$_SERVER['HTTP_REFERER']);
exit;
}
/**
* Diese Funktion holt die Sprache von den Firmendaten, falls keine Sprache in $fromPost übergeben wurde.
* Sie wurde nur verwendet, um eine Vorgabe im sprachebevorzugen-SELECT beim Benutzer zu erzeugen.
* Das wird jetzt anders gelöst.
*
* @param $fromPost
*
* @return array|mixed|string|null
* @deprecated Nicht mehr benötigt
*/
private function getCurrentDefaultLanguage($fromPost){
if(empty($fromPost)){
@ -2831,29 +2843,43 @@ $this->app->Tpl->Add('TODOFORUSER',"<tr><td width=\"90%\">".$tmp[$i]['aufgabe'].
}
return $fromPost;
}
/**
* Liefert einen String aus HTML-Optionen zurück
* @param string $fromPost
* Liefert einen String aus HTML-Select-Optionen zurück für die Sprachauswahl beim Benutzer.
*
* @param string|null $userPreferredLanguage Gewählte Sprache von den Usereinstellungen
*
* @return string
*/
private function languageSelectOptions($fromPost=''){
$select = $this->getCurrentDefaultLanguage($fromPost);
$out = "";
$sprachen = $this->getLanguages();
foreach($sprachen as $sprache) {
$selected = (($select==$sprache) ? 'selected' : '');
$out .= "<option value=\"$sprache\" $selected>$sprache</option>";
private function languageSelectOptions(string|null $userPreferredLanguage='') {
$select=\Xentral\Components\I18n\Bootstrap::findLanguage(strval($userPreferredLanguage))[Xentral\Components\I18n\Iso639\Key::DEFAULT];
if(empty($select)) {
/** @var \Xentral\Components\I18n\Localization $localization */
$localization=$this->app->Container->get('Localization');
$select=$localization->getLanguage();
}
$out = '';
foreach ($this->getLanguages() as $sprache) {
if($language=\Xentral\Components\I18n\Bootstrap::findLanguage($sprache)) {
$selected = (($select == $language[Xentral\Components\I18n\Iso639\Key::DEFAULT]) ? ' selected="selected"' : '');
$out .= "<option value=\"{$language[Xentral\Components\I18n\Iso639\Key::DEFAULT]}\"{$selected}>{$language[Xentral\Components\I18n\Iso639\Key::NAME_deu]}</option>";
}
}
return $out;
}
/**
* Liefert einen Array aus Strings zurück. Immer mindestens 'deutsch' enthalten
* Liefert einen Array aus Strings zurück. Immer mindestens 'deutsch' enthalten.
*
* @return array
* @todo Sollte eventuell zusammengelegt oder in den Übersetzer verschoben werden.
* @see \Firmendaten::getLanguages()
* @deprecated
*/
private function getLanguages(){