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:
samhemelryk
2009-06-30 08:33:29 +00:00
parent 17a6649b95
commit a1b53dcf3f
11 changed files with 139 additions and 167 deletions
+19 -14
View File
@@ -23,9 +23,11 @@
}
if ($user->deleted) {
print_header();
print_heading(get_string('userdeleted'));
print_footer();
$PAGE->set_generaltype('popup');
$PAGE->set_title(get_string('discussion', 'message').': '.fullname($user));
echo $OUTPUT->header();
echo $OUTPUT->heading(get_string('userdeleted'), 1);
echo $OUTPUT->footer();
die;
}
@@ -128,7 +130,10 @@
$userfullname = fullname($user);
$mefullname = fullname($USER);
print_header(get_string('discussion', 'message').': '.fullname($user), '', '', 'edit-message');
$PAGE->set_generaltype('popup');
$PAGE->set_title(get_string('discussion', 'message').': '.fullname($user));
echo $OUTPUT->header();
echo '<div class="message-discussion-noframes">';
echo '<div id="userinfo">';
echo print_user_picture($user, SITEID, $user->picture, 48, true, true, 'userwindow');
@@ -219,10 +224,10 @@
$fullname = $userfullname;
}
if ($message->format == FORMAT_HTML){
$printmessage = format_text($message->fullmessagehtml, $message->format, $options, 0);
if ($message->fullmessageformat == FORMAT_HTML){
$printmessage = format_text($message->fullmessagehtml, $message->fullmessageformat, $options, 0);
} else{
$printmessage = format_text($message->fullmessage, $message->format, $options, 0);
$printmessage = format_text($message->fullmessage, $message->fullmessageformat, $options, 0);
}
$printmessage = '<div class="message other"><span class="author">'.$fullname.'</span> '.
'<span class="time">['.$time.']</span>: '.
@@ -241,10 +246,10 @@
foreach ($messages as $message) {
$time = userdate($message->timecreated, get_string('strftimedatetimeshort'));
if ($message->format == FORMAT_HTML){
$printmessage = format_text($message->fullmessagehtml, $message->format, $options, 0);
if ($message->fullmessageformat == FORMAT_HTML){
$printmessage = format_text($message->fullmessagehtml, $message->fullmessageformat, $options, 0);
} else{
$printmessage = format_text($message->fullmessage, $message->format, $options, 0);
$printmessage = format_text($message->fullmessage, $message->fullmessageformat, $options, 0);
}
$printmessage = '<div class="message other"><span class="author">'.$mefullname.'</span> '.
'<span class="time">['.$time.']</span>: '.
@@ -264,10 +269,10 @@
foreach ($messages as $message) {
$time = userdate($message->timecreated, get_string('strftimedatetimeshort'));
if ($message->format == FORMAT_HTML){
$printmessage = format_text($message->fullmessagehtml, $message->format, $options, 0);
if ($message->fullmessageformat == FORMAT_HTML){
$printmessage = format_text($message->fullmessagehtml, $message->fullmessageformat, $options, 0);
} else{
$printmessage = format_text($message->fullmessage, $message->format, $options, 0);
$printmessage = format_text($message->fullmessage, $message->fullmessageformat, $options, 0);
}
$printmessage = '<div class="message other"><span class="author">'.$userfullname.'</span> '.
'<span class="time">['.$time.']</span>: '.
@@ -337,5 +342,5 @@
echo '</div></div>';
print_footer('none');
echo $OUTPUT->footer();
?>
+1 -3
View File
@@ -269,8 +269,6 @@
echo "</form>";
/// Finish with a footer
print_footer($course);
$OUTPUT->footer();
?>
+14 -12
View File
@@ -14,6 +14,8 @@
print_error('disabled', 'message');
}
$PAGE->set_title(get_string('messagehistory', 'message'));
/// Script parameters
$userid1 = required_param('user1', PARAM_INT);
if (! $user1 = $DB->get_record("user", array("id"=>$userid1))) { // Check it's correct
@@ -21,9 +23,9 @@
}
if ($user1->deleted) {
print_header();
print_heading(get_string('userdeleted').': '.$userid1);
print_footer();
echo $OUTPUT->header();
echo $OUTPUT->heading(get_string('userdeleted').': '.$userid1, 1);
echo $OUTPUT->footer();
die;
}
@@ -33,9 +35,9 @@
print_error('invaliduserid');
}
if ($user2->deleted) {
print_header();
print_heading(get_string('userdeleted').': '.$userid2);
print_footer();
echo $OUTPUT->header();
echo $OUTPUT->heading(get_string('userdeleted').': '.$userid2, 1);
echo $OUTPUT->footer();
die;
}
} else {
@@ -48,11 +50,11 @@
/// Our two users are defined - let's set up the page
print_header(get_string('messagehistory', 'message'), '', '', '', '<base target="_blank" />');
echo $OUTPUT->header();
/// Print out a heading including the users we are looking at
print_simple_box_start('center');
echo $OUTPUT->box_start('center');
echo '<table align="center" cellpadding="10"><tr>';
echo '<td align="center">';
echo print_user_picture($user1, SITEID, $user1->picture, 100, true, true, 'userwindow').'<br />';
@@ -67,7 +69,7 @@
echo fullname($user2);
echo '</td>';
echo '</tr></table>';
print_simple_box_end();
echo $OUTPUT->box_end();
/// Get all the messages and print them
@@ -85,7 +87,7 @@
$current->month = $date['month'];
$current->year = $date['year'];
echo '<a name="'.$date['year'].$date['mon'].$date['mday'].'"></a>';
print_heading(userdate($message->timecreated, $blockdate), 'center', 4);
echo $OUTPUT->heading(userdate($message->timecreated, $blockdate), 4, 'center');
}
if ($message->useridfrom == $user1->id) {
echo message_format_message($message, $user1, $messagedate, $search, 'other');
@@ -94,9 +96,9 @@
}
}
} else {
print_heading(get_string('nomessagesfound', 'message'));
echo $OUTPUT->heading(get_string('nomessagesfound', 'message'), 1);
}
print_footer('none');
echo $OUTPUT->footer();
?>
+7 -6
View File
@@ -24,7 +24,8 @@
/// Popup a window if required and quit (usually from external links).
if ($popup) {
print_header();
$PAGE->set_generaltype('popup');
$OUTPUT->header();
echo $PAGE->requires->js_function_call('openpopup', Array('/message/index.php', 'message', 'menubar=0,location=0,scrollbars,status,resizable,width=400,height=500', 0))->asap();
redirect("$CFG->wwwroot/", '', 0);
exit;
@@ -51,12 +52,12 @@
/// Header on this page
if ($tab == 'contacts') {
print_header(get_string('messages', 'message').' - '.format_string($SITE->fullname), '', '', '',
'<meta http-equiv="refresh" content="'. $CFG->message_contacts_refresh .'; url=index.php" />');
} else {
print_header(get_string('messages', 'message').' - '.format_string($SITE->fullname));
$PAGE->set_periodic_refresh_delay($CFG->message_contacts_refresh);
}
$PAGE->set_generaltype('popup');
$PAGE->set_title(get_string('messages', 'message').' - '.format_string($SITE->fullname));
echo $OUTPUT->header();
echo '<table cellspacing="2" cellpadding="2" border="0" width="95%" class="boxaligncenter">';
echo '<tr>';
@@ -88,6 +89,6 @@
}
echo '</td> </tr> </table>';
print_footer('none');
echo $OUTPUT->footer();
?>
+12 -6
View File
@@ -149,11 +149,16 @@ function message_print_contacts() {
$autorefresh = '<p align="center" class="note">'.get_string('pagerefreshes', 'message', $CFG->message_contacts_refresh).'</p>';
$autorefresh = addslashes_js($autorefresh); // js escaping
echo $PAGE->requires->js_function_call('document.write', Array($autorefresh))->asap();
// gracefully degrade JS autorefresh
echo '<noscript><div class="button aligncenter">';
$PAGE->requires->js('message/message.js');
$PAGE->requires->js_function_call('refresh_page', Array(60*1000, $PAGE->url->out()));
echo '<div class="messagejsautorefresh note center">';
echo get_string('pagerefreshes', 'message', $CFG->message_contacts_refresh);
echo '</div>';
echo '<div class="messagejsmanualrefresh aligncenter">';
echo print_single_button('index.php', false, get_string('refresh'));
echo '</div></noscript>';
echo '</div>';
}
@@ -957,7 +962,8 @@ function message_post_message($userfrom, $userto, $message, $format, $messagetyp
$eventdata->fullmessage = $message;
$eventdata->fullmessageformat = FORMAT_PLAIN;
$eventdata->fullmessagehtml = '';
$eventdata->smallmessage = '';
$eventdata->smallmessage = '';
$eventdata->timecreated = time();
return events_trigger('message_send', $eventdata);
}
@@ -1050,7 +1056,7 @@ function message_get_popup_messages($destuserid, $fromuserid=NULL){
$processor = $DB->get_record('message_processors', array('name' => 'popup'));
$messagesproc = $DB->get_records('message_working', array('processorid'=>$processor->id));
$messagesproc = $DB->get_records('message_working', array('processorid'=>$processor->id), 'id ASC');
//for every message to process check if it's for current user and process
$messages = array();
+27
View File
@@ -1,3 +1,30 @@
function set_focus(eid) {
document.getElementById(eid).focus();
}
function refresh_parent_messages_frame() {
if (chatmessages.msgcount>0) {
for (var i=0; i < chatmessages.msgcount; i++) {
add_message(chatmessages.msg[i])
}
}
parent.messages.scroll(1,5000000);
parent.send.focus();
}
function add_message(messagestr) {
var messageblock = parent.messages.document.getElementById('messages');
var message = document.createElement('div');
message.innerHTML = messagestr;
messageblock.appendChild(message);
}
var urltorefreshto = '';
function refresh_page(delay, url) {
urltorefreshto = url;
setTimeout(callback_refresh_page, delay);
}
function callback_refresh_page() {
document.location.replace(urltorefreshto);
}
+9 -15
View File
@@ -1,19 +1,13 @@
<?php // $Id$
<?php
require('../config.php');
/// Select direction
if ( get_string('thisdirection') == 'rtl' ) {
$direction = ' dir="rtl"';
} else {
$direction = ' dir="ltr"';
}
/// Output the header
@header('Content-Type: text/html; charset=utf-8');
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" <?php echo $direction ?>>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
</head>
<body class="message course-1" id="message-messages">
$PAGE->set_generaltype('popup');
$PAGE->set_title(get_string('messages', 'message').' - '.format_string($SITE->fullname));
echo $OUTPUT->header();
echo "<div id='messages'></div>";
echo $OUTPUT->footer();
?>
+19 -82
View File
@@ -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\">&nbsp;<\/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();
?>
+13 -15
View File
@@ -15,11 +15,11 @@ if (empty($CFG->messaging)) {
if (has_capability('moodle/site:sendmessage', get_context_instance(CONTEXT_SYSTEM))) {
$PAGE->set_generaltype('popup');
$PAGE->set_title('send');
$PAGE->requires->js('message/message.js');
/// (Don't use print_header, for more speed)
/// ehm - we have to use print_header() or else this breaks after any minor change in print_header()!
print_header();
echo $OUTPUT->header();
/// Script parameters
$userid = required_param('id', PARAM_INT);
@@ -34,8 +34,8 @@ if (has_capability('moodle/site:sendmessage', get_context_instance(CONTEXT_SYSTE
/// Check that the user is not blocking us!!
if ($contact = $DB->get_record('message_contacts', array('userid'=>$user->id, 'contactid'=>$USER->id))) {
if ($contact->blocked and !has_capability('moodle/site:readallmessages', get_context_instance(CONTEXT_SYSTEM))) {
print_heading(get_string('userisblockingyou', 'message'));
print_footer('empty');
echo $OUTPUT->heading(get_string('userisblockingyou', 'message'), 1);
echo $OUTPUT->footer();
exit;
}
}
@@ -43,18 +43,18 @@ if (has_capability('moodle/site:sendmessage', get_context_instance(CONTEXT_SYSTE
if (!empty($userpreferences['message_blocknoncontacts'])) { // User is blocking non-contacts
if (empty($contact)) { // We are not a contact!
print_heading(get_string('userisblockingyounoncontact', 'message'));
print_footer('empty');
echo $OUTPUT->heading(get_string('userisblockingyounoncontact', 'message'), 1);
echo $OUTPUT->footer();
exit;
}
}
if ($message!='' and confirm_sesskey()) { /// Current user has just sent a message
/// Save it to the database...
/// Save it to the database...
$messageid = message_post_message($USER, $user, $message, $format, 'direct');
/// Format the message as HTML
/// Format the message as HTML
$options = NULL;
$options->para = false;
$options->newlines = true;
@@ -64,10 +64,8 @@ if (has_capability('moodle/site:sendmessage', get_context_instance(CONTEXT_SYSTE
$message = '<div class="message me"><span class="author">'.fullname($USER).'</span> '.
'<span class="time">['.$time.']</span>: '.
'<span class="content">'.$message.'</span></div>';
$message = addslashes_js($message); // So Javascript can write it
/// Then write it to our own message screen immediately
$PAGE->requires->js_function_call('parent.messages.document.write', Array($message));
//$PAGE->requires->js_function_call('parent.messages.document.write', Array($message));
$PAGE->requires->js_function_call('add_message', Array($message));
$PAGE->requires->js_function_call('parent.messages.scroll', Array(1,5000000));
add_to_log(SITEID, 'message', 'write', 'history.php?user1='.$user->id.'&amp;user2='.$USER->id.'#m'.$messageid, $user->id);
@@ -93,12 +91,12 @@ if (has_capability('moodle/site:sendmessage', get_context_instance(CONTEXT_SYSTE
echo '</div>';
echo '</form>';
if (!empty($CFG->messagewasjustemailed)) {
notify(get_string('mailsent', 'message'), 'notifysuccess');
$OUTPUT->notifcation(get_string('mailsent', 'message'), 'notifysuccess');
}
echo '<div class="noframesjslink"><a target="_parent" href="discussion.php?id='.$userid.'&amp;noframesjs=1">'.get_string('noframesjs', 'message').'</a></div>';
$PAGE->requires->js_function_call('set_focus', Array('edit-message'));
print_footer('empty');
echo $OUTPUT->footer();
}
?>
+4 -14
View File
@@ -49,7 +49,9 @@
message_unblock_contact($unblockcontact);
}
print_header('','','','','',false,'','',false,'');
//$PAGE->set_title('Message History');
$PAGE->set_generaltype('popup');
echo $OUTPUT->header();
echo '<table width="100%" cellpadding="0" cellspacing="0"><tr>';
echo '<td width="100">';
echo print_user_picture($user, SITEID, $user->picture, true, true, true, 'userwindow').'</td>';
@@ -57,18 +59,6 @@
echo '<div class="name">'.fullname($user).'</div>';
//echo '<br /><font size="1">'; /// Print login status of this user
//if ($user->lastaccess) {
// if (time() - $user->lastaccess > $CFG->message_offline_time) {
// echo get_string('offline', 'message').': '.format_time(time() - $user->lastaccess);
// } else {
// echo get_string('lastaccess').': '.get_string('ago', 'message', format_time(time() - $user->lastaccess));
// }
//} else {
// echo get_string("lastaccess").":". get_string("never");
//}
//echo '</font>';
echo '<div class="commands">';
if ($contact = $DB->get_record('message_contacts', array('userid'=>$USER->id, 'contactid'=>$user->id))) {
if ($contact->blocked) {
@@ -87,6 +77,6 @@
echo '</td></tr></table>';
print_footer('empty');
echo $OUTPUT->footer();
?>
+14
View File
@@ -2873,6 +2873,20 @@ body#message-edit th {
padding-left: 20px;
}
body.message .messagejsautorefresh {
display:none;
}
body.message .messagejsmanualrefresh {
display:block;
}
body.jsenabled .messagejsautorefresh {
display:block;
}
body.jsenabled .messagejsmanualrefresh {
display:none;
}
/***
*** Notes
***/