shithub: werc

Download patch

ref: 17ed43a1fe0ee0cf48772b72b3a3a94f5d77cd56
parent: 05e5899fc564a8ee7829a0cd97dc40bc4e9b0248
author: sl <uriel@engel.se.cat-v.org>
date: Fri Feb 13 18:21:15 EST 2009

Updates to blagh: Allow setting date of new posts, blog-editors default group, provide better error repporting using new notification framework, plus other bug fixes.

--- a/apps/blagh/app.rc
+++ b/apps/blagh/app.rc
@@ -17,8 +17,12 @@
     # && test -d / `{echo '-a -d '^$blagh_root^$blagh_dirs}
         blagh_url=$base_url^$blagh_uri
         blagh_root=$sitedir^$blagh_uri
-        if(check_user $blog_editors admin) {
+        if(check_user $blog_editors blog-editors) {
             editor_mode=on
+            if(~ $"post_arg_date '')
+                post_date=`{/bin/date +%F|sed 's,-,/,g'}
+            if not
+                post_date=$post_arg_date
             ll_add handlers_bar_left echo '<a href="'$blagh_uri'new_post">Make a new post</a>'
         }
 
@@ -35,11 +39,12 @@
             blagh_setup_feed_handlers rss20.tpl
         case $blagh_uri^new_post 
             if(! ~ $#editor_mode 0) {
-                if(~ $REQUEST_METHOD GET)
-                    handler_body_main=( tpl_handler `{get_lib_file blagh/new_post.tpl apps/blagh/new_post.tpl} )
-                if not if(~ $REQUEST_METHOD POST) {
-                    mkbpost $post_arg_id $post_arg_title $post_arg_body
-                    post_redirect $blagh_uri
+                handler_body_main=( tpl_handler `{get_lib_file blagh/new_post.tpl apps/blagh/new_post.tpl} )
+                if(~ $REQUEST_METHOD POST) {
+                    if(mkbpost $"post_arg_body $"post_date $"post_arg_title $post_arg_id)
+                        post_redirect $blagh_uri
+                    if not
+                        notify_errors=$status
                 }
             }
         }
@@ -73,21 +78,30 @@
 }
 
 fn mkbpost {
-    if(! ~ 0 $#1 $#2) {
+    bptext=$1
+    bpdate=$2
+    bptitle=$3
+    bpid=$4
+    _status=()
+    if(~ $"bptext '')
+        _status=($_status 'You need to provide a post body.')
+    if(! ~ $"bpdate [0-9][0-9][0-9][0-9]/[0-9][0-9]/[0-9][0-9])
+        _status=($_status 'Invalid date: '''^$"bpdate^'''') # XXX Should make semantic check.
+
+    if(~ $#_status 0) {
         umask 002 # Let group write
-        bptitle=$1
-        bptext=$2
-        if(! ~ $#3 0)
-            bpid=`{echo -n '-'^$"bpid | sed 's/'$forbidden_uri_chars'+/_/g; 1q'}
-        d=`{/bin/date +%F|sed 's,-,/,g'}
+        if(! ~ $"bpid '')
+            bpid=`{echo -n '-'^$bpid | sed 's/'$forbidden_uri_chars'+/_/g; 1q'}
         
-        ddir=$blagh_root^$d^'/'
+        ddir=$blagh_root^$bpdate^'/'
         n=`{ls $ddir >[2]/dev/null |wc -l}
         
         mkdir -p $ddir/$"n^$"bpid/
         {
-            echo $bptitle
-            echo '========================================='
+            if(! ~ $"bptitle '') {
+                echo $bptitle
+                echo '========================================='
+            }
             # TODO: Enable metadata
             #echo '* Posted:' `{date}
             #if(! ~ $#logged_user 0)
@@ -96,6 +110,5 @@
             echo $bptext
         }> $ddir/$"n^$"bpid/index.md 
     }
-    if not
-        status=Missing blog post arguments $"1 $"2
+    status=$_status
 }
--- a/apps/blagh/new_post.tpl
+++ b/apps/blagh/new_post.tpl
@@ -1,7 +1,11 @@
+<div>
+% notices_handler
 <form method="POST"><fieldset>
     <legend>Submit a new blog post</legend>
-    <textarea cols="80" rows=16" name="body"></textarea><br />
-    <label>Title: <input size="64" type="text" name="title" /></label>
-    <label>Id: <input size="8" type="text" name="id" /></label>
+    <textarea cols="94" rows=16" name="body">%($"post_arg_body%)</textarea><br />
+    <label>Title: <input size="64" type="text" name="title" value="%($"post_arg_title%)" /></label>
+    <label>Id: <input size="8" type="text" name="id" value="%($"post_arg_id%)" /></label>
+    <label>Date: <input size="10" maxlength="10" type="text" name="date" value="%($"post_date%)" /></label>
     <input type="submit" value="Post" />
 </fieldset></form>
+</div>