[bknr-cvs] r1976 - in branches/xml-class-rework/bknr/src: . rss web

bknr at bknr.net bknr at bknr.net
Sun Aug 13 09:48:06 UTC 2006


Author: hhubner
Date: 2006-08-13 05:48:06 -0400 (Sun, 13 Aug 2006)
New Revision: 1976

Modified:
   branches/xml-class-rework/bknr/src/packages.lisp
   branches/xml-class-rework/bknr/src/rss/rss.lisp
   branches/xml-class-rework/bknr/src/web/handlers.lisp
Log:
Reworked RSS generation.


Modified: branches/xml-class-rework/bknr/src/packages.lisp
===================================================================
--- branches/xml-class-rework/bknr/src/packages.lisp	2006-07-23 16:07:35 UTC (rev 1975)
+++ branches/xml-class-rework/bknr/src/packages.lisp	2006-08-13 09:48:06 UTC (rev 1976)
@@ -61,6 +61,8 @@
 	   ;; item
 	   #:rss-item
 	   #:rss-item-channel
+	   #:rss-item-published
+	   #:rss-item-pub-date
 	   #:rss-item-title
 	   #:rss-item-link
 	   #:rss-item-description

Modified: branches/xml-class-rework/bknr/src/rss/rss.lisp
===================================================================
--- branches/xml-class-rework/bknr/src/rss/rss.lisp	2006-07-23 16:07:35 UTC (rev 1975)
+++ branches/xml-class-rework/bknr/src/rss/rss.lisp	2006-08-13 09:48:06 UTC (rev 1976)
@@ -47,14 +47,22 @@
    (link :update)
    (description :update)
    (last-update :update :initform (get-universal-time))
-   (max-item-age :update :initform (* 7 3600))
+   (max-item-age :update :initform (* 4 7 3600))
    (items :update :initform nil)))
 
 ;; Mixin for items
 
 (define-persistent-class rss-item ()
-  ((pub-date :read)))
+  ())
 
+(defgeneric rss-item-pub-date (item))
+
+(defmethod rss-item-pub-date ((item rss-item))
+  "The default implementation for the publication date delivers the
+current system date/time as publication date."
+  (warn "no rss-item-pub-date defined for class ~A, using current date/time" (class-of item))
+  (get-universal-time))
+
 (defun make-rss-channel (name title description link &rest args)
   (apply #'make-object 'rss-channel :name name :title title :description description :link link args))
   
@@ -73,7 +81,7 @@
 	(dolist (slot '(title link description))
 	  (render-mandatory-element channel slot))
 	
-	(dolist (item (rss-channel-items channel))
+	(dolist (item (remove-if-not #'rss-item-published (rss-channel-items channel)))
 	  (rss-item-xml item))))))
 
 (defmethod rss-channel-items ((channel rss-channel))
@@ -118,6 +126,9 @@
 (defmethod destroy-object :before ((rss-item rss-item))
   (remove-item (rss-item-channel rss-item) rss-item))
 
+(defmethod rss-item-published ((rss-item rss-item))
+  t)
+
 (defmethod rss-item-channel ((rss-item rss-item)))
 (defmethod rss-item-title ((rss-item rss-item)))
 (defmethod rss-item-link ((rss-item rss-item)))

Modified: branches/xml-class-rework/bknr/src/web/handlers.lisp
===================================================================
--- branches/xml-class-rework/bknr/src/web/handlers.lisp	2006-07-23 16:07:35 UTC (rev 1975)
+++ branches/xml-class-rework/bknr/src/web/handlers.lisp	2006-08-13 09:48:06 UTC (rev 1976)
@@ -231,11 +231,13 @@
 	  (setf (session-variable :login-redirect-uri)
 		(redirect-uri (request-uri req)))
 	  (redirect (website-make-path *website* "login") req))
-	(handler-bind ((error #'(lambda (e)
-                                  (funcall (website-show-error-page-function *website*) e)
-				  (do-error-log-request req e)
-				  (error e))))
-	  (handle handler req)))
+	(if (member :notrap net.aserve::*debug-current* :test #'eq)
+	    (handle handler req)
+	    (handler-bind ((error #'(lambda (e)
+				      (funcall (website-show-error-page-function *website*) e)
+				      (do-error-log-request req e)
+				      (error e))))
+	      (handle handler req))))
     (handler-case
 	(mapcar #'delete-file (mapcar #'cdr (request-uploaded-files req)))
       (error (e)




More information about the Bknr-cvs mailing list