messages MDL-19664 Clean up the messages javascript code
I have cleaned up the message Javascript code, implementing the new PAGE methods and at the same time implemented the new OUTPUT methods
This commit is contained in:
+19
-82
@@ -15,42 +15,23 @@
|
||||
print_error('disabled', 'message');
|
||||
}
|
||||
|
||||
/// Script parameters
|
||||
$userid = required_param('id', PARAM_INT);
|
||||
$userfullname = strip_tags(required_param('name', PARAM_RAW));
|
||||
$wait = optional_param('wait', MESSAGE_DEFAULT_REFRESH, PARAM_INT);
|
||||
|
||||
$stylesheetshtml = '';
|
||||
foreach ($CFG->stylesheets as $stylesheet) {
|
||||
$stylesheetshtml .= '<link rel="stylesheet" type="text/css" href="'.$stylesheet.'" />';
|
||||
}
|
||||
$PAGE->set_generaltype('popup');
|
||||
$PAGE->set_title(get_string('messages', 'message').' - '.format_string($SITE->fullname));
|
||||
header('Expires: Sun, 28 Dec 1997 09:32:45 GMT');
|
||||
header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
|
||||
header('Cache-Control: no-cache, must-revalidate');
|
||||
header('Pragma: no-cache');
|
||||
header('Content-Type: text/html; charset=utf-8');
|
||||
|
||||
echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">'."\n";
|
||||
echo '<html><head><title> </title>';
|
||||
echo '<meta http-equiv="content-type" content="text/html; charset=utf-8" />';
|
||||
echo '<script type="text/javascript">'."\n";
|
||||
echo '<!--'."\n";
|
||||
echo 'if (parent.messages.document.getElementById("messagestarted") == null) {'."\n";
|
||||
echo ' parent.messages.document.close();'."\n";
|
||||
echo ' parent.messages.document.open("text/html","replace");'."\n";
|
||||
echo ' parent.messages.document.write("<html><head><title> <\/title>");'."\n";
|
||||
echo ' parent.messages.document.write("<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\" />");'."\n";
|
||||
echo ' parent.messages.document.write("<base target=\"_blank\" />");'."\n";
|
||||
echo ' parent.messages.document.write("'.addslashes_js($stylesheetshtml).'");'."\n";
|
||||
echo ' parent.messages.document.write("<\/head><body class=\"message course-1\" id=\"message-messages\"><div style=\"display: none\" id=\"messagestarted\"> <\/div>");'."\n";
|
||||
echo '}'."\n";
|
||||
|
||||
@ob_implicit_flush(true);
|
||||
@ob_end_flush();
|
||||
/// Script parameters
|
||||
$userid = required_param('id', PARAM_INT);
|
||||
$userfullname = strip_tags(required_param('name', PARAM_RAW));
|
||||
$wait = optional_param('wait', MESSAGE_DEFAULT_REFRESH, PARAM_INT);
|
||||
|
||||
/*Get still to be read message, use message/lib.php funtion*/
|
||||
$messages = message_get_popup_messages($USER->id, $userid);
|
||||
if ($messages ) {
|
||||
$messages = message_get_popup_messages($USER->id, $userid);
|
||||
$jsmessages = Array();
|
||||
if ($messages ) {
|
||||
foreach ($messages as $message) {
|
||||
$time = userdate($message->timecreated, get_string('strftimedatetimeshort'));
|
||||
|
||||
@@ -61,75 +42,31 @@
|
||||
$printmessage = '<div class="message other"><span class="author">'.s($userfullname).'</span> '.
|
||||
'<span class="time">['.$time.']</span>: '.
|
||||
'<span class="content">'.$printmessage.'</span></div>';
|
||||
$printmessage = addslashes_js($printmessage); // So Javascript can write it
|
||||
echo "parent.messages.document.write('".$printmessage."');\n";
|
||||
$jsmessages[count($jsmessages)] = $printmessage;
|
||||
}
|
||||
if (get_user_preferences('message_beepnewmessage', 0)) {
|
||||
$playbeep = true;
|
||||
}
|
||||
echo 'parent.messages.scroll(1,5000000);'."\n";
|
||||
echo 'parent.send.focus();'."\n";
|
||||
$wait = MESSAGE_DEFAULT_REFRESH;
|
||||
} else {
|
||||
if ($wait < 300) { // Until the wait is five minutes
|
||||
$wait = ceil(1.2 * (float)$wait); // Exponential growth
|
||||
}
|
||||
}
|
||||
/* old code to be deleted
|
||||
if ($messages = $DB->get_records('message', array('useridto'=>$USER->id, 'useridfrom'=>$userid), 'timecreated')) {
|
||||
foreach ($messages as $message) {
|
||||
$time = userdate($message->timecreated, get_string('strftimedatetimeshort'));
|
||||
|
||||
$options = new object();
|
||||
$options->para = false;
|
||||
$options->newlines = true;
|
||||
$printmessage = format_text($message->message, $message->format, $options);
|
||||
$printmessage = '<div class="message other"><span class="author">'.s($userfullname).'</span> '.
|
||||
'<span class="time">['.$time.']</span>: '.
|
||||
'<span class="content">'.$printmessage.'</span></div>';
|
||||
$printmessage = addslashes_js($printmessage); // So Javascript can write it
|
||||
echo "parent.messages.document.write('".$printmessage."');\n";
|
||||
|
||||
/// Move the entry to the other table
|
||||
$message->timeread = time();
|
||||
$messageid = $message->id;
|
||||
unset($message->id);
|
||||
if ($DB->insert_record('message_read', $message)) {
|
||||
$DB->delete_records('message', array('id'=>$messageid));
|
||||
}
|
||||
}
|
||||
if (get_user_preferences('message_beepnewmessage', 0)) {
|
||||
$playbeep = true;
|
||||
}
|
||||
echo 'parent.messages.scroll(1,5000000);'."\n";
|
||||
echo 'parent.send.focus();'."\n";
|
||||
$wait = MESSAGE_DEFAULT_REFRESH;
|
||||
} else {
|
||||
if ($wait < 300) { // Until the wait is five minutes
|
||||
$wait = ceil(1.2 * (float)$wait); // Exponential growth
|
||||
}
|
||||
}
|
||||
*/
|
||||
echo '-->'."\n";
|
||||
echo '</script>'."\n";
|
||||
echo '</head>'."\n";
|
||||
echo '<body>'."\n";
|
||||
$PAGE->requires->js('message/message.js')->in_head();
|
||||
$PAGE->requires->js_function_call('refresh_parent_messages_frame');
|
||||
$PAGE->requires->data_for_js('chatmessages', Array('msgcount'=>count($jsmessages), 'msg'=>$jsmessages))->in_head();
|
||||
|
||||
echo $OUTPUT->header();
|
||||
if (!empty($playbeep)) {
|
||||
echo '<embed src="bell.wav" autostart="true" hidden="true" name="bell" />';
|
||||
echo '<script type="text/javascript">'."\n";
|
||||
echo '<!--'."\n";
|
||||
echo 'parent.send.focus();'."\n";
|
||||
echo '-->'."\n";
|
||||
echo '</script>'."\n";
|
||||
echo $PAGE->requires->js_function_call('parent.send.focus')->asap();
|
||||
}
|
||||
|
||||
// Javascript for Mozilla to cope with the redirect bug from editor being on in this page
|
||||
echo '<script type="text/javascript">//<![CDATA[' . "\n";
|
||||
echo 'setTimeout(function() { document.location.replace(' .
|
||||
json_encode("refresh.php?id=$userid&name=" . urlencode($userfullname) .
|
||||
"&wait=$wait") . ');}, ' . ($wait * 1000) . ");\n";
|
||||
echo "//]]></script>\n";
|
||||
echo "</body>\n";
|
||||
echo "</html>\n";
|
||||
$PAGE->requires->js_function_call('refresh_page', Array(($wait*1000), "refresh.php?id=$userid&name=".urlencode($userfullname)."&wait=$wait"));
|
||||
|
||||
echo $OUTPUT->footer();
|
||||
|
||||
?>
|
||||
|
||||
Reference in New Issue
Block a user