Just a Theory

Trans rights are human rights

Posts about Bricolage

New Bricolage Website Beta

After a couple of weeks of hard work, with lots of assistance from Marshall Roch, I’m just about ready to launch the new Bricolage Website. Thanks to hardware and hosting provided by NetStumbler.com, we now have a fully functioning Bricolage installation and Web server for the bricolage.cc domain.

The new site will launch just before my OSCON talk on Wednesday. In addition to having the great Web standards-compliant layout (thanks Marshall!) and a decent amount of extra content, the templates for the site will be made available for download, too. The templates will make a great “best practices” example, both for bricoleurs and Bricolage evaluators. I think they nicely show off the flexibility of the Bricolage CMS platform.

So do you want to see the beta? I’m making it available only to my fellow Bricolage developers and to you, the readers of my blog. Just point your browser at www.bricolage.cc, and then just s/www/beta/ to see the new site. I’m not providing a direct link to it here because it’s going to go away on Wednesday and I don’t want to get any 404s. Feel free to send me feedback on the new site–anything about it: design, layout, XHTML, CSS, etc.

Looking for the comments? Try the old layout.

Bricolage 1.8.1 Released

This maintenance release address a number of issues in Bricolage 1.8.0. Here are the highlights:

Improvements

  • More complete Traditional Chinese and Simplified Chinese localizations. Also, the Mandarin localization now simply inherits from the Traditional Chinese localization.

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

  • 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.

  • The installer is now a bit smarter in how it handles loading the log_config (or config_log, as the case may be) module.

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

  • The “New Alias” search interface now displays thumbnails when searching for media documents to alias and the USE_THUMBNAILS bricolage.conf directive is enabled.

  • Aliases can now be made to documents within the same site.

  • 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.

  • Added move() method to the virtual FTP interface. This means that to deploy a template, rather than having to rename it locally to append “.deploy” one can simply move in FTP to its new name with “.deploy” on appended to the new name.

  • 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.

  • Burner notes now persist for all sub burns (triggered by publish_another() and preview_another() in a single burn.

  • 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
  • Alert rules are now evaluated within a safe compartment (using Safe.pm) to prevent security exploits.

  • 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.

Bug Fixes

  • Eliminated “Bareword “ENABLE_HTMLAREA” not allowed while “strict subs” in use” warning that prevented startup for some installations.

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

  • 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.

  • Aliases of Image, Audio, or Video media documents no longer remain stuck on desks.

  • Related media and story subelements of media documents now work properly.

  • Calls to preview_another() in Bric::Util::Burner will now use any templates in the current user’s sandbox and properly burn them to the preview root rather than to the staging root used for publishing.

  • Contributor fields for roles other than the default role now properly store and retain their values.

  • 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.

  • 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!

For a complete list of the changes, see the release notes and changes list. For the complete history of ongoing changes in Bricolage, see Bric::Changes.

Download Bricolage 1.8.1 now from the SourceForge download page or from the Kineticode download page

About Bricolage

Bricolage is a full-featured, enterprise-class content management and publishing system. It offers a browser-based interface for ease-of use, a full-fledged templating system with complete HTML::Mason, HTML::Template, and Template Toolkit support for flexibility, and many other features. It operates in an Apache/mod_perl environment and uses the PostgreSQL RDBMS for its repository. A comprehensive, actively-developed open source CMS, Bricolage was hailed as “Most Impressive” in 2002 by eWeek.

Enjoy!

–The Bricolage Team

Originally published on use Perl;

Bricolage 1.8.1 Released

The Bricolage development team is pleased to announce the release of Bricolage 1.8.1. This maintenance release address a number of issues in Bricolage 1.8.0. Here are the highlights:

Improvements

  • More complete Traditional Chinese and Simplified Chinese localizations. Also, the Mandarin localization now simply inherits from the Traditional Chinese localization.
  • make clone now copies the lib directory and all of the bin scripts from the target to the clone, rather than from the sources. This allows any changes that have been made to scripts and classes to be properly cloned.
  • 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.
  • The installer is now a bit smarter in how it handles loading the log_config (or config_log, as the case may be) module.
  • Added language-specific style sheets. This is especially useful for right-to-left languages or for languages that require special fonts.
  • The “New Alias” search interface now displays thumbnails when searching for media documents to alias and the USE_THUMBNAILS bricolage.conf directive is enabled.
  • Aliases can now be made to documents within the same site.
  • 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.
  • Added move() method to the virtual FTP interface. This means that to deploy a template, rather than having to rename it locally to append “.deploy” one can simply move in FTP to its new name with “.deploy” on appended to the new name.
  • 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.
  • Burner notes now persist for all sub burns (triggered by publish_another() and preview_another() in a single burn.
  • 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
  • Alert rules are now evaluated within a safe compartment (using Safe.pm) to prevent security exploits.
  • 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.

Bug Fixes

  • Eliminated “Bareword “ENABLE_HTMLAREA” not allowed while “strict subs” in use” warning that prevented startup for some installations.
  • Changes made to user or contributor contacts without changing any other part of the user or contributor object are now properly saved.
  • 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.
  • Aliases of Image, Audio, or Video media documents no longer remain stuck on desks.
  • Related media and story subelements of media documents now work properly.
  • Calls to preview_another() in Bric::Util::Burner will now use any templates in the current user’s sandbox and properly burn them to the preview root rather than to the staging root used for publishing.
  • Contributor fields for roles other than the default role now properly store and retain their values.
  • 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.
  • 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!

For a complete list of the changes, see the release notes and changes list. For the complete history of ongoing changes in Bricolage, see Bric::Changes.

Download Bricolage 1.8.1 now from the SourceForge download page or from the Kineticode download page

About Bricolage

Bricolage is a full-featured, enterprise-class content management and publishing system. It offers a browser-based interface for ease-of use, a full-fledged templating system with complete HTML::Mason, HTML::Template, and Template Toolkit support for flexibility, and many other features. It operates in an Apache/mod_perl environment and uses the PostgreSQL RDBMS for its repository. A comprehensive, actively-developed open source CMS, Bricolage was hailed as “Most Impressive” in 2002 by eWeek.

Enjoy!

–The Bricolage Team

Looking for the comments? Try the old layout.

Fun with Module::Build Argument Processing

I’ve spend the better part of the last two days working on a custom subclass of Module::Build to build Bricolage 2.0. It’s going to be a lot nicer than the nasty custom Makefile that Bricolage 1.x uses. The reason I’m creating a custom subclass of Module::Build is to be able to do a lot of the extra stuff that building Bricolage requires. Such as:

  • Copying configuration files from conf/ into blib
  • Copying configuration files from conf/ into t for testing
  • Copying configuration files from comp/ into blib
  • Modifying Bricolage::Util::Config to contain a hard-coded reference to the location of bricolage.conf once Bricolage has been installed
  • Modifying the contents of bricolage.conf to reflect build options (forthcoming)
  • Modifying the contents of httpd.conf to reflect build options (forthcoming)

I’m sure there will be more as Bricolage develops (such as building the database!), but this is enough for now. I’ve also been hacking on Module::Build itself to add features I want. For example, I want users to be able to pass options to Build.PL when they call it, so that it can do silent installs. As it is, you can pass options now, but Module::Build’s option processing lacks flexibility. For example, you can pass options like this:

perl Build.PL opt1=val1 opt2=val2

And Module::Build will store the options in a hash like this:

{ "opt1" => "val1",
  "opt2" => "val2" }

It understands options that use --, too; This invocation

perl Build.PL --opt1 val1 --opt2 val2

produces the same hash. But be careful how you specify arguments! For example, Modul::Build doesn’t understand unary options or options that use both -- and =>! To whit, this invocation

perl Build.PL --loud --opt1=val1 --opt2=val2 --foobar

Yields a hash like this:

{ "loud" => "--opt1=val1",
  "opt2=val2" => "--foobar" }

Certainly not what I would expect! So to get great flexibility, I sent a patch to the Module::Build mail list adding a new parameter to new(): get_options. This is an array reference of options that will be passed to Getopt::Long::GetOptions() before Module::Build parses arguments. It stores the results in the same hash as Module::Build normally does, and options not specified in get_options will be processed by Module::Build just as before. But it gives a whole lot more control over what gets grabbed. For example, if I were to try to get that last example to do what I want, all I’d need to do is pass in the appropriate Getopt::Long specs:

my $build = Module::Build->new(
    module_name => "Spangly",
    get_options => [ "loud+", "opt1=s", "opt2=s", "foobar" ],
);

Now, the hash yielded is:

{ "loud"   => "1",
  "opt1"   => "val1",
  "opt2"   => "val2",
  "foobar" => "1" }

Isn’t that nicer? And because the full suite of Getopt::Long specification is supported, you can get even fancier:

my $loud = 0;
my $build = Module::Build->new(
    module_name => "Spangly",
    get_options => [ "loud+" => \$loud, "foobar!" ],
);

Now this invocation:

perl Build.PL --loud --loud --nofoobar

…sets the $loudscalar to 2, while the args hash is simply { "foobar" => "0" }. Cool, eh?

Now I’ve just been discussing the patch with Dave Rolsky on the mail list, and he argues that, while this is a good idea in principal, he’d rather see a data-structure based argument list rather than Getopt::Long’s magical strings. Perhaps Module::Build will end up “Borging” some of the ideas from Getopt::Simple. But either way, I think that better argument processing is on the way for Module::Build.

Looking for the comments? Try the old layout.

Bricolage 2.0 UML Diagram

I’ve just finished updating the UML diagram for the design of Bricolage 2.0. It’s not completely comprehensive, mainly because the lines would start criss-crossing all over the place and no one would never be able to make any sense of it, including me! Notably, I’ve left out the links to Bricolage::Biz::Site, Bricolage::Biz::Class, Bricolage::Party::Person::User, and Bricolage::Party::Person::Contributor. But it’s pretty clear how they hook up if you study the classes, since they contain the appropriate *_guid attributes. And that’s all those of us who will be writing Bricolage will need.

I’m happy to get this largely done. The technical specification is also largely complete. I’m going to fill in a bit on Bricolage::Client::CLI right now, but otherwise, it will probably be stable for a while. It will change of course, because it’s not completely comprehensive, and there will be things that I haven’t thought about as I’m starting to code. But that’s probably a ways off, as there is quite a lot to get going with right now.

I’m not sure if I’ll update the functional specification anytime soon. It’s really out of date, but would take up quite a lot of time to rewrite, and for what benefit I’m not really sure at this point. The technical spec contains most of the information I need. Perhaps it will be time to update the functional spec once the API is nearing completeness and I start really working on the UI.

In the meantime, it’s time to get back to hacking!

Looking for the comments? Try the old layout.

bricolage.cc Has a New Server

The Bricolage project has a new server! Thanks to a generous donation from NetStumbler.com, we have a shiny new hosted FreeBSD server. I’ve started building it, and have migrated the Bricolage Web site over today. By tomorrow, DNS records should be updated, and it’ll be rarin’ to go!

While I was at it, I rolled out the new Bricolage API documentation browser. There are now browser available for all of the major stable releases of Bricolage, listed on the old documentation page. The API browser for the current stable release will always be available here. Meanwhile, the documentation will also be generated from the Subversion trunk every morning; you can find those docs here.

We’ll also be able to keep better track of the kind of traffic the site gets thanks to the new stats site, which will also be updated daily.

Enjoy!

Looking for the comments? Try the old layout.

Perl.org Subversion Authentication Woes

It looks like the Perl.org authentication system that handles authentication for svn.bricolage.cc doesn’t properly cache an authentication token. Robert discovered this when a very large merge I was working on from the rev_1_8 branch of Bricolage to trunk was hanging and then timing out on me. The problem was that it was disconnecting from the MySQL server. Odd. At any rate, Robert switched over to an auth system that doesn’t use MySQL so that I could do the merge and then the commit. This morning, he restored the original auth system. I shouldn’t often have to do such a big merge or commit in Bricolage, so hopefully it won’t come up again, but it sure was annoying there for a while.

So for my fellow Bricolage developers who thought that the auth system was down: Sorry, it’s back now. And the trunk is fully updated with all of the changes to rev_1_8, which means that new development in the trunk can begin again in earnest.

Looking for the comments? Try the old layout.

How to Extend Bricolage 2.0

Going through the latest version of the Bricolage 2.0 technical specification, I can see at least six ways that developers will easily be able to extend Bricolage:

Write a new task by subclassing Bricolage::Biz::Task
A task can be designed to do just about anything to a single Bricolage object. Hell, you’d be able to look up other objects, too, so anything’s possible. Tasks are run by scheduled jobs, event-triggered actions, or by distribution jobs.
Create a new data type by subclassing Bricolage::Biz::Value and Bricolage::Biz::Type::Value
We’ll support quite a few different value types to start with, but we couldn’t anticipate everything, so this’ll be your chance!
Create a new UI widget by subclassing Bricolage::Widget and Bricolage::Biz::Type::Widget
Maybe your new value requires its own special widget. Or maybe you don’t like the way the existing widgets handle other types of values. So write your own!
Write a new distribution mover by subclassing Bricolage::Biz::Dist::Mover
We’ll start out with file system copy, SFTP, SFTP, and WebDAV distribution movers just as we have in Bricolage 1.8, but there’s always room for more!
Write a new authentication plugin by subclassing Bricolage::Util::Auth
The built-in and LDAP-based authentication systems aren’t doing it for you? You want to authenticate against a different database? Make it so!
Write a new storage back-end by subclassing Bricolage::Store
We’ll have a PostgreSQL back-end from the start, and perhaps SQLite and/or MySQL. But here’s your chance to get Bricolage running on FileMaker Pro just as you’ve always secretly desired!

So have fun with it! When it gets here. Want to help get get here? Subscribe to Bricolage-Devel and chip in!

Looking for the comments? Try the old layout.

Bricolage Tasks, Jobs, Actions, and Alerts

I’ve been working on the design for what are called distribution jobs and alerts in Bricolage 1.x. There were some good ideas there. Distribution jobs enable users to set up a list of tasks to execute against the files being distributed, such as validating them against a DTD or distributing them via email. It also allowed developers to create fairly simple plugin modules that could be added as new jobs. Alerts are great ways of letting users know that some even has happened, and their rules-based evaluation of event attributes is a powerful way of configuring alerts to be sent only for certain events logged for certain objects.

The problem is that they’re specific solutions to general problems. Distribution job s are an example of scheduling arbitrary tasks to be executed, while alerts are an example of triggering the execution of arbitrary tasks upon the logging of an event. So what I’ve been working on is trying to generalize these ideas into a simpler yet more powerful and flexible architecture. What I’ve come with is this:

Tasks

Very simply, a task is an object of a class designed to perform a simple, um task. Examples include publishing a document, expiring a document, sending an alert, or validating a file against a DTD. An abstract base class, Bricolage::Biz::Task, will establish the the interface for tasks, although its subclasses may add their own attributes (such as the subject and message of an alert). Each will implement an execute() method that will simply carry out the task on the object passed to it. Some task classes may operate on only one type of object (such as Task::Publish), while others may operate on many or even all Bricolage business classes (such as Task::SendAlert). There is no connection between task classes and events or jobs, except that the object that called the task object’s execute() method will be passed to execute() as a second argument.

Actions

An action is an event-triggered series of tasks. New action types can be created that have rules set to be evaluated against the event, just as is currently the case for alert types in Bricolage 1.x. The difference is that rather than being limited to sending alerts, actions types will be associated with one or more task objects, and each of those tasks will be executed in sequence when an action of that type is triggered. This will enable users to, for example, configure an action to republish an index document whenever a story document is published.

Jobs

A job is a scheduled series of tasks. Users will be able to create new jobs for any single object in Bricolage, associate any number of task objects, and then schedule the job to be run at some specific date and time in the future. This approach will enable users to, for example, schedule a job to send an alert about a given document one year in the future, as a reminder to update the document.

Destinations

Destinations will be similar to what’s currently in Bricolage 1.x. However, rather than having “job” classes specific to distribution, they’ll be able to specify a list of any tasks that are designed to be executed against an output file. This keeps the interface for tasks identical across all three uses.

Alerts

Alerts are no longer closely tied to events, since they can sent as part of a scheduled job or as part of a distribution to a destination in addition to when an event is logged. Rather, they will only be created by Bricolage::Biz::Task::SendAlert. So a Bricolage business object can have any number of associated alerts, just as it can have any number of associated events.

Upshot

The upshot of this redesign, which took me several days of thinking to tease out to be general enough to satisfy me, is that more users will have more of what they need from Bricolage, and developers can more easily add new functionality that’s immediately available to event actions, scheduled jobs, and distribution destinations.

Looking for the comments? Try the old layout.

Bricolage 1.8.0 Arrives!

It is with great pleasure that the Bricolage development team announces the release of Bricolage 1.8.0. The culmination of over 15 months in development, with contributions from over 20 independent developers, and new features sponsored by numerous organizations world-wide, version 1.8.0 represents a significant new pinnacle for the much-lauded open-source content management and publishing system. This release offers more new features, improvements, and performance gains than any previous release. There are so many, in fact (over 120), that they can’t effectively be included in this announcement. Here are some of the highlights:

  • Support for managing multiple sites from a single Bricolage installation. Each site has its own categories, templates, document types, and workflows, and collaboration across sites is supported by document aliasing and shared workflow desks.

  • Significant performance boosts to search queries and URI uniqueness validation.

  • Email document distribution, which can be used to email the files generated by an output channel to one or more email addresses.

  • A greatly simplified and flexible templating and element API.

  • Template sandboxes to enable template development without interfering with production templates.

  • Support for Template Toolkit templates (http://www.template-toolkit.org).

  • New “Publish” and “Recall” permissions, for improved workflow management.

  • Per-user preferences.

  • Document formatting at publish time, rather than publish scheduling time.

  • New German and Mandarin localizations.

  • Image thumbnails and icons for all media documents.

  • Support for HTMLArea WYSIWYG editing with HTMLArea. See http://www.interactivetools.com/products/htmlarea/.

For a complete list of the changes, see the release notes and changes list on SourceForge. For the complete history of ongoing changes in Bricolage, see Bric::Changes.

Download Bricolage 1.8.0 now from the Kineticode download page or from the SourceForge download page.

ABOUT BRICOLAGE

Bricolage is a full-featured, enterprise-class content management and publishing system. It offers a browser-based interface for ease-of use, a full-fledged templating system with complete HTML::Mason, HTML::Template, and Template Toolkit support for flexibility, and many other features. It operates in an Apache/mod_perl environment and uses the PostgreSQL RDBMS for its repository. A comprehensive, actively-developed open source CMS, Bricolage was hailed as “Most Impressive” in 2002 by eWeek.

Enjoy!

–The Bricolage Team

Originally published on use Perl;

Bricolage 1.7.5 “Ashland” (1.8.0 RC2)

I’m thrilled to announce the release of Bricolage-Devel 1.7.5 “Ashland”, the second release candidate for Bricolage 1.8.0. This version of the open-source content management system addresses all of the bugs discovered since the release of the first release candidate, 1.7.4, and adds several new features and numerous improvements. The changes since 1.7.4 include:

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

  • Improvements

    • 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. [João Pedro]

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

    • 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]

    make 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 preview_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 Order parameter to the Story, Media, and Template classes, such as category_uri, did not work before. Now they do. [David]

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

    • Added constant HAS_MULTISITE to the Bric base class so that all classes properly declare themselves for UI search results. [João Pedro]

    • Story and Media SOAP calls now correctly use the element’s key name to identify the element. [João Pedro]

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

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

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

    • The LOAD_LANGUGES and LOAD_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]

For a complete list of the changes, see the changes file.

ABOUT BRICOLAGE

Bricolage is a full-featured, enterprise-class content management and publishing system. It offers a browser-based interface for ease-of use, a full-fledged templating system with complete HTML::Mason, HTML::Template, and Template Toolkit support for flexibility, and many other features. It operates in an Apache/mod_perl environment, and uses the PostgreSQL RDBMS for its repository. A comprehensive, actively-developed open source CMS, Bricolage has been hailed as “Most Impressive” in 2002 by eWeek.

Learn more about Bricolage and download it from the Bricolage home page.

Enjoy!

Originally published on use Perl;

“use.perl.org journal of Theory: “Bricolage 1.7.5 “Ashland” (1.8.0 RC2)””

Bricolage-Devel 1.7.4

I’m thrilled to announce the release of Bricolage-Devel 1.7.4 “Sacramento”, the first release candidate for Bricolage 1.8.0. This version of the open-source content management system addresses all of the bugs discovered since the release of the fourth development release, 1.7.4, and adds several new features and numerous improvements. The most significant changes since 1.7.3 include:

  • New Features

    • A “Bulk Publish” link in ADMIN->PUBLISHING that lets members of the Global Admins group publish story and media documents by category. [Scott]

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

    • 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 USE_THUMBNAILS bricolage.conf directive is enabled. These rely on the presence of PNG icon files for each MIME type in comp/media/mime. Only one such icons is distributed with Bricolage, comp/media/mime/none.png (borrowed from the KDE project under a free license), which is the default icon when the MIME type of a media file is unknown or when no icon file exists for the MIME type of the media file. Administrators are free to add their own icons, and the copy_gnome_icons script in contrib makes it easy to use GNOME icons. [David]

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

    • added bric_media_load to contrib/. 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 workflow__id and desk__id columns of the story, media, and formatting (template) tables to be more efficient, being indexed only when their IDs are greater than 0 (that is, when a story, media document, or template is actually on a desk and in a workflow). [David]

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

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

    • The element admin profile now automatically adds the currently selected site context to new elements, thus generally saving a step when creating new elements. [Joã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 get_containers() method of Bric::Biz::Asset::Business::Parts::Tile::Container to take an optional list of key name arguments, and to return only the container subelements with those key names. This is most useful in templates, where it’s fairly common to get a list of container subelements of only one or two particular types out all at once. It neatly replaces code such as this:

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

      With this:

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

      And is more efficient, too. [David]

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

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

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

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

    • 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. [João Pedro]

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

    • Thumbnails are now displayed when searching media to related to an element. [David]

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

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

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

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

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

  • Bug Fixes

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

    • 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. [Joã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 Joã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. [João Pedro]

    • Bric::SOAP::Category->list_ids now converts site names to site IDs. [João Pedro]

    • Bric::Util::Burner->preview once again defaults to previewing in an asset’s primary output channel instead of using the element’s primary output channel. [João Pedro]

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

    • The category SOAP class now correctly calls lookup() with the site ID to prevent multiple categories with the same names but in different sites from being looked up. [Joã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 occasionally a frozen server. [David]

For a complete list of the changes, see the changes file.

ABOUT BRICOLAGE

Bricolage is a full-featured, enterprise-class content management and publishing system. It offers a browser-based interface for ease-of use, a full-fledged templating system with complete HTML::Mason, HTML::Template, and Template Toolkit support for flexibility, and many other features. It operates in an Apache/mod_perl environment, and uses the PostgreSQL RDBMS for its repository. A comprehensive, actively-developed open source CMS, Bricolage has been hailed as “Most Impressive” in 2002 by eWeek.

Learn more about Bricolage and download it from the Bricolage home page.

Enjoy!

David

Originally published on use Perl;

Bricolage-Devel 1.7.3

I’m thrilled to announce the release of Bricolage-Devel 1.7.3, the fourth development release for what will soon become Bricolage 1.8.0. This version of the open-source content management system addresses all of the bugs discovered since the release of the third development release, 1.7.2, and adds several new features and numerous improvements. The most significant changes since 1.7.2 include:

  • 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 FTP_DEPLOY_ON_UPLOAD bricolage.conf directive. [David]

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

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

  • Improvements

    • 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. [David]

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

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

    • Added primary_category_id parameter to the story class’ list() method. [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]

    • 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 maximum length of text and textarea fields is no “0”, or unlimited. [David]

    • When publishing from a publish desk, you can now uncheck related assets in order to not publish them. [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 simple parameter to the Media class’ list() method works again. As a result, so does “Find Stories” in the UI. [David]

    • Several Alert Type fixes. Rule regular expression matching (=~, !~) now handles patterns containing slashes (important for URIs, for example). Attributes no longer show up as stringified hash references in subject or message variable substitution. $trig_password was removed from the Profile as it caused an error and was useless anyway. And finally, duplicate and spurious attributes were removed from the rules and message variable lists. [Scott & David]

    • Fixed Template Element list, where container elements appeared twice. [Joao Pedro]

    • Changes to site settings are now correctly reflected in the UI for all users as soon as they are made. [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]

    • Fixed URI uniqueness upgrade scripts, which were having problems with PostgreSQL permissions. [David]

    • make clone works again. [David]

    • 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]

    • Fixed previewing with multiple OCs. [Serge Sozonoff]

    • Fixed a bug in bric_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 <%publish>, <%preview>, and <%chk_syntax> tags now work as advertised. Reported by Ben Bangert. [David]

For a complete list of the changes, see the changes file.

ABOUT BRICOLAGE

Bricolage is a full-featured, enterprise-class content management and publishing system. It offers a browser-based interface for ease-of use, a full-fledged templating system with complete HTML::Mason, HTML::Template, and Template Toolkit support for flexibility, and many other features. It operates in an Apache/mod_perl environment, and uses the PostgreSQL RDBMS for its repository. A comprehensive, actively-developed open source CMS, Bricolage has been hailed as “Most Impressive” in 2002 by eWeek.

Learn more about Bricolage and download it from the Bricolage home page.

Enjoy!

David

Originally published on use Perl;

Bricolage 1.6.10 "Jump"

I’m pleased to announce the release of Bricolage 1.6.10 “Jump”. This maintenance release addresses a number issues discovered since the release of version 1.6.9. Here is the complete list of changes for this release:

  • Added missing index to the “workflow__id” column of the “story”, “media”, and “formatting” (template) tables. [David]

  • Made index on the “desk__id” column of the “story”, “media”, and “formatting” (template) tables a partial index, since the column will usually be “NULL”. [David]

  • Added an index to the description column of the “story_instance”, “media_instance”, and “formatting” (template) tables to speed up simple searches. [David]

  • Added missing foreign key constraints for the “desk_id” column of the “story”, “media”, and “formatting” (template) tables. [David]

  • “make clone” no longer fails when it can’t find httpd.conf, because it no longer looks for it. [David]

  • “make clone” no longer assumes that the conf directory is in $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 “https://”. [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 “lookup()” method of the story, media, and template classes will now correctly return inactive objects. [David]

  • Fixed typo of “CHECK_FREQUENCY” in Bric::Config that made it always use the default of 1. [Scott]

  • The “lookup()” method of the story, media, and template classes once again attempt to retrieve objects from the per-request cache before looking them up in the database. [David]

  • Changed the name of the event logged when templates are checked out from “Template Checked Out Canceled” to the correct “Template Checked Out.” [David]

See the changes page for a complete history of Bricolage changes.

ABOUT BRICOLAGE

Bricolage is a full-featured, enterprise-class content management and publishing system. It offers a browser-based interface for ease-of use, a full-fledged templating system with complete HTML::Mason and HTML::Template support for flexibility, and many other features. It operates in an Apache/mod_perl environment, and uses the PostgreSQL RDBMS for its repository. A comprehensive, actively-developed open source CMS, Bricolage has been hailed as “Most Impressive” in 2002 by eWeek.

Learn more about Bricolage and download it from the Bricolage home page.

Enjoy!

David

Originally published on use Perl;

Bricolage-Devel 1.7.2

I’m thrilled to announce the release of Bricolage-Devel 1.7.2, the third development release for what will eventually become Bricolage 1.8.0. This version of the open-source content management system addresses all of the bugs discovered since the release of the second development release, 1.7.1, and adds several new features and some tremendous performance optimizations. The most significant changes since 1.7.1 include:

  • 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 “publish_another()” method to Bric::Util::Burner. This method publishes a document other than the one currently being published. This is useful when a template for one document type needs to trigger the publish of another document. [David]

    • 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 override-able, 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 the “bric_queued” daemon to take advantage of the new publication scheduling of Bric::Util::Job::Pub. Together with the use of a carefully tuned instance of Bricolage, these new features allows the Bricolage administrator to control the amount of system resources given over to publishing. [Mark]

    • German localization completed. [Thorsten Biel]

    • 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 “burn_again” attribute to the Mason burner. This method can be called from within a template to force the burner to burn the current page again, creating a new file. This can be useful for creating multi-file output without extra paginated subelements. [David]

    • Added zh-cn localization, with translation based on zh-tw. [Kang-min Liu]

  • Improvements

    • 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]

    • Added “element_key_name” parameter to the “list()” method of the story, media, and formatting classes. This makes it easier to use the name of a story type element, media type element, or template element to search for assets, rather than the “element__id” parameter, which isn’t as friendly. [David]

    • 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 [Jo„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 “story.category” parameter to the “list()” method of Bric::Biz::Asset::Business::Story. Pass in a story ID, and a list of stories in the same categories as the story with that ID will be returned, minus the story with that ID. This parameter triggers a complex join, which can slow the query time significantly on underpowered servers or systems with a large number of stories. Still, it can be very useful in templates that want to create a list of stories in all of the categories the current story is in. But be sure to use the parameter! Thanks to Josh Berkus for his help figuring out the query syntax. [David]

  • Bug Fixes

    • 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]

    • 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]

    • The inline “Bulk Edit” feature in story and media profiles works again. Thanks to Neal Sofge for the spot! [David]

    • Templates are now correctly saved to the user’s sandbox when “Save and Stay” is pressed. [Jo„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]

    • 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]

For a complete list of the changes, see the changes file.

ABOUT BRICOLAGE

Bricolage is a full-featured, enterprise-class content management and publishing system. It offers a browser-based interface for ease-of use, a full-fledged templating system with complete HTML::Mason, HTML::Template, and Template Toolkit support for flexibility, and many other features. It operates in an Apache/mod_perl environment, and uses the PostgreSQL RDBMS for its repository. A comprehensive, actively-developed open source CMS, Bricolage has been hailed as “Most Impressive” in 2002 by eWeek.

Learn more about Bricolage and download it from the Bricolage home page.

Enjoy!

David

Originally published on use Perl;

Bricolage 1.6.9

I’m pleased to announce the release of Bricolage 1.6.9. This maintenance release addresses a number issues discovered since the release of version 1.6.8. Here is the complete list of changes for this release:

  • 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 “lookup()” 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]

See the changes page for a complete history of Bricolage changes.

ABOUT BRICOLAGE

Bricolage is a full-featured, enterprise-class content management and publishing system. It offers a browser-based interface for ease-of use, a full-fledged templating system with complete HTML::Mason and HTML::Template support for flexibility, and many other features. It operates in an Apache/mod_perl environment, and uses the PostgreSQL RDBMS for its repository. A comprehensive, actively-developed open source CMS, Bricolage has been hailed as “Most Impressive” in 2002 by eWeek.

Learn more about Bricolage and download it from the Bricolage home page.

Enjoy!

David

Originally published on use Perl;