conflict detection, merging, etc should be done now, I think
authorjoey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071>
Sun, 19 Mar 2006 20:34:59 +0000 (20:34 +0000)
committerjoey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071>
Sun, 19 Mar 2006 20:34:59 +0000 (20:34 +0000)
ikiwiki
templates/editpage.tmpl

diff --git a/ikiwiki b/ikiwiki
index 78c706c31bea31afabd8479039d76122b0beeead..14c50a9afa3bb05ecdba44d307ccc3d740b10671 100755 (executable)
--- a/ikiwiki
+++ b/ikiwiki
@@ -487,11 +487,12 @@ sub rcs_commit ($$$) { #{{{
        if (-d "$config{srcdir}/.svn") {
                # Check to see if the page has been changed by someone
                # else since rcs_prepedit was called.
-               my $oldrev=int($rcstoken);
+               my ($oldrev)=$rcstoken=~/^([0-9]+)$/; # untaint
                my $rev=svn_info("Revision", "$config{srcdir}/$file");
                if ($rev != $oldrev) {
                        # Merge their changes into the file that we've
                        # changed.
+                       chdir($config{srcdir}); # svn merge wants to be here
                        if (system("svn", "merge", "--quiet", "-r$oldrev:$rev",
                                   "$config{srcdir}/$file") != 0) {
                                warn("svn merge -r$oldrev:$rev failed\n");
@@ -501,7 +502,6 @@ sub rcs_commit ($$$) { #{{{
                if (system("svn", "commit", "--quiet", "-m",
                           possibly_foolish_untaint($message),
                           "$config{srcdir}/$file") != 0) {
-                       warn("svn commit failed\n");
                        my $conflict=readfile("$config{srcdir}/$file");
                        if (system("svn", "revert", "--quiet", "$config{srcdir}/$file") != 0) {
                                warn("svn revert failed\n");
@@ -530,8 +530,8 @@ sub rcs_add ($) { #{{{
 } #}}}
 
 sub svn_info ($$) { #{{{
-       my $file=shift;
        my $field=shift;
+       my $file=shift;
 
        my $info=`LANG=C svn info $file`;
        my ($ret)=$info=~/^$field: (.*)$/m;
@@ -1082,13 +1082,16 @@ sub cgi_editpage ($$) { #{{{
 
        $form->field(name => "do", type => 'hidden');
        $form->field(name => "from", type => 'hidden');
+       $form->field(name => "rcsinfo", type => 'hidden');
        $form->field(name => "page", value => "$page", force => 1);
        $form->field(name => "comments", type => "text", size => 80);
        $form->field(name => "content", type => "textarea", rows => 20,
                cols => 80);
+       $form->tmpl_param("can_commit", $config{svn});
+       $form->tmpl_param("indexlink", indexlink());
        if (! $form->submitted) {
-               $form->field(name => "rcsinfo", type => 'hidden',
-                       value => rcs_prepedit($file), force => 1);
+               $form->field(name => "rcsinfo", value => rcs_prepedit($file),
+                       force => 1);
        }
        
        if ($form->submitted eq "Cancel") {
@@ -1144,7 +1147,8 @@ sub cgi_editpage ($$) { #{{{
                        $form->title("creating $page");
                }
                elsif ($form->field("do") eq "edit") {
-                       if (! length $form->field('content')) {
+                       if (! defined $form->field('content') || 
+                           ! length $form->field('content')) {
                                my $content="";
                                if (exists $pagesources{lc($page)}) {
                                                $content=readfile("$config{srcdir}/$pagesources{lc($page)}");
@@ -1158,8 +1162,6 @@ sub cgi_editpage ($$) { #{{{
                        $form->title("editing $page");
                }
                
-               $form->tmpl_param("can_commit", $config{svn});
-               $form->tmpl_param("indexlink", indexlink());
                print $form->render(submit => \@buttons);
        }
        else {
@@ -1193,9 +1195,14 @@ sub cgi_editpage ($$) { #{{{
                                $form->field("rcsinfo"));
                
                        if (defined $conflict) {
+                               $form->field(name => "rcsinfo", value => rcs_prepedit($file),
+                                       force => 1);
                                $form->tmpl_param("page_conflict", 1);
-                               $form->field("content", $conflict);
+                               $form->field("content", value => $conflict, force => 1);
                                $form->field("do", "edit)");
+                               $form->tmpl_param("page_select", 0);
+                               $form->field(name => "page", type => 'hidden');
+                               $form->title("editing $page");
                                print $form->render(submit => \@buttons);
                                return;
                        }
index 6aa9ecd1c512df3e2853e1d742fdbece41fac244..6ab9882618d2c843bb462b8b4618c06dd5ee513c 100644 (file)
@@ -4,6 +4,8 @@
 <TMPL_IF NAME="PAGE_CONFLICT">
 <p>
 <b>Your changes confict with other changes made to the page.</b>
+</p>
+<p>
 Conflict markers have been inserted into the page content. Reconcile the
 confict and commit again to save your changes.
 </p>
@@ -12,6 +14,7 @@ confict and commit again to save your changes.
 <h1><TMPL_VAR INDEXLINK>/ <TMPL_VAR FORM-TITLE></h1>
 <TMPL_VAR FIELD-DO>
 <TMPL_VAR FIELD-FROM>
+<TMPL_VAR FIELD-RCSINFO>
 <TMPL_IF NAME="PAGE_SELECT">
 Page location: <TMPL_VAR FIELD-PAGE><br>
 <TMPL_ELSE>