version 1.48, 2003/02/17 17:39:53
|
version 1.52, 2003/03/31 16:34:08
|
Line 56 use HTML::Entities();
|
Line 56 use HTML::Entities();
|
# ===================================================================== Package |
# ===================================================================== Package |
|
|
sub packagemsg { |
sub packagemsg { |
my ($subject,$message,$citation)=@_; |
my ($subject,$message,$citation,$baseurl,$attachmenturl)=@_; |
$message =&HTML::Entities::encode($message); |
$message =&HTML::Entities::encode($message); |
$citation=&HTML::Entities::encode($citation); |
$citation=&HTML::Entities::encode($citation); |
$subject =&HTML::Entities::encode($subject); |
$subject =&HTML::Entities::encode($subject); |
|
#remove machine specification |
|
$baseurl =~ s|^http://[^/]+/|/|; |
|
$baseurl =&HTML::Entities::encode($baseurl); |
|
#remove machine specification |
|
$attachmenturl =~ s|^http://[^/]+/|/|; |
|
$attachmenturl =&HTML::Entities::encode($attachmenturl); |
|
|
my $now=time; |
my $now=time; |
$msgcount++; |
$msgcount++; |
my $partsubj=$subject; |
my $partsubj=$subject; |
Line 67 sub packagemsg {
|
Line 74 sub packagemsg {
|
my $msgid=&Apache::lonnet::escape( |
my $msgid=&Apache::lonnet::escape( |
$now.':'.$partsubj.':'.$ENV{'user.name'}.':'. |
$now.':'.$partsubj.':'.$ENV{'user.name'}.':'. |
$ENV{'user.domain'}.':'.$msgcount.':'.$$); |
$ENV{'user.domain'}.':'.$msgcount.':'.$$); |
return $msgid, |
my $result='<sendername>'.$ENV{'user.name'}.'</sendername>'. |
'<sendername>'.$ENV{'user.name'}.'</sendername>'. |
|
'<senderdomain>'.$ENV{'user.domain'}.'</senderdomain>'. |
'<senderdomain>'.$ENV{'user.domain'}.'</senderdomain>'. |
'<subject>'.$subject.'</subject>'. |
'<subject>'.$subject.'</subject>'. |
'<time>'.localtime($now).'</time>'. |
'<time>'.localtime($now).'</time>'. |
Line 84 sub packagemsg {
|
Line 90 sub packagemsg {
|
'<role>'.$ENV{'request.role'}.'</role>'. |
'<role>'.$ENV{'request.role'}.'</role>'. |
'<resource>'.$ENV{'request.filename'}.'</resource>'. |
'<resource>'.$ENV{'request.filename'}.'</resource>'. |
'<msgid>'.$msgid.'</msgid>'. |
'<msgid>'.$msgid.'</msgid>'. |
'<message>'.$message.'</message>'. |
'<message>'.$message.'</message>'; |
'<citation>'.$citation.'</citation>'; |
if (defined($citation)) { |
|
$result.='<citation>'.$citation.'</citation>'; |
|
} |
|
if (defined($baseurl)) { |
|
$result.= '<baseurl>'.$baseurl.'</baseurl>'; |
|
} |
|
if (defined($attachmenturl)) { |
|
$result.= '<attachmenturl>'.$attachmenturl.'</attachmenturl>'; |
|
} |
|
return $msgid,$result; |
} |
} |
|
|
# ================================================== Unpack message into a hash |
# ================================================== Unpack message into a hash |
|
|
sub unpackagemsg { |
sub unpackagemsg { |
my $message=shift; |
my ($message,$notoken)=@_; |
my %content=(); |
my %content=(); |
my $parser=HTML::TokeParser->new(\$message); |
my $parser=HTML::TokeParser->new(\$message); |
my $token; |
my $token; |
Line 102 sub unpackagemsg {
|
Line 117 sub unpackagemsg {
|
$content{$entry}=$value; |
$content{$entry}=$value; |
} |
} |
} |
} |
|
if ($content{'attachmenturl'}) { |
|
my ($fname,$ft)=($content{'attachmenturl'}=~/\/(\w+)\.(\w+)$/); |
|
if ($notoken) { |
|
$content{'message'}.='<p>Attachment: <tt>'.$fname.'.'.$ft.'</tt>'; |
|
} else { |
|
$content{'message'}.='<p>Attachment: <a href="'. |
|
&Apache::lonnet::tokenwrapper($content{'attachmenturl'}). |
|
'"><tt>'.$fname.'.'.$ft.'</tt></a>'; |
|
} |
|
} |
return %content; |
return %content; |
} |
} |
|
|
Line 210 sub user_crit_msg {
|
Line 235 sub user_crit_msg {
|
sub user_crit_received { |
sub user_crit_received { |
my $msgid=shift; |
my $msgid=shift; |
my %message=&Apache::lonnet::get('critical',[$msgid]); |
my %message=&Apache::lonnet::get('critical',[$msgid]); |
my %contents=&unpackagemsg($message{$msgid}); |
my %contents=&unpackagemsg($message{$msgid},1); |
my $status='rec: '.($contents{'sendback'}? |
my $status='rec: '.($contents{'sendback'}? |
&user_normal_msg($contents{'sendername'},$contents{'senderdomain'}, |
&user_normal_msg($contents{'sendername'},$contents{'senderdomain'}, |
'Receipt: '.$ENV{'user.name'}.' at '.$ENV{'user.domain'}, |
'Receipt: '.$ENV{'user.name'}.' at '.$ENV{'user.domain'}, |
Line 234 sub user_crit_received {
|
Line 259 sub user_crit_received {
|
# ======================================================== Normal communication |
# ======================================================== Normal communication |
|
|
sub user_normal_msg_raw { |
sub user_normal_msg_raw { |
my ($user,$domain,$subject,$message,$citation)=@_; |
my ($user,$domain,$subject,$message,$citation,$baseurl,$attachmenturl)=@_; |
# Check if allowed missing |
# Check if allowed missing |
my $status=''; |
my $status=''; |
my $msgid='undefined'; |
my $msgid='undefined'; |
unless (($message)&&($user)&&($domain)) { $status='empty'; }; |
unless (($message)&&($user)&&($domain)) { $status='empty'; }; |
my $homeserver=&Apache::lonnet::homeserver($user,$domain); |
my $homeserver=&Apache::lonnet::homeserver($user,$domain); |
if ($homeserver ne 'no_host') { |
if ($homeserver ne 'no_host') { |
($msgid,$message)=&packagemsg($subject,$message,$citation); |
($msgid,$message)=&packagemsg($subject,$message,$citation,$baseurl, |
|
$attachmenturl); |
$status=&Apache::lonnet::critical( |
$status=&Apache::lonnet::critical( |
'put:'.$domain.':'.$user.':nohist_email:'. |
'put:'.$domain.':'.$user.':nohist_email:'. |
&Apache::lonnet::escape($msgid).'='. |
&Apache::lonnet::escape($msgid).'='. |
Line 260 sub user_normal_msg_raw {
|
Line 286 sub user_normal_msg_raw {
|
# New routine that respects "forward" and calls old routine |
# New routine that respects "forward" and calls old routine |
|
|
sub user_normal_msg { |
sub user_normal_msg { |
my ($user,$domain,$subject,$message,$citation)=@_; |
my ($user,$domain,$subject,$message,$citation,$baseurl,$attachmenturl)=@_; |
my $status=''; |
my $status=''; |
my %userenv = &Apache::lonnet::get('environment',['msgforward'], |
my %userenv = &Apache::lonnet::get('environment',['msgforward'], |
$domain,$user); |
$domain,$user); |
Line 270 sub user_normal_msg {
|
Line 296 sub user_normal_msg {
|
my ($forwuser,$forwdomain)=split(/\:/,$_); |
my ($forwuser,$forwdomain)=split(/\:/,$_); |
$status.= |
$status.= |
&user_normal_msg_raw($forwuser,$forwdomain,$subject,$message, |
&user_normal_msg_raw($forwuser,$forwdomain,$subject,$message, |
$citation).' '; |
$citation,$baseurl,$attachmenturl).' '; |
} |
} |
} else { |
} else { |
$status= |
$status=&user_normal_msg_raw($user,$domain,$subject,$message, |
&user_normal_msg_raw($user,$domain,$subject,$message,$citation); |
$citation,$baseurl,$attachmenturl); |
} |
} |
return $status; |
return $status; |
} |
} |
Line 405 $content{'sendername'}.'@'.
|
Line 431 $content{'sendername'}.'@'.
|
sub comprep { |
sub comprep { |
my ($r,$msgid)=@_; |
my ($r,$msgid)=@_; |
my %message=&Apache::lonnet::get('nohist_email',[$msgid]); |
my %message=&Apache::lonnet::get('nohist_email',[$msgid]); |
my %content=&unpackagemsg($message{$msgid}); |
my %content=&unpackagemsg($message{$msgid},1); |
my $quotemsg='> '.$content{'message'}; |
my $quotemsg='> '.$content{'message'}; |
$quotemsg=~s/\r/\n/g; |
$quotemsg=~s/\r/\n/g; |
$quotemsg=~s/\f/\n/g; |
$quotemsg=~s/\f/\n/g; |
Line 711 sub handler {
|
Line 737 sub handler {
|
# ------------------------------------------------------ They checked for email |
# ------------------------------------------------------ They checked for email |
&Apache::lonnet::put('email_status',{'recnewemail'=>0}); |
&Apache::lonnet::put('email_status',{'recnewemail'=>0}); |
# --------------------------------------------------------------- Render Output |
# --------------------------------------------------------------- Render Output |
|
if (!$ENV{'form.display'}) { |
$r->print('<html><head><title>EMail and Messaging</title>'. |
$r->print('<html><head><title>EMail and Messaging</title>'. |
&Apache::loncommon::studentbrowser_javascript().'</head>'. |
&Apache::loncommon::studentbrowser_javascript().'</head>'. |
&Apache::loncommon::bodytag('EMail and Messages')); |
&Apache::loncommon::bodytag('EMail and Messages')); |
|
} |
if ($ENV{'form.display'}) { |
if ($ENV{'form.display'}) { |
my $msgid=$ENV{'form.display'}; |
my $msgid=$ENV{'form.display'}; |
&statuschange($msgid,'read'); |
&statuschange($msgid,'read'); |
my %message=&Apache::lonnet::get('nohist_email',[$msgid]); |
my %message=&Apache::lonnet::get('nohist_email',[$msgid]); |
my %content=&unpackagemsg($message{$msgid}); |
my %content=&unpackagemsg($message{$msgid}); |
|
$r->print('<html><head><title>EMail and Messaging</title>'); |
|
if (defined($content{'baseurl'})) { |
|
$r->print("<base href=\"http://$ENV{'SERVER_NAME'}/$content{'baseurl'}\" />"); |
|
} |
|
$r->print(&Apache::loncommon::studentbrowser_javascript(). |
|
'</head>'. |
|
&Apache::loncommon::bodytag('EMail and Messages')); |
$r->print('<b>Subject:</b> '.$content{'subject'}. |
$r->print('<b>Subject:</b> '.$content{'subject'}. |
'<br><b>From:</b> '. |
'<br><b>From:</b> '. |
&Apache::loncommon::aboutmewrapper( |
&Apache::loncommon::aboutmewrapper( |
Line 746 $content{'sendername'},$content{'senderd
|
Line 780 $content{'sendername'},$content{'senderd
|
} elsif ($ENV{'form.sendreply'}) { |
} elsif ($ENV{'form.sendreply'}) { |
my $msgid=$ENV{'form.sendreply'}; |
my $msgid=$ENV{'form.sendreply'}; |
my %message=&Apache::lonnet::get('nohist_email',[$msgid]); |
my %message=&Apache::lonnet::get('nohist_email',[$msgid]); |
my %content=&unpackagemsg($message{$msgid}); |
my %content=&unpackagemsg($message{$msgid},1); |
&statuschange($msgid,'replied'); |
&statuschange($msgid,'replied'); |
if ((($ENV{'form.critmsg'}) || ($ENV{'form.sendbck'})) && |
if ((($ENV{'form.critmsg'}) || ($ENV{'form.sendbck'})) && |
(&Apache::lonnet::allowed('srm',$ENV{'request.course.id'}))) { |
(&Apache::lonnet::allowed('srm',$ENV{'request.course.id'}))) { |
Line 812 $content{'sendername'},$content{'senderd
|
Line 846 $content{'sendername'},$content{'senderd
|
if ($ENV{'form.forwid'}) { |
if ($ENV{'form.forwid'}) { |
my $msgid=$ENV{'form.forwid'}; |
my $msgid=$ENV{'form.forwid'}; |
my %message=&Apache::lonnet::get('nohist_email',[$msgid]); |
my %message=&Apache::lonnet::get('nohist_email',[$msgid]); |
%content=&unpackagemsg($message{$msgid}); |
%content=&unpackagemsg($message{$msgid},1); |
&statuschange($msgid,'forwarded'); |
&statuschange($msgid,'forwarded'); |
$ENV{'form.message'}.="\n\n-- Forwarded message --\n\n". |
$ENV{'form.message'}.="\n\n-- Forwarded message --\n\n". |
$content{'message'}; |
$content{'message'}; |