root/trunk/projects/bos/web/news-tags.lisp

Revision 4017, 2.0 kB (checked in by hans, 3 weeks ago)

Fix news links.

  • Property svn:eol-style set to native
  • Property svn:keywords set to author date id revision
Line 
1 (in-package :bos.web)
2
3 (enable-interpol-syntax)
4
5 (defun text-with-linebreaks (text)
6   (loop for line in (split #?r"\r?\n" text)
7      do (html (:princ-safe line) :br)))
8
9 (define-bknr-tag news-headlines (&key archive)
10   (let ((language (request-language)))
11     (let* ((now (get-universal-time))
12            (news-items (if archive
13                            (all-news-items language)
14                            (let ((items (sort (remove-if
15                                                #'(lambda (news-item)
16                                                    (> (- now (news-item-time news-item)) *maximum-news-item-age*))
17                                                (all-news-items language))
18                                               #'>
19                                               :key #'news-item-time)))
20                              (subseq items 0 (min (length items) 3))))))
21       (labels ((show-news-entry (news-item)
22                  (html ((:a :href "#" :onclick (format nil "return window_news('/~a/news/~a')" language (store-object-id news-item))
23                             :class "more")
24                         (:strong (:princ-safe (format-date-time (news-item-time news-item) :show-time nil))
25                          :br
26                          (:princ-safe (news-item-title news-item language)))))))
27         (loop for news-item in news-items
28            for index from 1
29            do (if archive
30                   (html (show-news-entry news-item)
31                         :br :br)
32                   (html ((:div :id (format nil "newsbox~a" index))
33                          (show-news-entry news-item)))))))))
34
35 (define-bknr-tag news-item ()
36   (let ((news-item (find-store-object (parse-integer (nth-value 1 (parse-url)))))
37         (language (request-language)))
38     (html ((:h1 :class "extra")
39            (:princ-safe (format-date-time (news-item-time news-item) :show-time nil))
40            ", "
41            (:princ-safe (news-item-title news-item language)))
42           ((:p :class "text_content")
43            (:princ (news-item-text news-item language))))))
Note: See TracBrowser for help on using the browser.