|
Revision 3942, 1.9 kB
(checked in by hans, 2 months ago)
|
Merge from anon-transaction-fixes-2 branch. This changeset removes
make-object and initialize-persistent-instance, makes the allocation
of object IDs simpler and more safe and removes several relicts from
previous refactoring iterations. Also, the store tests have been
extended significantly to test pathological cases and create objects
from multiple threads.
|
| Line | |
|---|
| 1 |
(in-package :bos.web) |
|---|
| 2 |
|
|---|
| 3 |
(enable-interpol-syntax) |
|---|
| 4 |
|
|---|
| 5 |
(defclass languages-handler (admin-only-handler form-handler) |
|---|
| 6 |
()) |
|---|
| 7 |
|
|---|
| 8 |
(defmethod handle-form ((handler languages-handler) action) |
|---|
| 9 |
(with-bos-cms-page (:title "Languages") |
|---|
| 10 |
(case action |
|---|
| 11 |
(:add (handler-case |
|---|
| 12 |
(with-query-params (code name) |
|---|
| 13 |
(when (and code name) |
|---|
| 14 |
(make-instance 'website-language :code code :name name) |
|---|
| 15 |
(html (:h2 "Language " (:princ-safe code) " (" (:princ-safe name) ") created")))) |
|---|
| 16 |
(error (e) |
|---|
| 17 |
(html (:h2 "Error creating language") |
|---|
| 18 |
(:pre (:princ-safe e)))))) |
|---|
| 19 |
(:delete (handler-case |
|---|
| 20 |
(with-query-params (delete-code) |
|---|
| 21 |
(when delete-code |
|---|
| 22 |
(delete-object (language-with-code delete-code)) |
|---|
| 23 |
(html (:h2 "Language " (:princ-safe delete-code) " deleted")))) |
|---|
| 24 |
(error (e) |
|---|
| 25 |
(html (:h2 "Error creating language") |
|---|
| 26 |
(:pre (:princ-safe e))))))) |
|---|
| 27 |
(html ((:form :method "post") |
|---|
| 28 |
(:ul |
|---|
| 29 |
(dolist (language (class-instances 'website-language)) |
|---|
| 30 |
(html (:li ((:input :type "checkbox" :name "delete-code" :value (website-language-code language))) |
|---|
| 31 |
(:princ-safe (website-language-code language)) |
|---|
| 32 |
" (" (:princ-safe (website-language-name language)) ")")))) |
|---|
| 33 |
(:p |
|---|
| 34 |
(:h2 "Add a language") |
|---|
| 35 |
"Code: " ((:input :type "text" :size "2" :maxlength "2" :name "code")) |
|---|
| 36 |
"Name: " ((:input :type "text" :name "name")) |
|---|
| 37 |
((:input :type "submit" :name "action" :value "add"))) |
|---|
| 38 |
(:p |
|---|
| 39 |
(:h2 "Delete language(s)") |
|---|
| 40 |
"Please check the languages you want to delete and click " |
|---|
| 41 |
((:input :type "submit" :name "action" :value "delete"))))))) |
|---|