Movable Type のウェブサイト・ブログの一覧に、各設定画面へのリンクを追加する

Movable Type でサイトを構築する際、相当数のウェブサイトやブログが必要になることが多いと思います。
そんなとき、サイドメニューから記事やテンプレート一覧に移動するのを面倒に感じることがありますよね?

そこで、JavaScript を使ってちょっと効率化します。

やってみる

ウェブサイト、または、ブログの一覧画面を表示後に、Web インスペクタ(Chrome の方は Developer Tools)で下記のコードを実行します。

// 現在のページの CMSScriptURI に相当する URL を取得
var requestUrl = location.href;
var scriptUrl = requestUrl.split("?", 1);

// 設定的なもの
var params = {
  'targetObject' : (jQuery('#website-table').length) ? '#website-table' : '#blog-table',
  'linkList' :  {
    '記事' : '__mode=list&_type=entry',
    'カテゴリ' : '__mode=list&_type=category',
    'ウェブページ' : '__mode=list&_type=page',
    'カスタムフィールド' : '__mode=list&_type=field',
    'テンプレート' : '__mode=list_template',
    '設定' : '__mode=cfg_prefs',
  }
};

// Listing Framework の行ごとに処理を実行
jQuery(params['targetObject']).find('tbody > tr').each(function(){
  var $this = jQuery(this);
  var blogId = $this.attr('id');
  var $tdName = $this.find('td.name');

  // リンクの追加先となる要素を追加
  $tdName.append('<div class="favorite-blogs-widget" style="padding: 0.5em 0;"><ul class="blog-control"></ul></div>');

  // リンクを追加
  jQuery.map(params['linkList'], function(value, key) {
    $tdName.find('.blog-control').append('<li><a href="' + scriptUrl + '?' + value + '&blog_id=' + blogId +  '" target="_blank">' + key + '</a></li>');
  });
});

ウェブサイトやブログごとに、設定画面へのリンクが追加されました。

JavaScript 実行後のサンプル

リンク項目の増減は、params['linkList'] の配列をお好みで書き換えてください。

まとめ

MTAppjQuery が利用可能であれば user.js で自動化したいところですが、そうでない場合にも必要なタイミングで実行すればよいため、コンソールを利用する形で考えてみました。