Changeset 3557

Show
Ignore:
Timestamp:
07/22/08 16:08:27 (4 months ago)
Author:
hans
Message:

Sessionless request language handling.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/projects/bos/web/contract-rss.lisp

    r2343 r3557  
    88 
    99(defmethod rss-item-title ((contract contract)) 
    10   (format nil (case (intern (bos.web::current-website-language)) 
     10  (format nil (case (intern (bos.web::request-language)) 
    1111                (de "~A Quadratmeter wurden ~@[von ~A ~]gekauft") 
    1212                (t "~A square meters bought~@[ by ~A~]")) 
     
    1919(defmethod rss-item-link ((contract contract)) 
    2020  #+(or) 
    21   (format nil "http://createrainforest.org/~A/news-extern/~A" (bos.web::current-website-language) (store-object-id item))) 
     21  (format nil "http://createrainforest.org/~A/news-extern/~A" (bos.web::request-language) (store-object-id item))) 
    2222 
    2323(defmethod rss-item-guid ((item contract)) 
    2424  #+(or) 
    25   (format nil "http://createrainforest.org/~A/news-extern/~A" (bos.web::current-website-language) (store-object-id item))) 
     25  (format nil "http://createrainforest.org/~A/news-extern/~A" (bos.web::request-language) (store-object-id item))) 
    2626 
    2727(defmethod rss-item-pub-date ((contract contract)) 
  • trunk/projects/bos/web/news-handlers.lisp

    r2484 r3557  
    1111 
    1212(defmethod handle-object-form ((handler edit-news-handler) action (news-item (eql nil))) 
    13   (let ((language (hunchentoot:session-value :language))) 
     13  (let ((language (request-language))) 
    1414    (with-bos-cms-page (:title "Edit news items") 
    1515      (content-language-chooser) 
     
    3434 
    3535(defmethod handle-object-form ((handler edit-news-handler) action news-item) 
    36   (let ((language (hunchentoot:session-value :language))) 
     36  (let ((language (request-language))) 
    3737    (with-bos-cms-page (:title "Edit news item") 
    3838      (content-language-chooser) 
     
    5050 
    5151(defmethod handle-object-form ((handler edit-news-handler) (action (eql :save)) news-item) 
    52   (let ((language (hunchentoot:session-value :language))) 
     52  (let ((language (request-language))) 
    5353    (with-query-params (title text) 
    5454      (update-news-item news-item language :title title :text text) 
  • trunk/projects/bos/web/news-rss.lisp

    r2343 r3557  
    55 
    66(defmethod rss-item-published ((item news-item)) 
    7   (news-item-published item (bos.web::current-website-language))) 
     7  (news-item-published item (bos.web::request-language))) 
    88 
    99(defmethod rss-item-title ((item news-item)) 
    10   (news-item-title item (bos.web::current-website-language))) 
     10  (news-item-title item (bos.web::request-language))) 
    1111 
    1212(defmethod rss-item-description ((item news-item)) 
    13   (news-item-text item (bos.web::current-website-language))) 
     13  (news-item-text item (bos.web::request-language))) 
    1414 
    1515(defmethod rss-item-link ((item news-item)) 
    16   (format nil "http://createrainforest.org/~A/news-extern/~A" (bos.web::current-website-language) (store-object-id item))) 
     16  (format nil "http://createrainforest.org/~A/news-extern/~A" (bos.web::request-language) (store-object-id item))) 
    1717 
    1818(defmethod rss-item-guid ((item news-item)) 
    19   (format nil "http://createrainforest.org/~A/news-extern/~A" (bos.web::current-website-language) (store-object-id item))) 
     19  (format nil "http://createrainforest.org/~A/news-extern/~A" (bos.web::request-language) (store-object-id item))) 
    2020 
    2121(defmethod rss-item-pub-date ((item news-item)) 
  • trunk/projects/bos/web/news-tags.lisp

    r2812 r3557  
    88 
    99(define-bknr-tag news-headlines (&key archive) 
    10   (let ((language (hunchentoot:session-value :language)))     
     10  (let ((language (request-language)))     
    1111    (let* ((now (get-universal-time)) 
    1212           (news-items (if archive 
     
    3535(define-bknr-tag news-item () 
    3636  (let ((news-item (find-store-object (parse-integer (nth-value 1 (parse-url))))) 
    37         (language (hunchentoot:session-value :language))) 
     37        (language (request-language))) 
    3838    (html ((:h1 :class "extra") 
    3939           (:princ-safe (format-date-time (news-item-time news-item) :show-time nil)) 
  • trunk/projects/bos/web/poi-handlers.lisp

    r3548 r3557  
    1919               "Please use only alphanumerical characters, - and _ for technical POI names"))) 
    2020      (t 
    21        (redirect (edit-object-url (make-poi (hunchentoot:session-value :language) name))))))) 
     21       (redirect (edit-object-url (make-poi (request-language) name))))))) 
    2222 
    2323(defclass edit-poi-handler (editor-only-handler edit-object-handler) 
     
    3535                             (:princ-safe (poi-name poi)) 
    3636                             " - " 
    37                              (:princ-safe (slot-string poi 'title (hunchentoot:session-value :language))))))))) 
     37                             (:princ-safe (slot-string poi 'title (request-language))))))))) 
    3838        (html (:h2 "No POIs created yet"))) 
    3939    ((:form :method "post" :action "/make-poi") 
     
    5353                               action (poi poi)) 
    5454  (with-query-params (language shift shift-by) 
    55     (unless language (setq language (hunchentoot:session-value :language))) 
     55    (unless language (setq language (request-language))) 
    5656    (when shift 
    5757      ;; change image order 
     
    6666        (setf (nth (+ shift-by old-position) new-images) tmp) 
    6767        (change-slot-values poi 'bos.m2::images new-images))) 
    68     (setf (hunchentoot:session-value :language) language) 
    6968    (with-bos-cms-page (:title "Edit POI") 
    7069      (content-language-chooser) 
     
    170169                               (action (eql :save)) (poi poi)) 
    171170  (with-query-params (published title subtitle description language x y icon movie) 
    172     (unless language (setq language (hunchentoot:session-value :language))) 
     171    (unless language (setq language (request-language))) 
    173172    (let ((args (list :title title 
    174173                      :published published 
     
    302301(defmethod handle-object-form ((handler edit-poi-image-handler) action poi-image) 
    303302  (with-query-params (language poi) 
    304     (unless language (setq language (hunchentoot:session-value :language))) 
     303    (unless language (setq language (request-language))) 
    305304    (with-bos-cms-page (:title "Edit POI Image") 
    306305      (html 
     
    332331(defmethod handle-object-form ((handler edit-poi-image-handler) (action (eql :save)) poi-image) 
    333332  (with-query-params (title subtitle description language) 
    334     (unless language (setq language (hunchentoot:session-value :language))) 
     333    (unless language (setq language (request-language))) 
    335334    (update-poi-image poi-image language 
    336335                      :title title 
     
    372371        (html 
    373372         ((:script :language "JavaScript") 
    374           (:princ (make-poi-javascript (or (hunchentoot:session-value :language) *default-language*))) 
     373          (:princ (make-poi-javascript (request-language))) 
    375374          (:princ "parent.poi_fertig(pois, anzahlSponsoren, anzahlVerkauft);") 
    376375          (:princ (format nil "parent.last_sponsors([~{~A~^,~%~}]);" (mapcar #'contract-js last-paid-contracts))))))))) 
  • trunk/projects/bos/web/rss.lisp

    r2343 r3557  
    77 
    88(defmethod rss-item-published ((item news-item)) 
    9   (format t "Language: ~A~%" (current-website-language)) 
     9  (format t "Language: ~A~%" (request-language)) 
    1010  t) 
    1111 
    1212(defmethod rss-item-title ((item news-item)) 
    13   (news-item-title item (current-website-language))) 
     13  (news-item-title item (request-language))) 
    1414 
    1515(defmethod rss-item-description ((item news-item)) 
    16   (news-item-text item (current-website-language))) 
     16  (news-item-text item (request-language))) 
    1717 
    1818(defmethod rss-item-link ((item news-item)) 
    19   (format nil "http://createrainforest.org/~A/news-extern/~A" (current-website-language) (store-object-id item))) 
     19  (format nil "http://createrainforest.org/~A/news-extern/~A" (request-language) (store-object-id item))) 
    2020 
    2121(defmethod rss-item-guid ((item news-item)) 
    22   (format nil "http://createrainforest.org/~A/news-extern/~A" (current-website-language) (store-object-id item))) 
     22  (format nil "http://createrainforest.org/~A/news-extern/~A" (request-language) (store-object-id item))) 
    2323 
  • trunk/projects/bos/web/startup.lisp

    r3432 r3557  
    4242  (format t "~&; Starting hunchentoot~@[ in debug mode~].~%" debug) 
    4343  (force-output)   
    44   (setq hunchentoot:*catch-errors-p* (not debug)) 
    4544  (when *webserver* 
    4645    (hunchentoot:stop-server *webserver*)) 
    47   (setf *hunchentoot-default-external-format* (flex:make-external-format :utf-8 :eol-style :lf) 
     46  (setf hunchentoot:*hunchentoot-default-external-format* (flex:make-external-format :utf-8 :eol-style :lf) 
    4847        hunchentoot:*rewrite-for-session-urls* nil)   
    49   (setq *webserver* (hunchentoot:start-server :port *port* #+not-yet :threaded #+not-yet (not debug) 
     48  (setq *webserver* (hunchentoot:start-server :port *port* (not debug) 
    5049                                              :persistent-connections-p nil)) 
    5150  (if start-frontend 
  • trunk/projects/bos/web/tags.lisp

    r3415 r3557  
    1616(define-bknr-tag language-chooser (name) 
    1717  (html ((:select :name name) 
    18          (language-options-1 (current-website-language))))) 
     18         (language-options-1 (request-language))))) 
    1919 
    2020(define-bknr-tag language-options () 
    21   (language-options-1 (current-website-language))) 
     21  (language-options-1 (request-language))) 
    2222 
    2323(define-bknr-tag worldpay-receipt () 
     
    4242      (when (equal want-print "no") 
    4343        (contract-set-download-only-p contract t)) 
    44       (contract-issue-cert contract name :address address :language (hunchentoot:session-value :language)) 
     44      (contract-issue-cert contract name :address address :language (request-language)) 
    4545      (mail-worldpay-sponsor-data) 
    4646      (bknr.web::redirect-request :target (if gift "index" 
     
    7979                                    (scan #?r"rweisung" action) 
    8080                                    (scan #?r"verf" action))) 
    81                (language (hunchentoot:session-value :language)) 
     81               (language (request-language)) 
    8282               (sponsor (make-sponsor :language language)) 
    8383               (contract (make-contract sponsor numsqm 
     
    134134                                            strasse 
    135135                                            plz ort) 
    136                            :language (hunchentoot:session-value :language)) 
     136                           :language (request-language)) 
    137137      (mail-manual-sponsor-data)))) 
    138138 
  • trunk/projects/bos/web/web-utils.lisp

    r3294 r3557  
    3131         " - current content language is " 
    3232        (cmslink "change-language" 
    33           (:princ-safe (current-website-language)) 
     33          (:princ-safe (request-language)) 
    3434          " (" 
    35           (:princ-safe (language-name (current-website-language))) 
     35          (:princ-safe (language-name (request-language))) 
    3636          ")")))) 
    3737 
    3838(defun language-name (language-short-name) 
    3939  (cadr (assoc language-short-name (website-languages) :test #'equal))) 
    40  
    41 (defun current-website-language () 
    42   (unless (hunchentoot:session-value :language) 
    43     (setf (hunchentoot:session-value :language) *default-language*)) 
    44   (hunchentoot:session-value :language)) 
    4540 
    4641(defun content-language-chooser () 
     
    5247                        (html (cmslink (format nil "~A?language=~A" (hunchentoot:request-uri*) language-symbol) 
    5348                                (:princ-safe language-name))))) 
    54                (if (equal (hunchentoot:session-value :language) language-symbol) 
     49               (if (equal (request-language) language-symbol) 
    5550                   (html "[" (show-language-link) "]") 
    5651                   (html (show-language-link))) 
  • trunk/projects/bos/web/webserver.lisp

    r3554 r3557  
    113113    (when logout 
    114114      (hunchentoot:remove-session hunchentoot:*session*))) 
    115   (let ((language (hunchentoot:session-value :language))) 
     115  (let ((language (request-language))) 
    116116    (redirect #?"/infosystem/$(language)/satellitenkarte.htm"))) 
    117117 
     
    179179        (call-next-method)))) 
    180180 
    181 (defmethod authorize :after ((authorizer bos-authorizer)) 
    182   (let ((new-language (or (language-from-url (hunchentoot:request-uri*)) 
    183                           (query-param "language"))) 
    184         (current-language (hunchentoot:session-value :language))) 
    185     (when (or (not current-language) 
    186               (and new-language 
    187                    (not (equal new-language current-language)))) 
    188       (setf (hunchentoot:session-value :language) 
    189             (or new-language 
    190                 (find-browser-prefered-language) 
    191                 *default-language*))))) 
     181(defun request-language () 
     182  (or (hunchentoot:aux-request-value :language) 
     183      *default-language*)) 
     184 
     185(defmethod handle :before ((handler page-handler)) 
     186  (setf (hunchentoot:aux-request-value :language) 
     187        (or (query-param "language") 
     188            (query-param "lang") 
     189            (language-from-url (hunchentoot:request-uri*)) 
     190            (hunchentoot:session-value :language) 
     191            (find-browser-prefered-language) 
     192            *default-language*))) 
    192193 
    193194;;; TODOreorg 
     
    213214                                        ("/country-stats" country-stats-handler) 
    214215                                        ("/contract-tree-kml" contract-tree-kml-handler) 
    215                                         ("/contract-tree-image" contract-tree-image-handler)                                                               
     216                                        ("/contract-tree-image" contract-tree-image-handler) 
    216217                                        ("/contract-image" contract-image-handler) 
    217218                                        ("/contract" contract-handler)