new feature request: remove (and rename) in action list (initial patches)
[ikiwiki.git] / doc / todo / add_remove_to_actionlist.mdwn
1 [[!template id=gitbranch branch=jon/remove_action author="[[Jon]]"]]
2
3 The "remove" plugin allows one to remove pages via the web, but you first have
4 to click on 'edit' to get to the 'remove' button. This is a bit
5 counter-intuitive, and ikiwiki has an action list, so it would be good if
6 "remove" (and also "rename" for that plugin) added items to the action list.
7
8 First cut series of patches in the indicated branch.  A bit more review is
9 needed, in my tests removals work and are committed to the vcs but
10 recentchanges isn't regenerated for some reason (probably the constructed `<a>`
11 link needs to add/adjust the parameters to emulate a formbuilder form
12 submission more carefully).
13
14 I haven't begun on the 'rename' plugin. -- [[Jon]]
15
16 [[!tag wishlist patch]]
17
18 > This seems like weird overloading of the header parameter - it's
19 > table data, except when it isn't.
20
21 > > My first cut (now rebased out of existence I think) introduced a
22 > > new "headerblock" parameter, but trying to clearly document the
23 > > interaction of data/headerblock/header parameters was too awkward. -- [[Jon]]
24
25 > Perhaps
26 > something like this would be easier to use in practice?
27 > (and also more featureful :-) )
28 >
29 >     \[[!table header="2 rows 1 column" data="""
30 >     Name | Platform ||
31 >     | Windows | Mac | Linux
32 >     ikiwiki | no | yes | yes
33 >     Starcraft | yes | yes | via Wine
34 >     """]]
35
36 > > Thanks for your prompt feedback!
37 > > 
38 > > This would probably be good, yes, and having mixed row/column headers is
39 > > definitely a nice-to-have. I don't relish the prospect of writing the parser
40 > > but I see you've made a stab already...
41 > > 
42 > > One thing you'd lose, but it's debatable whether this is valuable, would be
43 > > to have the header defined in the directive, and the remaining table data
44 > > declared in an external CSV. -- [[Jon]]
45
46 > intended to be rendered like
47 >
48 > <table>
49 > <tr><th>Name</th><th colspan=2>Platform</th>
50 > <tr><th></th><th>Windows</th><th>Mac</th><th>Linux</th></tr>
51 > <tr><th>ikiwiki</th><td>no</td><td>yes</td><td>yes</td></tr>
52 > <tr><th>Starcraft</th><td>yes</td><td>yes</td><td>via Wine</td></tr>
53 > </table>
54 >
55 > (Deliberately switching to plain-text to make it more obvious
56 > what's a `<th>` and what's `<td>`.)
57 >
58 > Vague pseudocode for parsing `headers`
59 > (possibly even valid Perl, I'm not sure):
60 >
61 >     my ($header_rows, $header_cols);
62 >     while ($header =~ s/(\d*)\W*(\w+)//) {
63 >         my $n = ($1 or 0);
64 >         my $what = $2;
65 >         if ($what =~ m/rows?/) {
66 >             $header_rows = $n;
67 >         }
68 >         elif ($what =~ m/col(?:umn)?s?/) {
69 >             $header_cols = $n;
70 >         }
71 >     }
72 >
73 > and it would even be fairly easy to extend to support
74 > `(first|last|)\W*(\d*)\W*(\w+)` later, e.g.
75 > `header="1 row, first 2 cols, last column"`.
76 >
77 > --[[smcv]]
78
79 > > To be clear I think your suggestion is a good one, but my hack has
80 > > addressed my immediate need so it's the one I'm deploying at $ork for the
81 > > time being. I'm unlikely to have time to implement this solution in the
82 > > near future. -- [[Jon]]