Daizu CMS version 0.3

Version 0.3 of Daizu CMS is now available from the download page. Details of how to upgrade from 0.2 and the exact changes which have been made are given below.

I've just started a new contract so I won't be able to work as much on Daizu for a while. I just wanted to get this release out first, even though it has some imperfections.

Publishing system

The major new feature in this version is the publishing system. The previous version of Daizu could generate content and store it in appropriate files in a document root, but this version can automatically work out what publishing work needs to be done based on what changes you have made.

The publishing process now goes like this:

  1. Add or edit content and commit your changes to the content repository.
  2. Run daizu update to load the changes into the database.
  3. Run daizu publish to update Daizu's records of published URLs, and to publish, republish, or delete files for any URLs which are affected by the changes you've made.

Obviously once Daizu has a nice user interface this will all happen automatically when you hit the ‘publish’ button.

One feature I was planning, but haven't added yet, is the ability to have Daizu automatically upload changed content to a web server. This will probably involve it running rsync or something. I want to give some more thought to how that should be configured before I implement it.

Upgrading

Scripts are available, supplied in the source package, for upgrading to the new version and to reverse the changes:

As well as running the upgrade script you'll want to add any of the new plugins you want to your configuration file, and rename any google-sitemap elements in it to xml-sitemap.

There's also a new CSS stylesheet provided with this version, so the version in your content repository should be updated from that.

Note that I'm getting a few test failures (four tests in t/35gen.t) on one machine. It looks like something subtle, probably to do with the version of Subversion installed or something. I'm not going to hold up the release for that though.

Detailed list of changes

  • Allow Perl modules to be loaded from the _lib directory in the content repository. r557

  • Publishing feature to bring live sites up to date:

    • Do publishing work automatically, and change the daizu commands for publishing in different ways to be easier to understand. r612
    • Methods in generators to figure out what additional publishing work to do. r575, r587, r588, r589, r591, r597, r599, r600, r618
    • Track changes to URLs. r596, r638
    • Track changes to content. r597, r598, r600, r613
    • Output files are atomically moved into place, and old ones are only overwritten if the content has changed, to preserve modification times. r614, r615
    • Output files now have the execute permission if the file in the content repository is marked as executable. r593
  • Allow connection to remote content repository with svn: URL. r626, r630, r639, r643

  • Plugin changes:

  • New plugins:

  • Blog generator:

    • Refactoring to make it easier to subclass. r569
    • Correctly ignore blog articles hidden in _hide directories. r562
    • Number of articles shown on the homepage is configurable. r590
  • Correct use of xml:base in blog feeds. This fixes relative links and images in blog articles, at least for Bloglines and Google Reader. More details in a blog post. 605, r624

  • Google sitemaps:

    • Use the new XML namespace. r629
    • Rename URL method and configuration element to xml_sitemap and xml-sitemap respectively, since they are no longer specific to Google. r650
  • Do simple SSI processing when previewing output, in case your templates use SSIs to implement part of the site design. r560

  • Article loading:

    • Preserve comments in loaded article content. r567
    • Don't save unnecessary XML and DOCTYPE declarations. r633
  • Fix a bug which caused a database constraint breakage sometimes when an active URL changes from one file to another. Preserve redirects where the target URL is ‘gone’ in case it comes back. r581, r596

  • Bug fix for url-content command. r558

  • Fix UTF-8 encoding bug in preview script. r568

  • Work around bug in Encode module in Perl 5.8.4. r627

  • Make the update-all-articles command work if no working copy ID is specified. r632

  • Avoid unnecessary dependencies on other CPAN modules:

  • Don't unnecessarily use a temporary file when parsing XHTML. r564

  • Rewrite maps:

    • Fix bug affecting content of the map files. r579
    • Factor out the code for generating them. r583
    • Make it an error to use the same map filename more than once. r595
  • Template and style changes:

    • Fix layout problem in IE 6. r578
    • Navigation menu is more flexible about which of ‘title’ and ‘short title’ are available. r561
    • Show a link to the homepage of a blog in its navigation menu. r563
    • The links in the <head> of blog pages are now generated using the standard head/meta.tt template, and they are passed to it in a more flexible format. Blog pages which aren't articles no longer have bad previous or next links in. r566
    • New (by default empty) template for adding extra HTML at the end of the file, like Google Analytics code. r594
    • Include description and tags (‘keywords’) metadata in <meta> elements in the output. r602, r611
    • Only one set of next/previous links need to be provided on blog articles. r607
    • Data tables in articles are centered, and table captions are styled better. r608
  • Upgrade and downgrade scripts:

    • All now stored under the upgrade directory. r603, r609
    • The new upgrade script removes some unnecessary tables, and fixes an index. r604, r619

< Navigation menu in SSI | Related links metadata >