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

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

では。

閲覧(26212)

コメント一覧

投稿ツリー


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

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

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

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

なーお  投稿日時 2012/12/1 9: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 10:09 | 最終変更

ノーザラントさん

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

なーお  投稿日時 2012/12/1 11: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 19:19

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

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

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

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

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

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

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

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

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

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

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

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

それから、

引用:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

もう一息ですね!

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

となってますか?

ノーザラント   投稿日時 2012/12/3 0:04

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

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

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

ノーザラント   投稿日時 2012/12/3 0:11

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

なーお  投稿日時 2012/12/3 0: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 19:43

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

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

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

ノーザラントさん

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

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

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

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

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

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

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

なーお  投稿日時 2012/12/5 0:12

ノーザラントさん

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

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

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



新しくコメントをつける

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