1 When editing a page, it would help to have a "preview changes" or "show diff" button, which brings up a diff from the current page content to the proposed new page content. --[[JoshTriplett]]
3 Some discussion from the main [[/index/discussion]] page:
5 >It would be nice to be able to have a button to show "Differences" (or "Show Diff") when
6 >editing a page. Is that an option that can be enabled?
8 >> It's doable, it could even be done by a [[todo/plugin]], I think.
13 I need help with this. Supposedly, such a plugin would provide a `formbuilder_setup`
14 hook which would add the button, and a cgi hook which would interecept
15 "Show Diff" clicks. This would show a diff between
16 `titlepage(possibly_foolish_untaint($form->field("page")))`
17 and the provided `$form->field("editcontent")`.
21 * How could the case of concurrent editing be handled ?
22 Especially as (I think) only the RCS backend can know that
24 * Doing the formbuilder trick for adding a button needs the following
25 patch. (note that this is not the only template which has its submit
26 buttons hardcoded; is this supposed to work around something?)
29 Index: templates/editpage.tmpl
30 ===================================================================
31 --- templates/editpage.tmpl (révision 4130)
32 +++ templates/editpage.tmpl (copie de travail)
34 Optional comment about this change:<br />
35 <TMPL_VAR FIELD-COMMENTS><br />
37 -<input id="_submit" name="_submit" type="submit" value="Save Page" />
38 -<input id="_submit_2" name="_submit" type="submit" value="Preview" />
39 -<input id="_submit_3" name="_submit" type="submit" value="Cancel" />
40 +<TMPL_VAR FORM-SUBMIT>
41 <TMPL_VAR HELPONFORMATTINGLINK>
45 ===================================================================
46 --- IkiWiki/CGI.pm (révision 4130)
47 +++ IkiWiki/CGI.pm (copie de travail)
49 eval q{use CGI::FormBuilder};
51 my $form = CGI::FormBuilder->new(
52 + title => "editpage",
59 run_hooks(formbuilder_setup => sub {
60 - shift->(form => $form, cgi => $q, session => $session);
61 + shift->(form => $form, cgi => $q, session => $session,
62 + buttons => \@buttons);
65 decode_form_utf8($form);