Release Notes for Version 0.2
Weceem Release 0.2
30 July 2009
Weceem CMS 0.2 is our second release, superceding release 0.1 with several architectural changes, changes to administration interfaces and new features and bug fixes.
This release is a major improvement on 0.1 - although some features have been disabled that may have been present in 0.1, and some features may by shown but not be implemented yet, to allow us to release a 0.2 and move on with 0.3!
The website weceem.org is self hosting having been upgraded from 0.1 to 0.2 successfully.
Changes in this release
-
Weceem CMS functionality is now available as a Grails plugin called "weceem". This provides no authentication, relying on the host application to configure hooks for authentication. You can use any authentication plugin for your Grails application, eg Acegi, JSecurity, Authentication etc. with just a few lines of code.
-
The Weceem CMS Application is a thin Grails application that uses the Weceem CMS plugin, adds simple Acegi authentication and basic user management that plugs into the Weceem admin back-end UI.
-
New Administration UI that uses jQuery and jQuery UI. This is still subject to development and has known issues, but is a major improvement and shows you where we're going with the UI.
-
Dynamic Content Editor. Weceem is designed to have extensible custom content types, and all the editors from 0.1 have been replaced with a single editor that provides editing by convention for any content type.
-
A new importer/exporter that does not rely on XStream and successfully exports full content with arbitrary levels of content nesting.
-
Image upload in FCK editor, and image browser and insertion into content in the FCK editor.
-
New support for content Status - eg Draft, Reviewed, Approved, Published. Currently partially implemented. Only Published content is visible to the public. All other states are not (caveat: there is a known issue with using wcm tags)
-
New URL mapping handling. Spaces have a base URI which can be blank on one of them to map it into "root" URI namespace, and content type is no longer part of the URI
-
As part of the move to the Weceem CMS Plugin, all the code has been refactored into org.weceem.* packages
-
Block has been renamed Widget, ditto the wcm:block tag is now wcm:widget etc
-
Some partial functionality that existed previously eg Wiki editor and rendering, file synchronization is currently disabled.
Notes for those upgrading
Because the previous release was a 0.1 and we advised against it, nobody is using it in product, right? Well if you do have data you want to preserve your best bet is to export it from the old 0.1 site. This should work OK if your content nesting was not deep. Then clear your database and start with a fresh 0.2 install, create your space and import the content.
If you cannot do this, here is a list of the changes you will need to make to your database to make it work with 0.2. These changes will need to be made after 0.2 has been run once. We don't recommend this, although we were in this situation ourselves.
In summary:
-
The existing "status" table had no default value for the old defunct "statusid" column, so new Status rows (which were never created before) cannot be created without removing this column from the mysql table first. You must drop the "statusid" column from the "status" table.
-
The class names of content classes changed, partly due to package naming and also Block -> Widget rename. This means you have to migrate the "class" column of the "content" table to the new namings eg:
update content set class="org.weceem.html.HTMLContent" where class = "HTMLContent";
update content set class="org.weceem.css.StyleSheet" where class = "StyleSheet";
update content set class="org.weceem.files.ContentDirectory" where class = "ContentDirectory";
update content set class="org.weceem.files.ContentFile" where class = "ContentFile";
update content set class="org.weceem.content.Widget" where class = "Block";
update content set class="org.weceem.content.Template" where class = "Template";
... those are the ones we needed, you may need more.
-
The Space table has a new "aliasuri" column which needs to be populated for the app to find your old spaces. Manually update it in your sql table to the name of your space. You can set it to a blank string to map into the root URI space
-
All the existing content rows need the id of status row "Published" set on the status_id column to make them visible.
-
We had to delete all user related tables and let Weceem regenerate them and default users because we could not login - we're not sure why, could be an acegi plugin/config change
Changes required irrespective of upgrade approach
After you have 0.2 running again with possibly manually repaired data, you will need to edit any links you hardcoded into content that use the old URI namespace. So for example if you had /weceem/<spacename>/<contenttype>/<aliasURI> you must edit to /weceem/<spaceAliasURI>/<aliasURI>.
This also applies to any relative WeceemFiles/ links you may have in your CSS etc.
Any "Block" you had prevously needs to be migrated into the new Widget table - eg importing a site that uses Block will lose that functionality now, you must copy the content into a Widget with the same title as the block previously.
Any Template or Widget (formerly Block) that use Weceem tags and constraints the results using the "type" attribute will need to be changed to use the new full class name including the new org.weceem.* package that the class now resides in.