============================== 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 correct link manager will be used. >>> manager = WikiManager() >>> linkManagerName = 'cybertools.link' >>> manager.setConfig('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.link.interfaces import ILinkManager >>> linkManager = manager.getPlugin(ILinkManager, linkManagerName) >>> links = linkManager.links >>> len(links) 1 >>> link = links.values()[0] >>> link.source, link.target, link.name (0, 1, u'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 Media Objects ============= >>> from cybertools.wiki.interfaces import IMediaManager >>> mmName = manager.getConfig('mediaManager') >>> mm = component.getAdapter(wiki, IMediaManager, name=mmName) >>> media01 = mm.createObject('media01.jpg', 'Media Object #1') >>> media01.setRawData('Some data we don\'t care about...') >>> media01.getRawData() "Some data..." >>> [(obj.name, obj.title) for obj in mm.listObjects()] [('media01.jpg', 'Media Object #1')] Embed media objects (images) in Wiki text ----------------------------------------- >>> imagePage1 = wiki.createPage('with_image') >>> imagePage1.text = ''' ... **A page with an image** ... ... .. image:: media01.jpg ... ... `Back to the Start PageA page with an image
A page with a link to an image