Hi guys, I've offered to give Raphael a helping hand with this PLIP - review below.
======== What is it? ======== Wicked is a way to add Wiki-like syntax to content types. If you type "((Plone))" into a Wicked-enabled text field, Wicked will render this with a small '+'. Click the '+' and a new object is created with the id 'plone', title 'Plone', and a link is created from the original document to the Plone document. This is like Wikis, except there is no silly WikiWord automatic linkification.The (()) syntax allows multi-word links so ((Foo bar)) becomes a document with id 'foo-bar', reads like natural language and is fairly unlikely to suffer from colissions. ================ How do I check it out? ================ svn co http://svn.plone.org/svn/plone/review/wicked-210-bundle ./getAdditional.sh This downloads Dieter's AdvancedQuery To run the tests you also need to do: easy_install -Z http://svn.plone.org/svn/collective/collective.testing/trunk/ easy_install -Z lxml # I find trunk is most stable currently Whit has indicated these dependencies may go away as collective.testing is filtered into PloneTestCase. lxml is needed only to clean up test output. To see it in action: * Add a plone site, quick install wicked * add a wickeddoc, create a wicked link ala ((some text)) * save. click on link to create a new wickeddoc * make more links (resolved by a normalized catalog search on name or title) * rename content, move content. links should still work * changing ((link)) will not work ;) ============= How does it work? ============= Wicked relies on txtfilter, which introduces a new kind of field (FilterField) that is capable of executing filters. Wicked is basically a filter that enables the (()) syntax. It uses the reference catalog to keep track of references between pages, so that if a target page moves, links are kept up-to-date. This is useful, since by default the page is created in the same folder as the source document, and the user may wish to move it at some point in the future. txtfilter, at http://svn.plone.org/svn/collective/txtfilter/branches/1.0, is fairly easy to understand, and has a number of interesting features. For example, it can dynamically replace reference-based links with HTML links on render, or automatically paginate text. Not all of this is used by Wicked, but having the functionality available would likely be a bonus rather than just bitrot. Wicked, at https://svn.plone.org/svn/collective/wicked/trunk, uses txtfilter to make the wiki syntax work, and keeps track of the aforementioned references. Both products (Wicked in particular) use Zope 3 technology where it makes sense (filters are implemented as adapters, for example). Both look to be cleanly implemented, well-commented and well-tested. Obviously, this is quite AT specific. That comes down to the same reasons as many of the other AT-specific things we are discussing - the lack of a general reference engine, and the fact that AT powers most content types, including ATCT. I'm not quite sure where something like Wicked would plug into a simple Z3 content object. However, the code itself is nicely componentised (and a filter is just an adapter), and Whit has got plans for how to make it as generalised as possible. When our non-AT content type story catches up, I don't think it'll be hard to Wicked-enable those types. ================== What remains to be done ================== Wicked still ships with demo types to demonstrate its functionality. It needs to be integrated into ATCT, and its functionailty needs to be made optional. There should be a configlet that enables or disables Wiki syntax. It'd also be nice if the testing dependencies were removed. Whit reckons it'd take about a week to get this done. Luckily, he's giving a talk about Wicked in Seattle and plans to polish it before then. ======================= Recommendations and caveats ======================= Wicked is a wiki without all the cruft. It makes it simple to create links-as-you-type, and keeps those links up-to-date when they move. It's easy to use and quite innovative in that it integrates so seamlessly into Plone. Obviously, there is some cleanup work to be done here, but Whit has a clear roadmap for how to get it done, and seems to be on top of things. +1 for inclusion as soon as the ATCT integration is done and it's possible to switch it on and off. Martin _______________________________________________ Framework-Team mailing list Framework-Team@lists.plone.org http://lists.plone.org/mailman/listinfo/framework-team