============================== 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 PageInformation about the Demo Wiki
This is the cybertools demo wiki.
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...Information about the Demo Wiki
This is the cybertools demo wiki.
Again a link object has been created that will be reused for subsequent rendering operations. >>> len(links) 2 >>> print aboutPage.render(TestRequest())...
>>> len(links) 2 Links with fragments (anchor references) and parameters ------------------------------------------------------- >>> referencePage = wiki.createPage('reference') >>> referencePage.text = ''' ... References ... ========== ... ... - `About contentA 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