Movable Type Documentation > Boomer

Boomer Change Log

The following is a change log for Boomer, or Movable Type 4.1. It includes a list of all feature enhancements and bug fixes for the release.

Changes between 4.01 and 4.1

Bug Fixes

  • Changes to template modules were not getting picked up by Publish Queue - they would change, but PQ would never see the changes unless you restarted the daemon
  • MT4 now works properly with ActivePerl 5.6.1
  • Saving changes to multiple entries via bulk edit entries screen did not call pre_save callback for each entry. Also, saving changes to multiple entries sometimes processed each entry twice. Both bugs have been fixed.
  • With static publishing, it is possible for a tag handler to determine the active tag name being processed, regardless of type of tag (block, function, conditional, etc). But for dynamic publishing, it has only been possible to determine the name of the block handler in context. With dynamic publishing, the $ctx->current_tag() function should yield the tag name of the tag being processed, regardless of whether a function or block tag handler is being called. This is important since we may want to declare the same handler code for multiple tag names, and it would be necessary to query which tag name was being invoked to begin with.
  • Errors are now properly caught via the MT::Template::Context::build subroutine in an edge case - thank you Tim for the catch and fix.
  • Pragma: no-cache now properly set in mod_perl environments.
  • Useless "Close" buttons have been removed from error pages.
  • Having lots of categories made edit entry screen slow in IE 6 and 7.
  • Automatic form fill for captcha has been disabled.
  • All activity log entries are now outputted to a CSV file
  • MT::Objects can now be sorted by their score or rating via the <mt:Entries>, <mt:Comments>, etc tags. Additional filter attributes include: min_score, max_score, min_rate, max_rate, min_count, max_count. FYI - 'score' refers to a sum of all the accumulated ratings, while 'rate' refers to an average of all the accumulated ratings.
  • The reCaptcha plugin that ships in MT's extras folder has been fixed.
  • Images inserted into posts are now wrapped properly in <p> tags when Convert Line Breaks is selected.
  • LiveJournal favicon is now transparent
  • Commenter details not always remembered, even if "Remember Me" is checked.
  • Readme.html file has been localized.

Features

  • A new dashboard widget will be installed by MT automatically when you upgrade to a new version, allowing us to introduce you to the new features of the release.
  • Added a filter for pending users
  • Notification emails can now be modified via transformer callbacks
  • Notification emails can now be overridden using alternate templates
  • New callback: 'mail_filter' - intercept messages before they are sent, transform them, and/or modify them. If the callback returns '0' the email will not be sent.
  • Users are now always informed via a system message that an upgrade has occurred - regardless of whether there was a database schema change or not. This was done to address a common problem among users: confirming that they did indeed install/upgrade the software correctly. Without this message, many were left wondering.
  • PublishQueue will now rsync files for you automatically upon rebuild. Two new config directives have been added: SyncTarget and RsyncOptions.
  • New template tag: <mt:BlogTemplateSetId> - returns the template set id (a string) of the current template set
  • Context Sensitive Template Tag Help Documentation - now whenever a template tag is used, and a help-url has been registered for it,
  • We have updated Movable Type to use version 0.9.6 of CodePress, the syntax highlighting library used by our template editor. Please consult its change log.
  • New for loop template tag:

    <mt:for var="x" from="5" to="10" glue= " | "><p>now x = <mt:var name="x"></p></mt:for>

    This template tag also automatically sets the following variable to used within the context of the loop: __index__ variable (in addition to the regular __counter__,__even__, __odd__, __first__, __last__ variables).

  • New template tag: <mt:IfAuthor> - evaluates to true when an author context exists.
  • Added support the XMLRPC function metaWWeblog.getCategories
  • New template tag: <mt:IncludeBlock> - This tag provides MT with the ability to 'wrap' content with an included module. This behaves much like the MTInclude tag, but it is a container tag. The contents of the tag are taken and assigned to a variable (either one explicitly named with a 'var' attribute, or will default to 'contents'). i.e.:

     <MTIncludeBlock module="Some Module">
     (do something here)
     </MTIncludeBlock>
    

    In the "Some Module" template module, you would have...

      (header stuff)
      <MTVar name="contents">
      (footer stuff)
    
  • New template tag: <mt:CommenterID>

  • Additional filters have been added to <mt:Authors> tag: role and need_entry. The role filter can be used to specify a boolean expression that filters the list of authors by role (e.g. "Designer OR Author"). The need_entry filter is used to produce authors that have written an entry or page in the system.
  • New filter attribute for <mt:Tags> - the top attribute will retrieve the top n tags in the system when all tags are sorted by the number of times they are used. This is a more effective way to retrieve the most popular tags in the system.
  • Email templates are now seeded with complete entry, blog and comment/ping context and variables.
  • Global Template Modules - this feature allows for blogs to share design elements across each other, and for designers to make changes in one place and have those changes reflected globally. These modules exist at the system level and can be accessed and shared by any blog in the system. When MTInclude is used to include a module, a module by the specified name is searched for within the current blog context. If a module by that name is not found, then MT will search global modules for a module by that name. If one is found, it will be used, else, an error will be thrown.
  • Design tab was added to System context to allow users to navigate to and edit Global Template Modules.
  • Global Templates nav item was added to the System Overview pull down menu that appears in any blog context.
  • Improved the <mt:Else> tag to allow for "Else If" conditions: equal to 10 equal to 20 greater than 20 not equal to 10, 20 and less than 20
  • Userpics - Movable Type now supports userpics.
  • Userpic autodiscovery is performed during OpenID authentication
  • New system level user permission: Edit Templates. This new permission allows users to edit templates at a system level.

Default Templates

  • Support has been added to set the page title independently of the html <title> - new variable has been added to default templates "title"
  • hAtom microformat support has been added to the default templates
  • vCard microformat support has been added to the default templates
  • Search box has minor improvements - "Search" is now text inside the search box that will disappear on focus.

Security

  • A XSS vulnerability has been found: the MTErrorMessage tag in the Dynamic Error template outputs non-sanitized urls. Six Apart feels that this threat is relatively minor. It affects users of IE6 only and users of dynamic publishing only. The fix can be made without modifying the core source code as well (as an interim solution) by using the following patch:

    --- default_templates/dynamic_error.mtml
    +++ default_templates/dynamic_error.mtml
    @@ -9,7 +9,7 @@
    <h1><$MTGetVar name="page_title"$></h1>
    <blockquote>
    -    <strong><$MTErrorMessage$></strong>
    +    <strong><$MTErrorMessage encode_html="1"$></strong>
    </blockquote>
    <$MTInclude module="<__trans phrase="Footer">"$>
    

Backend

  • MT::Util::Archive - Re-factored compression and extraction code in Backup/Restore into MT::Util::Archive.
  • Email templates are now stored in the database, as opposed to the file system
  • Memcached is now used to store MT::Scorable values when memcache is enabled.
  • Ampersands in links from within the admin interface have been encoded properly to comply with W3C standards.
  • A user's OpenID unique identifier is now stored within the "external_id" user property.
This page was last updated on 2007-11-29, 14:08.  

Submit a User Contributed Note

(If you haven't left a note here before, you may need to be approved by the site owner before your comment will appear. Until then, it won't appear on the entry. Thanks for waiting.)