--- loncom/interface/lonmsg.pm 2004/11/11 20:41:53 1.114
+++ loncom/interface/lonmsg.pm 2005/02/17 04:39:58 1.137
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Routines for messaging
#
-# $Id: lonmsg.pm,v 1.114 2004/11/11 20:41:53 www Exp $
+# $Id: lonmsg.pm,v 1.137 2005/02/17 04:39:58 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -90,7 +90,7 @@ also has a student role in the course, A
Users can ask LON-CAPA to forward messages to conventional e-mail
addresses on their B screen, but generally, LON-CAPA messages
-are much more useful then traditional email can be made to be, even
+are much more useful than traditional email can be made to be, even
with HTML support.
Right now, this document will cover just how to send a message, since
@@ -239,9 +239,15 @@ sub sendemail {
# ==================================================== Send notification emails
sub sendnotification {
- my ($to,$touname,$toudom,$subj,$crit)=@_;
+ my ($to,$touname,$toudom,$subj,$crit,$text)=@_;
my $sender=$ENV{'environment.firstname'}.' '.$ENV{'environment.lastname'};
+ unless ($sender=~/\w/) {
+ $sender=$ENV{'user.name'}.'@'.$ENV{'user.domain'};
+ }
my $critical=($crit?' critical':'');
+ $text=~s/\<\;/\/gs;
+ $text=~s/\<\/*[^\>]+\>//gs;
my $url='http://'.
$Apache::lonnet::hostname{&Apache::lonnet::homeserver($touname,$toudom)}.
'/adm/email?username='.$touname.'&domain='.$toudom;
@@ -250,11 +256,15 @@ You received a$critical message from $se
$subj
+=== Excerpt ============================================================
+$text
+========================================================================
+
Use
$url
-to access this message.
+to access the full message.
ENDMSG
&sendemail($to,'New'.$critical.' message from '.$sender,$body);
}
@@ -346,11 +356,12 @@ sub all_url_author_res_msg {
# ================================================== Critical message to a user
sub user_crit_msg_raw {
- my ($user,$domain,$subject,$message,$sendback)=@_;
+ my ($user,$domain,$subject,$message,$sendback,$toperm)=@_;
# Check if allowed missing
my $status='';
my $msgid='undefined';
unless (($message)&&($user)&&($domain)) { $status='empty'; };
+ my $text=$message;
my $homeserver=&Apache::lonnet::homeserver($user,$domain);
if ($homeserver ne 'no_host') {
($msgid,$message)=&packagemsg($subject,$message);
@@ -370,10 +381,16 @@ sub user_crit_msg_raw {
$status='no_host';
}
# Notifications
- my %userenv = &Apache::lonnet::get('environment',['critnotification'],
+ my %userenv = &Apache::lonnet::get('environment',['critnotification',
+ 'permanentemail'],
$domain,$user);
if ($userenv{'critnotification'}) {
- &sendnotification($userenv{'critnotification'},$user,$domain,$subject,1);
+ &sendnotification($userenv{'critnotification'},$user,$domain,$subject,1,
+ $text);
+ }
+ if ($toperm && $userenv{'permanentemail'}) {
+ &sendnotification($userenv{'permanentemail'},$user,$domain,$subject,1,
+ $text);
}
# Log this
&Apache::lonnet::logthis(
@@ -397,7 +414,7 @@ sub user_crit_msg_raw {
=cut
sub user_crit_msg {
- my ($user,$domain,$subject,$message,$sendback)=@_;
+ my ($user,$domain,$subject,$message,$sendback,$toperm)=@_;
my $status='';
my %userenv = &Apache::lonnet::get('environment',['msgforward'],
$domain,$user);
@@ -407,10 +424,10 @@ sub user_crit_msg {
my ($forwuser,$forwdomain)=split(/\:/,$_);
$status.=
&user_crit_msg_raw($forwuser,$forwdomain,$subject,$message,
- $sendback).' ';
+ $sendback,$toperm).' ';
}
} else {
- $status=&user_crit_msg_raw($user,$domain,$subject,$message,$sendback);
+ $status=&user_crit_msg_raw($user,$domain,$subject,$message,$sendback,$toperm);
}
return $status;
}
@@ -444,10 +461,12 @@ sub user_crit_received {
# ======================================================== Normal communication
sub user_normal_msg_raw {
- my ($user,$domain,$subject,$message,$citation,$baseurl,$attachmenturl)=@_;
+ my ($user,$domain,$subject,$message,$citation,$baseurl,$attachmenturl,
+ $toperm)=@_;
# Check if allowed missing
my $status='';
my $msgid='undefined';
+ my $text=$message;
unless (($message)&&($user)&&($domain)) { $status='empty'; };
my $homeserver=&Apache::lonnet::homeserver($user,$domain);
if ($homeserver ne 'no_host') {
@@ -471,10 +490,16 @@ sub user_normal_msg_raw {
$status='no_host';
}
# Notifications
- my %userenv = &Apache::lonnet::get('environment',['notification'],
+ my %userenv = &Apache::lonnet::get('environment',['notification',
+ 'permanentemail'],
$domain,$user);
if ($userenv{'notification'}) {
- &sendnotification($userenv{'notification'},$user,$domain,$subject,0);
+ &sendnotification($userenv{'notification'},$user,$domain,$subject,0,
+ $text);
+ }
+ if ($toperm && $userenv{'permanentemail'}) {
+ &sendnotification($userenv{'permanentemail'},$user,$domain,$subject,0,
+ $text);
}
&Apache::lonnet::log($ENV{'user.domain'},$ENV{'user.name'},
$ENV{'user.home'},
@@ -493,7 +518,8 @@ sub user_normal_msg_raw {
=cut
sub user_normal_msg {
- my ($user,$domain,$subject,$message,$citation,$baseurl,$attachmenturl)=@_;
+ my ($user,$domain,$subject,$message,$citation,$baseurl,$attachmenturl,
+ $toperm)=@_;
my $status='';
my %userenv = &Apache::lonnet::get('environment',['msgforward'],
$domain,$user);
@@ -503,11 +529,11 @@ sub user_normal_msg {
my ($forwuser,$forwdomain)=split(/\:/,$_);
$status.=
&user_normal_msg_raw($forwuser,$forwdomain,$subject,$message,
- $citation,$baseurl,$attachmenturl).' ';
+ $citation,$baseurl,$attachmenturl,$toperm).' ';
}
} else {
$status=&user_normal_msg_raw($user,$domain,$subject,$message,
- $citation,$baseurl,$attachmenturl);
+ $citation,$baseurl,$attachmenturl,$toperm);
}
return $status;
}
@@ -527,17 +553,27 @@ sub folderlist {
'critical' => &mt('Critical'),
'sent' => &mt('Sent Messages'),
map { $_ => $_ } @allfolders)).
- ' '.&mt('Show').' '.
- &Apache::loncommon::select_form($interdis,'interdis',
-(' 10' => '10', ' 20' => '20', ' 50' => '50', '100' => '100', '200' => '200')).
+ ' '.&mt('Show').
+ ''.
' '.
- ($folder!~/^(new|critical)/?
+ ''.
+ ($folder=~/^(new|critical)/?'':'');
+}
+
+sub scrollbuttons {
+ my ($start,$maxdis,$first,$finish,$total)=@_;
+ unless ($total>0) { return ''; }
+ $start++; $maxdis++;$first++;$finish++;
+ return
''.
''.
- ''.
+ ' of '.$maxdis.
''.
- '':'').
- '';
+ ' '.
+ &mt('Messages [_1] through [_2] of [_3]',$first,$finish,$total).'';
}
# =============================================================== Folder suffix
@@ -580,7 +616,6 @@ sub makefolder {
sub movemsg {
my ($msgid,$srcfolder,$trgfolder)=@_;
- my $unmsgid=&Apache::lonnet::unescape($msgid);
my $srcsuffix=&foldersuffix($srcfolder);
my $trgsuffix=&foldersuffix($trgfolder);
@@ -589,16 +624,13 @@ sub movemsg {
&Apache::lonnet::put('nohist_email'.$trgsuffix,{$msgid => $message{$msgid}});
# Copy status
- my %status=&Apache::lonnet::get('email_status'.$srcsuffix,[$unmsgid]);
- &Apache::lonnet::put('email_status'.$trgsuffix,{$unmsgid => $status{$unmsgid}});
-# See if was deleted -> becomes "read" in trash
- my $currentstatus=(&unpackmsgid($status{$unmsgid}),$srcfolder);
- if ($currentstatus eq 'deleted') {
- &statuschange($msgid,'read',$trgfolder);
+ unless ($trgfolder eq 'trash') {
+ my %status=&Apache::lonnet::get('email_status'.$srcsuffix,[$msgid]);
+ &Apache::lonnet::put('email_status'.$trgsuffix,{$msgid => $status{$msgid}});
}
# Delete orginals
&Apache::lonnet::del('nohist_email'.$srcsuffix,[$msgid]);
- &Apache::lonnet::del('email_status'.$srcsuffix,[$unmsgid]);
+ &Apache::lonnet::del('email_status'.$srcsuffix,[$msgid]);
}
# ======================================================= Display a course list
@@ -643,7 +675,7 @@ sub discourse {
-
+