]> gitweb.factorcode.org Git - factor.git/commitdiff
webapps.wiki.example: new vocab to show how the wiki webapp should be
authorBjörn Lindqvist <bjourne@gmail.com>
Sun, 4 Oct 2015 01:07:29 +0000 (03:07 +0200)
committerBjörn Lindqvist <bjourne@gmail.com>
Sun, 4 Oct 2015 01:07:29 +0000 (03:07 +0200)
run

it's a little tricky to figure out so a vocab demonstrating it is useful

basis/furnace/recaptcha/example/example.factor
extra/webapps/wiki/example/example.factor [new file with mode: 0644]
extra/webapps/wiki/wiki.factor

index 3650e2bcf999a5df9435ae4a4aea4df2b9be4768..6c2acc541ea0574c460e57a861ec5b3968d33e8c 100644 (file)
@@ -17,11 +17,14 @@ TUPLE: recaptcha-app < dispatcher recaptcha ;
         [ "?good" >url <redirect> ] >>submit
         { recaptcha-app "example" } >>template ;
 
+: <test-recaptcha> ( responder -- recaptcha )
+    <recaptcha>
+        "concatenative.org" >>domain
+        "6LeJWQgAAAAAAFlYV7SuBClE9uSpGtV_ZS-qVON7" >>public-key
+        "6LeJWQgAAAAAALh-XJgSSQ6xKygRgJ8-029Ip2Xv" >>private-key ;
+
 : <recaptcha-app> ( -- obj )
     \ recaptcha-app new-dispatcher
         <recaptcha-challenge> "" add-responder
-        <recaptcha>
-            "concatenative.org" >>domain
-            "6LeJWQgAAAAAAFlYV7SuBClE9uSpGtV_ZS-qVON7" >>public-key
-            "6LeJWQgAAAAAALh-XJgSSQ6xKygRgJ8-029Ip2Xv" >>private-key
+        <test-recaptcha>
         recaptcha-db <alloy> ;
diff --git a/extra/webapps/wiki/example/example.factor b/extra/webapps/wiki/example/example.factor
new file mode 100644 (file)
index 0000000..99c005f
--- /dev/null
@@ -0,0 +1,54 @@
+USING: accessors calendar db db.sqlite db.tuples furnace.alloy
+furnace.recaptcha.example http.server io.directories
+io.encodings.ascii io.files io.files.temp io.servers
+io.sockets.secure.debug kernel namespaces sequences splitting
+webapps.wiki websites.concatenative ;
+IN: webapps.wiki.example
+
+: wiki-db ( -- db )
+    "wiki.db" temp-file <sqlite-db> ;
+
+: insert-page ( file-name -- )
+    dup ".txt" ?tail [
+        swap ascii file-contents
+        f <revision>
+            swap >>content
+            swap >>title
+            "slava" >>author
+            now >>date
+        add-revision
+    ] [ 2drop ] if ;
+
+: insert-pages ( -- )
+    "resource:extra/webapps/wiki/initial-content" [
+        [ insert-page ] each
+    ] with-directory-files ;
+
+: init-wiki-db ( -- )
+    wiki-db [
+        init-furnace-tables
+        article ensure-table
+        revision ensure-table
+        insert-pages
+    ] with-db ;
+
+: <wiki-app> ( -- dispatcher )
+    <wiki>
+    <test-recaptcha>
+    <login-config>
+    <factor-boilerplate>
+    wiki-db <alloy> ;
+
+: <wiki-website-server> ( -- threaded-server )
+    <http-server>
+        <test-secure-config> >>secure-config
+        8080 >>insecure
+        8431 >>secure ;
+
+: run-wiki ( -- )
+    init-wiki-db
+    <wiki-app> main-responder set-global
+    wiki-db start-expiring
+    <wiki-website-server> start-server drop ;
+
+MAIN: run-wiki
index ce3dd31d921d07e41f3a9716a661c8ff3144040c..5339a3d6546a7b98dce1eb4dce2b9eebcc703e61 100644 (file)
@@ -370,18 +370,3 @@ M: revision feed-entry-url id>> revision-url ;
     <boilerplate>
         [ init-sidebars init-relative-link-prefix ] >>init
         { wiki "wiki-common" } >>template ;
-
-: init-wiki ( -- )
-    "resource:extra/webapps/wiki/initial-content" [
-        [
-            dup ".txt" ?tail [
-                swap ascii file-contents
-                f <revision>
-                    swap >>content
-                    swap >>title
-                    "slava" >>author
-                    now >>date
-                add-revision
-            ] [ 2drop ] if
-        ] each
-    ] with-directory-files ;