閲覧している Tumblr のエントリーを編集ページで開くブックマークレット

ことわり

未だに Tumblr の使い方が十分に分かっておらず、何か勘違いをしているかもしれません。掲載内容を参考になさる場合は十分に注意してください。
間違い・アドバイス等、御座いましたらお手数ですが指摘していただけると幸いです。

いきさつ

Tumblr は1つのアカウントで複数の tumblelog を作成出来るのですが、メインの tumblelog*1 とサブの tumblelog*2 では扱いが少々異なるようで何かと不自由します。
特に、サブの tumblelog を閲覧している際に表示される右上のナビゲーションには Edit ボタンがないので、思い立ったが吉日という具合に再編集が出来ずストレスを感じていました。
巷には様々な Tumblr 用ツールが溢れているので、探せば再編集を容易にする有益なツールの類が見つかるかと思いますが、それすらも億劫だったのでブックマークレットを書いてみました。
Tumblr のエントリーを開いた状態でブックマークレットを実行すると、新規タブ(あるいはウィンドウ)でそのエントリーの編集ページを開きます。
※もちろん、ログインしていなかったり、その tumblelog が自身の所有でなかった場合には編集ページを開くことはできません。

動作を確認した環境

Ubuntu 9.04 Desktop 日本語版

モダンブラウザなら動くはず。私が書いた JavaScript に問題がなければ。

ブックマークレット

下記のスクリプトをコピーし、Edit Tumblr Entry とでも名付けてブックマークに登録してください。

javascript:(function(){var w=window,l=w.location,h=l.hostname,p=l.pathname.split("/"),t="tumblr.com";((h.slice(-10)==t)&&(p[1]=="post"))?w.open("http://www."+t+"/edit/"+p[2]+"?redirect_to=%252Ftumblelog%252F"+h.slice(0,h.indexOf(t)-1),"_blank"):alert("error")})();

保守用

// @name        Edit Tumblr Entry
// @description Tumblr の記事を編集
// @uuid        4f09db0c-d285-4e9d-a0d8-9ddd723c57d1
// @version     2009-12-19T22:50:56+09:00 作成

javascript:(
    function(){
        // 変数
        var w=window,
            l=w.location,
            h=l.hostname,
            p=l.pathname.split("/"),
            t="tumblr.com";

        // 三項演算子
        // 閲覧中のサイトが Tumblelogs か確認 (チェックゆるめ)
        (
            // ドメインが tumblr.com であり
            (h.slice(-10)==t) &&
            // 第1階層のディレクトリが post である
            (p[1]=="post")
        )?

            // 閲覧中のサイトが Tumblelogs だった場合
            // UserID と EntryID から編集ページの URL を作成し、移動する
            w.open(
                "http://www." +
                t +
                "/edit/" +
                // EntryID
                p[2] +
                // 図らずも二重エンコードになってしまった。エンコードは必要ないかも。
                "?redirect_to=%252Ftumblelog%252F" +
                // UserID
                h.slice(0,h.indexOf(t)-1)
            ,"_blank"):

            // 閲覧中のサイトが Tumblelogs ではなかった場合
            alert("error");
    }
)();

*1:Tumblr のアカウント登録時に作成した tumblelog

*2:後から作成した tumblelog

*3:Qt ライブラリは 4.5.0

*4:Shiretoko 3.5.5 Mozilla Firefox for Ubuntu canonical - 1.0