diff --git a/doc/todo/preview_changes.mdwn b/doc/todo/preview_changes.mdwn index 9533b993c..d04c32314 100644 --- a/doc/todo/preview_changes.mdwn +++ b/doc/todo/preview_changes.mdwn @@ -21,12 +21,12 @@ But: * How could the case of concurrent editing be handled ? Especially as (I think) only the RCS backend can know that this has happened. - * Doing the formbuilder trick for adding a button needs the following - patch. (note that this is not the only template which has its submit - buttons hardcoded; is this supposed to work around something?) - * Coercing `editpage()` into showing the edit form again rather that - saving the page would be tricky and hackish to do from a module; - maybe this would better be implemented directly in `showpage`? + * May I hijack the `page_preview` template variable to show + my diff output? (the patch below assumes this). + * Using the formbuilder hook to add a button, and coerce `editpage()` + into showing the edit form again rather that saving the page needs + the following patch. (note that this is not the only template which has + its submit buttons hardcoded; is this supposed to work around something?)
Index: templates/editpage.tmpl @@ -58,14 +58,29 @@ Index: IkiWiki/CGI.pm method => 'POST', @@ -321,7 +322,8 @@ ); - + run_hooks(formbuilder_setup => sub { - shift->(form => $form, cgi => $q, session => $session); + shift->(form => $form, cgi => $q, session => $session, + buttons => \@buttons); }); - + decode_form_utf8($form); +@@ -402,12 +404,12 @@ + preprocess($page, $page, + filter($page, $page, $form->field('editcontent')), 0, 1)))); + } +- else { ++ elsif ($form->submitted eq "Save Page") { + $form->tmpl_param("page_preview", ""); + } + $form->tmpl_param("page_conflict", ""); + +- if (! $form->submitted || $form->submitted eq "Preview" || ++ if ($form->submitted ne "Save Page" || + ! $form->validate) { + if ($form->field("do") eq "create") { + my @page_locs;--[[JeremieKoenig]] \ No newline at end of file