From 72c898e2b52d6e523acd16495f41f8c3983afe92 Mon Sep 17 00:00:00 2001
From: Daniel Ehrenberg <littledan@Macintosh-103.local>
Date: Tue, 10 Feb 2009 19:05:08 -0600
Subject: [PATCH] Code for letting you test the todo list

---
 extra/webapps/todo/todo.factor | 52 +++++++++++++++++++++++++++++++++-
 extra/webapps/todo/todo.xml    | 11 +++++++
 2 files changed, 62 insertions(+), 1 deletion(-)

diff --git a/extra/webapps/todo/todo.factor b/extra/webapps/todo/todo.factor
index e1f6c8735a..6ef60c198f 100755
--- a/extra/webapps/todo/todo.factor
+++ b/extra/webapps/todo/todo.factor
@@ -106,7 +106,8 @@ todo "TODO"
 
 : <todo-list> ( -- responder )
     todo-list new-dispatcher
-        <list-action>   ""       add-responder
+        <list-action>   "list"       add-responder
+        URL" /list" <redirect-responder> "" add-responder
         <view-action>   "view"   add-responder
         <new-action>    "new"    add-responder
         <edit-action>   "edit"   add-responder
@@ -115,3 +116,52 @@ todo "TODO"
         { todo-list "todo" } >>template
     <protected>
         "view your todo list" >>description ;
+
+USING: furnace.auth.features.registration
+furnace.auth.features.edit-profile
+furnace.auth.features.deactivate-user
+db.sqlite
+furnace.alloy
+io.servers.connection
+io.sockets.secure ;
+
+: <login-config> ( responder -- responder' )
+    "Todo list" <login-realm>
+        "Todo list" >>name
+        allow-registration
+        allow-edit-profile
+        allow-deactivation ;
+
+: todo-db ( -- db ) "resource:todo.db" <sqlite-db> ;
+
+: init-todo-db ( -- )
+    todo-db [
+        init-furnace-tables
+        todo ensure-table
+    ] with-db ;
+
+: <todo-secure-config> ( -- config )
+    ! This is only suitable for testing!
+    <secure-config>
+        "resource:basis/openssl/test/dh1024.pem" >>dh-file
+        "resource:basis/openssl/test/server.pem" >>key-file
+        "password" >>password ;
+
+: <todo-app> ( -- responder )
+    init-todo-db
+    <todo-list>
+        <login-config>
+        todo-db <alloy> ;
+
+: <todo-website-server> ( -- threaded-server )
+    <http-server>
+        <todo-secure-config> >>secure-config
+        8080 >>insecure
+        8431 >>secure ;
+
+: run-todo ( -- )
+    <todo-app> main-responder set-global
+    todo-db start-expiring
+    <todo-website-server> start-server ;
+
+MAIN: run-todo
diff --git a/extra/webapps/todo/todo.xml b/extra/webapps/todo/todo.xml
index f7500cdad2..00ed63560c 100644
--- a/extra/webapps/todo/todo.xml
+++ b/extra/webapps/todo/todo.xml
@@ -2,7 +2,14 @@
 
 <t:chloe xmlns:t="http://factorcode.org/chloe/1.0">
 
+<html>
+
 	<t:style t:include="resource:extra/webapps/todo/todo.css" />
+	<t:style t:include="resource:extra/websites/concatenative/page.css" />
+
+    <head><t:write-title/><t:write-style/></head>
+
+    <body>
 
 	<div class="navbar">
 		  <t:a t:href="$todo-list/list">List Items</t:a>
@@ -19,4 +26,8 @@
 
 	<t:call-next-template />
 
+    </body>
+
+</html>
+
 </t:chloe>