[Basic paged weblog archive clinton@unknownlamer.org**20090228205134 Ignore-this: 9ace4d270c383b7fe9cce1283b0b23e4 * URLs are bookmarkable (offset is stored in URL as paged from start to provide relatively stable bookmarks) * Various CSS tweaks to make this look acceptable ] hunk ./src/site-control.lisp 17 + (defentry-point "^pages/blog/(\\d+)$" (:application (find-site-application site :frontend) + :class regexp-dispatcher) + () + (let ((window (make-instance 'beesknees.web:bee-frontend-window))) + (setf (container.current-component-key (window-body window)) + 'beesknees.web::blog) + (setf (golgonooza:page-offset (container.current-component + (window-body window))) + (parse-integer (aref *dispatcher-registers* 0))) + (call-component nil window))) hunk ./src/web-frontend.lisp 31 - :limit 1 hunk ./src/web-frontend.lisp 34 - (<:img :src (arnesi:strcat - (application.url-prefix (context.application *context*)) - "static/img/logos/blog.png") - :alt "Weblog") hunk ./src/web-frontend.lisp 35 - (<:progn + (<:div :class "bee-blog-entry" hunk ./src/web-frontend.lisp 48 +(defcomponent bee-paged-blog (bee-stylable-page + golgonooza:query-paged-view-mixin bee-blog) + ()) + +(defvar *archive-page* nil) + +;; Store the page offset as if it the blog were sorted normally +;; instead of reversed so that bookmarks will always point to (more or +;; less) the same page even if the archive ends up with more items +(defmethod update-url ((c bee-paged-blog) uri) + (when *archive-page* + (append-path-to-uri uri (format nil "pages/blog/~A" + (- (golgonooza:page-count c) + *archive-page*)))) + uri) + +(defmethod render :after ((self bee-paged-blog)) + ;; mark with css classes + ;; replace text with images! + (<:p :class "bee-blog-pager" + (if (golgonooza:have-previous-page-p self) + (let ((*archive-page* (1- (golgonooza:page-offset self)))) + (