d3コメント統合の、元記事閲覧権限連動ハック anchor.png

現在のハックバージョン:0.85_001

元ネタ:(XUGJ)d3forum-d3diary統合元モジュール閲覧権限フィルター 
(本ハックでは実装方法を少し変えています。)

d3forumのコメント統合を使っていると、管理上も便利でやめられなくなってしまいます。 GIJOEさんに感謝。

ところで、コメント元のモジュールでユーザー毎やグループ毎の閲覧権限を制御する機能を使うとき、コメントのタイトルやコメント者がd3forum側で表示されてしまうため、ちょっと気持ちが悪いと思ったことはありませんか?

私的にはこれは何とかしたかったので、d3diaryの開発に合わせていろいろやってみた結果を、差分ファイルにして配布することにしました。 よろしければご使用ください。 但し、いきなり稼動中のd3forumモジュールに差分を当てるなどどいうチャレンジは絶対にやめましょう。 少なくとも同テスト環境で試してから、実働環境のバックアップを取った上で、アップロードするようお願いします。 いずれにしても、何か不都合が発生しても責任を取れないことに変わりはありませんが。

Page Top

ダウンロード anchor.png

以下のファイルをダウンロード、解凍して、modules 以下のフォルダを、xoops_trust_path/modules 以下に上書きし、アップロードしてください。

ダウンロードファイル適応d3forum本体バージョン
filed3com_auth_diff_0.85_001.zip 初版0.85

Page Top

機能・内容 anchor.png

Page Top

コメント元記事の閲覧権限の継承 anchor.png

メインとなる機能です。 D3コメント統合を行った各モジュールの、D3commentクラス内の、「Validate_id」メソッドへの問い合わせを行って、その結果で判定します。 対象となるページは、

  1. listtopics ページ、 listtopics_over_categories ページ
  2. listtopicsブロック、listpostsブロック
  3. forum検索 ページ
  4. Global 検索 ページ → 結果的に 各ユーザーの投稿ログページにも反映される。

となっています。
各モジュールへの問い合わせた結果は、そのモジュールのD3commentクラスの内容次第です。

 但し、listtopics ページと listtopics_over_categories ページ については、管理者とアドミニストレータに対しては、問い合わせ結果に関わらず全て表示します。 
 理由は、どこか表示しておかないと、元記事が削除されたりしてモジュール間の記事リンクが切れた場合に、迷子になった記事のメンテナンスが出来なくなってしまうからです。

 今回のハックによる副作用として、このような迷子記事は 一般ユーザーやゲストからは一切見えなくなりますので、そのメリット・デメリットを考慮のうえご使用ください。

Page Top

d3pipes ブロックジョイントの閲覧権限の継承 anchor.png

同梱したd3pipesブロックジョイント「D3pipesBlockD3forumrev」も同様に権限継承がなわれます。 (Topics/Posts をパラメータで選択) 
このTopicsジョイントでは、d3forumオリジナルのジョイントではアサインされない、トピック内の最新コメント本文もアサインします。 今回追加したPostsジョイントも同様です。

pipes_edit.gif

なお、タイトル部分に[掲示板名]を付加しております。

Page Top

external_link_idのアサイン anchor.png

各ハックでは、テンプレートに external_link_id をアサインしています。
使い方としては、 各ページでの飛び先をコメント元記事に変更したりすることを想定しています。
変更テンプレートは同梱しませんので、お手元で運用中のテンプレートを編集してください。

Page Top

ゲスト名のアサイン anchor.png

オリジナルのソースでは、ゲスト名がアサインされていなかったのを、topicslist、topics_over_categoriesでは「first_post_gname」「last_post_gname」でアサインしています。
こちらも変更テンプレートは同梱しませんので、お手元で運用中のテンプレートを編集してください。
元ネタ:(XUGJ)d3forumのlisttopicsのゲスト名

  • main_listtopics.html, main_listtopics_over_categories.html
    <{foreach item=topic from=$topics}> ループのお尻のほう、
     <{$topic.first_post_uname}> の部分を
    <{if $topic.first_post_gname}>
    	<{$topic.first_post_gname}>
    <{else}>
    	<{$topic.first_post_uname}>
    <{/if}>

 <{$topic.last_post_uname}> の部分を

<{if $topic.last_post_gname}>
	<{$topic.last_post_gname}>
<{else}>
	<{$topic.last_post_uname}>
<{/if}>	

という感じに。

  • block_list_topics.html
    <{foreach item=topic from=$block.topics}> ループ(2箇所あります)のお尻のほう、
     <{$topic.last_uname}> の部分を
    <{if $topic.guest_name}>
    	<{$topic.guest_name}>
    <{else}>
    	<{$topic.last_uname}>
    <{/if}>
    という感じに。
  • block_list_posts.html
    <{foreach item=post from=$block.posts}> ループのお尻のほう
     <{$post.uname}> の部分を
    <{if $post.guest_name}>
    	<{$post.guest_name}>
    <{else}>
    	<{$post.uname}>
    <{/if}>
    という感じに。
Page Top

謝辞 anchor.png

d3forumの当該ソースはもちろんのこと、その他のソースも参考にさせていただきました。 GIJOEさん、ありがとうございます。

Page Top

改変履歴 anchor.png

2009/07/03 初版(0.85_001)公開


トップ   凍結 差分 バックアップ 複製 名前変更 リロード印刷に適した表示   ページ新規作成 全ページ一覧 単語検索 最新ページの一覧   ヘルプ   最新ページのRSS 1.0 最新ページのRSS 2.0 最新ページのRSS Atom Powered by xpWiki
Counter: 2506, today: 1, yesterday: 0
初版日時: 2009-07-03 (金) 17:05:46
最終更新: 2010-11-02 (火) 23:11:04 (JST) (2812d) by naao