Previously, I wrote about how to add Edit Links to Entry and Page templates.
This guide uses the mt_user
cookie set when logging into Movable Type to condition content (links to screens in MT) on entries and pages published by Movable Type.
Also provides an option to use a non-MT cookie to do the same thing.
Requirements
- published pages are executed as
PHP
. Because of this if this code is to be used
Note: this same info can be adapted to create a purely javascript-based solution.
Adding Edit Entry and Edit Page Links
Update the config file (
mt-config.cgi
) with the CookiePath config directive:CookiePath /
Note: If Movable Type is set up to publish to multiple domains then this won’t work for you
Create a system level template module called “Global Config” and the following content:
<mt:Unless name="system_template"> <mt:SetVarTemplate name="edit_link"> <?php if (isset($_COOKIE["mt_user"])) {?> [<a class="edit-link" href="<$mt:CGIPath$><$mt:AdminScript$>?__mode=view&_type=<mt:If name="entry_archive">entry<mt:Else>page</mt:If>&id=<$mt:EntryID$>&blog_id=<$mt:EntryBlogID$>">Edit</a>] <?php } ?> </mt:SetVarTemplate> </mt:Unless>
Note: The archive template variable “
system_template
” is used to condition the links to only display on statically published files.Add the edit links to Movable Type templates.
For Entry and Page archive templates, just add this anywhere.
<$mt:Include module="Global Config"$> <$mt:Var name="edit_link"$>
For
<mt:Entries>
or<mt:Pages>
loops in index or archive templates:<$mt:Include module="Global Config"$> <mt:Entries> <$mt:Var name="edit_link"$> <!-- other entry tags --> </mt:Entries>
Note: The include for the “Global Config” module only needs to be added once per template. I suggest placing it as the first line in the template.
Republish all edited templates.
- View your blog templates to see the cookie-conditioned code.
Links to other Movable Type App Pages
To add links to:
- new entry
- manage entries
- manage templates
rebuild blog
Place this code on any page that you’d like to have links to:
<?php if (isset($_COOKIE["mt_user"])) {?> <div class="edit-links"> (<a href="<$mt:AdminCGIPath$><$mt:AdminScript$>?__mode=view&_type=entry&blog_id=<$mt:BlogID$>">new</a> / <a href="<$mt:AdminCGIPath$><$mt:AdminScript$>?__mode=list_entry&blog_id=<$mt:BlogID$>">manage</a>) <a href="<$mt:AdminCGIPath$><$mt:AdminScript$>?__mode=list&_type=template&blog_id=<$mt:BlogID$>">templates</a> <a onclick="doRebuild('7');return false;" title="Publish Site" href="javascript:void(0)">rebuild</a> (<$mt:BlogID$>) </div> <?php } ?>
To use the rebuild add this to your Javascript index template in Movable Type:
var CMSScriptURI = "<$mt:AdminCGIPath$><$mt:AdminScript$>"; function doRebuild (blogID, otherParams) { window.open(CMSScriptURI + '?__mode=rebuild_confirm&blog_id=' + blogID + '&' + otherParams, 'rebuild_blog_' + blogID, 'width=400,height=400,resizable=yes'); }
If your javascript template is not published by Movable Type, then replace “
<$mt:AdminCGIPath$><$mt:AdminScript$>
” with the path to the Movable Type application script “http://www.your-domain.com/cgi-bin/mt/mt.cgi
”
Use a non-MT Cookie
Place this in your MTML template
Entry edit links are <strong><?php echo (isset($_COOKIE["show_edit_links"]))? "on":"off" ?></strong> (<a id="toggle-edit-links" href="/cheat-sheet/">turn <?php echo (isset($_COOKIE["show_edit_links"]))? "off":"on" ?></a>)
- Add jQuery
- Add the “Cookie” jQuery plugin
Place jQuery javascript code in a jQuery-enabled js file.
$('#toggle-edit-links').click( function () { var cookieName = "show_edit_links"; if ($.cookie(cookieName)) $.cookie(cookieName, null, { expires: -1, path: '/', domain: '.th.strangecode.com' }) else $.cookie(cookieName, 'true', { expires: 365, path: '/', domain: '.th.strangecode.com' }); // refresh window window.location = window.location; })
Leave a comment