[DEV] Quickly change language 0.0.3

In diesem Forum können Mod-Autoren ihre Mods vorstellen, die sich noch im Entwicklungsstatus befinden. Der Einbau in Foren im produktiven Betrieb wird nicht empfohlen.
Forumsregeln
phpBB 3.0 hat das Ende seiner Lebenszeit überschritten
phpBB 3.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 3.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf die neuste phpBB-Version, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Helmut
Mitglied
Beiträge: 2048
Registriert: 27.12.2002 20:35
Wohnort: Augsburg

Re: [DEV] Quickly change language 0.0.3

Beitrag von Helmut »

Hallo Unimatrix_0,

also ganz habe ich es nicht verstanden was du genau für ein Problem hast. Bei mir sieht der Teil mit der search-box in der overall_header.html etwas anders aus, hast du da selber was gebastelt?

Code: Alles auswählen

<form action="{U_KB}" method="get" id="search">
sieht bei mir aber so aus:

Code: Alles auswählen

<form action="{U_SEARCH}" method="post" id="search">
Du rufst da eine kb.$phpEx auf, was macht die Datei und zuwas gehört diese?


@all
Da das automatische Update 3.0.5 --> 3.0.6 auch einen Bereich vom Mod in der functions.php ändern will, werde ich in den nächsten Tagen mal ein Update von meinem Mod machen. Es sind aber nur ein paar kleinere Anpasseungen für 3.0.6, für größere Änderungen habe ich momentan nicht die Zeit dazu.

Gruß Helmut
Ich bin nicht ganz dicht.... na und.
Benutzeravatar
Unimatrix_0
Mitglied
Beiträge: 392
Registriert: 03.11.2007 10:50
Kontaktdaten:

Re: [DEV] Quickly change language 0.0.3

Beitrag von Unimatrix_0 »

Helmut hat geschrieben:Hallo Unimatrix_0,

also ganz habe ich es nicht verstanden was du genau für ein Problem hast. Bei mir sieht der Teil mit der search-box in der overall_header.html etwas anders aus, hast du da selber was gebastelt?

Code: Alles auswählen

<form action="{U_KB}" method="get" id="search">
sieht bei mir aber so aus:

Code: Alles auswählen

<form action="{U_SEARCH}" method="post" id="search">
Du rufst da eine kb.$phpEx auf, was macht die Datei und zuwas gehört diese?
Hallo Helmut,

ich "missbrauche" das Design der Searchbox nur für meine eigenen Zwecke und bin/war zu faul das ganze in der overall_header.html und in den CSS-Datein umzubenennen.

Es geht mir im Endeffekt darum das ich Formular definiere, welches seine Parameter per Get übergibt an und den per function.php generierte Link anhängt. Die Parameter sind show und pw und führen zu einem Link à la ...php?show=INT&pw=STRING - das passt auch soweit - sogut.

Wenn ich jetzt per Quickly change language die Sprache änder bevor ich das Forumlar absende befinde ich mich zB auf dem Index - also auf index.php?lang=fr - auch das Formular wird entsprechend mit dem passenden Ziel generiert - wie man sehn kann wenn ich mir den Seitenquelltext anzeigen lass - den dann seh ich
<form action="./kb.php?lang=fr" method="get" id="search">
wenn ich jedoch jetzt das Formular abschicke lande ich wieder auf ...php?show=INT&pw=STRING und eben nicht auf ...php?lang=fr&show=INT&pw=STRING

Das ist eben mein Problem, was im Anschluss in der kb.php passiert (selbst geschrieben) denke ich führt nicht zu dem Problem, da der Parameter nicht mit übergeben wird, warum auch immer ...

LG Un1
Helmut
Mitglied
Beiträge: 2048
Registriert: 27.12.2002 20:35
Wohnort: Augsburg

Re: [DEV] Quickly change language 0.0.3

Beitrag von Helmut »

Hallo Unimatrix_0,

ich habe gerade nochmal nachgeschaut da ich im Hinterkopf so einen Gedanken hatte, dass dieses Problem schon mal vor kam. Ich hatte recht, du selber hast schon mal dieses Problem angeschnitten und ich hatte daraufhin den Code etwas abgeändert.

http://www.phpbb.de/community/viewtopic ... 1#p1085841

Im weiteren Verlauf hast du ja geschrieben dass es dann funktioniert hat, hast du nochmal was geändert am Code?

Mir scheint, dass dein Script den fertigen Link nochmal auseinander nimmt und du zwar deine Anhänge anfügst, aber nicht die lang=.

Prüfe auch nochmal, ob durch das Update Teile des Mods verändert wurden, besonders die Dateien sessions.php und functions.php.

Bei mir läuft der Mod übrigens ohne Probleme nach dem Update.

Gruß Helmut
Ich bin nicht ganz dicht.... na und.
Benutzeravatar
Unimatrix_0
Mitglied
Beiträge: 392
Registriert: 03.11.2007 10:50
Kontaktdaten:

Re: [DEV] Quickly change language 0.0.3

Beitrag von Unimatrix_0 »

Hallo Helmut,

danke für den alten QCL-Code - ich habe jetzt mit einer phpBB 3.0.4 Version getestet und der 0.0.2er "Alpha" Version getestet - also bewusst ohne folgende Änderung » http://www.phpbb.de/community/viewtopic ... 1#p1086074

Und das hat meinem Gedächtniss geholfen - es war ein leicht anderes Problem.

Früher das Problem (welches gelöst ist):
Anfrage gestartet » URL = kb.php?show=5&pw=Passwort » um eine mögliche Fehlermeldung zu übersetzen klick auf eine Flagge » URL = kb.php?lang=en&

das Verhalten ist behoben, wenn man es jedoch andersherum versucht, läuft es wie folgt ab:
Flagge klicken » URL = index.php?lang=eng » jetzt wird die Anfrage gestartet » URL = kb.php?show=5&pw=Passwort

Also diesmal das Problem, nur umgedreht - jetzt wird nicht mein "Querystring" mit dem lang-String überschrieben, sondern der lang-String mit einem "Querystring"

Dieses sehr spezielle Problem besteht auch schon in den älteren Versionen - irgendwo wird beim URL-zusammenbauen das lang=*** verschluckt - zuerst hatte ich eine Änderung in der function.php durch die Updates in Verdacht - dem ist/war leider nicht so.

LG Un1
Helmut
Mitglied
Beiträge: 2048
Registriert: 27.12.2002 20:35
Wohnort: Augsburg

Re: [DEV] Quickly change language 0.0.3

Beitrag von Helmut »

Hallo Unimatrix_0,
Unimatrix_0 hat geschrieben: das Verhalten ist behoben, wenn man es jedoch andersherum versucht, läuft es wie folgt ab:
Flagge klicken » URL = index.php?lang=eng » jetzt wird die Anfrage gestartet » URL = kb.php?show=5&pw=Passwort
der Tipp ist nicht schlecht, ich habe jetzt schon eine Vermutung wo das Problem liegen könnte. Es hat mit der Abfrage zu tun ob eine Query drannen ist oder nicht. Ändere mal testweise folgendes ab:

Code: Alles auswählen

        // If not lang= is used    
        $lang_in = "~lang=$user_lang~i";
        if (preg_match($lang_in, $url_lang)) 
        {
            $url_lang;
        } 
        else 
        {
            if (empty($url_query['query']))
            {
                $url_lang = $url_query['path'] . "?lang=" . $user_lang;
            }
            else
            {    
                $url_lang = $url_query['path'] . "?lang=" . $user_lang . '&' . $url_query['query'];
            }
        }
 
ersetzen durch:

Code: Alles auswählen

        // If not lang= is used    
        $lang_in = "~lang=$user_lang~i";
        if (preg_match($lang_in, $url_lang)) 
        {
            $url_lang;
        } 
        else 
        {
            $url_lang = $url_query['path'] . "?lang=" . $user_lang . '&' . $url_query['query'];
        }
 
Ist nur mal so eine Vermutung ....

Gruß Helmut
Ich bin nicht ganz dicht.... na und.
Benutzeravatar
Unimatrix_0
Mitglied
Beiträge: 392
Registriert: 03.11.2007 10:50
Kontaktdaten:

Re: [DEV] Quickly change language 0.0.3

Beitrag von Unimatrix_0 »

Hallo Helmut,

leider geht auch damit der lang=... Teil des Querystrings verloren.

Lg Un1
Helmut
Mitglied
Beiträge: 2048
Registriert: 27.12.2002 20:35
Wohnort: Augsburg

Re: [DEV] Quickly change language 0.0.3

Beitrag von Helmut »

Hallo Unimatrix_0,

hm ... ok, dann mach das mal wieder rückgängig. Ein Versuch habe ich Noch, ändere mal folgendes:

Code: Alles auswählen

if (empty($url_query['query'])) 
durch folgendes:

Code: Alles auswählen

if (!empty($url_query['query'])) 
Wenn das nicht geht, dann fällt mir im Augenblick auch nichts ein, da muss ich erst selber ein paar Versuche anstellen.

Gruß Helmut
Ich bin nicht ganz dicht.... na und.
Benutzeravatar
Unimatrix_0
Mitglied
Beiträge: 392
Registriert: 03.11.2007 10:50
Kontaktdaten:

Re: [DEV] Quickly change language 0.0.3

Beitrag von Unimatrix_0 »

Hallo Helmut,

leider muss ich sagen - auch so klappt es nicht und wenn kein Querystring vorhanden ist kommt zusätzlich verständlicherweise die Fehlermeldung:

Code: Alles auswählen

[phpBB Debug] PHP Notice: in file /includes/functions.php on line4115: Undefined index: query
LG & viel Erfolg beim den Versuchen

Un1

€dit: falls du meine Testdatein für den Quick&Dirty-Test haben willst:
http://www.phpbb.de/support/pastebin.ph ... view&s=303
http://www.phpbb.de/support/pastebin.ph ... view&s=304
Helmut
Mitglied
Beiträge: 2048
Registriert: 27.12.2002 20:35
Wohnort: Augsburg

Re: [DEV] Quickly change language 0.0.3

Beitrag von Helmut »

Hallo Unimatrix_0,

danke dir für deine Dateien, damit ich habe jetzt ein wenig herum gespielt. Mit der aktuellen Version 0.0.3 geht es etwas so wie du das willst.

Mit method="post" würden die lang= Informationen erhalten bleiben, allerdings nicht deine Eingaben beim Wechsel der Sprache. Diese müsstest du dann z.B. mit Javascript irgendwie Zwischenspeichern.

Mit method="get" geht es nur, wenn du die lang= zusätzlich übergibst. Dafür habe ich dir mal ein kleines Beispiel gemacht.

kb.php:

Code: Alles auswählen

<?php
// Benötigte Dateien und Variablen von phpBB
define('IN_PHPBB', true);
$phpbb_root_path = './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
include_once($phpbb_root_path . 'includes/functions_user.' . $phpEx);

// Session auslesen und Benutzer-Informationen laden
$user->session_begin();
$auth->acl($user->data);
$user->setup('search');

$Test1 = request_var('lang', $user->lang_name);
$Test2 = request_var('show', '');
$Test3 = request_var('pw', '');

$template->assign_vars(array(
        'TEST_1'            => $Test1,
        'TEST_2'            => $Test2,
        'TEST_3'            => $Test3,
        'S_TEST'            => request_var('lang', $user->lang_name),
                                                        
));

page_header('');

// Angabe eurer Content-Seite
$template->set_filenames(array(
   'body' => 'kb_body.html')
);

// Footer
page_footer();

?>
kb_body.html:

Code: Alles auswählen

<!-- INCLUDE overall_header.html -->

                    <br /><br />
                    <form action="{U_KB}" method="get">
                    <fieldset>
                        {L_KB_ID}: <a class="infobox" href="#INFO"><img src="{LOGO_INFO}" alt="help" border="0" /><span> <b>{L_KB_ID_LONG}:</b><br />{L_SHOW_KB}</span></a> <input class="inputbox" type="text" name="show" />
                        {L_PW}: <a class="infobox" href="#INFO"><img src="{LOGO_INFO}" alt="help" border="0" /><span> <b>{L_PW}:</b><br />{L_PW_FOR_PRIVAT}</span></a> <input class="inputbox" type="text" name="pw" />
                        <br /><br />
                        <input type="hidden" name="lang" value="{S_TEST}">
                        <input class="button2" type="submit" value="Submit" />
                    </fieldset>
                    </form>
                    <br /><br />
                    lang: {TEST_1}<br />
                    show: {TEST_2}<br />
                    pw: {TEST_3}<br />
                    <br />
<!-- INCLUDE overall_footer.html --> 
Damit wird lang=xx am Ende mit angehängt. Ich denke, das hilft dir schon mal weiter.

Gruß Helmut :wink:
Ich bin nicht ganz dicht.... na und.
Benutzeravatar
Unimatrix_0
Mitglied
Beiträge: 392
Registriert: 03.11.2007 10:50
Kontaktdaten:

Re: [DEV] Quickly change language 0.0.3

Beitrag von Unimatrix_0 »

Hi Helmut,

danke für die Idee - hätte ich auch selbst drauf kommen können :roll: ich habs etwas anders gelöst ... damit es auch aus dem overall_header.html herraus klappt.

In der function.php

Code: Alles auswählen

        // If not lang= is used    
        $lang_in = "~lang=$user_lang~i";
        if (preg_match($lang_in, $url_lang)) 
        {
            $url_lang;
        } 
        else 
        {
            if (empty($url_query['query']))
            {
                $url_lang = $url_query['path'] . "?lang=" . $user_lang;
            }
            else
            {    
                $url_lang = $url_query['path'] . "?lang=" . $user_lang . '&' . $url_query['query'];
            }
        }

        $template->assign_vars(array(
        'LANG'                => $user_lang,
        )); 
und in der overall_header.html

Code: Alles auswählen

                <form action="./kb.php" method="get" id="search">
                    <input name="show" id="keywords" type="text" maxlength="128" class="inputbox" value="<!-- IF SEARCH_WORDS-->{SEARCH_WORDS}<!-- ELSE -->{L_KB_ID}<!-- ENDIF -->" onclick="if(this.value=='{L_KB_ID}')this.value='';" onblur="if(this.value=='')this.value='{L_KB_ID}';" /> 
                    <p/><input name="pw" id="keywords" type="text" maxlength="128" class="inputbox" value="<!-- IF SEARCH_WORDS-->{SEARCH_WORDS}<!-- ELSE -->{L_PASSWORD}<!-- ENDIF -->" onclick="if(this.value=='{L_PASSWORD}')this.value='';" onblur="if(this.value=='')this.value='{L_PASSWORD}';" /> 
                    <br /><input type="hidden" name="lang" value="{LANG}"><input id="circle" value="GO" type="submit" />
                </form> 
Danke für die Hilfe & LG Un1
Antworten

Zurück zu „[3.0.x] Mods in Entwicklung“