2006.01.23
Added support for PHP templates. It is now possible to write Bricolate templates in Mason, Template Toolkit, HTML::Template, and PHP. The addition of PHP supports was made possible by the creation of a new Perl module, PHP::Interpreter, that loads a PHP 5 interpreter into Perl. PHP templates in Bricolage are thus pure PHP, with access to all the features that PHP has to offer, while allowing transparent access to the Perl- based Bricolage API for for retreiving and outputting content. PHP::Interpreter was implemented by George Schlossnagle of Omni TI consulting, and the whole PHP/Perl project, including PHP::Interpreter and support for Bricolage PHP templating, was sponsored by SAPO—Portugal Online.
Added support for authentication to Bricolage against an LDAP server. The new
LDAP_* bricolage.conf directives make it simple to configure Bricolage
to authenticate against any LDAP server. Includes support for authenticating
users only if they are members of a specific user group in the LDAP directory.
Users must still exist in Bricolage, however. The LDAP authentication support
was made possible thanks to the addition of a pluggable authentication system.
Contributed by Kineticode.
Converted Bulk Edit
in the UI to use a new format based on Plain Old
Documentation
(POD), and eliminated the old Super Bulk Edit
interface since
it became redundant. The POD syntax enables a the complete hierarchy of a
story to be edited, including links to related stories and media, in a single
text field. Contributed by Kineticode.
Added the RELATED_MEDIA_UPLOAD bricolage.conf directive, which allows
editors to upload media files directly into a related media element profile if
they have permission to create media and to access a media workflow. This
makes it a much simpler process for editors to quickly associate media with
story documents. The uploaded media files will be created based on the media
type element selected from a select list, and given the same category, cover
date, and priority as the current document. Users then have the opportunity to
adjust these attributes before continuing to edit their stories. Contributed
by SAPO—Portugal Online and Kineticode.
Added support for sub-second precision to date and time management in Bricolage. This means that dates can be stored in the database with microsecond precision. Sponsored by Alinghi.
Added new Precision
option to DateTime fields added to elements and
contributor types. The supported precisions are Year
, Month
, Day
,
Hour
, Minute
, Second
, Millisecond
, and Microsecond
. Sponsored by
Alinghi.
Category and story URIs now all end in a slash. This is so that they all
behave consistently with root categories and home page URIs, and so that they
properly indicate directories. Note that this does not apply if the
STORY_URI_WITH_FILENAME bricolage.conf directive has been enabled.
B
The URI formats are now more flexible. You can now use many more parts of the
cover date in the URI, and in whatever format you like. So you could have a
format of /%{categories}/%Y-%m-%d/
and end up with the URI
/foo/bar/2004-09-22/
if you wanted. Or even /%{categories}/%Y/%V/
to get
the week number as part of the URI. You can also include document UUIDs, and
even your own text, (e.g. foobar in /%{categories}/%Y/%m/foobar/%{uuid}/
.
Contributed by Marshall Roch.
Added the MEDIA_UNIQUE_FILENAME bricolage.conf directive to allow the
file name of media documents to be set to a unique, automatically generated
file name on upload. Also added the MEDIA_FILENAME_PREFIX directive for
setting a prefix word, such as media
, to be prepended to the file name if
desired. Contributed by Digital Craftsmen.
Added the AUTO_PREVIEW_MEDIA bricolage.conf directive toe allow media
files uploaded to a media document to be distributed to all relevant preview
servers as soon as the media document is saved, thus preventing 404s on the
preview servers when users forget to preview their media documents before
previewing stories that references them. Sponsored by Alinghi.
Added the new Code Select
custom field, which allows users to add arbitrary
Perl code to generate the items in a select list. This is great for
dynamically pulling in choices from another database, LDAP directory, or
anything else you can get at from Perl code. Contributed by Scott Lanning.
Added support for typical Windows character encodings. This means that users
can select Windows Western (CP1252)
as their encoding in order to fix
gremlin characters pasted from Microsoft Word. Contributed by Kineticode.
New categories now inherit from their parent categories all group memberships and permissions granted to access assets with which they are associated. This makes it far easier for users with CREATE permission to categories to create new categories without having to then edit group memberships and user group permissions to make them the same as the parent’s permission, which is what is usually wanted. Contributed by Kineticode.
Output channels are now associated with burners and can only include other output channels associated with the same burners. Element types are no longer associated with burners at all. Contributed by Kineticode.
Added diff support to the UI to see changes between versions of templates, stories, and media documents. Contributed by Kineticode.
Added JavaScript-powered Find/Replace dialog box to Bulk Edit in the element profile and to the template profile. Contributed by Kineticode.
In an attempt to eliminate the overloading of terminology in Bricolage, Kineticode contributed a major refactoring of the code that renames a number of classes and attributes—as well as database tables and columns. The result is that in Bricolage 1.10, virtually every class is known by the same name, from the UI to SOAP to the class package name to the database. The details of what was removed and or renamed follows:
Renamed Element
to Element Type
and Element Type
to Element Type Set
. This change overcomes the confusion between of
element types, which define the structure of elements, and elements, which are
the objects associated with documents that contain content and which are based
on element types. The old
get_element() method and the accessors that get and set element_id or
element__id have also been renamed to get_element_type() and to access
element_type_id.
Deprecated Element Type Sets. All of their attributes have been moved to
Element Types. Management of Element Type Sets (known as Element Type
in
previous releases of Bricolage) has been removed from the UI, but the SOAP
interface and the class itself remain for now. They will be completely removed
in a future version of Bricolage.
Renamed Element Data
to Field Type
. [David]
Renamed the Element and Element Type classes as follows:
Bric::Biz::AssetType is now Bric::Biz::ElementType.
Bric::Biz::AssetType::Parts::Data is now Bric::Biz::ElementType::Parts::FieldType.
Bric::Biz::Asset::Busines::Parts::Tile is now Bric::Biz::Element.
Bric::Biz::Asset::Busines::Parts::Tile::Container is now Bric::Biz::Element::Container.
Bric::Biz::Asset::Busines::Parts::Tile::Data is now Bric::Biz::Element::Container.
They now properly reflect what they’re called in the UI, in SOAP, and in the database. The old classes have been changed to simply inherit from the new classes, so as to maintain backwards compatibility.
Renamed Bric::SOAP::ElementType to Bric::SOAP::ATType (deprecated), Bric::SOAP::Element to Bric:SOAP::ElementType, and Bric::App::Callback::Profile::ElementData to Bric::App::Callback::Profile::FieldType.
Renamed Bric::Biz::Asset::Formatting to Bric::Biz::Asset::Template. The old class now inherits from the new in order to maintain backwards compatibility.
Renamed the related_instance_id attribute of elements to
related_story_id, for parity with related_media_id—not to mention the
get_related_story() method. The get_related_instance_id() and
set_related_instance_id() accessor methods remain in place for purposes of
backwards compatibility.
Changed the attributes and objects that refer to the
Bric::Biz::ElementType::Parts::FieldType object in Bric::Biz::Element::Field
from element_data_id and get_element_data() to field_type_id() and
get_field_type(), respectively.
Renamed a number of database tables and appropriate foreign key columns, indexes, constraints, and the like, to better reflect the names used for these things in general. The tables renamed are:
element to element_type
at_type to field_type
story_container_tile to story_element
story_data_tile to story_field
media_container_tile to media_element
media_data_tile to media_field
formatting to template
Changed the names of the attributes in Bric::Biz::ElementType and Bric::Biz::Elementype::Parts::FieldType that have double underscores to have only single underscores. The double underscores are still supported for the sake of backwards compatibility, but are no longer required.
Added the ENABLE_GZIP bricolage.conf directive to turn on compression of
the UI pages through mod_gzip. This results in pages as much as fifteen
times smaller, with minimal extra server load. If mod_gzip is found during
installation, the appropriate LoadModule/AddModule lines will be added to
httpd.conf. Contributed by Marshall Roch.
All of the old NUMERIC
columns have been removed from the database and
replaced with the more appropriate (and faster) INTEGER
, SMALLINT
, and
BOOLEAN
data types. Contributed by Neil Conway & David Wheeler.
Added the MASON_STATIC_SOURCE bricolage.conf directive
to enable static sources in the Mason-powered UI. Enabling this directive can
eliminate many file system stats on every request, thus increasing
performance. It’s disabled by default, but you should turn it on now!
Contributed by Kineticode.
Moved story, media, and template notes into a column in the appropriate instance table, instead using attributes, and then removed the story, media, and template attribute objects. This is a much more efficient use of the database and eliminates a lot of cruft. Contributed by Kineticode.
Normalized story and media elements and fields so that they no longer store
copies of their names, key names, and descriptions—and, in the case of
fields, the autopopulated and sql_type
attributes—since these are actually element type and field type attributes
easily referenced in the element type and field type tables. This change
significantly reduces the size of the database and has the potential to
increase performance when getting and setting field values, especially during
publishes. Contributed by Kineticode.
Major interface clean-up. The UI is finally mostly valid XHTML and uses CSS
for all styles. The USE_XHTM directive, added in 1.7.0, is no longer used.
The file sizes of some pages have been reduced by as much as 70%, offering
improved page load times. Also, it will now be much easier to customize the
look and feel of Bricolage simply by modifying the CSS files. Contributed by
Marshall Roch.
Added Show Alpha Search
preference that determines whether the alpha
search ((A | B | C | ... [All]
) directive, added in 1.7.0, is no longer
used.
Added support for associating secondary categories and output channels when cloning a story. Sponsored by Alinghi.
Added support for adding secondary output channels to a new clone by selecting a group of output channels. All output channels in that group that are allowed by the story element will be associated with the clone. This is an easy and accurate way to add a bunch of output channels to a clone at once. Users must have READ access to each listed output channel group. Sponsored by Alinghi.
Added a frame on top of the preview window with a Repreview
link. This is
useful for previewing changes when you’re developing templates. Rather than
having to save the template, go back to the workspace, repreview, and then go
back to the template profile, you can preview the story, then edit the
template and click Repreview
as necessary after each save. Contributed by
Marshall Roch.
Added MEDIA_UPLOAD_LIMIT bricolage.conf directive for setting a size
limit on uploaded media files. Contributed by Scott Lanning.
Added support for multiple WYSIWYG editors. You can now choose between htmlArea 3 and the new Xinha, a more active fork of htmlArea (recommended). Contributed by Marshall Roch.
The User Override
screen has been integrated into the Users
screen since
the two pages are mostly redundant except for a few links. Contributed by
Marshall Roch.
User overrides are now recorded in the event log. Contributed by Marshall Roch.
The UI now shows which user is logged in and includes a link to the user’s profile at the top of each page. Contributed by Marshall Roch.
Users now must have at least READ permission to sources to add them to stories. Contributed by Kineticode.
Added an Include deleted
checkbox to Advanced Search in Find Stories,
Find Media,
and Find Templates
intefaces; this allows for easy searching
and reactivation of deleted stories, media, and templates. Contributed by
Scott Lanning.
Added the Subelement
select list to the Find Stories
interface, to allow
searching for stories by the types of subelements they contain. Contributed by
Scott Lanning.
Added a Cheat Sheet
dialog box to Bulk Edit that displays the entire
hierarchy of available subelements and fields as the pseudo-pod tags
available for use in bulk editing content. Contributed by Kineticode.
The select list of fields and subelements that can be added to an element now lists all of the fields and subelements in alphabetical order. Contributed by Kineticode.
Improved JavaScript word and character counts in Bulk Edit so that they’re actually accurate, including when POD tags are present, and are kept up-to-date as you type. Contributed by Kineticode.
Made the scroll bar sticky
in the Story Profile, so that when you save a
story, the reload will gently scroll back to the same spot in the story
profile where you left off. Contributed by Scott Lanning.
Added fuller management of field types in the Element Type Manager, such as
allowing the display widget to be changed (from, for example, text
to
textarea
), and supporting the setting of a default value in a checkbox field
in the. Contributed by Kineticode.
The Element Type profile no longer displays the Sites
section if there is
only one site, and no longer displays the output channel section if there is
only one output channel. Contributed by Kineticode.
The User and Contributor managers in the UI now use the List Name Format
preference to display the whole names for users and contributors. This allows
users to easily see whatever name parts they need by simply changing their
List Name Format preferences. Contributed by Kineticode.
The admin tools in the side navigation of the UI are now listed in alphabetical order according to the locale. Contributed by Kineticode.
The UI now remembers searches for each manager in the UI for as long as a session lasts. So if you perform a search for element types, and then do a search for stories or output channels, the last results you saw in the element type manager will be there again when you return to it. Contributed by Kineticode.
Media files can now be uploaded at the same time a new media document is created, rather than only after it has been created. Contributed by Kineticode.
Added the MASON_INTERP_ARGS bricolage.conf directive to allow arguments
to be passed to the Mason template interpreter. Contributed by Scott Lanning.
Added the preview_another_all_ocs() and blaze_another() methods to
Bric::Util::Burner. The former executes a preview for
all of the output channels a document is associated with. The latter takes a
document for its argument and calls publish_another() in publish mode and
preview_another_all_ocs() in preview mode. Contributed by Alinghi.
Creating a template that already exists but is inactive now reactivates it instead of just giving an error message. Contributed by Scott Lanning.
The HTML::Template burner now sets parameters for all attributes of a story as
returned by the my_meths() method of the story class, rather than just the
story title. So, for example, you can now use
Category templates in the HTML::Template burner now cascade just like in all the other burners, rather than stopping at the first category template found in the category URI. Contributed by Kineticode.
The HTML::Template burner now has access to both the related story and the
related media URIs via the rel_story_uri and rel_media_uri variables.
The old link variable has been deprecated, since it cannot handle an
element that has both a related media and a related story. Contributed by
Kineticode.
Added the current element object to the burn error
exception object and, by
extension, the burner throw_error() method. Now a kind of breadcrumb trail
will illustrate where in the element hierarchy of a story a burn error was
thrown. Contributed by Scott Lanning.
Arguments can now be passed to the display_element() method of the Template
Toolkit burner and they will be set up as variables in the stash of the
execution context of the element template. Contributed by Kineticode.
Added the TT_OPTIONS bricolage.conf directive to allow Bricolage
administrators to pass Template Toolkit options to the Template object when it
is instantiated by the Template Toolkit burner. Contributed by Kineticode.
Added the COMPILE_EXT option to the instantiation of the Template Toolkit
object in the Template Toolkit burner. This will cache compiled versions of
the templates so that they do not have to be parsed and compiled every time a
story is published. This should make the TT burner substantially faster.
Contributed by Kineticode.
Any symbols exported by PERL_LOADER code, plus those exported by
Bric::Util::DBI qw(:junction), are now imported into the Template Toolkit
stash for direct use in Template Toolkit templates, and into the PHP global
context for direct use in PHP templates. For example, the ANY function can
now be used directly in TT templates and as $ANY() in PHP templates.
Contributed by Kineticode.
Completely updated Bric::Templates and Bric::AdvTemplates, with expanded API documentation and examples in Mason, Template Toolkit, and PHP. Contributed by Kineticode.
Added support for the ANY() function to pass multiple possible values for a
given parameter to the list(), list_ids(), and, where pertinent,
href() methods of all Bricolage business classes. Formerly, it was
supported only by the story, media, and template classes. Contributed by
Kineticode.
Added UUIDs to story and media documents. A UUID is a universally unique identifier. The format for UUIDs has been described in RFC 4122, ITU-T Rec. X.667 and ISO/IEC 11578:1996. In Bricolage, they are generated by Data::UUID. Contributed by Kineticode.
Added the exclude_id parameter to the list() methods of the story,
media, and template classes. This parameter can be used to exclude one or more
asset IDs from the list of objects returned by the call to list() and
friends. Contributed by Kineticode.
Added serialize_to_pod() and update_from_pod() methods to the container
element class. These support a modification of the Plain Old Documentation
(POD) syntax that enables a complete hierarchy of elements to be edited,
including links to related stories and media, in a single stream of text. Used
by the improved Bulk Edit
interface. Contributed by Kineticode.
The Order and OrderDirection parameters to the list() methods of the
story, media, and template classes can now be specified as array references so
as to sort on more than one attribute. Contributed by Kineticode.
Added the reset() method to Bric::Util::Job and a
Reset
checkbox in the job profile in the UI so that failed jobs can easily
be re-attempted. Contributed by Kineticode.
Added related_story_id and related_media_id parameters to the list()
method of the story and media classes to search for stories and media that
have a given related story or media ID. Contributed by Rod Taylor.
Added support for searching on URIs in the story class and modified the same
parameter in the media class to search I
Major refactoring of the field types class, Bric::Biz::ElementType::Parts::FieldType. Attributes that describe how fields should be displayed are no longer stored in a separate attribute object, but as true attributes of field type objects. This makes them much more efficient in terms of database access. Contributed by Kineticode.
Changed various get_data(), set_data() del_data() and such methods to
get_field_types(), get_value(), set_value(), add_field_types(),
etc., to disambiguate fields from field types more consistently. Contributed
by Kineticode.
Added get_values() and set_values() methods to the field class
(Bric::Biz::Element::Field) to make getting and
setting multivalue fields easier and more centralized. Contributed by Kineticode.
The pre_path and post_path attributes of output channels have been
eliminated, since arbitrary strings can now be used directly in the URI
formats, making these attributes obsolete. Contributed by Kineticode.
Added get_primary_category() alias for get_category() in the media
document class so as to make it more like the story class, thus making
dispatch simpler. Contributed by Kineticode.
Fixed the get_value() and get_container() element methods so that, in
list context, they return undef instead of an empty list when there is no
corresponding field or element. This will be especially useful in templates,
where it will prevent errors such as Mason’s, Odd number of parameters passed
to component expecting name/value pairs.
Contributed by Kineticode.
Added the element type set and output channel modules to the SOAP interface. Contributed by Scott Lanning.
Added much more fine-grained field type management to the Element Type SOAP
interface. More field attributes can now be updated via SOAP. For example, one
can now change the widget type from text
to textarea
. These improvements
are thanks to the normalization of the element type and field type classes.
Note that there are a number of new XML elements, and some of the existing
ones have changed names, but we have tried to preserve backwards compatibility
as much as possible. Contributed by Kineticode.
Now require Perl 5.8.0 or newer. Realistically it should only be 5.8.3 or newer. Contributed by Kineticode.
bric_republish now uses the published_version Bric::SOAP::Workflow
parameter to always republish the last published version of a story. This
means that even if a story is checked out, it can be republished without
interfering with the checkout. Contributed by Kineticode.
Added $INSTALL_VERBOSITY makefile environment variable that, when set to
QUIET
, eliminates many of the questions asked during installation and
cloning, falling back on the default values. Contributed by Rod Taylor &
Andrea Rota.
Added $USE_DEFAULTS makefile environment variable that, when used with
$INSTALL_VERBOSITY, will use platform-specific answers to all of the
installation questions. This allows for completely silent, customizable
installations, which are necessary for packagers. Contributed by Marshall
Roch.
When using the command line tools, you can now opt to be prompted for your password rather than entering it on the command line, which would store your plain text password in the shell history. Contributed by Marshall Roch.
Alert emails now use an email address, if one can be found, for the user who
triggered the alert event for the From header in the alert email. The
ALERT_FROM bricolage.conf directive is still used as the fallback.
Contributed by Kineticode.
Story and media cover dates are now versioned. Contributed by Kineticode.
Publish and distribution jobs are now tied to a specific version of a story or media document, rather than the media document itself. This will allow a whole series of publishes for versions of a document to be scheduled for execution over time, as well as help to protect currently checked-out documents from being mysteriously removed from workflow by scheduled publishes being executed. Sponsored by Freerun Technologies.