<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>WikklyText</title>
        <link></link>
        <description>A wikitext server and rendering library</description>
        <lastBuildDate>Fri, 18 Dec 2009 19:16:00 +0000</lastBuildDate>
        <generator>WikklyText 1.9.4</generator>
        <docs>http://blogs.law.harvard.edu/tech/rss</docs>
        <atom:link href="/rss.xml" rel="self" type="application/rss+xml" />        <item>
            <title>LatestNews</title>
            <link>LatestNews.html</link>
            <description><![CDATA[You might be interested in reading the <a title="RecentChanges.html" class="wikkly-a-internal" href="RecentChanges.html" >RecentChanges</a>. <br/><br/><h3 class="wikkly-h3">December 18, 2009</h3><br/>Version 1.9.3-TEST released. This is <span class="wikkly-highlight">prerelease</span> software, meant to let everyone have a preview of the new server frontend code. Please make a backup and test using that. See <a title="PreRelease.html" class="wikkly-a-internal" href="PreRelease.html" >PreRelease</a> for details and downloads.<br/><br/><h3 class="wikkly-h3">October 11, 2009</h3><br/>Version 1.9.2-TEST released. This is <span class="wikkly-highlight">prerelease</span> software, meant to let everyone have a preview of the new server frontend code. Please make a backup and test using that. See <a title="PreRelease.html" class="wikkly-a-internal" href="PreRelease.html" >PreRelease</a> for details and downloads.<br/><br/><h3 class="wikkly-h3">September 26, 2009</h3><br/>Version 1.9.1-TEST released. This is <span class="wikkly-highlight">prerelease</span> software, meant to let everyone have a preview of the new server frontend code. Please make a backup and test using that. See <a title="PreRelease.html" class="wikkly-a-internal" href="PreRelease.html" >PreRelease</a> for details and downloads.<br/><br/><h3 class="wikkly-h3">September 18, 2009</h3><br/><b class="">Version 1.9.0-TEST goes live.</b> Well, it turned out that moving to a new server did not eliminate the random lockups after all &mdash; they were just as bad as before. I came to the conclusion that the problem was in WikklyText itself, so I finally undertook a major refactoring of the wiki frontend I've been <span class="wikkly-strike">planning</span> putting off for a long time. The test code is now live here and (crossing fingers) has not locked up once yet. If you run a wiki and are interested in checking out the new code prior to the 2.0 release, I encourage you to follow the <a title="MailingList.html" class="wikkly-a-internal" href="MailingList.html" >MailingList</a> as I'll be making further announcements there.<br/><br/><h3 class="wikkly-h3">August 24, 2009</h3><br/>Wikklytext has moved to a new server. Hopefully this will eliminate the twice-daily reboots I was having to do with the old server. The new server seems snappier on first impression, keeping my fingers crossed ...<br/><br/><h3 class="wikkly-h3">August 16, 2009</h3><br/>This release adds a new type of macro that takes a WSGI environment as an argument. You can also attach arbitrary WSGI applications to the wiki now.<br/><br/><h3 class="wikkly-h3">September 28, 2008</h3><br/>WikklyText 1.5.0 is released. This is somewhat of a cleanup release with reorganization of the caching architecture, parsing cleanups and XHTML compliance fixes.<br/><br/><br/><h3 class="wikkly-h3">September 6, 2008</h3><br/>Added <a title="GettingPlugins.html" class="wikkly-a-internal" href="GettingPlugins.html" >GettingPlugins</a> page to collect plugins.<br/><br/>]]></description>
            <guid isPermaLink="false">e6c5037d6abccee273f2d202e43b3d5a5774222f</guid>
            <pubDate>Fri, 18 Dec 2009 19:16:00 +0000</pubDate>
        </item>
        <item>
            <title>PreRelease</title>
            <link>PreRelease.html</link>
            <description><![CDATA[ <div class="wikkly-warnbox-container" ><div class="wikkly-warnbox-title" >Please read before continuing</div><div class="wikkly-warnbox-body" ><ul class="wikkly-ul"><li class="wikkly-ul-li1">Make a backup copy and run a test using the backup before going live with this version. There have been significant changes that could leave you with a non-working wiki. </li><li class="wikkly-ul-li1">This release changes how the wiki is attached to the frontend server. You will need to redo your server side setup. Otherwise your wiki <b class="">will not work</b>. Please read <a title="ApacheIntegration.html" class="wikkly-a-internal" href="ApacheIntegration.html" >ApacheIntegration</a> carefully. </li></ul></div></div><br/><br/>This is <span class="wikkly-highlight"><i class="">prerelease</i></span> software and may leave you with a non-working wiki. If you want the stable version please see <a title="InstallPythonPackage.html" class="wikkly-a-internal" href="InstallPythonPackage.html" >InstallPythonPackage</a> instead.<br/><br/>Please report all problems to the <a title="MailingList.html" class="wikkly-a-internal" href="MailingList.html" >MailingList</a>.<br/><br/><table class="wikkly-table"><tr class="wikkly-tr"><th class="wikkly-th" colspan="2" rowspan="1" style="text-align: center;">Downloads</th></tr><tr class="wikkly-tr"><th class="wikkly-th" colspan="1" rowspan="1" style="text-align: center;">tar.gz</th><td class="wikkly-td" colspan="1" rowspan="1" style="text-align: left;"><a title="files/download/WikklyText-1.9.3.tar.gz" class="wikkly-a-internal" href="files/download/WikklyText-1.9.3.tar.gz" >WikklyText-1.9.3.tar.gz</a></td></tr><tr class="wikkly-tr"><th class="wikkly-th" colspan="1" rowspan="1" style="text-align: center;">zip</th><td class="wikkly-td" colspan="1" rowspan="1" style="text-align: left;"><a title="files/download/WikklyText-1.9.3.zip" class="wikkly-a-internal" href="files/download/WikklyText-1.9.3.zip" >WikklyText-1.9.3.zip</a></td></tr></table>]]></description>
            <guid isPermaLink="false">200c108c9f74edf0c156db2fa810bb71fd2bcf5c</guid>
            <pubDate>Fri, 18 Dec 2009 19:15:00 +0000</pubDate>
        </item>
        <item>
            <title>RecentChanges</title>
            <link>RecentChanges.html</link>
            <description><![CDATA[<h3 class="wikkly-h3">Version 1.9.3-TEST</h3> <div class="wikkly-warnbox-container" ><div class="wikkly-warnbox-title" >For Testing</div><div class="wikkly-warnbox-body" ><ol class="wikkly-ol"><li class="wikkly-ol-li1">This is a <span class="wikkly-highlight">prerelease</span> version for testing. Please backup your wiki and run the server on the backup copy to test it before going live. </li><li class="wikkly-ol-li1">This release is <b class="">not</b> available on the regular download page nor via PyPI, in order to not affect stable installations. See <a title="PreRelease.html" class="wikkly-a-internal" href="PreRelease.html" >PreRelease</a> for downloads. </li></ol></div></div> <b class="">Changes</b> <ul class="wikkly-ul"><li class="wikkly-ul-li1">Removed <span class="wikkly-code-inline">wik&nbsp;makeboot</span> command; no need for it anymore with new server frontend. </li><li class="wikkly-ul-li1">Added <span class="wikkly-code-inline">--frontend</span> option to <span class="wikkly-code-inline">wik</span> to select server type for standalone use. </li><li class="wikkly-ul-li1">Reworked camelword parsing again. Was not correctly recognizing camelwords when mixed with punctuation, like <span class="wikkly-code-inline">(CamelWord)</span>. </li><li class="wikkly-ul-li1">You can pass a <span class="wikkly-code-inline">context</span> parameter to <span class="wikkly-code-inline">WikklyText_to_InnerHTML</span> and <span class="wikkly-code-inline">WikklyText_to_XML</span> now to specify your own WikContext. Reworked WikContext cloning to better support subclassing. </li></ul><h3 class="wikkly-h3">Version 1.9.2-TEST</h3> <div class="wikkly-warnbox-container" ><div class="wikkly-warnbox-title" >For Testing</div><div class="wikkly-warnbox-body" ><ol class="wikkly-ol"><li class="wikkly-ol-li1">This is a <span class="wikkly-highlight">prerelease</span> version for testing. Please backup your wiki and run the server on the backup copy to test it before going live. </li><li class="wikkly-ol-li1">This release is <b class="">not</b> available on the regular download page nor via PyPI, in order to not affect stable installations. See <a title="PreRelease.html" class="wikkly-a-internal" href="PreRelease.html" >PreRelease</a> for downloads. </li></ol></div></div> <b class="">Changes</b> <ul class="wikkly-ul"><li class="wikkly-ul-li1">Search works again on wiki </li><li class="wikkly-ul-li1">Deleting items from wiki works again </li><li class="wikkly-ul-li1">Stop overwriting all css/* files on startup. Only overwrite wikklytext.css and wikklytext.js (they both warn against directly editing them). Leave others as-is so e.g. users can easy replace favicon, etc. </li><li class="wikkly-ul-li1">Added rawquoting of macro args. This is just like Python raw strings (i.e. <span class="wikkly-code-inline">r".."</span>). The complete set of quoting styles available for macros args is now: bareword, <span class="wikkly-code-inline">'...'</span>, <span class="wikkly-code-inline">"..."</span>, <span class="wikkly-code-inline">'''...'''</span>, <span class="wikkly-code-inline">"""..."""</span>, <span class="wikkly-code-inline">&lt;quote&gt;...&lt;/quote&gt;</span>, and rawquote variations <span class="wikkly-code-inline">r'...'</span>, <span class="wikkly-code-inline">r"..."</span>, <span class="wikkly-code-inline">r'''...'''</span>, <span class="wikkly-code-inline">r"""..."""</span>, <span class="wikkly-code-inline">&lt;rquote&gt;...&lt;/rquote&gt;</span>. Rawquoting with <span class="wikkly-code-inline">&lt;rquote&gt;</span> is especially useful when cutting and pasting Python/C code into macro args like ... <div class="wikkly-code-block">&lt;&lt;codebox&nbsp;"Some&nbsp;code"&nbsp;&lt;rquote&gt;<br/>...<br/>...&nbsp;Python/C&nbsp;code<br/>...<br/>&lt;/rquote&gt;&gt;&gt;</div><br/><br/></li></ul><h3 class="wikkly-h3">Version 1.9.1-TEST</h3> <div class="wikkly-warnbox-container" ><div class="wikkly-warnbox-title" >For Testing</div><div class="wikkly-warnbox-body" ><ol class="wikkly-ol"><li class="wikkly-ol-li1">This is a <span class="wikkly-highlight">prerelease</span> version for testing. Please backup your wiki and run the server on the backup copy to test it before going live. </li><li class="wikkly-ol-li1">This release is <b class="">not</b> available on the regular download page nor via PyPI, in order to not affect stable installations. See <a title="PreRelease.html" class="wikkly-a-internal" href="PreRelease.html" >PreRelease</a> for downloads. </li></ol></div></div> <b class="">Major changes</b> <ul class="wikkly-ul"><li class="wikkly-ul-li1">Wiki frontend has been completely refactored into a pure <a title="Link to http://www.python.org" class="wikkly-a-www" href="http://www.python.org/dev/peps/pep-0333/" onclick="window.open(this.href);return false;">WSGI</a> application. This makes it significantly easier to attach the wiki to many types of servers. </li><li class="wikkly-ul-li1">Adapters included for CGI and mod_python (CherryPy no longer required).<br/><br/></li></ul><h3 class="wikkly-h3">Version 1.6.0</h3> <div class="wikkly-infobox-container" ><div class="wikkly-infobox-title" >Upgrade notes ...</div><div class="wikkly-infobox-body" ><ol class="wikkly-ol"><li class="wikkly-ol-li1">This is a feature update release with the changes as shown below. </li><li class="wikkly-ol-li1">You only need to install the Python library to get this upgrade. There is no need to update your Drupal plugin or update your Apache setup. (If you are using the standalone <span class="wikkly-tt">.exe</span> then just download the new version(s).) </li></ol></div></div> <b class="">Major changes</b> <ul class="wikkly-ul"><li class="wikkly-ul-li1">Python 2.4 is now the minimum version for running the wiki. If you just use the rendering library, Python 2.3 is fine.  </li><li class="wikkly-ul-li1">Stop sending <span class="wikkly-code-inline">Content-Type="application/xhtml+xml"</span> - causes strange browser behavior. Use just <span class="wikkly-code-inline">text/html</span> on all browsers. </li><li class="wikkly-ul-li1">Plugins can now attach arbitrary WSGI applications to wiki by exporting them via <span class="wikkly-code-inline">__wsgi_apps__</span> </li><li class="wikkly-ul-li1">New WSGI macro type receives a WSGI-like environment (among other things, this lets macros access the wiki directly). These are exported via <span class="wikkly-code-inline">__wsgi_macros__</span>. </li><li class="wikkly-ul-li1">Browsing to <span class="wikkly-code-inline">$SITE/api/plugins</span> shows information about loaded plugins. </li><li class="wikkly-ul-li1">Ensure request data saved on a per-thread basis </li><li class="wikkly-ul-li1">Allow port numbers in parsed URLs<br/><br/></li></ul><h3 class="wikkly-h3">Version 1.5.0</h3> <div class="wikkly-infobox-container" ><div class="wikkly-infobox-title" >Upgrade notes ...</div><div class="wikkly-infobox-body" ><ol class="wikkly-ol"><li class="wikkly-ol-li1">This is a major update with many underlying architectural changes and a few user visible changes. </li><li class="wikkly-ol-li1">You only need to install the Python library to get this upgrade. There is no need to update your Drupal plugin or update your Apache setup. (If you are using the standalone <span class="wikkly-tt">.exe</span> then just download the new version(s).) </li></ol></div></div> <b class="">Major changes</b> <ul class="wikkly-ul"><li class="wikkly-ul-li1">Caching is now done at the wikitext-&gt;XML layer, instead of wikitext-&gt;HTML. This has several benefits including: <ul class="wikkly-ul"><li class="wikkly-ul-li2">Macros are now evaluated every time, instead of just the first time the wikitext is parsed (no more need for the <span class="wikkly-code-inline">-cache</span> tag; you can safely remove it). </li><li class="wikkly-ul-li2">Auto-links to unknown CamelWords or links like <span class="wikkly-code-inline">[[My&nbsp;new&nbsp;word]]</span> now work with caching turned on. </li><li class="wikkly-ul-li2"><i class="">Bottom line:</i> You can safely turn caching back on for all cases now. </li></ul></li><li class="wikkly-ul-li1"><span class="wikkly-highlight">API Change</span>: Keyword parameter <span class="wikkly-code-inline">plugin_dir</span> changed to <span class="wikkly-code-inline">plugin_dirs</span> in several places to reflect the lower level semantics. Old keyword still accepted for now. </li><li class="wikkly-ul-li1">Can specify extra paths to look for plugins on wiki admin page. This is convenient when you want to have several wikis yet keep your plugins in a single location. </li><li class="wikkly-ul-li1">Fix macro parsing for nested calls like <span class="wikkly-code-inline">&lt;&lt;aaa&lt;&lt;bbb</span> </li><li class="wikkly-ul-li1">Cleanups for XHTML conformance &mdash; now passes tests @ <a title="Link to http://validator.w3.org" class="wikkly-a-www" href="http://validator.w3.org/" onclick="window.open(this.href);return false;">http://validator.w3.org/</a> in strict mode  </li><li class="wikkly-ul-li1">Links (both <span class="wikkly-code-inline">[[..]]</span> and <span class="wikkly-code-inline">[img[..]]</span>) can no longer have inner markup. Allowing inner markup was occasionally useful but caused too many problems with TiddlyWiki compatibility. Although this is a markup change, it is compatible with TiddlyWiki so hopefully won't cause too many problems. Please double-check your links after updating. </li><li class="wikkly-ul-li1">Fixed CamelWord parsing so that <span class="wikkly-code-inline">abcDefGhi</span> is not seen as <span class="wikkly-code-inline">abc[[DefGhi]]</span> </li><li class="wikkly-ul-li1">rendercache entries now expire to keep cache from growing indefinitely (parameters set through wiki admin page) </li><li class="wikkly-ul-li1">Turn off browser caching of command responses </li><li class="wikkly-ul-li1"><span class="wikkly-code-inline">[[/my/path]]</span> will now make a <span class="wikkly-code-inline">file:///</span> link if <span class="wikkly-code-inline">/my/path</span> is a valid path </li><li class="wikkly-ul-li1">Rendering time limit now configurable on admin page. Fixed bug in time limit handling. </li><li class="wikkly-ul-li1">Speedups in rendering for all store types; text stores benefit the most from these changes.<br/><br/></li></ul><h3 class="wikkly-h3">Version 1.4.0</h3> <div class="wikkly-infobox-container" ><div class="wikkly-infobox-title" >Upgrade notes ...</div><div class="wikkly-infobox-body" ><ol class="wikkly-ol"><li class="wikkly-ol-li1">This is a major feature release with the addition of the many features listed below. </li><li class="wikkly-ol-li1">You only need to install the Python library to get this upgrade. There is no need to update your Drupal plugin or update your Apache setup. (If you are using the standalone <span class="wikkly-tt">.exe</span> then just download the new version(s).) </li></ol></div></div> <b class="">User-visible changes</b> <ul class="wikkly-ul"><li class="wikkly-ul-li1">Now creates autolinks to unknown CamelWords and links, just like TiddlyWiki does. <i class="">Turned <b class="">off</b> by default to avoid surprising existing users. You can enable this behavior from the admin page.</i> </li><li class="wikkly-ul-li1">Metadata updates are now automatically applied. No longer have to shutdown wiki and run <span class="wikkly-code-inline">wik&nbsp;updatemeta</span> from the command line. </li><li class="wikkly-ul-li1">Added user-defined log filters on admin page. </li><li class="wikkly-ul-li1">Added StyleSheet link on admin page for convenience. </li><li class="wikkly-ul-li1">Added button on admin page to clear rendercache. </li><li class="wikkly-ul-li1">Stricter parsing of CamelWords &mdash; now accepts alphabetical only. </li><li class="wikkly-ul-li1">Fixed cache handling in SiteTitle()/SiteSubtitle() </li><li class="wikkly-ul-li1">Tags <span class="wikkly-code-inline">nocache</span> and <span class="wikkly-code-inline">norss</span> changed to <span class="wikkly-code-inline">-cache</span> and <span class="wikkly-code-inline">-rss</span>. </li><li class="wikkly-ul-li1">Added <span class="wikkly-code-inline">&lt;&lt;div&gt;&gt;</span> and <span class="wikkly-code-inline">&lt;&lt;span&gt;&gt;</span> macros. </li><li class="wikkly-ul-li1">Fixed <span class="wikkly-code-inline">&lt;nowiki&gt;</span> handling.<br/><br/></li></ul><b class="">Internal changes</b> <ul class="wikkly-ul"><li class="wikkly-ul-li1">New plugin API make it easy to add user-defined macros. (see <a title="WritingPlugins.html" class="wikkly-a-internal" href="WritingPlugins.html" >WritingPlugins</a>) </li><li class="wikkly-ul-li1"><span class="wikkly-highlight">API Changes</span>  <ul class="wikkly-ul"><li class="wikkly-ul-li2">URL resolvers now return linktype as string ('internal', 'external', or 'newitem') instead of True/False to allow more types of links. (For backwards compatibility, True/False are still accepted.) </li><li class="wikkly-ul-li2"><span class="wikkly-code-inline">wikStore_tw_re</span> can no longer be used directly. <span class="wikkly-code-inline">wikStore_tw</span> has always been marked as the official interface; if you are using <span class="wikkly-code-inline">wikStore_tw_re</span> just change to <span class="wikkly-code-inline">wikStore_tw</span>, it has the same API. </li></ul></li><li class="wikkly-ul-li1"><span class="wikkly-code-inline">var_get_*</span> and <span class="wikkly-code-inline">var_set_*</span> functions moved into WikContext. Old functions left in place for now to avoid breaking API, but marked as deprecated. </li><li class="wikkly-ul-li1">Added file locking to wikStore_tw </li><li class="wikkly-ul-li1">Updated wikStore_sqlite for multiprocess use. </li><li class="wikkly-ul-li1">Added locking to wikStore_files </li><li class="wikkly-ul-li1">More comprehensive time handling in wikStore_tw to account for many variations in TiddlyWiki formats. </li><li class="wikkly-ul-li1">Fixes for CherryPy 3.1-final<br/><br/></li></ul><h3 class="wikkly-h3">Version 1.3.0</h3> <div class="wikkly-infobox-container" ><div class="wikkly-infobox-title" >Upgrade notes ...</div><div class="wikkly-infobox-body" ><ol class="wikkly-ol"><li class="wikkly-ol-li1">This is a major feature release with the addition of the GUI 'control center' application. </li><li class="wikkly-ol-li1">You only need to install the Python library to get this upgrade. There is no need to update your Drupal plugin or update your Apache setup. (If you are using the standalone <span class="wikkly-tt">.exe</span> then just download the new version(s).) </li></ol></div></div> <ul class="wikkly-ul"><li class="wikkly-ul-li1">New GUI "control center" for managing wikis. It is particularly useful if you are running several local wikis and don't want to keep starting/stopping them by hand. This is now the default command if you simply run <span class="wikkly-code-inline">wik.exe</span> or <span class="wikkly-code-inline">wikgui.exe</span>. </li><li class="wikkly-ul-li1">SiteTitle and SiteSubtitle are now rendered correctly. </li><li class="wikkly-ul-li1">Fixed handling of embedded Python code (<span class="wikkly-code-inline">&lt;?py</span>) so that globals are visible. </li><li class="wikkly-ul-li1">Added CherryPy to auto dependencies. </li><li class="wikkly-ul-li1">Allow turning on/off metadb usage in wiki admin page (will enable/disable logging.) </li><li class="wikkly-ul-li1">Allow turning on/off caching in wiki admin page. </li><li class="wikkly-ul-li1">Added <span class="wikkly-code-inline">--no-respawn</span> command-line option to prevent wiki from doing an auto-restart on exit. (<i class="">Primarily for use by <span class="wikkly-code-inline">wik</span> and <span class="wikkly-code-inline">wikgui</span></i>.) </li><li class="wikkly-ul-li1">Create rss.xml when running "wik render" </li><li class="wikkly-ul-li1">RSS feed now validates with no warnings at <a title="Link to http://feedvalidator.org" class="wikkly-a-www" href="http://feedvalidator.org/" onclick="window.open(this.href);return false;">http://feedvalidator.org/</a><br/><br/></li></ul><h3 class="wikkly-h3">Version 1.2.2</h3> <div class="wikkly-infobox-container" ><div class="wikkly-infobox-title" >Upgrade notes ...</div><div class="wikkly-infobox-body" ><ol class="wikkly-ol"><li class="wikkly-ol-li1">This is a minor bugfix update. There is no need to update unless you need the fix (see below). </li><li class="wikkly-ol-li1">You only need to install the Python library to get this upgrade. There is no need to update your Drupal plugin or update your Apache setup. (If you are using the standalone <span class="wikkly-tt">.exe</span> then just download the new version.) </li></ol></div></div> <ul class="wikkly-ul"><li class="wikkly-ul-li1">Updated to handle wikis created with TiddlyWiki 2.4.0. (<i class="">Works will all versions of TiddlyWiki from 2.0-2.4</i>) </li></ul> <h3 class="wikkly-h3">Version 1.2.0</h3><br/><div class="wikkly-infobox-container" ><div class="wikkly-infobox-title" >Upgrade notes ...</div><div class="wikkly-infobox-body" ><ol class="wikkly-ol"><li class="wikkly-ol-li1">This upgrade is highly recommended for all users. Version 1.1 had a showstopper bug in its XSS filter. </li><li class="wikkly-ol-li1">You only need to install the Python library to get this upgrade. There is no need to update your Drupal plugin or update your Apache setup. (If you are using the standalone <span class="wikkly-tt">.exe</span> then just download the new version.) </li><li class="wikkly-ol-li1">You should run <span class="wikkly-code-inline">wik&nbsp;clean</span> on your wiki(s) after this upgrade to clear the cache of any badly generated files from version 1.1. </li></ol></div></div> Changes: <ul class="wikkly-ul"><li class="wikkly-ul-li1">Added compatibility with CherryPy 3.1beta (version 3.0.x still supported). </li><li class="wikkly-ul-li1">Redirect requests for "PageName" to "PageName.html" (assuming "PageName" is a valid item). </li><li class="wikkly-ul-li1">XSS filter was too aggressive in filtering URLs based on server names, breaking wiki links when running locally. Thanks to Doug Gephardt for the report. </li><li class="wikkly-ul-li1">Eliminated potential information leak in server. </li><li class="wikkly-ul-li1">Allow uppercase letters in CSS classnames. </li><li class="wikkly-ul-li1">Log more information on failed logins. </li><li class="wikkly-ul-li1">Show CherryPy version on admin page.<br/><br/></li></ul><h3 class="wikkly-h3">Version 1.1.0</h3><br/><div class="wikkly-infobox-container" ><div class="wikkly-infobox-title" >Upgrading ...</div><div class="wikkly-infobox-body" ><ol class="wikkly-ol"><li class="wikkly-ol-li1">You only need to install the Python library to get this upgrade. There is no need to update your Drupal plugin or update your Apache setup. (If you are using the standalone <span class="wikkly-tt">.exe</span> then just download the new version.) </li><li class="wikkly-ol-li1">A metadata update is needed after installing this upgrade. You will see instructions in your wiki on what to do.</li></ol></div></div>  Changes: <ul class="wikkly-ul"><li class="wikkly-ul-li1">Added RSS (2.0) feed to wiki. Feed is formatted to allow autodiscovery so you don't need to do anything. You can exclude items from the RSS feed by tagging them with <span class="wikkly-code-inline">norss</span>.  </li><li class="wikkly-ul-li1">Wiki will now serve any files found in folder <span class="wikkly-code-inline">files/</span> under your wiki root folder. See <a title="ServingFiles.html" class="wikkly-a-internal" href="ServingFiles.html" >ServingFiles</a> for more information. </li><li class="wikkly-ul-li1"><span class="wikkly-highlight">API Change</span> <span class="wikkly-tt">wikStore.py</span>: Moved <span class="wikkly-tt">tag_add()</span>, <span class="wikkly-tt">tag_del()</span> and <span class="wikkly-tt">tag_toggle()</span> into WikklyItem. </li><li class="wikkly-ul-li1">Always place absolute URLs in generated HTML. This was added to allow page links in the RSS feed to point to the correct location. </li><li class="wikkly-ul-li1">Stop putting domain names in parens next to links when rendering in safe mode. This was causing some aesthetic issues; it may be reenabled in a future release. </li><li class="wikkly-ul-li1">Stop performing reverse DNS lookups when showing logs. Far too slow. </li><li class="wikkly-ul-li1">Serve <span class="wikkly-tt">robots.txt</span> (no restrictions currently; was added to prevent errors when crawlers request it). </li><li class="wikkly-ul-li1">Added more log reporting links on admin page. </li><li class="wikkly-ul-li1">Watch for buggy browsers that request <span class="wikkly-tt">favicon.ico</span> instead of <span class="wikkly-tt">favicon.png</span> as specified in <span class="wikkly-code-inline">&lt;HEAD&gt;</span><br/><br/></li></ul><h3 class="wikkly-h3">Version 1.0.0</h3><br/><ul class="wikkly-ul"><li class="wikkly-ul-li1">The major new feature is addition of wiki metatool "wik". With this tool, WikklyText now provides a full-blown wiki server. Using "wik", you can create, render, and serve editable multiuser wikis over HTTP. It is equally suitable for use as a <a title="WikiOnAStick.html" class="wikkly-a-internal" href="WikiOnAStick.html" >WikiOnAStick</a> as well as serving <a title="BehindApache.html" class="wikkly-a-internal" href="BehindApache.html" >BehindApache</a><br/><br/></li></ul><ul class="wikkly-ul"><li class="wikkly-ul-li1">Hundreds of fixes, improvements, and stabilization for version 1.0<br/><br/></li></ul><h3 class="wikkly-h3">Version 0.99.50</h3><br/><ul class="wikkly-ul"><li class="wikkly-ul-li1">Minimum requirement is now Python 2.3.5. Python 2.2 has a number of issues and setuptools does not support &lt; 2.3.5 anyways.<br/><br/></li></ul><ul class="wikkly-ul"><li class="wikkly-ul-li1">New abstract storage layer (wikStore) that allows reading &amp; writing wikitexts from Tiddlywikis, a flat set of text files, and SQLite databases.<br/><br/></li></ul><ul class="wikkly-ul"><li class="wikkly-ul-li1">No longer requires <span class="wikkly-tt">lxml</span> package.<br/><br/></li></ul><ul class="wikkly-ul"><li class="wikkly-ul-li1">Rewrote <span class="wikkly-tt">twextract</span> to use new storage layer.<br/><br/></li></ul><ul class="wikkly-ul"><li class="wikkly-ul-li1">Sources reorganized into a setuptools package with a standard <span class="wikkly-tt">setup.py</span>.<br/><br/></li></ul><ul class="wikkly-ul"><li class="wikkly-ul-li1">Scripts installed to PYTHONDIR/Scripts (directly runnable, no more user-created wrappers needed).<br/><br/></li></ul><ul class="wikkly-ul"><li class="wikkly-ul-li1"><span class="wikkly-tt">wikkly2html.py</span> now does a chdir() to sourcefile path so included files, etc. can always be found in a predictable location.<br/><br/></li></ul><ul class="wikkly-ul"><li class="wikkly-ul-li1">Some refactoring, renaming and other cleanups.<br/><br/></li></ul><ul class="wikkly-ul"><li class="wikkly-ul-li1">Version info now in version.py instead of wikkly_fmt.info<br/><br/><br/><br/></li></ul>]]></description>
            <guid isPermaLink="false">cb6925368e7ad4fd88c6442050bf6cff97c851f6</guid>
            <pubDate>Fri, 18 Dec 2009 19:12:00 +0000</pubDate>
        </item>
        <item>
            <title>Tags</title>
            <link>Tags.html</link>
            <description><![CDATA[<div class="wikkly-code-block">&lt;!--<br/>&nbsp;&nbsp;&nbsp;&nbsp;These&nbsp;are&nbsp;the&nbsp;tags&nbsp;generated&nbsp;by&nbsp;wikklytext.buildXML&nbsp;and&nbsp;recognized&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;by&nbsp;wikklytext.buildHTML.&nbsp;Macros&nbsp;are&nbsp;allowed&nbsp;to&nbsp;generate&nbsp;and&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;any&nbsp;of&nbsp;these&nbsp;as&nbsp;well.<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;Last&nbsp;synced&nbsp;with&nbsp;WikklyText&nbsp;sources&nbsp;on&nbsp;2009-10-08<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;CAUTION&nbsp;-------------------------------------------------------------<br/>&nbsp;&nbsp;&nbsp;&nbsp;Macro&nbsp;writers&nbsp;MUST&nbsp;ensure&nbsp;that&nbsp;no&nbsp;unfiltered&nbsp;user&nbsp;data&nbsp;is&nbsp;injected&nbsp;into<br/>&nbsp;&nbsp;&nbsp;&nbsp;the&nbsp;'style'&nbsp;attribute&nbsp;of&nbsp;&lt;MacroBlock&gt;&nbsp;or&nbsp;&lt;MacroInline&gt;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;(at&nbsp;least&nbsp;in&nbsp;Safe&nbsp;Mode).&nbsp;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;This&nbsp;is&nbsp;the&nbsp;only&nbsp;attribute&nbsp;that&nbsp;is&nbsp;not&nbsp;sanity&nbsp;checked&nbsp;when&nbsp;generating<br/>&nbsp;&nbsp;&nbsp;&nbsp;HTML&nbsp;in&nbsp;Safe&nbsp;Mode.<br/>&nbsp;&nbsp;&nbsp;&nbsp;------------------------------------------------------------------------<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;General&nbsp;note:&nbsp;Only&nbsp;the&nbsp;&lt;Text*&gt;&nbsp;tags&nbsp;are&nbsp;allowed&nbsp;to&nbsp;have<br/>&nbsp;&nbsp;&nbsp;&nbsp;character&nbsp;content.&nbsp;ALL&nbsp;of&nbsp;the&nbsp;remaining&nbsp;tags&nbsp;(except&nbsp;for<br/>&nbsp;&nbsp;&nbsp;&nbsp;the&nbsp;self-closing&nbsp;tags)&nbsp;are&nbsp;containers.<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;Overall&nbsp;structure:<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;WikklyContent&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;ErrorsList&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;..<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/ErrorsList&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;Content&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;..<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/Content&gt;<br/>--&gt;&nbsp;&nbsp;&nbsp;&nbsp;<br/><br/>&lt;!--&nbsp;Overall&nbsp;container&nbsp;--&gt;<br/>&lt;WikklyContent&gt;<br/><br/>&lt;!--&nbsp;Container&nbsp;for&nbsp;content&nbsp;--&gt;<br/>&lt;Content&gt;<br/><br/>&lt;!--&nbsp;Used&nbsp;to&nbsp;pass&nbsp;around&nbsp;lists&nbsp;of&nbsp;Elements.&nbsp;Ignore&nbsp;for&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HTML&nbsp;output&nbsp;(output&nbsp;subelements&nbsp;instead).<br/>--&gt;<br/>&lt;ElementList&gt;<br/><br/>&lt;!--&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;Links.&nbsp;Only&nbsp;the&nbsp;following&nbsp;subnodes&nbsp;are&nbsp;recognized.<br/>--&gt;<br/>&lt;Link&gt;<br/>&nbsp;&nbsp;&lt;!--&nbsp;The&nbsp;object&nbsp;linked&nbsp;to,&nbsp;i.e.&nbsp;&lt;a&nbsp;..&gt;&nbsp;LinkSource&nbsp;&lt;/a&gt;&nbsp;--&gt;<br/>&nbsp;&nbsp;&lt;LinkSource&gt;<br/>&nbsp;&nbsp;&lt;!--&nbsp;The&nbsp;URL,&nbsp;i.e.&nbsp;&lt;a&nbsp;href="LinkDest"&gt;&nbsp;...&nbsp;&lt;/a&gt;&nbsp;--&gt;<br/>&nbsp;&nbsp;&lt;LinkDest&gt;<br/>&nbsp;&nbsp;<br/>&lt;!--&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;Basic&nbsp;text&nbsp;styling,&nbsp;can&nbsp;be&nbsp;nested&nbsp;freely&nbsp;(although&nbsp;for&nbsp;example<br/>&nbsp;&nbsp;&nbsp;&nbsp;nesting&nbsp;&lt;Bold&gt;&nbsp;inside&nbsp;&lt;Bold&gt;&nbsp;makes&nbsp;no&nbsp;sense,&nbsp;it&nbsp;is&nbsp;allowed).<br/>--&gt;<br/>&lt;Bold&gt;<br/>&lt;Italic&gt;<br/>&lt;Strikethrough&gt;<br/>&lt;Underline&gt;<br/>&lt;Superscript&gt;<br/>&lt;Subscript&gt;<br/><br/>&lt;!--&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Generic&nbsp;inline&nbsp;CSS&nbsp;styling.<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If&nbsp;'style'&nbsp;is&nbsp;missing,&nbsp;uses&nbsp;default&nbsp;highlighting.&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;In&nbsp;'Safe&nbsp;Mode',&nbsp;style&nbsp;is&nbsp;ignored&nbsp;to&nbsp;prevent&nbsp;HTML&nbsp;injection.<br/>--&gt;<br/>&lt;Highlight&nbsp;[style="CSS&nbsp;style&nbsp;string"]&gt;<br/><br/>&lt;!--&nbsp;Numbered&nbsp;lists.&nbsp;'level'&nbsp;is&nbsp;indent&nbsp;level.&nbsp;--&gt;<br/>&lt;NumberedList&gt;<br/>&nbsp;&nbsp;&lt;NumberedListItem&nbsp;level="NR"&gt;<br/><br/>&lt;!--&nbsp;Unumbered&nbsp;lists.&nbsp;'level'&nbsp;is&nbsp;indent&nbsp;level.&nbsp;--&gt;<br/>&lt;UnnumberedList&gt;<br/>&nbsp;&nbsp;&lt;UnnumberedListItem&nbsp;level="NR"&gt;&nbsp;&nbsp;<br/><br/>&lt;!--&nbsp;Headings.&nbsp;'level'&nbsp;is&nbsp;heading&nbsp;level&nbsp;--&gt;&nbsp;&nbsp;<br/>&lt;Heading&nbsp;level="NR"&gt;<br/><br/>&lt;!--&nbsp;Do&nbsp;a&nbsp;block&nbsp;or&nbsp;line&nbsp;indent&nbsp;of&nbsp;contents&nbsp;--&gt;<br/>&lt;BlockIndent&gt;<br/>&lt;LineIndent&gt;<br/><br/>&lt;!--&nbsp;A&nbsp;block&nbsp;of&nbsp;code&nbsp;--&gt;&nbsp;&nbsp;&nbsp;<br/>&lt;CodeBlock&gt;<br/><br/>&lt;!--&nbsp;Inline&nbsp;code&nbsp;--&gt;<br/>&lt;CodeInline&gt;<br/><br/>&lt;!--&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;Create&nbsp;a&nbsp;named&nbsp;anchor.&nbsp;Uses&nbsp;the&nbsp;first&nbsp;&lt;Text&gt;&nbsp;node<br/>&nbsp;&nbsp;&nbsp;&nbsp;as&nbsp;the&nbsp;name&nbsp;<br/>--&gt;<br/>&lt;CreateAnchor&gt;<br/><br/>&lt;!--&nbsp;Images&nbsp;--&gt;<br/>&lt;Image&gt;<br/>&nbsp;&nbsp;&nbsp;&lt;!--&nbsp;Optional:&nbsp;URL&nbsp;to&nbsp;link&nbsp;to&nbsp;(when&nbsp;image&nbsp;is&nbsp;clicked)&nbsp;--&gt;<br/>&nbsp;&nbsp;&nbsp;&lt;ImageLink&gt;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&lt;!--&nbsp;Source&nbsp;of&nbsp;image,&nbsp;i.e.&nbsp;for&nbsp;&lt;img&nbsp;src=ImageFilename&gt;&nbsp;--&gt;<br/>&nbsp;&nbsp;&nbsp;&lt;ImageFilename&gt;<br/>&nbsp;&nbsp;&nbsp;&lt;!--&nbsp;Title&nbsp;for&nbsp;popup&nbsp;--&gt;<br/>&nbsp;&nbsp;&nbsp;&lt;ImageTitle&gt;<br/>&nbsp;&nbsp;&nbsp;<br/>&lt;!--&nbsp;Tables&nbsp;--&gt;<br/>&lt;Table&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--&nbsp;Caption,&nbsp;must&nbsp;be&nbsp;first&nbsp;tag&nbsp;if&nbsp;present&nbsp;--&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;TableCaption&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--&nbsp;Each&nbsp;row&nbsp;...&nbsp;--&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;TableRow&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--&nbsp;Each&nbsp;cell&nbsp;...&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;In&nbsp;"Safe&nbsp;Mode",&nbsp;bgcolor&nbsp;is&nbsp;ignored&nbsp;to&nbsp;prevent&nbsp;HTML&nbsp;injection.&nbsp;--&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;TableCell&nbsp;type="header|data"&nbsp;text-align="left|center|right"<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[skip="1"]&nbsp;[colspan="NR"]&nbsp;[rowspan="NR"]&nbsp;[bgcolor="color"]&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&lt;!--&nbsp;Definition&nbsp;lists&nbsp;--&gt;<br/>&lt;DefinitionList&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--&nbsp;Each&nbsp;list&nbsp;entry&nbsp;...&nbsp;--&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;DefinitionEntry&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--&nbsp;One&nbsp;Term&nbsp;&amp;&nbsp;Def&nbsp;per&nbsp;entry.<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Both&nbsp;must&nbsp;be&nbsp;present&nbsp;(even&nbsp;if&nbsp;empty)&nbsp;and&nbsp;in&nbsp;order.&nbsp;--&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;DefinitionTerm&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;DefinitionDef&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&lt;!--&nbsp;A&nbsp;block&nbsp;of&nbsp;content&nbsp;styled&nbsp;by&nbsp;the&nbsp;given&nbsp;CSS&nbsp;class&nbsp;--&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&lt;CSSBlock&nbsp;class="CLASSNAME"&gt;<br/><br/>&lt;!--&nbsp;Self-closing&nbsp;tags&nbsp;(no&nbsp;subnodes&nbsp;recognized)&nbsp;--&gt;<br/>&lt;Separator&nbsp;/&gt;<br/>&lt;BlankLines&nbsp;count="NR"&nbsp;/&gt;<br/>&lt;LineBreak&nbsp;/&gt;<br/>&lt;DashChar&nbsp;/&gt;<br/><br/>&lt;ErrorsList&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;Error&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;ErrorMessage&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;ErrorLookingAt&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;ErrorTrace&gt;<br/><br/>&lt;!--&nbsp;<br/>&nbsp;&nbsp;A&nbsp;MacroBlock&nbsp;is&nbsp;a&nbsp;DIV-like&nbsp;element&nbsp;with&nbsp;optional&nbsp;class,&nbsp;style,&nbsp;and&nbsp;id&nbsp;attributes.<br/>&nbsp;&nbsp;It&nbsp;is&nbsp;called&nbsp;"MacroBlock"&nbsp;because&nbsp;it&nbsp;is&nbsp;meant&nbsp;for&nbsp;use&nbsp;by&nbsp;macros&nbsp;to&nbsp;define&nbsp;<br/>&nbsp;&nbsp;their&nbsp;own&nbsp;blocks&nbsp;when&nbsp;an&nbsp;existing&nbsp;tag&nbsp;won't&nbsp;do.&nbsp;<br/>--&gt;<br/>&lt;MacroBlock&nbsp;[class="CLASSNAME"]&nbsp;[style="CSS&nbsp;style"]&nbsp;[id="ID"]&gt;<br/><br/><br/>&lt;!--<br/>&nbsp;&nbsp;MacroInline&nbsp;is&nbsp;the&nbsp;same&nbsp;as&nbsp;MacroBlock,&nbsp;but&nbsp;is&nbsp;meant&nbsp;as&nbsp;a&nbsp;&lt;span&gt;<br/>&nbsp;&nbsp;element&nbsp;instead&nbsp;of&nbsp;a&nbsp;&lt;div&gt;.<br/>--&gt;<br/>&lt;MacroInline&nbsp;[class="CLASSNAME"]&nbsp;[style="CSS&nbsp;style"]&nbsp;[id="ID"]&gt;<br/><br/>&lt;!--&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;As&nbsp;noted&nbsp;above,&nbsp;only&nbsp;&lt;Text*&gt;&nbsp;nodes&nbsp;are&nbsp;allowed&nbsp;to&nbsp;contain<br/>&nbsp;&nbsp;&nbsp;&nbsp;character&nbsp;data.&nbsp;There&nbsp;are&nbsp;several&nbsp;types&nbsp;of&nbsp;Text&nbsp;nodes&nbsp;depending<br/>&nbsp;&nbsp;&nbsp;&nbsp;on&nbsp;the&nbsp;type&nbsp;of&nbsp;content.<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;Text&nbsp;nodes&nbsp;are&nbsp;not&nbsp;allowed&nbsp;to&nbsp;have&nbsp;any&nbsp;subnodes;&nbsp;only&nbsp;their<br/>&nbsp;&nbsp;&nbsp;&nbsp;character&nbsp;data&nbsp;is&nbsp;recognized.<br/>--&gt;<br/><br/>&lt;!--&nbsp;Normal&nbsp;text,&nbsp;HTML-special&nbsp;chars&nbsp;are&nbsp;escaped&nbsp;--&gt;<br/>&lt;Text&gt;<br/><br/>&lt;!--&nbsp;Like&nbsp;&lt;Text&gt;,&nbsp;but&nbsp;whitespace&nbsp;is&nbsp;preserved&nbsp;as&nbsp;well&nbsp;--&gt;<br/>&lt;TextCode&gt;<br/><br/>&lt;!--&nbsp;No&nbsp;escaping,&nbsp;written&nbsp;as&nbsp;raw&nbsp;chars&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;In&nbsp;"Safe&nbsp;Mode",&nbsp;these&nbsp;are&nbsp;ignored.&nbsp;--&gt;<br/>&lt;TextHTML&gt;<br/><br/>&lt;!--&nbsp;For&nbsp;URLs&nbsp;under&nbsp;LinkURL&nbsp;or&nbsp;ImageSource&nbsp;tags&nbsp;--&gt;<br/>&lt;TextURL&gt;<br/><br/>&lt;!--&nbsp;Like&nbsp;&lt;Text&gt;&nbsp;but&nbsp;no&nbsp;wikification&nbsp;of&nbsp;text&nbsp;is&nbsp;performed&nbsp;--&gt;<br/>&lt;TextNoWiki&gt;<br/><br/>&lt;!--&nbsp;For&nbsp;2.x&nbsp;parser&nbsp;--&nbsp;not&nbsp;yet&nbsp;implemented&nbsp;--&gt;<br/><br/>&lt;!--&nbsp;A&nbsp;macro&nbsp;call&nbsp;--&gt;<br/>&lt;MacroCall&gt;<br/>&lt;!--&nbsp;Subnodes&nbsp;will&nbsp;be&nbsp;either&nbsp;...&nbsp;--&gt;<br/>&lt;TextMacroArg&gt;<br/>&lt;!--&nbsp;<br/>&nbsp;&nbsp;&nbsp;...&nbsp;for&nbsp;args&nbsp;parsed&nbsp;directly&nbsp;from&nbsp;wikitext,&nbsp;but&nbsp;can<br/>&nbsp;&nbsp;&nbsp;be&nbsp;any&nbsp;other&nbsp;type&nbsp;of&nbsp;node&nbsp;for&nbsp;nodes&nbsp;that&nbsp;have&nbsp;already&nbsp;been&nbsp;evaluated.&nbsp;<br/>&nbsp;&nbsp;&nbsp;(Note&nbsp;especially&nbsp;that&nbsp;another&nbsp;&lt;MacroCall&gt;&nbsp;can&nbsp;be&nbsp;one&nbsp;of&nbsp;the&nbsp;elements<br/>&nbsp;&nbsp;&nbsp;to&nbsp;denote&nbsp;an&nbsp;inner&nbsp;macro&nbsp;call.)<br/><br/>&nbsp;&nbsp;The&nbsp;name&nbsp;of&nbsp;the&nbsp;macro&nbsp;to&nbsp;call&nbsp;is&nbsp;simply&nbsp;be&nbsp;the&nbsp;first&nbsp;element.text<br/>--&gt;<br/><br/>&lt;!--&nbsp;Embedded&nbsp;Python&nbsp;code&nbsp;--&gt;<br/>&lt;PyCode&gt;<br/>&nbsp;&nbsp;&nbsp;&lt;TextPyCode&gt;&nbsp;..&nbsp;code&nbsp;here&nbsp;...</div><br/><br/>]]></description>
            <guid isPermaLink="false">9945e83c8ada43ad1169cfd85593a67b01c0d75b</guid>
            <pubDate>Thu, 08 Oct 2009 14:15:00 +0000</pubDate>
        </item>
        <item>
            <title>Apache+CGI+mod_rewrite+cgi-bin</title>
            <link>Apache+CGI+mod_rewrite+cgi-bin.html</link>
            <description><![CDATA[<div class="wikkly-warnbox-container" ><div class="wikkly-warnbox-title" >Please read before continuing</div><div class="wikkly-warnbox-body" ><ul class="wikkly-ul"><li class="wikkly-ul-li1">These instructions are for WikklyText 1.9.x. If you are running an earlier version, see <a title="BehindApache.html" class="wikkly-a-internal" href="BehindApache.html" >BehindApache</a> instead. </li><li class="wikkly-ul-li1">If you are upgrading from WikklyText 1.6.x or earlier, you can delete the file <span class="wikkly-code-inline">wikboot.py</span> in your wiki folder. It is no longer used. </li></ul></div></div>  This recipe covers a configuration commonly available on shared webhosts where you are allowed to run CGI scripts, but you are required to place them in a predetermined <span class="wikkly-code-inline">cgi-bin</span> directory. The following locations are assumed &mdash; adjust as needed: <dl class="wikkly-dl"><dt class="wikkly-dt">Wiki filesystem location </dt><dd class="wikkly-dd"><span class="wikkly-code-inline">/var/www/wikis/mywiki</span> </dd><dt class="wikkly-dt">CGI script directory </dt><dd class="wikkly-dd"><span class="wikkly-code-inline">/var/www/cgi-bin</span> </dd><dt class="wikkly-dt">Public URL </dt><dd class="wikkly-dd"><span class="wikkly-code-inline">http://example.com/my/wiki</span><br/><br/></dd></dl><h3 class="wikkly-h3">Create wiki</h3><br/>You can copy an existing wiki to <span class="wikkly-code-inline">/var/www/wikis/mywiki</span>, but for this example I'll just create a new one: <div class="wikkly-code-block">mkdir&nbsp;-p&nbsp;/var/www/wikis/mywiki<br/>cd&nbsp;/var/www/wikis/mywiki<br/>wik&nbsp;init</div> Select the type of storage you want and accept the rest of the defaults. (<i class="">The server options have nothing to do with your Apache setup so its safe to accept the defaults.</i>)<br/><br/>On (at least) Unix/Linux systems, the wiki needs to be owned by the userid that runs the Apache process. For example, on my server the Apache process is owned by <span class="wikkly-code-inline">www-user</span>, so I do: <div class="wikkly-code-block">chown&nbsp;-R&nbsp;www-user&nbsp;/var/www/wikis/mywiki</div><br/><br/><h3 class="wikkly-h3">Add CGI script</h3><br/>Create a CGI script in your <span class="wikkly-code-inline">cgi-bin</span> folder:<br/><br/><div class="wikkly-codebox-container" ><div class="wikkly-codebox-title" >/var/www/cgi-bin/wiki.cgi</div><div class="wikkly-codebox-body" >#!/usr/bin/python<br/>#<br/>#&nbsp;Set&nbsp;the&nbsp;above&nbsp;line&nbsp;to&nbsp;the&nbsp;full&nbsp;path&nbsp;of&nbsp;your&nbsp;Python&nbsp;executable<br/><br/>#&nbsp;Set&nbsp;this&nbsp;to&nbsp;the&nbsp;full&nbsp;path&nbsp;where&nbsp;the&nbsp;wiki&nbsp;is&nbsp;stored<br/>WIKIPATH&nbsp;=&nbsp;'/var/www/wikis/mywiki'<br/><br/>#&nbsp;Set&nbsp;this&nbsp;to&nbsp;match&nbsp;the&nbsp;public&nbsp;URL&nbsp;path:<br/>SCRIPT_NAME&nbsp;=&nbsp;'/my/wiki'<br/><br/>#&nbsp;You&nbsp;can&nbsp;set&nbsp;True&nbsp;if&nbsp;desired&nbsp;to&nbsp;enable&nbsp;logging<br/>USE_LOGGING&nbsp;=&nbsp;False<br/><br/>#&nbsp;nothing&nbsp;else&nbsp;to&nbsp;configure&nbsp;--&nbsp;serve&nbsp;wiki<br/>import&nbsp;wikklytext.wiki.frontend.ws_cgi&nbsp;as&nbsp;ws_cgi<br/>ws_cgi.init(WIKIPATH,&nbsp;USE_LOGGING)<br/>ws_cgi.serve_wiki(WIKIPATH,&nbsp;SCRIPT_NAME)</div></div><br/><br/>Make the file executable: <div class="wikkly-code-block">chmod&nbsp;a+x&nbsp;/var/www/wikis/mywiki/wiki.cgi</div><br/><br/><h3 class="wikkly-h3">Configure Apache</h3><br/>Edit your Apache configuration  (i.e. <span class="wikkly-code-inline">httpd.conf</span>, <span class="wikkly-code-inline">.htaccess</span>, etc.) and add a <span class="wikkly-code-inline">Location</span> section: <div class="wikkly-code-block">&lt;Location&nbsp;/my/wiki&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;redirect&nbsp;/my/wiki&nbsp;-&gt;&nbsp;/cgi-bin/wiki.cgi<br/>&nbsp;&nbsp;&nbsp;&nbsp;RewriteEngine&nbsp;on<br/>&nbsp;&nbsp;&nbsp;&nbsp;RewriteBase&nbsp;/my/wiki<br/>&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;don't&nbsp;change&nbsp;if&nbsp;already&nbsp;rewritten<br/>&nbsp;&nbsp;&nbsp;&nbsp;RewriteCond&nbsp;%{REQUEST_URI}&nbsp;!wiki.cgi<br/>&nbsp;&nbsp;&nbsp;&nbsp;RewriteRule&nbsp;/my/wiki/(.*)$&nbsp;/cgi-bin/wiki.cgi/$1<br/>&lt;/Location&gt;</div><br/><br/>Restart Apache.<br/><br/><h3 class="wikkly-h3">Ready to go!</h3><br/>You should now be able to browse to <span class="wikkly-code-inline">http://example.com/my/wiki</span> and see your wiki. ]]></description>
            <guid isPermaLink="false">d2deb5453b6b27507047ecf6f21133e59a37b161</guid>
            <pubDate>Fri, 02 Oct 2009 14:50:00 +0000</pubDate>
        </item>
        <item>
            <title>UsingWik</title>
            <link>UsingWik.html</link>
            <description><![CDATA[ <span class="wikkly-tt">wik</span> is a tool for creating, managing, rendering and serving wikis. It provides an easy to use GUI, but you can also use it from the command line. The command line options are documented here.<br/><br/><h2 class="wikkly-h2">Quickstart</h2><br/>Create a standalone wiki server: <div class="wikkly-code-block">$&nbsp;mkdir&nbsp;/my/test/wiki<br/>$&nbsp;cd&nbsp;/my/test/wiki<br/>$&nbsp;wik&nbsp;init<br/>$&nbsp;wik&nbsp;serve</div><br/><br/>You can view/edit your wiki at <a title="Link to http://127.0.0.1:8000" class="wikkly-a-www" href="http://127.0.0.1:8000" onclick="window.open(this.href);return false;">http://127.0.0.1:8000</a> (<i class="">assuming you accepted the defaults in <span class="wikkly-code-inline">wik&nbsp;init</span></i>)<br/><br/>You can also render your wiki to static HTML: <div class="wikkly-code-block">$&nbsp;wik&nbsp;render</div><br/><br/><h2 class="wikkly-h2">Wik Reference</h2>  <dl class="wikkly-dl"><dt class="wikkly-dt">Usage </dt><dd class="wikkly-dd"><span class="wikkly-code-inline">wik&nbsp;command&nbsp;...</span><br/><br/></dd></dl>Normally <span class="wikkly-code-inline">wik</span> assumes that the wiki is in the current directory. If that is not the case you can run it as: <div class="wikkly-code-block">wik&nbsp;-d&nbsp;/PATH/TO/WIKI&nbsp;command</div><br/><br/><h2 class="wikkly-h2">Primary Commands</h2>  <dl class="wikkly-dl"><dt class="wikkly-dt"><span class="wikkly-code-inline">wik&nbsp;init</span> </dt><dd class="wikkly-dd">Initialize a wiki in the current directory. It will prompt you for information it needs.<br/><br/>You can initialize a wiki by ... <ul class="wikkly-ul"><li class="wikkly-ul-li1">Using an existing <a title="Link to http://www.tiddlywiki.com" class="wikkly-a-www" href="http://www.tiddlywiki.com" onclick="window.open(this.href);return false;">TiddlyWiki</a> </li><li class="wikkly-ul-li1">Using an existing set of text (<span class="wikkly-tt">.txt</span>) files. </li><li class="wikkly-ul-li1">Creating a brand new wiki, with your choice of storage formats: <ul class="wikkly-ul"><li class="wikkly-ul-li2">Text files </li><li class="wikkly-ul-li2">A <a title="Link to http://www.tiddlywiki.com" class="wikkly-a-www" href="http://www.tiddlywiki.com" onclick="window.open(this.href);return false;">TiddlyWiki</a> </li><li class="wikkly-ul-li2">An <a title="Link to http://www.sqlite.org" class="wikkly-a-www" href="http://www.sqlite.org/" onclick="window.open(this.href);return false;">SQLite</a> database </li></ul></li><li class="wikkly-ul-li1">You can read more about these options at <a title="WhichFormat_.html" class="wikkly-a-internal" href="WhichFormat_.html" >WhichFormat?</a></li></ul><br/><br/>The wiki will be populated with a default set of items to help you get started. <div class="wikkly-notebox" >The configuration is saved to <span class="wikkly-code-inline">.wik/conf</span> in each wiki directory, should you wish to adjust it later. It is a plain text file.</div><br/><br/></dd></dl><dl class="wikkly-dl"><dt class="wikkly-dt"><span class="wikkly-code-inline">wik&nbsp;serve</span> </dt><dd class="wikkly-dd">Start a standalone server to provide your content over HTTP with full multiuser editing.<br/><br/> For example, to serve content from <span class="wikkly-code-inline">/usr/doc/mywiki</span>: <div class="wikkly-code-block">wik&nbsp;-d&nbsp;/usr/doc/mywiki&nbsp;serve</div> You would then view your wiki through <a title="Link to http://localhost:8000" class="wikkly-a-www" href="http://localhost:8000" onclick="window.open(this.href);return false;">http://localhost:8000</a><br/>(<i class="">Using the default server parameters as an example.</i>) <br/><br/> To serve behind Apache, instead of as a standalone server, see <a title="BehindApache.html" class="wikkly-a-internal" href="BehindApache.html" >BehindApache</a>.<br/><br/></dd></dl><dl class="wikkly-dl"><dt class="wikkly-dt"><span class="wikkly-code-inline">wik&nbsp;render</span> </dt><dd class="wikkly-dd">Render the wiki to a static set of HTML files. This is useful especially if you want to edit your wiki locally (through <span class="wikkly-code-inline">wik&nbsp;serve</span>) and place the final set of HTML files on a webserver.<br/><br/></dd></dl><dl class="wikkly-dl"><dt class="wikkly-dt"><span class="wikkly-code-inline">wik&nbsp;gui</span> </dt><dd class="wikkly-dd">Launch the GUI "command center". This is a GUI tool that lets you easily manage your locally stored wikis. (<i class="">This is also the default command if you run <span class="wikkly-code-inline">wik.exe</span> or <span class="wikkly-code-inline">wikgui.exe</span> with no arguments.</i>)<br/><br/></dd></dl><h2 class="wikkly-h2">Secondary Commands</h2> <dl class="wikkly-dl"><dt class="wikkly-dt"><span class="wikkly-code-inline">wik&nbsp;ls</span> </dt><dd class="wikkly-dd">List the contents of the wiki.<br/><br/></dd></dl><dl class="wikkly-dl"><dt class="wikkly-dt"><span class="wikkly-code-inline">wik&nbsp;skip</span> </dt><dd class="wikkly-dd">Interactively edit the list of items that will <i class="">not</i> be rendered.<br/><br/></dd></dl><dl class="wikkly-dl"><dt class="wikkly-dt"><span class="wikkly-code-inline">wik&nbsp;clean</span> </dt><dd class="wikkly-dd">Remove all generated files and clear out the cache.<br/><br/></dd></dl><dl class="wikkly-dl"><dt class="wikkly-dt"><span class="wikkly-code-inline">wik&nbsp;cache</span> </dt><dd class="wikkly-dd">Interactively edit the list of items that will <i class="">not</i> be cached.<br/><br/></dd></dl><dl class="wikkly-dl"><dt class="wikkly-dt"><span class="wikkly-code-inline">wik&nbsp;conv</span> </dt><dd class="wikkly-dd">Convert underlying wiki storage to another format. You can freely convert between any of the supported types.<div class="wikkly-warnbox-container" ><div class="wikkly-warnbox-title" >Caveat</div><div class="wikkly-warnbox-body" >When you convert <span class="wikkly-u">to</span> the TiddlyWiki format, the <i class="">markup style</i> of your content will changed to <b class="">TiddlyWiki</b> (since this is the only markup style that a native TiddlyWiki supports). This may alter the presentation of your content somewhat. When converting <span class="wikkly-u">from</span> a TiddlyWiki, the content type will be left as <b class="">TiddlyWiki</b>.<br/><br/>Converting to/from a <b class="">text</b> or <b class="">SQLite</b> wiki will not alter the content type.</div></div><br/><br/></dd></dl><dl class="wikkly-dl"><dt class="wikkly-dt"><span class="wikkly-code-inline">wik&nbsp;makeboot</span> </dt><dd class="wikkly-dd">Add a small bootstrap file to your wiki to help in running <a title="BehindApache.html" class="wikkly-a-internal" href="BehindApache.html" >BehindApache</a>.<br/><br/></dd></dl><dl class="wikkly-dl"><dt class="wikkly-dt"><span class="wikkly-code-inline">wik&nbsp;trustall</span> </dt><dd class="wikkly-dd">Useful when importing an existing TiddlyWiki. Creates (non-login) accounts for all existing authors and marks them as trusted users. (So that their content will render in full mode instead of safe mode.)<br/><br/></dd><div id="disqus_thread"></div><script type="text/javascript" src="http://disqus.com/forums/wikklytext/embed.js"></script><noscript><p><a href="http://wikklytext.disqus.com/?url=ref">View the forum thread.</a></p></noscript><p><a href="http://disqus.com" class="dsq-brlink">blog comments powered by <span class="logo-disqus">Disqus</span></a></p><dd class="wikkly-dd"></dd></dl> ]]></description>
            <guid isPermaLink="false">98277cbffc6004b87b2aab296a1de64631865bfb</guid>
            <pubDate>Sun, 27 Sep 2009 11:23:00 +0000</pubDate>
        </item>
        <item>
            <title>Apache+mod_python</title>
            <link>Apache+mod_python.html</link>
            <description><![CDATA[<div class="wikkly-warnbox-container" ><div class="wikkly-warnbox-title" >Please read before continuing</div><div class="wikkly-warnbox-body" ><ul class="wikkly-ul"><li class="wikkly-ul-li1">These instructions are for WikklyText 1.9.x. If you are running an earlier version, see <a title="BehindApache.html" class="wikkly-a-internal" href="BehindApache.html" >BehindApache</a> instead. </li><li class="wikkly-ul-li1">If you are upgrading from WikklyText 1.6.x or earlier, you can delete the file <span class="wikkly-code-inline">wikboot.py</span> in your wiki folder. It is no longer used. </li></ul></div></div>  This recipe shows how to setup a wiki using Apache and mod_python.<br/><br/>For this example, I'll assume you are using the following locations. Adjust as needed: <dl class="wikkly-dl"><dt class="wikkly-dt">Wiki filesystem location </dt><dd class="wikkly-dd"><span class="wikkly-code-inline">/var/www/wikis/mywiki</span> </dd><dt class="wikkly-dt">Public URL </dt><dd class="wikkly-dd"><span class="wikkly-code-inline">http://example.com/my/wiki</span><br/><br/></dd></dl><h3 class="wikkly-h3">Create wiki</h3><br/>You can copy an existing wiki to <span class="wikkly-code-inline">/var/www/wikis/mywiki</span>, but for this example I'll just create a new one: <div class="wikkly-code-block">mkdir&nbsp;-p&nbsp;/var/www/wikis/mywiki<br/>cd&nbsp;/var/www/wikis/mywiki<br/>wik&nbsp;init</div> Select the type of storage you want and accept the rest of the defaults. (<i class="">The server options have nothing to do with your Apache setup so its safe to accept the defaults.</i>)<br/><br/>On (at least) Unix/Linux systems, the wiki needs to be owned by the userid that runs the Apache process. For example, on my server the Apache process is owned by <span class="wikkly-code-inline">www-user</span>, so I do: <div class="wikkly-code-block">chown&nbsp;-R&nbsp;www-user&nbsp;/var/www/wikis/mywiki</div><br/><br/><h3 class="wikkly-h3">Add server script</h3><br/>Create a Python script in your wiki folder:<br/><br/><div class="wikkly-codebox-container" ><div class="wikkly-codebox-title" >/var/www/wikis/mywiki/wiki.py</div><div class="wikkly-codebox-body" >import&nbsp;os<br/>import&nbsp;wikklytext.wiki.frontend.ws_modpy&nbsp;as&nbsp;ws_modpy<br/><br/>#&nbsp;Assuming&nbsp;this&nbsp;script&nbsp;is&nbsp;placed&nbsp;in&nbsp;your&nbsp;wiki&nbsp;root&nbsp;directory,&nbsp;you<br/>#&nbsp;can&nbsp;leave&nbsp;this&nbsp;as&nbsp;is.&nbsp;Otherwise,&nbsp;set&nbsp;it&nbsp;to&nbsp;the&nbsp;full&nbsp;path&nbsp;of&nbsp;your<br/>#&nbsp;wiki&nbsp;folder.<br/>WIKIPATH&nbsp;=&nbsp;os.path.split(os.path.abspath(__file__))[0]<br/><br/>#&nbsp;Set&nbsp;this&nbsp;to&nbsp;your&nbsp;public&nbsp;URL&nbsp;path<br/>SCRIPT_NAME&nbsp;=&nbsp;"/my/wiki"<br/><br/>#&nbsp;set&nbsp;True&nbsp;to&nbsp;enable&nbsp;logging<br/>USE_LOGGING&nbsp;=&nbsp;False<br/><br/>ws_modpy.init(WIKIPATH,&nbsp;USE_LOGGING)<br/><br/>def&nbsp;handler(req):<br/>&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;ws_modpy.serve_wiki(WIKIPATH,&nbsp;req,&nbsp;SCRIPT_NAME)</div></div><br/><br/><h3 class="wikkly-h3">Configure Apache</h3><br/>Edit your Apache configuration  (i.e. <span class="wikkly-code-inline">httpd.conf</span>, <span class="wikkly-code-inline">.htaccess</span>, etc.) to setup mod_python to serve the wiki: <div class="wikkly-code-block">#&nbsp;set&nbsp;this&nbsp;to&nbsp;your&nbsp;public&nbsp;URL&nbsp;path<br/>&lt;Location&nbsp;/my/wiki&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;SetHandler&nbsp;mod_python<br/>&nbsp;&nbsp;&nbsp;&nbsp;PythonPath&nbsp;"sys.path&nbsp;+&nbsp;['/var/www/wikis/mywiki']"<br/>&nbsp;&nbsp;&nbsp;&nbsp;PythonHandler&nbsp;wiki::handler<br/>&nbsp;&nbsp;&nbsp;&nbsp;PythonDebug&nbsp;On<br/>&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;give&nbsp;a&nbsp;unique&nbsp;name&nbsp;to&nbsp;avoid&nbsp;problems<br/>&nbsp;&nbsp;&nbsp;&nbsp;PythonInterpreter&nbsp;WikiTestModpy<br/>&lt;/Location&gt;</div><br/><br/><h3 class="wikkly-h3">Ready to go!</h3><br/>You should now be able to browse to <span class="wikkly-code-inline">http://example.com/my/wiki</span> and see your wiki. ]]></description>
            <guid isPermaLink="false">40832c4127fb4d6e51d3df812ae321a16535c25e</guid>
            <pubDate>Sun, 27 Sep 2009 01:45:00 +0000</pubDate>
        </item>
        <item>
            <title>ApacheIntegration</title>
            <link>ApacheIntegration.html</link>
            <description><![CDATA[<div class="wikkly-warnbox-container" ><div class="wikkly-warnbox-title" >Please read before continuing</div><div class="wikkly-warnbox-body" ><ul class="wikkly-ul"><li class="wikkly-ul-li1">These instructions are for WikklyText 1.9.x. If you are running an earlier version, see <a title="BehindApache.html" class="wikkly-a-internal" href="BehindApache.html" >BehindApache</a> instead. </li><li class="wikkly-ul-li1">If you are upgrading from WikklyText 1.6.x or earlier, you can delete the file <span class="wikkly-code-inline">wikboot.py</span> in your wiki folder. It is no longer used. </li></ul></div></div>  <dl class="wikkly-dl"><dt class="wikkly-dt"><a title="Apache+CGI.html" class="wikkly-a-internal" href="Apache+CGI.html" >Apache+CGI</a> </dt><dd class="wikkly-dd">Simplest integration via CGI. </dd><dt class="wikkly-dt"><a title="Apache+CGI+mod_rewrite.html" class="wikkly-a-internal" href="Apache+CGI+mod_rewrite.html" >Apache+CGI+mod_rewrite</a> </dt><dd class="wikkly-dd">Like above but uses <b class="">mod_rewrite</b> to make nicer looking URLs. </dd><dt class="wikkly-dt"><a title="Apache+CGI+mod_rewrite+cgi-bin.html" class="wikkly-a-internal" href="Apache+CGI+mod_rewrite+cgi-bin.html" >Apache+CGI+mod_rewrite+cgi-bin</a> </dt><dd class="wikkly-dd">A recipe to use if your <span class="wikkly-code-inline">cgi-bin</span> directory is seperate from your wiki directory. This is the most secure way to run via CGI since you don't have to allow CGI permissions on the wiki folder itself.<br/><br/></dd></dl><dl class="wikkly-dl"><dt class="wikkly-dt"><a title="Apache+mod_python.html" class="wikkly-a-internal" href="Apache+mod_python.html" >Apache+mod_python</a> </dt><dd class="wikkly-dd">Recipe using <b class="">mod_python</b>. Gives higher performance than the CGI recipes but <b class="">mod_python</b> is not as widely available across webhosts.<br/><br/></dd></dl>]]></description>
            <guid isPermaLink="false">d01a13a9ddd3a91a33f2e80d5157591efd2a3aed</guid>
            <pubDate>Sun, 27 Sep 2009 01:45:00 +0000</pubDate>
        </item>
        <item>
            <title>Apache+CGI</title>
            <link>Apache+CGI.html</link>
            <description><![CDATA[<div class="wikkly-warnbox-container" ><div class="wikkly-warnbox-title" >Please read before continuing</div><div class="wikkly-warnbox-body" ><ul class="wikkly-ul"><li class="wikkly-ul-li1">These instructions are for WikklyText 1.9.x. If you are running an earlier version, see <a title="BehindApache.html" class="wikkly-a-internal" href="BehindApache.html" >BehindApache</a> instead. </li><li class="wikkly-ul-li1">If you are upgrading from WikklyText 1.6.x or earlier, you can delete the file <span class="wikkly-code-inline">wikboot.py</span> in your wiki folder. It is no longer used. </li></ul></div></div>  This recipe shows a very basic CGI setup. I assume that you can run CGI scripts from any location. If that is not true, you might want to read <a title="Apache+CGI+mod_rewrite+cgi-bin.html" class="wikkly-a-internal" href="Apache+CGI+mod_rewrite+cgi-bin.html" >Apache+CGI+mod_rewrite+cgi-bin</a> instead.<br/><br/>For this example, I'll assume you are using the following locations. Adjust as needed: <dl class="wikkly-dl"><dt class="wikkly-dt">Wiki filesystem location </dt><dd class="wikkly-dd"><span class="wikkly-code-inline">/var/www/wikis/mywiki</span> </dd><dt class="wikkly-dt">Public URL </dt><dd class="wikkly-dd"><span class="wikkly-code-inline">http://example.com/wikis/mywiki/serve.py</span><br/><br/></dd></dl><h3 class="wikkly-h3">Create wiki</h3><br/>You can copy an existing wiki to <span class="wikkly-code-inline">/var/www/wikis/mywiki</span>, but for this example I'll just create a new one: <div class="wikkly-code-block">mkdir&nbsp;-p&nbsp;/var/www/wikis/mywiki<br/>cd&nbsp;/var/www/wikis/mywiki<br/>wik&nbsp;init</div> Select the type of storage you want and accept the rest of the defaults. (<i class="">The server options have nothing to do with your Apache setup so its safe to accept the defaults.</i>)<br/><br/>On (at least) Unix/Linux systems, the wiki needs to be owned by the userid that runs the Apache process. For example, on my server the Apache process is owned by <span class="wikkly-code-inline">www-user</span>, so I do: <div class="wikkly-code-block">chown&nbsp;-R&nbsp;www-user&nbsp;/var/www/wikis/mywiki</div><br/><br/><h3 class="wikkly-h3">Add CGI script</h3><br/>Create a CGI script in your wiki folder:<br/><br/><div class="wikkly-codebox-container" ><div class="wikkly-codebox-title" >/var/www/wikis/mywiki/wiki.py</div><div class="wikkly-codebox-body" >#!/usr/bin/python<br/>#<br/>#&nbsp;Set&nbsp;the&nbsp;above&nbsp;line&nbsp;to&nbsp;the&nbsp;full&nbsp;path&nbsp;of&nbsp;your&nbsp;Python&nbsp;executable<br/><br/>#--------------------------------------------------------------------<br/>#&nbsp;You&nbsp;PROBABLY&nbsp;don't&nbsp;need&nbsp;to&nbsp;change&nbsp;anything&nbsp;below&nbsp;here,&nbsp;but&nbsp;take<br/>#&nbsp;a&nbsp;quick&nbsp;glance&nbsp;just&nbsp;in&nbsp;case.<br/>#--------------------------------------------------------------------<br/><br/>#&nbsp;If&nbsp;wiki.py&nbsp;is&nbsp;in&nbsp;your&nbsp;wiki&nbsp;directory,&nbsp;you&nbsp;can&nbsp;leave&nbsp;WIKIPATH&nbsp;alone.<br/>#&nbsp;However,&nbsp;if&nbsp;your&nbsp;CGI&nbsp;scripts&nbsp;are&nbsp;in&nbsp;a&nbsp;seperate&nbsp;directory,&nbsp;you'll&nbsp;need<br/>#&nbsp;to&nbsp;set&nbsp;this&nbsp;to&nbsp;point&nbsp;to&nbsp;your&nbsp;wiki&nbsp;path.<br/>import&nbsp;os<br/>WIKIPATH&nbsp;=&nbsp;os.path.split(os.path.abspath(__file__))[0]<br/><br/>#&nbsp;Normally&nbsp;you&nbsp;can&nbsp;leave&nbsp;this&nbsp;set&nbsp;to&nbsp;None,&nbsp;but&nbsp;if&nbsp;needed,&nbsp;you&nbsp;set&nbsp;it&nbsp;like&nbsp;this:<br/>#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;My&nbsp;wiki&nbsp;URL&nbsp;=&nbsp;http://example.com/my/wiki/serve.py<br/>#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SCRIPT_NAME&nbsp;=&nbsp;'/my/wiki/serve.py'<br/>SCRIPT_NAME&nbsp;=&nbsp;None<br/><br/>#&nbsp;set&nbsp;True&nbsp;to&nbsp;use&nbsp;logging<br/>USE_LOGGING&nbsp;=&nbsp;False<br/><br/>#&nbsp;nothing&nbsp;else&nbsp;to&nbsp;configure&nbsp;--&nbsp;serve&nbsp;wiki<br/>import&nbsp;wikklytext.wiki.frontend.ws_cgi&nbsp;as&nbsp;ws_cgi<br/>ws_cgi.init(WIKIPATH,&nbsp;USE_LOGGING)<br/>ws_cgi.serve_wiki(WIKIPATH,&nbsp;SCRIPT_NAME)</div></div><br/><br/>Make the file executable: <div class="wikkly-code-block">chmod&nbsp;a+x&nbsp;/var/www/wikis/mywiki/wiki.py</div><br/><br/><h3 class="wikkly-h3">Configure Apache</h3><br/>Edit your Apache configuration  (i.e. <span class="wikkly-code-inline">httpd.conf</span>, <span class="wikkly-code-inline">.htaccess</span>, etc.) to enable the CGI script to run in the wiki directory: <div class="wikkly-code-block">&lt;Directory&nbsp;"/var/www/wikis/mywiki"&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;AllowOverride&nbsp;None<br/>&nbsp;&nbsp;&nbsp;&nbsp;Options&nbsp;+ExecCGI&nbsp;-MultiViews&nbsp;+SymLinksIfOwnerMatch<br/>&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;whatever&nbsp;extensions&nbsp;you&nbsp;want&nbsp;to&nbsp;use&nbsp;...<br/>&nbsp;&nbsp;&nbsp;&nbsp;AddHandler&nbsp;cgi-script&nbsp;.py<br/>&nbsp;&nbsp;&nbsp;&nbsp;Order&nbsp;allow,deny<br/>&nbsp;&nbsp;&nbsp;&nbsp;Allow&nbsp;from&nbsp;all<br/>&lt;/Directory&gt;</div> <div class="wikkly-block-indent"> <i class="">The procedure for using custom CGI scripts varies widely between webhosts. The above is just one example. Check with your provider for additional documentation if needed. If you have a better suggestion please post to the <a title="MailingList.html" class="wikkly-a-internal" href="MailingList.html" >MailingList</a>.</i> </div><br/><br/><h3 class="wikkly-h3">Ready to go!</h3><br/>You should now be able to browse to <span class="wikkly-code-inline">http://example.com/wikis/mywiki/serve.py</span> and see your wiki.<br/><br/>If you want to use a nicer URL scheme that hides the CGI script name, take a look at <a title="Apache+CGI+mod_rewrite.html" class="wikkly-a-internal" href="Apache+CGI+mod_rewrite.html" >Apache+CGI+mod_rewrite</a>.]]></description>
            <guid isPermaLink="false">034587ee76c0cdd930f49b7f15a2f3a02b16cae4</guid>
            <pubDate>Sun, 27 Sep 2009 01:44:00 +0000</pubDate>
        </item>
        <item>
            <title>Apache+CGI+mod_rewrite</title>
            <link>Apache+CGI+mod_rewrite.html</link>
            <description><![CDATA[<div class="wikkly-warnbox-container" ><div class="wikkly-warnbox-title" >Please read before continuing</div><div class="wikkly-warnbox-body" ><ul class="wikkly-ul"><li class="wikkly-ul-li1">These instructions are for WikklyText 1.9.x. If you are running an earlier version, see <a title="BehindApache.html" class="wikkly-a-internal" href="BehindApache.html" >BehindApache</a> instead. </li><li class="wikkly-ul-li1">If you are upgrading from WikklyText 1.6.x or earlier, you can delete the file <span class="wikkly-code-inline">wikboot.py</span> in your wiki folder. It is no longer used. </li></ul></div></div>  For this example, I'll assume you are using the following locations. Adjust as needed: <dl class="wikkly-dl"><dt class="wikkly-dt">Wiki filesystem location </dt><dd class="wikkly-dd"><span class="wikkly-code-inline">/var/www/wikis/mywiki</span> </dd><dt class="wikkly-dt">Public URL </dt><dd class="wikkly-dd"><span class="wikkly-code-inline">http://example.com/my/wiki</span><br/><br/></dd></dl>Notice two things here that are different from the <a title="Apache+CGI.html" class="wikkly-a-internal" href="Apache+CGI.html" >basic CGI setup</a>: <ul class="wikkly-ul"><li class="wikkly-ul-li1">The public URL has nothing to do with the filesystem path. </li><li class="wikkly-ul-li1">The actual CGI filename is hidden.<br/><br/></li></ul><h3 class="wikkly-h3">Basic CGI Setup</h3><br/>First of all, get a basic CGI setup working using <a title="Apache+CGI.html" class="wikkly-a-internal" href="Apache+CGI.html" >Apache+CGI</a>. We will build on top of that setup below.<br/><br/><h3 class="wikkly-h3">Add mod_rewrite</h3><br/>In your Apache configuration file, add a new section (leaving everything else as-is): <div class="wikkly-code-block">&lt;Location&nbsp;/my/wiki&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;redirect&nbsp;/my/wiki&nbsp;-&gt;&nbsp;/wikis/mywiki/wiki.py<br/>&nbsp;&nbsp;&nbsp;&nbsp;RewriteEngine&nbsp;on<br/>&nbsp;&nbsp;&nbsp;&nbsp;RewriteBase&nbsp;/my/wiki<br/>&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;don't&nbsp;change&nbsp;if&nbsp;already&nbsp;rewritten<br/>&nbsp;&nbsp;&nbsp;&nbsp;RewriteCond&nbsp;%{REQUEST_URI}&nbsp;!wiki.py<br/>&nbsp;&nbsp;&nbsp;&nbsp;RewriteRule&nbsp;/my/wiki/(.*)$&nbsp;/wikis/mywiki/wiki.py/$1<br/>&lt;/Location&gt;</div><br/><br/><h3 class="wikkly-h3">Modify CGI script</h3><br/>Change the <span class="wikkly-code-inline">SCRIPT_NAME</span> parameter in your CGI file:<br/><br/><div class="wikkly-codebox-container" ><div class="wikkly-codebox-title" >/var/www/wikis/mywiki/wiki.py</div><div class="wikkly-codebox-body" >SCRIPT_NAME&nbsp;=&nbsp;'/my/wiki'</div></div><br/><br/><h3 class="wikkly-h3">Ready to go!</h3><br/>You should be able to browse your wiki at <span class="wikkly-code-inline">http://example.com/my/wiki</span> ]]></description>
            <guid isPermaLink="false">fd2c5260d06dbe26b07391063a9dab0f5f89f7f9</guid>
            <pubDate>Sun, 27 Sep 2009 01:44:00 +0000</pubDate>
        </item>
        <item>
            <title>BehindApache</title>
            <link>BehindApache.html</link>
            <description><![CDATA[<div class="wikkly-warnbox-container" ><div class="wikkly-warnbox-title" >Check your version</div><div class="wikkly-warnbox-body" > These instructions are for WikklyText 1.6.0 and earlier. If you are running a later version, see <a title="ApacheIntegration.html" class="wikkly-a-internal" href="ApacheIntegration.html" >ApacheIntegration</a> instead. </div></div><br/><br/>First, ensure you have installed the <a title="InstallPythonPackage.html" class="wikkly-a-internal" href="InstallPythonPackage.html" >Python module</a>.  Running a WikklyText wiki behind Apache via <a title="Link to http://www.modpython.org" class="wikkly-a-www" href="http://www.modpython.org/" onclick="window.open(this.href);return false;">mod_python</a> is straightforward. Here is an example: <dl class="wikkly-dl"><dt class="wikkly-dt">Wiki location on filesystem: </dt><dd class="wikkly-dd"><span class="wikkly-code-inline">/MY/WIKI/PATH</span> </dd><dt class="wikkly-dt">Desired URL: </dt><dd class="wikkly-dd"><span class="wikkly-code-inline">/WIKI/PATH</span><br/><br/></dd></dl><ul class="wikkly-ul"><li class="wikkly-ul-li1">First, add a small bootstrap module to your wiki folder: <div class="wikkly-code-block">cd&nbsp;/MY/WIKI/PATH<br/>wik&nbsp;makeboot</div> </li><li class="wikkly-ul-li1">Point Apache to your wiki (i.e. inside a <span class="wikkly-tt">VirtualHost</span> container): <div class="wikkly-code-block">&lt;VirtualHost&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;...&nbsp;assuming&nbsp;this&nbsp;is&nbsp;the&nbsp;root&nbsp;section&nbsp;...<br/><br/>&nbsp;&nbsp;&lt;Location&nbsp;/WIKI/PATH&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;PythonPath&nbsp;"sys.path&nbsp;+&nbsp;[r'/MY/WIKI/PATH']"<br/>&nbsp;&nbsp;&nbsp;&nbsp;SetHandler&nbsp;python-program<br/>&nbsp;&nbsp;&nbsp;&nbsp;PythonHandler&nbsp;cherrypy._cpmodpy::handler<br/>&nbsp;&nbsp;&nbsp;&nbsp;PythonOption&nbsp;cherrypy.setup&nbsp;wikboot::start_modpython<br/>&nbsp;&nbsp;&nbsp;&nbsp;PythonDebug&nbsp;On<br/>&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;I&nbsp;recommend&nbsp;setting&nbsp;"MY_WIKI_NAME"&nbsp;in&nbsp;the&nbsp;next&nbsp;line<br/>&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;to&nbsp;give&nbsp;each&nbsp;wiki&nbsp;a&nbsp;unique&nbsp;name.<br/>&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;This&nbsp;avoids&nbsp;weird&nbsp;problems&nbsp;caused&nbsp;by&nbsp;mod_python&nbsp;caching.<br/>&nbsp;&nbsp;&nbsp;&nbsp;PythonInterpreter&nbsp;MY_WIKI_NAME<br/>&nbsp;&nbsp;&lt;/Location&gt;</div>  </li><li class="wikkly-ul-li1">Edit <span class="wikkly-code-inline">wikboot.py</span> (in your wiki folder) and set <span class="wikkly-code-inline">WEBPATH="/WIKI/PATH"</span>. </li><li class="wikkly-ul-li1">Restart Apache and your wiki should work. </li><li class="wikkly-ul-li1">For testing purposes, you can also run a standalone server: <div class="wikkly-code-block">cd&nbsp;/MY/WIKI/PATH<br/>python&nbsp;wikboot.py</div><br/><br/></li></ul><h3 class="wikkly-h3">Troubleshooting</h3><br/>Note that your wiki needs to be writeable by the userid that Apache runs under. The best method (assuming the Apache user is <span class="wikkly-code-inline">apache-user</span>) is: <div class="wikkly-code-block">chown&nbsp;-R&nbsp;apache-user&nbsp;/MY/WIKI/PATH</div><br/><br/>If that is not possible, then you'll have to make it world writeable: <div class="wikkly-code-block">chmod&nbsp;-R&nbsp;a+rw&nbsp;/MY/WIKI/PATH</div><br/><br/><div id="disqus_thread"></div><script type="text/javascript" src="http://disqus.com/forums/wikklytext/embed.js"></script><noscript><p><a href="http://wikklytext.disqus.com/?url=ref">View the forum thread.</a></p></noscript><p><a href="http://disqus.com" class="dsq-brlink">blog comments powered by <span class="logo-disqus">Disqus</span></a></p>]]></description>
            <guid isPermaLink="false">a3f1393c940773c095ebb33aa38ce2755988379b</guid>
            <pubDate>Sun, 27 Sep 2009 01:29:00 +0000</pubDate>
        </item>
        <item>
            <title>WritingPlugins</title>
            <link>WritingPlugins.html</link>
            <description><![CDATA[<div ><div class="pydocs-module-box" ><div class="pydocs-module-title" >Module wikklytext.plugins</div><div class="pydocs-module-doc pydocs-indent" > <h3 class="wikkly-h3">WikklyText Plugins</h3><br/>The Plugin API allows you to extend the functionality of WikklyText in several ways: <ul class="wikkly-ul"><li class="wikkly-ul-li1">You can add new macros than can be called from wikitexts as <span class="wikkly-code-inline">&lt;&lt;mymacro&nbsp;..&gt;&gt;</span> (<a title="#CREATE" class="wikkly-a-internal" href="#CREATE" >link</a>) </li><li class="wikkly-ul-li1">You can add functions that appear in the namespace of <span class="wikkly-code-inline">&lt;?py</span> code embedded in wikitexts. (<a title="#EMBED" class="wikkly-a-internal" href="#EMBED" >link</a>) </li><li class="wikkly-ul-li1">You can attach extra styling information (CSS) to the rendered document (<a title="#STYLE" class="wikkly-a-internal" href="#STYLE" >link</a>)<br/><br/></li></ul>Click a link for more, or read on for full details.<br/><br/><h3 class="wikkly-h3"><a name="CREATE" class="wikkly-a-internal"> </a>Creating new macros</h3><br/>Macros are ordinary Python functions with the following calling sequence: <div class="wikkly-code-block">def&nbsp;mymacro(context,&nbsp;...):<br/>&nbsp;&nbsp;&nbsp;&nbsp;...</div><br/><br/>Where <span class="wikkly-code-inline">context</span> is a <span class="wikkly-tt">WikContext</span> (<i class="">ref: <b class="">wikklytext.base</b></i>) and the remainder of the args are passed from the macro call. For example: <div class="wikkly-code-block">&lt;&lt;mymacro&nbsp;123&nbsp;456&nbsp;"abc"&gt;&gt;</div><br/><br/>Would call: <div class="wikkly-code-block">def&nbsp;mymacro(context,&nbsp;a,&nbsp;b,&nbsp;c):<br/>&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;a.text&nbsp;=&nbsp;"123"<br/>&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;b.text&nbsp;=&nbsp;"456"<br/>&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;c.text&nbsp;=&nbsp;"abc"</div><br/><br/>Note that each passed argument is an <a title="Link to http://effbot.org" class="wikkly-a-www" href="http://effbot.org/zone/pythondoc-elementtree-ElementTree.htm#elementtree.ElementTree._ElementInterface-class" onclick="window.open(this.href);return false;">Element</a> so you use <span class="wikkly-code-inline">.text</span> to get the text portion. (<i class="">More general macros might want to deal with arbitrary <a title="Link to http://effbot.org" class="wikkly-a-www" href="http://effbot.org/zone/pythondoc-elementtree-ElementTree.htm#elementtree.ElementTree.ElementTree-class" onclick="window.open(this.href);return false;">ElementTrees</a> as arguments, but text args are the simplest and most common.</i>)<br/><br/>Macros can return any of the following: <ul class="wikkly-ul"><li class="wikkly-ul-li1">An <a title="Link to http://effbot.org" class="wikkly-a-www" href="http://effbot.org/zone/pythondoc-elementtree-ElementTree.htm#elementtree.ElementTree._ElementInterface-class" onclick="window.open(this.href);return false;">Element</a> </li><li class="wikkly-ul-li1">A unicode string </li><li class="wikkly-ul-li1">A byte-string </li><li class="wikkly-ul-li1">A list/tuple of any of the above types.<br/><br/></li></ul>Here is what a typical plugin looks like. Let's assume: <ul class="wikkly-ul"><li class="wikkly-ul-li1">My plugin is named <b class="">myplugin</b>.  </li><li class="wikkly-ul-li1">I'm defining two macros that are safe for anyone to call named <b class="">happy</b> and <b class="">nice</b>.  </li><li class="wikkly-ul-li1">I'm defining two macros that only trusted users are allowed to call named <b class="">evil</b> and <b class="">bad</b>.<br/><br/></li></ul>My <span class="wikkly-code-inline">__init__.py</span> would look like this: 	<div class="wikkly-codebox-container" ><div class="wikkly-codebox-title" ><span class="wikkly-code-inline">plugins/myplugin/__init__.py</span></div><div class="wikkly-codebox-body" >__safe__&nbsp;=&nbsp;['happy',&nbsp;'nice']<br/>__unsafe&nbsp;=&nbsp;['evil',&nbsp;'bad']<br/><br/>def&nbsp;happy(context,&nbsp;...):<br/>&nbsp;&nbsp;&nbsp;&nbsp;...<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>def&nbsp;nice(context,&nbsp;...):<br/>&nbsp;&nbsp;&nbsp;&nbsp;...<br/><br/>..&nbsp;etc.&nbsp;..</div></div><br/><br/>(<i class="">In a real plugin, you'd probably split your code up into multiple files. The above example shows all code being placed in <span class="wikkly-code-inline">__init__.py</span> for simplicity.</i>)<br/><br/><h3 class="wikkly-h3"><a name="EMBED" class="wikkly-a-internal"> </a>Creating embedded functions</h3><br/>Embedded functions are ordinary Python functions that are available by default in the global namespace of embedded Python code (<span class="wikkly-code-inline">&lt;?py</span>). They <i class="">do not</i> get a <span class="wikkly-code-inline">context</span> arg, and are called like any other function (and may return any value).<br/><br/>To add functions to the embedded namespace, add their names to the <span class="wikkly-code-inline">__embed__</span> list at the top of your module (similar to <span class="wikkly-code-inline">__safe__</span> and <span class="wikkly-code-inline">__unsafe___</span> above).<br/><br/><h3 class="wikkly-h3"><a name="STYLE" class="wikkly-a-internal"> </a>Adding styling (CSS) information</h3><br/>You might find yourself defining new CSS classes as part of your macros. While it is certainly possible to tell your macro users to add your new styles to their wiki <b class="">StyleSheet</b>, it is much more convenient to provide the classes automatically.<br/><br/>To do this, simply define a module level variable <span class="wikkly-code-inline">__css__</span> that is a string with the styling information to be added to the document <b class="">&lt;HEAD&gt;</b>. For example:  <div class="wikkly-code-block">__css__&nbsp;=&nbsp;'''<br/>&nbsp;&nbsp;&nbsp;&nbsp;div.myclass1&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;color:&nbsp;red;<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;'''</div><br/><br/>The string will be added to a <b class="">&lt;style&gt;</b> tag when creating the HTML document.<br/><br/><h3 class="wikkly-h3">A simple example</h3><br/>Here is a simple complete example:<br/><br/><ol class="wikkly-ol"><li class="wikkly-ol-li1">First, create a folder <b class="">hello</b> under <b class="">plugins/</b> in your wiki folder. </li><li class="wikkly-ol-li1">Create a file <span class="wikkly-code-inline">plugins/hello/__init__.py</span> <div class="wikkly-code-block">'''<br/>This&nbsp;is&nbsp;just&nbsp;like&nbsp;any&nbsp;other&nbsp;Python&nbsp;package&nbsp;where&nbsp;you&nbsp;have&nbsp;__init__.py<br/>defining&nbsp;the&nbsp;interface.<br/><br/>__init__&nbsp;may&nbsp;define&nbsp;any/all/none&nbsp;of:&nbsp;__embed__,&nbsp;__safe__&nbsp;and&nbsp;__unsafe__.<br/>'''<br/>__embed__&nbsp;=&nbsp;['hello_embedded']<br/>__safe__&nbsp;=&nbsp;['hello_safe',&nbsp;'hello_box']<br/>__unsafe__&nbsp;=&nbsp;['hello_unsafe']<br/>__css__&nbsp;=&nbsp;'''<br/>&nbsp;&nbsp;&nbsp;&nbsp;div.hellobox&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;background:&nbsp;yellow;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;color:&nbsp;black;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;border:&nbsp;3px&nbsp;solid&nbsp;blue;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;padding-left:&nbsp;3em;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}'''<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>'''<br/>For&nbsp;real&nbsp;code&nbsp;you'd&nbsp;probably&nbsp;split&nbsp;these&nbsp;functions&nbsp;into&nbsp;their<br/>own&nbsp;files&nbsp;and&nbsp;just&nbsp;import&nbsp;them&nbsp;here.<br/>'''<br/>def&nbsp;hello_safe(context,&nbsp;msg):<br/>&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;"Hello&nbsp;safe,&nbsp;message=%s"&nbsp;%&nbsp;msg.text<br/><br/>def&nbsp;hello_unsafe(context,&nbsp;msg):<br/>&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;"Hello&nbsp;unsafe,&nbsp;message=%s"&nbsp;%&nbsp;msg.text<br/><br/>def&nbsp;hello_box(context,&nbsp;msg):<br/>&nbsp;&nbsp;&nbsp;&nbsp;"A&nbsp;slightly&nbsp;more&nbsp;complex&nbsp;example&nbsp;..."<br/>&nbsp;&nbsp;&nbsp;&nbsp;from&nbsp;wikklytext.plugapi&nbsp;import&nbsp;DIV,&nbsp;Text,&nbsp;eval_wiki_text<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;d&nbsp;=&nbsp;DIV('hellobox')<br/>&nbsp;&nbsp;&nbsp;&nbsp;d.append(eval_wiki_text(context,&nbsp;msg.text))<br/>&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;d<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>def&nbsp;hello_embedded(msg):<br/>&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;"Hello&nbsp;Embedded,&nbsp;message=%s"&nbsp;%&nbsp;msg.text</div> </li><li class="wikkly-ol-li1">Finally, create a new wiki item with this text: <div class="wikkly-code-block">&lt;?py<br/>def&nbsp;hello(context,&nbsp;msg):<br/>&nbsp;&nbsp;&nbsp;return&nbsp;hello_embedded(msg)&nbsp;#&nbsp;auto-added&nbsp;to&nbsp;embedded&nbsp;namespace<br/>?&gt;&nbsp;<br/><br/>/%&nbsp;Minimal&nbsp;example,&nbsp;showing&nbsp;how&nbsp;args&nbsp;are&nbsp;passed.&nbsp;%/<br/>!!!From&nbsp;''&lt;$py''<br/>&lt;&lt;hello&nbsp;"Embedded&nbsp;message!"&gt;&gt;<br/><br/>!!!From&nbsp;''&lt;nowiki&gt;&lt;&lt;hello_safe&gt;&gt;&lt;/nowiki&gt;''<br/>&lt;&lt;hello_safe&nbsp;"Safe&nbsp;message!"&gt;&gt;<br/><br/>!!!From&nbsp;''&lt;nowiki&gt;&lt;&lt;hello_unsafe&gt;&gt;&lt;/nowiki&gt;''<br/>&lt;&lt;hello_unsafe&nbsp;"Unsafe&nbsp;message!"&gt;&gt;<br/><br/>!!!From&nbsp;''&lt;nowiki&gt;&lt;&lt;hello_box&gt;&gt;&lt;/nowiki&gt;''<br/><br/>&lt;&lt;hello_box&nbsp;'''This&nbsp;text&nbsp;should&nbsp;be&nbsp;inside&nbsp;a&nbsp;yellow&nbsp;box.&nbsp;<br/>This&nbsp;macro&nbsp;uses&nbsp;a&nbsp;custom&nbsp;CSS&nbsp;class.&nbsp;All<br/>__wikitext__&nbsp;//styling//&nbsp;@@markup@@&nbsp;works<br/>here&nbsp;as&nbsp;well.'''&gt;&gt;</div><br/><br/></li></ol>Save the item and you should see that it works.</div><div class="pydocs-classes-outer" ><div class="pydocs-classes-outer-text" >Classes</div><div class="pydocs-indent" ><div class="pydocs-class-box" ><div class="pydocs-class-title" ><a name="CLASS_WikPlugins" class="wikkly-a-internal"> </a>WikPlugins(object)</div><div class="pydocs-class-doc pydocs-indent" >Returned from <a title="#FUNC_load_plugins" class="wikkly-a-internal" href="#FUNC_load_plugins" >load_plugins()</a>. All currently loaded plugins.<br/><br/><i class="">Attributes:</i> <dl class="wikkly-dl"><dt class="wikkly-dt">safe,unsafe </dt><dd class="wikkly-dd">Dicts of <b class="">{name: func}</b> where name can be used as <span class="wikkly-code-inline">&lt;&lt;name&nbsp;...&gt;&gt;</span>. 			 Mapped from <span class="wikkly-code-inline">__safe__</span> and <span class="wikkly-code-inline">__unsafe__</span> attrs defined in modules. </dd><dt class="wikkly-dt">embed </dt><dd class="wikkly-dd">Dict of <b class="">{name: func}</b> where name will be inserted into the embedded 			 namespace for <span class="wikkly-code-inline">&lt;?py</span> code in wikitexts. Loaded from <span class="wikkly-code-inline">__embed__</span> attr defined 			 in module. </dd><dt class="wikkly-dt">css </dt><dd class="wikkly-dd">CSS styles to be added to <b class="">&lt;HEAD&gt;</b> (text). </dd><dt class="wikkly-dt">wsgi_apps </dt><dd class="wikkly-dd">Dict of WSGI applications defined by plugins, as: <span class="wikkly-code-inline">URL:&nbsp;handler</span>. 			Each URL is of form <span class="wikkly-code-inline">/api/plugins/NAME/SUBURL</span> where NAME is the name 			of the plugin and SUBURL is the URL path the plugin defined. </dd><dt class="wikkly-dt">wsgi_macros </dt><dd class="wikkly-dd">Like safe and unsafe, a map of {name: func}. wsgi_macros are just like 			safe &amp; unsafe macros, except that they receive a WSGI-like environment instead of a 			WikContext as their first argument. </dd><dt class="wikkly-dt">modules </dt><dd class="wikkly-dd">List of (name, module) for all loaded plugins. (This is for information purposes; all 			functional data has been pulled out and organized in the other attributes here.) </dd></dl></div><div class="pydocs-methods-outer" ><div class="pydocs-indent" ></div></div></div></div></div><div class="pydocs-funcs-outer" ><div class="pydocs-funcs-outer-text" >Functions</div><div class="pydocs-indent" ><div class="pydocs-func-box" ><a name="FUNC_load_plugins" class="wikkly-a-internal"> </a><div class="pydocs-func-title" ><a name="FUNC_load_plugins" class="wikkly-a-internal"> </a>load_plugins(plugdirs=None, namespace='plugins')</div><div class="pydocs-func-doc pydocs-indent" >A little wrapper around real_load_plugins() that catches import errors &mdash; namely errors due to being unable to import 'imp'. Was initially created to workaround the lack of the imp module under GoogleAppEngine.<br/><br/>XXX TODO - make loading of plugins work under GAE, etc., instead of just returning an empty set of plugins. </div></div></div></div></div></div><div id="disqus_thread"></div><script type="text/javascript" src="http://disqus.com/forums/wikklytext/embed.js"></script><noscript><p><a href="http://wikklytext.disqus.com/?url=ref">View the forum thread.</a></p></noscript><p><a href="http://disqus.com" class="dsq-brlink">blog comments powered by <span class="logo-disqus">Disqus</span></a></p><br/><br/>]]></description>
            <guid isPermaLink="false">3fc33060fda39ad54cfafae897a2331ef4cad250</guid>
            <pubDate>Mon, 17 Aug 2009 11:51:00 +0000</pubDate>
        </item>
        <item>
            <title>DrupalPlugIn</title>
            <link>DrupalPlugIn.html</link>
            <description><![CDATA[     <b class="">Requires:</b> <ul class="wikkly-ul"><li class="wikkly-ul-li1"><a title="Link to http://drupal.org" class="wikkly-a-www" href="http://drupal.org/" onclick="window.open(this.href);return false;">Drupal</a> (<i class="">5.x or 6.x</i>) </li><li class="wikkly-ul-li1"><a title="Link to http://www.php.net" class="wikkly-a-www" href="http://www.php.net/" onclick="window.open(this.href);return false;">PHP</a> (<i class="">4.x or 5.x</i>)<br/><br/></li></ul>First, ensure you have installed the <a title="InstallPythonPackage.html" class="wikkly-a-internal" href="InstallPythonPackage.html" >Python module</a>.<br/><br/>You install <b class="">WikklyText</b> just like any other Drupal module: <ol class="wikkly-ol"><li class="wikkly-ol-li1">Download sources  <table class="wikkly-table"><tr class="wikkly-tr"><th class="wikkly-th" colspan="1" rowspan="1" style="text-align: center;"> Drupal 5 </th><td class="wikkly-td" colspan="1" rowspan="1" style="text-align: center;"> <a title="Link to http://wikklytext.com" class="wikkly-a-www" href="http://wikklytext.com/wiki/files/download/drupal5-WikklyText-1.6.0.zip" onclick="window.open(this.href);return false;">drupal5-WikklyText-1.6.0.zip</a> </td></tr><tr class="wikkly-tr"><th class="wikkly-th" colspan="1" rowspan="1" style="text-align: center;"> Drupal 6 </th><td class="wikkly-td" colspan="1" rowspan="1" style="text-align: center;"> <a title="Link to http://wikklytext.com" class="wikkly-a-www" href="http://wikklytext.com/wiki/files/download/drupal6-WikklyText-1.6.0.zip" onclick="window.open(this.href);return false;">drupal6-WikklyText-1.6.0.zip</a> </td></tr></table> </li><li class="wikkly-ol-li1">Unpack the <b class="">WikklyText</b> package under either <span class="wikkly-code-inline">modules/</span> or <span class="wikkly-code-inline">sites/all/modules</span> (you should end up with a directory <span class="wikkly-code-inline">modules/wikkly_fmt</span>, or <span class="wikkly-code-inline">sites/all/modules/wikkly_fmt</span>). </li><li class="wikkly-ol-li1">Go to <b class="">Admin</b>|<b class="">Site Building</b>|<b class="">Modules</b> and enable the <b class="">WikklyFormat</b> module. </li><li class="wikkly-ol-li1">Go to <b class="">Admin</b>|<b class="">Site Configuration</b>|<b class="">Input Formats</b> <ol class="wikkly-ol"><li class="wikkly-ol-li2">Click <b class="">Add Input Format</b> </li><li class="wikkly-ol-li2">Select <b class="">WikklyText, Full Mode</b> or <b class="">WikklyText, Restricted Mode</b> (<i class="">but not both at the same time</i>). </li><li class="wikkly-ol-li2">Name the format something like <b class="">WikklyText, Full</b> or <b class="">WikklyText, Restricted</b> (as a reminder to yourself). </li><li class="wikkly-ol-li2">Select which <b class="">Roles</b> may use it <div class="wikkly-warnbox-container" ><div class="wikkly-warnbox-title" >CAUTION</div><div class="wikkly-warnbox-body" > <b class="">Full Mode</b> is for <i class="">trusted users only</i>. <b class="">Full Mode</b> allows the user to execute arbitrary code (by design), and should only be given to people you would trust to access the <b class="">PHP code</b> input format (for example).<br/><br/><b class="">Restricted Mode</b> is for all other users. It can do 95% of what you would normally want to do anyways, without allowing arbitrary code execution or calling unsafe macros.<br/><br/><i class=""><b class="">WARNING</b>: As of this writing, <b class="">Restricted Mode</b> has had very limited testing "in the wild". Is is believed to be safe, but to be cautious, you might not want to allow untrusted users to access  even <b class="">Restricted Mode</b> until it has been more widely tested.</i>  </div></div> </li><li class="wikkly-ol-li2">There is no need to add additional filters to the input chain when using a <b class="">Wikkly</b> format. Adding filters in <b class="">Full Mode</b> will remove necessary document structure. You can add filters in <b class="">Restricted Mode</b> if you prefer, but WikklyText is designed to be safe on its own. </li></ol></li><li class="wikkly-ol-li1">When creating content, select the desired <b class="">WikklyText</b> filter under <b class="">Input Format</b> as shown below: <br/><br/><img class="wikkly-img" src="cap_selfmt.png" alt="cap_selfmt.png" /><br/><br/><div id="disqus_thread"></div><script type="text/javascript" src="http://disqus.com/forums/wikklytext/embed.js"></script><noscript><p><a href="http://wikklytext.disqus.com/?url=ref">View the forum thread.</a></p></noscript><p><a href="http://disqus.com" class="dsq-brlink">blog comments powered by <span class="logo-disqus">Disqus</span></a></p></li></ol>]]></description>
            <guid isPermaLink="false">312264b8b6f7bcc65842e111f084b8cc898a17fa</guid>
            <pubDate>Sun, 16 Aug 2009 23:55:00 +0000</pubDate>
        </item>
        <item>
            <title>InstallPythonPackage</title>
            <link>InstallPythonPackage.html</link>
            <description><![CDATA[  If you already have <a title="Link to http://cheeseshop.python.org" class="wikkly-a-www" href="http://cheeseshop.python.org/pypi/setuptools/" onclick="window.open(this.href);return false;">setuptools</a> installed, then simply run: <div class="wikkly-code-block">easy_install&nbsp;-U&nbsp;wikklytext</div><br/><br/>Else, download the sources: <table class="wikkly-table"><tr class="wikkly-tr"><th class="wikkly-th" colspan="1" rowspan="1" style="text-align: center;"> Source (.tar.gz) </th><td class="wikkly-td" colspan="1" rowspan="1" style="text-align: center;"> <a title="Link to http://wikklytext.googlecode.com" class="wikkly-a-www" href="http://wikklytext.googlecode.com/files/WikklyText-1.6.0.tar.gz" onclick="window.open(this.href);return false;">WikklyText-1.6.0.tar.gz</a> </td></tr><tr class="wikkly-tr"><th class="wikkly-th" colspan="1" rowspan="1" style="text-align: center;"> Source (.zip) </th><td class="wikkly-td" colspan="1" rowspan="1" style="text-align: center;"> <a title="Link to http://wikklytext.googlecode.com" class="wikkly-a-www" href="http://wikklytext.googlecode.com/files/WikklyText-1.6.0.zip" onclick="window.open(this.href);return false;">WikklyText-1.6.0.zip</a> </td></tr></table>Unpack, chdir to unpacked directory and ... <div class="wikkly-code-block">python&nbsp;setup.py&nbsp;install</div> <br/>Any missing <a title="Requirements.html" class="wikkly-a-internal" href="Requirements.html" >dependencies</a> will be automatically downloaded and installed.<br/><br/>Ensure that Python's <span class="wikkly-code-inline">Scripts</span> directory is in your <span class="wikkly-tt">PATH</span> if you want to use the command-line utilities. (For example, if Python is installed to <span class="wikkly-code-inline">c:\Python25</span> you would add <span class="wikkly-code-inline">c:\Python25\Scripts</span> to your <span class="wikkly-tt">PATH</span>.)<br/><br/><hr class="wikkly-separator"/>Previous version: <table class="wikkly-table"><tr class="wikkly-tr"><th class="wikkly-th" colspan="1" rowspan="1" style="text-align: center;"> Source (.tar.gz) </th><td class="wikkly-td" colspan="1" rowspan="1" style="text-align: center;"> <a title="Link to http://wikklytext.googlecode.com" class="wikkly-a-www" href="http://wikklytext.googlecode.com/files/WikklyText-1.5.0.tar.gz" onclick="window.open(this.href);return false;">WikklyText-1.5.0.tar.gz</a> </td></tr><tr class="wikkly-tr"><th class="wikkly-th" colspan="1" rowspan="1" style="text-align: center;"> Source (.zip) </th><td class="wikkly-td" colspan="1" rowspan="1" style="text-align: center;"> <a title="Link to http://wikklytext.googlecode.com" class="wikkly-a-www" href="http://wikklytext.googlecode.com/files/WikklyText-1.5.0.zip" onclick="window.open(this.href);return false;">WikklyText-1.5.0.zip</a> </td></tr></table><div id="disqus_thread"></div><script type="text/javascript" src="http://disqus.com/forums/wikklytext/embed.js"></script><noscript><p><a href="http://wikklytext.disqus.com/?url=ref">View the forum thread.</a></p></noscript><p><a href="http://disqus.com" class="dsq-brlink">blog comments powered by <span class="logo-disqus">Disqus</span></a></p>]]></description>
            <guid isPermaLink="false">cc66c58a36ab67900bde44dc052fd709ff0730a0</guid>
            <pubDate>Sun, 16 Aug 2009 23:54:00 +0000</pubDate>
        </item>
        <item>
            <title>GettingPlugins</title>
            <link>GettingPlugins.html</link>
            <description><![CDATA[This is a small but growing collection of plugins for WikklyText.<br/><br/>If you write a plugin and would like it listed here, send a note to the <a title="MailingList.html" class="wikkly-a-internal" href="MailingList.html" >MailingList</a>.<br/><br/><h3 class="wikkly-h3">Installing Plugins</h3><br/>Plugins are packaged as regular ZIP files. To use a plugin, simply unzip it under the <span class="wikkly-code-inline">plugins</span> directory in your wiki. So for example, if your wiki lives in <span class="wikkly-code-inline">/MY/WIKI</span>, then unpacking a plugin <b class="">foo</b> would leave you with a new folder <span class="wikkly-code-inline">/MY/WIKI/plugins/foo</span>. You should be able to use the plugin immediately after unpacking it.<br/><br/><h3 class="wikkly-h3">hello</h3><br/>The traditional "Hello World!" plugin. This is a minimal sample plugin meant to demonstrate the WikklyText plugin API. If you want to write your own plugins, this is a good place to start. Of course, you'll also want to read the documentation on <a title="WritingPlugins.html" class="wikkly-a-internal" href="WritingPlugins.html" >WritingPlugins</a>.<br/><br/><table class="wikkly-table"><tr class="wikkly-tr"><th class="wikkly-th" colspan="1" rowspan="1" style="text-align: center;">Download</th><td class="wikkly-td" colspan="1" rowspan="1" style="text-align: left;"><a title="Link to http://wikklytext.com" class="wikkly-a-www" href="http://wikklytext.com/wiki/files/download/plugins/hello-1.0.zip" onclick="window.open(this.href);return false;">hello (1.0)</a></td></tr></table>Once unpacked, see the <b class="">README</b> file for usage notes. ]]></description>
            <guid isPermaLink="false">7133c78e6e26128fa8f34319201c0a45b54448f3</guid>
            <pubDate>Thu, 02 Oct 2008 01:11:00 +0000</pubDate>
        </item>
        <item>
            <title>BrowserIssues</title>
            <link>BrowserIssues.html</link>
            <description><![CDATA[WikklyText is intended to be browser neutral, but any browser issues will be listed here.<br/><br/>As of this writing, WikklyText is actively tested against these browsers (listed roughly in order of frequency of testing): <table class="wikkly-table"><tr class="wikkly-tr"><th class="wikkly-th" colspan="1" rowspan="1" style="text-align: center;">Browser</th><th class="wikkly-th" colspan="1" rowspan="1" style="text-align: center;">Version</th><th class="wikkly-th" colspan="1" rowspan="1" style="text-align: center;">Platform</th></tr><tr class="wikkly-tr"><td class="wikkly-td" colspan="1" rowspan="1" style="text-align: left;"><a title="Link to http://www.mozilla.com" class="wikkly-a-www" href="http://www.mozilla.com/firefox/" onclick="window.open(this.href);return false;">Firefox</a> </td><td class="wikkly-td" colspan="1" rowspan="1" style="text-align: center;"> 3.0.3 </td><td class="wikkly-td" colspan="1" rowspan="1" style="text-align: center;"> Windows </td></tr><tr class="wikkly-tr"><td class="wikkly-td" colspan="1" rowspan="1" style="text-align: left;"><a title="Link to http://www.microsoft.com" class="wikkly-a-www" href="http://www.microsoft.com/windows/products/winfamily/ie/default.mspx" onclick="window.open(this.href);return false;">Internet Explorer</a>  </td><td class="wikkly-td" colspan="1" rowspan="1" style="text-align: center;"> 7.0 </td><td class="wikkly-td" colspan="1" rowspan="1" style="text-align: center;"> Windows </td></tr><tr class="wikkly-tr"><td class="wikkly-td" colspan="1" rowspan="1" style="text-align: left;"><a title="Link to http://www.opera.com" class="wikkly-a-www" href="http://www.opera.com" onclick="window.open(this.href);return false;">Opera</a> </td><td class="wikkly-td" colspan="1" rowspan="1" style="text-align: center;"> 9.52 </td><td class="wikkly-td" colspan="1" rowspan="1" style="text-align: center;"> Windows </td></tr><tr class="wikkly-tr"><td class="wikkly-td" colspan="1" rowspan="1" style="text-align: left;"><a title="Link to http://www.apple.com" class="wikkly-a-www" href="http://www.apple.com/safari/" onclick="window.open(this.href);return false;">Safari</a> </td><td class="wikkly-td" colspan="1" rowspan="1" style="text-align: center;"> 3.1.2 </td><td class="wikkly-td" colspan="1" rowspan="1" style="text-align: center;"> Windows </td></tr><tr class="wikkly-tr"><td class="wikkly-td" colspan="1" rowspan="1" style="text-align: left;"><a title="Link to http://www.google.com" class="wikkly-a-www" href="http://www.google.com/chrome" onclick="window.open(this.href);return false;">Chrome</a> </td><td class="wikkly-td" colspan="1" rowspan="1" style="text-align: center;"> 0.2.149.30 </td><td class="wikkly-td" colspan="1" rowspan="1" style="text-align: center;"> Windows </td></tr><tr class="wikkly-tr"><td class="wikkly-td" colspan="1" rowspan="1" style="text-align: left;"><a title="Link to http://w3m.sourceforge.net" class="wikkly-a-www" href="http://w3m.sourceforge.net/" onclick="window.open(this.href);return false;">w3m</a> </td><td class="wikkly-td" colspan="1" rowspan="1" style="text-align: center;"> 0.5.1 </td><td class="wikkly-td" colspan="1" rowspan="1" style="text-align: center;"> Windows/Cygwin </td></tr><tr class="wikkly-tr"><td class="wikkly-td" colspan="1" rowspan="1" style="text-align: left;"><a title="Link to http://lynx.isc.org" class="wikkly-a-www" href="http://lynx.isc.org/" onclick="window.open(this.href);return false;">lynx</a> </td><td class="wikkly-td" colspan="1" rowspan="1" style="text-align: center;"> 2.8.6 </td><td class="wikkly-td" colspan="1" rowspan="1" style="text-align: center;"> Windows/Cygwin </td></tr><tr class="wikkly-tr"><td class="wikkly-td" colspan="1" rowspan="1" style="text-align: left;"><a title="Link to http://links.sourceforge.net" class="wikkly-a-www" href="http://links.sourceforge.net/" onclick="window.open(this.href);return false;">links</a> </td><td class="wikkly-td" colspan="1" rowspan="1" style="text-align: center;"> 1.0.0pre20 </td><td class="wikkly-td" colspan="1" rowspan="1" style="text-align: center;"> Windows/Cygwin </td></tr></table><div id="disqus_thread"></div><script type="text/javascript" src="http://disqus.com/forums/wikklytext/embed.js"></script><noscript><p><a href="http://wikklytext.disqus.com/?url=ref">View the forum thread.</a></p></noscript><p><a href="http://disqus.com" class="dsq-brlink">blog comments powered by <span class="logo-disqus">Disqus</span></a></p>]]></description>
            <guid isPermaLink="false">9bf46c3a9b04c85dbeee48664a2dea614a212d63</guid>
            <pubDate>Mon, 29 Sep 2008 02:16:00 +0000</pubDate>
        </item>
        <item>
            <title>ConversionDemo</title>
            <link>ConversionDemo.html</link>
            <description><![CDATA[Here is a sample wiki that you can view either as a TiddlyWiki, or as a WikklyText wiki: <ul class="wikkly-ul"><li class="wikkly-ul-li1"><a title="Link to http://wikklytext.com" class="wikkly-a-www" href="http://wikklytext.com/pages/ConversionDemo" onclick="window.open(this.href);return false;">RandomPedia</a><br/><br/><div id="disqus_thread"></div><script type="text/javascript" src="http://disqus.com/forums/wikklytext/embed.js"></script><noscript><p><a href="http://wikklytext.disqus.com/?url=ref">View the forum thread.</a></p></noscript><p><a href="http://disqus.com" class="dsq-brlink">blog comments powered by <span class="logo-disqus">Disqus</span></a></p></li></ul>]]></description>
            <guid isPermaLink="false">743079db11b61283c00e3dfc50ce6d56bff4c6e9</guid>
            <pubDate>Sun, 14 Sep 2008 12:53:00 +0000</pubDate>
        </item>
        <item>
            <title>Requirements</title>
            <link>Requirements.html</link>
            <description><![CDATA[<b class="">Core:</b> <ul class="wikkly-ul"><li class="wikkly-ul-li1"><a title="Link to http://www.python.org" class="wikkly-a-www" href="http://www.python.org" onclick="window.open(this.href);return false;">Python 2.3+</a> <div class="wikkly-notebox" >The following dependencies will be automatically downloaded when you  install WikklyText. They are listed here for reference.</div></li></ul> <ul class="wikkly-ul"><li class="wikkly-ul-li1"><a title="Link to http://effbot.org" class="wikkly-a-www" href="http://effbot.org/zone/element-index.htm" onclick="window.open(this.href);return false;">ElementTree module</a> <br/> <span class="wikkly-grayout">(Not needed for Python 2.5+)</span> </li><li class="wikkly-ul-li1"><a title="Link to http://www.dabeaz.com" class="wikkly-a-www" href="http://www.dabeaz.com/ply/" onclick="window.open(this.href);return false;">PLY module 2.2+</a> </li><li class="wikkly-ul-li1"><a title="Link to http://boodebr.org" class="wikkly-a-www" href="http://boodebr.org/pages/boodebr/" onclick="window.open(this.href);return false;">boodebr library</a> </li><li class="wikkly-ul-li1"><a title="Link to http://www.cherrypy.org" class="wikkly-a-www" href="http://www.cherrypy.org/" onclick="window.open(this.href);return false;">CherryPy</a><br/><i class="">Version <b class="">3.0</b> or <b class="">3.1</b> will work.</i> </li><li class="wikkly-ul-li1"><i class="">OPTIONAL</i> <a title="Link to http://cheeseshop.python.org" class="wikkly-a-www" href="http://cheeseshop.python.org/pypi/pysqlite" onclick="window.open(this.href);return false;">pysqlite</a><br/> <span class="wikkly-grayout">(Not needed for Python 2.5+)</span><br/><br/></li></ul><b class="">To use GUI:</b> <ul class="wikkly-ul"><li class="wikkly-ul-li1"><a title="Link to http://wxpython.org" class="wikkly-a-www" href="http://wxpython.org" onclick="window.open(this.href);return false;">wxPython</a><br/><i class="">Unfortunately not available as an automatic download from the <a title="Link to http://pypi.python.org" class="wikkly-a-www" href="http://pypi.python.org/pypi" onclick="window.open(this.href);return false;">Python Package Index</a></i><br/><br/></li></ul><b class="">To use with Drupal:</b> <ul class="wikkly-ul"><li class="wikkly-ul-li1"><a title="Link to http://drupal.org" class="wikkly-a-www" href="http://drupal.org/" onclick="window.open(this.href);return false;">Drupal 5.x</a> </li><li class="wikkly-ul-li1"><a title="Link to http://www.php.net" class="wikkly-a-www" href="http://www.php.net/" onclick="window.open(this.href);return false;">PHP 4+</a><br/><br/><br/></li></ul><b class="">To use <a title="BehindApache.html" class="wikkly-a-internal" href="BehindApache.html" >BehindApache</a>:</b> <ul class="wikkly-ul"><li class="wikkly-ul-li1"><a title="Link to http://www.modpython.org" class="wikkly-a-www" href="http://www.modpython.org/" onclick="window.open(this.href);return false;">mod_python</a><br/><br/><div id="disqus_thread"></div><script type="text/javascript" src="http://disqus.com/forums/wikklytext/embed.js"></script><noscript><p><a href="http://wikklytext.disqus.com/?url=ref">View the forum thread.</a></p></noscript><p><a href="http://disqus.com" class="dsq-brlink">blog comments powered by <span class="logo-disqus">Disqus</span></a></p></li></ul> ]]></description>
            <guid isPermaLink="false">a842fb3fa3284f5e2fba17fc15f0131378fe708c</guid>
            <pubDate>Tue, 12 Aug 2008 04:12:00 +0000</pubDate>
        </item>
        <item>
            <title>WhichFormat?</title>
            <link>WhichFormat_.html</link>
            <description><![CDATA[You have several choices for backend storage of your wiki content: <ul class="wikkly-ul"><li class="wikkly-ul-li1">A flat set of text files </li><li class="wikkly-ul-li1">A TiddlyWiki </li><li class="wikkly-ul-li1">An SQLite database<br/><br/></li></ul>What are the pros and cons of each? <dl class="wikkly-dl"><dt class="wikkly-dt">Flat text files </dt><dd class="wikkly-dd">In this case, each wiki entry is stored in its own text (<span class="wikkly-tt">.txt</span>) file. This makes it very easy to edit your wiki with a plain text editor as well as through the WikklyText wiki interface. In terms of speed, this falls between the SQLite and TiddlyWiki format. </dd><dt class="wikkly-dt">TiddlyWiki </dt><dd class="wikkly-dd">By storing your content in a TiddlyWiki, your wiki content becomes a self-contained wiki that you can open &amp; edit it directly in your browser just as with any TiddlyWiki. The downside is that this is the slowest format. </dd><dt class="wikkly-dt">SQLite </dt><dd class="wikkly-dd">This is the fastest storage format. The downside is that it is only editable through a WikklyText server.<br/><br/></dd></dl>Don't worry too much about choosing the "right" format. You can always change to another format later via the <span class="wikkly-code-inline">wik&nbsp;conv</span> command.<br/><br/><b class="">Summary table</b> <table class="wikkly-table"><tr class="wikkly-tr"><th class="wikkly-th" colspan="1" rowspan="1" style="text-align: center;">Format</th><th class="wikkly-th" colspan="1" rowspan="1" style="text-align: center;">Speed</th><th class="wikkly-th" colspan="1" rowspan="1" style="text-align: center;">Self-contained wiki?</th><th class="wikkly-th" colspan="1" rowspan="1" style="text-align: center;">Supported markup<br/>styles<sup class="">1</sup></th></tr><tr class="wikkly-tr"><th class="wikkly-th" colspan="1" rowspan="1" style="text-align: center;">TiddlyWiki</th><td class="wikkly-td" colspan="1" rowspan="1" style="text-align: center;"> Slowest </td><td class="wikkly-td" colspan="1" rowspan="1" style="text-align: center;"> Yes </td><td class="wikkly-td" colspan="1" rowspan="1" style="text-align: center;"> TiddlyWiki </td></tr><tr class="wikkly-tr"><th class="wikkly-th" colspan="1" rowspan="1" style="text-align: center;">Text files</th><td class="wikkly-td" colspan="1" rowspan="1" style="text-align: center;"> Medium </td><td class="wikkly-td" colspan="1" rowspan="1" style="text-align: center;"> No </td><td class="wikkly-td" colspan="1" rowspan="1" style="text-align: center;"> TiddlyWiki<br/>WikklyText </td></tr><tr class="wikkly-tr"><th class="wikkly-th" colspan="1" rowspan="1" style="text-align: center;">SQLite</th><td class="wikkly-td" colspan="1" rowspan="1" style="text-align: center;"> Fastest </td><td class="wikkly-td" colspan="1" rowspan="1" style="text-align: center;"> No </td><td class="wikkly-td" colspan="1" rowspan="1" style="text-align: center;"> TiddlyWiki<br/>WikklyText </td></tr></table>Footnotes: <ol class="wikkly-ol"><li class="wikkly-ol-li1">If you want to ensure no formatting changes occur when moving content between the different formats, choose the "TiddlyWiki" markup style when creating content.<br/><br/><div id="disqus_thread"></div><script type="text/javascript" src="http://disqus.com/forums/wikklytext/embed.js"></script><noscript><p><a href="http://wikklytext.disqus.com/?url=ref">View the forum thread.</a></p></noscript><p><a href="http://disqus.com" class="dsq-brlink">blog comments powered by <span class="logo-disqus">Disqus</span></a></p></li></ol>]]></description>
            <guid isPermaLink="false">f0b5463458a3e63ef5f992ca3952022e11e10de8</guid>
            <pubDate>Tue, 12 Aug 2008 04:11:00 +0000</pubDate>
        </item>
        <item>
            <title>MailingList</title>
            <link>MailingList.html</link>
            <description><![CDATA[There is a mailing list for WikklyText users and developers. Please post support questions there so everyone may benefit from the answers. Security-related announcements will be posted there as well, so if you are running a public WikklyText site, you may want to subscribe to the list.<br/><br/>The list is hosted at Google Groups: <a title="Link to http://groups.google.com" class="wikkly-a-www" href="http://groups.google.com/group/wikklytext" onclick="window.open(this.href);return false;">WikklyText Mailing list</a><br/><br/>You can also post comments on many pages here (for longer questions/issues, though, please use the mailing lists).<br/><br/><br/>]]></description>
            <guid isPermaLink="false">9fcbfc4e4a622c25291f35fc8d2c73d2813ad326</guid>
            <pubDate>Tue, 12 Aug 2008 04:09:00 +0000</pubDate>
        </item>
        <item>
            <title>WikExeWin32</title>
            <link>WikExeWin32.html</link>
            <description><![CDATA[Standalone executables are available for Windows. They do not require Python. You only need one of these, although you might want to download both, see notes below.  <table class="wikkly-table"><tr class="wikkly-tr"><th class="wikkly-th" colspan="1" rowspan="1" style="text-align: center;">Description</th><th class="wikkly-th" colspan="1" rowspan="1" style="text-align: center;">File</th></tr><tr class="wikkly-tr"><td class="wikkly-td" colspan="1" rowspan="1" style="text-align: left;">Command-line</td><td class="wikkly-td" colspan="1" rowspan="1" style="text-align: left;"><a title="Link to http://wikklytext.com" class="wikkly-a-www" href="http://wikklytext.com/wiki/files/download/wik.exe" onclick="window.open(this.href);return false;">wik.exe (for win32)</a></td></tr><tr class="wikkly-tr"><td class="wikkly-td" colspan="1" rowspan="1" style="text-align: left;">GUI</td><td class="wikkly-td" colspan="1" rowspan="1" style="text-align: left;"><a title="Link to http://wikklytext.com" class="wikkly-a-www" href="http://wikklytext.com/wiki/files/download/wikgui.exe" onclick="window.open(this.href);return false;">wikgui.exe (for win32)</a></td></tr></table>Which one do you want? <ul class="wikkly-ul"><li class="wikkly-ul-li1">These programs are virtually identical. The only difference is that <span class="wikkly-tt">wikgui.exe</span> does not pop up a command shell when you run it, so is better for pure GUI usage. </li><li class="wikkly-ul-li1">You might like having both: <span class="wikkly-tt">wikgui</span> for point-and-click usage, and  <span class="wikkly-tt">wik</span> for doing admin tasks.<br/><br/><div class="wikkly-notebox" >If you've downloaded these before you may need to clear your browser cache to ensure you get the updated version(s).</div></li></ul>  No installation is required, just place <span class="wikkly-tt">wik.exe</span> and/or <span class="wikkly-tt">wikgui.exe</span> anywhere convenient (for command-line usage, you might want to place them in your <span class="wikkly-tt">PATH</span>).<br/><br/>Now you are ready to start <a title="UsingWik.html" class="wikkly-a-internal" href="UsingWik.html" >UsingWik</a> or create a <a title="WikiOnAStick.html" class="wikkly-a-internal" href="WikiOnAStick.html" >WikiOnAStick</a>.<br/><br/><h3 class="wikkly-h3">Issues?</h3><br/>If you have problems ... <ul class="wikkly-ul"><li class="wikkly-ul-li1">Make sure you did <b class="">not</b> rename the executables. Save them exactly as <span class="wikkly-tt">wik.exe</span> or <span class="wikkly-tt">wikgui.exe</span>. Due to <a title="Link to http://www.py2exe.org" class="wikkly-a-www" href="http://www.py2exe.org/" onclick="window.open(this.href);return false;">py2exe</a> behavior, the filename must not change. </li><li class="wikkly-ul-li1">Make sure you did <b class="">not</b> save them directly to root of your <span class="wikkly-code-inline">C:</span> drive (i.e. as <span class="wikkly-code-inline">c:\wik.exe</span> or <span class="wikkly-code-inline">c:\wikgui.exe</span>). They have to be stored in a subfolder. Like above, this is due to py2exe behavior. </li><li class="wikkly-ul-li1">For Windows 2000 and earlier, if you get an error about missing <b class="">GDI+</b>, then you need to download the <a title="Link to http://www.microsoft.com" class="wikkly-a-www" href="http://www.microsoft.com/downloads/details.aspx?familyid=6A63AB9C-DF12-4D41-933C-BE590FEAA05A&amp;displaylang=en" onclick="window.open(this.href);return false;">GDI+ SDK Redistributable</a>. Unpack it to the same folder where you saved <span class="wikkly-tt">wikgui.exe</span>. </li><li class="wikkly-ul-li1">You must have <span class="wikkly-code-inline">MSVCR71.DLL</span> and <span class="wikkly-code-inline">MSVCP71.DLL</span> on your machine. If either of these are missing, <span class="wikkly-tt">wik.exe</span> and <span class="wikkly-tt">wikgui.exe</span> will fail to run. <div class="wikkly-notebox" >Unfortunately, the Microsoft license does not appear to allow redistribution of either <span class="wikkly-code-inline">MSVCR71.DLL</span> or <span class="wikkly-code-inline">MSVCP71.DLL</span>, so you will have to search for them.<br/><br/>Be sure to <a title="Link to http://downloads.activestate.com" class="wikkly-a-www" href="http://downloads.activestate.com/contrib/md5sum/Windows/" onclick="window.open(this.href);return false;">check the md5sums</a> of any DLL files before running them. For reference, the <span class="wikkly-tt">md5sums</span> of the legitimate files are: <table class="wikkly-table"><tr class="wikkly-tr"><th class="wikkly-th" colspan="1" rowspan="1" style="text-align: center;">Filename</th><th class="wikkly-th" colspan="1" rowspan="1" style="text-align: center;">md5sum</th><th class="wikkly-th" colspan="1" rowspan="1" style="text-align: center;">Search link</th></tr><tr class="wikkly-tr"><td class="wikkly-td" colspan="1" rowspan="1" style="text-align: left;"><span class="wikkly-tt">MSVCR71.DLL</span></td><td class="wikkly-td" colspan="1" rowspan="1" style="text-align: left;"><span class="wikkly-tt">86f1895ae8c5e8b17d99ece768a70732</span></td><td class="wikkly-td" colspan="1" rowspan="1" style="text-align: left;"><a title="Link to http://www.google.com" class="wikkly-a-www" href="http://www.google.com/search?q=msvcr71.dll" onclick="window.open(this.href);return false;">search</a></td></tr><tr class="wikkly-tr"><td class="wikkly-td" colspan="1" rowspan="1" style="text-align: left;"><span class="wikkly-tt">MSVCP71.DLL</span></td><td class="wikkly-td" colspan="1" rowspan="1" style="text-align: left;"><span class="wikkly-tt">561fa2abb31dfa8fab762145f81667c2</span></td><td class="wikkly-td" colspan="1" rowspan="1" style="text-align: left;"><a title="Link to http://www.google.com" class="wikkly-a-www" href="http://www.google.com/search?q=msvcp71.dll" onclick="window.open(this.href);return false;">search</a></td></tr></table><i class="">The last time I checked, DLL-files.com had the legitimate files.</i> </div> </li><li class="wikkly-ul-li1">If you are running Windows 95/98/Me then you may also need to download <a title="Link to http://wikklytext.com" class="wikkly-a-www" href="http://wikklytext.com/wiki/files/download/w9xpopen.exe" onclick="window.open(this.href);return false;">w9xpopen.exe</a> and place it in the same folder as <span class="wikkly-code-inline">wik.exe</span> and/or <span class="wikkly-code-inline">wikgui.exe</span>.<br/><br/><div id="disqus_thread"></div><script type="text/javascript" src="http://disqus.com/forums/wikklytext/embed.js"></script><noscript><p><a href="http://wikklytext.disqus.com/?url=ref">View the forum thread.</a></p></noscript><p><a href="http://disqus.com" class="dsq-brlink">blog comments powered by <span class="logo-disqus">Disqus</span></a></p></li></ul>]]></description>
            <guid isPermaLink="false">74f7e559970b45c648ea6114e418a2bcd5f97158</guid>
            <pubDate>Tue, 12 Aug 2008 04:06:00 +0000</pubDate>
        </item>
        <item>
            <title>WikiOnAStick</title>
            <link>WikiOnAStick.html</link>
            <description><![CDATA[You can run a wiki as a standalone application with no external requirements (no Apache, no Python, etc.). One usage for this is to create a "wiki on a stick", i.e. a wiki that lives on a USB drive so you can take it from computer to computer without needing to install anything.<br/><br/>If you are running Windows, here is a quick way to get started: <ul class="wikkly-ul"><li class="wikkly-ul-li1">Download <span class="wikkly-tt">wikgui.exe</span> from <a title="WikExeWin32.html" class="wikkly-a-internal" href="WikExeWin32.html" >WikExeWin32</a> and place it on your USB drive. </li><li class="wikkly-ul-li1">Run <span class="wikkly-tt">wikgui.exe</span>. </li><li class="wikkly-ul-li1">Click <b class="">Add</b> to create a new wiki.<br/><i class="">I recommend choosing the "<b class="">Tune for USB usage</b>" option, when prompted. This will minimize writes to the USB drive. (See also <a title="OptimizeForUsbUsage.html" class="wikkly-a-internal" href="OptimizeForUsbUsage.html" >OptimizeForUsbUsage</a>)</i> </li><li class="wikkly-ul-li1">When finished, double-click on the new wiki to launch and browse it.<br/><br/></li></ul><h2 class="wikkly-h2">Command Line Usage</h2><br/>If you prefer to use the command line instead of the GUI, here is the recipe: <ul class="wikkly-ul"><li class="wikkly-ul-li1">Download <span class="wikkly-tt">wik.exe</span> from <a title="WikExeWin32.html" class="wikkly-a-internal" href="WikExeWin32.html" >WikExeWin32</a> and place it on your USB drive. </li><li class="wikkly-ul-li1">Lets assume your USB drive is <span class="wikkly-code-inline">E:</span> and you want to create a wiki called "MyFirstWiki". Open a command window and run: <div class="wikkly-code-block">e:<br/>md&nbsp;MyFirstWiki<br/>cd&nbsp;MyFirstWiki<br/>e:\wik&nbsp;init</div> </li><li class="wikkly-ul-li1">Now, answer a few questions about how you want to setup your wiki. When you are finished, run: <div class="wikkly-code-block">e:\wik&nbsp;serve</div> </li><li class="wikkly-ul-li1">Now (assuming you accepted the defaults) point your browser to: <a title="Link to http://127.0.0.1:8000" class="wikkly-a-www" href="http://127.0.0.1:8000" onclick="window.open(this.href);return false;">http://127.0.0.1:8000</a>, and you should be off and running!<br/><br/><div id="disqus_thread"></div><script type="text/javascript" src="http://disqus.com/forums/wikklytext/embed.js"></script><noscript><p><a href="http://wikklytext.disqus.com/?url=ref">View the forum thread.</a></p></noscript><p><a href="http://disqus.com" class="dsq-brlink">blog comments powered by <span class="logo-disqus">Disqus</span></a></p></li></ul>]]></description>
            <guid isPermaLink="false">16436e79b33332e355aa89747ac30a117e9a5e59</guid>
            <pubDate>Tue, 12 Aug 2008 04:05:00 +0000</pubDate>
        </item>
        <item>
            <title>GettingWikklyText</title>
            <link>GettingWikklyText.html</link>
            <description><![CDATA[<ul class="wikkly-ul"><li class="wikkly-ul-li1">If you want to try it out without installing Python, and you are running Windows, <a title="WikExeWin32.html" class="wikkly-a-internal" href="WikExeWin32.html" >WikExeWin32</a> is a quick way to get started. </li><li class="wikkly-ul-li1">Otherwise, install the <a title="InstallPythonPackage.html" class="wikkly-a-internal" href="InstallPythonPackage.html" >Python package</a>. </li><li class="wikkly-ul-li1">To use with Drupal, get the <a title="DrupalPlugIn.html" class="wikkly-a-internal" href="DrupalPlugIn.html" >DrupalPlugIn</a>. </li></ul>]]></description>
            <guid isPermaLink="false">7565562c9c3499cd0a7ffe79b05a85fd6c025955</guid>
            <pubDate>Tue, 12 Aug 2008 04:05:00 +0000</pubDate>
        </item>
        <item>
            <title>Welcome!</title>
            <link>Welcome!.html</link>
            <description><![CDATA[  What is <b class="">WikklyText</b>?  <ul class="wikkly-ul"><li class="wikkly-ul-li1">It provides a lightweight, portable, extensible wiki language, compatible with <a title="Link to http://www.tiddlywiki.com" class="wikkly-a-www" href="http://www.tiddlywiki.com" onclick="window.open(this.href);return false;">TiddlyWiki</a> <br/>(<i class="">see also:</i> <a title="MarkupReference.html" class="wikkly-a-internal" href="MarkupReference.html" >MarkupReference</a>). </li><li class="wikkly-ul-li1">It is easily used as a <a title="WikiOnAStick.html" class="wikkly-a-internal" href="WikiOnAStick.html" >WikiOnAStick</a> for keeping a personal wiki. </li><li class="wikkly-ul-li1">It can be used <a title="BehindApache.html" class="wikkly-a-internal" href="BehindApache.html" >BehindApache</a> to serve a multiuser wiki. </li><li class="wikkly-ul-li1">It can be <a title="DrupalPlugIn.html" class="wikkly-a-internal" href="DrupalPlugIn.html" >plugged into Drupal</a>  allowing you to write in <b class="">WikklyText</b> markup on your existing <a title="Link to http://www.drupal.org" class="wikkly-a-www" href="http://www.drupal.org" onclick="window.open(this.href);return false;">Drupal</a> site. </li><li class="wikkly-ul-li1">It provides "Safe" and "Full" modes: In "Safe" mode, the user is restricted to only calling safe macros, no HTML injection is possible, and the generated text is filtered to preclude XSS issues. In a server setting (e.g. <a title="Link to http://www.drupal.org" class="wikkly-a-www" href="http://www.drupal.org" onclick="window.open(this.href);return false;">Drupal</a> or Apache) this allows untrusted users to write <b class="">WikklyText</b> content without endangering system security. </li><li class="wikkly-ul-li1">It is extensible, allowing both embedded Python code in wikitexts (<span class="wikkly-code-inline">&lt;?py&nbsp;...&nbsp;?&gt;</span>) as well as providing an easy to use <a title="WritingPlugins.html" class="wikkly-a-internal" href="WritingPlugins.html" >plugin API</a>. </li><li class="wikkly-ul-li1">It is a modular <a title="Link to http://www.python.org" class="wikkly-a-www" href="http://www.python.org" onclick="window.open(this.href);return false;">Python</a> library that you can use to build your own wikitext rendering applications. You can render to both HTML and XML for flexibility. </li><li class="wikkly-ul-li1">It is provided under a <a title="License.html" class="wikkly-a-internal" href="License.html" >free license</a>.<br/><br/></li></ul>To view some sample content, see the <a title="ConversionDemo.html" class="wikkly-a-internal" href="ConversionDemo.html" >ConversionDemo</a>. ]]></description>
            <guid isPermaLink="false">81aa1022e1fcea429e2a05c3e2f240cbdaebd0ba</guid>
            <pubDate>Sun, 10 Aug 2008 21:07:00 +0000</pubDate>
        </item>
        <item>
            <title>WhyWikklyText</title>
            <link>WhyWikklyText.html</link>
            <description><![CDATA[WikklyText started out of a few of my personal desires: <ul class="wikkly-ul"><li class="wikkly-ul-li1">First, I wanted to experiment with doing more Pythonic things within a TiddlyWiki-like framework. An obvious expression of this is the ability to embed Python code in wikitexts. With this addition, wikitexts now have access to the full Python library, and issues like "<i class="">how do I talk to a database?</i>" become moot. </li><li class="wikkly-ul-li1">Secondly, I liked the basic TiddlyWiki markup language enough that I wanted to enable it to be used in more contexts. I was tired of using domain-specific markup languages (hand-edited HTML vs. <a title="Link to http://tinymce.moxiecode.com" class="wikkly-a-www" href="http://tinymce.moxiecode.com/" onclick="window.open(this.href);return false;">TinyMCE</a> vs. <a title="Link to http://docutils.sourceforge.net" class="wikkly-a-www" href="http://docutils.sourceforge.net/rst.html" onclick="window.open(this.href);return false;">reStructuredText</a> vs. ...) and wanted to move to a single standard for my own content. To this end, WikklyText provides highly modular pieces for rendering, store management, etc., with the hope that others will be able to mix &amp; match pieces to build their own tiddly-speaking applications.<br/><br/></li></ul>]]></description>
            <guid isPermaLink="false">9e9ff1d9da61e4903ba202fc675bb0805b70a4a7</guid>
            <pubDate>Wed, 18 Jun 2008 00:37:00 +0000</pubDate>
        </item>
        <item>
            <title>OptimizeForUsbUsage</title>
            <link>OptimizeForUsbUsage.html</link>
            <description><![CDATA[When running a <a title="WikiOnAStick.html" class="wikkly-a-internal" href="WikiOnAStick.html" >WikiOnAStick</a> from a USB drive, you probably want to minimize the number of writes to the device. You can do that making the following settings on the <b class="">Wiki Admin</b> page: <ul class="wikkly-ul"><li class="wikkly-ul-li1">Set <b class="">Session Storage</b> to <b class="">ram</b>. </li><li class="wikkly-ul-li1">Set <b class="">Render Cache</b> to <b class="">Off</b> </li><li class="wikkly-ul-li1">Set <b class="">MetaDb</b> to <b class="">Off</b><br/><br/></li></ul>]]></description>
            <guid isPermaLink="false">1957616f571c972355f9501893453b4f56b373a4</guid>
            <pubDate>Mon, 16 Jun 2008 00:52:00 +0000</pubDate>
        </item>
        <item>
            <title>Patch: cherrypy-3.1.0rc1-console-handler</title>
            <link>Patch- cherrypy-3.1.0rc1-console-handler.html</link>
            <description><![CDATA[This patch is needed to use CherryPy 3.1.0rc1 behind Apache with mod_python: <div class="wikkly-code-block">diff&nbsp;-u&nbsp;-r&nbsp;CherryPy-3.1.0rc1/cherrypy/__init__.py&nbsp;fm-CherryPy-3.1.0rc1/cherrypy/__init__.py<br/>---&nbsp;CherryPy-3.1.0rc1/cherrypy/__init__.py&nbsp;&nbsp;&nbsp;&nbsp;2008-05-17&nbsp;15:34:25.000000000&nbsp;-0500<br/>+++&nbsp;fm-CherryPy-3.1.0rc1/cherrypy/__init__.py&nbsp;&nbsp;&nbsp;&nbsp;2008-06-12&nbsp;11:33:48.467036800&nbsp;-0500<br/>@@&nbsp;-181,7&nbsp;+181,8&nbsp;@@<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;del&nbsp;win32<br/>&nbsp;except&nbsp;ImportError:<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;engine&nbsp;=&nbsp;process.bus<br/>-<br/>+&nbsp;&nbsp;&nbsp;&nbsp;_console_control_handler&nbsp;=&nbsp;None<br/>+&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;<br/>&nbsp;#&nbsp;Timeout&nbsp;monitor<br/>&nbsp;class&nbsp;_TimeoutMonitor(process.plugins.Monitor):<br/>diff&nbsp;-u&nbsp;-r&nbsp;CherryPy-3.1.0rc1/cherrypy/_cpmodpy.py&nbsp;fm-CherryPy-3.1.0rc1/cherrypy/_cpmodpy.py<br/>---&nbsp;CherryPy-3.1.0rc1/cherrypy/_cpmodpy.py&nbsp;&nbsp;&nbsp;&nbsp;2008-05-17&nbsp;15:34:26.000000000&nbsp;-0500<br/>+++&nbsp;fm-CherryPy-3.1.0rc1/cherrypy/_cpmodpy.py&nbsp;&nbsp;&nbsp;&nbsp;2008-06-12&nbsp;11:34:11.149164400&nbsp;-0500<br/>@@&nbsp;-97,7&nbsp;+97,8&nbsp;@@<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"tools.ignore_headers.headers":&nbsp;['Range'],<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;})<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>-&nbsp;&nbsp;&nbsp;&nbsp;cherrypy._console_control_handler.unsubscribe()<br/>+&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;cherrypy._console_control_handler&nbsp;is&nbsp;not&nbsp;None:<br/>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cherrypy._console_control_handler.unsubscribe()<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cherrypy.engine.autoreload.unsubscribe()<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cherrypy.server.unsubscribe()</div>]]></description>
            <guid isPermaLink="false">bd1049bd9c33608decc7591a5fcb7255bd503a84</guid>
            <pubDate>Thu, 12 Jun 2008 16:47:00 +0000</pubDate>
        </item>
        <item>
            <title>WikGuiConfigFolder</title>
            <link>WikGuiConfigFolder.html</link>
            <description><![CDATA[<span class="wikkly-tt">wik</span> and <span class="wikkly-tt">wikgui</span> are intended to work well as a "portable" applications. This means that they are careful not to write anything to the registry  and won't store any configuration files on your computer unless you ask them to. You have three options for storing your configuration data:    <dl class="wikkly-dl"><dt class="wikkly-dt">User folder </dt><dd class="wikkly-dd">Configuration will be stored in the standard host OS location for user data. <br/>Examples: <ul class="wikkly-ul"><li class="wikkly-ul-li1">XP: <span class="wikkly-code-inline">c:\Documents&nbsp;and&nbsp;Settings\USER\Application&nbsp;Data\WikklyText</span>  </li><li class="wikkly-ul-li1">Vista: <span class="wikkly-code-inline">c:\Users\USER\AppData\Roaming\WikklyText</span> </li><li class="wikkly-ul-li1">Linux/POSIX: <span class="wikkly-code-inline">~/.WikklyText</span> </li></ul> </dd><dt class="wikkly-dt">Executable folder </dt><dd class="wikkly-dd">Configuration will be stored in the same location as <span class="wikkly-tt">wik.exe</span>/<span class="wikkly-tt">wikgui.exe</span> </dd><dt class="wikkly-dt">Other folder </dt><dd class="wikkly-dd">If you don't like either of these options, you can run <span class="wikkly-tt">wik</span> (or <span class="wikkly-tt">wikgui</span>) like this to specify a location: <div class="wikkly-code-block">wik&nbsp;--cfgpath="c:\My\Folder\Location"</div><br/><br/></dd></dl><dl class="wikkly-dl"><dt class="wikkly-dt">Tip: </dt><dd class="wikkly-dd"><i class="">If you want to run off of a USB drive and not touch the host computer, you'll want to choose either <b class="">Executable folder</b> or <b class="">Other location</b>.</i><br/><br/></dd></dl>]]></description>
            <guid isPermaLink="false">bf95563df70b21c5ecbc62250223166b7156700f</guid>
            <pubDate>Thu, 12 Jun 2008 02:30:00 +0000</pubDate>
        </item>
        <item>
            <title>twextract</title>
            <link>twextract.html</link>
            <description><![CDATA[<div class="wikkly-warnbox-container" ><div class="wikkly-warnbox-title" >Deprecation Warning</div><div class="wikkly-warnbox-body" ><span class="wikkly-tt">twextract</span> is deprecated. It has been superceded by <span class="wikkly-tt">wik</span>. It will be removed at some point unless there is significant interest in keeping it around (let me know via the <a title="MailingList.html" class="wikkly-a-internal" href="MailingList.html" >MailingList</a> if that is the case for you).</div></div><br/><br/>The <span class="wikkly-tt">twextract</span> utility converts a TiddlyWiki into a flat set of XML &amp; HTML files.  This can be useful for ... <ul class="wikkly-ul"><li class="wikkly-ul-li1">Serving your TiddlyWiki content as a lightweight set of pages instead of each user having to download the entire wiki. </li><li class="wikkly-ul-li1">Serving your TiddlyWiki content in a Javascript-restricted environment. </li><li class="wikkly-ul-li1">Serving your TiddlyWiki to users with limited browser capability, for example mobile phone users.<br/><br/></li></ul>Run <span class="wikkly-tt">twextract</span> by giving it a TiddlyWiki <span class="wikkly-code-inline">.html</span> file and an output directory. For example, to convert <span class="wikkly-code-inline">c:\tiddlywiki.html</span>, placing results in <span class="wikkly-code-inline">c:\output</span>: <div class="wikkly-code-block">twextract&nbsp;c:\tiddlywiki.html&nbsp;c:\output</div><br/><br/>You can view an example here: <a title="Link to http://boodebr.org" class="wikkly-a-www" href="http://boodebr.org/pages/twExtractDemo/index.html" onclick="window.open(this.href);return false;">TiddlyWiki Home Page, converted to HTML</a>.<br/><br/>]]></description>
            <guid isPermaLink="false">6411cb4dd5ab183a94e1aa9c8ca4b2d1110f6327</guid>
            <pubDate>Thu, 05 Jun 2008 13:16:00 +0000</pubDate>
        </item>
        <item>
            <title>ServingFiles</title>
            <link>ServingFiles.html</link>
            <description><![CDATA[Beginning with WikklyText 1.1, you have a file-serving area within your wiki. It is located in the <span class="wikkly-code-inline">files/</span> directory under your wiki folder. WikklyText will serve any files that are located there, including in any subdirectories (no matter how deeply nested). <br/><br/>Here are some examples. My wiki root folder looks like this: <div class="wikkly-code-block">wiki/<br/>&nbsp;&nbsp;&nbsp;&nbsp;files/<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;testing/<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;htmlfile.html<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;imagefile.png<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;textfile.txt</div><br/><br/>First, serving an HTML file: <ul class="wikkly-ul"><li class="wikkly-ul-li1"><a title="files/testing/htmlfile.html" class="wikkly-a-internal" href="files/testing/htmlfile.html" >HTML file</a> <div class="wikkly-notebox" >Markup: <span class="wikkly-code-inline">[[HTML&nbsp;file|files/testing/htmlfile.html]]</span></div><br/><br/></li></ul>WikklyText knows to set the MIME type correctly so files will render (or not) as they should.  <ul class="wikkly-ul"><li class="wikkly-ul-li1"><a title="files/testing/textfile.txt" class="wikkly-a-internal" href="files/testing/textfile.txt" >Text file</a> <div class="wikkly-notebox" > Markup: <span class="wikkly-code-inline">[[Text&nbsp;file|files/testing/textfile.txt]]</span></div><br/><br/></li></ul>Image files: <ul class="wikkly-ul"><li class="wikkly-ul-li1">Inline image: <img class="wikkly-img" src="files/testing/imagefile.png" alt="files/testing/imagefile.png" /> <div class="wikkly-notebox" >Markup: <span class="wikkly-code-inline">[img[files/testing/imagefile.png]]</span></div> </li><li class="wikkly-ul-li1">Image with link: <a href="http://wikklytext.com" onclick="window.open(this.href);return false;" ><img class="wikkly-img" src="files/testing/imagefile.png" alt="files/testing/imagefile.png" /></a> <div class="wikkly-notebox" >Markup: <span class="wikkly-code-inline">[img[files/testing/imagefile.png][http://wikklytext.com]]</span></div> </li><li class="wikkly-ul-li1">Link to image: <a title="files/testing/imagefile.png" class="wikkly-a-internal" href="files/testing/imagefile.png" >Image</a><br/><br/></li></ul>The benefits of the file-serving area are: <ul class="wikkly-ul"><li class="wikkly-ul-li1">You can make links to file content that work the same for both standalone wikis and wikis running behind a webserver. </li><li class="wikkly-ul-li1">You can move your wiki around without breaking links to file content. </li><li class="wikkly-ul-li1">File download activity will be included in your logs for easy reference. </li></ul>]]></description>
            <guid isPermaLink="false">8c8d1c44a848194ccd012dfd847ff05743deb3a1</guid>
            <pubDate>Wed, 12 Mar 2008 02:09:00 +0000</pubDate>
        </item>
        <item>
            <title>AboutTheseDocs</title>
            <link>AboutTheseDocs.html</link>
            <description><![CDATA[The site you are viewing is a WikklyText wiki. If you are familiar with <a title="Link to http://tiddlywiki.com" class="wikkly-a-www" href="http://tiddlywiki.com" onclick="window.open(this.href);return false;">TiddlyWiki</a> you'll notice that WikklyText wikis use the same naming scheme. This is done so that you can move content freely between a TiddlyWiki and a WikklyText wiki. (See the <span class="wikkly-code-inline">wik&nbsp;conv</span> command in <a title="UsingWik.html" class="wikkly-a-internal" href="UsingWik.html" >UsingWik</a>.)<br/><br/>Much of the time, this site will be running a prerelease version of WikklyText. Don't be surprised to see a version number (on the link at the bottom) that is not yet available for download. All features will be included in the next stable release.]]></description>
            <guid isPermaLink="false">0127e3f1304ff5626fdddb2b5baf2cc2abcf7763</guid>
            <pubDate>Mon, 10 Mar 2008 03:13:00 +0000</pubDate>
        </item>
        <item>
            <title>Wikkly2HTML</title>
            <link>Wikkly2HTML.html</link>
            <description><![CDATA[<div class="wikkly-notebox" >You can accomplish this same task with the <span class="wikkly-tt"><a title="UsingWik.html" class="wikkly-a-internal wikkly-tt" href="UsingWik.html" >wik</a></span> command-line tool. <span class="wikkly-tt">wikkly2html</span> has been around longer, but is being superceded by <span class="wikkly-tt">wik</span>.</div><br/><br/>The <span class="wikkly-tt">wikkly2html</span> utility converts WikklyText files to HTML: <ol class="wikkly-ol"><li class="wikkly-ol-li1"><div class="wikkly-code-block">wikkly2html&nbsp;--css&nbsp;-o&nbsp;OUTFILE.html&nbsp;INFILE.txt</div> </li><li class="wikkly-ol-li1">Notes: <ol class="wikkly-ol"><li class="wikkly-ol-li2">You can pass <span class="wikkly-code-inline">-m&nbsp;safe</span> on the command line to get the same safety features you get with the Drupal <b class="">Safe</b> mode. </li><li class="wikkly-ol-li2">Try running <span class="wikkly-tt">wikkly2html</span> with no parameters to see full help.<br/><br/></li></ol></li></ol>]]></description>
            <guid isPermaLink="false">c2140f366a98ce00151afede6e5622f4c0ba4560</guid>
            <pubDate>Mon, 11 Feb 2008 21:00:00 +0000</pubDate>
        </item>
        <item>
            <title>WhatNow</title>
            <link>WhatNow.html</link>
            <description><![CDATA[Some starting points for using WikklyText. <dl class="wikkly-dl"><dt class="wikkly-dt"><a title="UsingWik.html" class="wikkly-a-internal" href="UsingWik.html" >UsingWik</a> </dt><dd class="wikkly-dd">Use the <span class="wikkly-tt">wik</span> standalone tool to create, manage, render and serve full blown wikis. <br/><i class="">Unless you are a programmer, this is probably what you want to use!</i> </dd><dt class="wikkly-dt"><a title="MarkupReference.html" class="wikkly-a-internal" href="MarkupReference.html" >MarkupReference</a> </dt><dd class="wikkly-dd">A complete reference to the WikklyText markup language<br/><br/></dd></dl><h3 class="wikkly-h3">For programmers</h3> <dl class="wikkly-dl"><dt class="wikkly-dt"><a title="WikklyTextApi.html" class="wikkly-a-internal" href="WikklyTextApi.html" >WikklyTextApi</a> </dt><dd class="wikkly-dd">Documents the primary entry points.<br/><br/></dd></dl><h3 class="wikkly-h3">Other/older tools</h3> <dl class="wikkly-dl"><dt class="wikkly-dt"><a title="Wikkly2HTML.html" class="wikkly-a-internal" href="Wikkly2HTML.html" >wikkly2html</a> </dt><dd class="wikkly-dd">Renders a single text file at a time. </dd><dt class="wikkly-dt"><a title="twextract.html" class="wikkly-a-internal" href="twextract.html" >twextract</a> </dt><dd class="wikkly-dd">Tool for converting a TiddlyWiki to standalone HTML (<i class="">superceded by <span class="wikkly-tt">wik</span></i>).<br/><br/></dd></dl>]]></description>
            <guid isPermaLink="false">4d12e04f6c470bd5b422d8e97ca2455b35367dc3</guid>
            <pubDate>Mon, 04 Feb 2008 12:22:00 +0000</pubDate>
        </item>
        <item>
            <title>WikklyTextApi</title>
            <link>WikklyTextApi.html</link>
            <description><![CDATA[This is not meant as an exhaustive list, but rather to cover the primary entry points in the WikklyText modules.<br/><br/><h3 class="wikkly-h3">WikklyText_to_XML</h3><br/>This is probably the best entry point for your own code to use. It converts a wikitext string into XML markup, ready for processing into whatever final format you choose. <div class="wikkly-code-block">from&nbsp;wikklytext&nbsp;import&nbsp;WikklyText_to_XML<br/>(xml,context)&nbsp;=&nbsp;WikklyText_to_XML(content,&nbsp;encoding,&nbsp;safe_mode,&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setvars=None,&nbsp;max_runtime=-1,&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;url_resolver=None,&nbsp;tree_posthook=None)</div><br/><br/><b class=""><span class="wikkly-u">Inputs</span></b>:<br/><br/><dl class="wikkly-dl"><dt class="wikkly-dt">content </dt><dd class="wikkly-dd">Wikitext (<i class="">Unicode</i>), usually from wikklytext.base.load_wikitext(). </dd><dt class="wikkly-dt">encoding </dt><dd class="wikkly-dd">Desired output encoding (i.e. 'utf-8') </dd><dt class="wikkly-dt">safe_mode </dt><dd class="wikkly-dd">True/False, whether to use Safe mode. </dd><dt class="wikkly-dt">setvars </dt><dd class="wikkly-dd">Variables to set into WikContext, as dict of: <span class="wikkly-code-inline">name:&nbsp;str,&nbsp;unicode&nbsp;or&nbsp;int</span> <i class="">'name' can have a leading '$' to set sysvars.</i> </dd><dt class="wikkly-dt">max_runtime </dt><dd class="wikkly-dd">Maximum time (in seconds) to run, or -1 for unlimited. </dd><dt class="wikkly-dt">url_resolver </dt><dd class="wikkly-dd">URL resolver, see wikklytext.base for info. </dd><dt class="wikkly-dt">tree_posthook </dt><dd class="wikkly-dd">Hook to call after ElementTree is complete, before generating XML. Will be called as: <div class="wikkly-code-block">tree_posthook(rootnode,&nbsp;context)</div> Hook should modify tree in-place.<br/><br/></dd></dl><dl class="wikkly-dl"><dt class="wikkly-dt"><span class="wikkly-u">Returns:</span> </dt><dd class="wikkly-dd">(xml, context)<br/><br/></dd></dl><b class=""><span class="wikkly-u">Where:</span></b> <dl class="wikkly-dl"><dt class="wikkly-dt">xml </dt><dd class="wikkly-dd">Generated XML as an encoded bytestring </dd><dt class="wikkly-dt">context </dt><dd class="wikkly-dd">WikContext that was used, in case user wants to inspect it. </dd></dl>]]></description>
            <guid isPermaLink="false">d536a55d0343f2fcc2807b7b2acbb9d123d64af4</guid>
            <pubDate>Mon, 04 Feb 2008 11:26:00 +0000</pubDate>
        </item>
        <item>
            <title>License</title>
            <link>License.html</link>
            <description><![CDATA[WikklyText is free software licensed under the <a title="Link to http://www.opensource.org" class="wikkly-a-www" href="http://www.opensource.org/licenses/gpl-license.php" onclick="window.open(this.href);return false;">GPL v2</a>.<br/><br/><div class="wikkly-codebox-container" ><div class="wikkly-codebox-title" >LICENSE</div><div class="wikkly-codebox-body" >The&nbsp;WikklyText&nbsp;suite<br/><br/>Copyright&nbsp;(C)&nbsp;2007,2008&nbsp;Frank&nbsp;McIngvale<br/><br/>Contact:&nbsp;fmcingvale@boodebr.org<br/><br/>This&nbsp;program&nbsp;is&nbsp;free&nbsp;software;&nbsp;you&nbsp;can&nbsp;redistribute&nbsp;it&nbsp;and/or&nbsp;modify<br/>it&nbsp;under&nbsp;the&nbsp;terms&nbsp;of&nbsp;the&nbsp;GNU&nbsp;General&nbsp;Public&nbsp;License&nbsp;as&nbsp;published&nbsp;by<br/>the&nbsp;Free&nbsp;Software&nbsp;Foundation;&nbsp;either&nbsp;version&nbsp;2&nbsp;of&nbsp;the&nbsp;License,&nbsp;or<br/>(at&nbsp;your&nbsp;option)&nbsp;any&nbsp;later&nbsp;version.<br/><br/>This&nbsp;program&nbsp;is&nbsp;distributed&nbsp;in&nbsp;the&nbsp;hope&nbsp;that&nbsp;it&nbsp;will&nbsp;be&nbsp;useful,<br/>but&nbsp;WITHOUT&nbsp;ANY&nbsp;WARRANTY;&nbsp;without&nbsp;even&nbsp;the&nbsp;implied&nbsp;warranty&nbsp;of<br/>MERCHANTABILITY&nbsp;or&nbsp;FITNESS&nbsp;FOR&nbsp;A&nbsp;PARTICULAR&nbsp;PURPOSE.&nbsp;See&nbsp;the<br/>GNU&nbsp;General&nbsp;Public&nbsp;License&nbsp;for&nbsp;more&nbsp;details.</div></div><br/><br/>]]></description>
            <guid isPermaLink="false">a76a253139e7125a7d8702322da0d74f8606629a</guid>
            <pubDate>Mon, 28 Jan 2008 02:58:00 +0000</pubDate>
        </item>
        <item>
            <title>FAQ</title>
            <link>FAQ.html</link>
            <description><![CDATA[No questions so far!<br/><br/>]]></description>
            <guid isPermaLink="false">373b759207b7e433df9a355370ed34fcf5cceab7</guid>
            <pubDate>Fri, 23 Nov 2007 20:57:00 +0000</pubDate>
        </item>
        <item>
            <title>NoCacheExample</title>
            <link>NoCacheExample.html</link>
            <description><![CDATA[ This item has the 'nocache' tag set. This tells the renderer to always rebuild this item, even if it has not changed. <br/><br/>To prove it is regenerated, here is a timestamp: <b class="">Wed Aug  1 21:08:42 2012</b><br/><br/><br/><br/><br/>]]></description>
            <guid isPermaLink="false">33146183fde061a8761dba1d74f6003f08f8f0b2</guid>
            <pubDate>Sat, 20 Oct 2007 13:20:00 +0000</pubDate>
        </item>
    </channel>
</rss>
