[bknr-cvs] ksprotte changed trunk/projects/bos/web/web-utils.lisp

BKNR Commits bknr at bknr.net
Thu Jul 31 08:21:43 UTC 2008


Revision: 3705
Author: ksprotte
URL: http://bknr.net/trac/changeset/3705

fixed content-language-chooser to keep other GET parameters
U   trunk/projects/bos/web/web-utils.lisp

Modified: trunk/projects/bos/web/web-utils.lisp
===================================================================
--- trunk/projects/bos/web/web-utils.lisp	2008-07-31 08:02:37 UTC (rev 3704)
+++ trunk/projects/bos/web/web-utils.lisp	2008-07-31 08:21:43 UTC (rev 3705)
@@ -37,15 +37,23 @@
 (defun language-name (language-short-name)
   (cadr (assoc language-short-name (website-languages) :test #'equal)))
 
-(defun content-language-chooser ()
-  "Note that in the current implementation other GET parameters than
-   language will be lost (not appended to script-name)."
+(defun content-language-chooser ()  
   (html
    ((:p :class "languages")
     "Content languages: "
     (loop for (language-symbol language-name) in (website-languages)
-       do (labels ((show-language-link ()
-                     (html (cmslink (format nil "~A?language=~A" (hunchentoot:script-name*) language-symbol)
+       do (labels ((show-language-link ()                     
+                     (html (cmslink (with-output-to-string (out)
+                                      (write-string (hunchentoot:script-name*) out)
+                                      ;; write language param and remaining get params
+                                      (write-string "?language=" out)
+                                      (write-string language-symbol out)
+                                      (dolist (get-param (remove "language" (hunchentoot:get-parameters*) :key #'first :test #'equal))
+                                        (destructuring-bind (key . value) get-param
+                                          (write-string "&" out)
+                                          (write-string key out)
+                                          (write-string "=" out)
+                                          (write-string value out))))
                              (:princ-safe language-name)))))
             (if (equal (request-language) language-symbol)
                 (html "[" (show-language-link) "]")




More information about the Bknr-cvs mailing list