aboutsummaryrefslogtreecommitdiff
path: root/doc/todo/preview_changes.mdwn
blob: 9533b993ce1e1768377d76c1343c7e8d2fbc18a3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
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]]

Some discussion from the main [[/index/discussion]] page:

>It would be nice to be able to have a button to show "Differences" (or "Show Diff") when
>editing a page. Is that an option that can be enabled?
>
>> It's doable, it could even be done by a [[todo/plugin]], I think.
>> --[[Joey]]

---

I need help with this. Supposedly, such a plugin would provide a `formbuilder_setup`
hook which would add the button, and a cgi hook which would interecept
"Show Diff" clicks. This would show a diff between
`titlepage(possibly_foolish_untaint($form->field("page")))`
and the provided `$form->field("editcontent")`.

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`?

<pre>
Index: templates/editpage.tmpl
===================================================================
--- templates/editpage.tmpl     (révision 4130)
+++ templates/editpage.tmpl     (copie de travail)
@@ -57,9 +57,7 @@
 Optional comment about this change:<br />
 <TMPL_VAR FIELD-COMMENTS><br />
 </TMPL_IF>
-<input id="_submit" name="_submit" type="submit" value="Save Page" />
-<input id="_submit_2" name="_submit" type="submit" value="Preview" />
-<input id="_submit_3" name="_submit" type="submit" value="Cancel" />
+<TMPL_VAR FORM-SUBMIT>
 <TMPL_VAR HELPONFORMATTINGLINK>
 <TMPL_VAR FORM-END>
 
Index: IkiWiki/CGI.pm
===================================================================
--- IkiWiki/CGI.pm      (révision 4130)
+++ IkiWiki/CGI.pm      (copie de travail)
@@ -304,6 +304,7 @@
        eval q{use CGI::FormBuilder};
        error($@) if $@;
        my $form = CGI::FormBuilder->new(
+               title => "editpage",
                fields => \@fields,
                charset => "utf-8",
                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);
</pre>

--[[JeremieKoenig]]