Changeset 3707

Show
Ignore:
Timestamp:
07/31/08 11:02:18 (4 months ago)
Author:
ksprotte
Message:

refactored web/poi-handlers.lisp

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/projects/bos/web/poi-handlers.lisp

    r3706 r3707  
    33(enable-interpol-syntax) 
    44 
     5;;; make-poi-handler 
    56(defclass make-poi-handler (page-handler) 
    67  ()) 
     
    2021       (redirect (edit-object-url (make-poi name))))))) 
    2122 
     23;;; edit-poi-handler 
    2224(defclass edit-poi-handler (editor-only-handler edit-object-handler) 
    2325  () 
     
    284286          "The POI has been deleted"))) 
    285287 
    286 ;; edit-poi-image 
    287  
     288;;; edit-poi-image-handler 
    288289(defclass edit-poi-image-handler (editor-only-handler edit-object-handler) 
    289290  () 
     
    376377      "You may " (cmslink (edit-object-url poi) "continue editing the POI")))) 
    377378 
     379;;; poi-javascript-handler 
    378380(defclass poi-javascript-handler (page-handler) 
    379381  ()) 
     
    404406          (:princ (format nil "parent.last_sponsors([~{~A~^,~%~}]);" (mapcar #'contract-js last-paid-contracts))))))))) 
    405407 
     408;;; poi-image-handler 
    406409(defclass poi-image-handler (object-handler) 
    407410  () 
     
    423426          (error "image index ~a out of bounds for poi ~a" image-index poi))))) 
    424427 
     428;;; poi-movie-handler 
    425429(defclass poi-movie-handler (admin-only-handler object-handler) 
    426430  () 
     
    440444              :width "425" :height "344"))))) 
    441445 
     446;;; poi-xml-handler 
    442447(defun write-poi-xml (poi language) 
    443448  "Writes the poi xml format for one specific language.  This is used 
     
    493498              (with-element "url" (text (poi-movie-url movie)))))))))) 
    494499 
     500(defclass poi-xml-handler (object-handler) 
     501  () 
     502  (:default-initargs :object-class 'poi :query-function #'find-poi)) 
     503 
     504 
     505(defmethod handle-object ((handler poi-xml-handler) poi) 
     506  (let ((timestamp (store-object-last-change poi 1))) 
     507    (hunchentoot:handle-if-modified-since timestamp) 
     508    (setf (hunchentoot:header-out :last-modified) 
     509          (hunchentoot:rfc-1123-date timestamp)) 
     510    (with-query-params ((lang "en")) 
     511      (with-xml-response (:xsl-stylesheet-name "/static/poi.xsl") 
     512        (write-poi-xml poi lang))))) 
     513 
     514;;; poi-kml-handler 
    495515(defun poi-description-google-earth (poi language &key (image-width 120)) 
    496516  (labels ((website-path (path &rest args) 
     
    591611      (error (c) (error "while generating poi-description-google-earth for ~s:~%~a" poi c))))) 
    592612 
    593  
    594  
    595613(defun write-poi-kml (poi language) 
    596614  (with-element "Placemark" 
     
    604622        (text (format nil "~{~,20F,~}0" (poi-center-lon-lat poi))))))) 
    605623 
    606 (defclass poi-xml-handler (object-handler) 
    607   () 
    608   (:default-initargs :object-class 'poi :query-function #'find-poi)) 
    609  
    610  
    611 (defmethod handle-object ((handler poi-xml-handler) poi) 
    612   (let ((timestamp (store-object-last-change poi 1))) 
    613     (hunchentoot:handle-if-modified-since timestamp) 
    614     (setf (hunchentoot:header-out :last-modified) 
    615           (hunchentoot:rfc-1123-date timestamp)) 
    616     (with-query-params ((lang "en")) 
    617       (with-xml-response (:xsl-stylesheet-name "/static/poi.xsl") 
    618         (write-poi-xml poi lang))))) 
    619  
    620624(defclass poi-kml-handler (object-handler) 
    621625  () 
     
    630634          (write-poi-kml poi lang)))))) 
    631635 
     636;;; poi-kml-all-handler 
    632637(defclass poi-kml-all-handler (page-handler) 
    633638  ())