X-Git-Url: http://git.tremily.us/?p=ikiwiki.git;a=blobdiff_plain;f=doc%2Ftodo.mdwn;h=75314c75becf25f3f801a077910c495d485b1694;hp=7926fd95417c979939f2a011beae24f3bf87bb2a;hb=HEAD;hpb=86540c654f701e6e3d0d96b505d3a7c7362cf8ee diff --git a/doc/todo.mdwn b/doc/todo.mdwn index 7926fd954..75314c75b 100644 --- a/doc/todo.mdwn +++ b/doc/todo.mdwn @@ -1,185 +1,21 @@ -## online page editing - -* Eventually, might want page deletion. -* Eventually, might want file upload. - -## recentchanges - -* Should support mail notification of new and changed pages. - - Hmm, should be easy to implement this.. it runs as a svn post-coommit hook - already, so just look at the userdb, svnlook at what's changed, and send - mails to people who have subscribed. - - A few details: - 1. [[Joey]] mentioned that being able to subscribe to globs as well as - explicitly named pages would be desirable. - 2. I think that since we're using Perl on the backend, being able to - let users craft their own arbitrary regexes would be good. - - Joey points out that this is actually a security hole, because Perl - regexes let you embed (arbitrary?) Perl expressions inside them. Yuck! - - It would also be good to be able to subscribe to all pages except discussion pages or the SandBox: `* !*/discussion !sandobx`, maybe --[[Joey]] - - 3. Of course if you do that, you want to have form processing on the user - page that lets them tune it, and probably choose literal or glob by - default. - - I think that the new globlist() function should do everything you need. - Adding a field to the prefs page will be trivial --[[Joey]] - - The first cut, I suppose, could use one sendmail process to batch-mail all - subscribers for a given page. However, in the long run, I can see users - demanding a bit of feature creep: - - 4. Each user should be able to tune whether they see the actual diff parts or - not. - 5. Each user should be able to set a maximum desired email size. - 6. We might want to support a user-specified shibboleth string that will be - included in the email they receive so they can easily procmail the messages - into a folder. - - --[[BrandenRobinson]] - -## pluggable renderers - -I'm considering a configurable rendering pipeline for each supported -filename extension. So for ".mdwn" files, it would send the content through -linkify, markdown, and finalize, while for ".wiki" files it might send it -through just a wiki formatter and finalize. - -This would allow not only supporting more types of markup, but changing -what style of [[WikiLink]]s are supported, maybe some people want to add -[[CamelCase]] for example, or don't like the [[SubPage/LinkingRules]]. - -The finalize step is where the page gets all the pretty junk around the -edges, so that clearly needs to be pluggable too. - -There also needs to be a step before finalize, where stuff like lists of pages -that linked back to it could be added to the page. However, doing linkbacks -also needs to tie into the main logic, to determine what pages need to be -renered, so maybe that won't be a plugin. - -## blogging and rss - -The wiki should emit rss feeds for pages. The simple case is a regular -page. The complex case is a blog composed of multiple pages. - -### single page - -Just create an rss feed with one element, that contains the last diff to -the page, or the contents of the page, or something like that. Whenever the -page is changed, rss readers should see the single post in the feed as a -new post, so they'll dump out the page again. Simple, allows subscribing to -any page as an RSS feed if you want to see just changes to that page. - -### multi-page blog - -This also takes care of the feature of wanting to make a wiki page -comprised of several sub-pages that can be independantly edited. Add a -token that can be embedded into a page and that specifies a [[GlobList]] of -pages. Now when any page matching the globs changes, this page must be -updated too. - -For the html rendering, just embed the most recently created N pages in the -[[GlobList]], with the title of each being a link to the individual page, -plus a link to an additional page that lists all the titles of every -matching page in creation order (archives). Plus at the bottom a small web -form that prompts for a title and allows creating a new page for a new blog -post. - -For the rss rendering, generate a proper weblog of the same pages. -Of course for permalinks use the links to the subpages. - -Note that this allows for weblogs with different sections, etc. - -Requirements: - -* Need to keep track of creation dates of pages in the index file. -* Need to keep track of the globlists in the index file. - - Probably need to redesign the index file format to allow for this sort - of future expansion. -* Need to make _ render as " " in page titles. -* Also need to support as much other punctuation as possible in page - titles, ideally all of it. Punctuation that is illegal in filenames for - various good reasons should be embedded encoded in the filenames. Blogs - tend to have more punctuation-intensive page titles than wikis. -* Need to pick a good token and note that the token will need to be passed - multiple parameters. Possibly something like this: - - [[rss pages="myblog/*" show="30"]] - -## revisit case - -Being case insensative is handy, but it does make the [[BackLinks]] a bit -ugly compared to other links. It should be possible to support pagenames -that have uppercase, while still allowing them to be linked to using any -case. - -## html - -Make the html valid. Add css and prettify. Make RecentChanges use table for formatting, and images to indicate web vs svn commits and to link to diffs. - -All of this should be doable w/o touching a single line of code, just editing the [[templates]] BTW. - -## sigs - -Need a way to sign name in page that's easier to type than "--\[[Joey]]" -and that includes the date. - -What syntax do other wikis use for this? I'm considering "\[[--]]" (with -spaces removed) as it has a nice nmemonic. - -OTOH, adding additional syntax for this would be counter to one of the -design goals for ikiwiki: keeping as much markup as possible out of the -wiki and not adding nonstandard markup. And it's not significantly hard to -type "--\[[Joey]]", and as to the date, we do have page history. - -## recentchanges more than 100 - -Possibly add "next 100" link to it, but OTOH, you can just use svn log if -you need that data.. - -## search - -* page name substring search -* full text (use third-party tools?) - -## lists - -* list of all missing pages -* list of all pages or some kind of page map (probably covered by the rss - feeds stuff above) - -These could be their own static pages updated when other pages are updated. -Perhaps this ties in with the pluggable renderers stuff. - -## page indexes - -Might be nice to support automatically generating an index based on headers -in a page, for long pages. The question is, how to turn on such an index? - -## basewiki underlay - -Rather than copy the basewiki around everywhere, it should be configured to -underlay the main srcdir, and pages be rendered from there if not in the -srcdir. This would allow upgrades to add/edit pages in the basewiki. - -Impementaion will be slightly tricky since currently ikiwiki is hardcoded -in many places to look in srcdir for pages. Also, there are possible -security attacks in the vein of providing a file ikiwiki would normally -skip in the srcdir, and tricking it to processing this file instead of the -one from the underlaydir. - -There are also difficulties related to removing files from the srcdir, and -exposing ones from the underlaydir. Will need to make sure that the mtime -for the source file is zeroed when the page is removed, and that it then -finds the underlay file and treats it as newer. - -## Logo - -ikiwiki needs a logo. I'm thinking something simple like the word "ikiwiki" -with the first "k" backwards; drawn to show that it's "wiki" reflected. - -## [[Bugs]] +Feel free to post your ideas for todo and [[wishlist]] items here, as well +as any [[patches|patch]]. If it seems more like a bug in the existing code, +post it to [[bugs]] instead. Link items to [[todo/done]] when done. + + + +[[!inline pages="todo/* and !todo/done and !link(todo/done) and +!link(patch) and !link(wishlist) and !todo/*/*" +feedpages="created_after(todo/supporting_comments_via_disussion_pages)" +actions=yes archive=yes rootpage="todo" postformtext="Add a new todo item titled:" show=0]]