Index: mod/forum/lib.php
===================================================================
RCS file: /cvsroot/moodle/moodle/mod/forum/lib.php,v
retrieving revision 1.804
diff -u -r1.804 lib.php
--- mod/forum/lib.php	19 Jul 2009 08:57:11 -0000	1.804
+++ mod/forum/lib.php	20 Jul 2009 02:03:33 -0000
@@ -3550,6 +3550,15 @@
         echo '</div>';
     }
 
+     if (!empty($CFG->usecomments)) {
+         require_once($CFG->libdir . '/commentlib.php');
+         $cmt = new stdclass;
+         $cmt->context   = $modcontext;
+         $cmt->area      = 'forum_post';
+         $cmt->itemid    = $post->id;
+         $comment = new comment($cmt);
+         $comment->init(false);
+     }
     if ($footer) {
         echo '<div class="footer">'.$footer.'</div>';
     }
@@ -8167,3 +8176,61 @@
         return get_string('modulename', 'forum');
     }
 }
+
+// a callback function to control permissions
+function forum_comment_permissions($params) {
+    return array('post'=>true, 'view'=>true);
+}
+
+// a callback function to modify user's comment before incerting into db
+function forum_comment_add(&$comment, $params) {
+    global $USER;
+    $comment->content .= (' ~ by ' . fullname($USER));
+    return true;
+}
+
+// a cb function to format comments listing
+function forum_comment_display(&$comments, $params) {
+    foreach($comments as &$c) {
+        $c->content .= ' did call back';
+    }
+    return true;
+}
+// a cb function to return comment template
+function forum_comment_template($options) {
+    $ret = <<<EOD
+<div class="comment-userpicture">___picture___</div> 
+<div class="comment-content">
+    ___name___ - <span>___time___</span>
+    <div>___content___</div>
+</div>
+EOD;
+    return $ret;
+}
+
+// a cb function to return original url of comments
+function forum_comment_url($options) {
+    global $CFG, $DB;
+    if (!$context = get_context_instance_by_id($options->contextid)) {
+        return null;
+    }
+    if ($context->contextlevel == CONTEXT_MODULE) {
+        switch ($options->commentarea) {
+        case 'forum_post':
+            if ($record = $DB->get_record('forum_posts', array('id'=>$options->itemid))){
+                $parentid = $record->discussion;
+            } else {
+                $parentid = $options->itemid;
+            }
+            $url = $CFG->httpswwwroot.'/mod/forum/discuss.php?d='.$parentid.'#p' . $options->itemid;
+            return $url;
+            break;
+        default:
+            return null;
+            break;
+        }
+    } else {
+        return null;
+    }
+    
+}
Index: mod/forum/discuss.php
===================================================================
RCS file: /cvsroot/moodle/moodle/mod/forum/discuss.php,v
retrieving revision 1.137
diff -u -r1.137 discuss.php
--- mod/forum/discuss.php	15 Jun 2009 05:37:59 -0000	1.137
+++ mod/forum/discuss.php	20 Jul 2009 02:03:33 -0000
@@ -30,6 +30,13 @@
 
     require_course_login($course, true, $cm);
 
+    $modcontext = get_context_instance(CONTEXT_MODULE, $cm->id);
+    require_capability('mod/forum:viewdiscussion', $modcontext, NULL, true, 'noviewdiscussionspermission', 'forum');
+
+
+    // require js for commenting
+    require_once($CFG->libdir . '/commentlib.php');
+    comment::js();
 /// Add ajax-related libs
     $PAGE->requires->yui_lib('event');
     $PAGE->requires->yui_lib('connection');
@@ -39,9 +46,6 @@
     // move this down fix for MDL-6926
     require_once('lib.php');
 
-    $modcontext = get_context_instance(CONTEXT_MODULE, $cm->id);
-    require_capability('mod/forum:viewdiscussion', $modcontext, NULL, true, 'noviewdiscussionspermission', 'forum');
-
     if ($forum->type == 'news') {
         if (!($USER->id == $discussion->userid || (($discussion->timestart == 0
             || $discussion->timestart <= time())
