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

Revision 3671, 2.7 kB (checked in by ksprotte, 4 months ago)

again whitespace cleanup + removed tabs

Line 
1 (in-package :bos.web)
2
3 (enable-interpol-syntax)
4
5 (defmethod edit-object-url ((news-item news-item))
6   (format nil "/edit-news/~A" (store-object-id news-item)))
7
8 (defclass edit-news-handler (editor-only-handler edit-object-handler)
9   ())
10
11 (defmethod handle-object-form ((handler edit-news-handler) action (news-item (eql nil)))
12   (let ((language (request-language)))
13     (with-bos-cms-page (:title "Edit news items")
14       (content-language-chooser)
15       (:h2 "Create new item")
16       ((:form :method "post")
17        (submit-button "new" "new"))
18       (if (all-news-items)
19           (html
20            (:h2 "Choose existing news item")
21            (:ul
22             (dolist (news-item (all-news-items))
23               (let ((id (store-object-id news-item)))
24                 (html (:li (cmslink #?"edit-news/$(id)"
25                                     (:princ-safe (format-date-time (news-item-time news-item)))
26                                     " - "
27                                     (:princ-safe (or (news-item-title news-item language) "[no title in this language]")))))))))
28           (html
29            (:h2 "No news items created yet"))))))
30
31 (defmethod handle-object-form ((handler edit-news-handler) (action (eql :new)) (news-item (eql nil)))
32   (redirect (format nil "/edit-news/~D" (store-object-id (make-news-item)))))
33
34 (defmethod handle-object-form ((handler edit-news-handler) action news-item)
35   (let ((language (request-language)))
36     (with-bos-cms-page (:title "Edit news item")
37       (content-language-chooser)
38       ((:script :type "text/javascript")
39        "tinyMCE.init({ mode : 'textareas', theme : 'advanced' });")
40       ((:form :method "post")
41        (:table
42         (:tr (:td "title")
43              (:td (text-field "title"
44                               :value (news-item-title news-item language))))
45         (:tr (:td "text")
46              (:td (textarea-field "text"
47                                   :value (news-item-text news-item language))))
48         (:tr (:td (submit-button "save" "save") (submit-button "delete" "delete" :confirm "Really delete the news item?"))))))))
49
50 (defmethod handle-object-form ((handler edit-news-handler) (action (eql :save)) news-item)
51   (let ((language (request-language)))
52     (with-query-params (title text)
53       (update-news-item news-item language :title title :text text)
54       (with-bos-cms-page (:title "News item updated")
55         (:h2 "Your changes have been saved")
56         "You may " (cmslink (edit-object-url news-item) "continue editing the news item")))))
57
58 (defmethod handle-object-form ((handler edit-news-handler) (action (eql :delete)) news-item)
59   (delete-object news-item)
60   (with-bos-cms-page (:title "News item has been deleted")
61     (:h2 "The news item has been deleted")))
Note: See TracBrowser for help on using the browser.