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 )