Switching languages now works again
authorArt Cancro <ajc@citadel.org>
Fri, 25 Feb 2011 03:27:13 +0000 (22:27 -0500)
committerWilfried Goesgens <dothebart@citadel.org>
Sun, 4 Sep 2011 14:44:45 +0000 (14:44 +0000)
webcit/auth.c
webcit/gettext.c
webcit/static/wclib.js

index a1f881645ae3015d122a685ca89535215d80ef1d..207d4a9c550ca52703dda2a84ceecfcfadaf923f 100644 (file)
@@ -881,6 +881,15 @@ int ConditionalIsLoggedIn(StrBuf *Target, WCTemplputParams *TP)
 }
 
 
+/* 
+ * toggle the session over to a different language
+ */
+void switch_language(void) {
+       set_selected_language(bstr("lang"));
+       pop_destination();
+}
+
+
 void _display_reg(void) {
        display_reg(0);
 }
@@ -1015,6 +1024,7 @@ InitModule_AUTH
        WebcitAddUrlHandler(HKEY("do_logout"), "", 0, do_logout, ANONYMOUS|COOKIEUNNEEDED|FORCE_SESSIONCLOSE);
        WebcitAddUrlHandler(HKEY("ajax_login_username_password"), "", 0, ajax_login_username_password, AJAX|ANONYMOUS);
        WebcitAddUrlHandler(HKEY("ajax_login_newuser"), "", 0, ajax_login_newuser, AJAX|ANONYMOUS);
+       WebcitAddUrlHandler(HKEY("switch_language"), "", 0, switch_language, ANONYMOUS);
        RegisterConditional(HKEY("COND:AIDE"), 2, ConditionalAide, CTX_NONE);
        RegisterConditional(HKEY("COND:LOGGEDIN"), 2, ConditionalIsLoggedIn, CTX_NONE);
        RegisterConditional(HKEY("COND:MAY_CREATE_ROOM"), 2,  ConditionalHaveAccessCreateRoom, CTX_NONE);
index 432e0ff7428938fa9b74c16cec39206d516c1f33..a4dbd3bbef65ef26cef7d710ddf50dbb2d0a5b30 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996-2010 by the citadel.org team
+ * Copyright (c) 1996-2011 by the citadel.org team
  *
  * This program is open source software.  You can redistribute it and/or
  * modify it under the terms of the GNU General Public License as
@@ -217,7 +217,7 @@ void tmplput_offer_languages(StrBuf *Target, WCTemplputParams *TP)
                return;
        }
 
-       wc_printf("<select name=\"language\" id=\"lname\" size=\"1\" onChange=\"window.location.reload();\">\n");
+       wc_printf("<select name=\"language\" id=\"lname\" size=\"1\" onChange=\"switch_to_lang($('lname').value);\">\n");
 
        for (i=0; i < nLocalesLoaded; ++i) {
 #ifndef HAVE_USELOCALE
@@ -448,6 +448,7 @@ void Header_HandleAcceptLanguage(StrBuf *Line, ParsedHttpHdrs *hdr)
        hdr->HR.browser_language = Line;
 }
 
+
 void 
 InitModule_GETTEXT
 (void)
index 711bbf52060234364254cec26df420344f227072..bb193c7b2b5f04d468ac085b35dbb00472e612ba 100644 (file)
@@ -876,3 +876,10 @@ function ConfirmLogoff() {
                 }
         );
 }
+
+
+function switch_to_lang(new_lang) {
+        p = 'push?url=' + encodeURI(window.location);
+        new Ajax.Request(p, { method: 'get' } );
+       window.location = 'switch_language?lang=' + new_lang ;
+}