From 8d96a7b4e68909317c0d72d2f07577f2bc697d28 Mon Sep 17 00:00:00 2001
From: dongsheng <dongsheng>
Date: Thu, 26 Mar 2009 02:52:59 +0000
Subject: [PATCH] "EDITOR/MDL-16698, replace htmleditor element with editor
 element in forum, move draft files to correct file area"

---
 mod/forum/lib.php       | 17 +++++++++++++++--
 mod/forum/post.php      | 13 +++++++++++--
 mod/forum/post_form.php |  5 +----
 3 files changed, 27 insertions(+), 8 deletions(-)

diff --git a/mod/forum/lib.php b/mod/forum/lib.php
index 0e05d9d5c8..51156e7cb1 100644
--- a/mod/forum/lib.php
+++ b/mod/forum/lib.php
@@ -2968,8 +2968,11 @@ function forum_print_post($post, $discussion, $forum, &$cm, $course, $ownpost=fa
     static $strpruneheading, $displaymode;
     static $strmarkread, $strmarkunread;
 
+    $modcontext = get_context_instance(CONTEXT_MODULE, $cm->id);
+
     $post->course = $course->id;
     $post->forum  = $forum->id;
+    $post->message = file_convert_relative_pluginfiles($post->message, 'pluginfile.php', "$modcontext->id/forum_post/$post->id/");
 
     // caching
     if (!isset($cm->cache)) {
@@ -2978,7 +2981,6 @@ function forum_print_post($post, $discussion, $forum, &$cm, $course, $ownpost=fa
 
     if (!isset($cm->cache->caps)) {
         $cm->cache->caps = array();
-        $modcontext = get_context_instance(CONTEXT_MODULE, $cm->id);
         $cm->cache->caps['mod/forum:viewdiscussion']   = has_capability('mod/forum:viewdiscussion', $modcontext);
         $cm->cache->caps['moodle/site:viewfullnames']  = has_capability('moodle/site:viewfullnames', $modcontext);
         $cm->cache->caps['mod/forum:editanypost']      = has_capability('mod/forum:editanypost', $modcontext);
@@ -4149,9 +4151,11 @@ function forum_add_attachment($post, $forum, $cm, $mform=null, &$message=null) {
 function forum_add_new_post($post, $mform, &$message) {
     global $USER, $CFG, $DB;
 
+    $message = $post->message;
     $discussion = $DB->get_record('forum_discussions', array('id' => $post->discussion));
     $forum      = $DB->get_record('forum', array('id' => $discussion->forum));
     $cm         = get_coursemodule_from_instance('forum', $forum->id);
+    $context    = get_context_instance(CONTEXT_MODULE, $cm->id);
 
     $post->created    = $post->modified = time();
     $post->mailed     = "0";
@@ -4162,6 +4166,8 @@ function forum_add_new_post($post, $mform, &$message) {
         return false;
     }
 
+    $message = file_convert_draftarea($post->itemid, $context->id, 'forum_post', $post->id, true, $message);
+    $DB->set_field('forum_posts', 'message', $message, array('id'=>$post->id));
     forum_add_attachment($post, $forum, $cm, $mform, $message);
 
     // Update discussion modified date
@@ -4184,6 +4190,7 @@ function forum_update_post($post, $mform, &$message) {
     $discussion = $DB->get_record('forum_discussions', array('id' => $post->discussion));
     $forum      = $DB->get_record('forum', array('id' => $discussion->forum));
     $cm         = get_coursemodule_from_instance('forum', $forum->id);
+    $context    = get_context_instance(CONTEXT_MODULE, $cm->id);
 
     $post->modified = time();
 
@@ -4199,6 +4206,8 @@ function forum_update_post($post, $mform, &$message) {
         $discussion->timestart = $post->timestart;
         $discussion->timeend   = $post->timeend;
     }
+    $post->message = file_convert_draftarea($post->itemid, $context->id, 'forum_post', $post->id, true, $post->message);
+    $DB->set_field('forum_posts', 'message', $post->message, array('id'=>$post->id));
 
     if (!$DB->update_record('forum_discussions', $discussion)) {
         return false;
@@ -4227,6 +4236,7 @@ function forum_add_discussion($discussion, $mform=null, &$message=null) {
 
     $forum = $DB->get_record('forum', array('id'=>$discussion->forum));
     $cm    = get_coursemodule_from_instance('forum', $forum->id);
+    $context = get_context_instance(CONTEXT_MODULE, $cm->id);
 
     $post = new object();
     $post->discussion  = 0;
@@ -4247,6 +4257,9 @@ function forum_add_discussion($discussion, $mform=null, &$message=null) {
         return 0;
     }
 
+    $text = file_convert_draftarea($discussion->itemid, $context->id, 'forum_post', $post->id, true, $post->message);
+    $DB->set_field('forum_posts', 'message', $text, array('id'=>$post->id));
+
     // Now do the main entry for the discussion, linking to this first post
 
     $discussion->firstpost    = $post->id;
@@ -5260,8 +5273,8 @@ function forum_print_discussion($course, $cm, $forum, $discussion, $post, $mode,
     } else {
         $ownpost = false;
     }
+    $modcontext = get_context_instance(CONTEXT_MODULE, $cm->id);
     if ($canreply === NULL) {
-        $modcontext = get_context_instance(CONTEXT_MODULE, $cm->id);
         $reply = forum_user_can_post($forum, $discussion, $USER, $cm, $course, $modcontext);
     } else {
         $reply = $canreply;
diff --git a/mod/forum/post.php b/mod/forum/post.php
index ca1e45d2ac..a5f9e2de55 100644
--- a/mod/forum/post.php
+++ b/mod/forum/post.php
@@ -496,10 +496,16 @@
         $subscribe = !empty($USER->autosubscribe);
     }
 
+    $draftid_editor = file_get_submitted_draftitemid('message');
+    $currenttext = file_prepare_draftarea($draftid_editor, $modcontext->id, 'forum_post', empty($post->id) ? null : $post->id, true, $post->message);
     $mform_post->set_data(array(        'attachments'=>$draftitemid,
                                         'general'=>$heading,
                                         'subject'=>$post->subject,
-                                        'message'=>$post->message,
+                                        'message'=>array(
+                                            'text'=>$currenttext,
+                                            'format'=>empty($post->format) ? FORMAT_HTML : $post->format, //TODO: add some better default
+                                            'itemid'=>$draftid_editor
+                                        ),
                                         'subscribe'=>$subscribe?1:0,
                                         'mailnow'=>!empty($post->mailnow),
                                         'userid'=>$post->userid,
@@ -536,7 +542,10 @@
             $errordestination = $SESSION->fromurl;
         }
 
-        trusttext_after_edit($fromform->message, $modcontext);
+        trusttext_after_edit($fromform->message['text'], $modcontext);
+        $fromform->format  = $fromform->message['format'];
+        $fromform->itemid  = $fromform->message['itemid'];
+        $fromform->message = $fromform->message['text'];
 
         if ($fromform->edit) {           // Updating a post
             unset($fromform->groupid);
diff --git a/mod/forum/post_form.php b/mod/forum/post_form.php
index 5a3f2708bc..6ac5f4aa92 100644
--- a/mod/forum/post_form.php
+++ b/mod/forum/post_form.php
@@ -23,14 +23,11 @@ class mod_forum_post_form extends moodleform {
         $mform->addRule('subject', get_string('required'), 'required', null, 'client');
         $mform->addRule('subject', get_string('maximumchars', '', 255), 'maxlength', 255, 'client');
 
-        $mform->addElement('htmleditor', 'message', get_string('message', 'forum'), array('cols'=>50, 'rows'=>30, 'filearea'=>'forumpost'));
+        $mform->addElement('editor', 'message', get_string('message', 'forum'), array('maxfiles'=>-1, 'filearea'=>'forum_post'));
         $mform->setType('message', PARAM_RAW);
         $mform->addRule('message', get_string('required'), 'required', null, 'client');
         $mform->setHelpButton('message', array('reading', 'writing', 'questions', 'richtext2'), false, 'editorhelpbutton');
 
-        $mform->addElement('format', 'format', get_string('format'));
-
-
         if (isset($forum->id) && forum_is_forcesubscribed($forum)) {
 
             $mform->addElement('static', 'subscribemessage', get_string('subscription', 'forum'), get_string('everyoneissubscribed', 'forum'));
-- 
2.39.5