Changeset 3561

Show
Ignore:
Timestamp:
07/22/08 18:37:36 (4 months ago)
Author:
hans
Message:

Improve redirection mechanism so that robots will see a real
page under / and browser users will be properly redirected.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/bknr/web/src/web/template-handler.lisp

    r3303 r3561  
    307307(defmethod handler-matches-p ((handler template-handler)) 
    308308  (handler-case  
    309       (find-template-pathname handler (script-name*)) 
     309      (find-template-pathname handler (subseq (script-name*) 1)) 
    310310    (template-not-found (c) 
    311311      (declare (ignore c)) 
  • trunk/projects/bos/payment-website/templates/de/toplevel_main.xml

    r3558 r3561  
    1212                <link rel="alternate" type="application/rss+xml" title="RSS Feed" 
    1313                      href="/rss/news" /> 
    14                 <script src="/static/bos.js" type="text/javascript"><!-- x -->   
    15                 </script>  
    16              <!--<meta http-equiv="content-type" content="text/html; charset=UTF-8" />--> 
     14                <script src="/static/bos.js" type="text/javascript"> </script>  
    1715                <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" /> 
     16                <bos:maybe-redirect/> 
    1817                <title>$(title)</title> 
    1918        </head> 
  • trunk/projects/bos/web/tags.lisp

    r3557 r3561  
    196196(define-bknr-tag set-cachable () 
    197197  (setf (hunchentoot:header-out :cache-control) "max-age=300")) 
     198 
     199(define-bknr-tag maybe-redirect () 
     200  (when (equal (hunchentoot:script-name*) "/") 
     201    (html (:head ((:meta :http-equiv "refresh" :content "0; url=/index")))))) 
  • trunk/projects/bos/web/webserver.lisp

    r3558 r3561  
    2424 
    2525(defmethod find-template-pathname ((handler worldpay-template-handler) template-name) 
    26   (cond 
    27     ((scan #?r"(^|.*/)handle-sale" template-name) 
    28      (with-query-params (cartId name address country transStatus lang MC_gift) 
    29        (unless (website-supports-language lang) 
    30          (setf lang *default-language*)) 
    31        (bos.m2::remember-worldpay-params cartId (all-request-params)) 
    32        (let ((contract (get-contract (parse-integer cartId)))) 
    33          (sponsor-set-language (contract-sponsor contract) lang) 
    34          (cond 
    35            ((not (typep contract 'contract)) 
    36             (user-error "Error: Invalid transaction ID.")) 
    37            ((contract-paidp contract) 
    38             (user-error "Error: Transaction already processed.")) 
    39            ((equal "C" transStatus) 
    40             (setf template-name #?"/$(lang)/sponsor_canceled")) 
    41            ((< (contract-price contract) *mail-certificate-threshold*) 
    42             (setf template-name #?"/$(lang)/quittung")) 
    43            (t 
    44             (when (<= *mail-fiscal-certificate-threshold* (contract-price contract)) 
    45               (mail-fiscal-certificate-to-office contract name address country)) 
    46             (setf template-name (if (and MC_gift (equal MC_gift "1")) #?"/$(lang)/versand_geschenk" #?"/$(lang)/versand_info"))))))) 
    47     ((and (not (scan "/" template-name)) 
    48           (not (probe-file (merge-pathnames (make-pathname :name template-name :type "xml") 
    49                                             (bknr.web::template-expander-destination handler))))) 
    50      (setf template-name (format nil "~A/~A" (or (find-browser-prefered-language) 
    51                                                  *default-language*) 
    52                                  (if (equal "" template-name) 
    53                                      "index" template-name))))) 
    54   (call-next-method handler template-name)) 
     26  (call-next-method handler 
     27                    (cond 
     28                      ((scan #?r"(^|.*/)handle-sale" template-name) 
     29                       (with-query-params (cartId name address country transStatus lang MC_gift) 
     30                         (unless (website-supports-language lang) 
     31                           (setf lang *default-language*)) 
     32                         (bos.m2::remember-worldpay-params cartId (all-request-params)) 
     33                         (let ((contract (get-contract (parse-integer cartId)))) 
     34                           (sponsor-set-language (contract-sponsor contract) lang) 
     35                           (cond 
     36                             ((not (typep contract 'contract)) 
     37                              (user-error "Error: Invalid transaction ID.")) 
     38                             ((contract-paidp contract) 
     39                              (user-error "Error: Transaction already processed.")) 
     40                             ((equal "C" transStatus) 
     41                              #?"/$(lang)/sponsor_canceled") 
     42                             ((< (contract-price contract) *mail-certificate-threshold*) 
     43                              #?"/$(lang)/quittung") 
     44                             (t 
     45                              (when (<= *mail-fiscal-certificate-threshold* (contract-price contract)) 
     46                                (mail-fiscal-certificate-to-office contract name address country)) 
     47                              (if (and MC_gift (equal MC_gift "1")) 
     48                                  #?"/$(lang)/versand_geschenk" 
     49                                  #?"/$(lang)/versand_info")))))) 
     50                      ((equal "" template-name) 
     51                       "de/index") 
     52                      (t 
     53                       template-name)))) 
    5554 
    5655(defmethod initial-template-environment ((expander worldpay-template-handler)) 
     
    241240                                         :destination ,(merge-pathnames #p"static/favicon.ico" website-directory) 
    242241                                         :content-type "image/x-icon") 
    243                                         ("/" redirect-handler 
    244                                              :to "/index") 
    245242                                        ("/index" index-handler) 
    246243                                        user