man Bric::Changes () - Bricolage Changes

NAME

Bric::Changes - Bricolage Changes

VERSION

$LastChangedRevision$

DATE

$LastChangedDate: 2005-10-27 11:24:44 -0700 (Thu, 27 Oct 2005) $

DESCRIPTION

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

VERSION 1.8.8 (2005-10-27)

Bug Fixes

•
Fixed thumbnail URIs broken in 1.8.7. [David]
•
Fixed the media expire event. [David]
•
Media documents with more than one file version are no longer expired as soon as they're published. Reported by Wayne Slavin. [David]
•
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

•
The installer now prefers typical installation paths over those in the CW$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]
•
Added a partial index on the CWcomp_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]
•
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]
•
If a story passed to the CWburn_another() or CWpreview_another() burner methods is the same as the story currently being burned, it will no longer be published or previewed again by CWburn_another() or CWpreview_another(), thus mitigating the possibility of infinite loops. [David]
•
Added an Expired event for when stories and media are expired. Suggested by Joshua Edelstein. [David]

Bug Fixes

•
The Template Toolkit and HTML::Template burners work again. [David]
•
Fixed syntax error in Bric::Util::Trans::SFTP. Reported by Kenneth Marshall. [David]
•
Eliminated Subroutine Bric::App::Handler::rethrow_exception redefined warning during startup with HTML::Mason 1.30. [David]
•
Fixed the CWno_site_id parameter to Bric::Biz::Asset::Formatting when specified using the CWANY() function. [David]
•
Fixed an error in comp/widgets/wrappers/sharky/header.mc caused by having a custom field beginning with a leading underscore. [Scott]
•
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]
•
The SOAP interface for categories now properly checks for and sets as appropriate the CWactive attribute on categories being created or updated. Reported by Phillip Smith. [David]
•
Updated for compatibility with PostgreSQL 8.1. [David]
•
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]
•
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]
•
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]
•
New elements and fields will now have any leading or trailing white space trimmed, rather than converted to underscores. Reported by Scott Lanning. [David]
•
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]
•
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

•
Added JavaScript code to validate that the username in the user profile does not have leading or trailing spaces. [David]
•
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]
•
Added support for starting bric_queued in the Linux startup script in contrib/start_scripts/. [David]
•
The CWget_related_story() and get_related_media() methods of the element class now return CWundef in a list context when there is no related asset. [David]
•
Events in the event log are now returned (and displayed) in reverse chronological order. [David]
•
The SOAP server now uses a user's template sandbox when executing previews (such as with CWbric_soap --to-preview workflow publish). Reported by Marshall. [David]
•
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]
•
Bric::Biz::Workflow now caches calls to CWallowed_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]
•
When the CWPUBLISH_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]
•
Added the CWsecret parameter to the CWlist(), CWlist_ids(), and CWhref() methods of Bric::Util::Grp. [David]
•
The CWset_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]
•
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]
•
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]
•
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]
•
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]
•
Changed the CWpublished_version parameter to the CWlist() method of Bric::Biz::Asset::Formatting (the template class) to CWdeployed_version, but kept CWpublished_version as an alias.
•
Optimized CWpath and CWparent searches in the Category CWlist_ids SOAP method. [David]

Bug Fixes

•
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]
•
Form validation and group management now properly work in the user profile. [David]
•
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]
•
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]
•
Stories now properly set the letter case of file names in URIs when CWSTORY_URI_WITH_FILENAME is enabled. Reported by Jose' Castro. [David]
•
The bricolage.conf CWPERL_LOADER directive now works properly with bric_queued. [David]
•
The SFTP mover now works with CWbric_queued. [David]
•
Fixed misspelled database index name. Spotted by Scott. [David]
•
Error messages are now properly localized in CWbric_queued. [David]
•
Stories updated via SOAP to change categories will no longer leave the old categories associated with the story. [David]
•
Media uploads no longer sometimes fail with an SQL error. [Rod Taylor]
•
All Types now properly shows up at the top of the Types select list in the Advanced Search. [Marshall]
•
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]
•
Removed possible circular processing of story and media documents when creating new story or media documents via SOAP. [David]
•
Previewing and publishing multipage stories created through bric_soap now properly burn all of the pages. [Scott]
•
Cloned stories now properly set the CWpublished_version attribute to CWundef 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]
•
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]
•
Fixed two bugs with CWbric_template_diff. CWFile::Spec::Functions now properly exports CWcatfile() and CW--from--site and CW--to-site now properly search on the site rather than the output channel. [Ovid]
•
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]
•
The CWalias_id parameter to the CWlist() method of the story and media classes has been documented. [David]
•
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]
•
All calls to CWlookup() 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]
•
Contributor groups created in the contributor profile are no longer missing from the contributor manager search interface. Reported by Rachel Murray and Scott. [David]
•
CWANY() now works properly for the CWoutput_channel_id parameter to the list() method of the story and media classes. Reported by Serge Sozonoff. [David]
•
The favicon.ico works again. [David]
•
Stories are now properly expired when the CWBRIC_QUEUED bricolage.conf directive is enabled. Reported by Scott. [David]
•
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]
•
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]
•
Super Bulk Edit now works for media as well as stories. Reported by Scott. [David]
•
The description attribute of stories, media, and templates is now properly limited to 1024 characters in the UI. Reported by Scott. [David]
•
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.
•
Eliminated a compile-time warnings from contrib/bric_media_upload/bric_media_upload. [David]

VERSION 1.8.5 (2005-03-18)

Improvements

•
Added the CWchecked_in parameter to the CWlookup(), CWlist(), and CWlist_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 CWchecked_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

•
Previews on non-checked out stories and media work again. [David]
•
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

•
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]
•
Added Linux startup script contrib/start_scripts/linux. [David]
•
Added CWversion_id parameter to the CWlist() methods of the story, media, and template classes. Oversight reported by Kang-min Liu. [David]
•
Distribution via SFTP is now atomic and respects the CWFTP_UNLINK_BEFORE_MOVE directive. Spotted by Patrick Michael Kane. [David]
•
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]
•
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]
•
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]
•
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]
•
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]
•
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]
•
Updated mail list information in Bric::Hacker. Reported by Marshall Roch. [David]
•
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]
•
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]
•
The list of elements to select from when creating a new template is now in alphabetical order. [David]
•
The XML representation of media documents used by the SOAP server now supports the media type of the file. [David]
•
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]
•
When the installer prompts for database passwords, it no longer echoes them to the terminal. Suggested by Marshall. [David]

Bug Fixes

•
Versions of Perl that disallow the use of the CW-I argument in a setuid environment will no longer cause the upgrade to fail. Reported by Serge Sozonoff. [David]
•
The new support for a false value to the CWchecked_out parameter to the CWlist() methods of the story, media, and template classes is now properly supported by the SOAP CWlist_ids method, as well. [David]
•
Calls to publish documents via SOAP will no longer fail if the CWpublished_version attribute is not specified and the document to be published has never been published before. [David]
•
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]
•
Fixed a bug where nothing would ever publish if you had CWPUBLISH_RELATED_ASSETS enabled in bricolage.conf. [Mark]
•
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]
•
Fix in the SOAP server code to adjust for changes in Exception::Class 1.20. [David]
•
Stories and Media created or updated via the SOAP interface will now associate contributors of the appropriate type, instead of All Contributors. [Scott & David]
•
Deleting an element that has a template no longer causes an error. Thanks to Susan for the spot! [David]
•
Eliminated encoding errors when using the SOAP interface to output stories, media, or templates with wide characters. Reported by Scott Lanning. [David]
•
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]
•
Reverting (stories, media, templates) no longer gives an error. Reported by Simon Wilcox, Rachel Murray, and others. [David]
•
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 CWpublished_version to CWlist() to CW$burner->publish_another in a template. [David]
•
The SOAP server story and media interfaces now support elements that contain both related stories and media, rather than one or the other. [David]
•
Attempting to preview a story or media document currently checked out to another user no longer causes an error. Reported by Paul Orrock. [David]
•
Desk asset buttons are no longer broken in non-English localizations. Thanks to Scott Lanning for the spot! [David]
•
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]
•
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]
•
The CWget_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 CWrequired_satisfied() method in Bric::Biz::Workflow. Thanks to Marshall Roch for the spot! [David]
•
Subclasses of the media class no longer cause errors when distributing files via CWbric_queued. Thanks to Jason Edgecombe for the spot! [David]
•
Elements created via SOAP now correctly have site IDs associated with them. [David]
•
The All alphabetical search now properly escapes the % wild card character. Thanks to Frank Holtz for the spot! [David]
•
The CWbric_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 CWbric_queued. [Mark and David]
•
Jobs now get a Job Created event logged when they are created. Reported by Rachel Murray. [David and Mark]
•
Eliminated Use of uninitialized value in pattern match (m//) warnings when uploading media files. Reported by Scott Lanning. [David]
•
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]
•
The CWhas_keyword() method in the Business class (from which the story and media classes inherit) now works. Thanks to Clare Parkinson for the spot! [David]
•
Templates that abort during calls CWpreview_another() now properly abort when not using CWPREVIEW_LOCAL. [Paul Orrock]
•
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]
•
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]
•
Media type MIME Type names are now properly required in the UI. [David]
•
Fixed typo in the virtual FTP server which was causing an error when saving a template. [Keith Grennan]
•
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]
•
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]
•
Logging now works properly with the virtual FTP server. [Keith Grennan]
•
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]
•
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]
•
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]
•
When creating a new workflow, the workflow profile no longer forgets the selected site when you click the New Desk button. [David]
•
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]
•
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

•
CWmake clone now ignores files in the source directory that start with bricolage-. This should prevent copying previous clones into the new clone. [David]
•
Added contrib/thumbnails/precreate-thumbs.pl script to pre-create thumbnails from images. Useful for upgraders. [Scott]
•
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]
•
Added contrib/bric_import_contribs to import contributors from a tab-delimited file. Development by Kineticode, sponsored by the RAND Corporation. [David]
•
Added the CWpublished_version parameter to the CWlist() 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]
•
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]
•
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]
•
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]
•
Optimized SQL queries for key names or that order by string values to use indexes in the CWlist() and CWlist_ids() methods of the story, media, and template classes. [David]
•
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]
•
Added Russian localization. [Sergey Samoilenko].
•
Changed the foreign keys in the story, media, and formatting (template) tables so that CWDELETEs 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]
•
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]
•
A call to CW$burner->burn_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]
•
Improved context-sensitive help for the New Template profile. [Paul Orrock and David]
•
Make slug actually be required when CWALLOW_SLUGLESS_NONFIXED isn't enabled, in particular on the clone page. Thanks to Dharmender Yadav at Enabling Dimensions for part of the patch. [Scott]
•
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]
•
Added missing constraint to the type column of the workflow table. [David]
•
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

•
The localization libraries load without error again. Added tests to ensure that this doesn't happen again. [David]
•
Publishing stories not in workflow via the SOAP server works again. [David]
•
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]
•
The Burner object's CWencoding attribute is now setable as well as readable. [David]
•
The category browser works again. [David]
•
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]
•
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]
•
A call to CW$element->get_elements in an array context when the element contains no subelements no longer returns an array reference. Reported by Clinton Gormley. [David]
•
Fix bug 839 so that categories can be deleted. [Scott]
•
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]
•
A false value passed to the CWchecked_out parameter of the CWlist() and CWlist_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]
•
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]
•
By forcing the upgrade scripts to execute as the PostgreSQL user, running CWmake upgrade with PostgreSQL ident sameuser security now works properly. [Keith Grennan]
•
The CWLoadModule and CWAddModule httpd.conf directives should now be generated properly during installation. CWLoadModule will use CWconfig_log_module or CWmod_log_config depending on the system, but CWAddModule will always use mod_log_config.c. Spotted by Dave Jablonski. [Marshall]
•
Deleted sites will no longer be displayed in the site context menu in the UI. Reported by Ed Stevenson. [David]
•
Sorting templates based on Asset Type (Element) no longer causes an error. [David]
•
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]
•
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]
•
Fixed typo in clone page that caused all output channels to be listed rather than only those associated with the element itself. [Scott]
•
Fixed double listing of the All group in the group membership double list manager. [Christian Hauser]
•
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]
•
Documented required CWuser__id parameter to the CWnew() method in the story and media classes. Reported by Rod Taylor. [David]
•
Image buttons now correctly execute the CWonsubmit() method for forms that define an CWonsubmit attribute. This means that, among other things, changes to a group profile will persist when you click the Permissions button. [David]
•
Media type groups now properly display their members.
•
The Edit link that showed up for categories associated with a story when the CWENABLE_CATEGORY_BROWSER bricolage.conf directive has been removed. It didn't belong there in the first place. Reported by Ho Yin Au. [David]
•
Simple search now works when it is selected when the Default Search preference is set to Advanced. Reported by Marshall Roch. [David]
•
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]
•
Publishing stories or media via SOAP with the CWpublished_only parameter (CW--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]
•
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]
•
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

•
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]
•
CWmake 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]
•
Bricolage now runs under a DSO CWmod_perl as long as it uses a Perl compiled with CW-Uusemymalloc or CW-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]
•
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]
•
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]
•
Added bric_media_dump script to contrib/. [David]
•
The category association interface used in the story profile when the CWENABLE_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]
•
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]
•
Removed Bric::FAQ, since it is now maintained on the Website, instead. [David]
•
Updated Bric::Admin to suggest that PostgreSQL's CWinitdb be run with CW--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>
•
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.
•
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]
•
The distribution monitor, bric_dist_mon, now prints error information to CWSTDERR when there is an error, instead of just printing it to the system log. [David]
•
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]
•
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]
•
Updated documentation of parameters to the CWlist() method of Bric::Biz::Asset::Formatting (the template class). Also documented a few parameters to the story and media class CWlist() methods that were supported but previously undocumented. [David]
•
Variables are now properly decoded to UTF-8 when they are populated from the database. [David]
•
The strings used in translations are now all properly decoded to UTF-8. [David]
•
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 CW<%filter> blocks to convert content to another encoding using something like CWEncode::from_to($_, 'utf-8', $encoding) must now use something like CW$_ = Encode::encode($encoding, $_), instead. Bric::Util::CharTrans should continue to do the right thing. In either case, you'll also need to set the new CWencoding attribute, as well, (see next item). [David]
•
Added CWencoding attribute to Bric::Util::Burner so that, if templates are outputting something other than Perl CWutf8 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]
•
Added example use for CW$burner->display_pages to Bric::AdvTemplates. [Cinly Ooi]
•
Added README.Mandrake. [Cameron Miller]
•
Added CWSFTP_HOME bricolage.conf directive to specify the home directory and location of SSH keys when SSH is enabled. [Cameron Miller]
•
Users can no longer implicitly publish related stories and media via the UI that they don't have PUBLISH access to. [David]
•
Users can no longer publish related documents via the UI or SOAP that are in workflow but not on a publish desk. [David]
•
Added search by output channel to Find Templates. [David]
•
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

•
The burner CWnext_page_file() and CWnext_page_uri() methods now properly return a value if the CWburn_again attribute has been set to a true value in the Mason burner. [David]
•
The CWlist() and CWlist_ids() methods of the story, media, and template classes no longer return CWundef in a scalar context when there are no objects to be returned. They return an empty array reference, instead. [David]
•
The CWis_fixed() method in the story and media classes now works properly. Reported by Marshall Roch. [David]
•
CWmake clone once again properly copies the lib/Makefile.PL and bin/Makefile.PL files from the source directory. [David]
•
Fixed the CWmy_meths() method of Bric::Biz::AssetType::Parts::Data to return metadata for the the CWkey_name attribute instead of an CWundef for the removed CWname attribute. [Scott]
•
Added missing language-specifying HTML attributes so as to properly localize story titles and the like. Reported by Joshua Edelstein. [David]
•
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]
•
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]
•
Editing notes from My Workspace now works properly. Thanks to Simon Wilcox for the spot! [David]
•
The Advanced Search interface once again works for searching for related story and media documents. Reported by Ben Bangert and many others. [David]
•
Renaming a site and its domain name now always properly renames the associated site permission user groups. Reported by Will Trillich. [David]
•
The Alias Story interface now works properly when the CWUSE_THUMBNAILS directive is enabled. Reported by Ben Bangert. [David]
•
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]
•
Bricolage no longer attempts to email alerts to an empty list of recipients. This will make your SMTP server happier. [David]
•
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]
•
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]
•
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]
•
The Default Asset Sort preference now actually works. Reported by Simon Wilcox. [David]
•
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]
•
Users can now set their own values for overrideable preferences. [David]
•
The CWlist() and CWlist_ids() methods of the Story, Media, and Template (Formatting.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]
•
Auto-generated slugs (enabled via the CWAUTOGENERATE_SLUG bricolage.conf directive) no longer convert uppercase characters to underscores. Thanks to Paul Orrock for the spot! [David]
•
Changes made to story content in the story profile are no longer preserved when clicking the Cancel button. Reported by Paul Orrock. [David]
•
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]
•
Clicking the Add More button to add more keywords to a new category no longer causes an error. [David]
•
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]
•
Adding an existing publish desk to a workflow no longer unsets its publish attribute. [David]
•
Deleted output channels no longer show up in the select list for story type and media type elements. [David]
•
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]
•
Creating a story, checking it in, checking it out, and then canceling the checkout no longer incorrectly removes the story from workflow. [David]
•
The source of a story can now be changed. [David]
•
Status messages sent to the browser during previews are now hidden if an error is triggered. [Marshall]
•
Publishing a document with deactivated related documents no longer causes those deactivated documents to be published, too. Reported by Paul Orrock. [David]
•
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]
•
The Output Channel URI Prefix and URI Suffix fields are once again allowed to include a slash (/). Reported by Kevin Elliott. [David]
•
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 CWbric_dev_sync. Thanks to Paul Orrock for the spot! [David]
•
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]
•
Content submitted to Bricolage in the UTF-8 character set is now always has the CWutf8 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]
•
CWBric::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]
•
The media type of media documents now defaults to none instead of inserting a CWNULL into the database. The column has also be marked CWNOT NULL in order to ensure that this remains the pattern. [David]
•
Changed the name and error_message columns in the job table in the database from CWVARCHAR to <TEXT>. This is so that we don't have to truncate them before inserting them. [David]
•
Elements with autopopulated fields (e.g., for image documents) can now be created via the SOAP interface. Reported by Todd Tyree. [David]
•
Fixed a number of the parameters to the CWlist() method of the Story, Media, and Template classes to properly handle an argument using the CWANY operator. These include the CWkeyword and CWcategory_uri parameters. Passing an CWANY 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]
•
Restored foreign keys and constraints missing on the job table and related tables since version 1.8.0. [David]
•
The error message for failed distribution jobs is now properly displayed in the UI. [Mark]
•
Fixed bug with the execution of jobs in bric_queued. [Mark]
•
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.
•
Template sandboxes now work for the Template Toolkit burner. [David]
•
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]
•
The side navigation layer now works correctly with Internet Explorer 5.5 for Windows. [Marshall]

VERSION 1.8.1 (2004-07-08)

Improvements

•
More complete Traditional Chinese and Simplified Chinese localizations. Also, the Mandarin localization now simply inherits from the Traditional Chinese localization. [Kang-min Liu]
•
CWmake 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]
•
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]
•
Added some missing translations for English. [David]
•
The installer is now a bit smarter in how it handles loading the CWlog_config (or CWconfig_log, as the case may be) module. [Marshall Roch]
•
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]
•
Added language-specific style sheets. This is especially useful for right-to-left languages or for languages that require special fonts. [David]
•
The New Alias search interface now displays thumbnails when searching for media documents to alias and the CWUSE_THUMBNAILS bricolage.conf directive is enabled. Reported by Serge Sozonoff. [David]
•
The CWhas_member() method of Bric::Util::Grp is now faster when searching for a specific group member. [David]
•
Aliases can now be made to documents within the same site. [Serge Sozonoff]
•
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]
•
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]
•
Added CWmove() 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]
•
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]
•
Improved zh-cn translation. [Gang Luo]
•
Burner notes now persist for all sub burns (triggered by CWpublish_another() and CWpreview_another() in a single burn. [Serge Sozonoff]
•
Keyword groups now properly display their members. [David]
•
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]
•
Alert rules are now evaluated within a safe compartment (using Safe.pm) to prevent security exploits. [David]
•
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

•
Bulk Publish now ensures that users have at least READ access to categories they wish to publish from. [Scott]
•
Eliminated 'Bareword ENABLE_HTMLAREA not allowed while strict subs in use' warning that prevented startup for some installations. [Scott]
•
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]
•
Changes made to user or contributor contacts without changing any other part of the user or contributor object are now properly saved. [David]
•
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]
•
Attempting to publish a story or media document with brackets in the title no longer causes an error. Reported by Serge Sozonoff. [David]
•
Fixed a bric_soap CWlist_ids bug [712] with the CWno_workflow option. [Clive Jones]
•
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]
•
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]
•
Improved error logging for more recent versions of Apache, which unfortunately escape newlines. [David]
•
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]
•
Aliases of Image, Audio, or Video media documents no longer remain stuck on desks. Reported by Serge Sozonoff. [David]
•
Related media and story subelements of media documents now work properly. Thanks to Kang-min Liu for the spot! [David]
•
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]
•
The CWset_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]
•
Calls to CWpreview_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]
•
Contributor fields for roles other than the default role now properly store and retain their values. [David]
•
The virtual FTP server now properly checks out templates when a template is uploaded and is already in workflow.
•
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.
•
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]
•
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]
•
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]
•
The table of contacts in the alert type profile is now more like other tables, in terms of border colors, etc. [David]
•
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]

Improvements

•
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]
•
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]
•
Keyword names are now always editable in the keyword manager. [David]
•
Added UI for managing organizations, which provide the base data for souces. [David]
•
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]
•
Added stubs for zh-hk localization. [David]
•
Added missing localizations to the Language preference. Many of these are not yet translated, but there they are. [David]
•
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]
•
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]
•
Login redirection now works properly with Safari. [David]
•
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

•
Added a missing space to the breadcrumb in the header. [Marshall Roch]
•
The new CWSFTP_MOVER_CIPHER bricolage.conf directive now actually works. [David]
•
The group profile works again for element groups [David]
•
Check In To link misalignment fixed for Konqueror, as well as some other miscellaneous CSS fixes. [Marshall Roch]
•
The CREATE permission is now displayed when granting permission to user groups to access the members an All group. [David]
•
The none media type is no longer editable via the UI. [David]
•
Invalid story cover and expire dates now properly trigger an error message. [David]
•
Deactivated keywords are no longer returned by the CWget_keywords() methods of the Business asset class (from which Story and Media inherit) or the Category class. Reported by Paul Orrock. [David]
•
Events are now properly logged for keywords managed in the keyword profile. [David]
•
Media URIs are now properly updated when the primary output channel is changed. Reported by Ben Bangert. [David]
•
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]
•
Safari users will no longer be stuck on the login page. [David]
•
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]
•
The CWdesk_id parameter to the CWlist() methods of the story, media, and template classes now works. [Joa~o Pedro]
•
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]
•
Stories and media are no longer published twice when published from a publish desk or via Bulk Publish. [David]

New Features

•
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]
•
Added CWSFTP_MOVER_CIPHER bricolage.conf directive to tune the SFTP mover (if enabled) to the best cipher for good performance on the wire. [David]

Improvements

•
Added site and output channel support to bric_template_diff and bric_template_patch in contrib. [David]
•
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]
•
Spell checking now works in HTMLArea. [Eric Sellers]
•
When creating a new story without a slug, Bricolage will now autogenerate a slug based on the title. [Joa~o Pedro]
•
Added single underscore parameters to the CWlist() methods of the Story, Media, and Template classes to complement those that have the awful double underscores. [David]
•
Made SOAP modules more tolerant of lack of sites in 1.6. [Scott]
•
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]
•
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]
•
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]
•
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] CWmake clone now provides the current date and time for the default name for the cloned package. Suggested by Marshall Roch. [David]

Bug Fixes

•
Bricolage no longer tries to display thumbnails for related stories, since stories don't have thumbnails and would therefore create an error. [Eric Sellers]
•
Text::Levenshtein is again correctly loaded as an optional module, not a required module. Reported by Marshall Roch. [David]
•
Bric::Util::Burner's CWpreview_another() method now actually works. Thanks to Serge Sozonoff for the spot. [David]
•
Fixed clone interface for IE users. Spotted by Serge Sozonoff. [Scott]
•
Some of the supported values for the CWOrder parameter to the Story, Media, and Template classes, such as CWcategory_uri, did not work before. Now they do. [David]
•
Changing categories on a template no longer creates Frankensteinian template paths. [David]
•
Added constant CWHAS_MULTISITE to the Bric base classe so that all classes properly declare themselves for UI search results. [Joa~o Pedro]
•
Story and Media SOAP calls now correctly use the element's key name to identify the element. [Joa~o Pedro]
•
Story, Media, and Template creation via SOAP now correctly look up the Category by URI and site ID. [Joa~o Pedro & David]
•
The Template SOAP interface now suports the CWsite parameter to CWlist_ids(). [David]
•
The Story, Template, and Media SOAP CWlist_ids() intefaces now properly look up categories, output channels, and workflows with the CWsite paremeter, if there is one. [David]
•
The CWLOAD_LANGUGES and CWLOAD_CHAR_SETS directives are now space delimited, to better match other bricolage.conf options. [David]
•
Aliased media documents now correctly point to the file name for the aliased media document. Reported by Patrick Walsh. [David]
•
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]
•
The publish status and version is once again properly set for media when they are published. Reported by Serge Sozonoff. [David]
•
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]
•
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]
•
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]

New Features

•
Added Bulk Publish feature in ADMIN->PUBLISHING that lets members of the Global Admins group publish story and media documents by category. [Scott]
•
Added CWnotes() method to Bric::Util::Burner, along with the accompanying CWclear_notes(). The CWnotes() 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 CWburn_one(). [David]
•
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]
•
Added support for icons for all media documents when the CWUSE_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 CWcopy_gnome_icons script in contrib makes it easy to use GNOME icons. [David]
•
Added CWbric_template_diff and CWbric_template_patch scripts in contrib/bric_template_diff. These scripts can be used to sync templates between two Bricolage servers. [Sam]
•
added CWbric_media_load to CWcontrib/. This script copies media into Bricolage while accounting for the new to update existing media. [Sam]
•
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

•
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]
•
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]
•
Modified the indexes on the CWworkflow__id and CWdesk__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]
•
Added a method CWis_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]
•
Added the CWENABLE_OC_ASSET_ASSOCIATION bricolage.conf directive to remove the ability to associate output channels from the story and media profiles. [Scott]
•
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]
•
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]
•
Added the ability to Delete from desks (same as My Workspace). Note however, that you can't delete from a publish desk. [Scott]
•
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]
•
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]
•
Modified the CWget_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]
•
Modified the CWget_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]
•
Added the CWget_data_elements() method to Bric::Biz::Asset::Business::Parts::Tile::Container. This method functions exactly like CWget_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]
•
The CWANY() subroutine will now throw an exception if no arguments are passed to it. Suggested by Dave Rolsky. [David]
•
Added the CWunexpired parameter to the CWlist() 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]
•
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]
•
Eliminated another SQL performance bottleneck with simple searches of media assets. [Joa~o Pedro]
•
Images with no dimension greater than the CWTHUMBNAIL_SIZE bricolage.conf directive are no longer expanded to have one side at least CWTHUMBNAIL_SIZE pixels, but are left alone. [David]
•
Thumbnails are now displayed when searching media to relate to an element. [David]
•
Thumbnails are now displayed in related media subelements. [David]
•
Added CWpreview_another() method to Bric::Util::Burner. This method is designed to be the complement of CWpublish_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]
•
Added the CWsubelement_key_name parameter to the CWlist() 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]
•
Added support for all of the parameters to the CWlist_ids() method of the Story, Media, and Template classes to the CWlist_ids() method of the corresponding SOAP classes. This allows for much more robust searches via the SOAP interface. [David & Scott]
•
Eliminated CWlogin_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 CWusr 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

•
CWmake 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]
•
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]
•
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]
•
Image files uploaded in formats not recognized by Image::Info no longer trigger an error. Reported by Alexander Ling. [David]
•
Changing the cover date of a media document once again correctly updates the primary URI of the media document. Reported by Serge Sozonoff. [David]
•
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]
•
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]
•
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]
•
CWBric::SOAP::Category->list_ids now converts site names to site IDs. [Joa~o Pedro]
•
CWBric::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]
•
Added CWfirst_publish_date attribute to the SOAP input and output for stories and media. [David]
•
The category SOAP class now correctly calls CWlookup() with the site ID to prevent multiple categories with the same names but in different sites from being looked up. [Joa~o Pedro]
•
User overrideable preferences are now properly checked for permissions to allow users with READ permission to a user to see the permissions. [David]
•
Users can now edit their own user-overrideable preferences. [David]
•
Group management now works more correctly in user profiles where users have on READ access to the user object. [David]
•
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

•
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 CWFTP_DEPLOY_ON_UPLOAD bricolage.conf directive. [David]
•
Added CWANY 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]
•
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]
•
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 CWUSE_THUMBNAILS bricolage.conf directive. See Bric::Biz::Asset::Business::Media::Image for more information. [Paul Orrock/ Digital Craftsmen]

Improvements

•
The bric_media_upload contributed script now provides a more meaningful error message when it can't find bric_soap. [Dave Rolsky]
•
The bric_dist_mon CW-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]
•
More story, media, and template query optimization. [David]
•
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]
•
Thanks to the aggregation of group IDs into a single row for each story, media and template object, the CWOffset and CWLimit parameters to the CWlist() 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.
•
Added CW-k option to bric_ftpd to kill a currently running virtual FTP server. This is made possible by the addition of the new CWFTP_PID_FILE bricolage.conf directive. [David]
•
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]
•
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]
•
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]
•
Added CWFTP_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]
•
Updated zh-cn and zh-tw localizations, translating all untranslated messages and JavaScript messages. [Kang-min Liu]
•
Relabeled the Pre and Post attributes of output channels as URI Prefix and URI Suffix, respectively. [Serge Sozonoff]
•
Added CWget_element() method to Bric::Biz::Asset::Business and deprecated the CWget_tile() method. This will make things a bit more consistent for template developers, at least. [David]
•
Added CWprimary_category_id parameter to the story class' CWlist() method. [David]
•
Updated the German localization. [Thorsten Biel]
•
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]
•
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]
•
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]
•
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]
•
Changed the default value of the CWSMTP_SERVER bricolage.conf directive to localhost. This has a much greater chance of working than defaulting to the value of the CWVHOST_SERVER_NAME directive. [David]
•
Eliminated the term Asset Type from the UI, replacing it with Element, Story Type Element, or Media Type Element, as context demands. [David]
•
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]
•
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]
•
When publishing from a publish desk, you can now uncheck related assets in order to not publish them. You can also unset the CWPUBLISH_RELATED_ASSETS bricolage.conf directive to never publish related assets. [Scott]

Bug Fixes

•
The virtual FTP server now correctly creates a utility template when a template with an unknown name is uploaded. [David]
•
The virtual FTP server now pays proper attention to all permissions. [David]
•
A number of upgrade script annoyances were cleared up. [David]
•
The CWsimple parameter to the Media class' CWlist() method works again. As a result, so does Find Stories in the UI. [David]
•
The de-de localization library has been fixed so that it now works. [David]
•
Filter by site context now works. 'All sites' context now returns results from all sites instead of none. [Joa~o Pedro]
•
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. CW$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]
•
Fixed Template Element list, where container elements appeared twice. [Joa~o Pedro]
•
The deletion of a site now properly resets the workflows to be displayed in the side navigation layer. [David]
•
Changes to site settings are now correctly reflected in the UI for all users as soon as they are made. [David]
•
New media documents no longer attempt to validate URI uniqueness until a file has been uploaded. [David]
•
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]
•
The workflow profile no longer displays deactivated sites in the site select list. Thanks to Serge Sozonoff for the spot. [David]
•
The upgrade script that adds the CWfirst_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]
•
Media, Story, and Template groups now properly display all of the permissions that can be granted to user groups to access them. [David]
•
The Next button in the Element Type profile now correctly loads the next page of the profile instead of returning to the manager. [David]
•
Fixed URI uniqueness upgrade scripts, which were having problems with PostgreSQL permissions. [David]
•
CWmake clone works again. [David]
•
Fixed database building installer scripts to use the CW$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]
•
Distribution jobs can be edited via the UI again. Thanks to Marshall Roch for the spot. [David]
•
Publishes once again work when the Date/Time Format preference is set to something other than ISO-8601. Reported by Marshall Roch. [David]
•
CWbric_dist_mon now correctly appends /dist/ to the end of the server URL if it is not already appended. Reported by Marshall Roch. [David]
•
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]
•
Fixed previewing with multiple OCs. [Serge Sozonoff]
•
Fixed a bug in CWbric_soap story create/update caused by refactoring in version 1.7.0. Found by David during a demo. [Scott]
•
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]
•
The workflow menus in the side navigation layer no longer disappear after a server restart. Reported by Ben Bangert. [David]
•
The Mason burner's special CW<%publish>, CW<%preview>, and CW<%chk_syntax> tags now work as advertised. Reported by Ben Bangert. [David]
•
Publication of stories and media that automatically schedule expiration jobs no longer causes an error. Reported by Marshall Bloch. [David]

New Features

•
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]
•
Added CWpublish_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]
•
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]
•
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]
•
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]
•
Added CW--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]
•
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]
•
Added the CWbric_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]
•
German localization completed. [Thorsten Biel]
•
Added CWget_parent() method to Bric::Biz::Asset::Business::Parts::Tile. This simplifies getting access to a parent element in an element template. [David]
•
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]
•
Added CWburn_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]
•
Added zh-cn localization, with translation based on zh-tw. [Kang-min Liu]

Improvements

•
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]
•
HTML::Template and Template Toolkit are now optional. If they're not installed on your system, they won't be loaded by Bricolage. [David]
•
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]
•
A number of improvements for the bric_media_upload contrib script:
Creates intermediate categories if needed.
See the script's usage info for details. [Simon Wilcox]
•
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]
•
CWmake upgrade now suggests that the user run CWmake 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]
•
Added CWelement_key_name parameter to the CWlist() 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 CWelement__id parameter, which isn't as friendly. [David]
•
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]
•
The Mason burner now uses document templates as true dhandlers, enabling full Mason-style inheritance from autohandlers to work properly. [David & Dave Rolsky]
•
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]
•
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]
•
Added the CWstory.category parameter to the CWlist() 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

•
The Checkout checkbox is no longer missing in the Find interface for documents and templates that are already in workflow. [David]
•
Category groups can be edited again. Reported by Alexander Ling. [David]
•
Elements can be edited again. Thanks to Alexander Ling for the spot! [David]
•
Element fields can be edited again without encountering the called the removed method 'get_name' error. Reported by Alexander Ling. [David]
•
Improved the upgrade script for converting field definitions to use key names, thanks to reports from Nate Perry-Thistle. [David]
•
Made the index on field key names case-insensitively unique. [David]
•
Restored category asset group permissions in user group profiles. [David]
•
Templates can be deleted again. Thanks to Adeola Awoyemi for the spot! [David]
•
Stories and media with non-unique URIs can now be deleted. Reported by Simon Wilcox. [David]
•
Checkin and Publish once again works in the media profile. Thanks to Alexander Ling for the spot. [David]
•
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]
•
The inline Bulk Edit feature in story and media profiles works again. Thanks to Neal Sofge for the spot! [David]
•
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]
•
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]
•
Templates are now correctly saved to the user's sandbox when Save and Stay is pressed. [Joa~o Pedro]
•
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]
•
Group membership now correctly shows the site name for each object when there is more than one site in the installation. [Joa~o Pedro]
•
Sites can now be disassociated with elements. Reported by Alexander Ling. [David]
•
Redirects during previews work again. [David]
•
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]
•
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

•
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

•
Passwords can be changed again. [Mike Slattery]
•
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]
•
The Output Channel item for templates on desks now displays properly. [David]
•
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]
•
The CWdisplay_element() method in the Mason burner once again passes component arguments on to components. And now, so does CWsdisplay_element(). [David]
•
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]
•
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]
•
Redirection after some publishes and previews works again, instead of returning a text page to the browser. [David]
•
Now displaying the name of the site each story and media document is in in Find Stories and Find Media. Suggested by Arthur. [David]
•
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.
See the script's usage info for details. [Dave Rolsky]
•
Changing a media item's category and then saving caused an error. [Dave Rolsky]
•
Changing a media document's cover date no longer causes the URI to disappear. Thanks to Dave Rolsky for the spot. [David]
•
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]
•
Added CWoutput_channel_id parameter to the CWlist() 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]
•
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]
•
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]
•
The upgrade process no longer moves media document files to where Bricolage can't find them. If this happened to you, just CWmv $BRICOLAGE_ROOT/comp.old/data $BRICOLAGE_ROOT/comp. [David]
•
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]
•
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]
•
The Template toolkit burner now correctly uses element key names instead of names to find corresponding templates. [David]
•
Management of user groups in a double list manager UI no longer causes an SQL error. Spotted by Alexander Ling. [David]
•
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]
•
Improved permission checking in the virtual FTP server. [David]
•
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

•
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]
•
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]
•
Changed element attribute name to key name to emphasize its uniqueness within an element. Also changed the Display Name to Label [Garth]
•
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 CWhas_name() method a bit simpler and it can in fact be ignored in favor of CW$element->get_key_name eq $key_name. Thus there may be some warnings if older name values are passed to CWhas_name(). [Garth]
•
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]
•
Added CW$burner->sdisplay_element method to Bric::Util::Burner. This is a CWsprintf-style version of CW$burner->display_element. [Scott]
•
Added CWget_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 CWget_data() does). Inspired by a comment from Bill Cappel. [David]
•
Added the CWYEAR_SPAN_BEFORE and CWYEAR_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.
•
Added the CWENABLE_SFTP_V2 bricolage.conf directive to make SSH protocol 2 be tried first. [Scott]
•
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]
•
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]
•
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]
•
Added CWinstance() class method to Bric::Util::Language, so that non-OO functions can get access to the current language handle. [David]
•
Added CWoutput_channel_id parameter to the CWlist() 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]
•
Lots of notification message localization fixes. [Radu Greab]
•
Status message localization fixes [David]
•
Added search by element type to Advanced Search of the Find Stories and Find Media interfaces. [Scott]
•
Added a preference to select Simple or Advanced search in Find Stories/Media the default search when you go to those screens. [Scott]
•
Added Select all button to select all the checkboxes on publish desks or My Workspace. [Scott]
•
Added Keyword Management interface to centrally manage keywords. [Scott]
•
Added CW--workflow and CW--desk options to create and update commands of CWbric_soap, so that assets can be moved to a desk at the same time as creation or updation. [Scott]
•
Added Group Membership sections to most of the profiles. [Joa~o Pedro]
•
Some optimizations to Bric::SOAP::(Media|Story|Template) classes. [Scott]
•
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]
•
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]
•
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]
•
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]
•
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]
•
Added ability to preview stories in a selection of output channels in the View (read-only) story profile. [David]
•
Combined the asset Find managers into a single component, thus eliminating a lot of redundant code. [David]
•
Added CWcontrib_id parameter to the CWlist() 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]
•
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 CWto_utf8() and CWfrom_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]
•
Factored out some of the SOAP asset classes into Bric::SOAP::Asset. [Scott]
•
Added MediaType, Site, and Keyword SOAP modules. [Scott]
•
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]
•
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]
•
Added element attribute to Bric::Util::Burner so that CW$burner->get_element should always return the element currently being burned. [David]
•
Added burner-specific exceptions with context information, including current output channel, current category, and current element. [David]
•
Added a CWthrow_error() method to Bric::Util::Burner so that template developers can easily throw an exception that their users will see in the UI. [David]
•
Added CWbest_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]
•
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]
•
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 CWENABLE_CATEGORY_BROWSER bricolage.conf directive. [Scott]
•
Added list paging to Desks and My Workspace. [Scott]
•
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 CWUSE_XHTML bricolage.conf directive to get the old desk views back (useful for older browsers). [David]
•
Added a preference to set the default Story/Media sorting. [Scott]
•
Added the ability to test templates without having to deploy them by using template sandboxes for each template developer. [Joa~o Pedro]
•
Added Template Toolkit burner support. [Arthur/Fotango]
•
Added a bricolage.conf directive, CWALLOW_SLUGLESS_NONFIXED, to prevent slugless non-fixed (non-Cover) stories. [Scott]
•
Added support for installing and upgrading Bricolage with PostgreSQL on a separate host. [Thorsten Biel]
•
Added context-sensitive help for pages that were missing it. [Scott]
•
CWmake 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

•
CWmake upgrade once again correctly creates postgres.db if the existing installation doesn't know the installed version of PostgreSQL. [David]
•
Adding notes to image, video, or audio media documents no longer causes an error. Reported by Christian Hauser. [David]
•
Errors in the CWPERL_LOADER bricolage.conf directive no longer silently fail. [David]
•
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]
•
The CW$burner object is now available in Mason template CW<%once> blocks during the syntax check, although CW$story and CW$element are not. All three are in the CW<%once> block during previews and publishes. This means that they can all be used in a CW<%once> block like this:
  <%once>;
  unless ($burner->get_mode == SYNTAX_MODE) {
      # Do stuff with $story or $element.
  }
  </%once>
Reported by Serge Sozonoff. [David]

Bug Fixes

•
Deactivated groups no longer affect permission checking. Discovered thanks to a bug report from Serge Sozonoff. [David]

Bug Fixes

•
Warnings are no longer fatal. This was only the case ouside of mod_perl, and so was probably quite rare, anyway. [David]
•
Upgrades no longer cause an error during the execution of inst/db_grant.pl. Reported by Abdul Halim Mazahar. [David]
•
Alerts once again properly check the attributes of the events that trigger them. Reported by Patrick Walsh. [David]

Bug Fixes

•
A checkbox that is unchecked in an element no longer reverts to checked when clicking Save and Stay. Reported by Scott Lanning. [David]
•
Date parameters to the CWlist() 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]
•
Elminated some warnings. Reported by Christian Hauser. [David]
•
Simplified error handling in the CWBric base class and when running outside of CWmod_perl. [David]
•
Fixed issue with load order directives in Bricolage dynamic httpd.conf generation. This had caused the CWPREVIEW_MASON directive to not work in some cases. Incidentally, this change also allows dynamic configuration of mod_perl 1.26 and earlier. [David]

Bug Fixes

•
Added missing index to the CWworkflow__id column of the CWstory, CWmedia, and CWformatting (template) tables. [David]
•
Made index on the CWdesk__id column of the CWstory, CWmedia, and CWformatting (template) tables a partial index, since the column will usually be CWNULL. [David]
•
Added an index to the description column of the CWstory_instance, CWmedia_instance, and CWformatting (template) tables to speed up simple searches. [David]
•
Added missing foreign key constraints for the CWdesk_id column of the CWstory, CWmedia, and CWformatting (template) tables. [David]
•
CWmake clone no longer fails when it can't find httpd.conf, because it no longer looks for it. [David]
•
CWmake clone no longer assumes that the conf directory is in CW$BRICOLAGE_ROOT, and prompts the user to find out. [David]
•
Bricolage once again works with Perl 5.6.x and Perl 5.8.1. [David]
•
Made bric_republish and bric_dev_sync safe to use with CWhttps://. [Geoff Richards]
•
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]
•
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]
•
Fixed ancient bug revealed by the release of DBI 1.41. [David]
•
Photoshop-generated images no longer make Bricolage choke when they're uploaded to a Media profile that autopopulates fields. Reported by Paul Orrock. [David]
•
The CWlookup() method of the story, media, and template classes will now correctly return inactive objects. [David]
•
Fixed typo of CWCHECK_FREQUENCY in Bric::Config that made it always use the default of 1. [Scott]
•
The CWlookup() 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]
•
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

•
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]
•
Story profile JavaScript validation works again. Thanks to Simon Wilcox for the spot! [David]
•
Eliminated the need for the Apache::ConfigFile module, and thus some annoying problems with the CPAN indexer when trying to install it. [David]
•
Fixed order of SQL statement execution upon installation so that dependencies are properly handled. [Mark]
•
New file resources created for distribution are now created with the proper media type. [Mark]
•
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]
•
Added new path to find PostgreSQL installed by some Debian packages. [Cinly Ooi]
•
Workflows with special characters such as + and & now work properly in the side navigation. Thanks to Patrick Walsh for the spot! [David]
•
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]
•
Pushing the cancel button in a desk profile and then in a workflow profile no longer redirects back to the desk profile. [David]
•
Made publish_date not be empty when publish is done through the SOAP API and no publish_date argument is passed. [Scott]
•
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]
•
Checkout checkboxes no longer appear for assets that users don't have permission to check out. Thanks to Alexander Ling for the spot! [David]
•
Bric::Biz::AssetType::Parts::Data's CWlookup() method now returns deactivated objects, as it should. Thanks to Nuno Barreto for the spot. [David]
•
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]
•
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]
•
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]
•
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]
•
Updated Chinese Traditional localization. [Kang-min Liu]

VERSION 1.6.8 (2003-11-29)

Bug Fixes

•
Custom select fields now correctly pay attention to the size attribute. Reported by Dave Rolsky. [David]
•
The element type manager now displays Subelement instead of Story for subelement element types. Suggested by Dave Rolsky. [David]
•
Updated to work with PostgreSQL 7.4. [David]
•
Improved error message in Bric::Util::Trans::SFTP. [David]
•
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]
•
Mason story templates now inherit from all category templates, thus enabling the access of CW<%attr>s and calling of CW<%method>s in category templates from story templates. [David]
•
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]
•
Dates are no longer editable if a user doesn't have permission to edit them. [David]
•
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]
•
Fixed bug that triggered an invalid error message when a story URI is non-unique. Reported by Kevin Elliott. [David]
•
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]
•
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

•
Fixed CWbric_soap to accept a CW--server argument starting with https, which is more friendly to an SSI environment. [Geoff Richards]
•
The PostgreSQL admin username and password arguments were reversed during CWmake upgrade. [Thorsten Biel]
•
Fixed broken foreign key index on element table. [Dave Rolsky]
•
Added partial index to speed queries against the job table, and thus to speed distribution. [Mark]
•
Fixed upgrade module to properly grant the correct Bricolage database user permission to access new tables and sequences. [David]
•
An upgrade script failure will really now cause CWmake upgrade to halt installation so that any issues are immediately identified and correctable. [David]
•
Updated slug RegExen. They were a bit too strict, and should be better now, allowing dots, dashes, and underscores. Spotted by Creighton Higgins. [David]
•
The CW$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]
•
Inactive alert types no longer trigger the sending of alerts. Thanks to Scott for the spot. [David]
•
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]
•
Fixed CWelement_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

•
Added README.Solaris, with thanks to Oscar Sodani and Thorsten Biel.

Bug Fixes

•
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]
•
The desk_id attribute of assets is now properly cleared when an asset is removed from workflow. [David]
•
Fixed 1.6.5 upgrade script to look for Bric::Config in the proper location. [David]
•
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]
•
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]
•
Elements to which no subelements can be added will no longer display an empty select list and Add Element button. [Geoff Richards]
•
CWBric::Biz::Asset::Business::Story->get_secondary_categories() will no longer return categories deleted from the story. Thanks to Scott for the spot. [David]
•
Removed some unnecessary JavaScript validation. [David]
•
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]
•
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]
•
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]
•
An upgrade script failure will now cause CWmake upgrade to halt installation so that any issues are immediately identified and correctable. [David]
•
An invalid date in a date element field no longer causes an error. Thanks to Arthur for the spot! [David]
•
With CW(STORY_URI_WITH_FILENAME enabled and when there is no defined file extension Bricolage now doesn't insert an ending '.' (dot). [Arthur/Fotango]
•
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

•
Previewing stories with related media that have no associated file no longer causes an error. Reported by Kevin Elliott. [David]
•
Switched to using CWDBI->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]
•
Fixed issue that could cause Bric::Util::DBI to create inconsistent transaction states. Spotted by Rudy Lippan. [David]
•
Removed passing of DEBUG argument to CWprepare(), CWprepare_c() and CWprepare_ca(), since it hasn't actually worked in some time, and could potentially change the behavior of the prepare. [David]
•
Bric::SOAP::Workflow no longer throws an error when its CWpublish_date parameter is undefined. Reported by Kevin Elliott. [David]
•
Passing an undef via the CWworkflow__id parameters to the CWlist() 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]
•
Vastly improved the speed of the query that lists events, and added an index to help it along, as well. [Mark]
•
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]
•
The FTP mover now properly deletes files rather than erroring out. [Clive Jones]
•
Fixed installer to use PostgreSQL 7.1 syntax to update statistics. [David]
•
Now setting CW$PGDATESTYLE environment variable so that PostgreSQL isn't confused about the date style Bricolage is using. Suggested by Chris Riddoch. [David]
•
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]
•
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]
•
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]
•
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

•
Preview works again. [David]

VERSION 1.6.3 (2003-08-12)

Bug Fixes

•
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]
•
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]
•
Renamed events for adding fields to elements and contributor types. They were mentioning attributes, and now they mention fields, instead. [David]
•
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]
•
Permissions granted on the All groups work again. Reported by Kevin Elliott. [David]
•
Resize now works in super bulk edit. Thanks to Michael G. Kaiser for the spot. [David]
•
Documented that the CWlist_ids() methods in Bric::Biz::Asset's subclasses ignore the CWOrder and CWOrderDiretion parameters and return an unordered list of IDs. Reported by Clive Jones. [David]
•
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]
•
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]
•
Optimized performance of Bric::Dist::Resource queries and wrote lots of tests for them. [David]
•
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.
•
Fixed error looking up alert types in the database, which affected the alert type manager on some platforms. Reported by Radu Greab. [David]
•
Deactivated alert types are once again available via the UI. [David]
•
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]
•
Template output channel associations no longer trigger an error when importing templates via the SOAP interface. [Clive Jones]
•
Passing an undef via the CWworkflow__id parameters to the CWlist() 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]
•
Extra blank lines between subelement tags in super bulk edit no longer causes an error. Thanks to Kevin Elliott for the spot! [David]
•
Searches no longer return unexpected results or all objects when pagination is enabled. Thanks to Kevin Elliott for the spot! [David]
•
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]
•
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

•
German localization started. [Gerfried Fuchs]
•
New help pages for the destination, server, and action profiles. [Geoff Richards]

Bug Fixes

•
Fixed a bug in Bric::SOAP::Media which was causing all media files uploaded with that module to be placed in CWcomp/data/media/$version/ rather than CWcomp/data/media/$id/$version/. [Mark]
•
Fixed SQL bug that might in rare situations cause element output channel associations to become confused. [David]
•
Fixed issue where new output channels added to a document type element were not always actually saved as a part of that element. [David]
•
Fixed side navigation spacer graphic to the same width as other such graphics. Helps Chinese Traditional to display more nicely. [Kang-min Liu]
•
The media simple search now searches by URI again. [Mark]
•
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]
•
Fixed installer to again work with versions of PostgreSQL prior to 7.3. Thanks to Marc Hawson for the spot. [David]
•
Fix for 'Can't call method out_method on an undefined value' generated during a burn. [Mark]
•
Many minor HTML corrections. [Gerfried Fuchs]
•
Fix for SQL error when searching for media by file name. [David]
•
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]
•
Alert types can once again be deleted from the alert type profile. [David]
•
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]
•
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 CWmake upgrade, instead. Suggested by Bruce Albrecht. [David]
•
The list manager now sorts version numbers as numbers rather than strings. [Joa~o Pedro]
•
The media type profile again allows extensions to be added and removed. Reported by Tobias Kremer. [David]
•
Added the CWCHAR_SET directive's value to Bricolage's Apache configuration via the httpd.conf directive CWAddDefaultCharset. Might help with some Unicode issues. [David]
•
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]
•
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]
•
Enabled the CWPERL_LOADER bricolage.conf configuration directive and gave it a default value that's actually useful. [David]
•
Perl 5.8.0 or later is now strongly recommended for better Unicode support.
•
Fixed deleting an Alert Type Rule. Also fixed Editing Alert Type Recipients. [Scott]
•
Notes are once again saved with a document. Thanks to Scott for the spot! [David]
•
Fixed an issue with FTP distribution where the incorrect FTP root was used an invalid path. [Clive Jones]
•
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]
•
Pagination now works properly when searching for groups by type in the group manager. [Scott]
•
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]
•
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]
•
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]
•
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]
•
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]
•
An attempt to preview a story where its templates output no content no longer results in an error. Reported by Eldar Kononov. [David]
•
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]
•
Changes made to the default values of fields in the contributor type profile are now properly saved. Reported by Scott. [David]
•
Adding Extensions to a Bric::Util::MediaType object when creating it via that class' CWnew() constructor works again. Reported by Clive Jones. [David]
•
Added Localization support to widgets that were missing it. Added pt_pt localized images. [Joa~o Pedro]
•
Documents are no longer distributed to deleted (deactivated) destinations. Reported by Mark. [David]
•
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:
•
Invalid username or password. Please try again.
•
User does not exist or is disabled.
•
Malformed cookie.
•
Cookie hash mismatch from [IP address] (Hostname '[hostname]') for user '[username].'
•
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]
•
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]
•
Adding a server to a new destination before saving the destination or adding an action no longer causes an SQL error. [David]
•
CWmake clone now properly clones bricolage.conf, CWhttpd.conf, and all of the contents of conf/. [David]

VERSION 1.6.1 (2003-06-12)

New Features

•
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]
•
Added Traditional Chinese localization. [Kang-min Liu]

Bug Fixes

•
CWmake 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 CWlogin_avail() PostgreSQL function. [David]
•
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]
•
Creating the database during CWmake install no longer fails if someone is already connected to template1. [Scott]
•
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]
•
CWmake 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]
•
Burn-time exceptions are once again properly displayed in the error page. [David]
•
When the CWSTORY_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]
•
Fix issue that came up with the release of Mason 1.20. Reported by Jeff Steele. [David]
•
Fixed typo in Media Type manager that broke it. Reported by Lari Huttunen. [Scott]
•
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]
•
Various localization fixes. [Scott]
•
Fixed event logging for element fields. [David]
•
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]
•
Documented the support for passing CW%ARGS to CW$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]
•
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]
•
Fixed alerts so that alerts are once again sent to the members of groups. Reported by Paul Cory. [David]
•
Deleted alert types are no longer displayed in the Alert Type Manager. Thanks to Paul Cory for the spot! [David]
•
Added more intelligent code using HTTP headers instead of HTML to prevent browsers [IE] from caching pages. [David]
•
Bricolage no correctly sets the HTTP headers for the content language and character set. Thanks to Nathan Ollerenshaw for the spot! [David]
•
CWmake 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 CWtaring up those files. [David]
•
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>
•
The virtual FTP server no longer displays templates in subcategories of the current subcategory directory. Thanks to George Harrison for the spot! [David]
•
Output channel associations in story type and media type elements can now be deleted again. Thanks to Arthur Bergman for the spot! [David]
•
Added listing of emeritus developers. Otherwise Sam was simply listed as a patcher, which is hardly accurate. [David]
•
The element profile no longer displays deleted fields after clicking the Save and Stay button. [David]
•
The element profile now correctly issues a warning when a field is selected to be deleted. [David]
•
Made unlocalized JavaScript message localized. [David]

VERSION 1.6.0 (2003-04-29)

New Features

•
Added the CWSTORY_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]
•
Added bric_media_upload, a media file bulk import utility, into contrib. Thanks to Matt Vella for the contribution.
•
New help pages for the event log and the workflow trail. Thanks to Geoff Richards for the contribution.
•
Some unnecessary JavaScript was removed from the side navigation layer. Thanks to Eldar Kononov for the suggestion. [David]
•
Added keyword support for media assets to SOAP interface. [David]
•
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]
•
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

•
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 CWmake upgrade, too, thus ensuring that the Bricolage database user always has the appropriate permissions to access the database. [David]
•
Assets can once again be removed from workflow. [David]
•
The published version attribute is now set on templates when they're deployed. Thanks to Geoff Richards for the spot. [David]
•
The bricolage.conf and httpd.conf files are now created during CWmake rather than CWmake install so that CWmake test can take advantage of them. [David]
•
Bric::App::Session and Bric::App::Cache no longer CWchown their files and directories during CWmake test. [David]
•
Super Bulk Edit no longer joins lines together without a space, so that words should now be properly separated. [David]
•
Deleting a story or media subelement no longer results in an error. [David]
•
Help has been restored. [David]
•
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]
•
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]
•
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]
•
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]
•
Minor JavaScript fix for Opera users, thanks to Kevin White. [David]
•
The multi installation method now defaults the Bricolage Root Directory setting to /usr/share/bricolage instead of NONE. This seems to be less annoying to people. [David]
•
The inst/upgrade/1.5.1/asset_desk.pl script, which is run by CWmake upgrade, now correctly checks to see if the upgrade has already been performed. [David]
•
The inst/upgrade/1.5.1/webdav_mover.pl script, which is run by CWmake upgrade, now correctly checks for the existence of the correct record in the class table before inserting a new record. [David]
•
During CWmake 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]
•
Creation and installation of man pages can now be avoided during CWmake upgrade as well as during CWmake. [David]
•
Man pages will now be installed in the correct subdirectory of CW$BRICOLAGE_ROOT when using the multi install method. [David]
•
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]
•
The URI of new stories is once again properly formed when the stories are created. [David]
•
The list of events no longer displays attributes for events that have no attributes. [David]
•
Attempting to add more keywords to the root category no longer results in the error Cannot change the directory of the root category. [David]
•
In lists of objects a cell with a value of 0 (zero) will now be displayed. [David]
•
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]
•
CWmake distclean now properly deletes inst/Pg.sql. [David]

VERSION 1.5.2 (2003-04-02)

New Features

•
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]
•
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]
•
New Tuning sections have been added to Bric::DBA. [Mark]

Bug Fixes

•
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.
•
It is once again possible to delete elements when they are not associated with any story or media asset. [David]
•
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]
•
Bric::Config now does its best to find a workable httpd.conf file during CWmake test. [David]
•
Subclasses of Bric::Biz::Asset::Business::Media work again, and can have keywords associated with them, too. [David]
•
The Access Denied message is back for when someone tries to access an object to which they don't have adequate permission. [David]
•
Previews of assets that are not checked out work again. [David]
•
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]
•
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]
•
The root category now lists itself as being in the All Categories group only once in the category profile. [David]
•
Assets will no longer appear to randomly disappear from workflow. [David]
•
Added constraints to the media_type_member group that were inadvertently left out of 1.5.1. [David]
•
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

•
Lots of group-related optimizations. These should greatly improve the speed with which permissions are checked. [David]
•
Improved testing support with lots more tests. Many more remain to be written. See the new testing documentation in Bric::Hacker for details. [David]
•
Added ability to publish assets at a future time to Bric::SOAP::Workflow. Includes addition of new CW--publish-date option to bric_soap. [David]
•
Added WebDAV mover. [Joa~o Pedro]
•
FTP and File System movers now atomically copy files to their destination servers. [Joa~o Pedro]
•
Added All Desks group for managing the permission to access all desks. [David]
•
Refactored and optimized the code used in the CWlookup(), CWlist(), CWlist_ids(), and, where pertinent, CWhref() 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::Formatting
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 CWgrp_id parameter to be passed to the CWlist() 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]
•
Added object caching to the base class, and calls to it from all classes with a CWlookup() method to take advantage of it. The caching is only for the duration of a request for now, but can be expanded later. [David]
•
Updated INSTALL.MacOSX to reflect changes thanks to the new Mac OS X support included in libapreq 1.1. [David]
•
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]
•
Added help topic for new Super Bulk Edit feature. [David]
•
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). [Cla'udio Valente]
•
Localization of text images (buttons), Help, and JavaScript message added. These still need translation, however. [David]
•
Added Italian translation. [Marco Ghezzi]
•
Documented bric_dist_mon and bric_ftpd. [David]
•
Optimized and added tests for Bric::Util::Priv's CWget_acl() and CWget_acl_mtime() methods. These should make the looking up of a user's access control list faster. [David]
•
Added preview link to every element profile of a story profile. [Scott]
•
Pared down number of default User groups by eliminating those that relate to only a single admin menu item. [David]
•
Fixed code in Bric::Util::Grp where the CWhas_member() method would fail to look up an object with an ID of 0. [Joa~o Pedro]
•
Switched exceptions from home-grown to using Exception::Class. [Scott]
•
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]
•
Added category group association, including ability to cascade membership assignments into subcategories, to category profile. [Joa~o Pedro]
•
The installer will no longer try to load CPAN.pm if all modules are already installed. Thanks to Ilia Chipitsine for the prodding. [David]
•
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]
•
Switched POD testing from Pod::Checker to Test::Pod (using Pod::Simple). Fixed the POD errors it found, too. [David]
•
Test suite now runs all tests with warnings enabled. [David]
•
Modified CWGrp->get_objects() to use use the CWgrp_id parameter to CWlist(), 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.
•
Bric::App::Session now has an CWinstance() public class method to return the current CW%session hash. [Scott]
•
Subelements can now nest. That is, they can contain themselves. Not in a story, of course, but in the document model (element administration). [David]
•
Keywords can now be associated with media assets. [David]
•
Templates now have a CWpublished_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]
•
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

•
The publish attribute of desks can now be unset. Thanks to Sean Greathouse for the catch! [David]
•
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]
•
Fixed bug where expired cookie resulted in a Bric::App::Session error. [Joa~o Pedro]
•
A number of default groups where not properly added to the All Groups group. Now they are. [David]
•
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]
•
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]
•
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]
•
Fixed indexes for person objects so that they're case-insensitive. [David]
•
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]
•
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]
•
CWBric::Biz::Category->get_children now properly returns the children for the root category. Thanks to Sam for the spot! [David]
•
Removed CWBric::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]
•
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]
•
Changed the plural name of the Category Group class from Category Group to Category Groups. [David]
•
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]
•
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]
•
Fixed bug where all sources were being deactivated from their groups every time they were saved. [David]
•
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]
•
It is no longer possible to create a story type or media type element without a primary output channel. [David]
•
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]
•
The installer now collects Apache configuration data from any CWIncluded files, as well. Thanks to Alex Wheeler for the spot! [David]
•
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

•
Added unit testing framework based on Test::Class and executed by Test::Harness. Tests can be run after CWmake install by running CWmake test or CWmake devtest. The former runs tests that access database data but execute no CWINSERT, CWUPDATE, or CWDELETE 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 CWTEST_VERBOSE=1 to the make command. From now on, all tests will be expected to pass before changes are committed to the repository. [David]
•
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]
•
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]
•
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 CWmake devtest. [David]
•
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 CW__END__ symbol. Thus we'll be able to use the old tests to write the new tests. [David]
•
Added documentation on merging CVS branches to Bric::Hacker. [David]
•
Removed the URI Format and URI Case preferences and put them into Output Channel objects, instead. They are now output channel-specific. [David]
•
URI format and URI case settings now properly format the URIs of media objects, too. [David]
•
The slug can now be used in the Fixed URI Format. [David]
•
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]
•
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]
•
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]
•
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]
•
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, CWenabled, which will be put to use shortly. [David]
•
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]
•
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]
•
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]
•
Templates are now guaranteed to have unique file name/output channel combinations at the API and database levels. [David]
•
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]
•
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]
•
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]
•
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]
•
Bric::Util::Burner objects have a new property, CWmode. 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]
•
The documentation in the Bric::Util::Burner class has been updated and improved. [David]
•
Arguments can now be passed to the CWdisplay_pages(), CWdisplay_element(), and CWchain_next() methods of the CW$burner object in Mason templates. These arguments are passed to the templates that are executed just as they are if you'd called CW$m->comp, meaning that you can access their values via the CW%ARGS global and in CW<%args> blocks in Mason templates. [David]
•
Changed the CWdisplay_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]
•
Added the methods CWprev_page_file(), CWprev_page_uri(), CWnext_page_file(), and CWnext_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 CW*_uri() methods, appropriate to the currently-burning Output Channel. Also updated the Bric::Templates and Bric::AdvTemplates documents to reflect these additions. [David]
•
Added CWsource__id to list of criteria by which stories can be searched via the Bric::Biz::Asset::Business::Story CWlist() and CWlist_ids() methods. [David]
•
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]
•
Added a new style for the template profile, so that template code is now displayed in its textarea box in a monospaced font. [David]
•
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]
•
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]
•
Changed Bric::Util::Burner to set CWpublish_status after publishing, rather than before. Thus it is only set if the publish is successful, while at the same time templates can check CWpublish_status to determine if a story is being published for the first time. [David]
•
Added CWget_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 CWdisplay_pages() is being used to output pages. [David]
•
Optimized Bric::Biz::Category to get a list of Group IDs for each category as it is selected from the database. This prevents the CWget_grp_ids() method from having to query the database, which was happening for every category object for which permissions are checked. [Mark & David]
•
Added event logging for keywords. [David]
•
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]
•
Added support for the association between business assets and output channels to the SOAP interface. [David]
•
Removed IO::String dependence. [Scott]
•
Added a FAQ. [Scott]
•
Added a preference for naming the Bricolage instance. [Scott]
•
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]
•
Added the methods CWpage_file() and CWpage_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 CWpage_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]
•
Ported to HTML::Mason versions 1.15 and higher. [Scott]
•
Added CWmake uninstall support to installation system. [Scott]
•
Added CWpage_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]
•
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

•
Bric::SAOP::Handler now properly logs fatal errors that are strings rather than exceptions. [David]
•
Updated Bric::DBA documentation to better reflect PostgreSQL standards. [Neil Conway]
•
Minor documentation correction in Bric::Util::Grp::Parts::Member. [Mark]
•
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]
•
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]
•
Fixed bug where an empty or non-numeric <size> element in an imported media object would cause an SQL error. [Sam]
•
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]
•
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]
•
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]
•
Reverting a media asset now properly reverts the media file itself, as well. [David]
•
The Last field is now properly highlighted as the default order field when displaying a list of contributors in the Contributor Manager. [David]
•
Contributor Association now includes search options and only currently-associated contributors are displayed before searching. [David]
•
The ability to select different fields by which to sort a list of objects now works again. [David]
•
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]
•
Fixed reordering code for subelements. The select list for subelements should now always have an appropriate value. [David]
•
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]
•
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]
•
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]
•
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]
•
Modified installation CWCREATE DATABASE command to always create the database with the encoding set to UTF-8 (UNICODE). [David]
•
Added instructions for installing readline library to README.MacOSX. [David]
•
Fixed some inaccurate image sizes. [Geoff Richards]
•
Added missing CWuri parameter to the possible search options in CWBric::SOAP::Category->list_ids. [David]

VERSION 1.4.5 (2002-11-13)

Changes

•
Categories are now displayed by their URIs instead of their names wherever possible. [David]
•
Added Order and OrderDirection parameters to CWBric::Util::Grp->list in order to be able to specify a different column and sort order for getting a list of groups. [David]
•
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

•
Fixed error message generated from Bric::SOAP::Template->update() to properly display the category name, rather than ARRAY(0). [Sam]
•
The Bricolage SOAP interface will no longer allow the creation of stories and media with duplicate URIs. [Sam]
•
Fixed circular dependency issues when Bricolage modules are used in the CWPERL_LOADER bricolage.conf directive. [David]
•
Added the root category to the All Categories group. It should have been in that group all along. [David]
•
Documentation for CWBric::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]
•
Added printing of a message regarding the filenames being processed by bric_soap's CWcreate and CWupdate commands when its CW--verbose option is set. [David]
•
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]
•
Display of the source was missing from the view Story and Media profiles, but no longer. [David]
•
The correct source is now displayed in the Story and Media edit profiles. [David]
•
An attempt to install Bricolage to use an existing PostgreSQL user no longer causes an installation error when you decline drop the user. [David]
•
The burner no longer fails when it publishes an asset that's not on a desk. [David]
•
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]
•
Added support for the missing CWpublish_status parameter to CWBric::Biz::Asset::Business::Media->list. [David]
•
Setting permissions on the assets in a category works again. [David]
•
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]
•
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]
•
Permissions are now properly checked for category and workflow settings when new stories, media, and template assets are created. [David]
•
New templates are now active by default. [David]
•
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]
•
Added missing debugging statement to Bric::Util::DBI. Thanks to Mark for the spot. [David]
•
The SOAP interface now properly logs events for its activities. [David]
•
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]
•
When publishing a media asset, its name will not be properly added to the UI message, without causing an error. [Petar Bojkov]
•
Fixed exception class name in Handler.pm. [Scott]
•
Fixed installation system bug caused by inst/conf.pl loading Bric::Config during make install. Thanks to Louis Moore for the report. [Sam]
•
Added missing CWlist_ids() method to Bric::Biz::Category. [David]

VERSION 1.4.4 (2002-10-27)

Bug Fixes

•
Empty listManager lists no longer have a gap in them. [David]
•
Made the table around the formBuilder radio buttons prettier. [David]
•
Fixed numbering of sections in Media profile so that the numbers don't skip. [David]
•
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]
•
Improved error messages thrown in exceptions in Bric::Util::Trans::FTP. [David]
•
Removed code and documentation for PostgreSQL 7.3 compatibility. With the release of 7.3b2, it's no longer needed. [David]
•
Fixed make clone to properly include database contents in clone distribution. [Sam]
•
Added CW<meta http-equiv="Content-Type"> tag to the CW<head> to header.mc so that the browser knows to send text back to Bricolage in the expected character set. [Mark]
•
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]
•
Fixed bug when reverting stories and media with no associated contributors. [Mark]
•
Check In and Publish now works again for Media assets. Thanks to Matt Vella for the spot. [David]
•
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]
•
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]
•
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]
•
Fixed a bug in Bric::Util::Class where classes couldn't be looked up by package name. This affected the Access Denied page. [David]
•
Made Bric::Util::Burner::Mason a little smarter handling exceptions. [David]
•
Fixed bug where Bric::SOAP::Category would fail to import ad strings. [David]
•
Fixed bug in CWBric::Util::Grp->has_member where an already-added member wasn't always found. [Mark]
•
Conflicting URI messages for media assets no longer suggest changing the value of the slug, since media assets have no slug. [David]
•
The friendly messages confirming publishes are back. [David]
•
Fixed bug where selecting a large number of list options in the story profile would cause an SQL error. [Matt]
•
Fixed bug where Bric::SOAP would accept story element types for media and vice versa. Thanks to Evan Prodromou for the spot. [Sam]
•
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]
•
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

•
Fixed inconsistency between container element methods and their convenience accessors in Bric::Biz::Asset::Business. Thanks to Philip Fibiger for the spot. [David]
•
Assets can once again be recalled from the library and put on a desk. [David]
•
The CWget_all_keywords() method of Bric::Biz::Asset::Business works again. [David]

VERSION 1.4.2 (2002-09-27)

Bug Fixes

•
Can once again check out multiple assets at once. Thanks to Andrew Baio for the spot. [David]
•
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]
•
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]
•
When templates are deployed, they now get a Template removed from Workflow event logged. [David]
•
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

•
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]
•
Removed documentation for installing mod_proxy with Apache. [David]
•
Improved documentation for upgrading from older versions of Bricolage that were not installed by CWmake install. Thanks to Andrew Baio for helping to identify the problems. [David]
•
Added CWuse Bric::Util::Grp::Keyword; back into Bric::Biz::Keyword. This prevents some upgraded Bricolage installations from breaking. [David]
•
Added Net::FTPServer and Net::SFTP to the list of optional modules. [David]
•
Fixed some SQL errors uncovered by the release of PostgreSQL 7.3b1. [David]
•
Added code and documentation for compatibility with PostgreSQL 7.3. [David]
•
Media assets can now be distributed to more than one output channel at a time. [David]
•
Files are now distributed on a per-output channel basis, to ensure that the proper file is distributed to the proper destinations. [David]
•
Assets are now properly removed from workflow when they're deactivated (deleted in the UI). [David]
•
Template syntax is now properly checked when using the Checkin/Deploy button. [Joa~o Pedro]
•
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]
•
Deleted output channels no longer show up in the New Template output channel select list. Thanks to Daniel Fisher for the spot. [David]
•
The root category (/) no longer returns itself as its own parent. [David]
•
Assets not in workflow are now properly logged as being checked out when someone checks them out. [David]
•
The Or Pick a Type menus in the Group manager, the Contributor manager, and the Element manager all work again. [David]
•
Changing category names now updates the name of the category asset group object, which appears in the user group permissions page. [David]
•
Hitting the enter key after filling in a search field now properly submits the search as if the Search button had been clicked. [David]
•
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]
•
Changed value of autopopulated media asset data fields to an empty string when the value returned by the autopopulation method is CWundef. [David]
•
Fixed bug where autopopulated media asset data fields weren't properly autopopulated. [David]
•
Fixed problem with category upgrade script failing on category data created with 1.3.2. [Sam]
•
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]
•
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]
•
Slightly improved handling of assets that have forgotten where they are. [David]
•
Checked-out templates are now displayed only once (instead of twice) in the Find Templates manager. [David]
•
Added CWget_new_objs() method to Bric::Util::Coll so that Bric::Util::Grp's CWhas_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]
•
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]
•
Added upgrade script inst/upgrade/1.4.1/clean_desks.pl to clean up existing duplicate listings of assets on desks. [David]
•
Removed the CWcheckin() method from Bric::Biz::Asset::Formatting and Bric::Biz::Asset::Business and put it into Bric::Biz::Asset, instead, since it's exactly the same for all assets. [David]
•
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]
•
Fixed misnamed database constraint. [David]
•
Templates can once again be retrieved from the library and checked out for revising. [David]
•
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]
•
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

•
Fetching objects from Bric::Biz::Asset::Business::Media has been optimized for greater speed. [Joa~o Pedro]
•
PostgreSQL NOTICE messages are now suppressed during installation. Instead, a series of dots will be displayed to indicate progress loading the database. [David]
•
Added README.MacOSX. [David]
•
You can now pass a date format string argument to the CWget_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

•
The Element Type manager now displays properly again without errors. [David]
•
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]
•
Media profile now display the proper category in the Category select list. [David]
•
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]
•
Some media asset events weren't getting logged properly Now they are. [David]
•
Database transactions are now properly maintained when publishing assets. Everything was working, but DBI CWAutoCommit was getting turned on, and this likely slowed some things down a bit. [David]
•
Assets can once again be found via the Find pages and recalled into a workflow without error. [David]
•
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]
•
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]
•
All Bricolage .pod files are now installed and converted to CWman pages along with all of the .pm files. [David]
•
Corrected a bunch of spelling errors in this file. [David]
•
Calling CWget_data() on a container element in templates (or elsewhere, for that matter) now properly ignores container subelements. Likewise for CWget_container(), which how properly ignores data subelements. [David]
•
All of the .pl and .tst files in lib/ no longer clutter up the distribution created by CWmake dist. [David]
•
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]
•
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]
•
The install process will no longer install an incompatible version of HTML::Mason (>1.09). [Sam]
•
The bric_dist_mon program works again. [David]

VERSION 1.3.3 (2002-08-24)

New Features

•
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]
•
Added support for search Media by category and file name through the SOAP interface and standard API. [Sam]
•
Added new CW--save-cookie-file and CW--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]
•
Added new CW--chunks option to the bric_soap tool to avoid problems with timeouts on large workloads. Currently only supports the workflow commands (CWpublish, CWdeploy, CWcheckin, CWcheckout, CWmove), but it will be expanded to other long-running commands in the future. [Sam]
•
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]
•
Revised category implementation to use explicit CWuri and CWparent_id fields rather than relying on the Bric::Util::Grp system. This improves performance tremendously for larger numbers of categories. [Jeff Pinyan]
•
Added new CW--continue-on-errors option to bric_soap to prevent non-fatal errors from ending the process. [Sam]
•
Beautified the list paging interface. [David]
•
Added new Media Type manager. [Scott]
•
Added list reverse feature. [Scott]
•
Added SFTP mover. [Scott]
•
Add support for Apache-SSL. This required a change to the context of the bricolage.conf CWENABLE_SSL directive to indicate the type of SSL support: none, apache_ssl, or mod_ssl. [Michael Robinton]
•
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]
•
Added bricolage.conf configuration directive to force the start up process to always write out a CI$TEMP_DIR/bricolage/bric_httpd.conf as an httpd.conf include file. [Michael Robinton]
•
Moved SSL key and certificate configuration from global httpd.conf settings to per virtual host via bricolage.conf configuration directives. [Michael Robinton]
•
Added a CWbricolage.conf directive to force the user to always use SSL. [Michael Robinton]
•
Added CWget_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 CW$element objects in templates, thus simplifying things for template developers. [David]
•
Categories now default to sorting by URI, and the URI is the searchable field, rather than name. [David]
•
Vastly improved the speed at which categories can be imported via SOAP. [David]
•
Makefile now confirms location of Apache and PostgreSQL to allow for systems with multiple versions of each available. [Sam]
•
Added make clone command to the installation system to create distributions based on existing Bricolage systems. [Sam]
•
Added bricolage.conf directive to enable/disable the browser toolbar for debugging and development. Documented in Bric::Hacker. [Michael Robinton]
•
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]
•
Added new bric_apachectl command single. This command will start Bricolage in single-process mode. This mode is principally useful for debugging. [Michael Robinton]
•
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]
•
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

•
Added constraint to the group table to keep a group from having itself as a parent. Thanks to Joa~o Pedro Gonc,alves for the patch. [David]
•
Fixed bug in side navigation where an HTML table was opened but not closed. [Charles Albrecht]
•
Fixed bug where installation system would chown all of the chosen TEMP_DIR to SYS_USER. Thanks to Dave Rolsky for the report. [Sam]
•
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]
•
Fixed remote previews to redirect to a better URL. [Mark]
•
Fixed a bug where trying to create a story through the SOAP interface containing a contributor with an empty middle name would fail. [Sam]
•
Changed strftime instances of '%G' to '%Y' in URI preference, as this seems to be more portable. [David]
•
Fixed bug that was preventing 'make upgrade' from running database upgrade scripts. [Sam]
•
Fixed broken Log link on Media Search results screen. [Sam]
•
Fixed bug where deleted output channels were showing up in list of available output channels in the element profile. [David]
•
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]
•
The CWPREVIEW_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]
•
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]
•
Fixed cover date editing to repopulate correctly on the Story profile screens. [Matt]
•
Fixed bug where previewing a story assigned to multiple categories would preview to a random category. Now the primary category is always chosen. [Sam]
•
Fixed display and editing of dates more than one year in the past. [Matt]
•
Fixed bug where setting CHAR_SET to UTF-8 in bricolage.conf would result in blank output. [Sam]
•
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]
•
Fixed bug where when CWSYS_USER and/or CWSYS_GROUP wasn't in bricolage.conf, Bric::Config would use the username nobody instead of the UID for the user nobody. [David]
•
Adding a note to a story that has not yet been saved no longer causes an error. [David]
•
Fixed make dist to work on Mac OS/X and FreeBSD. [Sam]
•
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]
•
Fixed installer to not require unneeded Apache modules (mod_proxy and mod_rewrite). [Sam]
•
Fixed installer to first ask whether SSL support is desired before asking for a specific SSL module. [Sam]
•
Fixed documentation bug in Bric::Admin concerning PostgreSQL paths. Thanks to Vicki Brown for the catch. [Sam]
•
Fixed installation system to fail if there are errors importing the database. Also added test for missing or empty bricolage.sql. [Sam]
•
Fixed installation system to support optional modules and not force users to install them. [Sam]
•
Fixed bug that prevented the contents of fields to be updated through Bric::SOAP. [Sam]
•
Fixed Checkin and Publish button to only appear if the user has permissions to publish. [Matt]
•
Fixed bug where text pasted into Bulk Edit textarea box was getting words smooshed together. Thanks to Rachel Murray for the spot. [David]
•
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]
•
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]
•
Added check for Category Directory string to make sure that no non-URL characters are added. [Matt Vella]
•
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]
•
Deleting a a contributor immediately after adding one no longer causes all of the contributors to be deleted on check-in. [David]
•
Contributors are now properly reverted when stories and media are reverted. [David]

VERSION 1.3.2 (2002-06-09)

New Features

•
Added --chunks option to bric_republish to publish stories in batches. This is useful to avoid timing out on long runs. [Sam]
•
Added [Check In / Publish] button to Story Profile to checkin and publish in one step. [Matt]
•
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]
•
Moved repeated publish and preview functionality into Bric::Util::Burner. Updated Mason code and Bric::SOAP::Workflow accordingly. [Matt]
•
Added CWDBI_PROFILE bricolage.conf option and CWbric_dbprof script to allow profiling of Bricolage database performance. [Sam]
•
Added CWbric_apachectl debug command to run Bricolage under the Perl debugger using Apache::DB. [Sam]
•
Added checks to make sure Story and Media URIs are unique within the system. [Matt]
•
Added search paging preference to break search results into multiple pages. [Adam]
•
Added support for running Bricolage under Devel::Profiler with the new PROFILE configuration option. [Sam]
•
Added support for Apache::SizeLimit to keep Apache process size under control. [Adam]
•
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

•
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 Gonc,alves for the spot. [David]
•
Fixed bug in Bric::SOAP::Element where deleting an element or field could cause SQL errors due to overflowing the name field. [Sam]
•
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]
•
Fixed bug in Bric::SOAP::Element where updating an element could cause Stories using that element to lose track of their field data. [Sam]
•
Fixed bug in Bric::Util::Burner::Template where <tmpl_include>s caused syntax errors. [Sam]
•
The Bric::Biz::Category class method get_attr() now returns attributes for category ID 0 as well as all other categories. [Joa~o Pedro Gonc,alves]
•
Fixed bug in DBI_DEBUG and DBI_CALL_TRACE options where non-prepared queries (row_aref(), all_aref(), etc.) were not being logged. [Sam]
•
Fixed bug in Bric::Dist::Resource that was causing publish to run very slowly by executing a bad database query. [Sam]
•
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]
•
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]
•
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]
•
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]
•
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]
•
Fixed bug where attribute metadata wasn't getting deleted when it was supposed to. [Joa~o Pedro Gonc,alves]
•
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]
•
Fixed bug in navigation bar HTML that caused the bar to disappear on certain browsers. [Rachel Murray]
•
Fixed bug in Bric::SOAP where Bricolage exceptions resulted in an uninformative Application error message. Now the full exception message is displayed. [Sam]
•
Fixed installation to work under Debian Linux 3.0 (testing). Thanks to Mark Jaroski for a helpful patch. [Sam]
•
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]
•
Fixed bug where dumber browsers would submit a new template without any Element selected. Thanks to Michael Robinton for reporting the bug. [David]
•
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]
•
An overhaul of the burn system had regressed the Output Channel preview functionality. I've put it back now. [Mark]
•
Fixed button JavaScript to work correctly in Mozilla. [Matt]
•
Fixed bug in HTML::Template burner that prevented <tmpl_include>s from working in some cases. [Sam]
•
Numerous spelling errors were fixed by Scott Lanning. Thanks!
•
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]
•
Made the parent category field in the Category Profile a required field. [Mark]
•
Fix Bric::Util::FTP::FileHandle to work with a modified date-formatting preference. [Matt]
•
Fixed section numbering in the Contributor Type profile. [Scott Lanning]

VERSION 1.3.1 (2002-04-03)

New Features

•
Bricolage SOAP interface fully implemented. The command-line clients bric_soap, bric_dev_sync and bric_republish are all complete. [Sam]
•
Bricolage now comes with a configure script and a Makefile for easier installation and configuration. [Mark Jaroski]
•
Removed MD5 Perl module requirement by requiring Apache::Session 1.54 or higher. [David]
•
Added new FTP distribution move method. Now you can distribute files either via a file system copy or via FTP. [David]
•
Added a preference to change the way URIs are formatted. [Adam]
•
Added a URI case preference to force URIs to lowercase, uppercase, or allow mixed case URIs. [Adam]
•
Categories are now all listed and sorted by URI in select lists. [Sam]
•
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

•
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]
•
Fixed problem where deleting an asset would fail with the cannot check-in non checked-out version error. [Sam]
•
Fixed bug in HTML::Template burner when an element name had more than one space in it. [Sam]
•
Fixed bug in database that prevented element names over 32 characters from working properly. [Sam]
•
Fixed bug where trying to preview a story without a Preview destination and PREVIEW_LOCAL off would result in a Mason error. [Sam]
•
Fixed bug in Bric::SOAP::Story->create() where data element order was getting lost. Thanks to Mike Slattery for the spot. [Sam]
•
Fixed bug in HTML::Template burner where templates in non-root categories could not be found. Thanks to Marlon Bermas for the spot. [Sam]
•
Fixed Bric::Util::FTP::FileHandle to create new revisions on PUT. [Sam]
•
Deleting a contributor will no longer break stories with which the contributor is associated. Thanks to Rachel Murray for the spot. [David]
•
Invalid configuration directives in bricolage.conf will now be caught and keep Bricolage from starting. [Sam]
•
The view button in the element profile now works correctly. Thanks to Joa~o Pedro Gonc,alves for the spot. [David]
•
Changed all strftime instances of '%G' to '%Y', as this seems to be more portable. [David]
•
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 Gonc,alves]
•
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]
•
Fixed a few poorly-named time zones in the time zone preference. More still needs to be done here, actually. [David]
•
Implemented the chk_syntax() method in Bric::Util::Burner::Template. [Sam]

VERSION 1.3.0 (2002-02-10)

New Features

•
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

•
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]
•
Fixed problem where deleting an asset would fail with the cannot check-in non checked-out version error. [Sam]
•
Fixed bug in HTML::Template burner when an element name had more than one space in it. [Sam]
•
Fixed bug in database that prevented element names over 32 characters from working properly. [Sam]
•
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

•
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

•
Some misspellings were corrected in Bric::Admin. Thanks to Ask Bjoern Hansen for the spot. [David]
•
Fixed broken Return buttons on related media and related story pages. [David]
•
Fixed bug where assets weren't activated when they were created and then checked in without clicking the Save button. [David]
•
Fixed bug where a fixed story's slug was getting used in its URI. [David]
•
Fixed broken image autopopulation fields (compression, height, width, etc.) [David]
•
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]
•
Fixed bug where Categories with the same directory name could not be created. Thanks to Andrew Baio for the spot. [David]
•
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]
•
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]
•
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]
•
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]
•
Fixed bug where the wrong story might be previewed when clicking the title of a story in My Workspace or on a desk. [David]
•
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]
•
Eliminated Template compile failed errors for templates with <%init> sections. [David]
•
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]
•
Eliminated Use of uninitialized value in bitwise or (|) warnings when checking permissions. Thanks to Sam Tregar for the spot. [David]
•
Custom fields in elements and contributor types now remember their size setting. Thanks to Sam Tregar for the spot. [David]
•
The Element select list on the new Template profile no longer lists media elements, since media assets don't use templates. [David]
•
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]
•
Fixed typo in Bric::Hacker spotted by Axel Beckert. [Sam]
•
The CREATE permission works properly now. Thanks to Rachel Murray for the spot. [David]

VERSION 1.2.1 (2002-02-25)

New Features

•
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]
•
Added support for Mozilla (and there was much rejoicing!). [David]
•
Changed password for the default admin user to change me now! [David]
•
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.
•
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]
•
Documented PERL_LOADER directive in Bric::AdvTemplates. [David]

Bug Fixes

•
Turned off the PREVIEW_MASON configuration directive in bricolage.conf. It should be off by default. [David]
•
Deleted Output Channels now properly don't show up in the Output Channel manager again. Thanks to Sara for the spot! [David]
•
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]
•
Fixed bug where templates often couldn't be found by the Mason burner if the output channel had a post_path. [David]
•
Fixed bug where templates often couldn't be found by the HTML::Template burner if the output channel had a post_path. [Sam]
•
Fixed some problems with the sideNav menus under Netscape. [David]
•
Fixed broken Preview button in Read-only story profile and in related story elements. [Matt Vella]
•
Updated debugging code to accommodate new syntax in Cache::Cache. Thanks to Sam Tregar for the spot. [David]
•
Fixed problem with Element names containing non-alphanumeric characters. [Sam]
•
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]
•
Fixed bulk edit functionality for Media assets. Thanks to Sam for the spot. [David]
•
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.
•
Removed quotation marks from DEF_MEDIA_TYPE setting in bricolage.conf. Thanks to Darren Graves for the spot. [David]
•
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]
•
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]
•
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]
•
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]
•
The bric_clean_tmp script has been changed to avoid deleting the Bricolage cache file. [Sam]
•
Fixed typo that broke Bric::Dist::Client. [Mike Slattery]
•
Fixed multiple select custom fields for Elements and Contributors. Thanks to Mike Slattery for the spot. [David]
•
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]
•
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]
•
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]
•
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]
•
Fixed the spelling of contributor in several spots. [Andrew Baio]
•
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

•
Added Context-sensitive, online help. [Sam]
•
Added separate interface for editing templates (via FTP). [Sam]
•
Added the ability to use HTML::Template Templates. [Sam]
•
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]
•
Added link to Event log to Find Story, Find Template, and Find Media screens. [David]
•
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]
•
Allow only one template with a given name for a given category, element, burner and output channel. [Sam]
•
Added a Maintainer section to the About page. [David]
•
Updated About page to mimic the layout of the help pages. [David]

Bug Fixes

•
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]
•
Fixed a bug where Mason component calls failed in previews when the PREVIEW_MASON directive was enabled. [David]
•
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]
•
Fixed a couple of buttons to be proper case rather than upper case. [David]
•
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]
•
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]
•
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

•
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]
•
Added DEFAULT_FILENAME and DEFAULT_FILE_EXT configuration directives to set default values on the File Name and File Extension Output Channel properties. [David]
•
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]
•
When errors occur while previewing stories, the leftNav is now turned off. [David]
•
Browser buttons and menus are now disabled. [David]
•
Added ability to set permissions on assets based on the categories they're in. [David]
•
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]
•
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]
•
Added new program, bric_clean_tmp, that can be used in a cron job to delete stale temporary files. [Sam]
•
Added an About page, linked from the logo graphic, that explains the name Bricolage and offers the license and credits. [David]
•
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]
•
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, CW$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]
•
Fixed bug where data fields deleted from Elements were deleting them from existing stories, too. [David]
•
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]
•
Removed all file system location dependencies for the operation of Bricolage. Bricolage will still assume that everything's in /usr/share/bricolage, but any location is fine as long as the BRICOLAGE_ROOT environment variable is set to the proper location. [David]
•
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]
•
Removed debugging information from URLs for when debugging is turned off which should be always in production code (e.g., releases). [David]
•
Elements are now displayed with their display names rather than their attribute names. Thanks to Sam Tregar for the spot. [David]
•
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]
•
Fixed a bug where data fields sometimes were not properly retrieved from the database in Bric::Biz::AssetType. [David]
•
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.
•
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]
•
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)

•
Initial public release.

AUTHOR

David Wheeler <david@wheeler.net>

SEE ALSO

Bric