--- loncom/interface/lonmsg.pm 2002/12/30 14:10:58 1.46
+++ loncom/interface/lonmsg.pm 2003/03/30 21:58:17 1.51
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Routines for messaging
#
-# $Id: lonmsg.pm,v 1.46 2002/12/30 14:10:58 www Exp $
+# $Id: lonmsg.pm,v 1.51 2003/03/30 21:58:17 www Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -47,21 +47,26 @@ package Apache::lonmsg;
use strict;
use Apache::lonnet();
use vars qw($msgcount);
-use HTML::TokeParser;
+use HTML::TokeParser();
use Apache::Constants qw(:common);
-use Apache::loncommon;
-use Apache::lontexconvert;
+use Apache::loncommon();
+use Apache::lontexconvert();
+use HTML::Entities();
# ===================================================================== Package
sub packagemsg {
- my ($subject,$message,$citation)=@_;
- $message=~s/\\<\;/g;
- $message=~s/\>/\>\;/g;
- $citation=~s/\\<\;/g;
- $citation=~s/\>/\>\;/g;
- $subject=~s/\\<\;/g;
- $subject=~s/\>/\>\;/g;
+ my ($subject,$message,$citation,$baseurl,$attachmenturl)=@_;
+ $message =&HTML::Entities::encode($message);
+ $citation=&HTML::Entities::encode($citation);
+ $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($baseurl);
+
my $now=time;
$msgcount++;
my $partsubj=$subject;
@@ -69,8 +74,7 @@ sub packagemsg {
my $msgid=&Apache::lonnet::escape(
$now.':'.$partsubj.':'.$ENV{'user.name'}.':'.
$ENV{'user.domain'}.':'.$msgcount.':'.$$);
- return $msgid,
- ''.$ENV{'user.name'}.''.
+ my $result=''.$ENV{'user.name'}.''.
''.$ENV{'user.domain'}.''.
''.$subject.''.
''.
@@ -86,8 +90,17 @@ sub packagemsg {
''.$ENV{'request.role'}.''.
''.$ENV{'request.filename'}.''.
''.$msgid.''.
- ''.$message.''.
- ''.$citation.'';
+ ''.$message.'';
+ if (defined($citation)) {
+ $result.=''.$citation.'';
+ }
+ if (defined($baseurl)) {
+ $result.= ''.$baseurl.'';
+ }
+ if (defined($attachmenturl)) {
+ $result.= ''.$baseurl.'';
+ }
+ return $msgid,$result;
}
# ================================================== Unpack message into a hash
@@ -236,14 +249,15 @@ sub user_crit_received {
# ======================================================== Normal communication
sub user_normal_msg_raw {
- my ($user,$domain,$subject,$message,$citation)=@_;
+ my ($user,$domain,$subject,$message,$citation,$baseurl,$attachmenturl)=@_;
# Check if allowed missing
my $status='';
my $msgid='undefined';
unless (($message)&&($user)&&($domain)) { $status='empty'; };
my $homeserver=&Apache::lonnet::homeserver($user,$domain);
if ($homeserver ne 'no_host') {
- ($msgid,$message)=&packagemsg($subject,$message,$citation);
+ ($msgid,$message)=&packagemsg($subject,$message,$citation,$baseurl,
+ $attachmenturl);
$status=&Apache::lonnet::critical(
'put:'.$domain.':'.$user.':nohist_email:'.
&Apache::lonnet::escape($msgid).'='.
@@ -262,7 +276,7 @@ sub user_normal_msg_raw {
# New routine that respects "forward" and calls old routine
sub user_normal_msg {
- my ($user,$domain,$subject,$message,$citation)=@_;
+ my ($user,$domain,$subject,$message,$citation,$baseurl)=@_;
my $status='';
my %userenv = &Apache::lonnet::get('environment',['msgforward'],
$domain,$user);
@@ -272,11 +286,11 @@ sub user_normal_msg {
my ($forwuser,$forwdomain)=split(/\:/,$_);
$status.=
&user_normal_msg_raw($forwuser,$forwdomain,$subject,$message,
- $citation).' ';
+ $citation,$baseurl).' ';
}
} else {
- $status=
- &user_normal_msg_raw($user,$domain,$subject,$message,$citation);
+ $status=&user_normal_msg_raw($user,$domain,$subject,$message,
+ $citation,$baseurl);
}
return $status;
}
@@ -713,15 +727,23 @@ sub handler {
# ------------------------------------------------------ They checked for email
&Apache::lonnet::put('email_status',{'recnewemail'=>0});
# --------------------------------------------------------------- Render Output
-
- $r->print('
EMail and Messaging'.
- &Apache::loncommon::studentbrowser_javascript().''.
- &Apache::loncommon::bodytag('EMail and Messages'));
+ if (!$ENV{'form.display'}) {
+ $r->print('EMail and Messaging'.
+ &Apache::loncommon::studentbrowser_javascript().''.
+ &Apache::loncommon::bodytag('EMail and Messages'));
+ }
if ($ENV{'form.display'}) {
my $msgid=$ENV{'form.display'};
&statuschange($msgid,'read');
my %message=&Apache::lonnet::get('nohist_email',[$msgid]);
my %content=&unpackagemsg($message{$msgid});
+ $r->print('EMail and Messaging');
+ if (defined($content{'baseurl'})) {
+ $r->print("");
+ }
+ $r->print(&Apache::loncommon::studentbrowser_javascript().
+ ''.
+ &Apache::loncommon::bodytag('EMail and Messages'));
$r->print('Subject: '.$content{'subject'}.
'
From: '.
&Apache::loncommon::aboutmewrapper(