「コメントAPI」の版間の差分

提供:MoodleDocs
移動先:案内検索
編集の要約なし
編集の要約なし
192行目: 192行目:
*commentareaをリストアのマッピングの1つと同じにする (set_mapping) または
*commentareaをリストアのマッピングの1つと同じにする (set_mapping) または
* override the function "get_comment_mapping_itemname" in the restore activity class
* override the function "get_comment_mapping_itemname" in the restore activity class
* リストア活動クラスの関数「get_comment_mapping_itemname」をオーバーライドする。


If you do not do one of these the comments will be silently ignored on restore.
If you do not do one of these the comments will be silently ignored on restore.

2023年5月12日 (金) 15:00時点における版

Moodle 2.0


作成中です - Mitsuhiro Yoshida (トーク)

目的

コメントAPIのゴールは以下のとおりです:

  • コメントを一元管理する
  • Moodle全体を通して、すべてのコメントに一貫したアプローチを使用する
  • コメントAPIを既存モジュールに簡単に統合できる
  • JavaScriptが有効か否かに関係なく動作する


概要

コメントAPIでは以下の機能を提供します:

  1. コメントを追加すr
  2. コメントを管理する
  3. コメントを削除する

また、ページを再読み込みすることなくコメントを追加/削除するための派手なAjaxインターフェイスも提供します。

コメントAPIデータベーステーブル

フィールド タイプ デフォルト 情報
id int(10) auto-incrementing このコメントのユニークID
userid int(10) このコメントの投稿者
contextid int(10) コンテクストテーブルで定義された コンテクストID - コメントの所有者であるプラグインのインスタンスを識別します。
itemid int(10) プラグイン固有のアイテムID (例: フォーラム投稿、ブログエントリ、課題提出等)
commentarea int(10) 例えばあなたはユーザプロファイルではユーザ説明または趣味をコメントできますが、これらは同じitemid (==userid) を共有しているため、comment_areaで分離する必要があります。
timecreated int(10)
timemodified int(10)
content text コメントのコンテンツ

コメントAPIを使用する

format_text関数にオプションを追加する

このformat_text関数を使用した場合、テキスト末尾にコメントアイコンが自動的に追加されます:

例えばフォーラムモジュールで次のコードを使用した場合、すべての投稿にコメントアイコンが追加されます:

$cmt = new stdclass;
$cmt->contextid = $modcontext->id;
$cmt->area      = 'format_post';
$cmt->itemid    = $post->id;
$options->comments = $cmt;
echo format_text($post->message, $post->messageformat, $options, $course->id)."<hr />";

コメントクラスを使用する

コメントAPIを他の場所で使用する場合、以下のコードを使用してください:

$options->area    = 'database_entry';
$options->context = $context;
$options->itemid  = $record->id;
$options->component = 'mod_data';
$options->showcount = true;
$comment = new comment($options);
$comment->output(false);

コメントAPI概要

一般的にコメントAPIを動作させるためにあなたが知る必要のある関数は以下2つのみです:

  1. comment::init (コメントAPIの初期化に使用する)
  2. $comment->output (コメントの表示に使用する)

コメントクラスはcomment/lib.phpに実装されています。

class comment()

__construct($contextid, $comment_area, $itemid))

クラスメンバを初期化します。

init()

コメントの初期化および言語の設定に使用される静的関数です。HTMLのヘッダ表示の前に必ず呼び出されます。

output($return = false)

コメントインターフェースのHTMLスニペットをプリントします。$returnにtrueに設定した場合、プリントの代わりにHTML文字列を返します。

print_comments($params = array())

非JavaScriptのコメントインターフェイスで使用されます。コメントリストを表示します。

add($content)

コメントをデータベースに追加するパブリックインスタンス関数です。これはcomment/comment_ajax.phpで使用されます。

count()

コメント数をカウントします。

delete($id)

データベースからコメントを削除します。これはcomment/comment_ajax.phpで使用されます。

delete_comments

特定のコンテクストのすべてのコメントを削除する (例: フォーラム投稿に付随するすべてのコメント)。

Javascript API

コメントAPIではブラウザとmoodle間の通信を処理するためにYUI3モジュールM.core_commentを実装しました。これはcomment/comment.js内にあります。

M.core_comment.initをコールした場合、CommentHelperクラスのインスタンスが生成されます。あなたはこのインスタンスに対して何かをコールする必要はなく、単にそのまま動作します。

Moodleモジュールコールバック

Comment APIはモジュール/ブロック/ブログがコメント表示方法を決めれるようにできます。

データ妥当性検証

このコールバックメソッドは必須であり、必ず実装する必要があります。そうでない場合、新しいコメントはデフォルトで拒否されます。プラグインはpluginname_comment_validateコールバックを実装して、コメントパラメータを検証する必要があります。また、検証に合格した場合、trueを返す必要があります。

パーミッションコントロール

モジュールには投稿許および閲覧許可を返す関数「pluginname_comment_permissions」を実装する必要があります。

ブロックではblock_baseの「blockname_comment_permissions」関数を上書きする必要があります。

ブログでは「blog_comment_permissions」関数を実装する必要があります。

この関数は配列を返します: array('post'=>true, 'view'=>true)

新しい追加コメントを確認する

コールバック関数により、あなたはデータベースに挿入する前にコメント内容を変更したり、このコメントを拒否できます。

「コメント詳細を含むコメントオブジェクト」および「コンテキストおよびコース情報を含む$params」の2つの引数を取得します。

モジュールでは「modname_comment_add」という関数名の関数を実装できます。

ブロックでは「blockname_comment_add」関数をオーバーライドする必要があります。

ブロックでは「blog_comment_add」関数を実装する必要があります。

この関数はブール値を返すべきです。

コメントをフィルタ/フォーマットする

このコールバックはユーザがコメントの表示を要求した場合にモジュールによるコメントのチェックおよびフォーマットを可能にします。

pluginname_comment_addと同じ引数を取得します。

モジュールには「pluginname_comment_display」という関数名の関数を実装できます。

ブロックでは「blockname_comment_display」関数をオーバーライドする必要があります。

ブロックでは「blog_comment_display」関数を実装する必要があります。

これはコメントオブジェクトを返します。

コメントテンプレートを定義する

モジュールはpluginname_comment_templateという関数名の関数を実装できます。これはモジュールがコメントテンプレートを定義できるようにします。

テンプレートには4つの埋め込み変数___id___, ___content__, ___time__, ___name___を持つ必要があります。それらはhtml id、コメントコンテンツ、コメント時間、コメント投稿者名に置換されます。

バックアップおよびリストア Backup and Restore

Comments will automatically be included in the activity/course backups and restored provided the itemids can be updated during the restore process. To do this either: コメントは自動的に活動/コースのバックアップに含まれます。リストア処理中に提供されたアイテムIDを更新できる場合、バックアップがリストアされます。これには以下のいずれかを考慮してください:

  • do not use item ids and rely just on the context
  • アイテムIDを使用せずにコンテキストにのみ依存する。
  • make the commentarea the same as one of the mappings in the restore (set_mapping); or
  • commentareaをリストアのマッピングの1つと同じにする (set_mapping) または
  • override the function "get_comment_mapping_itemname" in the restore activity class
  • リストア活動クラスの関数「get_comment_mapping_itemname」をオーバーライドする。

If you do not do one of these the comments will be silently ignored on restore.

関連情報