To-Do:
Misc
- Fix up external scripts.
- Handle <pre> tags
- spaces handling in utilities/render – catch them and format appropriately
- [[$SPACE:foo]]
- parse email/mbox files
mailbox:<message>
RSS Feeds:
Add RSS feeds per page/namespace/sitewide so people can monitor sections they are interested in.
- /feeds/
(all) - /feeds/<namespace>
(namespace) - /feeds/<namespace>/<title>/
(namespace/title) - link to in view.html
Internal linking of attached files:
Need a tag for internal linking files on a page e.g.:
{! file !}, {! namespace:title/file !}
BUT this is a security risk – white list contenttypes?
Make sure this does not allow offsite inclusions too.
Handle revision clashes better –
If two people edit the same page at once, and save, then one save will have an incorrect version number ("Error! Invalid Revision Change"). What is the best way to deal with this?
1) Add a warning flag
"User x was editing this page X minutes ago!"
2) dokuwiki style – "you have exclusive edit access to this page for the next x minutes…". The edit view adds a flag to a page activity table ( pageid, userid, time ), which is treated like a lockflag for some time period. Problem – cannot just be triggered by going to /edit or else we run the risk of bots/etc locking pages by visiting /edit (GETs are idempotent).
3) better to handle this at the create/update stage e.g. "hey! it looks like some one bet you to it! here are the differences between your version and theirs. Please resolve…". This requires a working diff/comparison system.
Macros:
- enhance to accept arguments
- e.g. macroname|x|y|z
- accept GET parameters?
Diffs:
- work out the best way to do these ( on revise page? ) /diff/<version1>/<version2>/ ?
- implement
- HTML Diff: http://www.aaronsw.com/2002/diff ?
UserSpace:
- User profiles – only editable by self.
- more statistics?
Redo Permissions:
use more of auth system provided by Django – groups ( can lock/unlock pages, can edit, etc )
- Delete File – admin
- Delete Page – admin
- Move page ( rename in m_pages, rename in m_attachments, move files
- make page templates adjust to user group/permissions
Tags Funkify:
- improve tag adding/editing ( select & javascript )
- view page – add AJAXy add/delete
- edit page – add a tag list?
- probably too large to be of any use? )
- narrow-down-as-you-type-thing?
Increase Namespace Nesting:
Increase namespace nesting by altering url structure. Take opportunity to replace the rather ugly mediawiki-style ":" in urls with real /s. e.g.:
/namespace/subnamespace/evenlowerns/pagename
How to handle /edit, /attach, /revisions etc? GET? e.g. ?action=edit etc
Need to think about the database structure. Quick way would be to just store all-but-the-last chunk in the namespace ( i.e. namespace = "/namespace/subnamespace/evenlowerns/", title="pagename" ), but this is ugly and will make searching for e.g. all pages in subnamespace hard ( SELECT x,y,z FROM table WHERE namespace LIKE ".../subnamespace/.."
unindexable ).
More elegant database solution would either be the standard adjacency list ( my preference ) or nested set models, but if Django does not deal with these then it is going to be a PITA. ALM/Nested sets also add quite a bit more complexity to the model, and the urlconfs will be fun too.