Rough retroactive design notes from my whiteboard, aiming to summarize zwiki design & functionality at the time of writing.

See also WikiWikiWeb:WikiDesignPrinciples, BigThemesForZwiki?, RefactoringZwikiArchitecture, FunctionalOverview, ZwikiInANutshell, OriginalZopeWikiProposal

User Stories

  1. user can create a wiki page zope object which can be viewed through the web
  2. wiki pages display a standard header & footer
  3. wikinames are displayed as links or page-creation links based on zope folder contents
  4. wiki pages are auto-formatted as html when viewed
  5. dtml is evaluated
  6. a page may be one of several types, which allow different combinations of the above, or different rules
  7. header includes title, which brings up a list of backlinks when clicked
  8. footer includes an edit link, which brings up a form to make changes to the page
  9. page creation links bring up a form which creates a new page (of same type)
  10. page hierarchy is tracked; new pages are children of the page they were created from; parent pages are listed in the header
  11. a page's parents can be changed in backlinks. Multiple parents are allowed
  12. contents link in the header displays the whole hierarchy, centered on the current page
  13. permissions supported: change text, append text, change page type, reparent, create, delete, file upload
  14. permissions affect options displayed
  15. embedded dtml can be disallowed or locked down. Admin can limit the powers of embedded dtml via permissions/ownership/proxy roles.
  16. complete wikiwebs may be easily created from a list of templates
  17. JumpSearch?
  18. RecentChanges?
  19. UserOptions?
  20. page renaming, page deletion
  21. file upload
  22. RemoteWikiLinks
  23. BlockList


    a few which may be incomplete but would like to be in zwiki 1.0:

  24. SisterSites
  25. header/footer are not added when a zwiki page is called programatically or from within another page or when noheaders=1; zwiki pages can be used wherever you would use a dtml method
  26. there is a page type/render method/markup tag or other solution for safely displaying html source, dtml code etc. pretty-printing would be nice.
  27. a zwiki page can work like or be equivalent to a zope presentation template. I don't quite know what I'm saying here but I like it.



Classes

need an easy way to format these CRC cards. (Neat - wiki first came from Ward's attempt to represent CRC cards in hypercard). Any improvements to my OO analysis would be more than welcome.

ZWikiPage

responsibilities:

collaborators: Zope, Folder, Request, Response, WikiNesting?, WWML

WikiNesting?

responsibilities:

collaborators: ZWikiPage

WWML

responsibilities:

collaborators: ZWikiPage

Tests

responsibilities:

collaborators:

Zope

responsibilities:

collaborators: ZWikiPage

Folder

responsibilities:

collaborators: ZWikiPage

Request

responsibilities:

collaborators: ZWikiPage

Response

responsibilities:

collaborators: ZWikiPage