version 1.45, 2002/12/27 16:33:36
|
version 1.49, 2003/02/18 15:47:40
|
Line 47 package Apache::lonmsg;
|
Line 47 package Apache::lonmsg;
|
use strict; |
use strict; |
use Apache::lonnet(); |
use Apache::lonnet(); |
use vars qw($msgcount); |
use vars qw($msgcount); |
use HTML::TokeParser; |
use HTML::TokeParser(); |
use Apache::Constants qw(:common); |
use Apache::Constants qw(:common); |
use Apache::loncommon; |
use Apache::loncommon(); |
use Apache::lontexconvert; |
use Apache::lontexconvert(); |
|
use HTML::Entities(); |
|
|
# ===================================================================== Package |
# ===================================================================== Package |
|
|
sub packagemsg { |
sub packagemsg { |
my ($subject,$message,$citation)=@_; |
my ($subject,$message,$citation,$baseurl)=@_; |
$message=~s/\</\<\;/g; |
&Apache::lonnet::logthis("base is $baseurl"); |
$message=~s/\>/\>\;/g; |
$message =&HTML::Entities::encode($message); |
$citation=~s/\</\<\;/g; |
$citation=&HTML::Entities::encode($citation); |
$citation=~s/\>/\>\;/g; |
$subject =&HTML::Entities::encode($subject); |
$subject=~s/\</\<\;/g; |
#remove machine specification |
$subject=~s/\>/\>\;/g; |
$baseurl =~ s|^http://[^/]+/|/|; |
|
$baseurl =&HTML::Entities::encode($baseurl); |
my $now=time; |
my $now=time; |
$msgcount++; |
$msgcount++; |
my $partsubj=$subject; |
my $partsubj=$subject; |
Line 69 sub packagemsg {
|
Line 71 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 86 sub packagemsg {
|
Line 87 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>'; |
|
} |
|
return $msgid,$result; |
} |
} |
|
|
# ================================================== Unpack message into a hash |
# ================================================== Unpack message into a hash |
Line 102 sub unpackagemsg {
|
Line 109 sub unpackagemsg {
|
my $entry=$token->[1]; |
my $entry=$token->[1]; |
my $value=$parser->get_text('/'.$entry); |
my $value=$parser->get_text('/'.$entry); |
$content{$entry}=$value; |
$content{$entry}=$value; |
|
&Apache::lonnet::logthis("setting $entry to $value"); |
|
|
} |
} |
} |
} |
return %content; |
return %content; |
Line 236 sub user_crit_received {
|
Line 245 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)=@_; |
# 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); |
&Apache::lonnet::logthis("baseraw is $baseurl"); |
|
($msgid,$message)=&packagemsg($subject,$message,$citation,$baseurl); |
$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 262 sub user_normal_msg_raw {
|
Line 272 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)=@_; |
my $status=''; |
my $status=''; |
my %userenv = &Apache::lonnet::get('environment',['msgforward'], |
my %userenv = &Apache::lonnet::get('environment',['msgforward'], |
$domain,$user); |
$domain,$user); |
Line 272 sub user_normal_msg {
|
Line 282 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).' '; |
} |
} |
} else { |
} else { |
$status= |
$status=&user_normal_msg_raw($user,$domain,$subject,$message, |
&user_normal_msg_raw($user,$domain,$subject,$message,$citation); |
$citation,$baseurl); |
} |
} |
return $status; |
return $status; |
} |
} |
Line 533 sub compout {
|
Line 543 sub compout {
|
'<table>'); |
'<table>'); |
unless (($broadcast eq 'group') || ($broadcast eq 'upload')) { |
unless (($broadcast eq 'group') || ($broadcast eq 'upload')) { |
my $domform = &Apache::loncommon::select_dom_form($defdom,'recdomain'); |
my $domform = &Apache::loncommon::select_dom_form($defdom,'recdomain'); |
|
my $selectlink=&Apache::loncommon::selectstudent_link |
|
('compemail','recuname','recdomain'); |
$r->print(<<"ENDREC"); |
$r->print(<<"ENDREC"); |
<table> |
<table> |
<tr><td>Username:</td><td><input type=text size=12 name=recuname value="$ENV{'form.recname'}"></td></tr> |
<tr><td>Username:</td><td><input type=text size=12 name=recuname value="$ENV{'form.recname'}"></td><td rowspan="2">$selectlink</td></tr> |
<tr><td>Domain:</td> |
<tr><td>Domain:</td> |
<td>$domform</td></tr> |
<td>$domform</td></tr> |
ENDREC |
ENDREC |
Line 623 $content{'sendername'}.'@'.
|
Line 634 $content{'sendername'}.'@'.
|
} |
} |
# Check to see if there were any messages. |
# Check to see if there were any messages. |
if ($result eq '') { |
if ($result eq '') { |
$r->print("<p><b>No face-to-face records or critical messages in this course.</b></p>"); |
$r->print("<p><b>No notes, face-to-face discussion records, or critical messages in this course.</b></p>"); |
} else { |
} else { |
$r->print($result); |
$r->print($result); |
} |
} |
Line 636 sub facetoface {
|
Line 647 sub facetoface {
|
unless (&Apache::lonnet::allowed('srm',$ENV{'request.course.id'})) { |
unless (&Apache::lonnet::allowed('srm',$ENV{'request.course.id'})) { |
return; |
return; |
} |
} |
|
# from query string |
|
if ($ENV{'form.recname'}) { $ENV{'form.recuname'}=$ENV{'form.recname'}; } |
|
if ($ENV{'form.recdom'}) { $ENV{'form.recdomain'}=$ENV{'form.recdom'}; } |
|
|
my $defdom=$ENV{'user.domain'}; |
my $defdom=$ENV{'user.domain'}; |
|
# already filled in |
if ($ENV{'form.recdomain'}) { $defdom=$ENV{'form.recdomain'}; } |
if ($ENV{'form.recdomain'}) { $defdom=$ENV{'form.recdomain'}; } |
|
# generate output |
my $domform = &Apache::loncommon::select_dom_form($defdom,'recdomain'); |
my $domform = &Apache::loncommon::select_dom_form($defdom,'recdomain'); |
|
my $stdbrws = &Apache::loncommon::selectstudent_link |
|
('stdselect','recuname','recdomain'); |
$r->print(<<"ENDTREC"); |
$r->print(<<"ENDTREC"); |
<h2>User Records of Face-To-Face Discussions and Critical Messages in Course</h2> |
<h3>User Notes, Records of Face-To-Face Discussions, and Critical Messages in Course</h3> |
<form method="post" action="/adm/email"> |
<form method="post" action="/adm/email" name="stdselect"> |
<input type="hidden" name="recordftf" value="retrieve" /> |
<input type="hidden" name="recordftf" value="retrieve" /> |
<table> |
<table> |
<tr><td>Username:</td><td><input type=text size=12 name=recuname value="$ENV{'form.recuname'}"></td> |
<tr><td>Username:</td><td><input type=text size=12 name=recuname value="$ENV{'form.recuname'}"></td> |
<td rowspan="2"> |
<td rowspan="2"> |
|
$stdbrws |
<input type="submit" value="Retrieve discussion and message records"></td> |
<input type="submit" value="Retrieve discussion and message records"></td> |
</tr> |
</tr> |
<tr><td>Domain:</td> |
<tr><td>Domain:</td> |
Line 663 ENDTREC
|
Line 683 ENDTREC
|
'Record ['.$ENV{'form.recuname'}.':'.$ENV{'form.recdomain'}.']', |
'Record ['.$ENV{'form.recuname'}.':'.$ENV{'form.recdomain'}.']', |
$ENV{'form.newrecord'}); |
$ENV{'form.newrecord'}); |
} |
} |
|
$r->print('<h3>'.&Apache::loncommon::plainname($ENV{'form.recuname'}, |
|
$ENV{'form.recdomain'}).'</h3>'); |
&disfacetoface($r,$ENV{'form.recuname'},$ENV{'form.recdomain'}); |
&disfacetoface($r,$ENV{'form.recuname'},$ENV{'form.recdomain'}); |
$r->print(<<ENDRHEAD); |
$r->print(<<ENDRHEAD); |
<form method="post" action="/adm/email"> |
<form method="post" action="/adm/email"> |
Line 701 sub handler {
|
Line 723 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></head>'. |
$r->print('<html><head><title>EMail and Messaging</title>'. |
&Apache::loncommon::bodytag('EMail and Messages')); |
&Apache::loncommon::studentbrowser_javascript().'</head>'. |
|
&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( |