version 1.169, 2006/01/05 20:10:54
|
version 1.174, 2006/01/30 07:32:20
|
Line 137 my $interdis;
|
Line 137 my $interdis;
|
|
|
sub packagemsg { |
sub packagemsg { |
my ($subject,$message,$citation,$baseurl,$attachmenturl, |
my ($subject,$message,$citation,$baseurl,$attachmenturl, |
$recuser,$recdomain,$msgid,$type)=@_; |
$recuser,$recdomain,$msgid,$type,$crsmsgid)=@_; |
$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,'<>&"'); |
Line 170 sub packagemsg {
|
Line 170 sub packagemsg {
|
$msgid = &buildmsgid($now,$subject,$env{'user.name'},$env{'user.domain'}, |
$msgid = &buildmsgid($now,$subject,$env{'user.name'},$env{'user.domain'}, |
$msgcount,$course_context,$$); |
$msgcount,$course_context,$$); |
} |
} |
my $result='<sendername>'.$env{'user.name'}.'</sendername>'. |
my $result = '<sendername>'.$env{'user.name'}.'</sendername>'. |
'<senderdomain>'.$env{'user.domain'}.'</senderdomain>'. |
'<senderdomain>'.$env{'user.domain'}.'</senderdomain>'. |
'<subject>'.$subject.'</subject>'. |
'<subject>'.$subject.'</subject>'. |
'<time>'.&Apache::lonlocal::locallocaltime($now).'</time>'. |
'<time>'.&Apache::lonlocal::locallocaltime($now).'</time>'; |
'<servername>'.$ENV{'SERVER_NAME'}.'</servername>'. |
if (defined($crsmsgid)) { |
|
$result.= '<courseid>'.$course_context.'</courseid>'. |
|
'<coursesec>'.$env{'request.course.sec'}.'</coursesec>'. |
|
'<msgid>'.$msgid.'</msgid>'. |
|
'<coursemsgid>'.$crsmsgid.'</coursemsgid>'. |
|
'<message>'.$message.'</message>'; |
|
return ($msgid,$result); |
|
} |
|
$result .= '<servername>'.$ENV{'SERVER_NAME'}.'</servername>'. |
'<host>'.$ENV{'HTTP_HOST'}.'</host>'. |
'<host>'.$ENV{'HTTP_HOST'}.'</host>'. |
'<client>'.$ENV{'REMOTE_ADDR'}.'</client>'. |
'<client>'.$ENV{'REMOTE_ADDR'}.'</client>'. |
'<browsertype>'.$env{'browser.type'}.'</browsertype>'. |
'<browsertype>'.$env{'browser.type'}.'</browsertype>'. |
Line 536 sub user_crit_received {
|
Line 544 sub user_crit_received {
|
|
|
sub user_normal_msg_raw { |
sub user_normal_msg_raw { |
my ($user,$domain,$subject,$message,$citation,$baseurl,$attachmenturl, |
my ($user,$domain,$subject,$message,$citation,$baseurl,$attachmenturl, |
$toperm,$currid,$newid,$sentmessage)=@_; |
$toperm,$currid,$newid,$sentmessage,$crsmsgid)=@_; |
# Check if allowed missing |
# Check if allowed missing |
my $status=''; |
my ($status,$packed_message); |
my $msgid='undefined'; |
my $msgid='undefined'; |
my $text=$message; |
my $text=$message; |
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,$baseurl, |
($msgid,$packed_message)= |
$attachmenturl,$user,$domain,$currid); |
&packagemsg($subject,$message,$citation,$baseurl, |
|
$attachmenturl,$user,$domain,$currid, |
|
undef,$crsmsgid); |
|
|
# Store in user folder |
# Store in user folder |
$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).'='. |
&Apache::lonnet::escape($message),$homeserver); |
&Apache::lonnet::escape($packed_message),$homeserver); |
# Save new message received time |
# Save new message received time |
&Apache::lonnet::put |
&Apache::lonnet::put |
('email_status',{'recnewemail'=>time},$domain,$user); |
('email_status',{'recnewemail'=>time},$domain,$user); |
Line 558 sub user_normal_msg_raw {
|
Line 569 sub user_normal_msg_raw {
|
unless (($env{'request.course.id'}) && |
unless (($env{'request.course.id'}) && |
(($env{'form.sendmode'} eq 'group') || |
(($env{'form.sendmode'} eq 'group') || |
(($env{'form.critmsg'}) || ($env{'form.sendbck'})) && |
(($env{'form.critmsg'}) || ($env{'form.sendbck'})) && |
(&Apache::lonnet::allowed('srm',$env{'request.course.id'})))) { |
(&Apache::lonnet::allowed('srm',$env{'request.course.id'}) |
$status .= &store_sent_mail($msgid,$message); |
|| &Apache::lonnet::allowed('srm',$env{'request.course.id'}. |
|
'/'.$env{'request.course.sec'})))) { |
|
(undef, my $packed_message_no_citation)= |
|
&packagemsg($subject,$message,undef ,$baseurl, |
|
$attachmenturl,$user,$domain,$currid, |
|
undef,$crsmsgid); |
|
|
|
$status .= &store_sent_mail($msgid,$packed_message_no_citation); |
} |
} |
} else { |
} else { |
$status='no_host'; |
$status='no_host'; |
Line 568 sub user_normal_msg_raw {
|
Line 586 sub user_normal_msg_raw {
|
$$newid = $msgid; |
$$newid = $msgid; |
} |
} |
if (defined($sentmessage)) { |
if (defined($sentmessage)) { |
$$sentmessage = $message; |
$$sentmessage = $packed_message; |
} |
} |
|
|
# Notifications |
# Notifications |
Line 607 sub user_normal_msg {
|
Line 625 sub user_normal_msg {
|
$domain,$user); |
$domain,$user); |
my $msgforward=$userenv{'msgforward'}; |
my $msgforward=$userenv{'msgforward'}; |
if ($msgforward) { |
if ($msgforward) { |
foreach (split(/\,/,$msgforward)) { |
foreach (split(/\,/,$msgforward)) { |
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,$baseurl,$attachmenturl,$toperm,undef,undef,$sentmessage).' '; |
$citation,$baseurl,$attachmenturl,$toperm, |
} |
undef,undef,$sentmessage).' '; |
|
} |
} else { |
} else { |
$status=&user_normal_msg_raw($user,$domain,$subject,$message, |
$status=&user_normal_msg_raw($user,$domain,$subject,$message, |
$citation,$baseurl,$attachmenturl,$toperm,undef,undef,$sentmessage); |
$citation,$baseurl,$attachmenturl,$toperm, |
|
undef,undef,$sentmessage); |
} |
} |
return $status; |
return $status; |
} |
} |
|
|
sub store_sent_mail { |
sub store_sent_mail { |
my ($msgid,$message) = @_; |
my ($msgid,$message) = @_; |
my $status =' '.&Apache::lonnet::critical( |
my $status =' '.&Apache::lonnet::critical( |
'put:'.$env{'user.domain'}.':'.$env{'user.name'}. |
'put:'.$env{'user.domain'}.':'.$env{'user.name'}. |
':nohist_email_sent:'. |
':nohist_email_sent:'. |
&Apache::lonnet::escape($msgid).'='. |
&Apache::lonnet::escape($msgid).'='. |
&Apache::lonnet::escape($message),$env{'user.home'}); |
&Apache::lonnet::escape($message),$env{'user.home'}); |
return $status; |
return $status; |
} |
} |
|
|
Line 1228 sub compout {
|
Line 1248 sub compout {
|
'ca' => 'Cancel', |
'ca' => 'Cancel', |
'ma' => 'Mail'); |
'ma' => 'Mail'); |
|
|
if (&Apache::lonnet::allowed('srm',$env{'request.course.id'})) { |
if (&Apache::lonnet::allowed('srm',$env{'request.course.id'}) |
|
|| &Apache::lonnet::allowed('srm',$env{'request.course.id'}. |
|
'/'.$env{'request.course.sec'})) { |
my $crithelp = Apache::loncommon::help_open_topic("Course_Critical_Message"); |
my $crithelp = Apache::loncommon::help_open_topic("Course_Critical_Message"); |
$dispcrit= |
$dispcrit= |
'<p><label><input type="checkbox" name="critmsg" /> '.&mt('Send as critical message').'</label> ' . $crithelp . |
'<p><label><input type="checkbox" name="critmsg" /> '.&mt('Send as critical message').'</label> ' . $crithelp . |
Line 1354 $dispcrit
|
Line 1376 $dispcrit
|
ENDUPLOAD |
ENDUPLOAD |
} |
} |
if ($broadcast eq 'group') { |
if ($broadcast eq 'group') { |
&discourse; |
&discourse($r); |
} |
} |
$r->print('</form>'. |
$r->print('</form>'. |
&Apache::lonfeedback::generate_preview_button('compemail','message'). |
&Apache::lonfeedback::generate_preview_button('compemail','message'). |
Line 1367 sub retrieve_instructor_comments {
|
Line 1389 sub retrieve_instructor_comments {
|
my ($user,$domain)=@_; |
my ($user,$domain)=@_; |
my $target=$env{'form.grade_target'}; |
my $target=$env{'form.grade_target'}; |
if (! $env{'request.course.id'}) { return; } |
if (! $env{'request.course.id'}) { return; } |
if (! &Apache::lonnet::allowed('srm',$env{'request.course.id'})) { |
if (! &Apache::lonnet::allowed('srm',$env{'request.course.id'}) |
|
&& ! &Apache::lonnet::allowed('srm',$env{'request.course.id'}. |
|
'/'.$env{'request.course.sec'})) { |
return; |
return; |
} |
} |
my %records=&Apache::lonnet::dump('nohist_email', |
my %records=&Apache::lonnet::dump('nohist_email', |
Line 1392 sub disfacetoface {
|
Line 1416 sub disfacetoface {
|
my ($r,$user,$domain)=@_; |
my ($r,$user,$domain)=@_; |
my $target=$env{'form.grade_target'}; |
my $target=$env{'form.grade_target'}; |
unless ($env{'request.course.id'}) { return; } |
unless ($env{'request.course.id'}) { return; } |
unless (&Apache::lonnet::allowed('srm',$env{'request.course.id'})) { |
if (!&Apache::lonnet::allowed('srm',$env{'request.course.id'}) |
|
&& ! &Apache::lonnet::allowed('srm',$env{'request.course.id'}. |
|
'/'.$env{'request.course.sec'})) { |
|
$r->print('Not allowed'); |
return; |
return; |
} |
} |
my %records=&Apache::lonnet::dump('nohist_email', |
my %records=&Apache::lonnet::dump('nohist_email', |
Line 1409 sub disfacetoface {
|
Line 1436 sub disfacetoface {
|
} elsif ($content{'subject'}=~/^Broadcast/) { |
} elsif ($content{'subject'}=~/^Broadcast/) { |
$result .='<h3>'.&mt('Broadcast Message').'</h3>'; |
$result .='<h3>'.&mt('Broadcast Message').'</h3>'; |
if ($content{'subject'}=~/^Broadcast\./) { |
if ($content{'subject'}=~/^Broadcast\./) { |
%content=&unpackagemsg($content{'message'}); |
if (defined($content{'coursemsgid'})) { |
$content{'message'}= |
my $crsmsgid = &Apache::lonnet::escape($content{'coursemsgid'}); |
|
my $broadcast_message = &general_message($crsmsgid); |
|
$content{'message'} = '<b>'.&mt('Subject').': '.$content{'message'}.'</b><br />'.$broadcast_message; |
|
} else { |
|
%content=&unpackagemsg($content{'message'}); |
|
$content{'message'} = |
'<b>'.&mt('Subject').': '.$content{'subject'}.'</b><br />'. |
'<b>'.&mt('Subject').': '.$content{'subject'}.'</b><br />'. |
$content{'message'}; |
$content{'message'}; |
|
} |
} |
} |
} else { |
} else { |
$result.='<h3>'.&mt('Critical Message').'</h3>'; |
$result.='<h3>'.&mt('Critical Message').'</h3>'; |
%content=&unpackagemsg($content{'message'}); |
if (defined($content{'coursemsgid'})) { |
$content{'message'}= |
my $crsmsgid=&Apache::lonnet::escape($content{'coursemsgid'}); |
|
my $critical_message = &general_message($crsmsgid); |
|
$content{'message'} = '<b>'.&mt('Subject').': '.$content{'message'}.'</b><br />'.$critical_message; |
|
} else { |
|
%content=&unpackagemsg($content{'message'}); |
|
$content{'message'}= |
'<b>'.&mt('Subject').': '.$content{'subject'}.'</b><br />'. |
'<b>'.&mt('Subject').': '.$content{'subject'}.'</b><br />'. |
$content{'message'}; |
$content{'message'}; |
|
} |
} |
} |
$result.=&mt('By').': <b>'. |
$result.=&mt('By').': <b>'. |
&Apache::loncommon::aboutmewrapper( |
&Apache::loncommon::aboutmewrapper( |
Line 1442 $content{'sendername'}.'@'.
|
Line 1481 $content{'sendername'}.'@'.
|
} |
} |
} |
} |
|
|
|
sub general_message { |
|
my ($crsmsgid) = @_; |
|
my %general_content; |
|
if ($crsmsgid) { |
|
my %course_content = &Apache::lonnet::get('nohist_email',[$crsmsgid], |
|
$env{'course.'.$env{'request.course.id'}.'.domain'}, |
|
$env{'course.'.$env{'request.course.id'}.'.num'}); |
|
%general_content = &unpackagemsg($course_content{$crsmsgid}); |
|
} |
|
return $general_content{'message'}; |
|
} |
|
|
# ---------------------------------------------------------------- Face to face |
# ---------------------------------------------------------------- Face to face |
|
|
sub facetoface { |
sub facetoface { |
my ($r,$stage)=@_; |
my ($r,$stage)=@_; |
unless (&Apache::lonnet::allowed('srm',$env{'request.course.id'})) { |
if (!&Apache::lonnet::allowed('srm',$env{'request.course.id'}) |
|
&& ! &Apache::lonnet::allowed('srm',$env{'request.course.id'}. |
|
'/'.$env{'request.course.sec'})) { |
|
$r->print('Not allowed'); |
return; |
return; |
} |
} |
&printheader($r, |
&printheader($r, |
Line 1521 ENDBFORM
|
Line 1575 ENDBFORM
|
sub examblock { |
sub examblock { |
my ($r,$action) = @_; |
my ($r,$action) = @_; |
unless ($env{'request.course.id'}) { return;} |
unless ($env{'request.course.id'}) { return;} |
unless (&Apache::lonnet::allowed('srm',$env{'request.course.id'})) { $r->print('Not allowed'); } |
if (!&Apache::lonnet::allowed('srm',$env{'request.course.id'}) |
|
&& ! &Apache::lonnet::allowed('srm',$env{'request.course.id'}. |
|
'/'.$env{'request.course.sec'})) { |
|
$r->print('Not allowed'); |
|
return; |
|
} |
my %lt=&Apache::lonlocal::texthash( |
my %lt=&Apache::lonlocal::texthash( |
'comb' => 'Communication Blocking', |
'comb' => 'Communication Blocking', |
'cbds' => 'Communication blocking during scheduled exams', |
'cbds' => 'Communication blocking during scheduled exams', |
Line 2012 sub displayresource {
|
Line 2071 sub displayresource {
|
$content{'sendername'}, |
$content{'sendername'}, |
$content{'senderdomain'}, |
$content{'senderdomain'}, |
$content{'courseid'}); |
$content{'courseid'}); |
} else { |
} elsif ($env{'user.adv'}) { |
return $content{'citation'}; |
return $content{'citation'}; |
} |
} |
|
return ''; |
} |
} |
|
|
# ================================================================== The Header |
# ================================================================== The Header |
Line 2136 sub sendoffmail {
|
Line 2196 sub sendoffmail {
|
my $savemsg; |
my $savemsg; |
my $msgtype; |
my $msgtype; |
my %sentmessage; |
my %sentmessage; |
|
my $msgsubj=&Apache::lonfeedback::clear_out_html($env{'form.subject'}); |
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'}) |
|
|| &Apache::lonnet::allowed('srm',$env{'request.course.id'}. |
|
'/'.$env{'request.course.sec'}) |
|
)) { |
$savemsg=&Apache::lonfeedback::clear_out_html($env{'form.message'},1); |
$savemsg=&Apache::lonfeedback::clear_out_html($env{'form.message'},1); |
$msgtype = 'critical'; |
$msgtype = 'critical'; |
} else { |
} else { |
Line 2150 sub sendoffmail {
|
Line 2214 sub sendoffmail {
|
if ($toaddr{$_}) { $msgtxt.='<hr />'.$toaddr{$_}; } |
if ($toaddr{$_}) { $msgtxt.='<hr />'.$toaddr{$_}; } |
my $thismsg; |
my $thismsg; |
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'}) |
|
|| &Apache::lonnet::allowed('srm',$env{'request.course.id'}. |
|
'/'.$env{'request.course.sec'}))) { |
$r->print(&mt('Sending critical message').' '.$recuname.'@'.$recdomain.': '); |
$r->print(&mt('Sending critical message').' '.$recuname.'@'.$recdomain.': '); |
$thismsg=&user_crit_msg($recuname,$recdomain, |
$thismsg=&user_crit_msg($recuname,$recdomain,$msgsubj,$msgtxt, |
&Apache::lonfeedback::clear_out_html($env{'form.subject'}), |
$env{'form.sendbck'},$env{'form.permanent'}, |
$msgtxt, |
\$sentmessage{$_}); |
$env{'form.sendbck'},$env{'form.permanent'},\$sentmessage{$_}); |
|
} else { |
} else { |
$r->print(&mt('Sending').' '.$recuname.'@'.$recdomain.': '); |
$r->print(&mt('Sending').' '.$recuname.'@'.$recdomain.': '); |
$thismsg=&user_normal_msg($recuname,$recdomain, |
$thismsg=&user_normal_msg($recuname,$recdomain,$msgsubj,$msgtxt, |
&Apache::lonfeedback::clear_out_html($env{'form.subject'}), |
|
$msgtxt, |
|
$content{'citation'},undef,undef,$env{'form.permanent'},\$sentmessage{$_}); |
$content{'citation'},undef,undef,$env{'form.permanent'},\$sentmessage{$_}); |
} |
} |
if (($env{'request.course.id'}) && (($msgtype eq 'critical') || |
if (($env{'request.course.id'}) && (($msgtype eq 'critical') || |
Line 2196 sub sendoffmail {
|
Line 2259 sub sendoffmail {
|
my $record_sent; |
my $record_sent; |
my @recusers = (); |
my @recusers = (); |
my @recudoms = (); |
my @recudoms = (); |
my ($stamp,$msgsubj,$msgname,$msgdom,$msgcount,$context,$pid) = |
my ($stamp,$crssubj,$msgname,$msgdom,$msgcount,$context,$pid) = |
split(/\:/,&Apache::lonnet::unescape($specialmsgid)); |
split(/\:/,&Apache::lonnet::unescape($specialmsgid)); |
foreach my $recipient (sort(keys(%toaddr))) { |
foreach my $recipient (sort(keys(%toaddr))) { |
if ($specialmsg_status{$recipient} eq 'ok') { |
if ($specialmsg_status{$recipient} eq 'ok') { |
Line 2204 sub sendoffmail {
|
Line 2267 sub sendoffmail {
|
my $usermsgid = &buildmsgid($stamp,$usersubj,$msgname, |
my $usermsgid = &buildmsgid($stamp,$usersubj,$msgname, |
$msgdom,$msgcount,$context,$pid); |
$msgdom,$msgcount,$context,$pid); |
&user_normal_msg_raw($cnum,$cdom,$subj_prefix. |
&user_normal_msg_raw($cnum,$cdom,$subj_prefix. |
' ['.$recipient.']',$sentmessage{$recipient}, |
' ['.$recipient.']',$msgsubj,undef, |
undef,undef,undef,undef,$usermsgid); |
undef,undef,undef,$usermsgid,undef,undef,$specialmsgid); |
my ($uname,$udom) = split/:/,$recipient; |
my ($uname,$udom) = split/:/,$recipient; |
push(@recusers,$uname); |
push(@recusers,$uname); |
push(@recudoms,$udom); |
push(@recudoms,$udom); |
Line 2214 sub sendoffmail {
|
Line 2277 sub sendoffmail {
|
if (@recusers) { |
if (@recusers) { |
my $specialmessage; |
my $specialmessage; |
my $sentsubj = $subj_prefix.' ('.$numspecial.' sent) '. |
my $sentsubj = $subj_prefix.' ('.$numspecial.' sent) '. |
&Apache::lonfeedback::clear_out_html($env{'form.subject'}); |
$msgsubj; |
$sentsubj = &HTML::Entities::encode($sentsubj,'<>&"'); |
$sentsubj = &HTML::Entities::encode($sentsubj,'<>&"'); |
my $sentmsgid = &buildmsgid($stamp,$sentsubj,$msgname, |
my $sentmsgid = &buildmsgid($stamp,$sentsubj,$msgname, |
$msgdom,$msgcount,$context,$pid); |
$msgdom,$msgcount,$context,$pid); |
($specialmsgid,$specialmessage) = |
($specialmsgid,$specialmessage) = &packagemsg($msgsubj,$savemsg, |
&packagemsg(&Apache::lonfeedback::clear_out_html( |
undef,undef,undef,\@recusers,\@recudoms,$sentmsgid); |
$env{'form.subject'}),$savemsg,undef,undef,undef, |
|
\@recusers,\@recudoms,$sentmsgid); |
|
$record_sent = &store_sent_mail($specialmsgid,$specialmessage); |
$record_sent = &store_sent_mail($specialmsgid,$specialmessage); |
} |
} |
} else { |
} else { |