Bricolage 1.9.1 Peeves
Changes
2005.10.28
New Features
Added support for the
ANY()
function to pass multiple possible values for a given parameter to thelist()
,list_ids()
, and, where pertinent,href()
methods in the following classes:[David]
Added
serialize_to_pod()
andupdate_from_pod()
methods to the container element class. These support a pseudo-pod syntax that enable a complete hierarchy of elements to be edited, including links to related stories and media, in a single stream of text. [David]Converted
Bulk Edit
in the UI to use the new POD syntax supported by the element classes and eliminated the oldSuper Bulk Edit
interface since it became redundant. [David]Added the
Include deleted
checkbox to Advanced Search inFind Stories,
Find Media,
andFind Templates
intefaces; this allows searching for and reactivating deleted stories, media, and templates. [Scott]Added the
Subelement
select list to theFind Stories
interface, to allow searching on stories by the types of subelements they contain. [Scott]The
Order
andOrderDirection
parameters to thelist()
methods of the story, media, and template classes can now be specified as array references so as to sort on more than one attribute. [David]Added
Order
,OrderDirection
,Limit
, andOffset
parameters to thelist()
method of Bric::Util::Event. [David]Added diff support to the UI to see changes between versions of templates, stories, and media documents. [David]
Added JavaScript-powered Find/Replace dialog box to Bulk Edit in the element profile and to the template profile. The
Replace All
function should work very well everywhere, while theFind
function relies on IE- and Mozilla-specific features to properly highlight found text in the textarea box searched. Other browsers will get an alert indicating at what character the match was found. [David]Added new
Code Select
custom field allows you to add arbitrary Perl code to generate the items in a select list. This is great for dynamically pulling in choices from another database, LDAP directory, or anything else you can get at from Perl code. [Scott]Added ability to shelve a story from a desk or My Workspace. [David]
Added
reset()
method to Bric::Util::Job and aReset
checkbox in the job profile in the UI so that failed jobs can easily be re-attempted. [David]Added
Cheat Sheet
dialog box to Bulk Edit that displays the entire hierarchy of available subelements and fields as the pseudo-podtags
available for use in bulk editing content. [David]
Improvements
Added
related_story_id
andrelated_media_id
parameters to thelist()
method of the story and media classes to search for stories and media that have a given story or media ID or list of IDs as relateds. Based on a patch from Rod Taylor. [David]Moved story, media, and template notes into a column in the appropriate instance table, instead using attributes, and then removed the story, media, and template attribute objects. This is a much more efficient use of the database and eliminates a lot of cruft. [David]
Added
has_notes()
method to Bric::Biz::Asset (and therefore its story, media, and template subclasses) as a more efficient way of determining whether an asset has notes for any of its versions than calling theget_notes()
method. [David]Added
note
parameter to thelist()
method of the story, media, and template classes. Unlike most of the parameters, this one will return assets withany
of their versions having a note matching thenote
parameter. [David]Updated search documentation and wrote tests for:
[David]
The new
Repreview
iframe now works for the links in subelements, too. [David]Category and story URIs now all end in a slash. This is so that they all behave consistently with root categories and home page URIs, and so that they properly indicate directories. Note that this does not apply if the
STORY_URI_WITH_FILENAME
bricolage.conf directive has been enabled. Note to Templaters: You may need to modify your templates to take into account that story and category URIS now end in a slash, if you were appending a slash in your templates or searching on category URIs for related stories. [David]Now require Perl 5.8.0 or newer. Realistically it should only be 5.8.3 or newer. [David]
Added support for searching on UUIDs to the story and media classes. [David]
Added support for searching on URIs in the story class and modified the same parameter in the media class to search all possible URIs for media, not just the URI associated with the primary output channel. [David]
The select list of fields and subelements that can be added to an element now lists all of the fields and subelements in alphabetical order. [David]
Improved JavaScript word and character counts in Bulk Edit so that they’re actually accurate, including when POD tags are present. [David]
The word and character counts in Bulk Edit are now kept up-to-date as you type. [David]
Added the current element object to exception object in
throw_burn_error
and, by extension the burnerthrow_error()
method. Now a kind of breadcrumb trail will illustrate where in the element hierarchy of a story a burn error was thrown. (Note: this only works for exceptions thrown bythrow_burn_error
.) [Scott]Fixed the
get_data()
andget_container()
element methods so that, in list context, they returnundef
instead of an empty list when there is no corresponding field or element. This will be especially useful in templates, where it will prevent errors such as Mason’s,Odd number of parameters passed to component expecting name/value pairs.
[David]Renamed the
related_instance_id
attribute of elements torelated_story_id
, for parity withrelated_media_id
#&x2014;not to mention theget_related_story()
method. Theget_related_instance_id()
andset_related_instance_id()
accessor methods remain in place for purposes of backwards compatibility. [David]Renamed
Element
toElement Type
andElement Type
toElement Type Set
. This is to avoid confusing element types, which define the structure of elements, and elements, which are contain content and are based on element types. These are not ideal names, but at least we now have something different to call them. The oldget_element()
method and the accessors that get and setelement_id
orelement__id
have also been renamed toget_element_type()
and to accesselement_type_id
. [David]Changed the attributes and objects that refer to the Bric::Biz::ElementType::Parts::FieldType object in Bric::Biz::Asset::Parts::Tile::Data from
element_data_id
andget_element_data()
tofield_type_id
andget_field_type()
. [David]Made the scroll bar
sticky
in the Story Profile, so that when you save a story, the reload will scroll back to the same spot in the story profile where you left odff. [Scott]Added a
dialog box
widget for generating JavaScript-driven dialog boxes. The buttons are nicely styled to match the Bricolage UI, and can be configured to trigger JavaScript functions. Dialog boxes can also be dragged around the browser window by grabbing their title bars. Used by the new Find/Replace and Bulk Edit Cheat Sheet features, but will likely be used in other contexts in the future. [David]Normalized story and media elements and fields so that they no longer store copies of their names, key names, and descriptions—and, in the case of fields, the autopopulated and sql_type attributes—since these are actually element type and field type attributes easily referenced in the element type and field type tables. This change significantly reduces the size of the database and has the potential to increase performance when getting and setting field values, especially during publishes. [David]
Major refactoring of the field types class, Bric::Biz::ElementType::Parts::FieldType. Attributes that describe how fields should be displayed are no longer stored in a separate attribute object, but as true attributes of field type objects. This makes them much more efficient in terms of database access. [David]
Added fuller management of field types in the Element Type Manager, such as supporting the setting of a default value in a checkbox field in the field profile. [David]
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
totextarea
. These improvements are thanks to the normalization of the element type and field type classes. Note that there are a number of new XML elements, and some of the existing ones have changed names, but we have tried to preserve backwards compatibility as much as possible. [David]Added many new tests for the element type, field type, and element classes. [David]
Renamed
Element Data
toField Type
. [David]Renamed a number of tables and appropriate foreign key columns, indexes, constraints, and the like, to better reflect the names used for these things in general. The tables renamed are:
[David]
Fixed a bunch of inconsistently named foreign key indexes. [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. [David]
Changed various
get_data()
,set_data()
del_data()
and such methods toget_field_types()
,get_value()
,set_value()
,add_field_types()
, etc., to disambiguate fields from field types more consistently. These changes are to the interfaces of Bric::Biz::ElementType, Bric::Biz::ElementType::Parts::FieldType, and Bric::Biz::Element::Container. The old methods are of course left in place for purposes of backwards compatibility. [David]Added
get_values()
andset_values()
methods to the field class (Bric::Biz::Element::Field) to make getting and setting multivalue fields easier and more centralized. [David]Removed the unused and meaningless
referenced
attribute from Bric::Biz::ElementType. [David]Removed the unused and meaningless
publishable
andmap_type_id
attributes from Bric::Biz::ElementType::Parts::FieldType. [David]Turned Bric::Biz::ATType into an appendix: something that’s there, and may have served a purpose in the past, but isn’t needed now. All of its attributes have been moved to Bric::Biz::ElementType, and you should still be able to get the ATType object from existing elements, but new elements won’t need it anymore. It has been removed from the UI, but the SOAP interface and the class itself remain for now. Bric::Biz::ATType will be completely removed in a future version of Bricolage. [David]
The Element Type profile no longer displays the
Sites
section if there is only one site, and no longer displays the output channel section if there is only one output channel. [David]Renamed Bric::SOAP::ElementType to Bric::SOAP::ATType, Bric::SOAP::Element to Bric:SOAP::ElementType|Bric:SOAP::ElementType, and Bric::App::Callback::Profile::ElementData to Bric::App::Callback::Profile::FieldType. [David]
Added support for typical Windows character encodings. This means that users can select
Windows Western (CP1252)
as their encoding in order to fix gremlin characters pasted from Microsoft Word. [David]It is now fatal to submit characters in an invalid encoding. For example, if a user is using UTF-8 (the default) but pastes the contents of a Word document with an m-dash (a CP1252 character), Bricolage will now throw an exception. It probably threw an exception from the database in the past, but now we’re throwing one earlier. The solution for such a user is to of course select the proper encoding in their
Character Set
preference. [David]New categories now inherit all group memberships and permissions granted to access assets in the category from their parent categories. This makes it far easier for users with CREATE permission to categories to create new categories without having to then edit group memberships and user group permissions to make them the same as the parent’s permission, which is what is usually wanted. Of course, existing categories are unaffected, and if user needs different group memberships or permissions than the parent, she will still have to edit them. [David]
bric_republish now uses the
published_version
Bric::SOAP::Workflow parameter to always republish the last version of a story to be published. This means that even if a story is checked out, it can be republished without interfering with the checkout.The User and Contributor managers in the UI now use the List Name Format preference to display the whole names for users and contributors. This allows users to easily see whatever name parts they need by simply changing their List Name Format preferences. [David]
Alert emails now use an email address, if one can be found, for the user who triggered the alert event for the From header in the alert email. The
ALERT_FROM
bricolage.conf directive is still used as the fallback. [David]The
pre_path
andpost_path
attributes of output channels have been eliminated, since they can now be used directly in the URI formats. [David]The admin tools are now listed in alphabetical order in the side navigation of the UI. [David]
Added
get_primary_category()
alias forget_category()
in the media document class so as to make it more like the story class, thus making dispatch simpler. [David]Users creating media documents from within a related media element (because the
RELATED_MEDIA_UPLOAD
bricolage.conf directive has been enabled and they have the proper permissions) are now redirected to theNew Media
profile when the new file has been uploaded, so that the element type, category, cover date, priority, etc. can be changed. [David]Story and media cover dates are now versioned. [David]
Output channels are now associated with burners and can only include other output channels associated with the same burners. Element types are no longer associated with burners at all. [David]
Renamed Bric::Biz::Asset::Template to Bric::Biz::Asset::Formatting. [David]
Added the
TT_OPTIONS
bricolage.conf directive to allow Bricolage administrators to pass template toolkit directive options to the Template object when it is instantiated by the Template Toolkit burner. [David]Added the
COMPILE_EXT
option to the instantiation of the Template Toolkit object in the Template Toolkit burner. This will cache compiled versions of the templates so that they do not have to be parsed and compiled every time a story is published. This should make the TT burner substantially faster. [David]Publish and distribution jobs are now tied to a specific version of a story or media document, rather than the media document itself. This will allow a whole series of publishes for versions of a document to be scheduled for execution over time, as well as help to protect currently checked-out documents from being mysteriously removed from workflow by scheduled publishes being executed. Sponsored by Freerun Technologies. [David]
Searches now are remembered for each manager in the UI for as long as a session lasts. So if you perform a search for element types, and then do a search for stories or output channels, the last results you saw in the element type manager will be there again when you return to it. [David]
Eliminated need for HTTP::BrowserDetect, since the UI is now completely browser-neutral. [David]
Media files can now be uploaded in the New Media profile. [David]
Added events for adding subelement element types to element types. [David]
Any symbols exported by
PERL_LOADER
code, plus those exported byBric::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, theANY
function can now be used directly in TT templates and as$ANY()
in PHP templates. The burner constantsPUBLISH_MODE
andPREVIEW_MODE
can also be used$PUBLISH_MODE()
and$PREVIEW_MODE()
in PHP) if the defaultPERL_LOADER
in bricolage.conf is left in place. But TT can’t have multiple symbols with the same names, so for each symbol exported, it adds to the stash the first one it finds in this order: CODE, HASH, ARRAY, IO, GLOB, FORMAT, and SCALAR. Use of imported functions in PHP templates requires PHP::Interpreter 1.1.0 or later. [David]The story, burner, element, and content variables are now globals in PHP templates, rather than each being stored in a global $BRIC associative array, which is now gone. This brings the style of PHP templates more in line with that of Mason and Template Toolkit templates. [David]
Bric::SOAP::Workflow’s publish method now schedules a publish job instead of immediately publishing, thus allowing the
publish_date
parameter to actually work, and ensuring that the proper version is published. [David]