TOP  >  なーお'nぶろぐ  >  なーお  >  Web  >  [XOOPS] Attachfileモジュールの、コメント統合向けハック

なーお さんの日記

 
2010
11月 2
(火)
22:00
[XOOPS] Attachfileモジュールの、コメント統合向けハック
本文

最近、XOOPSでソースを書く時間が長くなってきています。 d3diaryのバージョンアップや、d3forum関連のハックなど。

そして今日は、任意のモジュールにファイル添付機能を追加できる「Attachfile」モジュールに手を入れてみました。 というのも、d3forumにAttachfileを適用し、コメント統合された元記事モジュールのページと、統合コメントのフラット表示の両方に添付ファイルを表示させたかったからです。 試してみたのですが、オリジナルのままだとこれがエラーで表示されませんでした。

(Attachfileにはお世話になっております。この場を借りて感謝の意を。)
うまくいかない理由は、元記事モジュールとd3forumモジュールのプラグイン内の関数が同じ名前で定義されているため、同一ページに表示するとプロシージャ再定義でFatalとなる、というものです。

何とか両方を表示したかったので、これを回避するために、プラグイン部分をObject化してみました。

差分パックソース:

fileattachfile_1.02_diff_003.zip最新
d3forumプラグインで、コメント統合していないフォーラムで
添付参照権限が取得できなかった不具合の修正(2010-11-09~11)
fileattachfile_1.02_diff_002.zip
d3forumプラグイン内の、d3commentのObj取得をtarget_dirnameにつき1回で
済むように改善(2010-11-04)
fileattachfile_1.02_diff_001.zip

本体+差分パッチ当てたバージョン
attachfile-1.02本体に、上記差分を当てたバージョンです。

(おまけ:X-elfinder でファイルを貼ってみます。)
attachfile_1.02_hack_004.zip

以下の説明は、READMEからの抜粋です。


    • Attachfileモジュールの、d3forumコメント統合時の拡張性を上げたハック版差分パックです。
       将来的にAttachfiloeのブロックができた時、複数のモジュールのブロックを同一ページに配置することも、今回の方法の延長線上で可能になると思います。 (要するに、添付対象targetモジュールの、root_path側ディレクトリ名毎にPluginのObjectを生成して、同一ディレクトリ名ならObject再利用、というだけなんですけどね。。)
    • Attachfileモジュール自体のスクリプトもハックしていますので、Attachfile-ver1.02に本パックのファイルを上書きしてください。
    • xoops_trust_path/modules/attachfile/plugins/ 以下に、当該モジュールのtrust_path/permission.php を置きます。
    • このファイルの書き方が、若干変わっています。_sample/フォルダ内のpermission.phpで説明すると、
            class bulletinAttachfilePlugin extends AttachfilePluginAbstract{       function bulletinAttachfilePlugin( $parentObj )
       この「bulletin」部分は、全て当該モジュールのtrust側のディレクトリ名になります。 その他は、従来の書き方と(多分)変更なしで行けると思います。(違いは、関数に渡す引数を1つだけで良いように変更してます。)
    • 本パックの同梱したd3forum用のプラグインには、コメント統合した時のコメント元モジュールの記事の閲覧権限チェックを追加し、AttachfileのURL直打ちされても大丈夫なようにしています。
       実際の制御は、当該コメント元モジュールのコメント統合クラス内の「validate_id」メソッドの実装内容に依存します。
       なお、d3forum本体のコメント元記事権限連動は。以下のページを参考に願います。 http://www.naaon.com/modules/xpwiki/233.html
      • コメント統合元記事ページのコメント一覧「(d3forum)_comment_listposts_flat.html 」テンプレートに、
          <{attachfile_attach_download dirname=attachfile target_dirname=d3forum target_id=$post.id}>
         と書くことで、コメント元ページのコメント一覧でも、添付ファイルの存在を知り、リンクからダウンロードウインドウを開くことができます。 target_dirname=d3forum の「d3forum」部分は、d3forumのroot_path側インストールディレクトリ名に変更してください。(通常のメインページに使用時は、いあっまで通りの表記に省略可能です。)
attachfile_d3d_d3f.gif
      • 今回のハック版Attachfileに対応する、d3diary用プラグイン実体ファイル
        従来の
        (trust)/modukes/d3diary/include/attachfile.inc.phpを削除して、
        (trust)/modukes/d3diary/class/ 内に、
         filed3diaryAttachfile.class.php を新規アップロードしてご使用ください。

まだ駆け出しですので、不具合等がありましたら、naaoまでご報告ください。

改定履歴

    • 1.02_diff_003(2010-11-09)
      d3forumプラグインで、コメント統合していないフォーラムで添付参照権限が取得できなかった不具合の修正。
    • 1.02_diff_002(2010-11-04)
      d3forumプラグイン内の、d3commentのObj取得をtarget_dirnameにつき1回で済むように改善。

本件、作者様のサイトで報告致しましたところ、次回バージョンに機能取り込みしていただけるようです。ありがとうございます! :-)

では。

閲覧(31314)

コメント一覧

投稿ツリー


ノーザラント   投稿日時 2012/12/2 13:55

naaoさん、色々とありがとうございます。本当に感謝です。
もう一度x-updateをかけた所、フォーラムの表示は正常に戻りました。
それから、linksモジュールでのattachfileの正常動作も確認しました。gnaviでも正常動作しているのですが、なぜかmyalbumだけだめでした。

これはプラグインの問題でしょうかね?
他のモジュールでもテストしてみますね。

なーお  投稿日時 2012/12/2 14:02 | 最終変更

もう一息ですね!

myalbumの統合先フォーラムの設定で、「コメント統合時の参照方法」には、
myalbum::myalbumD3commentContent::

となってますか?

ノーザラント   投稿日時 2012/12/2 15:04

myalbumのコメント統合時の参照方法は
{XOOPS_URL}/modules/myalbum/photo.php?&lid=%s
となっていますね…。

linksは
links::linksCommentContent::links
で、
gnaviも
gnavi::GnaviD3commentContent::gnavi
です。

勝手に変更して構わないものなのでしょうか?

ノーザラント   投稿日時 2012/12/2 15:11

勝手に変更したら、うまく行きました。
naaoさん、色々お世話になり、本当にありがとうございました。

なーお  投稿日時 2012/12/2 15:13 | 最終変更
引用:
myalbumのコメント統合時の参照方法は
{XOOPS_URL}/modules/myalbum/photo.php?&lid=%s
となっていますね…。
 :(略)
勝手に変更して構わないものなのでしょうか?

勝手に変更って、myalbumをXoopsX版に上げた時点で、d3コメントネイティブ対応になっているわけですから、大丈夫ですよ。本来、手動で入力する部分を自動的に入力してくれるだけです。ちなみにその部分のハックもほぼ私が書いてます。

手順としては、上記「{XOOPS_URL}/modules/myalbum/photo.php?&lid=%s」を削除して、

こちらを参考に、myalbumの管理画面で設定を行い、

myalbumのコメント元記事を一度参照すると、自動的に新しい設定がフォーラム設定に書き込まれるはずです。

(追記)治ったようで、よかったですね。 attachfileはユーザーも少なく、本家配布元でもほとんど更新されていないので、今後は私のほうで面倒をみるつもりでいます。 細かい部分がphp5.3対応になっていなかったりするので追々、修正するつもりではおります。 ;-)

ノーザラント   投稿日時 2012/12/3 10:43

実はAttachfileは、配布元では最近の更新が無く、というか、モジュールの配布もしていないので、もう過去のモジュールかとあきらめていた所、こちらで発見できたので導入した次第です。

使ってみればけっこう便利なのですが、一旦投稿してから編集でしかファイルが添付できないのは性質上仕方ないとして、画像を添付した際に、イメージマネージャーのように、imgタグ付きで画像を本文に挿入できないものかと思っています。
この辺はjavaスクリプトの勉強をしなければいけないんだろうなとは思っていますが、そうなると、使い勝手が向上すると思っていました。

なーお  投稿日時 2012/12/3 11:11 | 最終変更

ノーザラントさん

画像の貼り付けが目的でしたら、XoopsXのnao-ponさんストアにある、X-elfinderがイチ押しです。

imagemanagerとして、elfinderやmyalbum、d3diaryなどでアップされた画像を他のモジュールにも簡単に本文挿入できます。 お試しください。
elfinderには、複数ファイルのドラッグ&ドロップでアップロードもできます。 一度使い始めると使い心地の良さから手放せなくなります。 :-)

こんな感じに画像を添付できます。

51.jpg
ノーザラント   投稿日時 2012/12/4 14:14

naaoさん、素晴らしいモジュールを教えて頂きましてありがとうございます。このモジュール、イメージマネージャーに置き換わって、大幅に機能アップしていますね。

xelfinderを使えば、attachfileの出番なくなるんじゃないですか!?
と思ってしまいました…。が、ホームディレクトリにアップしたファイルが記事の中で使えない…。まぁ最初から全てうまくいかないのがxoops…。

ちょっと研究してみます。

なーお  投稿日時 2012/12/4 15:12

ノーザラントさん

そうです、x-elfinderを使えば、attachfileの出番はほとんど無くなります。 私もそちらをお勧めします。

開発者もnao-ponさんですから開発継続性という意味でも安心ですし、HTMLエディタとの連携も可能になっていますしね。 :-)

確か設定次第ではユーザーも画像以外の添付ファイルが可能だったと記憶しています。 いろいろトライして、要望などあれば作者さんのサイトやXUGJなどでフィードバックいただけると、より良いものになると思いますので、 よろしくお願いします。



新しくコメントをつける

題名
ゲスト名
投稿本文
より詳細なコメント入力フォームへ