shithub: werc

Download patch

ref: b4148bc258fc901a6f3d00ca7326d10c2d9ad2cc
parent: add7d8d0bdf124a07da832eb718b72309f1b27fb
author: uriel <uriel@engel.se.cat-v.org>
date: Tue Mar 3 22:12:54 EST 2009

Implement file creation for dirdir.

--- a/apps/dirdir/app.rc
+++ b/apps/dirdir/app.rc
@@ -5,27 +5,47 @@
 }
 
 fn dirdir_init {
-    if(! ~ $#enable_wiki 0 && check_user $wiki_editors_groups && test -f $local_path.md) {
+    if(! ~ $#enable_wiki 0 && check_user $wiki_editors_groups) {
         dirdir_file=$local_path.md
         dirdir_dir=$dirdir_file^'_werc/dirdir/'
             
-        if(~ $#post_arg_dirdir_save 1 && ! ~ $"post_arg_edit_text '') {
+        if(test -f $local_path.md) {
+            if(~ $#post_arg_dirdir_save 1 && ! ~ $"post_arg_edit_text '')
+                save_page
 
-            dirdir_verdir=$dirdir_dir/^`{date -n}^/
-            mkdir -p $dirdir_verdir
+            if not if(~ 1 $#post_arg_dirdir_edit $#post_arg_dirdir_preview)
+                handler_body_main=(tpl_handler \
+                    `{get_lib_file dirdir/edit.tpl apps/dirdir/edit.tpl})
 
-            # XXX Use a tmp file and  mv(1) to ensure updates are atomic?
-            echo $logged_user > $dirdir_verdir/author
-            echo $post_arg_edit_text > $dirdir_verdir/data 
-            echo $post_arg_edit_text > $dirdir_file
+            if not if(! ~ $REQUEST_METHOD POST)
+                ll_add handlers_bar_left tpl_handler \
+                    apps/dirdir/sidebar_controls.tpl
+        }
 
-            post_redirect $base_url^$req_path
-            #notify_notes='Saved <a href="'$"req_path'">'$"req_path'</a>!'
+        if not if(~ 1 $#post_arg_dirdir_edit)
+            handler_body_main=(tpl_handler \
+                `{get_lib_file dirdir/edit.tpl apps/dirdir/edit.tpl})
+
+        if not if(~ 1 $#post_arg_dirdir_save) {
+            mkdir -p `{basename -d $local_path}
+            save_page
         }
-        if not if(~ $#post_arg_dirdir_edit 1 || ~ $#post_arg_dirdir_preview 1)
-            handler_body_main=(tpl_handler `{get_lib_file dirdir/edit.tpl apps/dirdir/edit.tpl} )
-        if not if(! ~ $REQUEST_METHOD POST)
-            ll_add handlers_bar_left tpl_handler apps/dirdir/sidebar_controls.tpl
+        if not
+            ll_add handlers_bar_left tpl_handler \
+                apps/dirdir/sidebar_controls.tpl
 
     }
+}
+
+fn save_page {
+    dirdir_verdir=$dirdir_dir/^`{date -n}^/
+    mkdir -p $dirdir_verdir
+
+    # XXX Use a tmp file and  mv(1) to ensure updates are atomic?
+    echo $logged_user > $dirdir_verdir/author
+    echo $post_arg_edit_text > $dirdir_verdir/data 
+    echo $post_arg_edit_text > $dirdir_file
+
+    post_redirect $base_url^$req_path
+    #notify_notes='Saved <a href="'$"req_path'">'$"req_path'</a>!'
 }