X-Git-Url: https://gitweb.factorcode.org/gitweb.cgi?p=factor.git;a=blobdiff_plain;f=extra%2Fwebapps%2Fwiki%2Fwiki.factor;h=3074915bb04599bfda52c3ebb122bb606c3d687d;hp=ef7ce8dafdad730846e4aa48905b6ade618378a8;hb=d1b6d30ca5c6521fa3116aa0e20dcf7ecce7509a;hpb=343b55287be590fdf59d0a532291937b1635dd2c diff --git a/extra/webapps/wiki/wiki.factor b/extra/webapps/wiki/wiki.factor index ef7ce8dafd..3074915bb0 100644 --- a/extra/webapps/wiki/wiki.factor +++ b/extra/webapps/wiki/wiki.factor @@ -3,9 +3,10 @@ USING: accessors calendar db.tuples db.types farkup furnace.actions furnace.auth furnace.boilerplate furnace.recaptcha furnace.redirection furnace.syndication -furnace.utilities html.forms http.server.dispatchers +furnace.utilities html.forms http.server http.server.dispatchers http.server.static kernel lcs make namespaces present random -sequences sorting splitting urls validators ; +regexp sequences simple-tokenizer sorting splitting unicode urls +validators ; IN: webapps.wiki : wiki-url ( rest path -- url ) @@ -305,6 +306,33 @@ M: revision feed-entry-url id>> revision-url ; { wiki "articles" } >>template ; +: ( -- action ) + + + [ + "search" param [ unicode:blank? ] trim + dup "search" set-value + + [ f ] [ + tokenize [ + " " "\s+" replace "\\b" dup surround + "i" + ] map + ] if-empty + + [ f ] [ + f
select-tuples + [ title>> ] sort-with + [ revision>> select-tuple ] map + swap '[ content>> _ [ first-match ] with all? ] filter + ] if-empty + + [ "results" set-value ] + [ not "empty" set-value ] bi + ] >>init + + { wiki "search" } >>template ; + : list-user-edits ( -- seq ) f "author" value >>author select-tuples reverse-chronological-order ; @@ -352,6 +380,7 @@ M: revision feed-entry-url id>> revision-url ; "rollback" add-responder "user-edits" add-responder "articles" add-responder + "search" add-responder "changes" add-responder "user-edits.atom" add-responder "changes.atom" add-responder