846f2a4afda3934a9a78c4ff1a7d6d0b930ffe94
[ikiwiki.git] / doc / todo / 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]]
45
46 ----
47
48 I had a little spare time in a conference recently so I hacked on this. I
49 managed to get something working with anonok, a "markup format" that was
50 essentially just UL and LI elements and some javascript.  I'll try and get an
51 example up of that soon (and publish the code). There's still quite a lot of
52 work necessary, but it's more than an idle thought at least!
53
54 I've moved this page under the [[todo]] heirarchy as I'm actually working on
55 this now. -- [[Jon]]