ページへ戻る

− Links

 印刷 

inc​/d3com_auth_002 のバックアップソース(No.6) :: Motion cafe

xpwiki:inc編集/d3com_auth_002編集 のバックアップソース(No.6)

« Prev[2]  Next »[3]
* d3コメント統合の、元記事閲覧権限連動その他ハック [#kef8e31a]
2010-11-01 他の機能を取り込んでバージョンアップしました。

現在のハックバージョン:0.85_002
(過去のバージョンはこちら→ [[0.85_001>inc/d3com_auth]])

実装済みのサイト(参考まで) : [[d3diaryデモサイト:http://d3diary.naaon.com/]]

元ネタ:(XUGJ)[[d3forum-d3diary統合元モジュール閲覧権限フィルター:http://www.xugj.org/modules/d3forum/index.php?topic_id=928#post_id5431]] 
(本ハックでは実装方法を少し変えています。)

d3forumのコメント統合の、元記事閲覧権限を制御する機能を使うとき、コメントのタイトルやコメント者がd3forum側で表示されてしまう気持ちが悪さを回避するためのハックをメインとし、本名表示対応やゲスト名表示、ツリー表示、テーマ色の反映などの周辺ハックを取り込んだ物です。

なお、d3forumの更に先の関連モジュールとの連携は、d3pipesを除いて手を入れていません。 (例えば、attachfile、新着情報、piCalなど。。) 元記事に閲覧権限が無いコメントでも、それらには発信される可能性がありますので、ご承知おきださい。 今後手をつけるかもしれませんが、切りが無いので期待薄と思ってください。

** ダウンロード [#u72cefe2]
以下のファイルをダウンロード、解凍し、trust以下のフォルダを xoops_trust_path/ 以下に上書き、html側のsmartyプラグインをsmarty/pluginsフォルダにアップロードして、モジュールアップデートを実行してください。

|CENTER:|CENTER:|c
|ダウンロードファイル|適応d3forum本体バージョン|h
|&ref(d3com_auth_diff_0.85_002.zip); 第二版|0.85|

** 機能・内容 [#ff623df8]
*** コメント元記事の閲覧権限の継承 [#cf5b4364]
メインとなる機能です。 D3コメント統合を行った各モジュールの、D3commentクラス内の、「Validate_id」メソッドへの問い合わせを行って、その結果で判定します。 対象となるページは、
+ listtopics ページ、 listtopics_over_categories ページ
+ listtopicsブロック、listpostsブロック
+ forum検索 ページ
+ Global 検索 ページ → 結果的に 各ユーザーの投稿ログページにも反映される。

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

 但し、listtopics ページと listtopics_over_categories ページ については、管理者とアドミニストレータに対しては、問い合わせ結果に関わらず全て表示します。 理由は、どこか表示しておかないと、元記事が削除されたりしてモジュール間の記事リンクが切れた場合に、迷子になった記事のメンテナンスが出来なくなってしまうからです。  &font(Red){今回のハックによる副作用として、このような迷子記事は 一般ユーザーやゲストからは一切見えなくなります};ので、そのメリット・デメリットを考慮のうえご使用ください。

**** d3pipes ブロックジョイントの閲覧権限の継承 [#wcb50a76]
同梱したd3pipesブロックジョイント「D3pipesBlockD3forumrev」も同様に権限継承がなわれます。 (Topics/Posts をパラメータで選択) 
このTopicsジョイントでは、d3forumオリジナルのジョイントではアサインされない、トピック内の最新コメント本文もアサインします。 今回追加したPostsジョイントも同様です。
|&ref(inc/d3com_auth/pipes_edit.gif,mw:300,mh:300);|
なお、タイトル部分に[掲示板名]を付加しております。

*** external_link_idのアサイン [#r0b6202c]
各ハックでは、テンプレートに external_link_id をアサインしています。
使い方としては、 各ページでの飛び先をコメント元記事に変更したりすることを想定しています。

 参考:コメント統合でブロックから元記事へリンク

block_list_posts.html、block_list_topics.html テンプレートの中にサンプルでコメントアウトしていますので、必要に応じて内容を調整し有効化してください。

*** ゲスト名のアサイン [#q2c95c4a]
オリジナルのソースでは、ゲスト名がアサインされていなかったのを、topicslist、topics_over_categoriesでは「first_post_gname」「last_post_gname」でアサインしています。
元ネタ:(XUGJ)[[d3forumのlisttopicsのゲスト名:http://www.xugj.org/modules/d3forum/index.php?topic_id=900]]

*** 本名表示 [#w0cce125]
管理画面に、「uname」(ユーザーID)/「name」(本名:ニックネーム) の表示選択を付けて、全ての表示を切り替えるようにハックしました。 なお、notification機能の送信先ユーザー名(X_UNAME)についてはコア側なので変更していません。 コアがXCLでしたら、RYUSさんが公開している、[[RyusExmailString preload:http://ryus.co.jp/modules/d3downloads/index.php?page=singlefile&cid=2&lid=25]]の使用をお勧めします。

*** コメント統合で d3forumのツリー全表示 [#o6d40c77]
[[元ネタ:http://www.xugj.org/modules/QandA/index.php?topic_id=1310]] - XUGJ

|&ref(inc/d3forum/d3com_tree/tree_topicslist.jpg,mw:200);|

- function.d3comment_tree.phpを、smartyプラグインフォルダにコピーしてください。
-- コメント統合で付いたコメント。 質問内容が変わったりしてトピック分けしたりすると、d3forum側で「このトピックの投稿一覧へ」で閲覧してもトピック内の投稿しか表示されないため、同じ元記事に紐付いた他のトピックの投稿に気づかない場合があります。
 オリジナル版では、元記事にジャンプして初めてその存在に気づくことになっていて、最大表示記事数を超えている場合は元記事側でも他のトピの投稿が流れてしまって表示されない場合もあります。 こういう時は、仕方なく「トピック表示」にしたりしますが、訪問者から見るとコメントし辛い感じ。
 色々な案を考えてやってみたのですが、一番しっくりきたのはd3forum側で「このトピックの投稿一覧へ」を表示したときに、他のトピも含めてツリーを表示するというものです。 当該トピだけでしたら、テンプレート編集だけで行けますが、全トピのツリー表示は対策が必要です。
-- テンプレートには既に記述済みで編集不要ですが、もし応用として変更する場合は以下を参考にしてください。
--- 呼び出し例
<{d3comment_tree forum_dirname=$mydirname forum_id=$forum.id topic_id=$topic.id external_link_id=$topic.external_link_id order="ASC" postorder=$postorder use_name=$mod_config.use_name item="tree"}>
--- 指定オプション
+++ forum_dirname: d3forumのディレクトリ名。d3forumテンプレート内では$mydirnameでOK。
+++ forum_id: コメント統合したd3forumのforum番号。d3forumテンプレート内では$forum.idでOK。
+++ topic_id: コメント統合記事以外の時に表示トピックを限定するための、topic番号。d3forumテンプレート内では$topic.idでOK。
+++ external_link_id: コメント統合記事の外部リンク番号。d3forumテンプレート内では$topic.external_link_idでOK。
+++ order: 表示の昇順/降順指定。 「ASC」=「降順」、「DESC」=「昇順」。 「d3forum_main_listposts.html 」内の記述では、ツリー構造順表示が標準ですので、ここでは何も指定しないでください。
+++ limit: ツリーに表示する最大タイトル数。 指定しなければ100件までを最大として表示します。(記事自体の表示件数ではありません。)
+++ postorder: 「投稿の新しいものから」「投稿の古いものから」をクリックした時の、表示順変更のための変数。 d3forumテンプレート内では$postorderでOK。
+++ use_name: 前項の本名表示をするかしないかのパラメータ。 $mod_config.use_name のままでOK。
+++ item: テンプレート内で参照する変数名。

*** テーマの色調を引き継ぐ [#m0612b8b]
 d3forumのテンプレート、モジュールCSSは、独自の色調を採用しており、テーマを変更するたびに テーマの色調に調整しなければなりません。 調整箇所を集約する工夫がなされているとはいえ、結構面倒ですし、サイト訪問ユーザーが自由に切り替えられないのは困ります。
 これを、特に見づらくなる部分を重点的にテーマのCSS要素を継承する設定に変更してあります。

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

** 改変履歴 [#o0f73d76]
2010/11/01 第二版(0.85_002)公開
2009/07/03 初版(0.85_001)公開

« Prev[2]  Next »[3]