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回で済むように改善。

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

では。

閲覧(31317)

コメント一覧

投稿ツリー


なーお  投稿日時 2012/11/21 13:18

attachfileのハック版は、ここにこっそり置いてあります。
https://github.com/naao/attachfile

ノーザラント   投稿日時 2012/11/29 14:55

RSSの件ではお世話になりました。ぺぱくら総合コミュニティのノーザラントです。うさぎさんの所より直接お伺い出来るかなと思い、誠に恐縮ですが、こちらで質問させて頂きました。
attachfileについてですが、コメント統合したd3forumでattachfileが正常に動かず(コメント統合したフォーラムではupopでウィンドウが開いても、何も表示されないのです。それ以外のフォーラムでは正常動作します。)とりあえずバージョンを1.02から1.03にあげてみましたが、改善しませんでした。
どの辺に問題があるのか、推察できますでしょうか?

なーお  投稿日時 2012/12/1 0:42 | 最終変更

ノーザラントさん、こんにちは。

Attachfieのハック版では、ここに記載してあるようにテンプレート記載内容が少し変わります。

オリジナルの記載

1
<{attachfile_attach_download dirname=attachfile target_id=$post.id}>

ハック版の記載

1
2
3
4
5
6
7
8
コメント統合元記事ページのコメント一覧「(d3forum)_comment_listposts_flat.html 」
テンプレートに、
 <{attachfile_attach_download dirname=attachfile target_dirname=d3forum target_id=$post.id}>
 
 と書くことで、コメント元ページのコメント一覧でも、添付ファイルの存在を知り、
リンクからダウンロードウインドウを開くことができます。   target_dirname=d3forum の「d3forum」部分は、d3forumの
root_path側インストール ディレクトリ名に変更してください。
(通常のメインページに使用時は、いままで通りの表記に省略可能です。)

また、d3forumのバージョンはいくつですか?
これもXoopsXの最新版をご使用ください。(現在はver0.88) オリジナル版からは変わっていますので。

もうひとつ、最新版に同梱されたsmartyプラグインが、xcl2.2仕様の場所に変わっていますので、従来版のプラグインは消さないと反映されないと思います。

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

ノーザラントさん

ごめんなさい、当方でも現象を確認しました。
原因特定まで、少し時間をください。 :roll:

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

ノーザラントさん

原因が判明し、修正完了しました。

xoops_trust_path/modules/attachfile/plugins/d3forum/permission.php
のみの1ファイルを差し替えてください。

内容は、以下のURLで参照してください。
https://github.com/naao/attachfile/commit/148078e8dc731206a04cf827908ddfda4e5a81dc

ご報告、ありがとうございました。 :-)

(追記)
X-update の、naaoストアに登録しましたので、今後はX-updateでの導入・アップデートが可能です。お試しください。 :-D

ノーザラント サイトURL  投稿日時 2012/12/1 10:19

naaoさん、修正して頂きましてありがとうございました。
早速permission.phpを差し替えたのですが、改善いたしませんでした :-(
smartyプラグインの関係でしょうかね??

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

今、ノーザラントさんのサイトを確認してみたのですが、もしかするとコメント元はmyalbumでしょうか?
その辺の情報も無いので、これ以上は何とも言えません。 attachfileのプラグインが存在するモジュールなのかどうか、というのも気にはなっています。 少なくとも私の手元では、コメント元がd3diaryでしたら問題なかったです。

前のコメントにも書いたのですが、d3forumはver0.88に上げてください。

myalbumもx-updateで最新版があるのですが、それを使えばコメント統合にネイティブに対応しており、フォーラム側の元記事表示で「コメント元」という表示では無く、画像なども表示されるはずなんですが。。
(こんな風にです)

 現状、ノーザラントさんのサイトのフォーラム側の表示もfatalが起きているようですし。

もしまだでしたら、そうした上で、当該フォーラムの統合クラス設定を見直してみてはどうでしょうか?

(追伸) 手元の環境では、XoopsX版のmyalbumでしたら問題無く動作しました。 本来的にはd3commentネイティブモジュールでなくても表示しないのはマズイんですが、今そこまで突っつく時間が取れないので、XoopsX版のmyalbumを上書きインストールしてみてください。

(さらに追記) d3forum、attachfileとも、一部にバグが見つかりましたので、再度アップデートしてください。

ノーザラント   投稿日時 2012/12/2 0:42

naaoさん、ありがとうございます。
d3forumはv0.88ですし、myalbumもv2.89でした。
この現象に気づいたのは、linksモジュールでした。(v0.25)
色々試してみたら、コメント統合されたフォーラムで添付出来ない事がわかったのでした。

基本的には、attachfileのプラグインが存在しないモジュールのコメント統合されたフォーラムでは使用不能なのでしょうか?

それから、

引用:

現状、ノーザラントさんのサイトのフォーラム側の表示もfatalが起きているようですし。
これ、ご報告ありがとうございました。
これは何が原因なんだろうか…。
テーマが適用されていないのか、テンプレートを読み込めないのか…。

とりあえず、d3forumをv0.88.1にはアップしてみたのですが。
色々対処ありがとうございました。xoopsですので、使えそうな所をうまく使いながらなんとかしていきたいと思います。

ノーザラント   投稿日時 2012/12/2 0:53

上の記事を書いてから、attachfileをx-updateかけてみたのですが、今度はリンク集コメントのフォーラムで、表示がおかしくなり、ギャラリーコメントのフォーラムの表示は正常にもどりました。(「コメント元」のままですが…)

こうなると、原因特定はかなり厳しくなりますよね…。

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

ノーザラントさん、こんにちは。

まだおかしかったようなので、再度バグフィックスしました。

お手数ですが、attachfileをもう一度X-updateかけてみていただき、結果をご報告いただけますか?

linksモジュールって、wyeさんのサイトの、このlinksモジュールですよね? 私の環境でも、コメント統合したフォーラムにattachfile添付の窓を開いて動作確認してOKになっていますので、どうぞお試しを。。



新しくコメントをつける

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