Note:

If you want to create a new page for developers, you should create it on the Moodle Developer Resource site.

Comment API: Difference between revisions

From MoodleDocs
(Fixing typo and adding determinants)
m (API changed)
Line 69: Line 69:


lib/weblib.php
lib/weblib.php
===function format_text_with_comments($text, $format=FORMAT_MOODLE, $options=NULL, $courseid=null, $cmt_options)===
===Add an option to format_text function===


Using this format text function will add a comment icon automatically at the end of the text:
Using this format_text function will add a comment icon automatically at the end of the text:


For example, using the following code in the forum module will add a comment icon to every post:
For example, using the following code in the forum module will add a comment icon to every post:
Line 81: Line 81:
$cmt->itemid    = $post->id;
$cmt->itemid    = $post->id;
$cmt->summary  = substr(strip_tags($post->message), 0 ,10);
$cmt->summary  = substr(strip_tags($post->message), 0 ,10);
echo format_text_with_comments($post->message, $post->messageformat, $options, $course->id, $cmt)."<hr />";
$options->comments = $cmt;
echo format_text($post->message, $post->messageformat, $options, $course->id)."<hr />";
</code>
</code>


Line 90: Line 91:
====__construct($contextid, $comment_area, $itemid))====
====__construct($contextid, $comment_area, $itemid))====


====print_comment_link($return = false)====
 
Will print a comment icon, click it you will get commenting interface
====js()====
Print Javascript required by commenting API, this is a static function, which must be called before html head printed</head>
 
====init($return = false)====
Will print the html snippet for commenting UI, will be called inside format_text


====print_comments($params = array())====
====print_comments($params = array())====
Line 106: Line 111:


==Javascript API==
==Javascript API==
Can be found in lib/javascript-static.js
Can be found in lib/comment.js


===do_comment(client_id)===
===do_comment(client_id)===

Revision as of 07:22, 3 July 2009

Objectives

The goals of comments 2.0:

  • Manage comments centrally
  • Use a consistent approach for all comments throughout Moodle
  • Easily integrate comments 2.0 with existing modules


Overview

The comments 2.0 provides APIs to:

  1. Add comments
  2. Update comments

And provides an ajax interface to allow adding comments on a floating DIV.

Comments database table

Field Type Default Info
id int(10) auto-incrementing The unique ID for this comment.
user_id int(10) who wrote this comment
contextid int(10) The context id defined in context table - identifies the instance of plugin owning the comment.
itemid int(10) Some plugin specific item id (eg. forum post, blog entry or assignment submission)
comment_area int(10) for example, in user profile, you can comment user's description or interests, but they share the same itemid(==userid), we need comment_area to separate them
timecreated int(10)
timemodified int(10)
content text content of comment

Comments API

lib/weblib.php

Add an option to format_text function

Using this format_text function will add a comment icon automatically at the end of the text:

For example, using the following code in the forum module will add a comment icon to every post:

$cmt = new stdclass; $cmt->contextid = $modcontext->id; $cmt->area = 'format_post'; $cmt->itemid = $post->id; $cmt->summary = substr(strip_tags($post->message), 0 ,10); $options->comments = $cmt;

echo format_text($post->message, $post->messageformat, $options, $course->id)."


";


lib/commentlib.php

class comment()

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

js()

Print Javascript required by commenting API, this is a static function, which must be called before html head printed</head>

init($return = false)

Will print the html snippet for commenting UI, will be called inside format_text

print_comments($params = array())

print comments

add($content, $parent_id)

Add comment to database

delete($id)

delete a comment

edit($id, $content)

Edit a comment

Javascript API

Can be found in lib/comment.js

do_comment(client_id)

Submit a comment

show_comments(event, contextid, comment_area, itemid, page, client_id)

Pup up the comments floating window

get_cmt(ctx, area, itemid, page, client_id)

Load comments by AJAX

Interface

moodle commenting forum module.png

See also