new link change detection method and general code rework
[ikiwiki] / doc / forum / managing_todo_lists.mdwn
1 I keep some TODO lists on ikiwiki pages. I'm half-tempted to write a plugin
2 to make ticking items off and adding items easier via the web interface. I'm
3 aware though that this is not really what ikiwiki is designed for. Would
4 anyone else find this useful? -- [[users/jon]]
5
6 ----
7
8 My subsequent thoughts about how to approach this are two-fold.
9
10 Firstly, a filetype for todo lists, probably OPML, but I haven't looked to see
11 if there is something more suitable. A plugin that converts this source into a
12 traditional page output, i.e. a DOM tree of ul or ol and li elements.
13
14 Secondly, some magic javascript to make editing the list via the web page 
15 more interactive: add items, strike items out, reorder items etc., without
16 round-tripping to the cgi for each operation.
17
18 Finally, a mechanism whereby the changes made to the page live can be
19 committed back to the repository:
20
21  * ...perhaps the input → output conversion is reversible, and the HTML DOM
22    representing the list can be transformed back into the source and submitted
23    to the cgi like a regular edit: issues include the result of other
24    postprocessing: templates, wikilinks, etc.
25  * perhaps an embedded copy of the source is included in the output and the
26    javascript operates on that in tandem with the static copy
27    * perhaps the "output" is generated live by the JS at view time (with maybe
28      a plugin-generated rendered output for non JS environments)
29
30 I envisage a button called "commit changes" appearing once some changes are
31 made that submits the changes to the CGI, perhaps via a back channel. I'm not
32 sure how to handle embeds or challenges from the CGI such as a login challenge
33 (maybe the back channel would not be necessary in the first cut).
34
35 > You might look at the [[plugins/hnb]] plugin. HNB supports checklists.
36 > There's not a fancy web interface, but the hnb command-line program can
37 > be used to edit them. --[[Joey]] 
38
39 >> thanks - I'll give it a look. I spent a few hours writing some javascript to manipulate a ul/li DOM tree in an outliner-fashion the other day. I might be able to join the puzzle pieces together sometime. [[Jon]]
40
41 a solution for this could be similar to a solution for [[todo/structured page data]], as todo lists are definitely a form of structured data. (in both cases, the page's current content is rendered into a html form, whose result is then saved as the page's new contents) --[[chrysn]]
42
43 > Thanks for the link: yup, there's definitely some common ground there.
44 > -- [[Jon]]