diff --git a/extra/webapps/wiki/view.xml b/extra/webapps/wiki/view.xml
index 38d9d39d55..5136e4945d 100644
--- a/extra/webapps/wiki/view.xml
+++ b/extra/webapps/wiki/view.xml
@@ -5,7 +5,7 @@
-
+
diff --git a/extra/webapps/wiki/wiki-common.xml b/extra/webapps/wiki/wiki-common.xml
index dea79670a3..89a0f17706 100644
--- a/extra/webapps/wiki/wiki-common.xml
+++ b/extra/webapps/wiki/wiki-common.xml
@@ -41,7 +41,7 @@
-
+
@@ -52,7 +52,7 @@
-
+
|
diff --git a/extra/webapps/wiki/wiki.factor b/extra/webapps/wiki/wiki.factor
index 380f41cf97..5f679be431 100644
--- a/extra/webapps/wiki/wiki.factor
+++ b/extra/webapps/wiki/wiki.factor
@@ -3,7 +3,7 @@
USING: accessors kernel hashtables calendar random assocs
namespaces splitting sequences sorting math.order present
io.files io.encodings.ascii
-syndication
+syndication farkup
html.components html.forms
http.server
http.server.dispatchers
@@ -47,7 +47,7 @@ article "ARTICLES" {
: ( title -- article ) article new swap >>title ;
-TUPLE: revision id title author date content description ;
+TUPLE: revision id title author date content html description ;
revision "REVISIONS" {
{ "id" "ID" INTEGER +db-assigned-id+ }
@@ -55,6 +55,7 @@ revision "REVISIONS" {
{ "author" "AUTHOR" { VARCHAR 256 } +not-null+ } ! uid
{ "date" "DATE" TIMESTAMP +not-null+ }
{ "content" "CONTENT" TEXT +not-null+ }
+ { "html" "HTML" TEXT +not-null+ } ! Farkup converted to HTML
{ "description" "DESCRIPTION" TEXT }
} define-persistent
@@ -71,6 +72,9 @@ M: revision feed-entry-url id>> revision-url ;
: ( id -- revision )
revision new swap >>id ;
+: compute-html ( revision -- )
+ dup content>> convert-farkup >>html drop ;
+
: validate-title ( -- )
{ { "title" [ v-one-line ] } } validate-params ;
@@ -144,11 +148,13 @@ M: revision feed-entry-url id>> revision-url ;
[ title>> ] [ id>> ] bi article boa insert-tuple ;
: add-revision ( revision -- )
+ [ compute-html ]
[ insert-tuple ]
[
dup title>> select-tuple
[ amend-article ] [ add-article ] if*
- ] bi ;
+ ]
+ tri ;
: ( -- action )