Just a Theory

Black lives matter

activitymail 1.19

I’m pleased to announce the release of activitymail 1.19, currently finding its way to a CPAN mirror near you. This release has a new feature I’ve been wanted to add for a long time, ever since Ask mentioned it to me a couple of years ago. A patch from Gary Meyer ported log_accume’s -I and -E options, which specify files with a list of regular expressions that can be used to exclude certain files from being processed via a commit. Now, this was the feature I wanted, but wasn’t exactly how I wanted to do it.

So starting with Gary’s patch, I’ve modified the -I and -E options to instead take one or more regular expressions right on the command line. These regular expressions are then compared to each file processed during the CVS activity, and then either include the file (in the case of a -I regular expression) or exclude the file (in the case of a -E regular expression). Needless to say, both -I and -E cannot be included in a single invocation of activitymail. You can even pass multiple regular expressions to a single -I or -E option, delimited by an empty space. This means you can’t use spaces in your regular expressions, though; use \s, instead.

The expected use for these new options is in combination with the regular expressions in the CVS loginfo file. You can specify that activitymail be executed for a particular directory, and then use -I or -E to include or exclude specific files in that directory.

One other new feature of activitymail 1.19 is the new -q and -Q options. Both options enable a quiet mode for activitymail, eliminating the status messages typically printed out during a commit (such as “Collecting file lists…” and “Sending email”). The -q option can be used for most cases; the -Q option is exactly the same, except that it also silences the status message output when an email is larger than the size specified by the -M option.

Enjoy!

David

Originally published on use Perl;

activitymail 1.18

Just thought I’d pop a quick note here to announce that I’ve released activitymail 1.18, now wending its way to a CPAN mirror near you. This release of the CVS activity notification program fixes a bug introduced in 1.16 that prevented activitymail from properly handling file names with spaces. I’ve also added a To Do section for some of the things I’d like to change going forward. Patches welcome!

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;

Apple Mail Hack

For those who have multiple email addresses like me, but most are only for sending, and who use Apple Mail, be sure to check out this hack, and do away with bogus extra mail account configurations.

Originally published on use Perl;

Bricolage-Devel 1.7.1

It gives me great pleasure to announce the release of Bricolage-Devel 1.7.1, the second 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 first development release, 1.7.0. The most significant changes include:

  • Eliminated the need for the Apache::ConfigFile module, and thus some annoying problems with the CPAN indexer when trying to install it. [David]

  • 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 display_element() method in the Mason burner once again passes component arguments on to components. And now, so does sdisplay_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.

    • Added --bric_soap and --site options.

    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 output_channel_id parameter to the list() method of Bric::Biz::Site in order to prevent sites without output channel associations from being listed in the select list for story type and media type elements. [David]

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

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

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

  • 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 <%attr>s and calling of <%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]

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

It give me great pleasure to announce the release of Bricolage-Devel 1.7.0, the first development release for what will eventually become Bricolage 1.8.0. In addition to all of the bug fixes included in the 1.6.x series, this version of the open-source content management system adds a number of significant new features. The most significant changes include:

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

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

  • Added $burner->sdisplay_element method to Bric::Util::Burner. This is a sprintf-style version of $burner->display_element.

  • Added the YEAR_SPAN_BEFORE and YEAR_SPAN_AFTER bricolage.conf directives. These directives enable 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 “Email” action, which can be used to email the files generated by a publish to one or more email addresses. Funded by ETonline.

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

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

  • Added output_channel_id parameter to the list() methods of Story and Media to enable querying for documents in output channels other than the primary output channel.

  • Added Keyword Management interface to centrally manage keywords.

  • Added HTML::Mason Custom tags support, allowing template developers to write code blocks that are context sensitive.

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

  • Added “Text to search” option in the Advanced search of Media and Stories to search for documents based on the contents of their field.

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

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

  • Added contrib_id parameter to the list() methods of Bric::Biz::Asset::Business::Story and Bric::Biz::Asset::Business::Media to return a list of story or media documents associated with a given contributor.

  • Switched Bric::Util::CharTrans from using Text::Iconv to Encode, thus removing the dependency on a C library (libiconv). Note that this has changed the API of Bric::Util::CharTrans. Its to_utf8() and from_utf8() methods now always convert the argument passed in in place. They did this before for references, but now they do it for plain strings, as well. Also note that use of character translation also now requires Perl 5.8.0 or later.

  • Added MediaType, Site, and Keyword SOAP modules.

  • Added element attribute to Bric::Util::Burner so that $burner->get_element should always return the element currently being burned.

  • Added a throw_error() method to Bric::Util::Burner so that template developers can easily throw an exception that their users will see in the UI.

  • Moved category selection from Media and Story Profiles into their own separate components so that organizations with hundreds or thousands of categories don’t have to load them into a dropdown list every time an asset is edited. The category “browser” uses an interface similar to ‘Associate Contributors’, which has the advantage of being searchable rather than looking through a “long list of all categories”. This feature can be enabled via the new ENABLE_CATEGORY_BROWSER bricolage.conf directive.

  • Added list paging to Desks and My Workspace.

  • Added the ability to test templates without having to deploy them by using “template sandboxes” for each template developer.

  • Added Template Toolkit burner support.

  • Added support for installing and upgrading Bricolage with PostgreSQL on a separate host.

  • Added context-sensitive help for pages that were missing it.

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

I’m pleased to announce the release of Bricolage 1.6.7. This maintenance release addresses a few issues discovered since the release of version 1.6.6. Some of the more important changes include:

  • Fixed “bric_soap” to accept a “–server” argument starting with “https”, which is more friendly to an SSI environment.

  • The PostgreSQL admin username and password arguments were reversed during “make upgrade”.

  • Added partial index to speed queries against the job table, and thus to speed distribution.

  • Updated slug RegExen. They were a bit too strict, and should be better now, allowing dots, dashes, and underscores.

  • Inactive alert types no longer trigger the sending of alerts.

  • Fixed “element_data_id” parameter to Bric::Biz::Asset::Business::Parts::Tile::Data to actually work.

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 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 1.6.6 Released

I’m pleased to announce the release of Bricolage 1.6.6. This maintenance release addresses a number issues discovered since the release of version 1.6.5. Some of the more important changes include:

  • Added README.Solaris.

  • When an asset is published or deployed directly from the asset profile, it is now properly removed from the publish or deploy desk.

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

  • The category URI is now displayed for assets on desks, rather than the name. This is consistent with the display of the category elsewhere.

  • Elements to which no subelements can be added will no longer display an empty select list and “Add Element” button.

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

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

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

  • An upgrade script failure will now cause “make upgrade” to halt installation so that any issues are immediately identified and correctable.

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 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 1.6.5 Released

I’m pleased to announce announce the release of Bricolage 1.6.5. This maintenance release addresses a number issues discovered since the release of version 1.6.4. Some of the more important changes include:

  • Previewing stories with related media that have no associated file no longer causes an error.

  • Switched to using DBI->connect_cached() from using our own database connection caching. This change does bump up the minimum required version of DBI to 1.18, though the latest version is always recommended. It’s also the right thing to do.

  • Fixed issue that could cause Bric::Util::DBI to create inconsistent transaction states.

  • Passing an undef via the workflow__id parameters to the list() method of Story, Media, or Template really does again cause Bricolage to correctly return only those assets that are not in workflow. It wasn’t as fixed in 1.6.3 as I had thought.

  • Vastly improved the speed of the query that lists events, and added an index to help it along, as well.

  • The FTP mover now properly deletes files rather than erroring out.

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

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

  • Adding a new element type with the same name as an existing or deleted element type no longer causes an SQL error.

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 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;

Params::CallbackRequest 1.10

I have abstracted out all of the callback processing and execution code from my MasonX::ApacheHandler::WithCallbacks module to a new module, Params::CallbackRequest. This enables me to keep the callback code independent of the Mason architecture, and thus work it in to other templating systems. Look for the addition of callbacks to Template Toolkit next! This change necessitated some breakage of backwards compatibility, but nothing that can’t be changed with some simple regex work.

In tandem with the above change, I have also completed my conversion of my Mason callback subclass from ApacheHandler to Interp. This means that the callbacks can be used in any Mason context, not just with mod_perl. MasonX::ApacheHandler::WithCallbacks is hereby deprecated, and will soon be deleted from CPAN (though you’ll still be able to get it from BackPAN). Many thanks to the Mason development team for accepting my multitude of patches to make HTML::Mason::Interp more subclassable. A result of this change, however, is that MasonX::Interp::WithCallbacks requires Mason 1.23 or later.

These modules are making their way to CPAN now, but you can get them here if you’re impatient:

  • [Params-CallbackRequest-1.10.tar.gz]
  • [MasonX-Interp-WithCallbacks-1.10.tar.gz]

Here’s a complete list of the changes to get you started:

  • Code moved over from MasonX::ApacheHandler::WithCallbacks, which is deprecated. Differences from that class are as follows.
  • Callback handling code from MasonX::ApacheHandler::WithCallbacks has been migrated to Params::CallbackRequest.
  • Code from MasonX::CallbackHandler has been migrated to Params::Callback.
  • MasonX::CallbackTester has been removed, since it isn’t necessary in a non-mod_perl environment.
  • Params::CallbackRequest::Exceptions supplies the exceptions thrown by Params::CallbackRequest, since that module is not strictly connected to Mason.
  • Changed the request_args() accessor from MasonX::CallbackHandler to params() in Params::Callback, to reflect the idea that this is a generic parameter-triggered callback architecture.
  • Replaced the ah() accessor, since the callback controller isn’t a Mason ApacheHandler anymore, with cb_request() in Params::Callback.
  • Added cb_request() accessor to MasonX::Interp::WithCallbacks.
  • Replaced the exec_null_cb_values parameter from MasonX::ApacheHandler::WithCallbacks, which had defaulted to true, with “ignore_nulls” in Params::CallbackRequest, which defaults to false.
  • Added Params::CallbackRequest notes() interface, which copies all notes to the Mason request notes() interface before the request executes.

Enjoy!

— David

Originally published on use Perl;

San Francisco Politics

Finally, a decent analysis!

Originally published on use Perl;

activitymail 1.10

It is my pleasure to announce the release of the activitymail 1.10, available shortly from your nearest CPAN mirror.

This is a major upgrade to my little CVS notification program, but I think I got all of your requests in there (although some of the options have changed, and the code you might have sent me most certainly has changed!) Here’s what you can look forward to as soon as your CPAN mirror syncs:

  • Added empty lines between the text of the commit message and the attached diff. This looks neater in mail clients that display attachments inline.

  • Added -H option sending HTML email. Thanks to Hernan Otero for the initial implementation.

  • Added -V option to include revision numbers after each listed file. Thanks to Hernan Otero for the initial implementation.

  • Cut down on the number of times that data is copied in the script, thus reducing processing time and memory requirements, especially on big commits.

  • Added -w option for a link to a CVSWeb view of the diff for each changed file. Actually looks best when used with HTML. Thanks to Hernan Otero for the initial implementation.

  • Added check for binary files so that they won’t be diffed.

  • Added -B option to specify a list of binary file name extensions to indicate files that should not be diffed.

  • New files and deleted files are now diffed against /dev/null in order to provide a more realistic diff.

  • Added -j option to point to a diff executable to compare added and deleted files. Defaults to “diff”, assuming that it’s in the path.

  • Added -M option to prevent messages over a maximum size from being emailed. Thanks to Sam Tregar.

  • Added -S option to add directory context information to the subject. Thanks to Kent Lindquist.

  • Branch tags are now listed in the email under their own header. Suggested by David Krembs.

  • Added -v option to print the version number.

  • Added POD tests.

  • Switched to Module::Build for installation.

Enjoy!

— David

Originally published on use Perl;