============================== Yet Another WikiWiki Framework ============================== ($Id$) >>> from zope import component >>> from zope.publisher.browser import TestRequest An Example for an Elementary Wiki Structure =========================================== >>> from cybertools.wiki.base.wiki import WikiManager, Wiki We create a wiki manager with one wiki that in turn contains a simple start page. We also set the ``linkManager`` configuration option explicitly to make sure the btree-based tracking link manager will be used. >>> manager = WikiManager() >>> linkManagerName = 'tracking' >>> manager.linkManager = linkManagerName >>> wiki = manager.addWiki(Wiki('demo_wiki')) >>> startPage = wiki.createPage('start_page') We format the content of the start page using the restructured text format. >>> startPage.text = ''' ... **Welcome to the Demo Wiki** ... ''' The parser for restructured text and a corresponding HTML writer are the default plugins used, so we can already render the page as HTML. >>> print startPage.render(TestRequest())

Welcome to the Demo Wiki

Links to existing pages ----------------------- We now create another page that contains a link to the start page. >>> aboutPage = wiki.createPage('about') >>> aboutPage.text = ''' ... **Information about the Demo Wiki** ... ... This is the cybertools demo wiki. ... ... `Back to the Start Page `_ ... ''' >>> print aboutPage.render(TestRequest())

Information about the Demo Wiki

This is the cybertools demo wiki.

Back to the Start Page

Let's now have a look at the link manager - it should have recorded the link from the page content. >>> from cybertools.wiki.interfaces import ILinkManager >>> linkManager = manager.getPlugin(ILinkManager, linkManagerName) >>> links = linkManager.links >>> len(links) 1 >>> link = links.values()[0] >>> link.source, link.target, link.name, link.refuri (0, 1, u'start_page', 'http://127.0.0.1/demo_wiki/start_page') Links to not yet existing pages ------------------------------- When a referenced page does not exist yet a special link is created that should lead to a view that will create the page. >>> aboutPage.text += ''' ... `More... `_ ... ''' >>> print aboutPage.render(TestRequest())

Information about the Demo Wiki

This is the cybertools demo wiki.

Back to the Start Page

?More...

Again a link object has been created that will be reused for subsequent rendering operations. >>> len(links) 2 >>> print aboutPage.render(TestRequest())

...

?More...

>>> len(links) 2 Links with fragments (anchor references) and parameters ------------------------------------------------------- >>> referencePage = wiki.createPage('reference') >>> referencePage.text = ''' ... References ... ========== ... ... - `About content `_ ... - `More content `_ ... ''' >>> print referencePage.render(TestRequest())

References

External links -------------- >>> linksPage = wiki.createPage('links') >>> linksPage.text = ''' ... **A collection of interesting links** ... ... - http://python.org#library ... - `Zope `_ ... ''' An absolute URL given as link target will not be changed in the process. >>> print linksPage.render(TestRequest())

A collection of interesting links

Nevertheless the links are registered in the link manager. >>> len(links) 6 When we render external links repeatedly no new link objects will be created. >>> print linksPage.render(TestRequest())

A collection of interesting links

>>> len(links) 6