Various existing reviki deployments are using apache2 in front of tomcat running reviki to (amongst other reasons) improve the URL space presented.
Unfortunately using modrewrite/proxy to link inside a tomcat context isn't working well, because tomcat issues session cookies for the wrong paths. This results in jsessionid URLs even in browsers with cookies enabled. This is unfortunate for URLs that are often copied for emailing etc.
This lets me eliminate the '/pages' URL prefix - an ugliness introduced because the servlet url-mappings are horrible and make it impossible (without using a filter) to send everything to a dispatcher/front-controller but use the default resource serving behaviour for certain paths. URLs now look like
I've introduced a permanent redirect for now from /pages/(.*) => /$1. The special pages /list and the more-or-less-internal /jump now overlap with the wiki namespace pending a good idea - perhaps /special/... as the only reserved name.
<<outgoingLinks:PageHere>> macros output wiki markup which is subsequently rendered. Until revision:954 these were not rendering properly because the renderer was matching them as inline macros meaning the list tags they use in their output weren't available.
It now works great (links to this page):
Now documented on AboutRecentChanges.
Locks can now be broken. In keeping with the aims of the 1.0 release (see TodoList) the locks can be broken by anyone at any time.
Also fixed a bug where error pages would fail to display.
ctype=printable is gone, now the default ConfigCss includes a @media print section that hides the menus. This allows for more flexibility. To see the effect go to print-preview. It does mean if you've changed the standard stylesheet you'll need to
The new stylesheet also includes prettier tables.
ctype=printable on the URL now gives a menu free page, with a link in the menu.
Brings up the need for a drop-down menu or similar to add these more rarely used options to - I've called it 'Print' which is misleading just to save the four characters!
Can now link to e.g. revision:917.
I've stuck with the debian viewcvs package for now so it isn't as pretty as some. The URLs could do with some modrewrite love too but all the linking will be via the wiki links so nevermind.
I've been working through a few issues encountered deploying reviki at work.
More minor improvements to come including proper ability to break locks and better feedback when creating wikis.
I'm hoping to get round to installing viewvc on the reviki SVN server. That way I can point at revisions with an inter-wiki-type link. I've been doing revision:1234 at work and that seems pretty neat - just as easy to type and a step saved for anyone wanting to review.
There's also improvements to configuring wiki base URLs - a
base-url property. If many of the wikis run in a reviki instance are mapped to the same area of URL-space, differing only in the final path segment (the wiki name) then this saves adding a base-url for each one. Documented on ConfigFile.
Documented on XPathContext. No doubt this will come in handy elsewhere - for me if no-one else.
For consistency with the alternate format for search the atom feed is now at
I hope to introduce the ability to view more of the wiki as atom feeds and entries over time.
I've also added '?revision=NNNN' to the atom:id of the entries. It seems that bloglines (and probably others) gets really confused by multiple entries with the same id (though the specification permits this).
I've also started to write code to make it bearable to write tests against XML output in XPath. Seems like something that could be generally useful, might be worth tidying up and pulling out of reviki.
In revision:785 ConfigCss was ignored - the default styling always used. I found a better home for the code that set the default CSS URL (now in the view) but failed to notice I'd moved it after the code setting the wiki specific CSS URL.
The default now takes care not to overwrite anything previously set and I've added some tests.
Perhaps I should brighten up reviki.org to make doubly sure but CSS just isn't my thing.
Update: I've made the page titles (slightly) more colourful.
It will download tomcat, built and deploy a war, start tomcat, wait for it to come up, run the tests against it and clean up. Magic. I was particularly impressed with
<waitfor maxwait="30" maxwaitunit="second" checkevery="500"> <http url="http://localhost:8080/reviki/"/> </waitfor>
...I was expecting to have to do something horrible like take a guess and sleep.
Unfortunately some manual setup of the test wiki is still required (documented in the ant file). If we supported file repositories perhaps ant could do this too. Another possible enhancement is XSLT or similar to munge the tomcat port to something less likely to clash.
As noted on ConfigFile you can now set a property that determines the base URL for the wiki. Now when the reviki tomcat instance is behind something like Apache there is much more freedom as to what the URL space looks like. You can easily have http://www.example.com/wiki/FrontPage and http://microsite.example.com/team/FrontPage both being served from the same tomcat.
If you don't set the base URL it will continue to be based on the request and the '/pages/wikiName/PageName' structure.
The atom feed is now valid. Issues were:
The validator now gives warnings about update times (due to a move, so expected) and multiple entries with the same id (which are valid as they are changes to the same page).
The (trivial) XHTML validator - XHTMLValidate - is now somewhat packaged up and is in SVN. I switched from using a catalog resolver to using a custom entity resolver as it still seemed to be going to the web when access was available, explaining why the tests were sometimes very slow.
Erm that's it really.
I'm working on addressing one of the attachment related stories for the 1.0 release.
The plan is to add ConfigAutoProperties which will be a text page containing the contents of the [auto-props] section of the svn config file. These will be used for new attachments.
This ought to make browsing the SVN repository directly more pleasing. The common practical problem is that the PDF files are incorrectly added as to SVN as text (as they often are for the first few bytes until you hit a compressed stream).
I'll also address using these mime types at attachment download time too (I think we currently always set application/octet-stream).
Update revision:720: We now have ConfigAutoProperties with some default content to be documented on AboutConfigAutoProperties. Decided there's no point setting mime-type on download because the current behaviour results in the browser / OS mime-type mappings being used which is probably more comprehensive. Will gladly revisit if anyone has a use case.
Time to find a validator I can hook into the HtmlUnit functional tests and the unit tests for the renderer.
Sites without a favicon look dull, something the current reviki design needs no help with! I'm no graphics wizard but on the basis that something's better than nothing:
That'll do for a while. Cheers to the folks at dynamicdrive for making this easy (heh, perhaps too easy...)
The title revision is the last changed revision, rather than the accessed revision. As it was it just wasn't useful information, now you can get some idea of how old a page is. One problem common to all forms of documentation is parts inevitably get stale. It's good to have a visual indication of how recently the page has been updated. Perhaps for that reason the last changed date / user should be more visible...
For a while now we've had uploading an attachment split across two commits, one creating the
PageName-attachments directory (if requried) and the other committing the attachment file. As of revision:619 it got worse - we now automatically add a link to the attachment to the associated page.
Update revision:629: The mutator methods on BasicSVNRepository now do less to give the SVNPageStore more control over combining modifications. All the operations needed to upload an attachment are now a single commit. Having to assemble all the actions up-front - because SVNRepository isn't re-entrant - leads to a clumsy separation of figuring out if something needs to be done and doing it - suspect we could pull out a prepare / perform interface. Revisit for RefactorRename.