Bric::Changes(3p)     User Contributed Perl Documentation    Bric::Changes(3p)



NAME
       Bric::Changes - Bricolage Changes

DATE
       $LastChangedDate: 2007-08-09 10:44:19 +0200 (Thu, 09 Aug 2007) $

DESCRIPTION
       This document lists the Changes to Bricolage introduced with each
       release.

VERSION 1.10.3 "Finally" (2007-08-09)
   Improvements
       o   If "Term::ReadPassword" isn't found during installation, a better
           error message is displayed. [Scott]

       o   Added output channel name to "Could not find template" error
           message in the Mason Burner. [Paul Orrock]

       o   The contributed Linux start script (contrib/start_scripts/linux)
           now restarts the "bric_queued" server when the "restart" command is
           used and the "bric_queued" server is enabled. It also now also
           passes a log file name to "bric_queued" so that publishing errors
           can more easily be traced. [David]

       o   Overriding Mason inheritance in story element templates by setting
           $inherit in the "<%flags>" block now works correctly. Thanks to
           Alexey Sheynuk for tracking down the issue. Reported by Ashlee
           Caul. [David]

       o   Added start script for FreeBSD, contrib/start_scripts/freebsd.
           [David]

       o   Updated the Portuguese localizations. [Pedro Custodio]

       o   A story being published for the first time now has its
           "publish_status" set to true before it is published, instead of
           aftewards. This both prevents an exception when a template tries to
           save a story that has not been published before, and eliminates the
           need for templates to set the "publish_status" on a story before
           calling "publish_another()" for a another story that will search
           for the current story in the database. Reported by Rod Taylor
           (Ticket # 1230). [David]

       o   Related stories and media can no longer be added to container
           elements not based on related story and/or media element types.
           Reported by Marshall Roch (Ticket # 1231). [David]

       o   When the "ALWAYS_USE_SSL" bricolage.conf directive is enabled,
           Bricolage now sets up the non-SSL port to permanently redirect to
           the SSL port. This prevents users from removing the "s" from
           "https" and thus being able to use Bricolage insecurely when their
           administrators don't want them to. Reported by Joe Pletcher (Ticket
           # 1233). [David]

       o   Added "Autovacuum" section to Bric::DBA. The "autovacuum" settings
           in postgresql.conf are available in PostgreSQL 8.1 and later.
           [David]

       o   Improved verbose output in contrib/bric_media_upload to include
           bric_soap commands in output. Also now uses /usr/bin/perl instead
           of /usr/local/bin/perl to be consistent with other scripts and
           bricolage core. [Paul Orrock]

       o   Fixed an error message during inst/clone.pl where the wrong version
           was being displayed. [Scott]

       o   Added "make hot_copy", which will install a clone that uses
           hardlinks to the original installation for MASON_DATA_ROOT and
           MASON_COMP_ROOT.  This is useful for forking a production install
           into a development install (on the same box) without duplicating
           all of your media files.  Requires `cp` from GNU coreutils, so it
           will not work out of the box on BSD or OS X. [Marshall]

       o   Removed extra call to Category->list during cloning. [Scott]

       o   Added a "--site" option to "bric_dev_sync" to limit the templates
           and elements that are synchronized to one site. [Marshall]

       o   Various minor notes tweaks, including the elimination of version 0
           notes from the UI, and we no longer include the note from the
           previous version in the form for the new version. [David Beaudet]

       o   Added optional sortby parameter to $story->get_secondary_categories
           to allow sorting by uri. Returns default order if not given. [Paul
           Orrock]

       o   Fixed typo in 'Story' element type description. Reported (bug 1289)
           by Brad Harder. [Scott]

       o   Several German localization patches from Steffen Schwigon and
           improved buttons from Rolf Schaufelberger.

       o   Increased length of full names of categories to be 128 characters
           from 64 [Paul Orrock]

       o   When saving from the Keyword Profile, the message 'Keyword profile
           "Name" saved.' was using the previous Name instead of the updated
           one. [Scott]

       o   Made category browser show only categories in the same site as the
           story, fix for bug 1249. [Scott]

       o   Fixed bug 1251, the list of Element Types when uploading a new
           media from a related media subelement is constrained to those in
           the current site. [Scott]

       o   Added notes about PostgreSQL's genetic query optimizer and its hate
           for Bricolage queries to Bric::DBA. [David]

   Bug Fixes
       o   Fixed bug that resulted in an SQL error when trying to create a new
           contributor group. Reported by Joe Pletcher. [David]

       o   Fixed some foreign key constraints in the "story_instance" and
           "template_instance" tables that improperly have "ON DELETE SET
           NULL" clauses on "NOT NULL" columns. Reported by Andrei Arsu.
           [David]

       o   The "Trail" link in the template profile works again. Spotted by
           Marshall.  [David]

       o   If run as root, "make clone" now "chown"s the inst directory to the
           PostgreSQL user before becoming the PostgreSQL user, so that the
           user has permission to create the inst/Pg.sql file. [David]

       o   "make clone" no longer runs "distclean", and therefore no longer
           deletes inst/Pg.sql. It also creates the new Pg.sql in the new
           distribution directory, instead of replacing the existing Pg.sql.
           [David]

       o   Deleting categories via SOAP works again. Reported by Brad Harder.
           [David]

       o   Fixed loading of deprecated classes so that older templates that
           still use them will continue to work. [David]

       o   Removed "Teaser" field from the story search interface, since there
           is no such field, and so it did nothing, anyway. [David]

       o   Publishing media documents that have had new files uploaded to them
           no longer causes a publish failure. Reported by Christian Niles and
           numerous others.  [David]

       o   Added even more code to the
           "inst/upgrade/1.8.9/fix_publish_status.pl" upgrade script to better
           cover the possible variations in publish status inaccuracies. [Alex
           Howarth, David]

       o   The "Document Type/Output Channel" selection in the "Default Asset
           Sort" no longer breaks things. [David]

       o   Contributors with no more than the default role, "DEFAULT", who are
           associated with a story or media document, are once again correctly
           associated via the role. Reported by Chris Schults. [David]

       o   "Checkin and Shelve" works again in the story profile. Reported by
           Chris Heiland (Ticket # 1237). [David]

       o   Fixed a script that upgrades to 1.9.1 to better copy over default
           values for field types from the 1.8 schema. Those who have already
           upgraded to check to make sure that any default values you had for
           custom fields in 1.8 are still present in 1.10.x. Anyone who has
           yet to upgrade to 1.10.x will now have their default values
           properly copied to the new schema when they do decide to upgrade.
           Reported by Chris Schults (Ticket # 1239). [David]

       o   Story and media subelements are once again properly deleted from
           within their profiles when the "Delete this Profile" checkbox is
           checked and either the "Save" or the "Save and Stay" button is
           pressed. Reported by Chris Schults (Ticket #1240). [David]

       o   Searches by URI for media to relate to a document now properly
           remember the search results the next time the related media search
           page is loaded. Reported by Chris Schults (Ticket # 1241). [David]

       o   `make dev` no longer supports the "single" installation mode, since
           it will wipe out all of /usr/local/lib and /usr/local/bin. Reported
           by Christian Muise (Ticket # 1246). [David]

       o   The search interface for paginated searches no longer gets stuck
           when the alpha search preference is enabled. Reported by Neal Sofge
           (Ticket # 1247).  [David]

       o   Fixed contrib/bric_media_upload so that it works with 1.10
           categories and XML elements. [David, Paul Orrock, and George
           Harrison]

       o   Bricolage now assumes that template files uploaded in the template
           profile are encoded in UTF-8, since the same is assumed for
           templates pasted into the form field. [David]

       o   Fixed resource deletion code in Bric::DBA to properly use booleans
           for boolean columns. Reported by John Greene. [David]

       o   Eliminated "Use of uninitialized value in substitution (s///)"
           warning for stories with no slug and a URI format with "%{slug}" in
           it. Reported by Wayne Slavin. [David]

       o   bric_soap no longer prompts for a password if you use
           "--use-cookie-file".  Reported by Paul Orrock. [Scott]

       o   bin files should no longer be put under the default site script
           directory (compensates for an ExtUtils::MakeMaker change). [Scott]

       o   When a media document gets a new file uploaded with the same name
           as the previously published file in that same media document,
           Bricolage will no longer expire the new file right after publishing
           it. Reported by Chris Schults and others. [David]

       o   The delete checkbox and menu to move an asset to another desk no
           longer appear for assets listed on a desk that are checked out do a
           different user. [David Beaudet]

       o   Fixed bugs in "bric_dev_sync" resulting from the renaming of
           Elements to Element Types. [Marshall]

       o   Fixed an apparently old bug with editing keywords in the Category
           Profile, where you couldn't Save if there were exactly 3 keywords.
           [Scott]

       o   Fixed pasto in Bric::Util::Trans::SFTP that should have prevented
           it from ever working, but somehow did not. [David P. Beaudet]

       o   Fixed the datetime-handling regex in Bric::Util::Time's "datetime"
           function, introduced in version 1.9.0. It was failing on datetimes
           that end with 'Z' (c.f. ISO 8601). [Scott]

       o   Fixed bug 1258, where MIME types weren't being recognized. [Bret
           Dawson]

       o   Fixed bug 1283, allowing "<=" in Alerts. [Brad Fox]

       o   Fixed pasto causing "Can't locate object method "get_grp_ids" via
           package "id"" error in Element Profile. Reported by Matt Rolf.
           [Scott]

       o   When adding subelements to an ElementType profile, subelements that
           have already been added are no longer listed. Reported by Phillip
           Smith in bug 1253. [Scott]

       o   Stopped the upgrade script inst/upgrade/1.9.1/delete_old_stuff.pl
           from incorrectly deleting
           lib/Bric/App/Callback/Profile/ElementType.pm, which is still in
           use. If you've upgraded from before 1.9.1, you'll have to copy that
           file from the distribution source. [Scott]

       o   Changing the category of a media object now calls a preview of the
           asset if AUTO_PREVIEW_MEDIA is turned on. [Paul Orrock]

       o   For bug 1267, remove protocol+hostname+port from a login URL in
           order to allow reverse proxying to work in Apache2. [Steffen
           Schwigon]

       o   Fixed contributor type creation (bug 1299). [Greg Heo]

VERSION 1.10.2 "Summer" (2006-06-22)
   Improvements
       o   Added the "subelement_id" parameter to the story and media "list()"
           methods.  [David]

       o   Added placeholder for Japanese localization. Expect a translation
           soon!  [David]

       o   The "codeselect" field's Perl code can now return an array of array
           references or a hash reference, in addition to the previous support
           for an even-sized array reference. [David]

       o   Added a "Republish" checkbox and corresponding "Publish Checked"
           button to the Story and Media "Find" pages for stories and media
           not currently in workflow and to which the user has PUBLISH
           permission. Based on a patch from Serge Sozonoff. [David]

       o   Added tests for Bric::SOAP::Auth, although they haven't yet been
           integrated into "make devtest". [Scott]

       o   The number of items on a desk can now be displayed next to the
           desk's name in the navigation menu, e.g. "Edit (10)". This feature
           is configurable on a per-user basis via the new "Show Desk Asset
           Counts" preference. Based heavily on a patch from Alex Howarth.
           [Marshall]

       o   Updated README.MacOSX with instructions on how to use the built-in
           version of Apache instead of compiling everything yourself. Also
           fixed a broken link and an outdated warning about
           Apache::SizeLimit.  [Marshall]

       o   Internationalized the JavaScript messages for the Find/Replace
           dialog box, although there are currently no translations. [David]

       o   Added a close icon to the drag bar of the dialog box. This is
           useful when the dialog box is bigger than the browser window and
           the close button therefore is off-screen. [David]

       o   Optimized the "get_notes()" and "has_notes()" methods of
           Bric::Biz::Asset and therefore of the story, media, and template
           classes. [David]

       o   Aliases are now indicated in Find Stories by an arrow icon just
           before the story title. Suggested by Paul Orrock. [David]

       o   Added "PUBLISH_RELATED_FAIL_BEHAVIOR" bricolage.conf directive to
           be used when "PUBLISH_RELATED_ASSETS" is enabled. If the automatic
           publication of a related story or media document will not be
           possible then the publish request will fail. It can be changed to
           "warn", the previous behaviour, if required.  [Paul Orrock]

       o   Added the "Remove Frameset" link to the control bar next to the
           "Repreview" link in the preview window. [Paul Orrock]

       o   Deleted all of the outdated and unused .use files from sql/Pg.
           [David]

       o   Removed documentation of the "-t" option of bric_pgimport, which
           hasn't actually done anything for a long time, anyway. [David]

       o   Moved translation-specific JavaScript and CSS files into i18n
           folders under their respective folders in comp/media/. [Marshall]

       o   Slightly tweaked the background color on table rows to make them
           easier to read. [Marshall]

       o   Converted the group permissions editor to XHTML and CSS to fix some
           rendering glitches. [Marshall]

       o   Made word and character counts properly appear read-only, and
           repositioned the find/replace and cheat sheet buttons to the top
           right of the box. [Marshall]

       o   Object select lists (such as for story element types when creating
           a new story) will now display as scrolling lists if there are more
           than 50 items in the list, rather than 20 or more items. [David]

       o   Added a CSS ID to the "<body>" tag in the UI, of the form
           "bricolage_"VHOST_SERVER_NAME"", where "VHOST_SERVER_NAME" is the
           value defined in bricolage.conf. Use this ID when writing user
           stylesheets to override the look of the Bricolage UI (see
           SkinningBricolage in the Wiki) [Marshall]

   Bug Fixes
       o   Fixed the rarely-used "DISABLE_NAV_LAYER" bricolage.conf directive.
           [Scott]

       o   Fixed warnings in deprecated methods of
           Bric::Biz::Element::Container so that they are no longer fatal.
           Reported by Nate Perry-Thistle. [David]

       o   Fixed reverted media that led to the "Too many
           Bric::Biz::Element::Container objects found" error. It was supposed
           to have been fixed in 1.10.1, but that fix unfortunately only fixed
           stories. Reported by Tom Kjeldsen. [David]

       o   Fixed the "subelement_key_name" parameter to the story and media
           "list()" methods. [David]

       o   Fixed the "Search by Subelement" feature of story search. Thanks to
           Nate Perry-Thistle for the spot. [David]

       o   Fixed highlighting when sorting by Element on desks (bug 1185).
           [Brad Harder]

       o   The "Default Field" select list in Bulk Edit works again. Thanks to
           Tom Kjeldsen for uncovering the underlying problem. [David]

       o   The "throw_error()" method in Bric::Util::Burner works properly
           again. Thank to Paul Orrock for the spot and to Scott for revealing
           the solution. [David]

       o   The "Story Type" and "Media Type" options for sorting stories and
           media, respectively, on desks and on My Workspace, work again.
           Reported by Brad Harder. [David]

       o   The inst/upgrade/1.9.1/xtract_attype2.pl upgrade script now detects
           whether the database has been converted to use boolean columns and
           casts values moved from numeric columns accordingly. Reported by
           Brad Harder. [David]

       o   Fields that use the "codeselect" widget work again. Reported by
           Michael Glaesemann. [David]

       o   Fixed auto-publishing related media and stories so that relateds of
           relateds now correctly pull out all the items to be published,
           e.g., media related to story related to published story (bug 1190).
           [Paul Orrock]

       o   Updated inst/upgrade/1.9.0/no_more_numeric.pl so that it properly
           handles cases where PostgreSQL's dump does not use parentheses for
           casts. Reported by George Harrison. [David]

       o   Aliases no longer show up in the search results of the "New Alias"
           screen, since aliases can't be aliased. The "New Alias" screen now
           also shows the site a document belongs to if there are multiple
           sites. [Marshall]

       o   Fixed the appearance of template diffs. Insertions and deletions
           now have color and no longer show underlines and strikethroughs
           (bug 1171). [Marshall]

       o   Character counts in Bulk Edit are now properly updated after using
           Find/Replace. [Marshall]

       o   Pulldowns no longer improperly display as 32-items tall in the
           story/media profiles (bug 1178, reported by Alex Howarth). [Scott
           and Marshall]

       o   Fixed a bug where search results would get "stuck" when pagination
           is turned on. Thanks to Nate Perry-Thistle for the spot (bug 1166).
           [Marshall]

       o   Fixed a warning from bric_republish when run without a password.
           Thanks to John Gillis for the spot (bug 1188). [Marshall]

       o   Fixed the "Site" dropdown in searches to only require READ
           permissions rather than EDIT. Spot and quasi-patch by Chris Sutton.
           [Marshall]

       o   New fields now are properly configured with the their "multiple"
           attribute copied from the field type. [Alexey Sheynuk]

       o   New destinations can now be created via Bric::SOAP::Destination.
           [Christian Niles]

       o   Fields in an element that are based on field types deleted from the
           element type can now still be edited in Bulk Edit. Thanks to Nate
           Perry-Thistle for the spot. [David]

       o   New users can once again be created when using the LDAP
           authentication engine.  Reported by Christian Niles. [David]

       o   Using Internet Explorer to create a media document via a the upload
           field in a related media element no longer uses a full Windows file
           system path. Reported by Tom Kjeldsen. [David]

       o   Fixed caching issue with reversion of assets to earlier versions.
           [David]

       o   The category SOAP interface now allows the "<path>" XML element to
           not have a trailing slash, as was the case in Bricolage 1.8 and
           earlier. [David]

       o   Aliases are once again identifiable on desks by a different
           background color for the title, and now also with an arrow icon
           that appears just before the story title. [David]

       o   A field deleted from the contributor profile no longer continues to
           appear in the profile when pressing the "Save and Stay" button.
           Reported by Marshall.  [David]

       o   Eliminated an endless loop in prompting for the PostgreSQL user
           during installation when the "INSTALL_VERBOSITY" is set to "QUIET".
           [Rod Taylor]

       o   Contributors are no longer sorted by the "Name Format" preference's
           representation of the contributors' names in the interface to edit
           contributor associations. They are now properly sorted by
           association order. Reported by Bret Dawson. [David]

       o   Documents without cover dates (mainly created via the SOAP
           interface) will no longer have broken URIs. Reported by Christian
           Niles. [David]

       o   The Help and logo popup buttons works again in Internet Explorer.
           Reported by Chris Heiland. [David]

       o   Autosizing textarea fields now display full size in Internet
           Explorer when they have no content, instead of only 1 character
           wide. Reported by Paul Orrock. [David]

       o   The Bulk Edit and template code textarea fields no longer jump
           around as you type in IE 6. [David]

       o   The list of templates deployed is now reported properly after a
           successful deploy. [Paul Orrock]

       o   Searching by URI for related media works again. [David]

       o   The results when searching for media or stories to relate are no
           longer tied to the search for stories and media in general. [David]

VERSION 1.10.1 (2006-03-20)
   New Features
       o   Added a guide on how to profile Mason templates. See
           contrib/template_profiling. [Scott]

       o   Added ContribType, Destination, and Preference SOAP modules.
           [Scott]

       o   When a page finishes loading, the first text or textarea form field
           now automatically gets the focus. [David]

       o   Added upload and download feature to the template interface, so
           that templates can optionally be uploaded or downloaded. Suggested
           by Chris Sutton. [David]

   Improvements
       o   When a story is previewed, any related media are distributed to the
           preview server only if the "AUTO_PREVIEW_MEDIA" bricolage.conf
           directive is disabled or the media documents need to be previewed.
           [David]

       o   Added installation defaults for FreeBSD that will be used when the
           "USE_DEFAULTS" environment variable is set to "freebsd" during
           installation.  [Rod Taylor]

       o   Added a "make devclone" option which does the same as "make clone"
           but removes all of the locally previewed files, the data/obj files,
           staging and sandboxes. This means a large saving in download size
           for cloned production systems. [Paul Orrock]

       o   Added "ALLOW_URIS_WITHOUT_CATEGORIES" bricolage.conf directive to
           allow URI formats not to include "%{categories}", which is
           otherwise rquired. Use this directive with caution since it is not
           the recommended behaviour. [Paul Orrock]

       o   Added a tooltip to show the underlying Bricolage database ID when
           hovering over a UUID in a story profile. This feature complements
           showing the UUID when the hovering over the Bricolage ID in a desk
           view. [Paul Orrock]

       o   Changed the database columns for the "name", "key_name", and
           "description" attributes of
           Bric::Biz::ElementType::Parts::FieldType from "VARCHAR" to "TEXT",
           since some folks will have field types with names and key names
           longer than 32 characters. Reported by Nate Perry-Thistle.  [David]

       o   Created two new make targets, "install_files" and "install_db", to
           allow the files to be installed without doing anything with the
           database. Useful for packagers who need to let users manually
           create the database. [Marshall]

       o   Updated Bric::ElementAdmin to be conversant in the merging of
           element type sets and elements. That is, it now makes sense in the
           context of Bricolage 1.10. Reported by Ryan O'Toole. [David]

       o   The View/Edit link has been restored to stories, media, and
           templates on desks, and the title has been returned to its status
           as a preview link. The URI is no longer a link. [David]

       o   Made the "Upload" section of the media profile valid XHTML styled
           with CSS.  [David]

   Bug Fixes
       o   Removed call to deleted component comp/widgets/qa/qa.mc from the
           side navigation component. This was only an issue when the
           "QA_MODE" bricolage.conf directive was enabled. Reported by Derek
           Poon. [David]

       o   Fixed the typo "Distribintion" in the side navigation. Thanks to
           Christian Niles for the spot. [David]

       o   Fixed some errors in and rearranged the SOAP schema in Bric::SOAP.
           [Christian Niles]

       o   Fixed a foreign key constraint on "media_element.related_story__id"
           that was pointing to "media.id" instead of "story.id". Reported by
           Rod Taylor.  [David]

       o   Fixed localization errors such as, "Can't use "for Published" as a
           method name in bracket group," which appeared in searches and on
           desks. Thanks to Guido BA~XlskA~Xmper for the spot! [David]

       o   The database upgrade script now updates table permissions after
           executing all of the scripts for each version to be upgraded,
           rather than after all of the upgrade scripts have run, thus
           allowing later scripts to properly access tables created by earlier
           scripts. Reported by Nate Perry-Thistle. [David]

       o   Fixed some of the 1.8.9 upgrade scripts that run after the 1.9.x
           upgrade scripts to that they are properly compatible. [Nate Perry-
           Thistle, Rod Taylor, and David]

       o   Bric::Biz::ElementType loads again. [Nate Perry-Thistle]

       o   The "MEDIA_UNIQUE_FILENAME" bricolage.conf directive is now fixed
           so that the file name creation comes after the ID generation and
           therefore correctly saves the renamed file. [Paul Orrock]

       o   Fixed the UI display in Firefox and IE. Particularly Meta Assets
           displaying down the page in IE, stretching out the banner in desks,
           corrected side menu position in IE and removed reference to broken
           images left in from the CSS reworking. Also fixed textarea which
           was ignoring cols setting in IE and set textarea col width for bulk
           edit to 80 wide, rather than 30 (although it should expand with the
           window size in most browsers). [Paul Orrock]

       o   Fixed the history so that clicking the return button in the UI no
           longer goes back to the preview page when the preview page was the
           last page accessed.  [Paul Orrock]

       o   The XML generated when exporting element types via SOAP no longer
           includes the "top_level" element twice, thus avoiding mysterious
           "no sites defined" errors when attempting to import or update
           element types from that XML.  Reported by Nate Perry-Thistle.
           [David]

       o   Reverting stories and media no longer leads to occasional errors
           such as, "Too many Bric::Biz::Element::Container objects found".
           Reported by Simon Wilcox. [David]

       o   Disabled the "sticky" scroll bar in the story profile. It just
           didn't work very well. [David]

       o   The "Allow Multiple" checkbox and "Size" field in the "Add New
           Field" section of the element type profile work again. Reported by
           Rod Taylor and Paul Orrock. [David]

       o   Multiple select lists no longer break the story and element
           profiles, and can once again have their values properly changed
           from multiple to single to none.  Spotted by Rod Taylor. [David]

       o   Desk pagination is now properly styled. [David]

       o   Assets can once again be properly deleted from desks. [David]

       o   Silenced status messages when previewing a media document under the
           "AUTO_PREVIEW_MEDIA" bricolage.conf directive. Reported by Rod
           Taylor.  [David]

       o   Cancelling the checkout of an media document now deletes any new
           file that has been uploaded and, if the "AUTO_PREVIEW_MEDIA"
           bricolage.conf directive is enabled, re-previews the previous
           version of the media file. [David]

       o   The autopopulated fields for image element types are now created
           when a new image element type is created. This was made possible by
           moving the selection of media type (Image, Audio, Video, or Other
           Media) to the New Element Type screen, where it is now part of the
           "Content Type" select list, which also includes the Story and
           Subelement options. As a result, one can no longer change the media
           type in an existing element type (not that it ever made sense to do
           so). Reported by Paul Orrock. [David]

       o   Fixed the selection of text triggered by the Find dialog box on
           Mozilla and IE (although I find IE to be a bit broken in this way).
           [David]

       o   Fixed the size of the preview links on desks/My workspace. [David]

       o   Failed jobs can once again be cancelled. Reported by Rod Taylor.
           [David]

       o   Publishing multiple versions of a document before any of the
           publish jobs for those versions are executed no longer leads to
           publishing errors when the older version is published. Thanks to
           Rod Taylor for the spot! [David]

       o   The element trace generated for burn errors (those created by
           "$burner->throw_error()") now use the "place" attribute of the
           element where the error was thrown, rather than the "object_order",
           since "place" corresponds to the "Position" select list orderings
           in the UI, and therefore makes it much simpler to figure out where
           the error is. [David]

       o   Output channels with includes can now be created via the output
           channel SOAP interface. [David]

       o   Fixed the category SOAP interface to support post-1.10 URIs that
           support paths ending in a slash. [David]

       o   Fixed the publication of multiple documents at once from a publish
           desk so that documents that are both selected and related to other
           documents don't get skipped. [David]

       o   The "Find Templates" results now display the template URI rather
           than its file name, to be consistent with the template profile.
           Reported by Marshall.  [David]

VERSION 1.10.0 (2006-01-23)
   Improvements
       o   Eliminated letter graphics for "Published" and "Deployed" labels in
           story, media, and template managers in favor of localizable
           characters. [David]

       o   Moved the "display_pages()" method from subclasses to
           Bric::Util::Burner. Each subclass must implement a
           "display_element()" method for it to work; this means that it works
           for all current burners except the HTML::Template burner, which
           manages pages differently. This also fixed pagination issues in the
           Template Toolkit and PHP burners. [David]

       o   Completely updated Bric::Templates and Bric::AdvTemplates, with
           expanded API documentation and examples in Mason, Template Toolkit,
           and PHP. [David]

       o   Refactored the left navigation code to perform better and be easier
           to maintain. It now also sorts the admin menu items in alphabetical
           order by the localized name of each. [David]

       o   Updated the UI to fix Internet Explorer glitches. [Marshall]

       o   The Element Type profile is now much smarter about displaying site
           associations with an element type. If the user has access to only
           one site and the element type is associated with no more than one
           site, then the "Sites" section won't be displayed, but the primary
           output channel can be selected via a radio button among the list of
           output channels. If the user has access to more than one site or if
           the element type is associated with more than one site, the "Sites"
           section will be displayed and the primary output channel can be
           selected from a select list for each site. [David]

       o   The Element Type Manager now displays the key name for each
           element, in addition to its name, and instead of the its
           description. [David]

       o   Added "RELATED_DOC_POD_TAG" bricolage.conf directive, so that users
           don't have to be limited to seeing related stories and related
           media represented by "=related_story_uuid" and
           "=related_media_uuid". Just set it to "uuid", "uri", "url", or "id"
           to get a different tag. [David]

       o   Optimized comparison of new and old attribute values when setting
           attributes.  Based on an example sent by Curtis "Ovid" Poe. [David]

       o   Added "site" parameter for a site name to the list() methods of the
           story, media, and template classes. [David]

       o   Added republish_by_uri contrib script. [David and Mark]

       o   Field types can now have their widgets changed via the UI as well
           as via SOAP.  So you can change a "text" widget to "textarea", for
           example. [David]

       o   Fixed the options in the "Default Asset Sort" to be more up-to-
           date. [David]

       o   Updated the context-sensitive online help avaialable by clicking
           the "Help"button at the top of the Bricolage UI. [David]

VERSION 1.9.1 "Peeves" (2005-10-28)
   New Features
       o   Added support for the "ANY()" function to pass multiple possible
           values for a given parameter to the "list()", "list_ids()", and,
           where pertinent, "href()" methods in the following classes:

           Bric::Dist::Action
           Bric::Dist::ActionType
           Bric::Dist::Resource
           Bric::Dist::Server
           Bric::Dist::ServerType
           Bric::Util::Alert
           Bric::Util::Alerted
           Bric::Util::AlertType
           Bric::Util::AlertType::Parts::Rule
           Bric::Util::Event
           Bric::Util::EventType
           Bric::Util::Job
           Bric::Util::MediaType
           Bric::Util::Pref
           Bric::Util::Priv
           Bric::Util::UserPref

           [David]

       o   Added "serialize_to_pod()" and "update_from_pod()" methods to the
           container element class. These support a pseudo-pod syntax that
           enables a complete hierarchy of elements to be edited, including
           links to related stories and media, in a single stream of text.
           [David]

       o   Converted "Bulk Edit" in the UI to use the new POD syntax supported
           by the element classes and eliminated the old "Super Bulk Edit"
           interface since it became redundant. [David]

       o   Added the "Include deleted" checkbox to Advanced Search in "Find
           Stories," "Find Media," and "Find Templates" intefaces; this allows
           searching for and reactivating deleted stories, media, and
           templates. [Scott]

       o   Added the "Subelement" select list to the "Find Stories" interface,
           to allow searching on stories by the types of subelements they
           contain. [Scott]

       o   The "Order" and "OrderDirection" parameters to the "list()" methods
           of the story, media, and template classes can now be specified as
           array references so as to sort on more than one attribute. [David]

       o   Added "Order", "OrderDirection", "Limit", and "Offset" parameters
           to the "list()" method of Bric::Util::Event. [David]

       o   Added diff support to the UI to see changes between versions of
           templates, stories, and media documents. [David]

       o   Added JavaScript-powered Find/Replace dialog box to Bulk Edit in
           the element profile and to the template profile. The "Replace All"
           function should work very well everywhere, while the "Find"
           function relies on IE- and Mozilla-specific features to properly
           highlight found text in the textarea box searched. Other browsers
           will get an alert indicating at what character the match was found.
           [David]

       o   Added new "Code Select" custom field allows you to add arbitrary
           Perl code to generate the items in a select list. This is great for
           dynamically pulling in choices from another database, LDAP
           directory, or anything else you can get at from Perl code. [Scott]

       o   Added ability to shelve a story from a desk or My Workspace.
           [David]

       o   Added "reset()" method to Bric::Util::Job and a "Reset" checkbox in
           the job profile in the UI so that failed jobs can easily be re-
           attempted. [David]

       o   Added "Cheat Sheet" dialog box to Bulk Edit that displays the
           entire hierarchy of available subelements and fields as the pseudo-
           pod "tags" available for use in bulk editing content. [David]

   Improvements
       o   Added "related_story_id" and "related_media_id" parameters to the
           "list()" method of the story and media classes to search for
           stories and media that have a given story or media ID or list of
           IDs as relateds. Based on a patch from Rod Taylor. [David]

       o   Moved story, media, and template notes into a column in the
           appropriate instance table, instead using attributes, and then
           removed the story, media, and template attribute objects. This is a
           much more efficient use of the database and eliminates a lot of
           cruft. [David]

       o   Added "has_notes()" method to Bric::Biz::Asset (and therefore its
           story, media, and template subclasses) as a more efficient way of
           determining whether an asset has notes for any of its versions than
           calling the "get_notes()" method. [David]

       o   Added "note" parameter to the "list()" method of the story, media,
           and template classes. Unlike most of the parameters, this one will
           return assets with "any" of their versions having a note matching
           the "note" parameter.  [David]

       o   Updated search documentation and wrote tests for:

           Bric::Dist::ActionType
           Bric::Util::Alert
           Bric::Util::Alerted
           Bric::Util::AlertType::Parts::Rule
           Bric::Util::Event

           [David]

       o   The new "Repreview" iframe now works for the links in subelements,
           too.  [David]

       o   Category and story URIs now all end in a slash. This is so that
           they all behave consistently with root categories and home page
           URIs, and so that they properly indicate directories. Note that
           this does not apply if the "STORY_URI_WITH_FILENAME" bricolage.conf
           directive has been enabled.  Note to Templaters: You may need to
           modify your templates to take into account that story and category
           URIS now end in a slash, if you were appending a slash in your
           templates or searching on category URIs for related stories.
           [David]

       o   Now require Perl 5.8.0 or newer. Realistically it should only be
           5.8.3 or newer. [David]

       o   Added support for searching on UUIDs to the story and media
           classes. [David]

       o   Added support for searching on URIs in the story class and modified
           the same parameter in the media class to search all possible URIs
           for media, not just the URI associated with the primary output
           channel. [David]

       o   The select list of fields and subelements that can be added to an
           element now lists all of the fields and subelements in alphabetical
           order. [David]

       o   Improved JavaScript word and character counts in Bulk Edit so that
           they're actually accurate, including when POD tags are present.
           [David]

       o   The word and character counts in Bulk Edit are now kept up-to-date
           as you type. [David]

       o   Added the current element object to exception object in
           "throw_burn_error" and, by extension the burner "throw_error()"
           method. Now a kind of breadcrumb trail will illustrate where in the
           element hierarchy of a story a burn error was thrown. (Note: this
           only works for exceptions thrown by "throw_burn_error".) [Scott]

       o   Fixed the "get_data()" and "get_container()" element methods so
           that, in list context, they return "undef" instead of an empty list
           when there is no corresponding field or element. This will be
           especially useful in templates, where it will prevent errors such
           as Mason's, "Odd number of parameters passed to component expecting
           name/value pairs." [David]

       o   Renamed the "related_instance_id" attribute of elements to
           "related_story_id", for parity with "related_media_id"--not to
           mention the "get_related_story()" method. The
           "get_related_instance_id()" and "set_related_instance_id()"
           accessor methods remain in place for purposes of backwards
           compatibility. [David]

       o   Renamed "Element" to "Element Type" and "Element Type" to "Element
           Type Set".  This is to avoid confusing element types, which define
           the structure of elements, and elements, which are contain content
           and are based on element types. These are not ideal names, but at
           least we now have something different to call them. The old
           "get_element()" method and the accessors that get and set
           "element_id" or "element__id" have also been renamed to
           "get_element_type()" and to access "element_type_id". [David]

       o   Changed the attributes and objects that refer to the
           Bric::Biz::ElementType::Parts::FieldType object in
           Bric::Biz::Asset::Parts::Tile::Data from "element_data_id" and
           "get_element_data()" to "field_type_id" and "get_field_type()".
           [David]

       o   Made the scroll bar "sticky" in the Story Profile, so that when you
           save a story, the reload will scroll back to the same spot in the
           story profile where you left odff. [Scott]

       o   Added a "dialog box" widget for generating JavaScript-driven dialog
           boxes. The buttons are nicely styled to match the Bricolage UI, and
           can be configured to trigger JavaScript functions. Dialog boxes can
           also be dragged around the browser window by grabbing their title
           bars. Used by the new Find/Replace and Bulk Edit Cheat Sheet
           features, but will likely be used in other contexts in the future.
           [David]

       o   Normalized story and media elements and fields so that they no
           longer store copies of their names, key names, and
           descriptions--and, in the case of fields, the autopopulated and
           sql_type attributes--since these are actually element type and
           field type attributes easily referenced in the element type and
           field type tables. This change significantly reduces the size of
           the database and has the potential to increase performance when
           getting and setting field values, especially during publishes.
           [David]

       o   Major refactoring of the field types class,
           Bric::Biz::ElementType::Parts::FieldType.  Attributes that describe
           how fields should be displayed are no longer stored in a separate
           attribute object, but as true attributes of field type objects.
           This makes them much more efficient in terms of database access.
           [David]

       o   Added fuller management of field types in the Element Type Manager,
           such as supporting the setting of a default value in a checkbox
           field in the field profile. [David]

       o   Added much more fine-grained field type management to the Element
           Type SOAP interface. More field attributes can now be updated via
           SOAP. For example, one can now change the widget type from "text"
           to "textarea". These improvements are thanks to the normalization
           of the element type and field type classes.  Note that there are a
           number of new XML elements, and some of the existing ones have
           changed names, but we have tried to preserve backwards
           compatibility as much as possible. [David]

       o   Added many new tests for the element type, field type, and element
           classes.  [David]

       o   Renamed "Element Data" to "Field Type". [David]

       o   Renamed a number of tables and appropriate foreign key columns,
           indexes, constraints, and the like, to better reflect the names
           used for these things in general. The tables renamed are:

           element to element_type
           at_type to field_type
           story_container_tile to story_element
           story_data_tile to story_field
           media_container_tile to media_element
           media_data_tile to media_field
           formatting to template

           [David]

       o   Fixed a bunch of inconsistently named foreign key indexes. [David]

       o   Renamed the Element and Element Type classes as follows:

           o   Bric::Biz::AssetType is now Bric::Biz::ElementType.

           o   Bric::Biz::AssetType::Parts::Data is now
               Bric::Biz::ElementType::Parts::FieldType.

           o   Bric::Biz::Asset::Business::Parts::Tile is now
               Bric::Biz::Element.

           o   Bric::Biz::Asset::Business::Parts::Tile::Container is now
               Bric::Biz::Element::Container.

           o   Bric::Biz::Asset::Business::Parts::Tile::Data is now
               Bric::Biz::Element::Container.

           They now properly reflect what they're called in the UI, in SOAP,
           and in the database. The old classes have been changed to simply
           inherit from the new classes, so as to maintain backwards
           compatibility. [David]

       o   Changed various "get_data()", "set_data()" "del_data()" and such
           methods to "get_field_types()", "get_value()", "set_value()",
           "add_field_types()", etc., to disambiguate fields from field types
           more consistently. These changes are to the interfaces of
           Bric::Biz::ElementType, Bric::Biz::ElementType::Parts::FieldType,
           and Bric::Biz::Element::Container. The old methods are of course
           left in place for purposes of backwards compatibility.  [David]

       o   Added "get_values()" and "set_values()" methods to the field class
           (Bric::Biz::Element::Field) to make getting and setting multivalue
           fields easier and more centralized. [David]

       o   Removed the unused and meaningless "referenced" attribute from
           Bric::Biz::ElementType. [David]

       o   Removed the unused and meaningless "publishable" and "map_type_id"
           attributes from Bric::Biz::ElementType::Parts::FieldType.  [David]

       o   Turned Bric::Biz::ATType into an appendix: something that's there,
           and may have served a purpose in the past, but isn't needed now.
           All of its attributes have been moved to Bric::Biz::ElementType,
           and you should still be able to get the ATType object from existing
           elements, but new elements won't need it anymore. It has been
           removed from the UI, but the SOAP interface and the class itself
           remain for now. Bric::Biz::ATType will be completely removed in a
           future version of Bricolage. [David]

       o   The Element Type profile no longer displays the "Sites" section if
           there is only one site, and no longer displays the output channel
           section if there is only one output channel. [David]

       o   Renamed Bric::SOAP::ElementType to Bric::SOAP::ATType,
           Bric::SOAP::Element to <Bric:SOAP::ElementType>, and
           Bric::App::Callback::Profile::ElementData to
           Bric::App::Callback::Profile::FieldType.  [David]

       o   Added support for typical Windows character encodings. This means
           that users can select "Windows Western (CP1252)" as their encoding
           in order to fix gremlin characters pasted from Microsoft Word.
           [David]

       o   It is now fatal to submit characters in an invalid encoding. For
           example, if a user is using UTF-8 (the default) but pastes the
           contents of a Word document with an m-dash (a CP1252 character),
           Bricolage will now throw an exception. It probably threw an
           exception from the database in the past, but now we're throwing one
           earlier. The solution for such a user is to of course select the
           proper encoding in their "Character Set" preference. [David]

       o   New categories now inherit all group memberships and permissions
           granted to access assets in the category from their parent
           categories. This makes it far easier for users with CREATE
           permission to categories to create new categories without having to
           then edit group memberships and user group permissions to make them
           the same as the parent's permission, which is what is usually
           wanted. Of course, existing categories are unaffected, and if user
           needs different group memberships or permissions than the parent,
           she will still have to edit them. [David]

       o   bric_republish now uses the "published_version"
           Bric::SOAP::Workflow parameter to always republish the last version
           of a story to be published.  This means that even if a story is
           checked out, it can be republished without interfering with the
           checkout.

       o   The User and Contributor managers in the UI now use the List Name
           Format preference to display the whole names for users and
           contributors. This allows users to easily see whatever name parts
           they need by simply changing their List Name Format preferences.
           [David]

       o   Alert emails now use an email address, if one can be found, for the
           user who triggered the alert event for the From header in the alert
           email. The "ALERT_FROM" bricolage.conf directive is still used as
           the fallback.  [David]

       o   The "pre_path" and "post_path" attributes of output channels have
           been eliminated, since they can now be used directly in the URI
           formats. [David]

       o   The admin tools are now listed in alphabetical order in the side
           navigation of the UI. [David]

       o   Added "get_primary_category()" alias for "get_category()" in the
           media document class so as to make it more like the story class,
           thus making dispatch simpler. [David]

       o   Users creating media documents from within a related media element
           (because the "RELATED_MEDIA_UPLOAD" bricolage.conf directive has
           been enabled and they have the proper permissions) are now
           redirected to the "New Media" profile when the new file has been
           uploaded, so that the element type, category, cover date, priority,
           etc. can be changed. [David]

       o   Story and media cover dates are now versioned. [David]

       o   Output channels are now associated with burners and can only
           include other output channels associated with the same burners.
           Element types are no longer associated with burners at all. [David]

       o   Renamed Bric::Biz::Asset::Formatting to Bric::Biz::Asset::Template.
           [David]

       o   Added the "TT_OPTIONS" bricolage.conf directive to allow Bricolage
           administrators to pass template toolkit directive options to the
           Template object when it is instantiated by the Template Toolkit
           burner. [David]

       o   Added the "COMPILE_EXT" option to the instantiation of the Template
           Toolkit object in the Template Toolkit burner. This will cache
           compiled versions of the templates so that they do not have to be
           parsed and compiled every time a story is published. This should
           make the TT burner substantially faster.  [David]

       o   Publish and distribution jobs are now tied to a specific version of
           a story or media document, rather than the media document itself.
           This will allow a whole series of publishes for versions of a
           document to be scheduled for execution over time, as well as help
           to protect currently checked-out documents from being mysteriously
           removed from workflow by scheduled publishes being executed.
           Sponsored by Freerun Technologies. [David]

       o   Searches now are remembered for each manager in the UI for as long
           as a session lasts. So if you perform a search for element types,
           and then do a search for stories or output channels, the last
           results you saw in the element type manager will be there again
           when you return to it. [David]

       o   Eliminated need for HTTP::BrowserDetect, since the UI is now
           completely browser-neutral. [David]

       o   Media files can now be uploaded in the New Media profile. [David]

       o   Added events for adding subelement element types to element types.
           [David]

       o   Any symbols exported by "PERL_LOADER" code, plus those exported by
           "Bric::Util::DBI qw(:junction)", are now imported into the Template
           Toolkit stash for direct use in Template Toolkit templates, and
           into the PHP global context for direct use in PHP templates. For
           example, the "ANY" function can now be used directly in TT
           templates and as "$ANY()" in PHP templates. The burner constants
           "PUBLISH_MODE" and "PREVIEW_MODE" can also be used
           "$PUBLISH_MODE()" and "$PREVIEW_MODE()" in PHP) if the default
           "PERL_LOADER" in bricolage.conf is left in place. But TT can't have
           multiple symbols with the same names, so for each symbol exported,
           it adds to the stash the first one it finds in this order: CODE,
           HASH, ARRAY, IO, GLOB, FORMAT, and SCALAR. Use of imported
           functions in PHP templates requires PHP::Interpreter 1.1.0 or
           later. [David]

       o   The story, burner, element, and content variables are now globals
           in PHP templates, rather than each being stored in a global $BRIC
           associative array, which is now gone. This brings the style of PHP
           templates more in line with that of Mason and Template Toolkit
           templates. [David]

VERSION 1.9.0 "Punkin" (2005-08-19)
   New Features
       o   Added "MASON_INTERP_ARGS" bricolage.conf directive to allow
           arguments to be passed to the Mason template interpreter. [Scott]

       o   Added support for sub-second precision to date and time management
           in Bricolage. This means that dates can be stored in the database
           with microsecond precision. This was done by modifying Bricolage's
           date and time handling to use the DateTime module from CPAN under
           the hood. The upshot is that you can use the full suite of
           "strftime" formats supported by DateTime, including the formats for
           milliseconds and microseconds. Sponsored by Alinghi.  [David]

       o   Added new "Precision" option to DateTime fields added to elements
           and contributor types. The supported precisions are "Year",
           "Month", "Day", "Hour", "Minute", "Second", "Millisecond", and
           "Microsecond". For purposes of backwards compatibility, the default
           precision for custom DateTime fields is "Minute". Sponsored by
           Alinghi. [David]

       o   Added "preview_another_all_ocs()" and "blaze_another()" to
           Bric::Util::Burner. The former executes a preview for all of the
           output channels a document is associated with. The latter takes a
           document for its argument and calls "publish_another()" in
           PUBLISH_MODE and "preview_another_all_ocs()" in PREVIEW_MODE.
           [Serge Sozonoff]

       o   Added $INSTALL_VERBOSITY makefile environment variable that, when
           set to "QUIET", eliminates many of the questions asked during
           installation and cloning, falling back on the default values. [Rod
           Taylor & Andrea Rota]

       o   Added $USE_DEFAULTS makefile environment variable that, when used
           with $INSTALL_VERBOSITY, will use platform-specific answers to all
           of the installation questions. This allows for completely silent,
           customizable installations, which are necessary for packagers.
           [Marshall]

       o   Added "make dev" makefile target for installing a development
           version straight out of a Subversion checkout. It performs a
           standard installation, then symlinks bin/, comp/ and lib/ back to
           the Subversion checkout. [Marshall]

       o   Added "RELATED_MEDIA_UPLOAD" bricolage.conf directive that allows
           editors to upload media files directly into an element profile if
           they have permission to create media and to access a media
           workflow. This makes it a much simpler process for editors to
           quickly associate media with story documents. The uploaded media
           files will be created based on the media type element selected from
           a select list, and given the same category, cover date, and
           priority as the current document. Enabled by default. [Joa~o Pedro
           and David]

       o   Added the element type and output channel modules to the SOAP
           interface.  [Scott]

       o   Added the "ENABLE_GZIP" bricolage.conf directive to turn on
           compression of the UI pages through "mod_gzip". This results in
           pages as much as fifteen times smaller, with minimal extra server
           load. If "mod_gzip" is found during installation, the appropriate
           "LoadModule/AddModule" lines will be added to httpd.conf. Disabled
           by default. Suggested by Rod Taylor. [Marshall]

       o   Added "Show Alpha Search" preference that determines whether the
           alpha search ("A | B | C | ... [All]") links should be shown. The
           alpha search isn't very useful because you can type the first
           letter in the textbox (or "%" for "All") for the same results, and
           it supports only the ASCII alphabet. Alpha search is now off by
           default. [Marshall]

       o   Added "MEDIA_UNIQUE_FILENAME" bricolage.conf directive to allow the
           file name of media documents to be set to a unique, automatically
           generated file name on upload, (off by default). Also added the
           "MEDIA_FILENAME_PREFIX" directive for setting a prefix word, such
           as "media", to be prepended to the file name if desired (off by
           default). [Paul Orrock / Digital Craftsmen]

       o   Added support for the "ANY()" function to pass multiple possible
           values for a given parameter to the "list()", "list_ids()", and,
           where pertinent, "href()" methods in the following classes:

           Bric::Biz::ATType
           Bric::Biz::AssetType
           Bric::Biz::AssetType::Parts::Data
           Bric::Biz::Category
           Bric::Biz::Contact
           Bric::Biz::Keyword
           Bric::Biz::Org
           Bric::Biz::Org::Parts::Addr
           Bric::Biz::Org::Person
           Bric::Biz::Org::Source
           Bric::Biz::OutputChannel
           Bric::Biz::OutputChannel::Element
           Bric::Biz::Person
           Bric::Biz::Person::User
           Bric::Biz::Site
           Bric::Biz::Workflow
           Bric::Biz::Workflow::Parts::Desk
           Bric::Util::Grp

           More classes will support it soon! [David]

       o   Added support for associating secondary categories and output
           channels when cloning a story. Sponsored by Alinghi. [David]

       o   Added support for adding secondary output channels to a new clone
           by selecting a group of output channels. All output channels in
           that group that are allowed by the story element will be associated
           with the clone. This is an easy and accurate way to add a bunch of
           output channels to a clone at once. Users must have READ access to
           each listed output channel group. Sponsored by Alinghi.  [David]

       o   Added "MEDIA_UPLOAD_LIMIT" bricolage.conf directive for setting a
           size limit on uploaded media files. [Scott]

       o   The URI formats are now more flexible. You can now use many more
           parts of the cover date in the URI, and in whatever format you
           like. So you could have a format of "/%{categories}/%Y-%m-%d/" and
           end up with the URI "/foo/bar/2004-09-22/" if you wanted. Or even
           "/%{categories}/%Y/%V/" to get the week number as part of the URI.
           You can also include your own text, similar to the URI Prefix and
           URI Suffix fields, anywhere in the URI (e.g.  foobar in
           "/%{categories}/%Y/%m/foobar/%{slug}/". Suggested by David.
           [Marshall]

       o   Added a frame on top of the preview window with a "Repreview" link.
           This is useful for previewing changes when you're developing
           templates. Rather than having to save the template, go back to the
           workspace, repreview, and then go back to the template profile, you
           can preview the story, then edit the template and click "Repreview"
           as necessary after each save. [Marshall]

       o   Added a pluggable authentication system. New authentication engines
           can be created by simply implementing a module named
           "Bric::Util::Auth*", where "*" is the name of the authentication
           scheme. The new scheme can then be used by adding it to the new
           "AUTH_ENGINES" bricolage.conf directive. By default only the
           existing authentication scheme is used. Sponsored by Kineticode.
           [David]

       o   Added support for authentication to Bricolage against an LDAP
           server. The new "LDAP_*" bricolage.conf directives make it simple
           to configure Bricolage to authenticate against any LDAP server.
           Includes support for authenticating users only if they are members
           of a specific user group in the LDAP database.  Users must still
           exist in Bricolage, however. Sponsored by Kineticode. [David]

       o   Added support for multiple WYSIWYG editors. The "ENABLE_HTMLAREA"
           bricolage.conf directive has been replaced by the "ENABLE_WYSIWYG"
           and "WYSIWYG_EDITOR" directives. You can now choose between
           htmlArea 3 and the new Xinha, a more active fork of htmlArea
           (recommended). More editors possibly coming soon. See Bric::Admin
           for details. [Marshall]

       o   Added "AUTO_PREVIEW_MEDIA" bricolage.conf directive. Enabling this
           directive allows media files uploaded to a media document to be
           distributed to all relevant preview servers as soon as the media
           document is saved. Sponsored by Alinghi. [David]

       o   Added a PHP burner. Implemented by George Schlossnagle of Omni TI
           consulting.  Sponsored by PT.com. [George Schlossnagle]

       o   Added UUIDs to story and media documents. A UUID is a universally
           unique identifier. The format for UUIDs has been described in RFC
           4122, ITU-T Rec.  X.667 and ISO/IEC 11578:1996. In Bricolage, they
           are generated by Data::UUID.

   Improvements
       o   Creating a template that was deactivated now reactivates it instead
           of just giving an error message. [Scott]

       o   The "User Override" screen has been integrated into the "Users"
           screen since the two pages are mostly redundant except for a few
           links. [Marshall]

       o   User overrides are now recorded in the event log. Suggested by
           David.  [Marshall]

       o   The UI now shows which user is logged in and includes a link to the
           user's profile at the top of each page, above the log out button.
           Suggested by Philip Brown. [Marshall]

       o   All of the old "NUMERIC" columns have been removed from the
           database and replaced with the more appropriate (and faster)
           "INTEGER", "SMALLINT", and "BOOLEAN" data types. [Neil Conway &
           David]

       o   Added "exclude_id" parameter to the "list()" methods of the story,
           media, and template classes. This parameter can be used to exclude
           one or more asset IDs from the list of objects returned by the call
           to "list()" and friends.  Suggested by Curtis Poe. [David]

       o   The "get_desk_stamps()" method in the asset classes has been
           removed (it was deprecated in Bricolage 1.8.4). The same goes for
           the "required_satisfied()" method in Bric::Biz::Workflow. Thanks to
           Marshall Roch for the spot! [David]

       o   Users now must have at least READ permission to sources to add them
           to stories. If upgrading from an earlier version of Bricolage, for
           purposes of backward compatibility, members of the "All Users"
           group (that is to say, all users) will be granted READ access to
           all sources. Change this permission to limit access as appropriate.
           For new installations of Bricolage, the default "Story Editors" and
           "User Producers" groups have READ permission to all sources.
           Suggested by Simon Wilcox. [David]

       o   There is now a "Preserve Template" (disabled by default) option in
           Bulk Edit that retains leading spaces, trailing spaces, and line
           breaks. With this option set, you can, for example, paste in poetry
           without it all ending up on one line. [Marshall]

       o   URI formats now require that the categories be a part of the
           format. [David]

       o   When using the command line tools, you can now opt to be prompted
           for your password rather than entering it on the command line,
           which would store your plain text password in the shell history.
           [Marshall]

       o   Added tests for the burners. This was important for thoroughly
           testing the new PHP burner, but it will keep the other burners
           functioning well from here on in, as well. [David]

       o   Moved the "burn_again" attribute from Bric::Util::Burner::Mason to
           Bric::Util::Burner, since it could be useful to other burners, and
           since Bric::Util::Burner had knowledge of it, anyway. [David]

       o   The HTML::Template burner now sets parameters for all attributes of
           a story as returned by the "my_meths()" method of the story class,
           rather than just the story title. So, for example, you can now use
           <tmpl_var primary_uri> or <tmpl_var cover_date> with out creating a
           .pl template to set them up.  [David]

       o   Refactored the separate "_add_resource()" methods in each of the
           burner subclasses int Bric::Util::Burner itself. [David]

       o   Arguments can now be passed to the "display_element()" method of
           the Template Toolkit burner and they will be set up as variables in
           the stash of the execution context of the element template.

       o   Category templates in the HTML::Template burner now cascade just
           like in all the other burners, rather than stopping at the first
           category template found in the category URI. Users of
           HTML::Template templates should take note of this if they have more
           than one category template in their category URIs.  [David]

       o   The HTML::Template burner now has access to both the related story
           and the related media URIs via the "rel_story_uri" and
           "rel_media_uri" variables.  The old "link" variable has been
           deprecated, since it cannot handle an element that has both a
           related media and a related story. [David]

       o   Major interface clean-up. The UI is finally mostly valid XHTML and
           uses CSS for all styles. The "USE_XHTML" directive, added in 1.7.0,
           is no longer used.  The file sizes of some pages have been reduced
           by as much as 70%, offering improved page load times. Also, it will
           now be much easier to customize colors, etc. by customizing the CSS
           stylesheet. [Marshall]

       o   The desks/My Workspace have been slightly modified to be more
           usable. Most notably, the "View" and "Edit" links (depending on
           checkout status) have been moved to the asset's title, where the
           preview link formerly was, the "Category" line has been replaced
           with "Primary URI", and the URI itself is the preview link. Also,
           the "Site" line now only shows up when there is more than one site.
           [Marshall]

       o   Added "MASON_STATIC_SOURCE" bricolage.conf directive to enable
           static sources in the Mason-powered UI. Enabling this directive can
           eliminate many file system stats on every request, thus increasing
           performance. It's disabled by default, but you should turn it on
           now! [David]

       o   Changed the names of the attributes in Bric::Biz::AssetType and
           Bric::Biz::AssetType::Parts::Data that have double underscores to
           have only single underscores. The double underscores are still
           supported for the sake of backwards compatibility, but are no
           longer required. [David]

       o   Updated search documentation and wrote tests for:

           Bric::Biz::Contact
           Bric::Biz::AssetType::Parts::Data
           Bric::Biz::Org::Parts::Addr
               [David]

VERSION 1.8.11 (2006-06-19)
   Improvements
       o   The "throw_error()" burner method now accepts a list of arguments
           for an error message, rather than only a single argument. It will
           concatenate them all together so that you don't have to. [David]

       o   Added check to require
           "Bric::Biz::Asset::Business->add_contributor"'s first argument to
           be a "Bric::Util::Grp::Parts::Member::Contrib" if it's an object
           (it could also be an ID). [Scott]

       o   Added README.Ubuntu. [Christian Muise]

       o   Silenced warnings from Net::SFTP when distributing via SFTP.
           [David]

       o   The metadata for related media now include preview links. The same
           goes for the metadata about a media document when editing a
           subelement of that media document in the media profile. [David]

       o   The status message when a document is published now reports the
           site with which the document is associated, to help distinguish
           documents from their aliases in the status message. Reported by
           Marshall. [David]

       o   Added "get_site()" to Bric::Biz::Asset, and therefore to the story,
           media, and template classes. Suggested by Marshall. [David]

       o   Added support for the the "oc_id" parameter to Bric::Dist::Resource
           to simplify looking up stale story and media files for expiration.
           [David]

   Bug Fixes
       o   My Workspace now remembers the sort order of assets just as well as
           desks do.  [David]

       o   Added more code to the "inst/upgrade/1.8.9/fix_publish_status.pl"
           upgrade script to better cover the possible variations in publish
           status inaccuracies.  [Brad Fox, Brad Harder, & David]

       o   Distribution via any mover other than "File System" now correctly
           strips off port numbers from the host name. This is most useful
           when using FTP, SFTP, or WebDAV to distribute to a preview server
           serving content from an alternate port. Reported by Doug Dawson.
           [David]

       o   If run as root, "make clone" now becomes the PostgreSQL system user
           before cloning the database, so that it should work properly where
           PostgreSQL is configured to use "ident" authentication. [David]

       o   The list of desks that appear for a given workflow in the
           navigation iframe are now properly updated when a new desk is added
           to the workflow. [Alexey Dvoychenkov]

       o   The side navigation no longer shows the "New Alias" links to users
           who don't have the proper permissions (CREATE on the start desk).
           (bug 1203) [Marshall]

       o   The code of a template no longer disappears when you click "Trail"
           in the Template Profile. (bug 1204) [Marshall]

       o   bric_soap is now more intelligent about parsing IDs from XML
           elements with either single or double quotes, and from multiple
           tags. [Christian Niles and David]

       o   Failing to fill in either the "To" or "Bcc" fields of an Email
           distribution action no longer throws you back a screen, but stays
           in the Email action profile. Reported by Scott. [David]

       o   Fixed media publishing so that when a media document is published
           to more than one output channel, and there are differences in the
           URIs for that media document between the output channels, that they
           won't trigger the expiration of each other's files. Reported by Rod
           Taylor. [David]

       o   Fixed bug where users granted CREATE permission were unexpectedly
           allowed to PUBLISH items on the Publish Desk. [Christian Niles]

       o   bric_queued now works with all burners, not just the Mason burner.
           Reported by Christian Niles. [Scott]

       o   A required field deleted from an element definition will now be
           deletable in the stories and media in which it appears, instead of
           remaining required. [Rod Taylor]

       o   Adding a new source to a group when you create it no longer causes
           an error.  Thanks to Alex Howarth for the spot! [David]

       o   Changing an asset note and then going back to the notes screen
           before saving the asset now properly shows the changed note instead
           of the old note.  Reported by Phillip Smith. [David]

       o   New categories created via the SOAP interface with underscores in
           their URIs no longer end up with backslashes in the URIs. Reported
           by Ashlee Caul.  [David]

       o   Users attempting to access the "New Alias" link without permission
           to create an alias will now be told so, instead of getting an
           error. Reported by Marshall. [David]

       o   Status messages now properly appear after saving or deleting a
           contributor type. Reported by Marshall. [David]

       o   The "get_attr_hash()" method of Bric::Util::Attribute now excludes
           deleted attributes from its return value. [David]

VERSION 1.8.10 (2006-03-16)
   Improvements
       o   Changed (hopefully optimized) the buffer size when reading in files
           on media upload. [Scott]

       o   The installer no longer prompts for the PostgreSQL system username
           if the PostgreSQL server is not running on the local box. It
           therefore also no longer becomes that user in such cases. This will
           simplify installing Bricolage onto a remote PostgreSQL server.
           [David]

       o   The Jobs manager now sorts pending jobs by scheduled time rather
           than name.  [David]

       o   Desks now remember the sort order you selected when you last
           visited them, for the duration of a single login to Bricolage.
           [David]

       o   When adding contributors based on a type that allows multiple
           roles, you no longer have to select the role if the contributor has
           only one role. Suggested by Phillip Smith. [David]

   Bug Fixes
       o   Eliminated errors inserting array references fetched from image
           info while uploading and saving new image files. Reported by
           Michael Holden. Also documented extra methods not previously
           documented in Bric::App::MediaFunc. [David]

       o   Fixed typo in the final message after an upgrade completes.
           Reported by Nate Perry-Thistle. [David]

       o   Fixed a 1.8.9 upgrade script that adds a foreign key constraint to
           the "element_member" table so that it properly tests for the
           foreign key constraint before it tries to add it. Reported by Wayne
           Slavin. [David]

       o   Refined a few other upgrade scripts, with thanks to Rod Taylor.
           [David]

       o   Bric::Biz::Person::User loads again under bric_queued. [David]

       o   The thumbnail-generating code now tries even harder to determine
           the media type of a file, thus more likely supporting files that it
           might not have been able to support before. [Rod Taylor]

       o   bric_republish no longer reverses the meaning of its
           "--published-only" option. [David]

       o   Publishing via SOAP works again. It was broken in 1.8.9, where it
           would appear to succeed, but no story or media would ever actually
           be distributed. [David]

       o   Updated the Bricolage users list email address and archive link in
           Bric::Admin/INSTALL. Reported by Michael Cummings [David]

       o   Sort ordering on desks is no longer forgotten over multiple pages
           of assets on a desk. Thanks to Phillip Smith for the spot! [David]

       o   Changed the title of the Trail page from "Desk Stamps" to "Trail."
           Reported by Scott. [David]

       o   It is now possible to look up stories, media, and templates by
           version IDs other than the current version ID. [David]

VERSION 1.8.9 (2006-01-23)
   Improvements
       o   Added missing foreign key constraints and indexes on the
           "category_keyword", "story_keyword", "media_keyword",
           "element_member", and "media_contributor" tables. This should make
           keyword lookups, at least, much faster. [David]

       o   When a story or media document is published with an expiration date
           earlier than the publish date, the UI will now properly report that
           the document has been "expired", rather than "published". Thanks to
           Simon Wilcox for the spot.  [David]

       o   The Bulk Publish interface in the UI now displays the name of the
           site alongside the category if there is more than one site, so as
           to disambiguate the list of categories. Reported by Marshall Roch.
           [David]

       o   Added constraints to the story and media tables in the database to
           prevent the publish status from becoming out of sync with the
           publish date and first publish date. [David]

       o   Changed code to show the first displayable data field of a
           subelement when viewing or editing an asset as opposed to only text
           fields. [Paul Orrock]

       o   Bric::SOAP::Workflow's publish method now schedules a publish job
           instead of immediately publishing, thus allowing the "publish_date"
           parameter to actually work, and ensuring that the proper version is
           published. [David]

   Bug Fixes
       o   Fixed misnamed and/or missing keyword foreign keys on the
           "category_keyword", "story_keyword", and "media_keyword" tables.
           [David]

       o   Documents created or updated via SOAP will now set the publish date
           to the same value as the first publish date if the latter is set
           and the former is not. [David]

       o   The Burner "publish()" method now sets the publish date to the
           current date and time if it was not specified via an argument. This
           will hopefully fix instances of stories and media in the database
           with the "first_publish_date" set but not the "publish_date".
           [David]

       o   The version 1.8.8 upgrade script that moves media files around no
           longer fails when the media directory doesn't exist (because no
           media documents have been created). Reported by Wayne Slavin.
           [David]

       o   Upgrades no longer fail if $BRICOLAGE_ROOT is not set and the
           instance of Bricolage to be upgraded is somewhere other than
           /usr/local/bricolage.  Reported by Nate Perry-Thistle. [David]

       o   Backported database upgrade permissions changes from Bricolage 1.10
           so that the permissions are set for the super user for upgrade
           scripts such as inst/upgrade/1.8.7/move_media.pl and as the
           PostgreSQL user only when an upgrade script loads
           inst/upgrade/lib/bric_upgrade.pm. Thanks to Nate Perry-Thistle for
           reporting the permissions bug with the 1.8.7 upgrade script.
           [David]

       o   Fixed file names for files uploaded by MSIE on Windows. Again.
           Reported by Wayne Slavin. [David]

       o   Modified the "set_publish_status()" and "set_published_version()"
           methods of Bric::Biz::Asset::Business so that they each make sure
           that the other is set. This will hopefully prevent only one from
           being set. [David]

       o   A media document that has a file uploaded to it before it is ever
           saved will no longer cause it to store the media file in a
           directory without an ID mapping it to the media document. This only
           affected installations where media were created by some method
           other than the Bricolage UI or SOAP. Reported by Rod Taylor.
           [David]

       o   Story and Media on the search result page are now correctly sorted
           by the "Default Asset Sort" preference, or title if the preference
           is not set. [Paul Orrock]

       o   Removed commented-out SQL that was appearing at the end of
           inst/Pg.sql. The comment style, "/* */", caused problems with
           PostgreSQL 7.3 and earlier.  Reported by Jerry Franz, with the
           underlying problem identified by "aander07".  [David]

       o   Media file names are now URI-escaped for inclusion in the URIs
           returned by "get_uri()" and "get_primary_uri()". Reported by Alexey
           Sheynuk. [David]

       o   The burner now looks up existing resources (files) by both file
           system path and URI, instead of just the file system path, since
           the combination of the path and the URI are globally unique, not
           just the path. Reported by Paul Hyland. [David]

       o   Publishing a document with a related document, where the related
           document is still at version 0 (because it has never been checked
           in), now properly displays a message indicating that the related
           document cannot be published because it is checked out. [David]

       o   Removed testing code from the default book_review.mc template on
           the file system (not present in the template in the database) that
           was put in place before the release of 1.8.6. [David]

       o   Eliminated an error in the permissions screen when a site with
           workflows has been deleted. Reported by Frank Febbraro. [David]

       o   Fixed the "help on event logs" link in the Trail help page.
           Reported by Scott.  [David]

       o   If a desk or My Workspace does not have assets of a particular type
           (stories, media, or templates) on it, it will no longer display
           buttons for them.  Reported by Scott. [David]

       o   Fixed the sorting menus for templates on desks. Also fixed them for
           all assets on desks so that sorting on categories sorts by URIs
           (which are displayed) rather than names. Template sorting issues
           reported by Scott. [David]

       o   Adding a variable to the message in an alert type now properly
           triggers the update of the message character count. Reported by
           Scott. [David]

       o   Changed the media type for the files in the JavaScript directory
           from "application/x-javascript", which Safari 2.03 didn't seem to
           like, to "text/javascipt", which is what it should have been all
           along, anyway. [David]

       o   Fixed sorting of SQL files for concatenation into inst/Pg.sql so
           that it should now always be in the right order, regardless of the
           local system's locale settings. This issue only applied to those
           running "make dist" or "make inst/Pg.sql", since distributions
           already have inst/Pg.sql. [David]

       o   URIs are now always constructed with the cover date reflecting the
           global Time Zone preference, rather than the setting from a user's
           overriding Time Zone preference. This prevents URI conflicts and
           makes searches for URIs with dates in them consistent. Reported by
           Li Li. [David]

VERSION 1.8.8 (2005-10-27)
   Bug Fixes
       o   Fixed thumbnail URIs broken in 1.8.7. [David]

       o   Fixed the "media expire" event. [David]

       o   Media documents with more than one file version are no longer
           expired as soon as they're published. Reported by Wayne Slavin.
           [David]

       o   Added upgrade script to adjust the file names of media files in the
           resource table in the database to be in sync with the new names on
           the file system introduced in 1.8.7. [David]

       ##############################################################################

VERSION 1.8.7 (2005-10-24)
   Improvements
       o   The installer now prefers typical installation paths over those in
           the $PATH environment variable when searching for Apache and
           PostgreSQL installations. This is to favor servers installed
           manually over those included with the operating system. [David]

       o   Added a partial index on the "comp_time" column of the job table so
           as to speed up lookups of jobs yet to be completed. This was
           originally in a 1.6.7 upgrade script, but never made it into the
           SQL for new installations.  Suggested by Mark Jaroski. [David]

       o   The Bulk Publish feature in the UI now only publishes the
           previously published versions of unexpired stories and media,
           rather than the latest version of expired and unexpired stories and
           media, thus avoiding errors when documents are checked out. [David]

       o   If a story passed to the "publish_another()" or "preview_another()"
           burner methods is the same as the story currently being burned, it
           will no longer be published or previewed again by
           "publish_another()" or "preview_another()", thus mitigating the
           possibility of infinite loops. [David]

       o   Added an "Expired" event for when stories and media are expired.
           Suggested by Joshua Edelstein. [David]

   Bug Fixes
       o   The Template Toolkit and HTML::Template burners work again. [David]

       o   Fixed syntax error in Bric::Util::Trans::SFTP. Reported by Kenneth
           Marshall.  [David]

       o   Eliminated "Subroutine Bric::App::Handler::rethrow_exception
           redefined" warning during startup with HTML::Mason 1.30. [David]

       o   Fixed the "no_site_id" parameter to Bric::Biz::Asset::Formatting
           when specified using the "ANY()" function. [David]

       o   Fixed an error in comp/widgets/wrappers/sharky/header.mc caused by
           having a custom field beginning with a leading underscore. [Scott]

       o   Errors thrown when setting element field values will now be
           displayed as error messages within the context of the element
           profile, rather than throwing a fatal exception. This is useful for
           invalid dates, for example. [David]

       o   The SOAP interface for categories now properly checks for and sets
           as appropriate the "active" attribute on categories being created
           or updated.  Reported by Phillip Smith. [David]

       o   Updated for compatibility with PostgreSQL 8.1. [David]

       o   Defunct media files are now properly removed from the delivery
           server whenever a media document's file name has changed. Reported
           by Brad Fox. [David]

       o   Clicking the "Return" button when viewing a subelement in a story
           or media document not checked out by the user no longer drops into
           edit view. Reported by John Greene. [David]

       o   Attempting to create a category with the same URI as an existing
           but deactivated category once again fails with a useful error
           message rather than a database exception. Reported by Marshall.
           [David]

       o   New elements and fields will now have any leading or trailing white
           space trimmed, rather than converted to underscores. Reported by
           Scott Lanning.  [David]

       o   Multiple select list custom fields no longer throw an exception
           when you select more than one value for the default value. Reported
           by Scott. [David]

       o   In a story or media profile, deleting a subelement with the same ID
           as a field (or vice-versa) will no longer delete both. Reported by
           Scott Lanning. [David]

VERSION 1.8.6 (2005-07-19)
   Improvements
       o   Added JavaScript code to validate that the username in the user
           profile does not have leading or trailing spaces. [David]

       o   When started by the super user, bric_queued now runs as the same
           user as the Bricolage Apache server. This allows it to run as a
           user that isn't otherwise available as a login on the system (such
           as the typical "nobody" or "www" user). [David]

       o   Added support for starting bric_queued in the Linux startup script
           in contrib/start_scripts/. [David]

       o   The "get_related_story()" and get_related_media() methods of the
           element class now return "undef" in a list context when there is no
           related asset.  [David]

       o   Events in the event log are now returned (and displayed) in reverse
           chronological order. [David]

       o   The SOAP server now uses a user's template sandbox when executing
           previews (such as with "bric_soap --to-preview workflow publish").
           Reported by Marshall. [David]

       o   A job no longer throws an exception when it can't get a lock on
           itself for execution. This is because the inability to get a lock
           may well be due to a race condition with another process. There's
           no need to throw an exception when it can't get a lock because
           another process has a lock. So it generates a warning, instead.
           Reported by Bill Cappell. [David]

       o   Bric::Biz::Workflow now caches calls to "allowed_desks()". This
           will allow desks to render much Faster, since most assets on a desk
           will list the same desks in the "Move to" select lists. [David]

       o   When the "PUBLISH_RELATED_ASSETS" bricolage.conf directive is
           enabled, aliases are now also republished. Only aliases that have
           previously been published will be republished, and only the last
           published version will be republished, rather than any versions
           created since the last publish.  Suggested by Serge Sozonoff.
           [David]

       o   Added the "secret" parameter to the "list()", "list_ids()", and
           "href()" methods of Bric::Util::Grp. [David]

       o   The "set_page_extensions()" method of the burner class now provides
           a list of duplicate extensions in the exception thrown when
           duplicate extensions are passed to it. [Paul Orrock]

       o   A story or media document published with an expire date earlier
           than the scheduled publish time no longer bothers with the publish
           but just expires the story or media document. [David]

       o   When two events in a list have the same timestamp, they are no
           longer listed in order by ID relative to each other, but relative
           to ID descending, to ensure that the one logged first will be
           listed after the one logged next.  [David]

       o   Media documents without an associated media file will no longer be
           displayed in the search results when attempting to relate a media
           document to an element.  Reported by Adam Rinehart. [David]

       o   When a template is moved to a new category, its ACL is now properly
           updated in the cached copy in the user's session, as well as in the
           database. [David]

       o   Changed the "published_version" parameter to the "list()" method of
           Bric::Biz::Asset::Template (the template class) to
           "deployed_version", but kept "published_version" as an alias.

       o   Optimized "path" and "parent" searches in the Category "list_ids"
           SOAP method. [David]

   Bug Fixes
       o   The SOAP server now properly includes the start desk when it checks
           CREATE permissions for creating stories, media, or templates.
           Reported by Alexandra Gershman. [David]

       o   Form validation and group management now properly work in the user
           profile.  [David]

       o   Fixed the "story__category" table to use the correct sequence for
           the id column's default value (although the default is never used,
           this is a good precaution). Reported by Paul Orrock. [David]

       o   Stories and media documents now better pay attention to the letter
           case specification of output channels when returning URIs. Thanks
           to Jose Castro for the spot. [Marshall]

       o   Stories now properly set the letter case of file names in URIs when
           "STORY_URI_WITH_FILENAME" is enabled. Reported by Jose Castro.
           [David]

       o   The bricolage.conf "PERL_LOADER" directive now works properly with
           bric_queued. [David]

       o   The SFTP mover now works with "bric_queued". [David]

       o   Fixed misspelled database index name. Spotted by Scott. [David]

       o   Error messages are now properly localized in "bric_queued". [David]

       o   Stories updated via SOAP to change categories will no longer leave
           the old categories associated with the story. [David]

       o   Media uploads no longer sometimes fail with an SQL error. [Rod
           Taylor]

       o   "All Types" now properly shows up at the top of the Types select
           list in the Advanced Search. [Marshall]

       o   Creating media with related stories via the SOAP interface will no
           longer cause the bizarre "Could not find httpd.xml" error. Reported
           by Curtis Poe.  [David]

       o   Removed possible circular processing of story and media documents
           when creating new story or media documents via SOAP. [David]

       o   Previewing and publishing multipage stories created through
           bric_soap now properly burn all of the pages. [Scott]

       o   Cloned stories now properly set the "published_version" attribute
           to "undef" rather than the value of the original story, thus
           preventing the clone from having a published version number greater
           than its current version number.  Reported by Nate Perry-Thistle
           and Joshua Edelstein. [David and Nate Perry-Thistle]

       o   The bric_media_upload contrib script now uses the site argument (if
           there is one) to search for categories. This will prevent it from
           finding a category in one site but not the upload target site.
           [David]

       o   Fixed two bugs with "bric_template_diff". "File::Spec::Functions"
           now properly exports "catfile()" and "--from--site" and "--to-site"
           now properly search on the site rather than the output channel.
           [Ovid]

       o   When a category is added to a story that creates a URI conflict,
           the new category does not remain associated with the story in the
           story profile after the conflict error has been thrown. Reported by
           Paul Orrock. [David]

       o   The "alias_id" parameter to the "list()" method of the story and
           media classes has been documented. [David]

       o   Usernames are now SQL-escaped before being looked up when a user
           attempts to log in. The prevents errors when, for example, there
           are two users named "food" and "foo_", and "foo_" attempts to login
           and gets a failure. [David]

       o   All calls to "lookup()" methods by the SOAP server that pass string
           values to look up (such as category URIs and site, workflow, and
           desk names) are SQL escaped so as to prevent conflicts similar to
           those noted above for usernames.  Reported by Scott Lanning.
           [David]

       o   Contributor groups created in the contributor profile are no longer
           missing from the contributor manager search interface. Reported by
           Rachel Murray and Scott. [David]

       o   "ANY()" now works properly for the "output_channel_id" parameter to
           the list() method of the story and media classes. Reported by Serge
           Sozonoff.  [David]

       o   The favicon.ico works again. [David]

       o   Stories are now properly expired when the "BRIC_QUEUED"
           bricolage.conf directive is enabled. Reported by Scott. [David]

       o   When a template is checked out of the library and then the checkout
           is canceled, it is no longer left on the desk it was moved into
           upon the checkout, but properly reshelved. Reported by Marshall.
           [David]

       o   Media created with the default "Image" and "Photograph" media type
           elements will now properly supply a "Lock val" check box for
           autopopulated fields.  Reported by Marshall. [David]

       o   Super Bulk Edit now works for media as well as stories. Reported by
           Scott.  [David]

       o   The description attribute of stories, media, and templates is now
           properly limited to 1024 characters in the UI. Reported by Scott.
           [David]

       o   When a template is moved to a new category, the old version of the
           template is undeployed when the new version is deployed to the new
           category. The versions in the sandbox are properly synced, as well.

       o   Eliminated a compile-time warnings from
           contrib/bric_media_upload/bric_media_upload. [David]

VERSION 1.8.5 (2005-03-18)
   Improvements
       o   Added the "checked_in" parameter to the "lookup()", "list()", and
           "list_ids()" methods of the story, media, and template classes. If
           passed a true value, this parameter causes the checked in version
           of the most current version of the story to be returned. When a
           story is checked out, there are two instances of the current
           version: the one checked in last, and the one currently being
           edited. When the "checked_in" parameter is a true value, then the
           instance last checked in is returned, rather than the instance
           currently checked out. This is useful for users who do not
           currently have a story checked out and wish to see the story as of
           the last check in, rather than as currently being worked on in the
           current checkout. If a story is not currently checked out, this
           parameter has no effect.

   Bug Fixes
       o   Previews on non-checked out stories and media work again. [David]

       o   Preview and views once again preview a story or media document as
           it was last checked in, rather than as it might be currently being
           worked on in a current checkout. [David]

VERSION 1.8.4 (2005-03-18)
   Improvements
       o   Made story profile's subelement 'Preview In' output-channel list
           consistent with the top level one (e.g. editing a Page shows the
           same preview OCs as editing the Story at the top level). [Scott]

       o   Added Linux startup script contrib/start_scripts/linux. [David]

       o   Added "version_id" parameter to the "list()" methods of the story,
           media, and template classes. Oversight reported by Kang-min Liu.
           [David]

       o   Distribution via SFTP is now atomic and respects the
           "FTP_UNLINK_BEFORE_MOVE" directive. Spotted by Patrick Michael
           Kane. [David]

       o   Related story and media elements managed through the SOAP server
           can now use a combination of URI and site ID to identify related
           assets in addition to the existing approach of using story and
           media IDs. [David]

       o   Email sent by Bricolage now set the send date, since our
           understanding is that the MUA is responsible for setting the date
           and some SPAM filters trigger on missing Date: headers. [Cameron
           Miller]

       o   The media type manager now validates media type names to ensure
           that they are of the form "type/subtype" with no spaces. Suggested
           by Marshall Roch. [David]

       o   When started up by the super user, the virtual FTP server now runs
           as the same user as the Bricolage Apache server. This should
           prevent malicious users of the virtual FTP server from being able
           to do things as the root user that they shouldn't. [Keith Grennan]

       o   SQL errors encountered when building the database are now fatal,
           meaning that they will cause the entire installation to fail,
           rather than continuing to execute SQL statements and build an
           incomplete database. This prevents the creation broken databases
           when people didn't notice errors in the past.  [David]

       o   A list of subelements is now less likely to mysteriously become out
           of order and thus lead to strange action-at-a-distance errors. And
           even if they do become out of order, the error message will be more
           appropriate ("Warning!  State inconsistent" instead of "Can't call
           method 'get_name' on an undefined value"). Reported by Curtis Poe.
           [David]

       o   Updated mail list information in Bric::Hacker. Reported by Marshall
           Roch. [David]

       o   The SOAP media interface now supports creating relationships
           between the media documents elements and other story and media
           documents, just like the SOAP story interface does. [David]

       o   The SOAP interface now supports Related stories and media on story
           type and media type elements just as in the UI. This involved the
           somewhat hackish necessity for including the "related_story_id" and
           "related_media_id" (or "related_story_uri" and "related_media_uri")
           attributes in the "elements" XML element, but it does the trick.
           [David]

       o   The list of elements to select from when creating a new template is
           now in alphabetical order. [David]

       o   The XML representation of media documents used by the SOAP server
           now supports the media type of the file. [David]

       o   The "multi" install destination is now the default, rather than the
           "single" install destination. The two styles ("multi" and "single")
           are now also better described during installation. [David]

       o   When the installer prompts for database passwords, it no longer
           echoes them to the terminal. Suggested by Marshall. [David]

   Bug Fixes
       o   Versions of Perl that disallow the use of the "-I" argument in a
           setuid environment will no longer cause the upgrade to fail.
           Reported by Serge Sozonoff. [David]

       o   The new support for a false value to the "checked_out" parameter to
           the "list()" methods of the story, media, and template classes is
           now properly supported by the SOAP "list_ids" method, as well.
           [David]

       o   Calls to publish documents via SOAP will no longer fail if the
           "published_version" attribute is not specified and the document to
           be published has never been published before. [David]

       o   The Bricolage virtual FTP server will no longer fail to start if
           Template Toolkit is installed but its version number is less than
           2.14. Reported by Adam Rinehart. [David]

       o   Fixed a bug where nothing would ever publish if you had
           "PUBLISH_RELATED_ASSETS" enabled in bricolage.conf. [Mark]

       o   Added "slug" to the list of attributes specified in the error
           message for a non-unique URI in a story. Thanks to Rachel Murray
           for the spot! [David]

       o   Fix in the SOAP server code to adjust for changes in
           Exception::Class 1.20.  [David]

       o   Stories and Media created or updated via the SOAP interface will
           now associate contributors of the appropriate type, instead of "All
           Contributors". [Scott & David]

       o   Deleting an element that has a template no longer causes an error.
           Thanks to Susan for the spot! [David]

       o   Eliminated encoding errors when using the SOAP interface to output
           stories, media, or templates with wide characters. Reported by
           Scott Lanning. [David]

       o   Fields with a an empty string or 0 (zero) for their values will no
           longer be displayed as "Not defined" when viewing a story. [David]

       o   Reverting (stories, media, templates) no longer gives an error.
           Reported by Simon Wilcox, Rachel Murray, and others. [David]

       o   Publishing a published version of a document that has a later
           version in workflow will no longer cause that later version to be
           mysteriously removed from workflow. This could be caused by passing
           a document looked up using the "published_version" to "list()" to
           "$burner->publish_another" in a template. [David]

       o   The SOAP server story and media interfaces now support elements
           that contain both related stories and media, rather than one or the
           other. [David]

       o   Attempting to preview a story or media document currently checked
           out to another user no longer causes an error. Reported by Paul
           Orrock. [David]

       o   Desk asset buttons are no longer broken in non-English
           localizations. Thanks to Scott Lanning for the spot! [David]

       o   Subelements will be properly deleted when selecting a "Delete"
           checkbox and clicking "Save" or "Save and Stay" in the story or
           media profile. It always worked in the element profile, and now
           it's consistent across document profile interfaces. Spotted by
           Scott Lanning. [David]

       o   Custom fields with default values now have their values included
           when they are added to stories and media. Thanks to Clare Parkinson
           for the spot! [David]

       o   The "get_desk_stamps()" method in the asset classes has been
           deprecated (it never worked, anyway) and will be removed in
           Bricolage 1.10.0. The same goes for the "required_satisfied()"
           method in Bric::Biz::Workflow. Thanks to Marshall Roch for the
           spot! [David]

       o   Subclasses of the media class no longer cause errors when
           distributing files via "bric_queued". Thanks to Jason Edgecombe for
           the spot! [David]

       o   Elements created via SOAP now correctly have site IDs associated
           with them.  [David]

       o   The "All" alphabetical search now properly escapes the "%" wild
           card character. Thanks to Frank Holtz for the spot! [David]

       o   The "bric_queued" script now requires a username and password and
           will authenticate the user. This user will then be used for logging
           events. All events logged when a job is run via the UI are now also
           logged by "bric_queued". [Mark and David]

       o   Jobs now get a "Job Created" event logged when they are created.
           Reported by Rachel Murray. [David and Mark]

       o   Eliminated "Use of uninitialized value in pattern match (m//)"
           warnings when uploading media files. Reported by Scott Lanning.
           [David]

       o   Preview redirections now use the protocol setting of the preview
           output channel if it's available, and falls back on using "http://"
           when it's not, instead of using the hard-coded "http://". Thanks to
           Martin Bacovsky for the spot! [David]

       o   The "has_keyword()" method in the Business class (from which the
           story and media classes inherit) now works. Thanks to Clare
           Parkinson for the spot!  [David]

       o   Templates that abort during calls "preview_another()" now properly
           abort when not using "PREVIEW_LOCAL". [Paul Orrock]

       o   Clicking a link in the left-side navigation after the session has
           expired now causes the whole window to show the login form, rather
           than it showing inside the nav frame, which was useless. [Marshall]

       o   The names of media types (a.k.a. MIME types) can now be changed
           without encountering an error. Thanks to Marshall Roch for the
           spot! [David]

       o   Media type MIME Type names are now properly required in the UI.
           [David]

       o   Fixed typo in the virtual FTP server which was causing an error
           when saving a template. [Keith Grennan]

       o   The JavaScript that validates form contents once again works with
           htmlArea, provided htmlArea itself is patched. See
           <http://sourceforge.net/tracker/index.php?func=detail&aid=1155712&group_id=69750&atid=525656>
           for the htmlArea patch. As of this writing, you must run the
           version of htmlArea in CVS. [David & Marshall]

       o   The JavaScript that handles the double list manager has been vastly
           optimized.  It should now be able to better handle large lists,
           such as a list of thousands of categories. Reported by Scott.
           [Marshall]

       o   Logging now works properly with the virtual FTP server. [Keith
           Grennan]

       o   Some cases in which it was impossible to add actions to a
           destination have been fixed. Reported by Marshall Roch. Thanks to
           Jason Edgecombe for making available a server that exhibits the
           problem. [David]

       o   The virtual FTP server no longer saves a template for every line in
           the template when the FTP client uses ASCII mode. Thanks to Keith
           Grennan for the spot! [David]

       o   Reverting a template to a previous version now properly updates to
           the reverted version on the user's sandbox. Also, canceling a
           checkout now properly removes a template from a user's sandbox.
           [David]

       o   When creating a new workflow, the workflow profile no longer
           forgets the selected site when you click the "New Desk" button.
           [David]

       o   Changing a template in such a way that it will be deployed to a new
           location (by changing the category, for example) once again deletes
           the previous version from the previous location when it is
           deployed. [David]

       o   Uploading a new image to a media document with a different media
           type than the previous image no longer causes an Imager error.
           [David]

VERSION 1.8.3 (2004-11-09)
   Improvements
       o   "make clone" now ignores files in the source directory that start
           with "bricolage-". This should prevent copying previous clones into
           the new clone. [David]

       o   Added contrib/thumbnails/precreate-thumbs.pl script to pre-create
           thumbnails from images. Useful for upgraders. [Scott]

       o   Added primary key to the "event_attr", "element__site",
           "story_uri", and "media_uri" tables in the database. This will make
           it easier to do database replication. [David and Kenneth Marshall]

       o   Added contrib/bric_import_contribs to import contributors from a
           tab-delimited file. Development by Kineticode, sponsored by the
           RAND Corporation. [David]

       o   Added the "published_version" parameter to the "list()" methods of
           the story, media, and template classes. This parameter forces the
           search to return the versions of the assets as they were last
           published, rather than the most recent version. This will be most
           useful to those looking up other documents in templates and
           publishing them, as a way of avoiding pulling documents out from
           other anyone who might have them checked out! [David]

       o   For those using the Template Toolkit burner, the required version
           is now 2.14, so as to take advantage of the improved Unicode
           support in that version.  [David]

       o   All publishing and distribution jobs are now executed in their own
           transactions when they are triggered by the user interface. This is
           to reduce the chances of a deadlock between long-running publishing
           transactions.  [David]

       o   The installer now requires PostgreSQL 7.3 or later. This is because
           7.2 hasn't worked properly with Bricolage since 1.8.0. [David]

       o   Optimized SQL queries for key names or that order by string values
           to use indexes in the "list()" and "list_ids()" methods of the
           story, media, and template classes. [David]

       o   The installer will now fail to install if the version of Apache is
           greater than version 1--that is, it will refuse to install under
           Apache 2 (for now).  [David]

       o   Added Russian localization. [Sergey Samoilenko].

       o   Changed the foreign keys in the story, media, and formatting
           (template) tables so that "DELETE"s do not cascade, but are
           restricted. This means that before deleting any source, element,
           site, workflow, or other related object that has a foreign key
           reference in an asset table, those rows must be deleted.
           Otherwise, PostgreSQL will throw an exception. Hopefully, this will
           put a stop to the mysterious but very rare disappearance of stories
           from Bricolage.  [David]

       o   The distribution monitor, bric_dist_mon, no longer populates HTTP
           headers with lists of Job IDs for execution. Instead, it simply
           sends a request to the distribution handler, and
           Bric::Dist::Handler looks up the jobs to execute itself. This fixes
           an issue with too many headers being put into the request, and
           makes the operation of Bric::Dist::Handler more efficient. [David]

       o   A call to "$burner->publish_another" in a template that passes in a
           date/time string in the future now causes a publish job to be
           scheduled for that time, rather than immediate burning the document
           and then scheduling the distribution to take place in the future.
           Reported by Ashlee Caul. [David]

       o   Improved context-sensitive help for the "New Template" profile.
           [Paul Orrock and David]

       o   Make slug actually be required when "ALLOW_SLUGLESS_NONFIXED" isn't
           enabled, in particular on the clone page. Thanks to Dharmender
           Yadav at Enabling Dimensions for part of the patch. [Scott]

       o   Removed the hack that commits a database transaction in the middle
           of a request that does a "Check in and Publish", since we now
           require PostgreSQL 7.3 and the bug that the hacked worked around
           was fixed in that release.  [David]

       o   Added missing constraint to the "type" column of the "workflow"
           table. [David]

       o   Changing the sort order of a list of items in a search interface
           now properly reverses the entire collection of object over the
           pages, rather than just the objects for the current page. Thanks to
           Marshall for the spot! [David]

   Bug Fixes
       o   The localization libraries load without error again. Added tests to
           ensure that this doesn't happen again. [David]

       o   Publishing stories not in workflow via the SOAP server works again.
           [David]

       o   Documents that the SOAP workflow publish finds in workflow but not
           on a desk (which shouldn't happen, but sometimes does) are now just
           published anyway.  [David]

       o   The Burner object's "encoding" attribute is now setable as well as
           readable.  [David]

       o   The category browser works again. [David]

       o   Fixed the "event" table to use the correct sequence the for they id
           column's default value (although the default is never used, this is
           a good precaution).  [David]

       o   Fixed Media Upload bug where the full local path was being used, by
           adding a 'winxp' key to Bric::Util::Trans::FS to account for an
           update to HTTP::BrowserDetect. [Mark Kennedy]

       o   A call to "$element->get_elements" in an array context when the
           element contains no subelements no longer returns an array
           reference. Reported by Clinton Gormley. [David]

       o   Fix bug 839 so that categories can be deleted. [Scott]

       o   Instances of a required custom field in story elements is no longer
           required once it has been deleted from the element definition in
           the element manager.  Reported by Rod Taylor. [David]

       o   A false value passed to the "checked_out" parameter of the "list()"
           and "list_ids()" methods of the story, media, and template
           (formatting) classes now properly returns only objects or IDs for
           assets that are not checked out.  [David]

       o   The cover date select widget now works properly in the clone
           interface when a non-ISO style date preference is selected. Thanks
           to Susan G. for the spot!  [David]

       o   By forcing the upgrade scripts to execute as the PostgreSQL user,
           running "make upgrade" with PostgreSQL "ident sameuser" security
           now works properly.  [Keith Grennan]

       o   The "LoadModule" and "AddModule" httpd.conf directives should now
           be generated properly during installation. "LoadModule" will use
           "config_log_module" or "mod_log_config" depending on the system,
           but "AddModule" will always use mod_log_config.c. Spotted by Dave
           Jablonski. [Marshall]

       o   Deleted sites will no longer be displayed in the site context menu
           in the UI. Reported by Ed Stevenson. [David]

       o   Sorting templates based on Asset Type (Element) no longer causes an
           error.  [David]

       o   Events are now logged during the cleanup phase in alphabetical
           order by event type key name, to prevent deadlocks between two
           transactions logging events of the same types in different orders
           at the same time. [David]

       o   Fixed a number of the callbacks in the story, media, and template
           profiles so that they didn't clear out the session before other
           callbacks were done with it. Most often seen as the error 'Can't
           call method "get_tiles" on an undefined value' in the media
           profile, especially with IE/Windows (for some unknown reason).
           Reported by Ed Stevenson. [David]

       o   Fixed typo in clone page that caused all output channels to be
           listed rather than only those associated with the element itself.
           [Scott]

       o   Fixed double listing of the "All" group in the group membership
           double list manager. [Christian Hauser]

       o   Mail sent for alerts and the like now has DOS and Macintosh line-
           endings converted to Unix so that they are displayed properly in
           most mail clients.  [Christian Hauser and David]

       o   Documented required "user__id" parameter to the "new()" method in
           the story and media classes. Reported by Rod Taylor. [David]

       o   Image buttons now correctly execute the "onsubmit()" method for
           forms that define an "onsubmit" attribute. This means that, among
           other things, changes to a group profile will persist when you
           click the "Permissions" button.  [David]

       o   Media type groups now properly display their members.

       o   The "Edit" link that showed up for categories associated with a
           story when the "ENABLE_CATEGORY_BROWSER" bricolage.conf directive
           has been removed. It didn't belong there in the first place.
           Reported by Ho Yin Au. [David]

       o   Simple search now works when it is selected when the "Default
           Search" preference is set to "Advanced". Reported by Marshall Roch.
           [David]

       o   Multiple alert types set up to trigger alerts for the same event
           will now all properly execute. Thanks to Christian Hauser for the
           spot! [David]

       o   Publishing stories or media via SOAP with the "published_only"
           parameter ("--published-only" for bric_republish) now correctly
           republishes the published versions of documents even if the current
           version is in workflow.  Reported by Adam Rinehart. [David]

       o   Added upgrade script to clean out old records left in the "member"
           table if users elected to delete old jobs during the 1.8.2 upgrade.
           [David]

       o   Users granted a permission greater than READ to the members of the
           "All Users" group no longer get such permission to any members of
           the "Global Admins" group unless they have specifically been
           granted such permission to the members of the "Global Admins"
           group. Thanks to Marshall Roch for the spot!  [David]

VERSION 1.8.2 (2004-11-13)
   Improvements
       o   Added note to the context-sensitive help for the story, media, and
           template search pages to search on "/" to return all records, and
           to use SQL wildcards such as "%" to generalize the search. [David]

       o   "make upgrade" no longer copies the entire installed component root
           to a new directory as a way to get rid of old UI component files.
           We now require that any deleted component files get removed from an
           existing installation via an upgrade script, instead. See
           inst/upgrade/1.7.0/delete_old_components.pl for an example. [David]

       o   Bricolage now runs under a DSO "mod_perl" as long as it uses a Perl
           compiled with "-Uusemymalloc" or "-Ubincompat5005". See
           <http://perl.apache.org/docs/1.0/guide/install.html#When_DSO_can_be_Used>
           for details. Thanks to Marshall Roch for finding that link. [David]

       o   The New Story and New Media profiles by default no longer have a
           value selected for the Story Type or Media type (respectively), so
           as to prevent the inadvertent creation of documents of the wrong
           type. [David]

       o   Alerts triggered to be sent to users who don't have the appropriate
           contact information will now be logged for those users so that they
           can see them and acknowledge them under "My Alerts". [David]

       o   Added bric_media_dump script to contrib/. [David]

       o   The category association interface used in the story profile when
           the "ENABLE_CATEGORY_BROWSER" bricolage.conf directive is enabled
           now uses radio buttons instead of a link to select the primary
           category. Suggested by Scott Lanning. [David]

       o   Search by site is now supported in the "Advanced Search" interface
           of "Find Stories", "Find Media", and "Find Templates" when there is
           more than one site and the "Filter by Site Context" preference is
           not turned on. [David]

       o   Removed Bric::FAQ, since it is now maintained on the Website,
           instead. [David]

       o   Updated Bric::Admin to suggest that PostgreSQL's "initdb" be run
           with "--no-locale" so as to avoid collation issues with non-Western
           characters.  See this discussion for more information:
           http://archives.postgresql.org/pgsql-general/2004-08/threads.php#01079
           <http://archives.postgresql.org/pgsql-
           general/2004-08/threads.php#01079>

       o   Added a warning to the story and media profiles for when related
           stories and media have been deactivated and a different story or
           media document should be related.

       o   Added output to the Apache log consisting of the 20 most recent
           events on an asset that has lost track of what workflow and/or desk
           it is on. This is to provide debugging information that might help
           us to track down when an asset forgets its workflow and/or desk, so
           that we might eventually be able to eliminate the code that picks
           up on this and corrects it. [David]

       o   The distribution monitor, bric_dist_mon, now prints error
           information to "STDERR" when there is an error, instead of just
           printing it to the system log. [David]

       o   Existing jobs are now executed within their own transactions, as
           opposed to no transaction specification. This means that each job
           must succeed or fail independent of any other jobs. New jobs are
           executed before being inserted into the database so as to keep them
           atomic within their surrounding transaction (generally a UI
           request). All this means that transactionality is much more
           intelligent for jobs and will hopefully eliminate job table
           deadlocks. Reported by Mark Jaroski, Serge Sozonoff, Patrick
           Michael Kane, and others. [David]

       o   The workflow, destination, and output channel profiles only display
           site information if the user has EDIT access to more than one site.
           The "Find Stories" and "Find Media" managers only display the site
           information for the listed documents if there is more than one site
           in Bricolage. Suggested by Scott Lanning. [David]

       o   Updated documentation of parameters to the "list()" method of
           Bric::Biz::Asset::Template (the template class). Also documented a
           few parameters to the story and media class "list()" methods that
           were supported but previously undocumented. [David]

       o   Variables are now properly decoded to UTF-8 when they are populated
           from the database. [David]

       o   The strings used in translations are now all properly decoded to
           UTF-8.  [David]

       o   All templates now execute with UTF-8 character strings enabled.
           This means that any templates that convert content to other
           character sets might need to change the way they do so. For
           example, templates that had used "<%filter>" blocks to convert
           content to another encoding using something like
           "Encode::from_to($_, 'utf-8', $encoding)" must now use something
           like "$_ = Encode::encode($encoding, $_)", instead.
           Bric::Util::CharTrans should continue to do the right thing.
           [David]

       o   Added "encoding" attribute to Bric::Util::Burner so that, if
           templates are outputting something other than Perl "utf8" decoded
           data, they can specify what they're outputting, and the file opened
           for output from the templates will be set to the proper mode.
           Applies to Perl 5.8.0 and later only. [David]

       o   Added example use for "$burner->display_pages" to
           Bric::AdvTemplates.  [Cinly Ooi]

       o   Added README.Mandrake. [Cameron Miller]

       o   Added "SFTP_HOME" bricolage.conf directive to specify the home
           directory and location of SSH keys when SSH is enabled. [Cameron
           Miller]

       o   Users can no longer implicitly publish related stories and media
           via the UI that they don't have PUBLISH access to. [David]

       o   Users can no longer publish related documents via the UI or SOAP
           that are in workflow but not on a publish desk. [David]

       o   Added search by output channel to "Find Templates". [David]

       o   Previewing a document with a related media document that's checked
           out no longer triggers a "Cannot auto-publish related media because
           it is checked out" message. [David]

   Bug Fixes
       o   The burner "next_page_file()" and "next_page_uri()" methods now
           properly return a value if the "burn_again" attribute has been set
           to a true value in the Mason burner. [David]

       o   The "list()" and "list_ids()" methods of the story, media, and
           template classes no longer return "undef" in a scalar context when
           there are no objects to be returned. They return an empty array
           reference, instead. [David]

       o   The "is_fixed()" method in the story and media classes now works
           properly.  Reported by Marshall Roch. [David]

       o   "make clone" once again properly copies the lib/Makefile.PL and
           bin/Makefile.PL files from the source directory. [David]

       o   Fixed the "my_meths()" method of Bric::Biz::AssetType::Parts::Data
           to return metadata for the the "key_name" attribute instead of an
           "undef" for the removed "name" attribute. [Scott]

       o   Added missing language-specifying HTML attributes so as to properly
           localize story titles and the like. Reported by Joshua Edelstein.
           [David]

       o   The list of output channels to add to an element in the element
           profile now contains the name of the site that each is associated
           with, since different sites can have output channels with the same
           names. [David]

       o   You can no longer delete a category from a story when you have also
           marked it to become the primary category. Reported by Simon Wilcox.
           [David]

       o   Editing notes from My Workspace now works properly. Thanks to Simon
           Wilcox for the spot! [David]

       o   The "Advanced Search" interface once again works for searching for
           related story and media documents. Reported by Ben Bangert and many
           others. [David]

       o   Renaming a site and its domain name now always properly renames the
           associated site permission user groups. Reported by Will Trillich.
           [David]

       o   The "Alias Story" interface now works properly when the
           "USE_THUMBNAILS" directive is enabled. Reported by Ben Bangert.
           [David]

       o   Attempting to create a new source with the same name as an existing
           but deactivated source no longer throws an SQL error, but provides
           a nice error message. Reported by Marshall Roch. [David]

       o   Bricolage no longer attempts to email alerts to an empty list of
           recipients.  This will make your SMTP server happier. [David]

       o   The version numbering issues of Bricolage modules have all been
           worked out after the confusion in 1.8.1. This incidentally allows
           the HTML::Template and Template Toolkit burners to be available
           again. Reported by Mike W. [David]

       o   Misspelling the name of a key name tag or including a non-
           repeatable field more than once in Super Bulk Edit no longer causes
           all of the changes in that screen to be lost. [David]

       o   When a user overrides the global "Date/Time Format" and "Time Zone"
           preferences, the affects of the overrides are now properly
           reflected in the UI. [David]

       o   The "Default Asset Sort" preference now actually works. Reported by
           Simon Wilcox. [David]

       o   Publishing a story or media document along with its related story
           or media documents from a publish desk again correctly publishes
           the original asset as well as the relateds. Reported by Paul
           Orrock. [David]

       o   Users can now set their own values for overrideable preferences.
           [David]

       o   The "list()" and "list_ids()" methods of the Story, Media, and
           Template (Template.pm) classes no longer have the side effect of
           changing values in the hash references passed to them. This had
           caused problems for date/time parameters. Reported by Paul Orrock.
           [David]

       o   Auto-generated slugs (enabled via the "AUTOGENERATE_SLUG"
           bricolage.conf directive) no longer convert uppercase characters to
           underscores. Thanks to Paul Orrock for the spot! [David]

       o   Changes made to story content in the story profile are no longer
           preserved when clicking the "Cancel" button. Reported by Paul
           Orrock. [David]

       o   The story and media profiles now clear out the session cache for
           the story or media element when leaving the story or media profile.
           This is to prevent perceived caching of changes that were canceled
           in a profile, noticed only when one canceled an edit of a story or
           media document and immediately edited the same document. [David]

       o   Clicking the "Add More" button to add more keywords to a new
           category no longer causes an error. [David]

       o   Adding a new category to a group and asking it to cascade that
           group membership into subcategories no longer causes an error.
           Thanks to Adam Rinehart for the spot! [David]

       o   Adding an existing publish desk to a workflow no longer unsets its
           publish attribute. [David]

       o   Deleted output channels no longer show up in the select list for
           story type and media type elements. [David]

       o   Deleting a workflow from the workflow manager now properly updates
           the workflow cache so that the deleted workflow is removed from the
           left navigation without a reboot. [David]

       o   Creating a story, checking it in, checking it out, and then
           canceling the checkout no longer incorrectly removes the story from
           workflow. [David]

       o   The source of a story can now be changed. [David]

       o   Status messages sent to the browser during previews are now hidden
           if an error is triggered. [Marshall]

       o   Publishing a document with deactivated related documents no longer
           causes those deactivated documents to be published, too. Reported
           by Paul Orrock.  [David]

       o   The Bricolage 404, 403, and 500 error pages now send the
           appropriate HTTP header to the browser. Thanks to Marshall Roch for
           the spot! [David]

       o   The Output Channel URI Prefix and URI Suffix fields are once again
           allowed to include a slash (/). Reported by Kevin Elliott. [David]

       o   An attempt to create a new template with the proper extension as
           part of the name (e.g., foo.mc for a Mason template) now keeps the
           extension instead of changing the dot to an underscore and adding
           the extension (e.g., it stays foo.mc instead of becoming
           foo_mc.mc). This is especially useful when creating utility
           templates and for users of "bric_dev_sync". Thanks to Paul Orrock
           for the spot! [David]

       o   When Bricolage notices that a document or template is not in
           workflow or on a desk when it should be, it is now more intelligent
           in trying to select the correct workflow and/or desk to put it on,
           based on current workflow context and user permissions. Reported by
           Hal Creech. [David]

       o   Content submitted to Bricolage in the UTF-8 character set is now
           always has the "utf8" flag set on the Perl strings that store it.
           This allows fields that have a maximum length to be truncated to
           that length in characters instead of bytes. Thanks to Kang-min Liu
           for the spot! [David]

       o   "Bric::Biz::OutputChannel->list_ids" no longer returns duplicate
           IDs. This incidentally allows output channels that happen to be in
           groups to be edited, eliminating the 'name "Web" is already used by
           another Output Channel' error. Thanks to John Greene for the spot!
           [David]

       o   The media type of media documents now defaults to "none" instead of
           inserting a "NULL" into the database. The column has also be marked
           "NOT NULL" in order to ensure that this remains the pattern.
           [David]

       o   Changed the "name" and "error_message" columns in the "job" table
           in the database from "VARCHAR" to <TEXT>. This is so that we don't
           have to truncate them before inserting them. [David]

       o   Elements with autopopulated fields (e.g., for image documents) can
           now be created via the SOAP interface. Reported by Todd Tyree.
           [David]

       o   Fixed a number of the parameters to the "list()" method of the
           Story, Media, and Template classes to properly handle an argument
           using the "ANY" operator. These include the "keyword" and
           "category_uri" parameters. Passing an "ANY" argument to these
           parameters before this release could cause a well-populated
           database to lock up with an impossible query for hours at a time.
           [David]

       o   Restored foreign keys and constraints missing on the "job" table
           and related tables since version 1.8.0. [David]

       o   The error message for failed distribution jobs is now properly
           displayed in the UI. [Mark]

       o   Fixed bug with the execution of jobs in bric_queued. [Mark]

       o   Attempting to create a new desk with the same name as a deactivated
           desk no longer returns an SQL error, but a more informative error.

       o   Template sandboxes now work for the Template Toolkit burner.
           [David]

       o   The output channel and element profiles no longer display
           deactivated output channels in their output channel select lists
           (for output channel includes in the output channel profile and for
           primary output channels in the element profile). [David]

       o   The side navigation layer now works correctly with Internet
           Explorer 5.5 for Windows. [Marshall]

VERSION 1.8.1 (2004-07-08)
   Improvements
       o   More complete Traditional Chinese and Simplified Chinese
           localizations. Also, the Mandarin localization now simply inherits
           from the Traditional Chinese localization. [Kang-min Liu]

       o   "make clone" now copies the lib directory and all of the bin
           scripts from the target to the clone, rather than from the sources.
           This allows any changes that have been made to scripts and classes
           to be properly cloned.  [David]

       o   When installing Bricolage, it will now allow you to proceed if the
           database already exists by asking if you want to create the
           Bricolage tables in the existing database. Suggested by Mark
           Fournier and Marshall Roch. [David]

       o   Added some missing translations for English. [David]

       o   The installer is now a bit smarter in how it handles loading the
           "log_config" (or "config_log", as the case may be) module.
           [Marshall Roch]

       o   Added ID attributes to story, media, and element profiles and
           "fieldcontent" class to content field values in the "View" screens
           so that they can be used as CSS selectors. [David]

       o   Added language-specific style sheets. This is especially useful for
           right-to-left languages or for languages that require special
           fonts. [David]

       o   The "New Alias" search interface now displays thumbnails when
           searching for media documents to alias and the "USE_THUMBNAILS"
           bricolage.conf directive is enabled. Reported by Serge Sozonoff.
           [David]

       o   The "has_member()" method of Bric::Util::Grp is now faster when
           searching for a specific group member. [David]

       o   Aliases can now be made to documents within the same site. [Serge
           Sozonoff]

       o   When viewing the contents of a document, the contents now have
           their HTML escaped. This prevents any broken HTML in the content
           from breaking the Bricolage UI. Suggested by Neal Sofge. [David]

       o   The SOAP interface for importing and exporting elements now
           properly has "key_name" XML elements instead of "name" XML
           elements. The changes are backwards compatible with XML exported
           from Bricolage 1.8.0 servers, however.  Reported by Tony Cowderoy.
           [David]

       o   Added "move()" method to the virtual FTP interface. This means that
           to deploy a template, rather than having to rename it locally to
           append ".deploy", one can simply move in FTP to its new name with
           ".deploy" on appended to the new name. [Joa~o Pedro]

       o   Document expirations are now somewhat more intelligent. Rather than
           just scheduling an expiration job only if there is an expiration
           date the first time a document is published, Bricolage will now
           always schedule an expiration job for a document provided that one
           does not already exist (scheduled or completed) for the same time
           and for one of the file resources for the document. This should
           allow people to more easily and arbitrarily expire content whenever
           necessary. Thanks to John Greene for the discussion that finally
           motivated this change. [David]

       o   Improved zh-cn translation. [Gang Luo]

       o   Burner notes now persist for all sub burns (triggered by
           "publish_another()" and "preview_another()" in a single burn.
           [Serge Sozonoff]

       o   Keyword groups now properly display their members. [David]

       o   Added ability to create and manage groups of objects for several
           different types of objects. Also added the ability manage group
           membership within the administrative profiles for those objects.
           This change makes it possible to give users permission to
           administer subsets of objects. The new groupable objects are:

           Preferences
           Groups
           Alert Types
           Element Types
           Keywords
           Contributors

           [David]

       o   Alert rules are now evaluated within a safe compartment (using
           Safe.pm) to prevent security exploits. [David]

       o   The Bulk Publish admin tool is no longer limited to use only by
           members of the Global Admins group. Now anyone can use it. All one
           needs is READ permission to the categories of stories, and PUBLISH
           permission to the stories and media documents to be published.
           [David]

   Bug Fixes
       o   Bulk Publish now ensures that users have at least READ access to
           categories they wish to publish from. [Scott]

       o   Eliminated 'Bareword "ENABLE_HTMLAREA" not allowed while "strict
           subs" in use' warning that prevented startup for some
           installations. [Scott]

       o   The Mason burner now appends a "/" to the end of the category path
           it specifies for burning a story. This removes the ambiguity
           between a directory request and a file request, which in rare
           circumstances could cause unexpected problems. [David]

       o   Changes made to user or contributor contacts without changing any
           other part of the user or contributor object are now properly
           saved. [David]

       o   When cloning a story, the list of output channels to select from is
           now limited to the site the current workflow is in. Thanks to Serge
           Sozonoff for the spot! [David]

       o   Attempting to publish a story or media document with brackets in
           the title no longer causes an error. Reported by Serge Sozonoff.
           [David]

       o   Fixed a bric_soap "list_ids" bug [712] with the "no_workflow"
           option.  [Clive Jones]

       o   The upgrade to 1.8.0 now correctly updates story URIs that use the
           URI Suffix of an output channel instead of using the URI Prefix
           twice. [John Greene]

       o   The Advanced Search interface for stories and media now displays
           only the top-level elements associated with the site the workflow
           is in when searching for stories and media "By Type". [David]

       o   Improved error logging for more recent versions of Apache, which
           unfortunately escape newlines. [David]

       o   When Bricolage discovers a document or template on a desk but not
           in a workflow, it now places it in a workflows associated with the
           same site as the document or template is associated with. Thanks to
           Serge Sozonoff for the spot! [David]

       o   Aliases of Image, Audio, or Video media documents no longer remain
           stuck on desks. Reported by Serge Sozonoff. [David]

       o   Related media and story subelements of media documents now work
           properly.  Thanks to Kang-min Liu for the spot! [David]

       o   The distribution and SOAP handlers now load a localization object
           so that any code that uses localization will work properly.
           Reported by Clive Jones.  [David]

       o   The "set_page_extensions()" method of Bric::Util::Burner now throws
           an exception if duplicate page extensions are passed, rather than
           deferring the exception to the creation of a distribution job,
           which was confusing. [Clive Jones]

       o   Calls to "preview_another()" in Bric::Util::Burner will now use any
           templates in the current user's sandbox and properly burn them to
           the preview root rather than to the staging root used for
           publishing. Reported by Serge Sozonoff. [David]

       o   Contributor fields for roles other than the default role now
           properly store and retain their values. [David]

       o   The virtual FTP server now properly checks out templates when a
           template is uploaded and is already in workflow.

       o   Uploading a non-existent template via the virtual FTP server now
           correctly creates a new template. The type of template depends on
           the name of the template being uploaded, and for element templates,
           on whether there is an element with the appropriate key name. The
           user must have CREATE permission to All Templates or to the start
           desk in the first template workflow in the relevant site.

       o   Reverting a document or template to the current version number now
           properly reverts all changes to the time the user checked out the
           document or template. Reversion is also a bit more efficient in how
           it looks up the previous version in the database. [David]

       o   The SOAP server now rolls back any changes whenever an error is
           thrown. This prevents problems when a few objects are created or
           updated before an exception is thrown. Now any error will cause the
           entire SOAP request to fail. Thanks to Neal Sofge for the spot!
           [David]

       o   Changing the "Size" display attribute of a field in the Field
           profile (a subprofile of the Element admin profile) now properly
           causes the field to actually display in the new size. Reported by
           Tony Cowderoy. [David]

       o   The table of contacts in the alert type profile is now more like
           other tables, in terms of border colors, etc. [David]

       o   The Bulk Publish admin tool now only limits the category search to
           the current site context if the "Filter by Site Context" preference
           is checked. [David]

VERSION 1.8.0 "Portland" (2004-05-03)
   Improvements
       o   The inst/upgrade/1.7.0/data_tile_key_name.pl upgrade script now
           skips upgrading "key_name" if it would be no different than "name".
           This can save a lot of time during upgrade if your database is
           large. [Scott]

       o   For checked-out media, stories, and documents listed in the
           "Active" and "Find" interfaces, added the name of the user who has
           each checked out to the empty column that would otherwise contain a
           "Checkout" checkbox. [David]

       o   Keyword names are now always editable in the keyword manager.
           [David]

       o   Added UI for managing organizations, which provide the base data
           for souces.  [David]

       o   HTML, CSS, and JavaScript fixes that allow Bricolage to work
           properly with most browsers, including Safari 1.2.1, IE 5.2/Mac,
           Konqueror, Opera 7, and many others. [Marshall Roch]

       o   Added stubs for zh-hk localization. [David]

       o   Added missing localizations to the Language preference. Many of
           these are not yet translated, but there they are. [David]

       o   Selecting a checkbox to delete an output channel in a story or
           media profile and then clicking a button other than the output
           channel "Delete" button or the "Save" or "Save and Stay" buttons no
           longer causes an error. Reported by Delfim Machado. [David]

       o   If the "Select All" button is clicked to select all the checkboxes
           on a desk, and then is clicked again, it will uncheck all of the
           check boxes. [David]

       o   Login redirection now works properly with Safari. [David]

       o   The installation script now provides more information (and
           questions) when it attempts to create a database user that already
           exists. Suggested by Marshall Roch. [David]

   Bug Fixes
       o   Added a missing space to the breadcrumb in the header. [Marshall
           Roch]

       o   The new "SFTP_MOVER_CIPHER" bricolage.conf directive now actually
           works.  [David]

       o   The group profile works again for element groups [David]

       o   "Check In To" link misalignment fixed for Konqueror, as well as
           some other miscellaneous CSS fixes. [Marshall Roch]

       o   The "CREATE" permission is now displayed when granting permission
           to user groups to access the members an "All" group. [David]

       o   The "none" media type is no longer editable via the UI. [David]

       o   Invalid story cover and expire dates now properly trigger an error
           message.  [David]

       o   Deactivated keywords are no longer returned by the "get_keywords()"
           methods of the Business asset class (from which Story and Media
           inherit) or the Category class. Reported by Paul Orrock. [David]

       o   Events are now properly logged for keywords managed in the keyword
           profile.  [David]

       o   Media URIs are now properly updated when the primary output channel
           is changed.  Reported by Ben Bangert. [David]

       o   Bulk publish no longer marks checked-out stories as published when
           it hasn't published them. It also is no longer redundant when it
           reports that checked-out assets won't be published. Thanks to Serge
           Sozonoff for the spot!  [David]

       o   Safari users will no longer be stuck on the login page. [David]

       o   The CSS directory now has its files always served as "text/css".
           This should eliminate problems when Apache sometimes serves the CSS
           files as "text/html".  [David]

       o   The "desk_id" parameter to the "list()" methods of the story,
           media, and template classes now works. [Joa~o Pedro]

       o   Stories published via the "Checkin and Publish" select list in the
           story profile now correctly publish related stories and media.
           Reported by Joa~o Pedro. [David]

       o   Stories and media are no longer published twice when published from
           a publish desk or via Bulk Publish. [David]

VERSION 1.7.5 "Ashland" (2004-04-11)
   New Features
       o   Added bric_template_dump to contrib. This script uses the Bricolage
           SOAP server to export all of the templates in a single output
           channel. [David]

       o   Added "SFTP_MOVER_CIPHER" bricolage.conf directive to tune the SFTP
           mover (if enabled) to the best cipher for good performance on the
           wire. [David]

   Improvements
       o   Added site and output channel support to bric_template_diff and
           bric_template_patch in contrib. [David]

       o   When cloning a story, you can now select a new primary output
           channel, in addition to category, slug, cover date, etc. Suggested
           by Serge Sozonoff.  [David]

       o   Spell checking now works in HTMLArea. [Eric Sellers]

       o   When creating a new story without a slug, Bricolage will now
           autogenerate a slug based on the title. [Joa~o Pedro]

       o   Added single underscore parameters to the "list()" methods of the
           Story, Media, and Template classes to complement those that have
           the awful double underscores. [David]

       o   Made SOAP modules more tolerant of lack of sites in 1.6. [Scott]

       o   The collection API now checks newly added members when deleting
           members. This ensures that newly added objects won't be saved to
           the database if they are deleted, first. [David]

       o   Turned off browser autocompletion in the Server and User profiles.
           This prevents some browsers (e.g., Camino) from filling in your
           username and password where it doesn't belong. [David]

       o   When the "Filter by Site Context" preference is enabled, it no
           longer filters documents when searching for documents to alias.
           Reported by Patrick Walsh.  [David]

       o   The "Cancel Checkout" button in the Story, Media, and Template
           profiles now tries to do the right thing instead of just leaving
           the asset on a desk in workfow every time. If the asset was just
           created by the user, it will be deleted. If it was just recalled
           from the library by the user, it will be removed from workflow and
           shelved in the library. Otherwise, clicking the "Cancel Checkout"
           button will leave the asset in workflow. Requested by Sara Wood,
           Rachel Murray, and others. [David]

           "make clone" now provides the current date and time for the default
           name for the cloned package. Suggested by Marshall Roch. [David]

   Bug Fixes
       o   Bricolage no longer tries to display thumbnails for related
           stories, since stories don't have thumbnails and would therefore
           create an error. [Eric Sellers]

       o   Text::Levenshtein is again correctly loaded as an optional module,
           not a required module. Reported by Marshall Roch. [David]

       o   Bric::Util::Burner's "preview_another()" method now actually works.
           Thanks to Serge Sozonoff for the spot. [David]

       o   Fixed clone interface for IE users. Spotted by Serge Sozonoff.
           [Scott]

       o   Some of the supported values for the "Order" parameter to the
           Story, Media, and Template classes, such as "category_uri", did not
           work before. Now they do. [David]

       o   Changing categories on a template no longer creates Frankensteinian
           template paths. [David]

       o   Added constant "HAS_MULTISITE" to the Bric base classe so that all
           classes properly declare themselves for UI search results. [Joa~o
           Pedro]

       o   Story and Media SOAP calls now correctly use the element's key name
           to identify the element. [Joa~o Pedro]

       o   Story, Media, and Template creation via SOAP now correctly look up
           the Category by URI and site ID. [Joa~o Pedro & David]

       o   The Template SOAP interface now suports the "site" parameter to
           "list_ids()". [David]

       o   The Story, Template, and Media SOAP "list_ids()" intefaces now
           properly look up categories, output channels, and workflows with
           the "site" paremeter, if there is one. [David]

       o   The "LOAD_LANGUGES" and "LOAD_CHAR_SETS" directives are now space
           delimited, to better match other bricolage.conf options. [David]

       o   Aliased media documents now correctly point to the file name for
           the aliased media document. Reported by Patrick Walsh. [David]

       o   Thanks to the improvements to the collection class, cloning stories
           and putting them into new output channels to ensure that they have
           unique URIs now works properly. Reported by Serge Sozonoff. [David]

       o   The publish status and version is once again properly set for media
           when they are published. Reported by Serge Sozonoff. [David]

       o   The group manager now properly displays the names of the sites that
           member objects are associated with if the class of the objects
           being managed knows that its objects are associated with sites.
           Reported by Ho Yin Au. [David]

       o   The list of output channels to add to a media or story document in
           the media and story profiles now includes only those output
           channels associated with the site that the story or media document
           is in. [David]

       o   Thanks to the fix to 1.6.13 that prevents deleted groups from
           affecting permissions, there is no longer any need to provide a
           checkbox to get access to deleted groups in the permissions
           interface. So it has been removed.  [David]

VERSION 1.7.4 "Sacramento" (2004-03-18)
   New Features
       o   Added "Bulk Publish" feature in ADMIN->PUBLISHING that lets members
           of the Global Admins group publish story and media documents by
           category. [Scott]

       o   Added "notes()" method to Bric::Util::Burner, along with the
           accompanying "clear_notes()". The "notes()" method provides a place
           to store burn data data, giving template developers a way to share
           data among multiple burns over the course of publishing a single
           story in a single category to a single output channel. Any data
           stored here persists for the duration of a call to "burn_one()".
           [David]

       o   Added new contributed scripts for Bricolage button generation.
           These scripts use the Gimp to generate localized buttons for the
           Bricolage UI based on the contents of an input file. See
           contrib/button_gen/README for details.  [Florian Rossol]

       o   Added support for icons for all media documents when the
           "USE_THUMBNAILS" bricolage.conf directive is enabled. These rely on
           the presence of PNG icon files for each MIME type in
           comp/media/mime. Only one such icons is distributed with Bricolage,
           comp/media/mime/none.png (borrowed from the KDE project under
           <http://artist.kde.org/new/license.html#others>), which is the
           default icon when the MIME type of a media file is unknown or when
           no icon file exists for the MIME type of the media file.
           Administrators are free to add their own icons, and the
           "copy_gnome_icons" script in contrib makes it easy to use GNOME
           icons. [David]

       o   Added "bric_template_diff" and "bric_template_patch" scripts in
           contrib/bric_template_diff. These scripts can be used to sync
           templates between two Bricolage servers. [Sam]

       o   added "bric_media_load" to "contrib/". This script copies media
           into Bricolage while accounting for the new to update existing
           media. [Sam]

       o   Added HTMLArea support. This adds a new type of field to be added
           to elements and contributor types, "WYSIWYG". Such fields are then
           displayed in the UI using HTMLArea, a WYSIWYG HTML editor. This can
           be useful in particular for simple fields that often need emphasis
           added or links. It is not currently available in Bulk Edit or Super
           Bulk edit. See Bric::Admin for installation and configuration
           details. [Eric Sellers]

   Improvements
       o   The list of categories for which permissions can be granted to user
           groups to access the documents and templates in the category now
           displays the categories for each site separately, so that
           categories with same URIs (such as for the root category in each
           site) can be easily told apart. Reported by Ho Yin Au.  [David]

       o   The list of workflows for which permissions can be granted in the
           permissions page now includes the parenthesized name of the site
           each workflow is associated with. [David]

       o   Modified the indexes on the "workflow__id" and "desk__id" columns
           of the story, media, and formatting (template) tables to be more
           efficient, being indexed only when their IDs are greater than 0
           (that is, when a story, media document, or template is actually on
           a desk and in a workflow). [David]

       o   Added a method "is_fixed" to story and media objects, to determine
           whether a business asset has a fixed URL (for example, a Cover
           page). Refer to Bric::Biz::Asset::Business. [Scott]

       o   Added the "ENABLE_OC_ASSET_ASSOCIATION" bricolage.conf directive to
           remove the ability to associate output channels from the story and
           media profiles. [Scott]

       o   The element administration profile now automatically adds the
           currently selected site context to new elements, thus generally
           saving a step when creating new elements. [Joa~o Pedro]

       o   Added an interface to 'Clone' for stories so that you can change
           the category, slug, and cover date, because otherwise an identical
           story is created, which would cause errors for some stories. Clones
           are no longer allowed to have URIs that are identical to the
           stories they were cloned from. [Scott & David]

       o   Added the ability to Delete from desks (same as My Workspace). Note
           however, that you can't delete from a publish desk. [Scott]

       o   Completely documented the document element classes:
           Bric::Biz::Asset::Business::Parts::Tile,
           Bric::Biz::Asset::Business::Parts::Tile::Data, and
           Bric::Biz::Asset::Business::Parts::Tile::Container.  This should
           make it a bit easier on templators learning their way around the
           Bricolage API. [David]

       o   Refactored quite a bit of the code in the element classes. Renamed
           the methods with "tile" in their names to use "element" instead
           (but kept the old ones around as aliases, since they're used
           throughout the UI). Added a few methods to make the interface more
           complete. [David]

       o   Modified the "get_containers()" method of
           Bric::Biz::Asset::Business::Parts::Tile::Container to take an
           optional list of key name arguments, and to return only the
           container subelements with those key names. This is most useful in
           templates, where it's fairly common to get a list of container
           subelements of only one or two particular types out all at once. It
           neatly replaces code such as this:

             for ( my $x = 1; my $quote = $element->get_container('quote', $x); $x++ ) {
                 $burner->display_element($quote);
             }

           With this:

             for my $quote ($element->get_containers('quote')) {
                 $burner->display_element($quote);
             }

           And is more efficient, too. [David]

       o   Modified the "get_elements()" method of
           Bric::Biz::Asset::Business::Parts::Tile::Container to take an
           optional list of key name arguments, and to return only the
           subelements with those key names.  [David]

       o   Added the "get_data_elements()" method to
           Bric::Biz::Asset::Business::Parts::Tile::Container. This method
           functions exactly like "get_containers()" except that it returns
           data element objects that are subelements of the container element.
           It also takes an optional list of key name arguments, and, if
           passed, will return only the subelements with those key names.
           [David]

       o   The "ANY()" subroutine will now throw an exception if no arguments
           are passed to it. Suggested by Dave Rolsky. [David]

       o   Added the "unexpired" parameter to the "list()" method of the story
           and media classes. It selects for stories without an expire date,
           or with an expire date set in the future. [David]

       o   The "User Override" admin tool is now available to all users. But a
           user can only override another user if she has EDIT permission to
           that other user. This makes it easier for user administrators to
           masquerade as other users without having to change passwords.
           [David]

       o   Eliminated another SQL performance bottleneck with simple searches
           of media assets. [Joa~o Pedro]

       o   Images with no dimension greater than the "THUMBNAIL_SIZE"
           bricolage.conf directive are no longer expanded to have one side at
           least "THUMBNAIL_SIZE" pixels, but are left alone. [David]

       o   Thumbnails are now displayed when searching media to relate to an
           element.  [David]

       o   Thumbnails are now displayed in related media subelements. [David]

       o   Added "preview_another()" method to Bric::Util::Burner. This method
           is designed to be the complement of "publish_another()", to be used
           in templates during previews to burn and distribute related
           documents so that they'll be readily available on the preview
           server within the context of previewing another document. [Serge
           Sozonoff]

       o   Added the "subelement_key_name" parameter to the "list()" method of
           the story and media classes. This parameter allows searches on the
           key name for a container element that's a subelement of a story or
           media document. [David]

       o   Added support for all of the parameters to the "list_ids()" method
           of the Story, Media, and Template classes to the "list_ids()"
           method of the corresponding SOAP classes. This allows for much more
           robust searches via the SOAP interface. [David & Scott]

       o   Eliminated "login_avail()" PostgreSQL function, replacing it with a
           partial constraint. This not only makes things simpler code-wise,
           but it also eliminates backup and restore problems where the "usr"
           table is missing. The downside is that it requires PostgreSQL 7.2
           instead of our traditional minimum requirement of 7.1. So any
           PostgreSQL 7.1 users will need to upgrade before upgrading to this
           version of Bricolage. Suggested by Josh Berkus. [David]

   Bug Fixes
       o   "make clone" will now properly clone a database on a different
           database server, provided the host name (and port, if necessary)
           have been provided. Thanks to Ho Yin Au for the spot! [David]

       o   Admin tool lists that include the number "9" in the corner of a
           table of items is now properly orange instead of green. Reported by
           Ho Yin Au. [David]

       o   Bricolage works with Perl 5.6.x again, although it's pretty
           strongly deprecated. Perl 5.8.0 or later is required for character
           set conversion and if any content uses characters outside of US
           ASCII. Thanks to John Greene for the spot! [David]

       o   Image files uploaded in formats not recognized by Image::Info no
           longer trigger an error. Reported by Alexander Ling. [David]

       o   Changing the cover date of a media document once again correctly
           updates the primary URI of the media document. Reported by Serge
           Sozonoff. [David]

       o   Fixed API that was causing no elements to be returned on "Add sub-
           elements" page, when "Filter by site context" was turned on. [Joa~o
           Pedro]

       o   When the SOAP server serializes and deserializes element templates,
           it now correctly identifies the element by its key name, rather
           than its name. Thanks to Joa~o Pedro for the spot! [David]

       o   The template profile's "cheat sheet" of the subelements of an
           element now correctly display subelement key names instead of
           munging element names, as was required before version 1.7.0. [Joa~o
           Pedro]

       o   "Bric::SOAP::Category->list_ids" now converts site names to site
           IDs.  [Joa~o Pedro]

       o   "Bric::Util::Burner->preview" once again defaults to previewing in
           an asset's primary output channel instead of using the element's
           primary output channel. [Joa~o Pedro]

       o   Added "first_publish_date" attribute to the SOAP input and output
           for stories and media. [David]

       o   The category SOAP class now correctly calls "lookup()" with the
           site ID to prevent multiple categories with the same names but in
           different sites from being looked up. [Joa~o Pedro]

       o   User overrideable preferences are now properly checked for
           permissions to allow users with READ permission to a user to see
           the permissions. [David]

       o   Users can now edit their own user-overrideable preferences. [David]

       o   Group management now works more correctly in user profiles where
           users have on READ access to the user object. [David]

       o   Removed queries added in 1.7.2 that were running at Bricolage
           startup time. They could cause DBI to cache a database handle and
           return it after Apache forks, leading to strange errors such as
           "message type 0x49 arrived from server while idle", and
           occaisionally a frozen server. [David]

VERSION 1.7.3 (2004-03-01)
   New Features
       o   The virtual FTP server now moves templates into workflow when
           they're uploaded and puts them into the user's sandbox. This
           behavior allows the user to test the template changes without
           imposing possible bugs upon other Bricolage users. This approach is
           much safer than the previous behavior, which simply checked in and
           deployed a template upon upload. Templates can still be deployed
           via the virtual FTP server by appending ".deploy" to their names.
           The original behavior of always deploying templates upon upload can
           be restored by enabling the "FTP_DEPLOY_ON_UPLOAD" bricolage.conf
           directive. [David]

       o   Added "ANY" function to be used with select parameters to story,
           media, and template (formatting) list. Pass a list of values to
           this function to have any of of them match for a given parameter.
           This is especially useful for matching on, say, a list of URIs or
           category IDs. This function is automatically available in
           templates. [David]

       o   Added a feature that counts characters used in a textarea
           subelement on the fly. It displays this figure and the number of
           characters left, immediately above the textarea. This feature is
           enabled when the Max size attribute for the textarea is given a non
           zero value when adding it to the element profile stage. The
           JavaScript will also not allow you to have more than max size
           characters in the textarea by truncating the data to that number of
           characters every time someone adds another character beyond the
           maximum. [Paul Orrock/Digital Craftsmen]

       o   Added a feature to display image thumbnails in the search results
           and active view for media objects that are image objects. This
           feature uses the Perl module Imager from CPAN and the relevant
           image library for each format you want to display. It can be turned
           on or off using the "USE_THUMBNAILS" bricolage.conf directive. See
           Bric::Biz::Asset::Business::Media::Image for more information.
           [Paul Orrock/ Digital Craftsmen]

   Improvements
       o   The bric_media_upload contributed script now provides a more
           meaningful error message when it can't find bric_soap. [Dave
           Rolsky]

       o   The bric_dist_mon "-U" option no longer requires that "/dist/" be
           at the end of the URL. If "/dist/" is missing, bric_dist_mon will
           append it.  [David]

       o   More story, media, and template query optimization. [David]

       o   The story, media, and template queries now use aggregates to create
           arrays of group IDs, instead of returning a separate row for each
           individual group ID. Since all story, media, and template objects
           are now returned in single rows instead of potentially many rows,
           this greatly cuts down on the overhead of fetching data from the
           database. Suggested by Josh Berkus; implementation help from David
           Fetter. [David]

       o   Thanks to the aggregation of group IDs into a single row for each
           story, media and template object, the "Offset" and "Limit"
           parameters to the "list()" methods of the story, media, and
           template (formatting) classes are now handled by the database back
           end, instead of in Perl space. This makes using these parameters
           much more efficient.

       o   Added "-k" option to bric_ftpd to kill a currently running virtual
           FTP server. This is made possible by the addition of the new
           "FTP_PID_FILE" bricolage.conf directive. [David]

       o   Asset groups associated with categories are now activated or
           deactivated whenever their corresponding categories are now
           activated or deactivated.  This prevents them from showing up in
           the permissions interface. [David]

       o   Added a check box to the permissions interface to enable the
           display of inactive groups. This is primarily so that permissions
           can be modified on inactive category groups, since they still
           affect access to any documents and templates in those categories,
           even after they're deactivated. [David]

       o   Updated documentation to reflect the reality that one should really
           only use Perl 5.8.0 and later if one needs to use any characters
           outside of ASCII.  [Andrea Rota]

       o   Added "FTP_UNLINK_BEFORE_MOVE" bricolage.conf directive. This
           forces the FTP mover to unlink an older version of a file before
           renaming the new version to that name. This is necessary for some
           FTP servers that won't disallow renaming a file to replace an
           existing file. [Andrea Rota]

       o   Updated zh-cn and zh-tw localizations, translating all untranslated
           messages and JavaScript messages. [Kang-min Liu]

       o   Relabeled the "Pre" and "Post" attributes of output channels as
           "URI Prefix" and "URI Suffix", respectively. [Serge Sozonoff]

       o   Added "get_element()" method to Bric::Biz::Asset::Business and
           deprecated the "get_tile()" method. This will make things a bit
           more consistent for template developers, at least. [David]

       o   Added "primary_category_id" parameter to the story class' "list()"
           method. [David]

       o   Updated the German localization. [Thorsten Biel]

       o   Users can no longer sneakily add subelements for which they do not
           have at least READ permission to the corresponding element via the
           Super Bulk Edit. Reported by Patrick Walsh. [David]

       o   The list of output channels available to be included in an output
           channel now has the name of the site with which each is affiliated
           listed as well. This is to prevent confusion between output
           channels with the same names in different sites. [David]

       o   Changed the vertical alignment of the labels for textarea fields in
           the story profile to be consistent with the labels on the element
           profile. i.e. top aligned. [Paul Orrock/Digital Craftsmen]

       o   Made the default installed "Photograph" and "Illustration" media
           document types true image objects, with autopopulated fields for
           height, width, etc. Suggested by Simon Wilcox. [David]

       o   Changed the default value of the "SMTP_SERVER" bricolage.conf
           directive to localhost. This has a much greater chance of working
           than defaulting to the value of the "VHOST_SERVER_NAME" directive.
           [David]

       o   Eliminated the term "Asset Type" from the UI, replacing it with
           "Element", "Story Type Element", or "Media Type Element", as
           context demands. [David]

       o   The Contributor manager no longer presents a "New" link if the
           Contributor Type on which the contributor is based has no custom
           fields. This will prevent folks from creating new contributor roles
           in the UI only to find that Bricolage hasn't created them because
           there are no custom fields. [David]

       o   In the formBuilder interface used by the Element and Contributor
           Type profiles, the default maximum length of text and textarea
           fields is now "0", or unlimited. [David]

       o   When publishing from a publish desk, you can now uncheck related
           assets in order to not publish them. You can also unset the
           "PUBLISH_RELATED_ASSETS" bricolage.conf directive to never publish
           related assets. [Scott]

   Bug Fixes
       o   The virtual FTP server now correctly creates a utility template
           when a template with an unknown name is uploaded. [David]

       o   The virtual FTP server now pays proper attention to all
           permissions. [David]

       o   A number of upgrade script annoyances were cleared up. [David]

       o   The "simple" parameter to the Media class' "list()" method works
           again. As a result, so does "Find Stories" in the UI. [David]

       o   The de-de localization library has been fixed so that it now works.
           [David]

       o   Filter by site context now works. 'All sites' context now returns
           results from all sites instead of none. [Joa~o Pedro]

       o   Several Alert Type fixes. Rule regular expression matching (=~, !~)
           now handles patterns containing slashes (important for URIs, for
           example).  Attributes no longer show up as stringified hash
           references in subject or message variable substitution.
           $trig_password was removed from the Profile as it caused an error
           and was useless anyway. And finally, duplicate and spurious
           attributes were removed from the rules and message variable lists.
           [Scott & David]

       o   Fixed Template Element list, where container elements appeared
           twice.  [Joa~o Pedro]

       o   The deletion of a site now properly resets the workflows to be
           displayed in the side navigation layer. [David]

       o   Changes to site settings are now correctly reflected in the UI for
           all users as soon as they are made. [David]

       o   New media documents no longer attempt to validate URI uniqueness
           until a file has been uploaded. [David]

       o   Autopopulated fields in media elements can once again have their
           values fetched in templates. This problem was due to bad key names
           being created for new image elements created after upgrading to
           1.7.0. [David]

       o   The workflow profile no longer displays deactivated sites in the
           site select list. Thanks to Serge Sozonoff for the spot. [David]

       o   The upgrade script that adds the "first_publish_date" attribute to
           the database now properly sets that date for existing assets, no
           matter how many "publish" events have been logged. There should be
           only one, but some systems apparently have more. [Thorsten Biel]

       o   Media, Story, and Template groups now properly display all of the
           permissions that can be granted to user groups to access them.
           [David]

       o   The "Next" button in the Element Type profile now correctly loads
           the next page of the profile instead of returning to the manager.
           [David]

       o   Fixed URI uniqueness upgrade scripts, which were having problems
           with PostgreSQL permissions. [David]

       o   "make clone" works again. [David]

       o   Fixed database building installer scripts to use the $PGHOST
           environment variable when it has been explicitly set to
           "localhost", both to override existing instances of that variable
           on a system, and to allow tunneling to work properly. [Thorsten
           Biel]

       o   Distribution jobs can be edited via the UI again. Thanks to
           Marshall Roch for the spot. [David]

       o   Publishes once again work when the "Date/Time Format" preference is
           set to something other than ISO-8601. Reported by Marshall Roch.
           [David]

       o   "bric_dist_mon" now correctly appends "/dist/" to the end of the
           server URL if it is not already appended. Reported by Marshall
           Roch. [David]

       o   If a desk is in a template workflow and a story or media workflow,
           and you attempt to publish a media or story document from that desk
           in the context of the template workflow, it will now properly
           publish the story or media document instead of throwing an error.
           Reported by Serge Sozonoff. [David]

       o   Fixed previewing with multiple OCs. [Serge Sozonoff]

       o   Fixed a bug in "bric_soap story create/update" caused by
           refactoring in version 1.7.0. Found by David during a demo. [Scott]

       o   An attempt to preview a story for which no template exists now
           gives a friendly error message again. This was broken by the change
           in 1.7.2 that made the Mason burner use document templates as true
           dhandlers. [Dave Rolsky]

       o   The workflow menus in the side navigation layer no longer disappear
           after a server restart. Reported by Ben Bangert. [David]

       o   The Mason burner's special "<%publish>", "<%preview>", and
           "<%chk_syntax>" tags now work as advertised. Reported by Ben
           Bangert.  [David]

       o   Publication of stories and media that automatically schedule
           expiration jobs no longer causes an error. Reported by Marshall
           Bloch. [David]

VERSION 1.7.2 "Kat" (2004-02-12)
   New Features
       o   Bricolage now has a much more robust security policy. Users with
           permission to edit various objects and groups in the administrative
           interface can no longer increase their permissions. Nor can they
           manage the membership of groups of which they are not members or do
           not have EDIT access to the members. All this is to prevent users
           from giving themselves higher permissions. [David]

       o   Added "publish_another()" method to Bric::Util::Burner. This method
           publishes a document other than the one currently being published.
           This is useful when a template for one document type needs to
           trigger the publish of another document. [David]

       o   Added new permissions "RECALL" and "PUBLISH". These permissions
           apply only to asset groups, including desks, categories, and
           workflows. Now users must have RECALL permission to recall assets
           from the library and bring them into workflow, and PUBLISH
           permission to publish assets. This should make it much easier to
           create more flexible permissions to manage approval processes.
           [David]

       o   Bricolage now supports per-user preferences. Admins can mark a
           preference as overrideable, which allows users to set this
           preference to their preferred value. [Dave Rolsky]

       o   The character set and language preferences have been moved into the
           database, so that these can be overridden by individual users if
           needed. [Dave Rolsky]

       o   Added "--published-only" option to bric_soap and bric_republish so
           that the last-published version of a document can be republished,
           rather than the current version. [Scott]

       o   Added Bric::Util::Job::Pub. Publication can now be placed into a
           queue and deferred until a scheduled time, instead of burning on
           command and distributing later, Bricolage will now burn a story at
           the time of the scheduled distribution. [Mark]

       o   Added the "bric_queued" daemon to take advantage of the new
           publication scheduling of Bric::Util::Job::Pub. Together with the
           use of a carefully tuned instance of Bricolage, these new features
           allow the Bricolage administrator to control the amount of system
           resources given over to publishing. [Mark]

       o   German localization completed. [Thorsten Biel]

       o   Added "get_parent()" method to
           Bric::Biz::Asset::Business::Parts::Tile. This simplifies getting
           access to a parent element in an element template. [David]

       o   Added User and Desk (asset) modules to the SOAP API, added asset
           commands to the Workflow module, and made corresponding changes to
           bric_soap. [Scott]

       o   Added "burn_again" attribute to the Mason burner. This method can
           be called from within a template to force the burner to burn the
           current page again, creating a new file. This can be useful for
           creating multi-file output without extra paginated subelements.
           [David]

       o   Added zh-cn localization, with translation based on zh-tw.
           [Kang-min Liu]

   Improvements
       o   A field that is both required and repeatable now allows instances
           of the field after the first instance to be deleted. Setting a
           field to required essentially means that one must always be present
           in the UI. [David]

       o   HTML::Template and Template Toolkit are now optional. If they're
           not installed on your system, they won't be loaded by Bricolage.
           [David]

       o   The default "Story Editors," "Media Producers," and "Template
           Developers" user groups now have READ permission to the members of
           the "All Sites" group so that they can properly select a site
           context and gain access to the workflows in their site context.
           [David]

       o   A number of improvements for the bric_media_upload contrib script:

           Creates intermediate categories if needed.
           Added a "--skip-existing" directive.
           Added a "--media-info" directive.

           See the script's usage info for details. [Simon Wilcox]

       o   Fixed upgrade scripts to be more intelligent in their handling of
           transactions. They no longer allow SQL errors without failing the
           upgrade. The upgrade scripts have also been updated to ensure
           successful upgrades to Bricolage installations as far back as
           1.4.0. [David]

       o   "make upgrade" now suggests that the user run "make clone" on the
           existing installation, and asks the whether to continue or not.
           This is to encourage folks to have a good backup before upgrading,
           in case the upgrade fails.  [David]

       o   Added "element_key_name" parameter to the "list()" method of the
           story, media, and formatting classes. This makes it easier to use
           the name of a story type element, media type element, or template
           element to search for assets, rather than the "element__id"
           parameter, which isn't as friendly. [David]

       o   Added "Filter by Site Context" preference. When active, search
           results only return assets relative to the site context instead of
           all the sites the user has access to [Joa~o Pedro]

       o   The Mason burner now uses document templates as true dhandlers,
           enabling full Mason-style inheritance from autohandlers to work
           properly. [David & Dave Rolsky]

       o   "All *" groups can now be accessed via the Group Manager. Their
           names and memberships cannot be edited, but their permissions can.
           Inspired by a bug report from Patrick Walsh. [David]

       o   Queries for stories, media, and templates have been greatly
           optimized. Thanks to a large database from The Register and query
           optimization from Josh Berkus (under sponsorship from WHO) and
           Simon Myers of GBDirect, searches for stories in the UI are now
           10-40 times faster than they were before (depending on the version
           of PostgreSQL you're running). [David]

       o   Added the "story.category" parameter to the "list()" method of
           Bric::Biz::Asset::Business::Story. Pass in a story ID, and a list
           of stories in the same categories as the story with that ID will be
           returned, minus the story with that ID. This parameter triggers a
           complex join, which can slow the query time significantly on
           underpowered servers or systems with a large number of stories.
           Still, it can be very useful in templates that want to create a
           list of stories in all of the categories the current story is in.
           But be sure to use the <Limit> parameter! Thanks to Josh Berkus for
           his help figuring out the query syntax. [David]

   Bug Fixes
       o   The "Checkout" checkbox is no longer missing in the Find interface
           for documents and templates that are already in workflow. [David]

       o   Category groups can be edited again. Reported by Alexander Ling.
           [David]

       o   Elements can be edited again. Thanks to Alexander Ling for the
           spot! [David]

       o   Element fields can be edited again without encountering the "called
           the removed method 'get_name'" error. Reported by Alexander Ling.
           [David]

       o   Improved the upgrade script for converting field definitions to use
           key names, thanks to reports from Nate Perry-Thistle. [David]

       o   Made the index on field key names case-insensitively unique.
           [David]

       o   Restored category asset group permissions in user group profiles.
           [David]

       o   Templates can be deleted again. Thanks to Adeola Awoyemi for the
           spot! [David]

       o   Stories and media with non-unique URIs can now be deleted. Reported
           by Simon Wilcox. [David]

       o   Checkin and Publish once again works in the media profile. Thanks
           to Alexander Ling for the spot. [David]

       o   Adding users to any of the default site user permission groups no
           longer incorrectly allow those users to select that site for their
           context. Reported by Alexander Ling. [David]

       o   The inline "Bulk Edit" feature in story and media profiles works
           again. Thanks to Neal Sofge for the spot! [David]

       o   Fixed 1.7.0 upgrade scripts that create key names to better handle
           key name conflicts. Thanks to Nate Perry-Thistle for having an
           installation that generated such conflicts. [David]

       o   Attempting to create a destination with the same name as an
           existing or deleted destination no longer causes an SQL error.
           Thanks to Simon Wilcox for the spot! [David]

       o   Templates are now correctly saved to the user's sandbox when "Save
           and Stay" is pressed. [Joa~o Pedro]

       o   Select lists now correctly save their states so that, for example,
           dropdown menus in New Story remember the element and category that
           was selected last time. [Scott]

       o   Group membership now correctly shows the site name for each object
           when there is more than one site in the installation. [Joa~o Pedro]

       o   Sites can now be disassociated with elements. Reported by Alexander
           Ling.  [David]

       o   Redirects during previews work again. [David]

       o   The virtual FTP server works again for the first time since before
           the release of 1.7.0. Now when you log in to the FTP server, the
           root directory will contain a list of sites. When you change
           directories into one of the site directories, you'll see a list of
           the output channels in that site. [David]

       o   The virtual FTP server no longer displays output channels or
           categories (or sites) that the user does not have at least READ
           permission to access. [David]

VERSION 1.7.1 (2003-11-30)
   Improvements
       o   The members of the "All" groups are prevented from being changed in
           the callbacks now, as well as in the interface, where a JavaScript
           function had been preventing it. [David]

   Bug Fixes
       o   Passwords can be changed again. [Mike Slattery]

       o   It is now virtually impossible to create media type or story type
           elements without site and output channel associations. This should
           eliminate errors when users try to create documents based on types
           without output channel associations. [David]

       o   The "Output Channel" item for templates on desks now displays
           properly.  [David]

       o   Eliminated bogus "Use of element's 'name' field is deprecated"
           warnings. Key names are allowed to have digits and underscores, and
           we weren't consistent about that. [David]

       o   The "display_element()" method in the Mason burner once again
           passes component arguments on to components. And now, so does
           "sdisplay_element()".  [David]

       o   Fixed favicon.ico code so that the browser and server don't go into
           an infinite loop with redirects of redirects. The favicon.ico still
           doesn't pop up in the location field in my browser, but it does
           display properly if I point my browser at it. [David]

       o   An attempt to create a document with the same URI as an existing
           document no longer litters the database with broken stories. Thanks
           to Arthur for the spot. [David]

       o   Redirection after some publishes and previews works again, instead
           of returning a text page to the browser. [David]

       o   Now displaying the name of the site each story and media document
           is in in Find Stories and Find Media. Suggested by Arthur. [David]

       o   A number of fixes for the bric_media_upload contrib script:

           Made it work with the 1.7.0 XML Schema.
           Fixed a bug in its use of File::Find.
           Fixed problem in calculating category names when given a directory
           to upload.
           Added "--bric_soap" and "--site" options.

           See the script's usage info for details.  [Dave Rolsky]

       o   Changing a media item's category and then saving caused an error.
           [Dave Rolsky]

       o   Changing a media document's cover date no longer causes the URI to
           disappear.  Thanks to Dave Rolsky for the spot. [David]

       o   Attempting to preview a story for which there are no associated
           destinations no longer causes the error 'Can't call method "ACCESS"
           without a package or object reference'. Thanks to Earle Martin for
           the spot! [David]

       o   Added "output_channel_id" parameter to the "list()" method of
           Bric::Biz::Site in order to prevent sites without output channel
           associations from being listed in the select list for story type
           and media type elements. [David]

       o   When a document fails to publish because there are no destinations
           configured, the UI no longer displays a message saying that it was
           published. [David]

       o   Fixed page logging so that redirects to the page before the current
           page can work correctly. It was most noticeably broken when trying
           to associate a contributor with a document. [David]

       o   The upgrade process no longer moves media document files to where
           Bricolage can't find them. If this happened to you, just "mv
           $BRICOLAGE_ROOT/comp.old/data $BRICOLAGE_ROOT/comp". [David]

       o   Performing an action in the contributor and category association
           interfaces in the story and media profiles no longer causes an
           empty search to be performed and return all contributors or
           categories. This could be a pain for organizations with 1000s of
           contributors or categories. Thanks to Scott for the report! [David]

       o   The Key Name field in the element profile is no longer editable.
           Only new elements can type in the key name field. Thanks to Arthur
           for the spot!  [David]

       o   The Template toolkit burner now correctly uses element key names
           instead of names to find corresponding templates. [David]

       o   Management of user groups in a double list manager UI no longer
           causes an SQL error. Spotted by Alexander Ling. [David]

       o   Sites added to a site group will now be listed as members of the
           site group in the site group's profile. Thanks to Alexander Ling
           for the spot. [David]

       o   Improved permission checking in the virtual FTP server. [David]

       o   Uploading a new version of a media file did not change the path to
           the media file stored in the database, unless the file name of the
           media was also changed. [Dave Rolsky]

VERSION 1.7.0 (2003-10-22)
   New Features
       o   Added multisite support. Now all stories, media, output channels,
           templates, categories, and workflows may be associated with
           different sites, and even have the same names in different sites.
           This simplifies the management of multiple Web sites with
           Bricolage. Story type and media type elements may be shared between
           sites. Funded by Portugal Telecom Multimedia. [David, Arthur,
           Garth, & Joa~o Pedro]

       o   Added document aliasing. Stories and media in a site may now be
           aliased and published in another site, as long as the elements on
           which they are based are shared between sites. Control over the
           content of aliased documents remains in the original site, thus
           ensuring the editorial integrity of the document for that site.
           Funded by Portugal Telecom Multimedia. [David]

       o   Changed element attribute "name" to "key name" to emphasize its
           uniqueness within an element. Also changed the "Display Name" to
           "Label" [Garth]

       o   Added a "key_name" attribute to elements as the system-wide unique
           key for each element, rather than the name. The name is now used as
           a label. Note that the key name only allows certain characters, as
           it is used to name the template files that format the element. This
           makes the "has_name()" method a bit simpler -- and it can in fact
           be ignored in favor of "$element->get_key_name eq $key_name". Thus
           there may be some warnings if older name values are passed to
           "has_name()". [Garth]

       o   Refactored Bric::Biz::Keyword. It is now more compliant with the
           standard API as defined in other classes. Also added support for
           keyword groups so that we can create a keyword manager. [David]

       o   Added "$burner->sdisplay_element" method to Bric::Util::Burner.
           This is a "sprintf"-style version of "$burner->display_element".
           [Scott]

       o   Added "get_data_element()" method to
           Bric::Biz::Asset::Business::Parts::Tile::Container. This allows
           template writers to more easily find a single data element object,
           rather than just the value of a single data element (as
           "get_data()" does). Inspired by a comment from Bill Cappel. [David]

       o   Added the "YEAR_SPAN_BEFORE" and "YEAR_SPAN_AFTER" bricolage.conf
           directives. These directives control how many years before and
           after the current year to display in the list of years in the date
           and time select widget. The default values are 10 for each, meaning
           that if the current year is 2003, then the date span will be from
           1993 to 2013.

       o   Added the "ENABLE_SFTP_V2" bricolage.conf directive to make SSH
           protocol 2 be tried first. [Scott]

       o   Added "Email" action, which can be used to email the files
           generated by a publish to one or more email addresses. Funded by
           ETonline. [David]

       o   Callbacks were moved from Mason components to modules based on
           Params::Callback and managed by MasonX::Interp::WithCallbacks. This
           makes the UI layer more responsive and enhances maintainability.
           [Scott]

       o   Optimized performance of URI uniqueness checks by adding database
           tables to do the job, rather than constructing the URIs for all
           other documents in the same categories as the document being
           checked. This was the last major bottleneck affecting SOAP
           performance, as well as document editing in general. Funded by
           Kineticode. [David]

       o   Added "instance()" class method to Bric::Util::Language, so that
           non-OO functions can get access to the current language handle.
           [David]

       o   Added "output_channel_id" parameter to the "list()" methods of
           Story and Media to enable querying for documents in output channels
           other than the primary output channel. Based on a patch from Clive
           Jones. [David]

       o   Lots of notification message localization fixes. [Radu Greab]

       o   Status message localization fixes [David]

       o   Added "search by element type" to Advanced Search of the Find
           Stories and Find Media interfaces. [Scott]

       o   Added a preference to select Simple or Advanced search in Find
           Stories/Media the default search when you go to those screens.
           [Scott]

       o   Added "Select all" button to select all the checkboxes on publish
           desks or My Workspace. [Scott]

       o   Added Keyword Management interface to centrally manage keywords.
           [Scott]

       o   Added "--workflow" and "--desk" options to create and update
           commands of "bric_soap", so that assets can be moved to a desk at
           the same time as creation or updation. [Scott]

       o   Added Group Membership sections to most of the profiles. [Joa~o
           Pedro]

       o   Some optimizations to Bric::SOAP::(Media|Story|Template) classes.
           [Scott]

       o   Added HTML::Mason Custom tags support, allowing template developers
           to write code blocks that are context sensitive. See
           Bric::AdvTemplates for documentation on this. [Joa~o Pedro]

       o   Added new page extension support to the burner, which allows
           template developers to set string extensions to use for successive
           file names, rather than the traditional use of numeric file name
           extensions for successive file names. [Clive Jones]

       o   Added "Text to search" option in the Advanced search of Media and
           Stories to search for documents based on the contents of their
           field. [Joa~o Pedro]

       o   All preview links are now generated by a single widget. This widget
           adds the story or media URI to the "title" attribute of the link
           tag (which is modern browsers will automatically work as a roll-
           over tooltip), makes the story or media URI copyable (by relying on
           JavaScript to actually open a new window for the preview), and
           manages selecting an output channel in which to preview a story.
           [David]

       o   Made User Group Permissions UI wieldy with larger numbers of users
           by adding a select list to choose which type of Permission to look
           at. [Scott]

       o   Added ability to preview stories in a selection of output channels
           in the View (read-only) story profile. [David]

       o   Combined the asset "Find" managers into a single component, thus
           eliminating a lot of redundant code. [David]

       o   Added "contrib_id" parameter to the "list()" methods of
           Bric::Biz::Asset::Business::Story and
           Bric::Biz::Asset::Business::Media to return a list of story or
           media documents associated with a given contributor. [David]

       o   Switched Bric::Util::CharTrans from using Text::Iconv to Encode,
           thus removing the dependency on a C library (libiconv). Note that
           this has changed the API of Bric::Util::CharTrans. Its "to_utf8()"
           and "from_utf8()" methods now always convert the argument passed in
           in place. They did this before for references, but now they do it
           for plain strings, as well. Also note that use of character
           translation also now requires Perl 5.8.0 or later. [Scott & David]

       o   Factored out some of the SOAP asset classes into Bric::SOAP::Asset.
           [Scott]

       o   Added MediaType, Site, and Keyword SOAP modules. [Scott]

       o   Changes to a story's slug, cover date, or primary category will now
           be displayed before the story is saved. Suggested by a coworker of
           Andy Baio. [David]

       o   The Find Stories, Find Media, and Find Templates interfaces now
           disallow searching for and returning all of the stories and media
           in the database. This will help prevent thousands or tens of
           thousands of assets from being displayed in the UI and sucking up
           all the resources on the server. [David]

       o   Added "element" attribute to Bric::Util::Burner so that
           "$burner->get_element" should always return the element currently
           being burned. [David]

       o   Added burner-specific exceptions with context information,
           including current output channel, current category, and current
           element. [David]

       o   Added a "throw_error()" method to Bric::Util::Burner so that
           template developers can easily throw an exception that their users
           will see in the UI. [David]

       o   Added "best_uri()" method to Bric::Util::Burner to return the most
           appropriate URI (in Bricolage's opinion) for a document. Mainly
           useful when multiple sites and document aliases are used. [David]

       o   Greatly simplified burner subclassing by adding a new registration
           method to Bric::Util::Burner. This cuts down on the number of files
           that need to be edited to add a new burner. [David]

       o   Moved category selection from Media and Story Profiles into their
           own separate components so that organizations with hundreds or
           thousands categories don't have to load them into a dropdown list
           every time an asset is edited. The category "browser" uses an
           interface similar to 'Associate Contributors', which has the
           advantage of being searchable rather than looking through a "long
           list of all categories". This feature can be enabled via the new
           "ENABLE_CATEGORY_BROWSER" bricolage.conf directive. [Scott]

       o   Added list paging to Desks and My Workspace. [Scott]

       o   XHTML/CSS-ized desk items. This approach is the future of the
           Bricolage interface: purely structural HTML, with CSS to create the
           presentation.  Eventually, we'll be able to have UI preferences to
           change font sizes or the entire look and feel just by switching
           style sheets. But for now, this change should help with the display
           of desks with many items on them, and it should also speed the
           display of such desks. Turn off the "USE_XHTML" bricolage.conf
           directive to get the old desk views back (useful for older
           browsers). [David]

       o   Added a preference to set the default Story/Media sorting. [Scott]

       o   Added the ability to test templates without having to deploy them
           by using "template sandboxes" for each template developer. [Joa~o
           Pedro]

       o   Added Template Toolkit burner support. [Arthur/Fotango]

       o   Added a bricolage.conf directive, "ALLOW_SLUGLESS_NONFIXED", to
           prevent slugless non-fixed (non-Cover) stories. [Scott]

       o   Added support for installing and upgrading Bricolage with
           PostgreSQL on a separate host. [Thorsten Biel]

       o   Added context-sensitive help for pages that were missing it.
           [Scott]

       o   "make upgrade" no longer simply overwrites the contents of the UI
           component root ($BRICOLAGE_ROOT/comp), but renames it
           $BRICOLAGE_ROOT/comp.old and writes out a new one. This is both so
           that deleted UI component files don't remain behind after an
           upgrade, and so that users can access any files that they've
           changed in the old component root. Most users can just delete it
           after upgrading. [David]

VERSION 1.6.14 (2004-05-02)
   Bug Fixes
       o   "make upgrade" once again correctly creates postgres.db if the
           existing installation doesn't know the installed version of
           PostgreSQL. [David]

       o   Adding notes to image, video, or audio media documents no longer
           causes an error. Reported by Christian Hauser. [David]

       o   Errors in the "PERL_LOADER" bricolage.conf directive no longer
           silently fail. [David]

       o   A successful login no longer redirects back to the login page, thus
           no longer forcing a second redirect in such cases. Reported by
           Marshall Roch. [David]

       o   The $burner object is now available in Mason template "<%once>"
           blocks during the syntax check, although $story and $element are
           not. All three are in the "<%once>" block during previews and
           publishes. This means that they can all be used in a "<%once>"
           block like this:

             <%once>;
             unless ($burner->get_mode == SYNTAX_MODE) {
                 # Do stuff with $story or $element.
             }
             </%once>

           Reported by Serge Sozonoff. [David]

VERSION 1.6.13 "Tripled" (2004-04-10)
   Bug Fixes
       o   Deactivated groups no longer affect permission checking. Discovered
           thanks to a bug report from Serge Sozonoff. [David]

VERSION 1.6.12 "Tov" (2004-04-09)
   Bug Fixes
       o   Warnings are no longer fatal. This was only the case ouside of
           mod_perl, and so was probably quite rare, anyway. [David]

       o   Upgrades no longer cause an error during the execution of
           inst/db_grant.pl. Reported by Abdul Halim Mazahar. [David]

       o   Alerts once again properly check the attributes of the events that
           trigger them. Reported by Patrick Walsh. [David]

VERSION 1.6.11 "Green" (2004-03-17)
   Bug Fixes
       o   A checkbox that is unchecked in an element no longer reverts to
           checked when clicking "Save and Stay". Reported by Scott Lanning.
           [David]

       o   Date parameters to the "list()" methods of the story, media, and
           template classes are now properly converted to UTC (and the
           database internal format) before being passed to the database.
           [David]

       o   Elminated some warnings. Reported by Christian Hauser. [David]

       o   Simplified error handling in the "Bric" base class and when running
           outside of "mod_perl". [David]

       o   Fixed issue with load order directives in Bricolage dynamic
           httpd.conf generation. This had caused the "PREVIEW_MASON"
           directive to not work in some cases. Incidentally, this change also
           allows dynamic configuration of mod_perl 1.26 and earlier. [David]

VERSION 1.6.10 "Jump" (2004-02-29)
   Bug Fixes
       o   Added missing index to the "workflow__id" column of the "story",
           "media", and "formatting" (template) tables. [David]

       o   Made index on the "desk__id" column of the "story", "media", and
           "formatting" (template) tables a partial index, since the column
           will usually be "NULL". [David]

       o   Added an index to the description column of the "story_instance",
           "media_instance", and "formatting" (template) tables to speed up
           simple searches. [David]

       o   Added missing foreign key constraints for the "desk_id" column of
           the "story", "media", and "formatting" (template) tables. [David]

       o   "make clone" no longer fails when it can't find httpd.conf, because
           it no longer looks for it. [David]

       o   "make clone" no longer assumes that the conf directory is in
           $BRICOLAGE_ROOT, and prompts the user to find out. [David]

       o   Bricolage once again works with Perl 5.6.x and Perl 5.8.1. [David]

       o   Made bric_republish and bric_dev_sync safe to use with "https://".
           [Geoff Richards]

       o   The user object is no longer instantiated from the database every
           time a user sends a request to Bricolage. It appears that this bit
           of overhead has unfortunately been imposed on every request since
           Bricolage 1.0 due to a very stupid typo. [David]

       o   The creation of the Bricolage PostgreSQL user and database during
           installation no longer complains about usernames or database names
           with dashes and other non-alphanumeric characters in them. Thanks
           to Marshall Roch for the spot!  [David]

       o   Fixed ancient bug revealed by the release of DBI 1.41. [David]

       o   Photoshop-generated images no longer make Bricolage choke when
           they're uploaded to a Media profile that autopopulates fields.
           Reported by Paul Orrock. [David]

       o   The "lookup()" method of the story, media, and template classes
           will now correctly return inactive objects. [David]

       o   Fixed typo of "CHECK_FREQUENCY" in Bric::Config that made it always
           use the default of 1. [Scott]

       o   The "lookup()" method of the story, media, and template classes
           once again attempt to retrieve objects from the per-request cache
           before looking them up in the database. [David]

       o   Changed the name of the event logged when templates are checked out
           from "Template Checked Out Canceled" to the correct "Template
           Checked Out." [David]

VERSION 1.6.9 (2004-02-06)
   Bug Fixes
       o   Fixed installation and upgrade scripts to use the same perl binary
           as was used to execute Makefile.PL. This ensures that all necessary
           CPAN modules will be correctly installed and located. [Simon
           Wilcox]

       o   Story profile JavaScript validation works again. Thanks to Simon
           Wilcox for the spot! [David]

       o   Eliminated the need for the Apache::ConfigFile module, and thus
           some annoying problems with the CPAN indexer when trying to install
           it. [David]

       o   Fixed order of SQL statement execution upon installation so that
           dependencies are properly handled. [Mark]

       o   New file resources created for distribution are now created with
           the proper media type. [Mark]

       o   The German localization module (Bric::Util::Language::de_de) had
           the wrong package name, which meant that attempts to use it failed
           with the error "Can't locate class method
           'Bric::Util::Language::de_de::new' via package
           'Bric::Util::Language::de_de'". [Dave Rolsky]

       o   Added new path to find PostgreSQL installed by some Debian
           packages. [Cinly Ooi]

       o   Workflows with special characters such as "+" and "&" now work
           properly in the side navigation. Thanks to Patrick Walsh for the
           spot! [David]

       o   Start desks can no longer be removed from workflows. This prevents
           workflows from having no desks, thus avoiding problems adding desks
           to such workflows. Reported by Patrick Walsh. [David]

       o   Pushing the cancel button in a desk profile and then in a workflow
           profile no longer redirects back to the desk profile. [David]

       o   Made publish_date not be empty when publish is done through the
           SOAP API and no publish_date argument is passed. [Scott]

       o   Fixed CPAN installer to correctly update the list of modules to be
           installed after a module has been successfully installed. Reported
           by Perrin Harkins.  [David]

       o   Checkout checkboxes no longer appear for assets that users don't
           have permission to check out. Thanks to Alexander Ling for the
           spot! [David]

       o   Bric::Biz::AssetType::Parts::Data's "lookup()" method now returns
           deactivated objects, as it should. Thanks to Nuno Barreto for the
           spot. [David]

       o   Events with attributes with the same name as attributes of the
           object the event was triggered on (a common occurrence) no longer
           confuses the two. Thanks to Todd Tyree for the spot. [David]

       o   Users granted permission to access the members of a group via two
           user group associations now always get the highest priority
           permission, as it should be. Thanks to Patrick Walsh for the spot.
           [David]

       o   Textarea fields in elements no longer lose some of their default
           data after editing the field in the element manager. Reported by
           Todd Tyree. [David]

       o   Media assets now properly remember their class, which means that
           autopopulated fields (such as "height" and "width" for images) are
           autopopulated when a new image file is uploaded. Thanks to Patrick
           Walsh for the spot! [David]

       o   Updated Chinese Traditional localization. [Kang-min Liu]

VERSION 1.6.8 (2003-11-29)
   Bug Fixes
       o   Custom select fields now correctly pay attention to the size
           attribute.  Reported by Dave Rolsky. [David]

       o   The element type manager now displays "Subelement" instead of
           "Story" for subelement element types. Suggested by Dave Rolsky.
           [David]

       o   Updated to work with PostgreSQL 7.4. [David]

       o   Improved error message in Bric::Util::Trans::SFTP. [David]

       o   It's possible to create new stories again without running into
           errors saying that a URI is not unique because the cover date and
           slug were accidentally excluded from the URI. [David]

       o   Mason story templates now inherit from all category templates, thus
           enabling the access of "<%attr>"s and calling of "<%method>"s in
           category templates from story templates. [David]

       o   Permission to edit element fields is now based on the permissions
           granted to edit the elements they belong to. This means that users
           other Global Admin group members can now edit fields. [David]

       o   Dates are no longer editable if a user doesn't have permission to
           edit them.  [David]

       o   Users without EDIT access to an element no longer see a link to
           Edit fields of that element, but a link to View them, instead. They
           will also no longer see an "Add Subelements" button. [David]

       o   Fixed bug that triggered an invalid error message when a story URI
           is non-unique.  Reported by Kevin Elliott. [David]

       o   Assets with the same IDs but in different classes (media vs.
           stories vs.  templates) no longer prevent each other from being
           added to a desk that can contain different classes of assets.
           Thanks to Scott for the spot and doing the research that lead to
           the replication of the problem. [David]

       o   The Log page no longer improperly redirects to the preview page
           after a preview. Reported by Simon Wilcox. [David]

VERSION 1.6.7 (2003-10-22)
   Bug Fixes
       o   Fixed "bric_soap" to accept a "--server" argument starting with
           "https", which is more friendly to an SSI environment. [Geoff
           Richards]

       o   The PostgreSQL admin username and password arguments were reversed
           during "make upgrade". [Thorsten Biel]

       o   Fixed broken foreign key index on element table. [Dave Rolsky]

       o   Added partial index to speed queries against the job table, and
           thus to speed distribution. [Mark]

       o   Fixed upgrade module to properly grant the correct Bricolage
           database user permission to access new tables and sequences.
           [David]

       o   An upgrade script failure will really now cause "make upgrade" to
           halt installation so that any issues are immediately identified and
           correctable.  [David]

       o   Updated slug RegExen. They were a bit too strict, and should be
           better now, allowing dots, dashes, and underscores. Spotted by
           Creighton Higgins. [David]

       o   The $name variable no longer shows up twice in the list of
           available content variables for alert types on media documents.
           Thanks to Scott for the spot! [David]

       o   Inactive alert types no longer trigger the sending of alerts.
           Thanks to Scott for the spot. [David]

       o   Added tests for validity of the POD in *.pod files as well as *.pm
           files. Fixed a few POD typos found as a result. [David]

       o   Fixed "element_data_id" parameter to
           Bric::Biz::Asset::Business::Parts::Tile::Data to actually work.
           Reported by Eldar Kononov. [David]

VERSION 1.6.6 (2003-10-03)
   New Features
       o   Added README.Solaris, with thanks to Oscar Sodani and Thorsten
           Biel.

   Bug Fixes
       o   When an asset is published or deployed directly from the asset
           profile, it is now properly removed from the publish or deploy
           desk. Reported by Andy Baio's coworker. [David]

       o   The "desk_id" attribute of assets is now properly cleared when an
           asset is removed from workflow. [David]

       o   Fixed 1.6.5 upgrade script to look for Bric::Config in the proper
           location.  [David]

       o   Templates now display their output channel associations instead of
           their element associations on desks. This seems to be more useful,
           since the element association is usually obvious from the name.
           [David]

       o   The category URI is now displayed for assets on desks, rather than
           the name. This is consistent with the display of the category
           elsewhere. [David]

       o   Elements to which no subelements can be added will no longer
           display an empty select list and "Add Element" button. [Geoff
           Richards]

       o   "Bric::Biz::Asset::Business::Story->get_secondary_categories()"
           will no longer return categories deleted from the story. Thanks to
           Scott for the spot. [David]

       o   Removed some unnecessary JavaScript validation. [David]

       o   Bug fix when deploying to multiple output channels. If the output
           channel IDs matched each other partly, it could cause a file to be
           removed after it just had been uploaded. [Arthur/Fotango]

       o   Users with CREATE access to a start desk can once again create
           stories on that desk even when they don't have CREATE access to
           "All Stories." Reported by Simon Wilcox. [David]

       o   Each upgrade script is now run within the confines of a single
           database transaction. If any database changes within an upgrade
           script encounter an error, all of the changes in that script will
           be rolled back. Suggested by Arthur. [David]

       o   An upgrade script failure will now cause "make upgrade" to halt
           installation so that any issues are immediately identified and
           correctable. [David]

       o   An invalid date in a date element field no longer causes an error.
           Thanks to Arthur for the spot! [David]

       o   With "(STORY_URI_WITH_FILENAME" enabled and when there is no
           defined file extension Bricolage now doesn't insert an ending '.'
           (dot). [Arthur/Fotango]

       o   Slight fix to virtual FTP server to handle bad FTP clients that try
           and use directories as files. [Arthur]

VERSION 1.6.5 (2003-09-10)
   Bug Fixes
       o   Previewing stories with related media that have no associated file
           no longer causes an error. Reported by Kevin Elliott. [David]

       o   Switched to using "DBI->connect_cached()" from using our own
           database connection caching. This change does bump up the minimum
           required version of DBI to 1.18, though the latest version is
           always recommended. It's also the right thing to do. Thanks to
           Perrin Harkins for the suggestion. [David]

       o   Fixed issue that could cause Bric::Util::DBI to create inconsistent
           transaction states. Spotted by Rudy Lippan. [David]

       o   Removed passing of DEBUG argument to "prepare()", "prepare_c()" and
           "prepare_ca()", since it hasn't actually worked in some time, and
           could potentially change the behavior of the prepare. [David]

       o   Bric::SOAP::Workflow no longer throws an error when its
           "publish_date" parameter is undefined. Reported by Kevin Elliott.
           [David]

       o   Passing an undef via the "workflow__id" parameters to the "list()"
           method of Story, Media, or Template really does again cause
           Bricolage to correctly return only those assets that are not in
           workflow. It wasn't as fixed in 1.6.3 as I had thought. Reported by
           Kevin Elliott. [David]

       o   Vastly improved the speed of the query that lists events, and added
           an index to help it along, as well. [Mark]

       o   The list of categories associated with a story is now presented in
           alphabetical order by URI in the story profile. Suggested by Geoff
           Richards. [David]

       o   The FTP mover now properly deletes files rather than erroring out.
           [Clive Jones]

       o   Fixed installer to use PostgreSQL 7.1 syntax to update statistics.
           [David]

       o   Now setting $PGDATESTYLE environment variable so that PostgreSQL
           isn't confused about the date style Bricolage is using. Suggested
           by Chris Riddoch.  [David]

       o   Users without EDIT access to the start desk in a workflow can no
           longer create assets in that workflow. Nor can they check out
           assets from the library, as there's no start desk for them to check
           them in to. But they can still check them out from other desks that
           they have EDIT access to. Reported by Rachel Murray. [David]

       o   Time zone issues have been fixed to be more portable. Some
           platforms that experienced Bricolage unexpectedly shifting cover
           dates and other dates and times by several hours should no longer
           see this problem. [David]

       o   Non-existent methods no longer throw "permission denied"
           exceptions, but the standard Perl "Can't locate object method"
           exception. This is to eliminate confusion with permission to access
           Bricolage objects. [David]

       o   Adding a new element type with the same name as an existing or
           deleted element type no longer causes an SQL error. Thanks to Gary
           Gilchrist for the spot.  [David]

VERSION 1.6.4 (2003-08-12)
   Bug Fixes
       o   Preview works again. [David]

VERSION 1.6.3 (2003-08-12)
   Bug Fixes
       o   Document and contributor type field information (label, options) is
           no longer pushed through Locale::Maketext, thus preventing errors
           when element and contributor type administrators create field
           options with brackets in them. Reported by Kevin Elliott. [David]

       o   Documents associated with categories that have been deleted will
           once again work properly. Even though a category may be
           deactivated, any documents previously put into that category should
           still work, and still treat the category as a working category. And
           so they do. Thanks to Kevin Elliott for the spot! [David]

       o   Renamed events for adding fields to elements and contributor types.
           They were mentioning "attributes," and now they mention "fields,"
           instead. [David]

       o   Updated Bric::Admin (INSTALL) to instruct users encountering
           installation problems to first check the list archives and post to
           the mailing list before filing a bug. [Cinly Ooi]

       o   Permissions granted on the "All" groups work again. Reported by
           Kevin Elliott.  [David]

       o   Resize now works in super bulk edit. Thanks to Michael G. Kaiser
           for the spot.  [David]

       o   Documented that the "list_ids()" methods in Bric::Biz::Asset's
           subclasses ignore the "Order" and "OrderDiretion" parameters and
           return an unordered list of IDs. Reported by Clive Jones. [David]

       o   The "Add Element" select list in story, media profiles now lists
           the fields that can be added in the order specified in the element
           profile, and then the subelements that can be added, instead of
           mixing up fields and subelements in alphabetical order. Thanks to
           Joa~o Pedro for the spot! [David]

       o   When a template is deployed, Bricolage now checks to see if its
           file name has changed since it was last deployed, and if it has, it
           deletes the old file. Reported by Kevin Elliott. [David]

       o   Optimized performance of Bric::Dist::Resource queries and wrote
           lots of tests for them. [David]

       o   When a story or media document is published, Bricolage now looks to
           see if any files distributed for previous versions of the document
           are no longer associated with the document, and expires them if
           they are. It does so on a per-output channel basis, so note that if
           output channel settings have changed since the document was last
           published, the expiration may miss some stale files. The same goes
           for when destinations are changed. But this should cover the vast
           majority of cases.

       o   Fixed error looking up alert types in the database, which affected
           the alert type manager on some platforms. Reported by Radu Greab.
           [David]

       o   Deactivated alert types are once again available via the UI.
           [David]

       o   Text input fields no longer impose a default maximum field length.
           This is so that element fields that have their maximum length set
           to 0 can truly be unlimited in length. Reported by Kevin Elliott.
           [David]

       o   Template output channel associations no longer trigger an error
           when importing templates via the SOAP interface. [Clive Jones]

       o   Passing an undef via the "workflow__id" parameters to the "list()"
           method of Story, Media, or Template once again causes Bricolage to
           correctly return only those assets that are not in workflow.
           Reported by Kevin Elliott. [David]

       o   Extra blank lines between subelement tags in super bulk edit no
           longer causes an error. Thanks to Kevin Elliott for the spot!
           [David]

       o   Searches no longer return unexpected results or all objects when
           pagination is enabled. Thanks to Kevin Elliott for the spot!
           [David]

       o   The searches for documents by beginning and ending cover dates were
           not inclusive of the end date. Now they are! Reported by Kevin
           Elliott. [David]

       o   Fixed spelling of "contributor" in the description of the
           contributor type class in the database. Noticed by Radu Greab.
           [David]

VERSION 1.6.2 (2003-07-28)
   New Features
       o   German localization started. [Gerfried Fuchs]

       o   New help pages for the destination, server, and action profiles.
           [Geoff Richards]

   Bug Fixes
       o   Fixed a bug in Bric::SOAP::Media which was causing all media files
           uploaded with that module to be placed in
           "comp/data/media/$version/" rather than
           "comp/data/media/$id/$version/". [Mark]

       o   Fixed SQL bug that might in rare situations cause element output
           channel associations to become confused. [David]

       o   Fixed issue where new output channels added to a document type
           element were not always actually saved as a part of that element.
           [David]

       o   Fixed side navigation spacer graphic to the same width as other
           such graphics. Helps Chinese Traditional to display more nicely.
           [Kang-min Liu]

       o   The media simple search now searches by URI again. [Mark]

       o   Now HTML-escaping the contents of the context content displayed for
           subelements so as to prevent HTML in fields from messing up the
           display.  [Mark]

       o   Fixed installer to again work with versions of PostgreSQL prior to
           7.3. Thanks to Marc Hawson for the spot. [David]

       o   Fix for 'Can't call method "out_method" on an undefined value'
           generated during a burn. [Mark]

       o   Many minor HTML corrections. [Gerfried Fuchs]

       o   Fix for SQL error when searching for media by file name. [David]

       o   Eliminated 'Can't locate object method "redirect" via package
           "HTML::Mason::Request"' error that caused Bricolage to actually
           display a generic error page, instead of its custom error page.
           [David]

       o   Alert types can once again be deleted from the alert type profile.
           [David]

       o   Users can now only add subelements to a story if they have at least
           READ permission to those subelements. Thanks to Mark for the spot.
           [David]

       o   If the installer notices that you're attempting to install
           Bricolage in a directory with an existing installation, it will
           suggest that you consider running "make upgrade", instead.
           Suggested by Bruce Albrecht. [David]

       o   The list manager now sorts version numbers as numbers rather than
           strings.  [Joa~o Pedro]

       o   The media type profile again allows extensions to be added and
           removed.  Reported by Tobias Kremer. [David]

       o   Added the "CHAR_SET" directive's value to Bricolage's Apache
           configuration via the httpd.conf directive "AddDefaultCharset".
           Might help with some Unicode issues. [David]

       o   Distribution error handling is better now, with errors passed back
           to the client and an error when bric_dist_mon attempts to connect
           to a server or URL that's not a Bricolage distribution server.
           [David]

       o   Eliminated installation error 'Failed to create database: parser:
           parse error at or near "template0"', which occurred with versions
           of PostgreSQL prior to 7.3. [Scott]

       o   Enabled the "PERL_LOADER" bricolage.conf configuration directive
           and gave it a default value that's actually useful. [David]

       o   Perl 5.8.0 or later is now strongly recommended for better Unicode
           support.

       o   Fixed deleting an Alert Type Rule. Also fixed Editing Alert Type
           Recipients.  [Scott]

       o   Notes are once again saved with a document. Thanks to Scott for the
           spot!  [David]

       o   Fixed an issue with FTP distribution where the incorrect FTP root
           was used an invalid path. [Clive Jones]

       o   The title and description of a story or media document are now
           properly reverted when the document is reverted to an earlier
           version. Thanks to Scott for the spot. [David]

       o   Pagination now works properly when searching for groups by type in
           the group manager. [Scott]

       o   Pagination now works properly when searching for elements by
           element type in the element manager and when searching for
           contributors by contributor type in the contributor manager.
           [David]

       o   Creating a new story that has a URI that conflicts with an existing
           story no longer creates an extra story. Reported by Clive Jones.
           [David]

       o   Changed "Cannot publish asset because there are no Destinations
           associated with its output channels" to instead include the name of
           the output channel missing Destination associations so that the
           user can tell which output channels need a Destination association.
           [Clive Jones]

       o   When an document's primary output channel has been changed to
           something other than that defined by its document type element,
           preview will now correctly use the document's primary output
           channel instead of the element's primary output channel. [David]

       o   Returning to a desk from editing an asset that was selected for
           editing from that desk no longer triggers an error. Thanks to Clive
           Jones for the spot!  [David]

       o   An attempt to preview a story where its templates output no content
           no longer results in an error. Reported by Eldar Kononov. [David]

       o   Clicking "Cancel" in an element no longer saves the changes in that
           element before going up to the parent element. Thanks to Andrew
           Baio for the spot!  [David]

       o   Changes made to the default values of fields in the contributor
           type profile are now properly saved. Reported by Scott. [David]

       o   Adding Extensions to a Bric::Util::MediaType object when creating
           it via that class' "new()" constructor works again. Reported by
           Clive Jones. [David]

       o   Added Localization support to widgets that were missing it. Added
           pt_pt localized images. [Joa~o Pedro]

       o   Documents are no longer distributed to deleted (deactivated)
           destinations.  Reported by Mark. [David]

       o   Eliminated several error log authentication message such as "No
           cookie found."  This tended only to confuse users when they were
           just starting to use Bricolage. I've left in a few error messages,
           however, so that system administrators can see in the log when it
           looks like someone is trying to hack into Bricolage. The remaining
           authentication error log messages are:

           o   Invalid username or password. Please try again.

           o   User does not exist or is disabled.

           o   Malformed cookie.

           o   Cookie hash mismatch from [IP address] (Hostname '[hostname]')
               for user '[username].'

       o   Elements added with the same name as an existing, active or
           inactive element no longer trigger an SQL error to be displayed.
           Thanks to Clive Jones for the spot! [David]

       o   Fixed issue where adding an output channel to a document type
           element removed that output channel from another document type
           element. Thanks to Clive Jones for the spot! [David]

       o   Adding a server to a new destination before saving the destination
           or adding an action no longer causes an SQL error. [David]

       o   "make clone" now properly clones bricolage.conf, "httpd.conf", and
           all of the contents of conf/. [David]

VERSION 1.6.1 (2003-06-12)
   New Features
       o   Added bric_xfer_grps and bric_xfer_users to contrib/bric_xfer. They
           use the Bric API to transfer users and groups between Bricolage
           Installations.  [Scott]

       o   Added Traditional Chinese localization. [Kang-min Liu]

   Bug Fixes
       o   "make clone" now properly creates inst/Pg.sql instead of
           inst/bricolage.sql. It also once again properly resolves the
           circular dependency between the "usr" table and the "login_avail()"
           PostgreSQL function. [David]

       o   The FTP distributor now deletes existing copies of files before
           renaming a temporary file when connecting to Win32 servers. This is
           because the IIS FTP server doesn't seem to support renaming a file
           to the same name as an existing file. [David]

       o   Creating the database during "make install" no longer fails if
           someone is already connected to template1. [Scott]

       o   A preview link is no longer in the "Find Media," "Active Media,"
           desk, or "My Workspace" views for media that have no associated
           file. [David]

       o   "make upgrade" now uses the correct PostgreSQL root username and
           password, instead of the default "postgres" username and empty
           password. Thanks to Paul Cory for the spot! [David]

       o   Burn-time exceptions are once again properly displayed in the error
           page. [David]

       o   When the "STORY_URI_WITH_FILENAME" bricolage.conf directive is
           enabled, stories are now written to the proper file when previewed
           or published. Thanks to Kevin White for the spot! [David]

       o   Fix issue that came up with the release of Mason 1.20. Reported by
           Jeff Steele. [David]

       o   Fixed typo in Media Type manager that broke it. Reported by Lari
           Huttunen.  [Scott]

       o   Fixed problem where an attempt to add new output channels to a new
           element before saving that element cause errors. Mainly noticeable
           when creating elements via SOAP. Thanks to Mark for the spot.
           [David]

       o   Various localization fixes. [Scott]

       o   Fixed event logging for element fields. [David]

       o   Media assets that are based on "Image", "Audio", and "Video"
           element types now properly show up on desks. Note that existing
           media assets missing from desks should be checked out via "Active
           Media" and moved to a new desk. [David]

       o   Documented the support for passing %ARGS to
           "$burner->display_element()" in templates. It was added to
           Bric::Util::Burner::Mason a while ago, but I forgot to document it!
           Thanks to Mike Slattery for the spot. [David]

       o   Added Crypt::SSLeay to the list of optional modules to be
           installed. This module is required for SOAP communications over
           SSL. So if you use SSL and you use the SOAP server, you'll want to
           install it. [David]

       o   Fixed alerts so that alerts are once again sent to the members of
           groups.  Reported by Paul Cory. [David]

       o   Deleted alert types are no longer displayed in the Alert Type
           Manager. Thanks to Paul Cory for the spot! [David]

       o   Added more intelligent code using HTTP headers instead of HTML to
           prevent browsers [IE] from caching pages. [David]

       o   Bricolage no correctly sets the HTTP headers for the content
           language and character set. Thanks to Nathan Ollerenshaw for the
           spot! [David]

       o   "make clone" now changes the user and group ownership on the cloned
           files to the values for the current user (root). This is to avoid
           problems when "tar"ing up those files. [David]

       o   Added code to Apache configuration to force JavaScript files to be
           served with the proper character set HTTP header. Those who use
           manual Apache configuration along with Bric::App::ApacheStartup
           will want to add the following configuration directive to your
           httpd.conf:

             <Location /media/js>
               ForceType => "application/x-javascript; charset=utf-8"
             </Location>

       o   The virtual FTP server no longer displays templates in
           subcategories of the current subcategory directory. Thanks to
           George Harrison for the spot! [David]

       o   Output channel associations in story type and media type elements
           can now be deleted again. Thanks to Arthur Bergman for the spot!
           [David]

       o   Added listing of emeritus developers. Otherwise Sam was simply
           listed as a patcher, which is hardly accurate. [David]

       o   The element profile no longer displays deleted fields after
           clicking the "Save and Stay" button. [David]

       o   The element profile now correctly issues a warning when a field is
           selected to be deleted. [David]

       o   Made unlocalized JavaScript message localized. [David]

VERSION 1.6.0 (2003-04-29)
   New Features
       o   Added the "STORY_URI_WITH_FILENAME" bricolage.conf directive,
           which, when enabled, allows story URIs to include the file name.
           This is especially useful in output channels where "Use Slug as
           File name" is enabled, since it allows stories to essentially have
           identical URIs except for the file name. Off by default. [David]

       o   Added bric_media_upload, a media file bulk import utility, into
           contrib. Thanks to Matt Vella for the contribution.

       o   New help pages for the event log and the workflow trail. Thanks to
           Geoff Richards for the contribution.

       o   Some unnecessary JavaScript was removed from the side navigation
           layer. Thanks to Eldar Kononov for the suggestion. [David]

       o   Added keyword support for media assets to SOAP interface. [David]

       o   Neatened the "Find Stories," "Active Stories," "Find Media," and
           "Active Media" screens and added the ability to preview stories and
           media by clicking their titles. [David]

       o   Added Field Profile, so that element Fields can be edited. This is
           a marked improvement over the old interface, which required that
           fields be deleted and recreated if users wanted to change them.
           [Scott]

   Bug Fixes
       o   Granting of permission to database objects during installation has
           been moved to its own make target. This is to allow it to be run by
           "make upgrade", too, thus ensuring that the Bricolage database user
           always has the appropriate permissions to access the database.
           [David]

       o   Assets can once again be removed from workflow. [David]

       o   The published version attribute is now set on templates when
           they're deployed. Thanks to Geoff Richards for the spot. [David]

       o   The bricolage.conf and httpd.conf files are now created during
           "make" rather than "make install" so that "make test" can take
           advantage of them.  [David]

       o   Bric::App::Session and Bric::App::Cache no longer "chown" their
           files and directories during "make test". [David]

       o   Super Bulk Edit no longer joins lines together without a space, so
           that words should now be properly separated. [David]

       o   Deleting a story or media subelement no longer results in an error.
           [David]

       o   Help has been restored. [David]

       o   A value of "0" (zero) can now be given to element fields. This bug
           has been in Bricolage since the beginning! Thanks to Mark for the
           spot. [David]

       o   Stories with subelements containing no field elements no longer
           cause an error when the container profile is looking for contextual
           information to display about a a subelement. Thanks to Chris
           Jantzen for the spot. [David]

       o   Bulk editing a field without first going through the element
           profile and without adding or removing or reordering field elements
           now preserves the data. This is another bug that has been in the
           code since the beginning of time, and was only recently identified.
           Thanks to Rachel Murray for the spot.  [David]

       o   Fixed an obscure bug where an element with a field element and a
           container element with the same ID could cause an error when one
           tries to edit the container element and Bricolage tries to load the
           field element, instead. Embarrassingly discovered in the middle of
           a presentation to the London Perl M[ou]ngers. [David]

       o   Minor JavaScript fix for Opera users, thanks to Kevin White.
           [David]

       o   The "multi" installation method now defaults the "Bricolage Root
           Directory" setting to /usr/local/bricolage instead of "NONE". This
           seems to be less annoying to people. [David]

       o   The inst/upgrade/1.5.1/asset_desk.pl script, which is run by "make
           upgrade", now correctly checks to see if the upgrade has already
           been performed. [David]

       o   The inst/upgrade/1.5.1/webdav_mover.pl script, which is run by
           "make upgrade", now correctly checks for the existence of the
           correct record in the "class" table before inserting a new record.
           [David]

       o   During "make upgrade", the upgrade scripts are now run before the
           new APIs are installed, so that there are no conflicts when using
           the existing API to make changes. [David]

       o   Creation and installation of man pages can now be avoided during
           "make upgrade" as well as during "make". [David]

       o   Man pages will now be installed in the correct subdirectory of
           $BRICOLAGE_ROOT when using the "multi" install method. [David]

       o   Fixed issue where asset groups and desk groups were conflated in
           workflow objects, leading to errors on the permissions page. Thanks
           to Joa~o Pedro for the spot. [David]

       o   The URI of new stories is once again properly formed when the
           stories are created. [David]

       o   The list of events no longer displays attributes for events that
           have no attributes. [David]

       o   Attempting to add more keywords to the root category no longer
           results in the error "Cannot change the directory of the root
           category." [David]

       o   In lists of objects a cell with a value of "0" (zero) will now be
           displayed.  [David]

       o   In "Find Templates," the list of templates in the search results
           will now be sorted by the file name, instead of not at all. [David]

       o   "make distclean" now properly deletes inst/Pg.sql. [David]

VERSION 1.5.2 (2003-04-02)
   New Features
       o   Out of the box, the Story Editors, Media Producers, and Template
           Developers groups now have READ permission to access members of the
           "All Categories" and "All Elements" groups, which allow them to
           actually create assets based on elements and within categories.
           [David]

       o   Workflow and Desk permissions are a little more sensible now.
           CREATE permission can be granted for the start desk in each
           workflow, instead of for the entire workflow. This allows a lower
           permission to be set on the workflow (e.g., READ), and then higher
           permissions on the individual desks in the workflow. [David]

       o   New "Tuning" sections have been added to Bric::DBA. [Mark]

   Bug Fixes
       o   The default required length for usernames and passwords has been
           changed from 6 to 5. This is to make dealing with the default
           "admin" login easier.

       o   It is once again possible to delete elements when they are not
           associated with any story or media asset. [David]

       o   The output channel profile once again only complains that the name
           of an output channel is already in use if it happens to be true.
           [David]

       o   Bric::Config now does its best to find a workable httpd.conf file
           during "make test". [David]

       o   Subclasses of Bric::Biz::Asset::Business::Media work again, and can
           have keywords associated with them, too. [David]

       o   The "Access Denied" message is back for when someone tries to
           access an object to which they don't have adequate permission.
           [David]

       o   Previews of assets that are not checked out work again. [David]

       o   Workflow and desk permissions relative to the assets they contain
           are now restored to their previous behavior. Desks no longer simply
           inherit the permission granted on any of the workflows they're in.
           This issue was resolved by creating a new secret asset group ID for
           each workflow. [David]

       o   The primary output channel is now always enabled by default in top-
           level elements. This is to make it much harder to create documents
           without output channel associations, an event that can lead to
           database exceptions. [David]

       o   The root category now lists itself as being in the "All Categories"
           group only once in the category profile. [David]

       o   Assets will no longer appear to randomly disappear from workflow.
           [David]

       o   Added constraints to the "media_type_member" group that were
           inadvertently left out of 1.5.1. [David]

       o   Permissions are now once again properly checked for assets in
           categories, workflows, and on desks. [Mark]

VERSION 1.5.1 (2003-03-23)
   New Features
       o   Lots of group-related optimizations. These should greatly improve
           the speed with which permissions are checked. [David]

       o   Improved testing support with lots more tests. Many more remain to
           be written. See the new testing documentation in Bric::Hacker for
           details. [David]

       o   Added ability to publish assets at a future time to
           Bric::SOAP::Workflow.  Includes addition of new "--publish-date"
           option to bric_soap. [David]

       o   Added WebDAV mover. [Joa~o Pedro]

       o   FTP and File System movers now atomically copy files to their
           destination servers. [Joa~o Pedro]

       o   Added "All Desks" group for managing the permission to access all
           desks.  [David]

       o   Refactored and optimized the code used in the "lookup()", "list()",
           "list_ids()", and, where pertinent, "href()" methods in the
           following classes:

           Bric::Biz::Asset
           Bric::Biz::Asset::Business
           Bric::Biz::Asset::Business::Story
           Bric::Biz::Asset::Business::Media
           Bric::Biz::Asset::Template
           Bric::Biz::AssetType
           Bric::Biz::ATType
           Bric::Biz::Category
           Bric::Biz::Org
           Bric::Biz::Org::Person
           Bric::Biz::Org::Source
           Bric::Biz::OutputChannel
           Bric::Biz::OutputChannel::Element
           Bric::Biz::Person
           Bric::Biz::Person::User
           Bric::Biz::Workflow
           Bric::Biz::Workflow::Parts::Desk
           Bric::Dist::Job
           Bric::Dist::ServerType
           Bric::Util::AlertType
           Bric::Util::Event
           Bric::Util::Grp
           Bric::Util::MediaType
           Bric::Util::Pref

           This work will allow permission checking to be much faster for
           objects of these classes, as the relevant group IDs are now looked
           up for each object when the object is looked up, rather than by a
           separate select for each object, one-at-a-time. The changes also
           include support for a "grp_id" parameter to be passed to the
           "list()" method of these classes as a way of allowing a group to
           return a list of the objects in the group en masse, rather than
           one-at-a-time from the member objects of each group. Once similar
           optimizations have been made to the Bric::Biz::Assest classes, the
           necessary change will be made to Bric::Util::Grp to allow this
           functionality. [David and Mark]

       o   Added object caching to the base class, and calls to it from all
           classes with a "lookup()" method to take advantage of it. The
           caching is only for the duration of a request for now, but can be
           expanded later. [David]

       o   Updated INSTALL.MacOSX to reflect changes thanks to the new Mac OS
           X support included in libapreq 1.1. [David]

       o   Added "Super Bulk Edit", which is a bulk edit interface allowing
           users to edit all of the fields in an element at once using POD-
           like tags, rather than just a single repeatable field. [Garth]

       o   Added help topic for new "Super Bulk Edit" feature. [David]

       o   Localization and Internationalization support introduced, with a
           Portuguese library to complement the default English. Most message
           strings have been replaced with calls to the proper localization
           method. Still to be done are strings fetched from the database
           (e.g. events). [Claudio Valente]

       o   Localization of text images (buttons), Help, and JavaScript message
           added.  These still need translation, however. [David]

       o   Added Italian translation. [Marco Ghezzi]

       o   Documented bric_dist_mon and bric_ftpd. [David]

       o   Optimized and added tests for Bric::Util::Priv's "get_acl()" and
           "get_acl_mtime()" methods. These should make the looking up of a
           user's access control list faster. [David]

       o   Added preview link to every element profile of a story profile.
           [Scott]

       o   Pared down number of default User groups by eliminating those that
           relate to only a single admin menu item. [David]

       o   Fixed code in Bric::Util::Grp where the "has_member()" method would
           fail to look up an object with an ID of 0. [Joa~o Pedro]

       o   Switched exceptions from home-grown to using Exception::Class.
           [Scott]

       o   The installer now offers a more meaningful message when it
           encounters an existing database and the user doesn't want to drop
           that existing database.  [David]

       o   Added category group association, including ability to cascade
           membership assignments into subcategories, to category profile.
           [Joa~o Pedro]

       o   The installer will no longer try to load CPAN.pm if all modules are
           already installed. Thanks to Ilia Chipitsine for the prodding.
           [David]

       o   The "Content" section of story, media, and subelement profiles now
           attempts to display a bit of text from the first text field in each
           listed subelement so that it's easier to see at a glance which
           subelement is which. [Joa~o Pedro]

       o   Switched POD testing from Pod::Checker to Test::Pod (using
           Pod::Simple). Fixed the POD errors it found, too. [David]

       o   Test suite now runs all tests with warnings enabled. [David]

       o   Modified "Grp->get_objects()" to use use the "grp_id" parameter to
           "list()", now that support for that parameter has been added to all
           groupable classes. Also went through all existing code to make sure
           that it uses this approach, rather than constructing the relevant
           objects one-at-a-time from each Member object. This should provide
           a dramatic speedup in many operations.

       o   Bric::App::Session now has an "instance()" public class method to
           return the current %session hash. [Scott]

       o   Subelements can now nest. That is, they can contain themselves. Not
           in a story, of course, but in the document model (element
           administration). [David]

       o   Keywords can now be associated with media assets. [David]

       o   Templates now have a "published_version" attribute that properly
           reflects the version of a template that was last deployed. This
           matches what Story and Media have done since around version 1.3.2,
           and eliminates some warnings from the error log. The UI has also
           been updated to properly show the deploy status of templates.
           [David]

       o   The installer should now properly detect that the Apache
           "log_config" module is installed even when it's called
           "config_log". Thanks to Ilia Chipitsine for the spot and the
           diagnostics needed to solve the problem. [David]

   Bug Fixes
       o   The publish attribute of desks can now be unset. Thanks to Sean
           Greathouse for the catch! [David]

       o   Fixed asset class date parameters to list(). The asset classes were
           neglecting to change the dates passed in to list() to database
           dates before querying the database. This lead to the wrong stories
           being returned for everyone not using UTC as their local time zone.
           Thanks to Bill Cappel for the spot! [David]

       o   Fixed bug where expired cookie resulted in a Bric::App::Session
           error. [Joa~o Pedro]

       o   A number of default groups where not properly added to the "All
           Groups" group. Now they are. [David]

       o   Bricolage now does more to determine the media type of uploaded
           media by using both the Apache media type determination and,
           failing that, a file name extension. Thanks to Todd Tyree for the
           spot. [David]

       o   Fixed the description of the root category in the permissions
           profile for user groups so that it properly displays its URI
           instead of its name. This only affects the display of the root
           category in the permissions profile for people who installed
           (rather than upgraded to) Bricolage 1.4.5 or later. [David]

       o   An attempt to create a template with the same name and output
           channel as a deactivated template now properly tells the user that
           the template already exists. [David]

       o   Fixed indexes for person objects so that they're case-insensitive.
           [David]

       o   Fixed problem creating new business assets with SOAP where
           Bricolage was trying to associate them with output channels twice,
           resulting in an SQL Error. [David]

       o   Fixed broken index on media type extensions. It was duplicating the
           index on the media type names. It has been changed to uniquely
           index the media type file name extensions. [David]

       o   "Bric::Biz::Category->get_children" now properly returns the
           children for the root category. Thanks to Sam for the spot! [David]

       o   Removed "Bric::Biz::AssetType->remove". It shouldn't be used
           anywhere, and might be responsible for the mysterious disappearance
           of elements in general. Thanks to Joa~o Pedro for the spot. [David]

       o   Assigned appropriate permissions to allow the default "Story
           Editors," "Media Producers," and "Template Developers" to access
           the default workflow and desks relevant to them. They hadn't had
           that access by default before. [David]

       o   Changed the plural name of the "Category Group" class from
           "Category Group" to "Category Groups". [David]

       o   Fixed bug introduced in 1.5.0 where stories where checked for
           duplicate URIs for output channels that they weren't actually in.
           Thanks to Bill Cappel for the spot. [David]

       o   Fixed duplicate URI checking for media assets so that all output
           channels a media asset is in will be checked for duplicate URIs
           instead of just the primary URI. [David]

       o   Fixed bug where all sources were being deactivated from their
           groups every time they were saved. [David]

       o   Fixed bug where the SOAP server would throw an exception when it
           attempted to handle elements without subelements. Thanks to Sam
           Tregar for the report.  [David]

       o   It is no longer possible to create a story type or media type
           element without a primary output channel. [David]

       o   Deleted output channels no longer show up in the list of output
           channels to associate with a destination. Thanks to Alex Epshteyn
           for the spot! [David]

       o   The installer now collects Apache configuration data from any
           "Include"d files, as well. Thanks to Alex Wheeler for the spot!
           [David]

       o   Media types now can be added to groups. This means that permissions
           can be set so that users can administer media types. Previously,
           only members of the "Global Admins" group could administer media
           types. [David]

VERSION 1.5.0 (2003-01-09)
   New Features
       o   Added unit testing framework based on Test::Class and executed by
           Test::Harness. Tests can be run after "make install" by running
           "make test" or "make devtest". The former runs tests that access
           database data but execute no "INSERT", "UPDATE", or "DELETE"
           commands. The latter runs tests that can make changes to the
           database, and are intended to be a full testing of Bricolage's API.
           Both make targets can be executed in verbose mode by passing
           "TEST_VERBOSE=1" to the make command. From now on, all tests will
           be expected to pass before changes are committed to the repository.
           [David]

       o   Added Makefile.PL. This is mainly a dummy script designed to mimic
           the usual way in which Perl modules are installed. It doesn't
           actually create a Makefile, but processes the existing one, setting
           it up to use whatever Perl was used to execute Makefile.PL itself.
           The advantage to this is that the Perl that executes Makefile.PL
           will be used throughout Bricolage. [David]

       o   Migrated tests in lib/Bric/Util/Grp.pl to
           t/lib/Bric/Util/Grp/Test.pm and t/lib/Bric/Util/Grp/DevTest.pm.
           [David]

       o   Added t/Bric/Test/PodTest.pm, which uses Pod::Checker to examine
           the POD in all the Bricolage modules, scripts, and test modules and
           report errors. Currently, all the errors are "TODO" tests, which
           means that, technically, they'll pass. But as soon as all existing
           POD errors are cleaned out, errors will turn into test failures.
           This will help us to keep all of our POD valid. These tests run as
           a part of "make devtest". [David]

       o   Removed all old-style test scripts. Their contents have been copied
           into new unit testing classes. These classes each execute a single
           test, and the old testing contents are at the end of the file,
           after the "__END__" symbol. Thus we'll be able to use the old tests
           to write the new tests. [David]

       o   Added documentation on merging CVS branches to Bric::Hacker.
           [David]

       o   Removed the URI Format and URI Case preferences and put them into
           Output Channel objects, instead. They are now output channel-
           specific. [David]

       o   URI format and URI case settings now properly format the URIs of
           media objects, too. [David]

       o   The slug can now be used in the Fixed URI Format. [David]

       o   The slug can now be used for story file names. The option is
           supported on an output channel basis, and will only work for
           stories that have a slug. [David]

       o   Added a "and Shelve" option to the "Check In" select list in the
           button bar on story, media, and asset pages. When this option is
           selected, the asset is checked in and then removed from workflow
           without publishing. [David]

       o   Removed the "Checkin/Publish" and "Checkin/Deploy" buttons in asset
           profiles and replaced them with new "and Publish" or "and Deploy"
           options in the "Check In" select list in the button bar. Doing this
           collects all the usual Check In actions in one place and saves us
           screen real estate! [David]

       o   Changed the way the "Checkin and Publish" and "Checkin and Deploy"
           callbacks work to use existing code in the desk and publish widgets
           to do the dirty work. This greatly reduces code duplication.
           [David]

       o   Created a new class, Bric::Biz::OutputChannel::Element, which is a
           subclass of Bric::Biz::OutputChannel. This new class better manages
           the mapping of output channels to elements than the old approach
           did. It also adds a new property, "enabled", which will be put to
           use shortly. [David]

       o   Replaced all the custom handling of output channel objects in
           Bric::Biz::AssetType with a new Bric::Util::Coll subclass that does
           it all. This is a lot more efficient in terms of programmer time
           (and probably performance, too). [David]

       o   Modified Bric::Biz::Asset::Business to manage the association
           between business assets and output channels by making use of the
           Bric::Util::Coll::OutputChannel class. It also automatically adds
           all of the "enabled" output channels of the element object as
           initial output channel associations for new business assets.
           [David]

       o   Added a new property to templates: template types. This property
           can have one of three value that correspond to different template
           types: "Element Templates" (those associated with elements);
           Category Templates" (autohandlers in Mason parlance, category
           templates to HTML::Template users, and until now "generic
           templates" in the UI); and "Utility Templates" (those not
           associated with anything, but can be used as includes). [David]

       o   Templates are now guaranteed to have unique file name/output
           channel combinations at the API and database levels. [David]

       o   For stories on My Workspace, replaced "Trail" with "Clone".
           Clicking this link will make an exact copy of the story with the
           words "Clone of " prepended to the story title. [David]

       o   Got rid of the popup window. Now when the toolbar-less window isn't
           the current window, the browser will be redirected to a a Welcome
           page where users can click a link to open the new window with the
           Bricolage UI. [David]

       o   Improved the interface for the association of output channels in
           Element Profile. It now uses a list of output channels rather than
           a double list, and a radio button to select the primary output
           channel. Also, each associated output channel can be marked as
           "Enabled" or not, indicating whether a new asset based on the
           element will by default be associated with that output channel for
           publishing. [David]

       o   On a related note, Stories and Media can now select which output
           channels to be published to on a per-story basis as well as which
           is the primary output channel, and the selection sticks with each
           version of a an asset. The list of available output channels comes
           from the output channels associated with the element on which the
           story or media asset is based. [David]

       o   Bric::Util::Burner objects have a new property, "mode". This
           property contains an integer value indicating whether a burner
           object is currently publishing, previewing, or checking syntax. The
           value maps to the conveniently-named constants "PUBLISH_MODE",
           "PREVIEW_MODE", and "SYNTAX_MODE". [David]

       o   The documentation in the Bric::Util::Burner class has been updated
           and improved. [David]

       o   Arguments can now be passed to the "display_pages()",
           "display_element()", and "chain_next()" methods of the $burner
           object in Mason templates. These arguments are passed to the
           templates that are executed just as they are if you'd called
           "$m->comp", meaning that you can access their values via the %ARGS
           global and in "<%args>" blocks in Mason templates. [David]

       o   Changed the "display_pages()" method of Bric::Util::Burner::Mason
           so that its first argument can be an anonymous array of the names
           of different paginated elements, and then all of those different
           paginated elements will be burned in order. This allows a story to
           have more than one type of paginated element. [David]

       o   Added the methods "prev_page_file()", "prev_page_uri()",
           "next_page_file()", and "next_page_uri()" to Bric::Util::Burner.
           These methods return the strings representing the file names or
           URIs of the previous and next pages of a story, relative to the
           page that is currently being burned and, in the case of the
           "*_uri()" methods, appropriate to the currently-burning Output
           Channel. Also updated the Bric::Templates and Bric::AdvTemplates
           documents to reflect these additions. [David]

       o   Added "source__id" to list of criteria by which stories can be
           searched via the Bric::Biz::Asset::Business::Story "list()" and
           "list_ids()" methods. [David]

       o   The Bricolage CSS document is now a static file served by Apache
           rather than a Mason component processed by mod_perl. This allows
           the style sheet to be cached by the browser so that it doesn't have
           to request it for every page in Bricolage. It also cuts down on
           processing time, since it doesn't have to be managed dynamically as
           a Mason component anymore. Also, all font sizes are now specified
           in pixels instead of points, in order to maximize the consistency
           of cross-browser font rendering. [David]

       o   Added a new style for the template profile, so that template code
           is now displayed in its textarea box in a monospaced font. [David]

       o   The main Bricolage JavaScript library has had several other
           JavaScript libraries rolled into it, and is now a static file
           served by Apache rather than a Mason component processed by
           mod_perl. This allows the JS to be cached by the browser so that it
           doesn't have to request it for every page in Bricolage. It also
           cuts down on processing time, since it doesn't have to be managed
           dynamically as a Mason component anymore. [David]

       o   Added bricolage.conf directive "ALLOW_WORKFLOW_TRANSFER" to allow
           assets on shared desks to be able to be transferred across
           workflows via that shared desk. [David]

       o   Changed Bric::Util::Burner to set "publish_status" after
           publishing, rather than before. Thus it is only set if the publish
           is successful, while at the same time templates can check
           "publish_status" to determine if a story is being published for the
           first time. [David]

       o   Added "get_more_pages()" method to Bric::Util::Burner::Mason. It
           returns true if more pages remain to be burned, and false if not.
           However it's only enumerated when "display_pages()" is being used
           to output pages. [David]

       o   Optimized Bric::Biz::Category to get a list of Group IDs for each
           category as it is selected from the database. This prevents the
           "get_grp_ids()" method from having to query the database, which was
           happening for every category object for which permissions are
           checked. [Mark & David]

       o   Added event logging for keywords. [David]

       o   Changed the code in Bric::Util::Burner::Mason to allow for new
           Mason burners to be constructed and used to publish stories from
           within templates. This is useful for generating tables of contents
           and such. [David]

       o   Added support for the association between business assets and
           output channels to the SOAP interface. [David]

       o   Removed IO::String dependence. [Scott]

       o   Added a FAQ. [Scott]

       o   Added a preference for naming the Bricolage instance. [Scott]

       o   Added search by Category URI to Find Stories. Although one could
           use the search by URI feature for this before, it didn't allow for
           search by secondary categories. Now stories can be searched for in
           both primary and secondary categories. [David]

       o   Added the methods "page_file()" and "page_uri()" to
           Bric::Util::Burner. When passed a page number argument, these
           methods return the strings representing the file names or URIs of
           the given page in the currently-burning story and, in the case of
           the "page_uri()" method, appropriate to the currently-burning
           Output Channel. These methods are best used in burners that don't
           burn one page at a time, such as Burner::Template. [David]

       o   Ported to HTML::Mason versions 1.15 and higher. [Scott]

       o   Added "make uninstall" support to installation system. [Scott]

       o   Added "page_filepath()" method to Bric::Util::Burner. This method
           allows burner subclasses to get the name of a file to write to the
           file system without needing to figure out the file name themselves.
           [David]

       o   Optimized behavior of collections (internal API). Now when an
           object is deleted from a collection (for example, when a member is
           deleted from a group), all the existing objects in the collection
           won't first be looked up in the database. The upshot is that
           certain parts of Bricolage that rely on collections, such as desks,
           should be more responsive. [David]

VERSION 1.4.6 (2003-01-06)
   Bug Fixes
       o   Bric::SAOP::Handler now properly logs fatal errors that are strings
           rather than exceptions. [David]

       o   Updated Bric::DBA documentation to better reflect PostgreSQL
           standards.  [Neil Conway]

       o   Minor documentation correction in Bric::Util::Grp::Parts::Member.
           [Mark]

       o   Fixed bug in SOAP interface where container subelements added to a
           story or media asset were logged as if the story type element or
           media type element was added instead of the appropriate subelement.
           [David]

       o   Fixed bug in publish code that was attempting to use the Apache
           request object as a media asset. Thanks to John Greene for the
           spot. [David]

       o   Fixed bug where an empty or non-numeric <size> element in an
           imported media object would cause an SQL error. [Sam]

       o   The bric_apachectl, bric_clean_tmp, bric_dist_mon, and bric_ftpd
           scripts are now smarter about loading Bricolage libraries and
           reporting relevant errors when they can't load Bricolage libraries.
           Thanks to Geoff Richards for the patch. [David]

       o   Category permissions are now properly checked on assets when
           they're not in workflow as well as when they are in workflow. This
           means that if a group of users is granted permission to access
           stories in a category, they can now access those stories even if
           they're not in workflow. [David]

       o   The search interface for locating media and story assets to relate
           to a story now checks the permissions of the assets found and only
           displays the assets for which the user has at least READ
           permission. Thanks to Sean Greathouse for the spot. [David]

       o   Reverting a media asset now properly reverts the media file itself,
           as well.  [David]

       o   The "Last" field is now properly highlighted as the default order
           field when displaying a list of contributors in the Contributor
           Manager. [David]

       o   Contributor Association now includes search options and only
           currently-associated contributors are displayed before searching.
           [David]

       o   The ability to select different fields by which to sort a list of
           objects now works again. [David]

       o   The installer now checks to make sure that mod_perl is statically
           compiled into Apache, since weird things tend to happen when
           Bricolage uses a DSO mod_perl. [David]

       o   Fixed reordering code for subelements. The select list for
           subelements should now always have an appropriate value. [David]

       o   The URI is now properly updated in media assets when some part of
           the URI is changed in the UI. Thanks to Sean Greathouse for the
           spot. [David]

       o   The Add More widget no longer throws an exception when "Add More"
           is clicked and only one field currently exists. This had affected
           Keywords entry in stories. Thanks to Sam for the spot. [David]

       o   Fixed bug where a user could create two assets with the same URI as
           long as they were both checked out by that user. Thanks to Shannon
           Brown for the spot!  [David]

       o   Date fields can now be unset. That is, if each of the select fields
           is set to its label, rather than a value, it'll stay that way. This
           was first noticed with the "Expire Date" in stories. Thanks to
           Philip Fibiger for the spot.  [David]

       o   Modified installation "CREATE DATABASE" command to always create
           the database with the encoding set to UTF-8 (UNICODE). [David]

       o   Added instructions for installing readline library to
           README.MacOSX. [David]

       o   Fixed some inaccurate image sizes. [Geoff Richards]

       o   Added missing "uri" parameter to the possible search options in
           "Bric::SOAP::Category->list_ids". [David]

VERSION 1.4.5 (2002-11-13)
   Changes
       o   Categories are now displayed by their URIs instead of their names
           wherever possible. [David]

       o   Added "Order" and "OrderDirection" parameters to
           "Bric::Util::Grp->list" in order to be able to specify a different
           column and sort order for getting a list of groups. [David]

       o   Improved error handling by the SOAP server. Full errors will now be
           printed to the Apache error log, error messages sent back to the
           client are properly escaped, and all database transactions for a
           single request will be rolled back in the event of an error.
           [David]

   Bug Fixes
       o   Fixed error message generated from Bric::SOAP::Template->update()
           to properly display the category name, rather than
           "ARRAY(0x9cf43bc)". [Sam]

       o   The Bricolage SOAP interface will no longer allow the creation of
           stories and media with duplicate URIs. [Sam]

       o   Fixed circular dependency issues when Bricolage modules are used in
           the "PERL_LOADER" bricolage.conf directive. [David]

       o   Added the root category to the "All Categories" group. It should
           have been in that group all along. [David]

       o   Documentation for "Bric::Biz::Workflow->list" has been improved,
           and the method used for finding workflows and desks to put imported
           assets on in Bric::SOAP has been simplified. [David]

       o   Added printing of a message regarding the filenames being processed
           by bric_soap's "create" and "update" commands when its "--verbose"
           option is set. [David]

       o   Setting a story's cover date to a date that causes one of its URIs
           to conflict with an existing story's URIs no longer causes an
           error. Thanks to Sam for the spot! [David]

       o   Display of the source was missing from the view Story and Media
           profiles, but no longer. [David]

       o   The correct source is now displayed in the Story and Media edit
           profiles.  [David]

       o   An attempt to install Bricolage to use an existing PostgreSQL user
           no longer causes an installation error when you decline drop the
           user. [David]

       o   The burner no longer fails when it publishes an asset that's not on
           a desk. [David]

       o   SOAP now does the proper thing when deleting assets, removing them
           from desks and workflow only if they're on desks and in workflow.
           [David]

       o   Added support for the missing "publish_status" parameter to
           "Bric::Biz::Asset::Business::Media->list". [David]

       o   Setting permissions on the assets in a category works again.
           [David]

       o   Fixed a bug where exporting a story via SOAP containing a date
           field would output the formatted date rather than the expected ISO
           8601 format.  Systems with a modified date format pref would then
           refuse to accept the story on import, producing an "Unable to
           unpack date" error. [Sam]

       o   Stories, media, and templates created but not saved no longer
           disappear into the void. They are instead moved into workflow, put
           on a desk, and saved as soon as they were created. [David]

       o   Permissions are now properly checked for category and workflow
           settings when new stories, media, and template assets are created.
           [David]

       o   New templates are now active by default. [David]

       o   Fixed bug where the "Checkin/Publish" (and "Checkin/Deploy") button
           wasn't provided to users who had EDIT access to a the assets on a
           desk. Permissions are now properly checked and the button displayed
           for those who can publish from a desk. [David]

       o   Added missing debugging statement to Bric::Util::DBI. Thanks to
           Mark for the spot. [David]

       o   The SOAP interface now properly logs events for its activities.
           [David]

       o   Previewing a story while searching for a related story to link to
           an element no longer replaces the Bricolage UI with the preview, as
           was happening with some browsers. Instead, a separate preview
           window is opened. [David]

       o   When publishing a media asset, its name will not be properly added
           to the UI message, without causing an error. [Petar Bojkov]

       o   Fixed exception class name in Handler.pm. [Scott]

       o   Fixed installation system bug caused by inst/conf.pl loading
           Bric::Config during "make install".  Thanks to Louis Moore for the
           report. [Sam]

       o   Added missing "list_ids()" method to Bric::Biz::Category. [David]

VERSION 1.4.4 (2002-10-27)
   Bug Fixes
       o   Empty listManager lists no longer have a gap in them. [David]

       o   Made the table around the formBuilder radio buttons prettier.
           [David]

       o   Fixed numbering of sections in Media profile so that the numbers
           don't skip. [David]

       o   Updated display of existing contributors in the "Edit Contributors"
           screen of the story and media asset profiles to use listManager.
           This makes them look like they do everywhere else (and uses less
           code, to boot!). [David]

       o   Improved error messages thrown in exceptions in
           Bric::Util::Trans::FTP.  [David]

       o   Removed code and documentation for PostgreSQL 7.3 compatibility.
           With the release of 7.3b2, it's no longer needed. [David]

       o   Fixed "make clone" to properly include database contents in clone
           distribution. [Sam]

       o   Added "<meta http-equiv="Content-Type">" tag to the "<head>" to
           header.mc so that the browser knows to send text back to Bricolage
           in the expected character set. [Mark]

       o   Changed the default character set from ISO-8859-1 to UTF-8. With
           this setting, Bricolage does no character set translation, so it's
           faster. Furthermore, most users should be outputting UTF-8 in their
           templates, anyway. If you're not, then you're likely finding doing
           charset translation in all of your templates to be a big PITA. And
           if you're not doing charset translation, then you really are
           outputting UTF-8 in your templates, and just haven't realized it.
           [David]

       o   Fixed bug when reverting stories and media with no associated
           contributors.  [Mark]

       o   "Check In and Publish" now works again for Media assets. Thanks to
           Matt Vella for the spot. [David]

       o   Deleting assets on My Workspace now prompts the user to make sure
           s/he really wants to do that. Not sure how we missed this all this
           time! Thanks to Andrew Baio for the spot. [David]

       o   Assets on Desks and My Workspace that are checked out to the the
           user whose viewing them will now always preview the version as
           currently edited by the user, rather than the last checked-in
           version. Other users still can only preview the last checked-in
           version. [David]

       o   Clicking the "Check In" or "Check In/Deploy" buttons in a template
           profile now properly updates the template with any new data entered
           into the template profile before attempting a syntax check. This
           ensures that the latest data you've entered gets its syntax checked
           before the template is checked in or deployed. [David]

       o   Fixed a bug in Bric::Util::Class where classes couldn't be looked
           up by package name. This affected the "Access Denied" page. [David]

       o   Made Bric::Util::Burner::Mason a little smarter handling
           exceptions. [David]

       o   Fixed bug where Bric::SOAP::Category would fail to import ad
           strings. [David]

       o   Fixed bug in "Bric::Util::Grp->has_member" where an already-added
           member wasn't always found. [Mark]

       o   Conflicting URI messages for media assets no longer suggest
           changing the value of the slug, since media assets have no slug.
           [David]

       o   The friendly messages confirming publishes are back. [David]

       o   Fixed bug where selecting a large number of list options in the
           story profile would cause an SQL error. [Matt]

       o   Fixed bug where Bric::SOAP would accept story element types for
           media and vice versa. Thanks to Evan Prodromou for the spot. [Sam]

       o   Added code to installation scripts to delete existing Mason object
           files when upgrading. This hasn't been a problem thus far, but this
           step will help to ensure that users are always running the latest
           UI components. [David]

       o   Fixed bug where deactivated element types weren't checked before
           creating a new element type with the same name as a deactivated
           element type. Thanks to Geoff Richards for the spot. [David]

VERSION 1.4.3 (2002-09-28)
   Bug Fixes
       o   Fixed inconsistency between container element methods and their
           convenience accessors in Bric::Biz::Asset::Business. Thanks to
           Philip Fibiger for the spot. [David]

       o   Assets can once again be recalled from the library and put on a
           desk. [David]

       o   The "get_all_keywords()" method of Bric::Biz::Asset::Business works
           again. [David]

VERSION 1.4.2 (2002-09-27)
   Bug Fixes
       o   Can once again check out multiple assets at once. Thanks to Andrew
           Baio for the spot. [David]

       o   Templates once again behave themselves. There were some
           circumstances where they couldn't be checked in, generating "Cannot
           checkin non checked out versions" errors. These have been fixed.
           [David]

       o   Some assets on My Workspace were getting "Cannot checkin non
           checked out versions" errors when they were checked in using the
           "Check in to" select list. This has been fixed. [David]

       o   When templates are deployed, they now get a "Template removed from
           Workflow" event logged. [David]

       o   Using the "Check in to" select list on My Workspace to check assets
           into the desk they're already on will no longer remove them from
           all desks altogether. [David]

VERSION 1.4.1 (2002-09-25)
   Bug Fixes
       o   Upgrading from from a version prior to 1.3.3 no longer tries to
           create an index that already exists (and that will be dropped,
           anyway). [David]

       o   Removed documentation for installing mod_proxy with Apache. [David]

       o   Improved documentation for upgrading from older versions of
           Bricolage that were not installed by "make install". Thanks to
           Andrew Baio for helping to identify the problems. [David]

       o   Added "use Bric::Util::Grp::Keyword;" back into Bric::Biz::Keyword.
           This prevents some upgraded Bricolage installations from breaking.
           [David]

       o   Added Net::FTPServer and Net::SFTP to the list of optional modules.
           [David]

       o   Fixed some SQL errors uncovered by the release of PostgreSQL 7.3b1.
           [David]

       o   Added code and documentation for compatibility with PostgreSQL 7.3.
           [David]

       o   Media assets can now be distributed to more than one output channel
           at a time. [David]

       o   Files are now distributed on a per-output channel basis, to ensure
           that the proper file is distributed to the proper destinations.
           [David]

       o   Assets are now properly removed from workflow when they're
           deactivated (deleted in the UI). [David]

       o   Template syntax is now properly checked when using the
           "Checkin/Deploy" button. [Joa~o Pedro]

       o   The example generic template (autohandler) included in the database
           is now included in the burn root, too, since it's marked as
           "Deployed" in the database. [David]

       o   Deleted output channels no longer show up in the "New Template"
           output channel select list. Thanks to Daniel Fisher for the spot.
           [David]

       o   The root category ("/") no longer returns itself as its own parent.
           [David]

       o   Assets not in workflow are now properly logged as being checked out
           when someone checks them out. [David]

       o   The "Or Pick a Type" menus in the Group manager, the Contributor
           manager, and the Element manager all work again. [David]

       o   Changing category names now updates the name of the category asset
           group object, which appears in the user group permissions page.
           [David]

       o   Hitting the "enter" key after filling in a search field now
           properly submits the search as if the "Search" button had been
           clicked. [David]

       o   Changed libapreq requirement in Bric::Admin to read
           "Apache::Request 1.0". This should make the installer install the
           most recent version of libapreq, instead of relying on whatever the
           OS provides. [David]

       o   Changed value of autopopulated media asset data fields to an empty
           string when the value returned by the autopopulation method is
           "undef". [David]

       o   Fixed bug where autopopulated media asset data fields weren't
           properly autopopulated. [David]

       o   Fixed problem with category upgrade script failing on category data
           created with 1.3.2. [Sam]

       o   During installation, entering a directory name when prompted for
           the "PID File Location" now results in Bricolage using a file
           called "httpd.pid" in that directory, rather than trying (and
           failing) to use the directory itself as the PID file. [David]

       o   The side navigation layer is now better aware of its context, and
           changes the colors of some of its graphics depending on the
           context. Also recreated the "WORKFLOW" tab graphics. It looks like
           this has been broken for over a year, and I only just noticed it!
           [David]

       o   Slightly improved handling of assets that have forgotten where they
           are. [David]

       o   Checked-out templates are now displayed only once (instead of
           twice) in the "Find Templates" manager. [David]

       o   Added "get_new_objs()" method to Bric::Util::Coll so that
           Bric::Util::Grp's "has_member()" method can see a member even if it
           hasn't been saved to the database. Also changed Bric::Util::Grp to
           check for members in this way, of course. [David]

       o   Assets retrieved from the library now appear on the desk they're
           checked out into only once (instead of twice). This thanks to the
           above-noted changes to Bric::Util::Grp. [David]

       o   Added upgrade script inst/upgrade/1.4.1/clean_desks.pl to clean up
           existing duplicate listings of assets on desks. [David]

       o   Removed the "checkin()" method from Bric::Biz::Asset::Template and
           Bric::Biz::Asset::Business and put it into Bric::Biz::Asset,
           instead, since it's exactly the same for all assets. [David]

       o   Fixed the display of permissions settings to be more consistent
           with the design and layout of the rest of the application. Also
           neatened listManager display a bit. [David]

       o   Fixed misnamed database constraint. [David]

       o   Templates can once again be retrieved from the library and checked
           out for revising. [David]

       o   Assets on a desk now no longer have the current desk listed in the
           "Move to" select list. Even if they did, selecting the current desk
           would no longer remove an asset from workflow! Thanks to Andrew
           Baio for the spot. [David]

       o   The installer is now much more intelligent about prompting for SSL
           information. It won't ask if you want to use SSL if it can't find
           mod_ssl or apache_ssl, and will only prompt you to pick one or the
           other if it can find both. [David]

VERSION 1.4.0 (2002-09-02)
   New Features
       o   Fetching objects from Bric::Biz::Asset::Business::Media has been
           optimized for greater speed. [Joa~o Pedro]

       o   PostgreSQL "NOTICE" messages are now suppressed during
           installation. Instead, a series of dots will be displayed to
           indicate progress loading the database. [David]

       o   Added README.MacOSX. [David]

       o   You can now pass a date format string argument to the "get_data()"
           method of container elements in templates (and elsewhere, for that
           matter). This is useful if the data you're retrieving is of the
           "date" type, and you don't want the date to be formatted in the
           format specified in the "Date Format" preference. [David]

   Bug Fixes
       o   The Element Type manager now displays properly again without
           errors. [David]

       o   Assets are now properly removed from desks when they are published
           or moved from one desk to another. More generally, any time a
           single object is removed from a group, it will be properly removed.
           [David]

       o   Media profile now display the proper category in the Category
           select list. [David]

       o   Media assets with no associated media file now generate a message
           indicating that no file will be distributed, and are properly
           removed from workflow when published. [David]

       o   Some media asset events weren't getting logged properly Now they
           are. [David]

       o   Database transactions are now properly maintained when publishing
           assets. Everything was working, but DBI "AutoCommit" was getting
           turned on, and this likely slowed some things down a bit. [David]

       o   Assets can once again be found via the "Find" pages and recalled
           into a workflow without error. [David]

       o   Module man pages are now properly installed under Perl 5.8.0.
           Thanks to Michael Schwern for helping to diagnose the problem and
           come up with a solution. [David]

       o   The select list of desks to transfer an asset to on My Workspace
           now includes all possible desks, including the one for which there
           is a link. [Joa~o Pedro]

       o   All Bricolage .pod files are now installed and converted to "man"
           pages along with all of the .pm files. [David]

       o   Corrected a bunch of spelling errors in this file. [David]

       o   Calling "get_data()" on a container element in templates (or
           elsewhere, for that matter) now properly ignores container
           subelements. Likewise for "get_container()", which how properly
           ignores data subelements. [David]

       o   All of the .pl and .tst files in lib/ no longer clutter up the
           distribution created by "make dist". [David]

       o   Much of the POD documentation in the API classes has been cleaned
           up, and converting them to man pages no longer generates any error
           messages. [David]

       o   The install process will now find Apache modules in
           /usr/lib/apache/modules, which is where they are in OpenBSD. Thanks
           to Mark Johnson for his help tracking this one down.  [Sam]

       o   The install process will no longer install an incompatible version
           of HTML::Mason (>1.09). [Sam]

       o   The bric_dist_mon program works again. [David]

VERSION 1.3.3 (2002-08-24)
   New Features
       o   Revised Bric::Biz::Keyword implementation to improve performance.
           The new implementation no longer relies on the Bric::Util::Grp
           system. Also implemented API and database support for Media
           keywords. [Sam]

       o   Added support for search Media by category and file name through
           the SOAP interface and standard API. [Sam]

       o   Added new "--save-cookie-file" and "--use-cookie-file" options to
           bric_soap to allow authentication to span bric_soap calls. This can
           result in significant time savings across multiple invocations.
           [Matt]

       o   Added new "--chunks" option to the bric_soap tool to avoid problems
           with timeouts on large workloads. Currently only supports the
           workflow commands ("publish", "deploy", "checkin", "checkout",
           "move"), but it will be expanded to other long-running commands in
           the future. [Sam]

       o   Improved performance of search paging. ListManager now only builds
           the output rows that will actually be shown on the screen. For
           large data sets this results in a huge gain in search speed. [Adam
           and Sam]

       o   Revised category implementation to use explicit "uri" and
           "parent_id" fields rather than relying on the Bric::Util::Grp
           system. This improves performance tremendously for larger numbers
           of categories. [Jeff Pinyan]

       o   Added new "--continue-on-errors" option to bric_soap to prevent
           non-fatal errors from ending the process. [Sam]

       o   Beautified the list paging interface. [David]

       o   Added new Media Type manager. [Scott]

       o   Added list reverse feature. [Scott]

       o   Added SFTP mover. [Scott]

       o   Add support for Apache-SSL. This required a change to the context
           of the bricolage.conf "ENABLE_SSL" directive to indicate the type
           of SSL support: none, apache_ssl, or mod_ssl. [Michael Robinton]

       o   Added support for manual httpd configuration. Split out dynamic
           configuration from ApacheConfig.pm and move to a new module,
           ApacheStartup.pm, that sets no Apache configuration directives.
           ApacheConfig.pm calls this module. [Michael Robinton]

       o   Added bricolage.conf configuration directive to force the start up
           process to always write out a $TEMP_DIR/bricolage/bric_httpd.conf
           as an httpd.conf include file. [Michael Robinton]

       o   Moved SSL key and certificate configuration from global httpd.conf
           settings to per virtual host via bricolage.conf configuration
           directives. [Michael Robinton]

       o   Added a "bricolage.conf" directive to force the user to always use
           SSL.  [Michael Robinton]

       o   Added "get_data()" method to
           Bric::Util::Grp::Parts::Member::Contrib. This method takes a
           simpler scalar argument and returns the relevant attribute.  This
           bit of syntactic sugar makes contributor objects behave a bit more
           like $element objects in templates, thus simplifying things for
           template developers. [David]

       o   Categories now default to sorting by URI, and the URI is the
           searchable field, rather than name. [David]

       o   Vastly improved the speed at which categories can be imported via
           SOAP.  [David]

       o   Makefile now confirms location of Apache and PostgreSQL to allow
           for systems with multiple versions of each available. [Sam]

       o   Added "make clone" command to the installation system to create
           distributions based on existing Bricolage systems.  [Sam]

       o   Added bricolage.conf directive to enable/disable the browser
           toolbar for debugging and development. Documented in Bric::Hacker.
           [Michael Robinton]

       o   Added support for running Bricolage with SSL support on arbitrary
           ports.  Previous versions required https support to use only port
           80 for http and port 443 for https. With this release, Bricolage
           fully supports http and https service on any ports. This allows the
           Apache daemon supporting Bricolage to be run with a minimum number
           of children while still allowing normal http and https service on
           the standard ports with a light-weight Apache daemon. See the
           INSTALL file (or Bric::Admin) for full details and an example
           installation procedure. [Michael Robinton]

       o   Added new bric_apachectl command "single". This command will start
           Bricolage in single-process mode. This mode is principally useful
           for debugging. [Michael Robinton]

       o   The size of the database column that stores custom field options
           (such as for select lists) has been changed to the TEXT PostgreSQL
           type, so that the number of options isn't arbitrarily limited.
           [Matt Vella]

       o   The group API has been approximately 75% rewritten. The goal was to
           optimize its performance, since group activity proved to be a
           serious bottleneck to Bricolage performance. Those interested in
           the nitty-gritty details of the rewrite can read about them here:
           <http://sourceforge.net/mailarchive/forum.php?thread_id=967943&forum_id=561>.

   Bug Fixes
       o   Added constraint to the group table to keep a group from having
           itself as a parent. Thanks to Joa~o Pedro Goncalves for the patch.
           [David]

       o   Fixed bug in side navigation where an HTML table was opened but not
           closed.  [Charles Albrecht]

       o   Fixed bug where installation system would chown all of the chosen
           TEMP_DIR to SYS_USER. Thanks to Dave Rolsky for the report. [Sam]

       o   Fixed a bug in the installation system that was creating empty
           comp/comp and data/data directories BRICOLAGE_ROOT. Thanks to
           Michael for the spot. [Sam]

       o   Fixed remote previews to redirect to a better URL. [Mark]

       o   Fixed a bug where trying to create a story through the SOAP
           interface containing a contributor with an empty middle name would
           fail.  [Sam]

       o   Changed strftime instances of '%G' to '%Y' in URI preference, as
           this seems to be more portable. [David]

       o   Fixed bug that was preventing 'make upgrade' from running database
           upgrade scripts. [Sam]

       o   Fixed broken "Log" link on Media Search results screen. [Sam]

       o   Fixed bug where deleted output channels were showing up in list of
           available output channels in the element profile. [David]

       o   Fixed conflict in list manager that prevented some lists from
           working properly. Probably never showed up before, as we only
           noticed it with the new Media Type manager. Thanks to Scott for the
           heads-up. [David]

       o   The "PREVIEW_MASON" configuration directive no longer is no longer
           defaulting to on in one context and off in another. It is now off
           by default. Thanks to Michael Slattery for the spot! [David]

       o   Eliminated the password field type from the formBuilder interface
           used for contributor types and elements. Its inclusion up to now
           may be considered a bug. [David]

       o   Fixed cover date editing to repopulate correctly on the Story
           profile screens.  [Matt]

       o   Fixed bug where previewing a story assigned to multiple categories
           would preview to a random category. Now the primary category is
           always chosen. [Sam]

       o   Fixed display and editing of dates more than one year in the past.
           [Matt]

       o   Fixed bug where setting CHAR_SET to UTF-8 in bricolage.conf would
           result in blank output. [Sam]

       o   Changed Category manager to display no categories by default, only
           display them after a search. This is because some folks have a lot
           of categories.  [David]

       o   Fixed bug where when "SYS_USER" and/or "SYS_GROUP" wasn't in
           bricolage.conf, Bric::Config would use the username "nobody"
           instead of the UID for the user "nobody". [David]

       o   Adding a note to a story that has not yet been saved no longer
           causes an error. [David]

       o   Fixed "make dist" to work on Mac OS/X and FreeBSD. [Sam]

       o   Fixed a problem in Bric::Util::Burner::Template where a newly added
           template wouldn't be picked up by <tmpl_include>.  This was due to
           caching being turned on.  HTML::Template's cache doesn't know that
           a new compilation would turn up a difference <tmpl_include> so it
           continues to use the old one.  [Sam]

       o   Fixed installer to not require unneeded Apache modules (mod_proxy
           and mod_rewrite). [Sam]

       o   Fixed installer to first ask whether SSL support is desired before
           asking for a specific SSL module. [Sam]

       o   Fixed documentation bug in Bric::Admin concerning PostgreSQL paths.
           Thanks to Vicki Brown for the catch. [Sam]

       o   Fixed installation system to fail if there are errors importing the
           database.  Also added test for missing or empty bricolage.sql.
           [Sam]

       o   Fixed installation system to support optional modules and not force
           users to install them. [Sam]

       o   Fixed bug that prevented the contents of fields to be updated
           through Bric::SOAP. [Sam]

       o   Fixed "Checkin and Publish" button to only appear if the user has
           permissions to publish. [Matt]

       o   Fixed bug where text pasted into Bulk Edit textarea box was getting
           words smooshed together. Thanks to Rachel Murray for the spot.
           [David]

       o   Fixed bug where date field elements weren't getting properly
           converted between the local time zone and UTC, which is the time
           zone of all the dates in the database. Thanks to Matt Vella for the
           spot. [David]

       o   Fixed issue where Bric::Util::Grp was adding every member of a
           group whenever a new member was added. This was very wasteful, and
           slowed performance a great deal for groups with thousands of
           members. Thanks to Mark for the spot.  [David]

       o   Added check for Category "Directory" string to make sure that no
           non-URL characters are added. [Matt Vella]

       o   Clicking "Cancel" when editing keywords in a new story now properly
           returns to the story profile, rather than to the last screen before
           the story was created. [David]

       o   Deleting a a contributor immediately after adding one no longer
           causes all of the contributors to be deleted on check-in. [David]

       o   Contributors are now properly reverted when stories and media are
           reverted. [David]

VERSION 1.3.2 (2002-06-09)
   New Features
       o   Added --chunks option to bric_republish to publish stories in
           batches.  This is useful to avoid timing out on long runs. [Sam]

       o   Added [Check In / Publish] button to Story Profile to checkin and
           publish in one step. [Matt]

       o   Added needs_publish() method and associated published_version
           database field to Bric::Biz::Asset.  This method is now used by the
           publisher to determine if something needs republishing.  Added new
           graphics to display this information on the desks.  [Matt]

       o   Moved repeated publish and preview functionality into
           Bric::Util::Burner.  Updated Mason code and Bric::SOAP::Workflow
           accordingly.  [Matt]

       o   Added "DBI_PROFILE" bricolage.conf option and "bric_dbprof" script
           to allow profiling of Bricolage database performance.  [Sam]

       o   Added "bric_apachectl debug" command to run Bricolage under the
           Perl debugger using Apache::DB.  [Sam]

       o   Added checks to make sure Story and Media URIs are unique within
           the system.  [Matt]

       o   Added search paging preference to break search results into
           multiple pages.  [Adam]

       o   Added support for running Bricolage under Devel::Profiler with the
           new PROFILE configuration option.  [Sam]

       o   Added support for Apache::SizeLimit to keep Apache process size
           under control.  [Adam]

       o   Revised Bric::App::Cache to improve performance.  The new system is
           a two-level cache with Cache:Mmap and Cache::Cache.  This results
           in a 2x speedup on some cache-sensitive operations.  [Sam]

   Bug Fixes
       o   Clicking "Add More" when editing contributor contacts now retains
           any changes made to the contributor profile. This matches the
           functionality of the user profile. Thanks to Joa~o Pedro Goncalves
           for the spot. [David]

       o   Fixed bug in Bric::SOAP::Element where deleting an element or field
           could cause SQL errors due to overflowing the name field. [Sam]

       o   Removed Bric::SOAP::Element->delete(force => 1) which could cause
           data corruption in existing stories.  Also removed dependent
           options in bric_dev_sync (--delete-existing) and bric_soap
           (--force). [Sam]

       o   Fixed bug in Bric::SOAP::Element where updating an element could
           cause Stories using that element to lose track of their field data.
           [Sam]

       o   Fixed bug in Bric::Util::Burner::Template where <tmpl_include>s
           caused syntax errors. [Sam]

       o   The Bric::Biz::Category class method get_attr() now returns
           attributes for category ID 0 as well as all other categories.
           [Joa~o Pedro Goncalves]

       o   Fixed bug in DBI_DEBUG and DBI_CALL_TRACE options where non-
           prepared queries (row_aref(), all_aref(), etc.) were not being
           logged. [Sam]

       o   Fixed bug in Bric::Dist::Resource that was causing publish to run
           very slowly by executing a bad database query. [Sam]

       o   Related to the last item, fixed a bug in Bric::Util::Coll that
           would call the href() method on a class and pass in undefined
           values as parameters.  This will happen if a collection is created
           for a new object that does not yet have an ID. The fix thus
           prevents the "= NULL" SQL syntax, which always matches nothing. The
           new syntax for constructing a collection has been implemented
           across the API. [David]

       o   Fixed bug where the root category wasn't able to be added to a
           category group. Actually, this fixes a problem where any object
           with an id of 0 couldn't be added to a group. Thanks to Mark for
           the spot. [David]

       o   Changed mover list to be sorted in alphabetical order in the
           Destination profile. This has the benefit of forcing "FTP" to be
           listed before "File System" -- Hurray for case-sensitive ordering!
           Thanks to Sam for the complaint. [David]

       o   The OS for a destination server now defaults to the OS of the
           server on which Bricolage is installed instead of "Mac". Thanks to
           Sam for the spot.  [David]

       o   Deleted destinations will now be dissociated from output channels
           when they're deleted. This prevents stories from being published to
           deleted destinations. Thanks to Mark for the heads-up. [David]

       o   Fixed bug where attribute metadata wasn't getting deleted when it
           was supposed to. [Joa~o Pedro Goncalves]

       o   Fixed bug where some browsers submit an image button with a value
           stored in the image button's name as well as in the name with ".x"
           and ".y" appended to it. This caused callbacks to be triggered
           twice for a single field! I noticed this with Mozilla on Mac OS X,
           and presume it would happen elsewhere, too. [David]

       o   Fixed bug in navigation bar HTML that caused the bar to disappear
           on certain browsers. [Rachel Murray]

       o   Fixed bug in Bric::SOAP where Bricolage exceptions resulted in an
           uninformative "Application error" message. Now the full exception
           message is displayed. [Sam]

       o   Fixed installation to work under Debian Linux 3.0 (testing). Thanks
           to Mark Jaroski for a helpful patch. [Sam]

       o   Changed length of Bric::Dist::Job name attribute from 64 characters
           to 256.  This allows long asset names to be used. Also added code
           to Bric::Dist::Job to ensure that the name property is truncated if
           it's longer than 256 characters. Thanks to Josh Cox for the spot.
           [David]

       o   Fixed bug where dumber browsers would submit a new template without
           any Element selected. Thanks to Michael Robinton for reporting the
           bug. [David]

       o   All stories and media are now required to be associated with a
           category. For stories, the primary category cannot be deleted. If
           you want to change the primary category, add a new category, change
           it to the primary, and then delete the old primary category. This
           fix prevents previews and publishes from breaking on stories and
           media that had no categories. Thanks to Mark for the heads-up.
           [David]

       o   An overhaul of the burn system had regressed the Output Channel
           preview functionality. I've put it back now. [Mark]

       o   Fixed button JavaScript to work correctly in Mozilla. [Matt]

       o   Fixed bug in HTML::Template burner that prevented <tmpl_include>s
           from working in some cases.  [Sam]

       o   Numerous spelling errors were fixed by Scott Lanning. Thanks!

       o   In the Element manager, doing a search after selecting an Element
           Type from which to display elements no longer causes an error.
           Thanks to Adam Robinson for the spot. [David]

       o   Made the parent category field in the Category Profile a required
           field.  [Mark]

       o   Fix Bric::Util::FTP::FileHandle to work with a modified date-
           formatting preference. [Matt]

       o   Fixed section numbering in the Contributor Type profile. [Scott
           Lanning]

VERSION 1.3.1 (2002-04-03)
   New Features
       o   Bricolage SOAP interface fully implemented.  The command-line
           clients bric_soap, bric_dev_sync and bric_republish are all
           complete. [Sam]

       o   Bricolage now comes with a configure script and a Makefile for
           easier installation and configuration. [Mark Jaroski]

       o   Removed MD5 Perl module requirement by requiring Apache::Session
           1.54 or higher.  [David]

       o   Added new FTP distribution move method. Now you can distribute
           files either via a file system copy or via FTP. [David]

       o   Added a preference to change the way URIs are formatted. [Adam]

       o   Added a URI case preference to force URIs to lowercase, uppercase,
           or allow mixed case URIs.  [Adam]

       o   Categories are now all listed and sorted by URI in select lists.
           [Sam]

       o   The cache is now cleared when the Apache server is started or
           restarted.  This avoids potential problems with stale data in the
           cache. [Sam]

   Bug Fixes
       o   Fixed numerous cases where user_ids were being used as booleans.
           Since user_id 0 is the Administrator's user_id this can cause
           problems. [Sam]

       o   Fixed problem where deleting an asset would fail with the "cannot
           check-in non checked-out version" error. [Sam]

       o   Fixed bug in HTML::Template burner when an element name had more
           than one space in it. [Sam]

       o   Fixed bug in database that prevented element names over 32
           characters from working properly. [Sam]

       o   Fixed bug where trying to preview a story without a Preview
           destination and PREVIEW_LOCAL off would result in a Mason error.
           [Sam]

       o   Fixed bug in Bric::SOAP::Story->create() where data element order
           was getting lost. Thanks to Mike Slattery for the spot. [Sam]

       o   Fixed bug in HTML::Template burner where templates in non-root
           categories could not be found. Thanks to Marlon Bermas for the
           spot. [Sam]

       o   Fixed Bric::Util::FTP::FileHandle to create new revisions on PUT.
           [Sam]

       o   Deleting a contributor will no longer break stories with which the
           contributor is associated. Thanks to Rachel Murray for the spot.
           [David]

       o   Invalid configuration directives in bricolage.conf will now be
           caught and keep Bricolage from starting. [Sam]

       o   The view button in the element profile now works correctly. Thanks
           to Joa~o Pedro Goncalves for the spot. [David]

       o   Changed all strftime instances of '%G' to '%Y', as this seems to be
           more portable. [David]

       o   Checking in a template from a template profile now performs a
           syntax check of the template just as saving the template does.
           [Joa~o Pedro Goncalves]

       o   Notes attached to stories and media are now once again editable
           from the desk and profile views if they're checked out to the
           current user, and only viewable otherwise. Thanks to Tracey Largay
           for the spot. [David]

       o   Fixed a few poorly-named time zones in the time zone preference.
           More still needs to be done here, actually. [David]

       o   Implemented the chk_syntax() method in
           Bric::Util::Burner::Template.  [Sam]

VERSION 1.3.0 (2002-02-10)
   New Features
       o   Bricolage SOAP interface partially implemented. Bric::SOAP::Story
           and Bric::SOAP::Media are fully implemented and tested. The
           command-line client - bric_soap - is complete. [Sam]

   Bug Fixes
       o   Fixed numerous cases where user_ids were being used as booleans.
           Since user_id 0 is the Administrator's user_id this can cause
           problems. [Sam]

       o   Fixed problem where deleting an asset would fail with the "cannot
           check-in non checked-out version" error. [Sam]

       o   Fixed bug in HTML::Template burner when an element name had more
           than one space in it. [Sam]

       o   Fixed bug in database that prevented element names over 32
           characters from working properly. [Sam]

       o   All fixes in the soon-to-be-released 1.2.1 version. See below for
           details.

VERSION 1.2.3 (2002-03-17)
       Functionally equivalent to 1.2.2, but includes required files missing
       from the 1.2.2 distribution.

VERSION 1.2.2 (2002-03-15)
   New Features
       o   Added chk_syntax() methods to Bric::Util::Burner and its
           subclasses. This method will takes a template asset object and make
           sure that it compiles.  Bric::Util::Burner::chk_syntax() delegates
           to the proper subclass.

   Bug Fixes
       o   Some misspellings were corrected in Bric::Admin. Thanks to Ask
           Bjoern Hansen for the spot. [David]

       o   Fixed broken "Return" buttons on related media and related story
           pages. [David]

       o   Fixed bug where assets weren't activated when they were created and
           then checked in without clicking the "Save" button. [David]

       o   Fixed bug where a fixed story's slug was getting used in its URI.
           [David]

       o   Fixed broken image autopopulation fields (compression, height,
           width, etc.)  [David]

       o   Fixed broken support for audio and video files. These can be set up
           by the Media Type menu in Element Types. Eventually these should
           arrange for some fields to be auto-populated (e.g., bit rate, frame
           size, length, encoding, etc.). [David]

       o   Fixed bug where Categories with the same directory name could not
           be created.  Thanks to Andrew Baio for the spot. [David]

       o   Fixed a bug where a user couldn't look at her own event log if she
           didn't have permission. Thank to Michael Alan Dorman for the spot.
           [David]

       o   Fixed a bug where permissions set to access workflows and desks had
           no affect on the display of workflows and desks. Thanks to Rachel
           Murray for the spot.  [David]

       o   Fixed bug where attempting to create a destination with the same
           name as an existing but deactivated destination triggered an SQL
           error. Thanks to Michael Alan Dorman for the spot. [David]

       o   Fixed bug where Workflows with spaces in their names would not
           create proper submenus in the left navigation bar. Thanks to the
           WHO for the spot [David]

       o   Fixed bug where the wrong story might be previewed when clicking
           the title of a story in My Workspace or on a desk. [David]

       o   Changing the category a media asset is in now correctly updates the
           underlying category object and the URI without the media asset
           needing to be checked in.  [Matt Vella]

       o   Eliminated "Template compile failed" errors for templates with
           <%init> sections.  [David]

       o   Field elements now show up with their display names in the bulk
           edit select lists, instead of with their names (which are really
           keys). [David]

       o   Eliminated "Use of uninitialized value in bitwise or (|)" warnings
           when checking permissions. Thanks to Sam Tregar for the spot.
           [David]

       o   Custom fields in elements and contributor types now remember their
           "size" setting. Thanks to Sam Tregar for the spot. [David]

       o   The Element select list on the new Template profile no longer lists
           media elements, since media assets don't use templates. [David]

       o   Removed old XML::Writer stuff from Bric::Util::Burner, since I
           moved it to Bric::Util::Burner::Mason a while ago and it was
           causing some problems. Thanks to Michael Robinton for the spot.
           [David]

       o   Fixed typo in Bric::Hacker spotted by Axel Beckert. [Sam]

       o   The CREATE permission works properly now. Thanks to Rachel Murray
           for the spot.  [David]

VERSION 1.2.1 (2002-02-25)
   New Features
       o   Created new method of configuring Bricolage in Apache. For mod_perl
           1.26 and earlier, a custom config file will be written to the
           bricolage temp directory every time Bricolage is started or
           restarted. For mod_perl 1.27 and later, no temp file will be
           written. [David]

       o   Added support for Mozilla (and there was much rejoicing!). [David]

       o   Changed password for the default "admin" user to "change me now!"
           [David]

       o   The slug is stored in the database for both fixed and non-fixed
           stories. This is in anticipation of adding the ability to use the
           slug for fixed story URIs later on. Thanks to Darren Graves for the
           patch.

       o   Added DISABLE_NAV_LAYER directive. It's off by default, but if you
           turn it on in bricolage.conf, the side navigation layer will be
           rendered as plain HTML in every page instead of as a separate
           layer. [David]

       o   Documented PERL_LOADER directive in Bric::AdvTemplates. [David]

   Bug Fixes
       o   Turned off the PREVIEW_MASON configuration directive in
           bricolage.conf. It should be off by default. [David]

       o   Deleted Output Channels now properly don't show up in the Output
           Channel manager again. Thanks to Sara for the spot! [David]

       o   All previews now preview assets in the primary Output Channel only.
           Previously, the previews were in the Output Channel whose name came
           first alphabetically.  Thanks to Sara Wood for catching this bug.
           [David]

       o   Fixed bug where templates often couldn't be found by the Mason
           burner if the output channel had a post_path. [David]

       o   Fixed bug where templates often couldn't be found by the
           HTML::Template burner if the output channel had a post_path. [Sam]

       o   Fixed some problems with the sideNav menus under Netscape. [David]

       o   Fixed broken "Preview" button in Read-only story profile and in
           related story elements. [Matt Vella]

       o   Updated debugging code to accommodate new syntax in Cache::Cache.
           Thanks to Sam Tregar for the spot. [David]

       o   Fixed problem with Element names containing non-alphanumeric
           characters. [Sam]

       o   Checking out media assets from "Find Media" now redirects you to
           the media profile if you've checked out one media asset, or My
           Workspace if you've checked out more than one. This puts it in line
           with how "Find Stories" and "Find Templates" work. Thanks to Sam
           for the report. [David]

       o   Fixed bulk edit functionality for Media assets. Thanks to Sam for
           the spot.  [David]

       o   In Bric::Biz::Asset::Business, the source get_meth key in
           my_meths() now works properly. Also, get_all_keywords() now also
           returns the category keywords as well as the story keywords. Thanks
           to Darren Graves for the patch.

       o   Removed quotation marks from DEF_MEDIA_TYPE setting in
           bricolage.conf.  Thanks to Darren Graves for the spot. [David]

       o   Sorting assets by ID in "Find X" and Workspace/Desk view now
           properly does a numeric sort rather than an alphanumeric sort.
           Thanks to Sam Tregar for the spot. [David]

       o   Fixed an obscure bug where, for files uploaded as part of a Media
           file, Bricolage attempted to create a path on its own file system
           using path delimiters for another file system. Thanks to Mike
           Slattery for the spot.  [David]

       o   Required content fields in stories and elements are now displayed
           in the order specified in the Element profile. Thanks to Sam Tregar
           for the spot. [David]

       o   All assets now start with the version number 0 until the first time
           they are checked in. Also, they will show up on desks and in the
           Find views after the first time they are saved. It was inconsistent
           before, and some items could not be seen in the desk and Find views
           until they were checked in. Thanks to Sam for spotting the
           inconsistency. [David]

       o   The bric_clean_tmp script has been changed to avoid deleting the
           Bricolage cache file.  [Sam]

       o   Fixed typo that broke Bric::Dist::Client. [Mike Slattery]

       o   Fixed multiple select custom fields for Elements and Contributors.
           Thanks to Mike Slattery for the spot. [David]

       o   Fixed ugly bug where deleting a "Media Type" Element would delete
           all the media objects of that type. Thanks to Sam for the spot
           (though not for the bug!).  [David]

       o   Fixed bric_pgimport so that it uses DBI to drop and create the
           database, rather than relying on a hard-coded location for pgsql
           binaries. [David]

       o   Fixed permission granting in bric_pgimport so that the Bricolage
           database use has DELETE permissions on all objects in the Bricolage
           database. It looks like this permission was ignored in PostgreSQL
           7.1 and earlier, or problems would have shown up a long time ago!
           [David]

       o   Fixed a bug where the time a distribution job is scheduled was not
           properly converted to UTC for storage in the database. Thanks to
           Mike Slattery for the great code archaeology! [David]

       o   Fixed the spelling of "contributor" in several spots. [Andrew Baio]

       o   Fixed bug where changing a story's primary category left it with no
           primary category. [Matt Vella]

VERSION 1.2.0 (2002-01-10)
   New Features
       o   Added Context-sensitive, online help. [Sam]

       o   Added separate interface for editing templates (via FTP). [Sam]

       o   Added the ability to use HTML::Template Templates. [Sam]

       o   Added ability for different Output Channels to function as
           different component roots for in Mason templates. This will allow
           for templates that can't be found in the current Output Channel to
           be searched for in other Output Channels.  [David]

       o   Added link to Event log to Find Story, Find Template, and Find
           Media screens.  [David]

       o   Added true previewing for media assets. Now, when you click their
           URIs to preview them, they will be distributed to the preview
           server(s) before redirecting the user to them, rather than just
           serving them up from where they live on the Bricolage file system.
           The latter can still be accessed under "Download" in the Media
           Asset profile. This will continue to be the preferred way to grab
           media files for editing and such, as it will not incur the overhead
           of distributing the media file. [David]

       o   Allow only one template with a given name for a given category,
           element, burner and output channel. [Sam]

       o   Added a Maintainer section to the About page. [David]

       o   Updated About page to mimic the layout of the help pages. [David]

   Bug Fixes
       o   Fixed a bug with local previews where a preview page could show up
           instead of the Bricolage UI. Thanks to Sara for the spot. [David]

       o   Fixed a bug where Mason component calls failed in previews when the
           PREVIEW_MASON directive was enabled. [David]

       o   Changed default value for text area fields added via the form
           builder (i.e., in Contributor Type and Element profiles) to 0. The
           values 0 and "" always make the the new field unlimited in length.
           [David]

       o   Fixed a couple of buttons to be proper case rather than upper case.
           [David]

       o   Separated the filesystem destinations for assets burned for
           publication and for assets burned for previewing. This will prevent
           someone previewing and stomping all over a published version of an
           asset before the published version is distributed. [David]

       o   Removed hard-coding of the local preview directory in httpd.conf
           and httpd-ssl.conf. Now using the values stored in PREVIEW_LOCAL,
           instead, to determine the proper directory. [David]

       o   Added the DEF_MEDIA_TYPE directive. Bricolage will use the value in
           this directive to assign a Media Type to all file resources if
           Bricolage can't figure it out from their file extensions. This
           fixes a bug where Bricolage would choke if it couldn't figure out
           the MediaType itself. [David]

VERSION 1.0.2 (2001-12-10)
   New Features
       o   Added "File Name" and "File Extension" properties to
           OutputChannels. These properties will now be used to name files
           burned to the file system on preview and publish. [David]

       o   Added DEFAULT_FILENAME and DEFAULT_FILE_EXT configuration
           directives to set default values on the "File Name" and "File
           Extension" Output Channel properties. [David]

       o   Changed Bric::Util::Burner->display_element() so that it doesn't
           paginate. All paginated pages are now treated instead as regular
           elements. This is useful for things like printer-friendly pages.
           Bric::Util::Burner->display_element() continues to work as before.
           Use this method to output a separate file for each paginated
           element. [David]

       o   When errors occur while previewing stories, the leftNav is now
           turned off.  [David]

       o   Browser buttons and menus are now disabled. [David]

       o   Added ability to set permissions on assets based on the categories
           they're in.  [David]

       o   Moved all session and session locking files into the "bricolage"
           subdirectory of the local file system's tmp directory. You'll want
           to rm -rf /tmp/bricolage_* upon upgrading. [David]

       o   Moved the location of cache files to the "bricolage/cache"
           subdirectory of the local file system's tmp directory. You'll want
           to rm -rf /tmp/FileCache upon upgrading. Together with the above
           change, this means that all Bricolage temporary files are stored in
           the "bricolage" subdirectory of the local tmp, e.g.,
           /tmp/bricolage. [David]

       o   Added new program, bric_clean_tmp, that can be used in a cron job
           to delete stale temporary files. [Sam]

       o   Added an "About" page, linked from the logo graphic, that explains
           the name "Bricolage" and offers the license and credits. [David]

       o   Added PERL_LOADER configuration directive. Pass a line of Perl to
           this directive, and on startup, it'll execute it in the same
           namespace as your templates execute in. [David]

       o   Added INCLUDE_XML_WRITER and XML_WRITER_ARGS configuration
           parameters. If INCLUDE_XML_WRITER is turned on, then all templates
           will include a new global, $writer, that is an XML::Writer object.
           This object is provided as a convenience for creating XML in your
           templates. XML_WRITER_ARGS allows certain arguments to be passed to
           the XML::Writer. [David]

       o   Fixed bug where data fields deleted from Elements were deleting
           them from existing stories, too. [David]

       o   Fixed bug where stories with related media associated with them
           were displaying the story as an Element rather than as a story
           after editing the related media.  [David]

       o   Removed all file system location dependencies for the operation of
           Bricolage.  Bricolage will still assume that everything's in
           /usr/local/bricolage, but any location is fine as long as the
           BRICOLAGE_ROOT environment variable is set to the proper location.
           [David]

       o   Added code to force all preview pages to be re-requested from the
           server every time they're viewed. This prevents the browser from
           loading older versions from its cache, and allows users to always
           see the most recently-burned output of a story. [David]

       o   Removed debugging information from URLs for when debugging is
           turned off -- which should be always in production code (e.g.,
           releases). [David]

       o   Elements are now displayed with their display names rather than
           their attribute names. Thanks to Sam Tregar for the spot. [David]

       o   Fixed bug where fields (attributes) added to an Element with the
           name of an existing but deactivated field triggered an error.
           Thanks to Sam for the heads-up. [David]

       o   Fixed a bug where data fields sometimes were not properly retrieved
           from the database in Bric::Biz::AssetType. [David]

       o   Fixed a bug where clicking "Save and Stay" in the Element profile
           wouldn't delete attributes (fields) marked as such, or even delete
           the Element itself, if the "Delete this profile" checkbox was
           checked.

       o   Fixed a bug where, for Story and Media assets, editors were given
           Edit access to notes, even when they didn't have the asset checked
           out. [David]

       o   Changed the misleading and inaccurate "Two blank lines" label in
           the Bulk Edit interface to the more accurate "One blank line".
           Thanks to Sam Tregar for the heads-up.

VERSION 1.0.1 (2001-09-28)
       o   Initial public release.

AUTHOR
       David Wheeler <david@justatheory.com>

SEE ALSO
       Bric



perl v5.12.2                      2007-08-09                 Bric::Changes(3p)
