Navigation style
Download Page
Groovy/Grails Tool Suite page
banner SpringOne compression (png to jpg)
Use consistent download button across site.

The same "Download Grails ..." button is now used on the home page, the getting
started page, and the downlaods page. I've also updated the getting started
page to auto-increment the number for each step rather than hard-coding it.
Fix grammar in log message.
Fix apiShow action for plugins.

There were several bugs and missing bits of code that meant the URL for "has
this plugin version already been published" always returned a 404. All fixed
now.
Remove unused plugin index GSP.
Add permanent redirect for legacy /Tutorials URL.
Add missing method back to PluginController.
Change services menu text.

The old Services menu has product links in it, so it's now Products &
Services. And Products becomes Other products (since GGTS has its own
link and is also a product).
Delay loading of Spring One banner.
Reformat news items.

Each news article was displayed inside <p> tags, which was causing odd styling
of the items. These tags have been removed.
Fix double encoding of wiki text.

Several instances of <wiki:shorten> had their content explicitly encoded via
encodeAsHTML(). Since the tag itself encodes the content, this resulted in
double encoding of the content. The encodeAsHTML() calls have been removed.
Fix alignment of main button on download page.

The main button on the download page was not centered due to an incorrect
width on its container. The rounded corners on the right-hand side were
missing too, so I restored them.
Change heading text for archived releases.
Remove unused styles for downloads page.
Fix plugin publishing with big refactor.

There are several important changes here. The first is that PluginRelease now
supports the concept of a snapshot release. This allows us to handle requests
for 'latest.release' and 'latest.integration' separately and more in keeping
with their semantic meaning. It also ensures that the generated master plugin
list includes snapshot releases as well as normal ones.

The second big change is the extraction of much of PluginUpdateService into a
separate class (passing the same arguments between all the methods was just
getting silly). This has meant that we can correctly save snapshot as well as
normal releases with the correct download URL and other meta information.

Lastly, I've fixed the handling of PendingRelease instances so that they are
now deleted at the appropriate times. We should no longer end up with a large
number of stale PendingRelease records in the database due to failed plugin
publications.
Update plugin versions to work with Grails 2.2.
Update to Fixtures 1.2.
Update to use the new Cache plugin.
Implement Workaround GPCACHEREDIS-1.

The Redis cache provider doesn't appear to isolate cache regions, so all keys are namespaced with a region prefix.
Implement WEBSITE-198: add HTML shortening feature.

There is now a new class, HtmlShortener, that can be used to crop HTML content
to a maximum specified length. This doesn't crop based on the number of
characters in the markup, but on the number of displayed characters.

This class is used to shorten news items, tutorial descriptions, etc. after
the wiki text has been converted to HTML.