MTのアイテムの置き場所(ディレクトリ)を変更するプラグイン AssetManager

MTのリスティングフレームワークを使ってみたいと思い、アイテム(アセット)を管理するプラグインを作ってみました。

リスティングフレームワーク自身は、Arakiさんのスライド
http://www.slideshare.net/yujiro/deep-mt-r2-8422851
にいろいろと詳しく解説があったので、これを参考にしました。(スライドはなぜか右側がちょっと読めないのですが、さがせばpdf版もあると思います)

また、Arakiさんのスライド中にありましたが、藤本さんの開発した各種一覧ページの拡張のプラグインもとても参考になりました。たとえば、アイテム一覧を拡張する
http://www.h-fj.com/blog/archives/2011/06/06-160024.php

今回、私が作ったのもアイテム一覧を拡張するものなのですが、アイテムが保存してあるディレクトリを変更する機能を付けました。プラグイン自体は、githubに置いてあります。
https://github.com/knight9999/AssetManager

使い方ですが、まず、pluginsディレクトリの中身を、MTのpluginsディレクトリの下に置きます。
そうすると、アイテム一覧画面が次のようになります。

右側に、URLとファイルパスが表示されるようになっているのが分かると思います。URLはフルパスです。ファイルパスは、ちょっと分かりにくいですが、そのブログのルートディレクトリを「%r」とした表示になっています。
藤本さんのプラグインのようにスタイルシートの調整までしていないので、狭くてちょっと見づらいですが、、。

この状態で、アクションに「移動(パスの変更)」が利用出来るようになります。

Goをクリックすると、今選択したアイテムのファイルパスが表示され(次図の1)、さらに、そのファイルパスの共通部分が表示されます(次図の2)。

ここでは、%r/upload/までが共通です。
さて、この状態から、移動したいディレクトリを設定することが可能です。先の図の3のところに、新しいパスを入れられます。ここでは、%r/images/を指定しました。
「変更」をクリックすると、テストが開始され、移行先のディレクトリにちゃんと書き込めるかどうかのテストを行います。この状態では、データベースもファイルも一切更新はかかりません。
テストが成功すると、次のように「テストが成功しました」と表示されます。

そうしたら、「テスト実行」のチェックを外して、再度「変更」を押すと、アイテムが移動します。
移動後、次のような画面になれば成功です。

なお、アイテムが%r/upload/以下から%r/images/以下に移動したとき、既存のブログ記事の中がどうなるかですが、記事の中のURLも自動で新しいURLに変更されます。ただし、ドメインを含んだフルパスの場合だけです。
この記事の中のURLを、自動で変更するのをしたくない場合は、「エントリーの記事の本文、もっと読む、概要に埋め込まれたurlも変更する」のチェックを外してから、「変更」を実行してください。

また、記事に画像を張り付けるときに、「別ウィンドウで開く」にチェックしていると、専用のhtmlファイルがアセットとして保存されます。このアセット中にも画像へのリンクがありますが、これも自動で新しいURLに変更されます。ただし、これもドメインを含んだフルパスの場合だけです。(細かいことですが、ステージングサーバと公開サーバが別になっていて、すべてを相対パスで作る場合、「ポップアップ画像」のテンプレートを修正して、画像へのリンクを相対パスにすることがあるかもしれませんが、それをすると、このプラグインではURLの自動書き換えはしてくれません)
このhtmlアセット中のURLを、自動で変更するのをしたくない場合は、「アイテム(htmlファイル)に埋め込まれたurlも変更する」のチェックを外して下さい。


なお、このプラグインは、ファイルを移動したり、エントリーの中身を書き換えたりするので、運用には十分注意してください。テスト環境などで、正しく動作するか十分試してください。Apacheタイムアウトなどで、処理が途中で止まってしまったりうすると、復元が出来ません。実行前に必ずバックアップをとり、レストア出来る状態で行ってください。

なお、MT5.2.7でしか試してないのですが、5.1系、5.2系なら動作すると思います。Linuxでしか動作テストしていないので、Windowsではわかりません。