2008-04-15 07:35:06 -04:00
|
|
|
! Copyright (c) 2008 Slava Pestov
|
|
|
|
! See http://factorcode.org/license.txt for BSD license.
|
2008-04-22 22:08:27 -04:00
|
|
|
USING: accessors kernel locals sequences namespaces
|
2008-04-15 07:35:06 -04:00
|
|
|
db db.types db.tuples
|
2008-04-30 05:53:01 -04:00
|
|
|
http.server.sessions
|
|
|
|
http.server.components
|
|
|
|
http.server.components.farkup
|
|
|
|
http.server.forms
|
|
|
|
http.server.templating.chloe
|
|
|
|
http.server.boilerplate
|
|
|
|
http.server.crud
|
|
|
|
http.server.auth
|
|
|
|
http.server.actions
|
|
|
|
http.server.db
|
2008-04-23 01:54:41 -04:00
|
|
|
http.server.auth.login
|
2008-04-25 04:23:47 -04:00
|
|
|
http.server ;
|
2008-04-15 08:09:01 -04:00
|
|
|
IN: webapps.todo
|
2008-04-15 07:35:06 -04:00
|
|
|
|
|
|
|
TUPLE: todo uid id priority summary description ;
|
|
|
|
|
|
|
|
todo "TODO"
|
|
|
|
{
|
|
|
|
{ "uid" "UID" { VARCHAR 256 } +not-null+ }
|
2008-04-28 18:38:12 -04:00
|
|
|
{ "id" "ID" +db-assigned-id+ }
|
2008-04-15 07:35:06 -04:00
|
|
|
{ "priority" "PRIORITY" INTEGER +not-null+ }
|
|
|
|
{ "summary" "SUMMARY" { VARCHAR 256 } +not-null+ }
|
|
|
|
{ "description" "DESCRIPTION" { VARCHAR 256 } }
|
|
|
|
} define-persistent
|
|
|
|
|
|
|
|
: init-todo-table todo ensure-table ;
|
|
|
|
|
|
|
|
: <todo> ( id -- todo )
|
|
|
|
todo new
|
|
|
|
swap >>id
|
|
|
|
uid >>uid ;
|
|
|
|
|
|
|
|
: todo-template ( name -- template )
|
|
|
|
"resource:extra/webapps/todo/" swap ".xml" 3append <chloe> ;
|
|
|
|
|
|
|
|
: <todo-form> ( -- form )
|
|
|
|
"todo" <form>
|
|
|
|
"view-todo" todo-template >>view-template
|
|
|
|
"edit-todo" todo-template >>edit-template
|
|
|
|
"todo-summary" todo-template >>summary-template
|
|
|
|
"id" <integer>
|
|
|
|
hidden >>renderer
|
|
|
|
add-field
|
|
|
|
"summary" <string>
|
|
|
|
t >>required
|
|
|
|
add-field
|
|
|
|
"priority" <integer>
|
|
|
|
t >>required
|
|
|
|
0 >>default
|
|
|
|
0 >>min-value
|
|
|
|
10 >>max-value
|
|
|
|
add-field
|
|
|
|
"description" <farkup>
|
|
|
|
add-field ;
|
|
|
|
|
|
|
|
: <todo-list-form> ( -- form )
|
|
|
|
"todo-list" <form>
|
|
|
|
"todo-list" todo-template >>view-template
|
2008-04-16 00:36:27 -04:00
|
|
|
"list" <todo-form> +plain+ <list>
|
2008-04-15 07:35:06 -04:00
|
|
|
add-field ;
|
|
|
|
|
2008-04-25 04:23:47 -04:00
|
|
|
TUPLE: todo-list < dispatcher ;
|
2008-04-15 07:35:06 -04:00
|
|
|
|
2008-04-25 04:23:47 -04:00
|
|
|
:: <todo-list> ( -- responder )
|
2008-04-15 07:35:06 -04:00
|
|
|
[let | todo-form [ <todo-form> ]
|
|
|
|
list-form [ <todo-list-form> ]
|
|
|
|
ctor [ [ <todo> ] ] |
|
2008-04-25 04:23:47 -04:00
|
|
|
todo-list new-dispatcher
|
2008-04-15 07:35:06 -04:00
|
|
|
list-form ctor <list-action> "list" add-main-responder
|
|
|
|
todo-form ctor <view-action> "view" add-responder
|
2008-04-25 04:23:47 -04:00
|
|
|
todo-form ctor "$todo-list/view" <edit-action> "edit" add-responder
|
|
|
|
ctor "$todo-list/list" <delete-action> "delete" add-responder
|
2008-04-15 07:35:06 -04:00
|
|
|
<boilerplate>
|
|
|
|
"todo" todo-template >>template
|
2008-05-01 17:24:50 -04:00
|
|
|
f <protected>
|
2008-04-15 07:35:06 -04:00
|
|
|
] ;
|