Home > Internet > Movabletype > AssetHandlerのMT5対応版公開します

AssetHandlerのMT5対応版公開します

AssetHandlerとは

意外と人気が有るような、Asset Handler | Movalog Plugins: Movable Type plugins by Arvind SatyanarayanプラグインをMT5での動作する様に作成していました。大っぴらに公開していた訳ではないのですが、細かい修正を追加して公開してみようと思います。MT5専用です。
AssetHandlerが、どういうものかは、以下のエントリーを参照してください。

arvind's movabletype-asshat at master - GitHub」を追いかけてたんですが、どうやら新しく「jayallen's mt-plugin-assethandler at master - GitHub」というのが出てまして「Version 2.0」となり(内部の)プラグイン名も正式に「Asset Handler」になってました。どうやらGPLv2という事になってるようです。
なので、今回確認してみたのはこの「Asset Handler 2.0」がベースになります。

AssetHandlerの修正箇所

とりあえず、「Asset Handler 2.0」を出たばかりのMovable Type 5.031に入れると、今までの「AssHAT 1.0」と同じくアイテム一覧で以下のエラーが出ます。

 failed loading package >> sub { MT->instance->param('blog_id'); } for routine >> sub { MT->instance->param('blog_id'); }: Null filename used

発生する箇所については「AssHAT 1.0」ではすでに見当が付いているので、コードを確認してみるとその部分は変わっていませんでした。「condition: 」の部分です。
ブログIDを取得して表示条件を設定している部分のようです。MT4.3まではこの書き方で問題なかったのですが、MT5ではエラーになります。

### AssetHandler - A plugin for Movable Type.
# Copyright (c) 2007, Arvind Satyanarayan.
# This program is distributed under the terms of the
# GNU General Public License, version 2.
# $Id$
name: AssetHandler
key: AssetHandler
id: AssetHandler
version: 2.0
author_name: Arvind Satyanarayan
author_link: http://www.movalog.com/
plugin_link: http://plugins.movalog.com/asshat/
doc_link: http://plugins.movalog.com/asshat/
description: AssetHandler allows you to mass import and manage assets in Movable Type
callbacks:
    MT::App::CMS::template_source.list_asset: $AssetHandler::AssetHandler::App::CMS::list_asset_src
applications:
    cms:
        page_actions:
            list_asset:
                transport_assets:
                    label: Import Assets
                    dialog: start_asshat_transporter
                    condition:  >>
                        sub { MT->instance->param('blog_id'); }
                    order: 1000
            # The following is necessary because both list_asset and
            # list_assets are supported modes but the page actions do
            # not work on one page if only defined for one mode.
            # See http://bugs.movabletype.org/?82475
            list_assets:
                transport_assets:
                    label: Import Assets
                    dialog: start_asshat_transporter
                    condition:  >>
                        sub { MT->instance->param('blog_id'); }
                    order: 1000
        list_actions:
            asset:
                asshat_batch_editor:
                    label: Batch Edit Assets
                    code: $AssetHandler::AssetHandler::App::CMS::open_batch_editor
                    order: 300
                    condition:  >>
                        sub { MT->instance->param('blog_id'); }
        methods:
            asshat_batch_editor: $AssetHandler::AssetHandler::App::CMS::open_batch_editor
            save_assets: $AssetHandler::AssetHandler::App::CMS::save_assets
            start_asshat_transporter: $AssetHandler::AssetHandler::App::CMS::start_transporter
            asshat_transport_assets: $AssetHandler::AssetHandler::App::CMS::transport

そもそもどういう分岐なのかを目的を考えてみました。コードを見た限りでは「ブログIDを取得してその値で分岐」です。ブログIDが無い場合やブログIDが0の場合に、表示しないように見えます。
一覧表示でのアクション表示(list_actions)のうち、アイテム(asset)で表示されるものと、ページ内の右に表示されるアクションリンク(page_actions)のアイテム(asset)で表示されるものです。つまりアイテム一覧ページが表示される箇所という事です。
MT5ではシステムメニューでアイテム一覧が表示されなくなっていますが、MT4ではシステムメニューでアイテム一覧が可能になっています。このシステムのアイテム一覧で、プラグインによる表示をさせなくしているようです。
つまりMT5オンリーの改造なら、「condition:」部分を削除でも良さそうですね。以前対処していた、コメントアウトでも間違ってなかったようです。

MT4/MT5両対応を目論んでいたので、Util.pmに動作するように書き足してみています。(まぁ、もっと簡単に書けそうですけど)、あまり知識が無いので、解ってる方法で解決。「condition:」をAssetHandler/Util.pm内のis_blog_contextで返すように変更を。この書き方が見慣れている上に、いじりやすそうだったので。

こんなサブルーチンでMT4でも、想定した動作をする上(そもそもコードの内容的には一緒なんですけどね)に、MT5でもエラーが発生しませんでした。

ここまでは良いのですが、インポート処理を実行すると何故かMT5ではうまく読み込みが行なわれません。インポート処理がスタートしたまま、ファイルが一つも追加されずに、表示がそのままになります。ここは前のバージョンでは問題なかったのですが、「Asset Handler 2.0」で書き換えられた結果動作しなくなってしまったようです。もちろんこの状態で、MT4.3では動作します。一難さってまた一難です。

ここは、もうお得意の後ろ向き!
インポート動作部分だけ、1.0のものに戻しました。これで、問題なくMT5で動作します。後は追加でファイルやディレクトリが無い時に、エラーを表示して終了するようにしました。元のコードだとファイルはまだしも、ディレクトリの時に存在しないディレクトリをファイルとして取り込んでしまうという、とんでもない問題が潜んでいたので、それぞれメッセージを表示して処理が中断する様に書き換えました。また(私のような)一部のユーザーが使用しているWindowsサーバー環境で、ファイルパスのデリミタリを変更する処理を追加しています。

AssetHandlerはどういう動きをするか

という訳で、動作の説明。

アクションリンク

まずアイテムの一覧画面で、右のウィジェット(アクション)に、「アイテムのインポート」が表示されます。

ディレクトリ指定

これをクリックすると、パスと対応するURLの入力画面がポップアップします。デフォルトではブログの公開パスに設定したパスとURLが表示されていますので、ソレを基点に入力するといいでしょう。この様にディレクトリを指定することが可能です。

ファイル指定

もちろん単独のファイルを指定することも可能です。ファイルを指定した場合は「インポート」をクリックするとファイルの登録が始まります。

ディレクトリ指定時

ディレクトリを指定した場合には、対象のファイルを指定する、追加の表示が出現します。通常は一番上の「すべてインポートします」で大丈夫なはずです。

拡張子で指定

拡張子(ピリオドは除く)を指定することで、特定の種類のみ登録する事も可能です。

ファイルを指定

また、ファイルを一覧して指定することも出来ます。

インポート中

インポート時には取り込んだファイル名が表示されます。終了するとアイテム一覧画面にリダイレクトされます。

取り込まれたアイテム

アイテム一覧画面が読み込みなおされるので、取り込んだアイテムが表示されています。

プラグインアクション

もう一つは、アイテム情報の一括編集機能があります。一覧画面でのプラグインアクションとして表示されるので、選択して「Go」ボタンをクリックします。

一括編集画面

この様な画面が表示されますので、適宜入力して「保存」ボタンをクリックすると、入力内容が保存されて一覧画面に戻ります。

プラグインダウンロードとその他

プラグインは以下の場所でダウンロードできます。

naoaki011's mt-plugin-assethandler at master - GitHub

ちなみにこの状態で、コードレポジトリのMT5.1で動かしてみました。
アイテム一覧画面は、新たにListingFrameworkに変更になっています。それでどうも右の「アクション」ブロックが表示されていないのですが、これは確定でしょうか?「アイテムのインポート」はここに表示されるはずなので、出ていません。表示する箇所は、検討しないとまずいかもしれませんね。
モード指定で、直接「アイテムのインポート」を呼び出したところ、インポートは正常に動作しました。ここは問題無さそうです。
アイテム一覧画面のプラグインアクションに、「一括編集」は表示されていますが、こちらは選択して実行させても、「アイテムがありません」と、動作しませんでした。渡されるデータが異なるのでしょうかね。
という訳で、MT5.1ベータが始まった時点で、もう一度確認しますが、かなり見直しが必要そうです。

MT5.1でのアイテムインポート動作を可能にした暫定版を作成しました。といっても、問題はインポート後のリダイレクト先をリスティングフレームワークによるアイテム一覧に書き換えることだったりした訳ですが。一括編集については依然対応作業途中です。また、「Asset Unlink」の機能の取り込み、アイテム一覧画面での表示フィールドの追加を行っています。「naoaki011 / mt-plugin-assethandler」よりダウンロード可能です。

一応このバージョンはMT5.0x専用ということになります。
何か不具合等見つけたら、リポート・パッチ等お待ちしております。

再三注意を促してますが、アイテム一括登録時に設定を間違えたからと言って、いきなり削除はしないでください。アイテムの削除をすると、実ファイルも同時に削除されます。そういう場合には「登録済みアイテムの登録だけを削除するプラグイン - WolaWola」で説明した「Asset Unlink」を使ってみてください。「naoaki011/mt-plugin-asset-unlink - GitHub」にあります。登録だけ削除することが可能です。

Trackback:(1)

TrackBack URL for this entry.(1)
Listed below are links to weblogs that reference
AssetHandlerのMT5対応版公開します from WolaWola
DQNEO起業日記 thumbs 「[MovableType]AssetHandlerプラグインの使い方(複数画像を一括インポートする便利ツール)」 from DQNEO起業日記 2011-07-24 (日) 16:35:58

MT5に対応したAssetHandlerプラグインを導入してみました。 一個ずつちまちま画像をアップロードするのと比べてすごい便利ですね! これで管理画面...
[詳しくはトラックバック元サイトで]

Comments:(6)

ike`s user-pic ike said December 7, 2010 12:18 AM | ReplyThis!

こちらの記事のお陰で、以前のバージョンの時に作成した画像がアイテムに登録できました。
ありがとうございます。

少しづつ古い記事に、アイテムの関連付けをしようと思ったのですが...。
「アイテムの挿入」の画面の検索機能は正常に動かないようです。

アイテムに5000件の画像が登録されてしまっているのでお手上げになりました。
なにか妙案はありますでしょうか。

こんにちは、ikeさん。
「アイテムの挿入」の画面の検索機能が動作しないのは、確かMT側のバグだったはずです。修正対象のリストに上がっていました。まだ、直っていなかったはずだと思います。
確かに、挿入時の選択はまどろっこしいですね。残念ながら画面を一つ一つ切り替えて、見つけるしか方法はなさそうです。
私は登録を小出しに行った(月単位でフォルダに分かれている)ので、どうにかなりました。

ike`s user-pic ike replied for oscar's comment December 7, 2010 10:34 AM | ReplyThis!

早々に回答いただきましてありがとうございます。
やはりバグなのですね。諦めがつきました。

登録したものを一度全て削除して、oscarさんと同じように小出しに再登録してみることにします。
そんな時に役立つのが Asset Unlink ですね!
重ねてありがとうございます!

shin`s user-pic shin said May 8, 2011 8:06 PM | ReplyThis!

5.1での動作についてですが、

> モード指定で、直接「アイテムのインポート」を呼び出したところ、インポートは正常に動作しました。

MT5.1rc2にて試してみたところ、インポートを実行するタイミングで「不明なアクション: list_asset」と出てしまうようです。
MT5.1で、大量のアイテムを一括で登録できるプラグインが存在しないようなので、対応のヒントなど頂ければ大変たすかるのですが…

>5.1での動作についてですが、
申し訳ないですが、未だAssetHandlerのMT5.1対応には着手していません。たしかにその様な状況になるのは確認できています。
>モード指定で、直接「アイテムのインポート」を呼び出したところ、インポートは正常に動作しました。
こちらについては、あくまでベータ公開前のリポジトリからダウンロードした物での確認でしたが、その時点では直接CGIのクエリをブラウザのアドレス欄に入力して、実行できていました。
対応自体は、まだもう少し時間をいただくことになると思います。

shin`s user-pic shin replied for oscar's comment May 9, 2011 12:19 AM | ReplyThis!

スピーディーに丁寧なリプライをいただきありがとうございます。
少なくともこちらの問題でないことが判って良かったです。

oscarさんが公開されているプラグインにはいつもお世話になっています。
いずれ対応いただけるということですので、期待しております。頑張ってください!

スクリプトの読み込みが完了していません。

Sign in Sign in Sign in

メールフォーム(Javascriptを使用していません)や、twitter.pngTwitter経由のCommentでもReplyいたします。ただし返信はブログのコメントとして行う事もあります。

Comment Form

QuickTagsHere

EmoticonHere

(入力しない場合「Anonymous」で代替されます)
(公開はされませんが、Gravatarアイコンの取得や、Comment Subscribeの送信先アドレスとして使われます)
(入力すると、コメント表示でユーザー名にリンクが貼られます)
(この情報は、JavascriptによりCookieに保存されます。)

NotifyMail Powered by Comment Subscribe

はてブコメント:

Home > Internet > Movabletype > AssetHandlerのMT5対応版公開します

MT5Techniques

MT5Techniques

2冊目の共著「Movable Type 5 実践テクニック」(シックスアパート監修)が出版されました。(ソフトバンク クリエイティブ刊)

検索
(5)
(6)

別ページに遷移します。

Powered by Hyper Estraier

Feeds
Link Status
In One

なかのひと

位置情報ブログパーツ「なかのひと」

Links
Powered By

Return to page top