Movable Type Documentation > Movable Type 4.1

Movable Type 4.1 Change Log

The following is a change log for Movable Type 4.1. It includes a list of all feature enhancements and bug fixes that have been introduced since the release of Movable Type 4.01.

Features

  • The Commercial version of Movable Type now fully incorporates the popular Custom Fields plugin into its distribution. This feature allows users to define their own custom fields on a blog-by-blog and system-wide basis for users, entries, pages, categories and folders.
  • Template Sets - developers can register template sets through the plugin API, and users can select and apply template sets to new and/or existing blogs.
  • Database enhancements and new indexes from mediatemple
  • The compose screen for entries and pages has been slightly redesigned.
  • The backgrounds across the entire application have been touched up to make the content on the page easier to read.
  • The design and positioning of the "Display Options" flyout has been updated.
  • Assets are now editable - the edit screen has been augmented as well with a lot of meta data about the asset including the display of the posts it is included within
  • Support for Windows LiveWriter has been added - the XMLRC functions wp.newPage and wp.editPage have been added. One caveat however, MT does not yet automatically create folders for you based upon the presence of slashes in the basename.
  • Javascript and CSS files are now minimized during the build and packaging process for production builds to increase performance and download speeds of said files.
  • Template transformation callbacks are now called for templates included via the MTInclude tag.
  • Password recovery email now includes link to application to login.
  • Movable Type's Rich Text Editor is now completely modular allowing a developer to create a plugin to swap in the rich text editor of their choice. A plugin for the FCK editor has been created by Six Apart and will be posted to the plugin directory.
  • The Publish Queue now outputs far more useful information in verbose mode to assist in debugging and log analysis.
  • Two Movable Type installations (on the same host or on different hosts) can now share the same Memcached server without clobbering each other's data. A new config directive MemcachedNamespace was added to support this.
  • Added a new file deletion callback for the WeblogPublisher - meaning that plugins can now hook into the event when a file is physically removed from the file system by MT (http://www.movabletype.org/documentation/developer/callbacks/file-deletion.html)
  • Movable Type template tag language has been expanded a great deal to include new control flow constructs (If, Else if, Else), looping constructs (for), arithmetic operators (plus, minus, etc) as well as new variable types (hashes, arrays, etc). See also: http://wiki.movabletype.org/TemplateTagsasaProgramming_Language
  • Added support for categories element in metaWeblog newPost method - allowing an entry to be created and assigned to categories in a single request
  • Support for 'wpslug', 'wppageparentid', 'wppageparenttitle', and 'wppageorder' elements in metaWeblog API which is an alias to mtbasename in an effort to create as broad support as possible for our APIs
  • New multiblog include/exclude blog syntax supported: ranges. For example: blog_ids="1-10,33,50-60"
  • When a quick search is executed for an object ID and object exists with that ID, then MT will take you directly to that object's edit screen.
  • When a quick search is executed and the result set has only one item, then MT will take you directly to that item's edit page.
  • The upload dialog has been improved to increase performance by minimizing the number of page requests made. The "Upload File" button now used javascript to show/hide a form already on the page, as opposed to kicking off another app request.
  • News from Learning Movable Type website is now syndicated to the Movable Type dashboard
  • A new list action has been added to the index templates screen - the ability to republish a list of selected index templates in a single batch operation. This renders the popular "Power Rebuild" plugin obsolete.
  • 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.

Bug Fixes

  • prepare_cached warning in Publish Queue logs has been fixed
  • The root cause of the error found in Publish Queue logs "Odd number of elements in hash assignment at lib/MT/Author.pm line 393. Use of uninitialized value in concatenation (.) or string at lib/MT/Author.pm line 397" has been fixed.
  • The produce name as it appears in the footer has been tweaked so that regardless of what version of Movable Type a user has installed (MTOS, Personal or Commercial) there is no ambiguity.
  • Incorporate a patch to make mt.cgi compatible with Perl 5.9.5
  • Windows Server users reported a problem where they were unable to change their site root if their site root ended in forward slash because javascript was not being escaped properly on the page. This has been fixed.
  • This error was reported when trying to view the feed from the Manage Entries screen, "An error occurred while generating the activity feed: Can't call method "is_superuser" on an undefined value at lib/MT/App/ActivityFeeds.pm line 386." This has been fixed.
  • Template editor no longer adding blank lines to the end of the template each time template was saved (this bug only affected IE users).
  • Tags removed from tags field on the edit entry screen were not getting removed from the entry upon saving. This has been fixed.
  • Movable Type was not applying the designated moderation policy to comments from local users. This has been fixed. Comments made from within the app in response to other comments will still get published immediately regardless of moderation policy.
  • Mark Carey reported an issue where certain transformation callbacks were not always being fired properly because MT did not consistently strip path information from the template being transformed (e.g. dialog/foo.mtml was being transformed in some contexts but not others because sometimes the 'dialog/' path was ignore by MT). To fix, now all template transformation callbacks will first strip path information from the template being transformed.
  • When two template maps were applied to the same template and a user deleted the preferred one, then the remaining template map was not automatically being set to preferred. This has been fixed.
  • The "Search Users" function in Grant Permissions dialog was only returning the current user in the results. This has been fixed so the whole MT install is searched.
  • Spamlookup regex handling no longer chokes on group references e.g. "{,5}"
  • The WordPress WXR importer now handles more gracefully issues revolving around WordPress' outputting of invalid XML in their export format. In this case MT will now attempt to correct the invalid XML before the import to allow for a clean and smooth import process.
  • MSWord Character substitution was not performing designated substitution rules. This has been fixed.
  • FlashTag.js now declares proper flash version prerequisite (version 8 as opposed to 7)
  • Usernames are no longer used in the To: header for outbound emails (display name or email address will be used)
  • The login form that lists the various login options now lets the user click on the icon for the service to select that service in addition to the name of the service
  • Itemset actions for entries appear for pages as well and vice versa.
  • mt-check.cgi shows misleading message when it ran on Perl version older than 5.6.1. The message was changed to tell MT4 would not run on Perl older than 5.6.1.
  • Faulty template code found within an tag will now actually be ignored during the linted process as well as the publishing process.
  • MTEntries with MultiBlog modifers such as includeblogs and blogids now works correctly in archive templates. Thanks Fujimoto@Alfasado who reported the issue.
  • " name="html" /> was not working because MT was mistaking the "/>" as the terminator for the tag.
  • A bug in which the upgrade process was being kicked off again and again randomly, even after an upgrade, has not been reported by users for several months. This bug is being marked as resolved.
  • Template refresh plugin has been folded into the core - users should remove this from their distribution
  • Plugin settings can now be registered using yaml files
  • Slight color shifts have been made to the app to more closely coordinate with color shifts made to the logo
  • Wizard now generates StaticFilePath
  • URL Custom Fields validated as well formed URLs
  • 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.

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-12-13, 14:55.  

2 User Contributed Notes

No mention on here if the customfields beta data import bug has been fixed?

Byrne Reese Author Profile Page said:

The release candidate we are about to ship today has the fix that will import your old custom field data into MT4.1.

Submit a User Contributed Note

User contributed notes are a great way to share the knowledge you have gained in using Movable Type.

If you have a technical question or problem, please visit Movable Type Support.

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