Not a developer? Go to


Movable Type 4.25 Release Notes

This version of Movable Type was released March 17, 2009.

Reverted r2567; stop processing archivemaps if the template passed is global.

Tagging MT 4.21 release.

fireball branch from mt4.21 tag.

Updates to support separator attribute for AuthorBasename tag.

Corrected selection of total author count when publishing author archives.

Collect widget metadata before processing widgetset template, to process metadata later.

Restrict access to publish button on the system wide entry listing only to system administrators.

Always specify sort and direction when offset-ing the result.

Set manually publishing option properly for upgrading from MT3.

Added required import.

Fixed regexes for matching unknown tags in expression.

Fixed * Fixed an incorrect condition

Added Archive URL and Root check using JavaScript. Fixed path check also.

Replace backslashes with slashes for URL.

Fixed * Added asset-id into the name of thumbnail file/popup html file

Not to chang relative path link on Rich Text mode.

Fixed * Set ‘0’ to blog_id in term when author does not have permission.

Show only necessary buttons on the publish error screen. ,,

Show only necessary buttons on the publish error screen. ,,

Fixed to convert relative path including ~ for save on FF.

Use loaditer to leverage windowsize to avoid trying to load too many objects at once from database.

Fixed * Applied patch. Thanks Jay.

Fixed * When invalid blog is loaded, re-loading as template based.

Allow plugins to add list filters to template listing screen.

Show only necessary buttons on the publish error screen. ,,

Prevent loading ObjectTags for an empty list of tag_ids.

Test data updated

Fixed to work MTDate properly if blog_id is not applied.

Removed debug print.

Removing the error check that was as old as MT 3.2; you can delete a category which has sub-categories since MTE 1.5 if you call remove method by the object instance (i.e. not the class method).

Fixed to work tag search without blog_id properly.

Calculate 7 days time correctly.

Scope preferred templatemap reassignment using blog_id parameter when available.

Reset MT request object after running a group of upgrade steps when run using CLI tool.

Reduced the queries required to generate the dashboard tag cloud.

Fixed some typos.

Optimization to coreupdaterecords to issue class count once.

Using a custom upgrade function for comment/entry count updates so we can use a group select operation.

Removed debug code.

Only update ping/comment count column if the new count is different.

Support hashvar assignments with setvar attribute (thanks, Jay!). ; Fixed to_json attribute for PHP var tag.

Applied javascript fix for testing the ‘archive paths’ checkbox.

Use loaditer to leverage windowsize to avoid trying to load too many objects at once from database.

Cache tag clouds using MTSection block tag.

Japanese L10N for Fireball. and more.

Added functionality to execute rebild_options code.

Clean up text column of an widgetset template when no widget is included to the widgetset.

Update $offset in continuation. translate_escape should be used in this case.

Removed unnecessary upgrade functions. System- and blog-level permissions can now share the same name, and system-level permission works as expected; it works globally to any blog in the system for the blog level permission of the same name. , ,

Merge sanitize_lib.php changes to fireball main.

Branching for frampton from fireball@3081.

Fixed * Added separator modifier into MTCategoryBasename on Dynamic

Fixed not to show up the private tag on the preview screen.

Removed mt:if tag for performance.

Copy hash to avoid accidental reuse of the hash object.

fix my typo.

Fixed to show cfg_archive error message properly.

check modifiers before stash calling in hdlrentries. mt:entries invokes $ctx->stash for prepopulated entries. stash invoking takes high costs, because it will invoke the MT::Promise object’s force method, if it is. but, if mt:entries was called with some of modifiers, it discards the prepopulated entries after invoked for stash. this change will make that to check the modifiers before stash invoking, and prevents an unnecessary force of MT::Promise objects.

Updating frampton with latest changes from fireball branch: svn merge -r 3081:3095 .

Remove checking permission if user has configure_blog to a blog in the in-app search, to make the list consistent with the list for Manage - Blogs.

Fix for IfCategory tag without ‘name’ attribute (tests for whether a category is in context).

Fixes for else/elseif tags when no ‘name’ attribute is given.

Added extra test cases for if/else tags.

Updated documentation for Tags, PageTags, AssetTags, EntryTags and TagSearchLink with changes from Jay Allen.

Only list assets used in entries/pages.

Clone the ID of global widgets too.

Allow to use case-insensitive keywords.

Reload the original values from the command line and the environment variable.

Check if at least one DBD module is installed.

Fixed to set PluginSwitch and Plugin SchemaVersion properly.

branching for SockFish

Put entry editing fields in a section to provide easy access to template callbacks (brad’s patch)

Experimental pluggable quickfilters (brad’s patch)

Experimental pluggable filter attributes for mt:Entries (brad’s patch)

Copying template test/profile utility to sockfish branch.

tab -> space

add class to comment when commenter is entry author

Merging revision 3129 to sockfish branch.

Redirect instead of erroring when trying to edit an entry but the type is incorrect Default to Entry breadcrumb, body class, etc for undefined non-page entry types

Optimization for hasarchivetype.

Normalize entry saving permission checks by converting to use permission filter system

Handle complex D::OD-style entry classes in archive types Use not-page entry classes in regular archive types (This is probably not how to handle this, but it works well enough for now)

By default list not-pages in Entries loops (probably not how to handle this but works for now)

Add a few db integration tests for classy objects

Fixed case where pages tag is used with a set of entries already in context.

Fixed a warning.

Initialize vars stash element when creating a context.

Experimental feature for linking to template set source for a template.

Fixed a warning.

Removed some debug code.

Removing default stacktrace for query logging.

Let’s not do this this way (revert terms change of r3154; the category/folder discovery part can stay)

Let’s not do this this way (revert r3153)

Let’s not do this this way (revert r3139)

Let’s not do this this way (revert r3137)

Refactored MT::Auth::OpenID to add more extension points for authentication modules that want to add AX, SREG and more extensions support. ,

Merged revision 157 of openid/trunk code to extlib.

Merged r3142 to sockfish, to add handlertocoderef support to “condition” and “loginformparams” that allow commenter authenticator module to control what to appear on the admin screen.

Fixed bug where widgets are sometimes not associated to a widgetset when creating a new blog.

Moving sort operation for widgetsets into DefaultTemplates module, so it affects all uses.

adding logos

Adding jQuery to mt-static

Adding new config setting to control the default template set for new blog creation.

Look directly at object_types, since asking for the whole registry won’t resolve transcluded yaml files

Updated POD.

Changed test for default template set when creating new blog.

Improved structure for fields/display options for compose screen.

Derive archive types for publishing from template set when creating new blog.

Added a local attribute for the include tag.

Fixed invalid overwrite of localblogid.

Updating Net::OpenID::Consumer to 1.03.

Additional OpenID providers: Google/Yahoo/

Refactored GoogleOpenId auth module to use Sockfish specific features such as built-in extension support.

Refactored Yahoo auth module a bit.

Merging the latest changes made to frampton branch. svn merge -r3114:3215 . (three conflicts resolved.)

Changes to IncludeBlock tag to defer evaluation of wrapped section until the variable is actually used.

Adding AIM OpenID support. Thanks to Minh Nguyen for the contribution.

Placeholder version bump for this branch.

Checking in a few google images. Also added a prototype signin form for Google OpenID.

Updated to support ‘any_type’ attribute for the Authors tag as the dynamic engine does.

Fixed Styling Google OpenID signin page and logo.

Adding limit attribute for Authors tag.

Moving ‘translatenaughtywords’ routine to MT::Util.

Moving translatenaughtywords call to MT::Util.

Fixed remaining private ‘convertwordchars’ call.

Load plugin template if the search_api comes from a plugin; . Thanks Chad Everett for pointing out this bug!

Updating JSON package to 2.12.

Updates for JSON 2 compatibility.

Updating for JSON 2 interface to suppress warnings.

Don’t package mt-config.cgi

Updating for JSON 2.

Return appropriate HTTP Content-Type header value for search results feed.

Making make_commenter a MT::App method.

Fix to prevent double-encoding of query parameters.

Apply post-processing handlers when calling the tag method.

Remove requirement of a templatemap when using the ArchiveList tag.

Fixed * Separated count of all tags from mtentrytags/mtassettags

Fixed sqlite driver to prevent from locking database during a load_iter operation.

Fixed * Not assigning basename when basename was already assigned

Fixed * Repaired loophole. Now blog level association list is redirect to dashboard.

Fixed * Repaired loophole. Now blog level association list is redirect to dashboard.

Escape backslash for handling the html string tags properly.

Improved error reporting for a missing blog.

Escape url parameter for links.



Break these into different phrases

Can string columns in index definitions include prefix lengths? Survey says yes (in mysql) Include prefix lengths of partially included columns in result of DDL::mysql::index_defs

Shorten namespace column to bring the nsipds_obj index under the length limit for mysql utf8 tables

Test shortened column indexes separately as we only support it in mysql

Test author_id column when removing author-based archives.

Oops. removed unnecessary strings.

* Changed word ‘TypeKey’ into ‘TypePad’

Added registration link on comment settings page.

Bump schema version so the upgrader will shorten the ObjectScore namespace column

Added entry type class to blog stats entry widget.

Fixed * Changed to MT->build_page instead of MT::Template->output

Fixed * Added checkbox into Create User screen

Fixed to add escape html to widget for script tag.

Fixed * Fixed for automatic blog provisioning when user registered via blog side

Save editor fields value properly.

Fixed * * Replaced to use Transformer instead of direct injection

Fixed * Changed to return undef when page does not have folder.

Fixed All publsh links for a blog go to the same pop-up window.

Fixed * Added to support square modifier

Reset comments form preview value for using browser back button.

Removed ‘_’.

Tell the user why those authentication methods are disabled. Also allow plugins to customize the reason message.

Fixed * Added to support square modifier

Fixed * Added flac and m4a

Fixed * Applied patch. Thanks, Jay

Distinguish global- and blog-template module in mt:include loop.
Thanks Jay Allen for the patch.

Reverting the change at r3123. Page Archive is a entry archive.

build_page to build, because the page is more a public blog page than a admin template.

Added lower_case modifier to “No Blah Templates could be found” message. Thank you, Jay Allen!

Fixed * Added configuration directives to enable user’s to add their own file types. Thanks, Jay Allen! * Added flv, mkv, ogm support. Thanks, Su!

Fixed mtUserOnLoad do test for existence of from buttons. Thank you, Su!

Adding thickbox jQuery plugin for image popup functionality.

Require MT::Plugin for both initaddons and intiplugins.
Thanks Jay Allen for the patch and the detailed explanation.

set global variables before load mtcorecompact.js

Moved current tag style for feed templates.

The previous line should have been removed.

Restore PublishCharset setting for Wizard to finish without garbling characters in the following screens.

Oracle and MSSQL requires ID column back when unique is used in conjunction with.

Fixed to refresh template set properly.

Fixed deleted definition of tab-bg-yah.gif

Call translatetemplatized if the template is loaded from searchtemplate path via filesystem.

Check image driver and change userpic selection. show dashboard message if needed.

POD update. Thanks Steve!

removing old page archive files and publishing new, when folder was deleted.

if RebuildAtDelete config directive was off, do not remove/publish page archive on removing folder. additional fix for changeset:3295

POD updates from the patch created by Jay Allen. Thanks Jay!

Fix for IE Duplicate Characters Bug.

Fixed typo

Fixed * Checks angle brackets when user registration via blog side

Fixed ImageDriver error detecting.

L10N Japanese for sockfish.

  • Fixed typo

  • Revision: 3304

Added a required file for thickbox plugin.

EMEA L10N, iteration 1 (spanish still missing)

EMEA L10N iteration 1 Spanish

Go back button on the error page sometimes did not work as expected. , ,

fixed bug that the template preview screen show 404 error if the template’s outfile has slash.

POD updates from Jay Allen and Su. Thank you! , ,

Made the initdb work.

Icon image background was not transparent in IE6.

Added need_association attribute to MTAuthors.

EMEA L10N touchups

Changing mime type from application/octet-stream to image/png to match others in repo in order to attempt to fix the Trac error message about the file

Do not save Google OpenID URL as the user’s URL because it does not navigates to web-browsable page.

Get rid of garbled characters showing with PublishCharset on recent actions.

Updates to support embed field sanitization. Case # 84174

Remove UTF8 flag after to_json to prevent garbled characters.

Updating build instructions.

Reverted a call to utf8_off to prevent username from becoming garbage.

Reverted r3319. This one requires more investigation.

Wrapped JSON::to_json call with decode and encode of the content as JSON requires, to avoid garbage characters.

Do not modify the original argument because it may be re-used.

adding docs for categories and subcategories

Changing other ‘columnvalues’ calls to ‘getvalues’ where returned hash is later altered.

Support for mtinclude with file attribute outside of a blog context. Case # 80465

Adding support for configurable FastCGI process limits.

Stop stringifying numeric values!

Fixed * Changed to fetch target categories only

Added Facebook Connector support to the generic header template for IE6.

Do not include IP address when loading the record of previous scoring if the user is identified.

useless blank of Category/Folder CF was disappeared in IE6.

Added three OpenID authentication services that are widely used in Japan (Yahoo! Japan, livedoor and Hatena).

Added icons of three OpenID authentication services that are widely used in Japan.

Added logo_small key for

Added logo_small key for

added predirectremove hook point.

Fixed * Added binary parameter for check for file_path

Added condition to specify active menu item.

Merged remaining changes from Frampton to Sockfish.

Removed over-escaping.

Removed over-escaping.

Fixed * Added class for dynamic side * Google, Yahoo, AIM, WordPress, YahooJapan, livedoor, Hatena

Suppress a warning.

Suppress a warning.

Do not encode JSON after it’s formatted to JSON.

Use datasource value if class_type doesn’t resolve to a class.

URL encode the value.

removed GoogleBlogs and GoogleNews from MANIFEST.SKIP file. .

Fixed * Changed to using loaded data instead of local file

Fallback to MT::Asset if the binary was not actually an image.

Return early if image is require but uploaded file is not.

fixed for looking up ExcludeBlogs parameter correctly. bugzid #83810.

Added Japanese translation.

Suppress warnings.

Added optional modules to mt-check. ,

folder names didn’t have the link.

Added blog context to the query parameter to recieve it back later.
Also added triple encoding of static parameter (url) to survive TypePad’s decoding of it.

Modifed doc link to something more useful.

Sort by name just as the list is first sorted to prepare the dialog.

Added Japanese Translation.

Fixed * If case-insensitive search, use ‘ilike’ instead of ‘like’

Don’t ignore blog_id, even if having no ExcludeBlogs parameter. .

Update commenting icons.

updating docs for filters template tag modifier

undeprecating SetVar in docs

Added a translation for Crypt::SSLeay.

Fixed * Returns blank strings when text was undef

Removed escaping from a phrase generated by the app. This garbles date formatted string in some languages.

Enhancing TransparentProxyIPs config setting.

Fixed some warnings.

accepting arrow operator as a class method in handlertocoderef routine. .

Stop including undef in the hash.

Added anchor to Japanese translation.

Reverting these checkins from r3367. ,

Encode error message in the wizard.

Moved default sort/direction arguments above the ‘list_filters’ handler for entry and trackback listings.

guleless entry content didn’t overflow.

Removed double escaping from dashboard widgets.

Removed trans.

Added __trans tag and revised translation.

Added scoring_to modifier to mt:Authors tag. .

Run through the process and do not return the error when search string was not specified to mt-search, to enable MTNoSearch tag again. ,

Added validation filter for email address. .

added docs for mt:authors tag’s scoring_to attribute.

Merged StyleCatcher 2.2 to sockfish from mtplugins/tags/StyleCatcher-2.2. Since sockfish contains a few fixes that SC-2.2 doesn’t have, I call this version 2.3. 2.3 requires newer JSON module that sockfish has in its extlib.

Bumped up max_size of the useragent which is used to download styles.
Thanks Mike for the patch!

Removed doc_link per suggestion from Su.

Updates to support antispam filtering for community blog posts.

Fixed * Added require for URI

Added dynamic side of scoring_to modiifer of mt:Authors tag.

Check the validity of URL.

Check the validity of URL.

Wrapped a phrase in trans.
Also added another hack for translating date format correctly in Japanese.

Save all checked field and added customizable field to show. ,92794

JP L10N. Case # 91693

Allow blank input to the URL field.

layout of Spamlookup keyword setting screen didn’t break for IE6/7.

Spam icon was displayed in entry stats widget of create/Edit Entry. Styling for junk message box.

Don’t ignore needentry argument when scoringto was set.

Removed the JavaScript error to work ‘Reset defaults’ function.

EMEA L10N update

L10N update

A comma should also be escaped when it is included in CSV.

Attention icon dosen’t move even if details of spam are displayed.

Added new permission called manage_users which can view/add/remove blog members. .

Conditionalize the use of blog context where appropriate.

Optimizing binary query of MySQL by adding non-binary, but otherwise the same where clause in the generated SQL.

fix for last commit that to adding ‘manageusers’ permission. * fix modal dialog to be able to add new association. * now ‘manageusers’ can remove users from blog.

Don’t show errors and just ignore, if administerblog was added with manageusers permission.

Added to retrieve more translation phrase for yaml files.

Revise phrase for applying translation.

Fixed * * Does not re-bless if package is not a MT::Asset::Image

hid editting link from each commenter on list_member screen, if login user isn’t superuser. .

Fixed * Does not display recovered-time if template is global template because MTDate does not know which blogid to use. Thanks Jay

Don’t permit ‘manage_users’ to revoke superior roles. .

Show pseudo user association list_member table.

Don’t permit ‘manage_users’ to remove blog administrator. .

Revised translation phrases.

EMEA L10N: es, fr, de update

Updates to support spam log display for junked/moderated posts.

Show (newly created user) on the blog level Manage User screen only when applicable.

Revised Japanese phrases.

enabled “trust commenter” button for MT native authors. .

Fixed * * Changed message if status is moderated

Long log message doesn’t influence the layout.

updated SOAP::Lite to 0.55. .

Revert translations for password hint phrases.

Hide the anchor tag when there are no docs available.

updated SOAP::Lite to 0.710.08. . * added in extlib. * make sure to load in MT::XMLRPCServer::Util.

Added new translation.

Override mkterm instead of add_where so the transform will happen no matter how the terms is created.

oops. added forgotten files for SOAP-Lite 0.710.08. .

Fixed * check package which is a MT::App?

adding UTF8 flag for response data to be fit for new version of SOAP::Lite. .

Fixed * Changed to status as NOT JUNK when user clicked approve link

Check word boundary to better process tag attribute.
Thanks Jay Allen for the report and the patch!

Fixed to be able to sign in using OpenID without blog_id.

Fixed * Implemented spam entry auto-remove

don’t show Junk entries on entry listing default screen. .

Fix for Authors tag when testing for role/roles attribute.

Fixed variable name typo.

Fix for case where username is invalid.

Fixed weird text overlaps scrollbar and image hides it for IE6/7.

fixed status filter didn’t work in entry listing screen. .

fixed MTEntryCommentCount tag returns old value at MultiBlog triggerd publishing. , , . also fixed same problem about tbping, too.

Revised translation.

Removed html escape from formatted date for IP banning list.

Don’t show ‘Batch Edit Entries’ action if junk entry will be listing. .

Moved to preferences menu.

Fixed to show up Scheduled/Pending/Spam status properly for entries feed.

Fixed BugID #96870 * Added html escape

Added parents method to IPBanList for it to be restored to the correct blog.

Updated copyright years to 2009.

Don’t show pending and spam filter options if page listing screen. .

fixed cannot open page batch editor. .

Added MTIfExternalUserManagement for knowing enable or not.

Updated copyright years to 2009.

Skip checking same label for folder.

  • Merged the ForgotPassword integration from MT4.24

  • Revision: 3465

Fixed syntax error.

Stringify tags so it can be substring’ed later.

fixed “Save and Publish” button doesn’t appear, however the template has publishable maps. .

  • Removed password hint from templates bugid: #99175

  • Revision: 3481

Trim spaces from email address and username BugID: #99304

Added IfCommenterRegistrationAllowed tag to get the commenter registration status.

  • Added unlocalized variables into the localvars.

  • Revision: 3484

  • Bug(s): 99357

Do not require blog_id here.

oops, I deleted ‘save and publish’ button from all index template at changeset 3480. this checkin recover that. .

Fixed not to check nickname and email for external authentication.

  • Fixed for work to MTEntries , 100270, 100272

  • Revision: 3489

  • Bug(s): 100269

EMEA L10N update

fixed regex in compiletagfilter. .

Use blog_id if it’s applied.

refactoring compiletagfilter regex. . * added comments * fixed short regex issue.

  • Changed point of url when returnto url was not found. bugid: #98677

    • from mt.cgi then redirect to dashboard.
    • from other cgi then redrect to commenter’s edit profile screen.
  • Revision: 3494

  • Fixed typo
  • set blog ID when provided

  • Revision: 3495

  • Bug(s): 100287

Typo. Thanks Kawasaki-san for the good catch!

Escape instead of encode. Thanks TK Lee for the good catch!

  • fixed to work unit tests

  • Revision: 3498

Fixed to load global template properly when blog_id is applied.

Added password_exists to get the information for password.

  • Added order by blog ID bugid #100305

  • Revision: 3501

  • Hide sign in link when request was not from mt.cgi.

  • Revision: 3502

  • Bug(s): 100303

  • Hide return to link when return url is blank.

  • Revision: 3503

  • Bug(s): 100304

Don’t have to check is_superuser database column any longer.

Suppress warnings.

Do not require blog context in order to get session state of the request.

Check if MT->instance is a MT::App before calling user method. Thanks Alex E. Schneider for the report .

  • Fixed an TZ issue.Thanks Jay for you report and investigation.

  • Revision: 3508

  • Bug(s): 96746

Check email and nickname when authentication is not MT.

Fixed typo.

Generate author basename even if there is no nickname and no id.

Clear comment_latest cache if any comment be changed. Thanks Mark Carey for the report .

  • Added html escape.

  • Revision: 3513

  • Bug(s): 100314

  • Added html escape.

  • Revision: 3514

  • Bug(s): 100314

Set ‘(Display Name not set)’ string if nickname is empty.

Added new translation.

EMEA L10N update

  • Fixed to work test properly.

  • Revision: 3518

  • Bug(s): 99375

Fixed Japanese translation.

Fixed to work ‘Show all matches’ search link.

  • Fixed to work test 33-ddl-postgres.t.

  • Revision: 3521

  • Bug(s): 99375

Fixed mt-xmlrpc.cgi returns broken xml for error message. .

  • Fixed to work test properly.

  • Revision: 3523

  • Bug(s): 99375

Bumping up version numbers as we changed something in these plugins in this branch.

Update all ‘Publish Blog’ links to reference the same blog-rebuild window

Update docs for EntryLink tag

Weird character fix for


config directive should be lower case in php.

Fixed MTIfCommenterRegistrationAllowed tag doesn’t move in dynamic. .