version 1.192, 2020/09/08 23:54:40
|
version 1.200, 2023/09/15 22:32:46
|
Line 111 use Apache::loncommunicate;
|
Line 111 use Apache::loncommunicate;
|
use Apache::lonfeedback; |
use Apache::lonfeedback; |
use Apache::lonrss(); |
use Apache::lonrss(); |
use Apache::lonselstudent(); |
use Apache::lonselstudent(); |
|
use Apache::lonenc(); |
use lib '/home/httpd/lib/perl/'; |
use lib '/home/httpd/lib/perl/'; |
use LONCAPA qw(:DEFAULT :match); |
use LONCAPA qw(:DEFAULT :match); |
|
|
Line 912 sub discrit {
|
Line 913 sub discrit {
|
} |
} |
|
|
sub sortedmessages { |
sub sortedmessages { |
my ($blocked,$startblock,$endblock,$numblocked,$folder,$msgstatus) = @_; |
my ($blocked,$startblock,$endblock,$by_ip,$numblocked,$folder,$msgstatus) = @_; |
my $suffix=&Apache::lonmsg::foldersuffix($folder); |
my $suffix=&Apache::lonmsg::foldersuffix($folder); |
my @messages = &Apache::lonnet::getkeys('nohist_email'.$suffix); |
my @messages = &Apache::lonnet::getkeys('nohist_email'.$suffix); |
#unpack the varibles and repack into temp for sorting |
#unpack the varibles and repack into temp for sorting |
Line 944 sub sortedmessages {
|
Line 945 sub sortedmessages {
|
push(@temp1,$content{'recuser'},$content{'recdomain'}); |
push(@temp1,$content{'recuser'},$content{'recdomain'}); |
} |
} |
# Check whether message was sent during blocking period. |
# Check whether message was sent during blocking period. |
if ($sendtime >= $startblock && ($sendtime <= $endblock && $endblock > 0) ) { |
if (($by_ip) || |
|
(($sendtime >= $startblock) && ($sendtime <= $endblock && $endblock > 0))) { |
$$blocked{$msgid} = 'ON'; |
$$blocked{$msgid} = 'ON'; |
$$numblocked ++; |
$$numblocked ++; |
} else { |
} else { |
Line 1071 sub disfolder {
|
Line 1073 sub disfolder {
|
my %blocked = (); |
my %blocked = (); |
my %setters = (); |
my %setters = (); |
my $numblocked = 0; |
my $numblocked = 0; |
my ($startblock,$endblock) = &Apache::loncommon::blockcheck(\%setters,'com'); |
my $clientip = &Apache::lonnet::get_requestor_ip($r); |
|
my ($startblock,$endblock,$triggerblock,$by_ip,$blockdom) = |
|
&Apache::loncommon::blockcheck(\%setters,'com',$clientip); |
my %js_lt = &Apache::lonlocal::texthash( |
my %js_lt = &Apache::lonlocal::texthash( |
sede => 'Select a destination folder to which the messages will be moved.', |
sede => 'Select a destination folder to which the messages will be moved.', |
nome => 'No messages have been selected to apply this action to.', |
nome => 'No messages have been selected to apply this action to.', |
Line 1115 sub disfolder {
|
Line 1119 sub disfolder {
|
ENDDISHEADER |
ENDDISHEADER |
|
|
my $fsqs='&folder='.$folder; |
my $fsqs='&folder='.$folder; |
my @temp=&sortedmessages(\%blocked,$startblock,$endblock,\$numblocked,$folder,$msgstatus); |
my @temp=&sortedmessages(\%blocked,$startblock,$endblock,$by_ip,\$numblocked,$folder,$msgstatus); |
my $totalnumber=$#temp+1; |
my $totalnumber=$#temp+1; |
if ($totalnumber < 1) { |
if ($totalnumber < 1) { |
$r->print('<p class="LC_info">'); |
$r->print('<p class="LC_info">'); |
Line 1128 ENDDISHEADER
|
Line 1132 ENDDISHEADER
|
} |
} |
$r->print('</p>'); |
$r->print('</p>'); |
if ($numblocked > 0) { |
if ($numblocked > 0) { |
$r->print(&blocked_in_folder($numblocked,$startblock,$endblock, |
$r->print(&blocked_in_folder($numblocked,$startblock,$endblock,$by_ip,$clientip,$blockdom, |
\%setters)); |
\%setters)); |
} |
} |
return; |
return; |
Line 1318 ENDDISHEADER
|
Line 1322 ENDDISHEADER
|
$r->print('<input type="hidden" name="folder" value="'.$folder.'" /><input type="hidden" name="startdis" value="'.$postedstartdis.'" /><input type="hidden" name="interdis" value="'.$env{'form.interdis'}.'" /><input type="hidden" name="msgstatus" value="'.$msgstatus.'" /><input type="hidden" name="markedaction" value="" /></form>'); |
$r->print('<input type="hidden" name="folder" value="'.$folder.'" /><input type="hidden" name="startdis" value="'.$postedstartdis.'" /><input type="hidden" name="interdis" value="'.$env{'form.interdis'}.'" /><input type="hidden" name="msgstatus" value="'.$msgstatus.'" /><input type="hidden" name="markedaction" value="" /></form>'); |
if ($numblocked > 0) { |
if ($numblocked > 0) { |
$r->print(&blocked_in_folder($numblocked,$startblock,$endblock, |
$r->print(&blocked_in_folder($numblocked,$startblock,$endblock, |
\%setters)); |
$by_ip,$clientip,$blockdom,\%setters)); |
} |
} |
} |
} |
|
|
sub blocked_in_folder { |
sub blocked_in_folder { |
my ($numblocked,$startblock,$endblock,$setters) = @_; |
my ($numblocked,$startblock,$endblock,$by_ip,$clientip,$blockdom,$setters) = @_; |
my $beginblock = &Apache::lonlocal::locallocaltime($startblock); |
my $output; |
my $finishblock = &Apache::lonlocal::locallocaltime($endblock); |
if ($by_ip) { |
my $output = '<br /><br />'. |
$output = '<br /><br />'. |
|
&mt('[quant,_1,message is, messages are] not viewable because display of LON-CAPA messages is blocked for your current IP address: [_2].',$numblocked,$clientip).'<br />'. |
|
&mt('Note: communication is being blocked for certain IP address(es).'); |
|
} else { |
|
my $beginblock = &Apache::lonlocal::locallocaltime($startblock); |
|
my $finishblock = &Apache::lonlocal::locallocaltime($endblock); |
|
$output = '<br /><br />'. |
&mt('[quant,_1,message is, messages are] not viewable because display of LON-CAPA messages sent to you by other students between [_2] and [_3] is currently being blocked because of online exams.',$numblocked,$beginblock,$finishblock); |
&mt('[quant,_1,message is, messages are] not viewable because display of LON-CAPA messages sent to you by other students between [_2] and [_3] is currently being blocked because of online exams.',$numblocked,$beginblock,$finishblock); |
|
} |
#$output .= &Apache::loncommon::build_block_table($startblock,$endblock, |
#$output .= &Apache::loncommon::build_block_table($startblock,$endblock, |
# $setters); |
# $setters); |
|
my ($blocked, $blocktext) = &Apache::loncommon::blocking_status("com",$clientip); |
my ($blocked, $blocktext) = &Apache::loncommon::blocking_status("com"); |
|
$output .="<br /><br />".$blocktext; |
$output .="<br /><br />".$blocktext; |
|
|
return $output; |
return $output; |
Line 1342 sub blocked_in_folder {
|
Line 1352 sub blocked_in_folder {
|
sub compout { |
sub compout { |
my ($r,$forwarding,$replying,$broadcast,$replycrit,$folder,$dismode, |
my ($r,$forwarding,$replying,$broadcast,$replycrit,$folder,$dismode, |
$multiforward)=@_; |
$multiforward)=@_; |
|
my $clientip = &Apache::lonnet::get_requestor_ip($r); |
|
my %setters; |
|
my ($startblock,$endblock,$triggerblock,$by_ip,$blockdom) = |
|
&Apache::loncommon::blockcheck(\%setters,'com',$clientip); |
|
if ($by_ip) { |
|
my $showdom = &Apache::lonnet::domain($blockdom); |
|
if ($showdom eq '') { |
|
$showdom = $blockdom; |
|
} |
|
$r->print(&Apache::loncommon::start_page('Messages')); |
|
$r->print(&Apache::lonhtmlcommon::breadcrumbs('Send and display messages')); |
|
$r->print('<p class="LC_warning">'. |
|
&mt('Sending of LON-CAPA messages is blocked for your current IP address: [_1].',$clientip).'</p>'. |
|
'<ul><li>'. |
|
&mt('Note: communication is being blocked for certain IP address(es).'). |
|
'</li><li>'. |
|
&mt('This restriction was set by an administrator in the [_1] LON-CAPA domain.',$showdom). |
|
'</li></ul>'); |
|
return; |
|
} |
my $suffix=&Apache::lonmsg::foldersuffix($folder); |
my $suffix=&Apache::lonmsg::foldersuffix($folder); |
my ($cdom,$cnum,$group,$refarg); |
my ($cdom,$cnum,$group,$refarg); |
if (exists($env{'form.group'})) { |
if (exists($env{'form.group'})) { |
Line 2106 sub displaymessage {
|
Line 2136 sub displaymessage {
|
my %setters = (); |
my %setters = (); |
my $numblocked = 0; |
my $numblocked = 0; |
my $crstype = &Apache::loncommon::course_type(); |
my $crstype = &Apache::loncommon::course_type(); |
|
my $clientip = &Apache::lonnet::get_requestor_ip($r); |
|
|
# info to generate "next" and "previous" buttons and check if message is blocked |
# info to generate "next" and "previous" buttons and check if message is blocked |
my ($startblock,$endblock) = &Apache::loncommon::blockcheck(\%setters,'com'); |
my ($startblock,$endblock,$triggerblock,$by_ip,$blockdom) = |
my @messages=&sortedmessages(\%blocked,$startblock,$endblock,\$numblocked,$folder,$msgstatus); |
&Apache::loncommon::blockcheck(\%setters,'com',$clientip); |
|
my @messages=&sortedmessages(\%blocked,$startblock,$endblock,$by_ip,\$numblocked,$folder,$msgstatus); |
if ( $blocked{$msgid} eq 'ON' ) { |
if ( $blocked{$msgid} eq 'ON' ) { |
&printheader($r,'/adm/email',&mt('Display a Message')); |
&printheader($r,'/adm/email',&mt('Display a Message')); |
#$r->print(&mt('You attempted to display a message that is currently blocked because you are enrolled in one or more courses for which there is an ongoing online exam.')); |
#$r->print(&mt('You attempted to display a message that is currently blocked because you are enrolled in one or more courses for which there is an ongoing online exam.')); |
my($blocked, $blocktext) = &Apache::loncommon::blocking_status("com"); |
my($blocked, $blocktext) = &Apache::loncommon::blocking_status("com",$clientip); |
$r->print("<br />".$blocktext); |
$r->print("<br />".$blocktext); |
return; |
return; |
} |
} |
Line 2147 sub displaymessage {
|
Line 2179 sub displaymessage {
|
|
|
|
|
my $number_of_messages = scalar(@messages); #subtract 1 for last index |
my $number_of_messages = scalar(@messages); #subtract 1 for last index |
|
my $head_extra; |
|
|
|
# if student's view of resource will be included |
|
# get <link> tag(s) for css file(s) in use, and pass to &header to include |
|
# in call to loncommon::start_page() |
|
|
|
if (($env{'request.course.id'} eq $content{'courseid'}) && |
|
(&Apache::lonnet::allowed('vgr',$content{'courseid'}))) { |
|
my $symb; |
|
if (defined($content{'symb'})) { |
|
$symb = $content{'symb'}; |
|
} elsif (defined($content{'baseurl'})) { |
|
$symb=&Apache::lonnet::symbread($content{'baseurl'}); |
|
} |
|
if ($symb) { |
|
$head_extra = &Apache::loncommon::css_links($symb); |
|
} |
|
} |
|
|
# start output |
# start output |
&printheader($r,'/adm/email?display='.&escape($msgid),'Display a Message','',$content{'baseurl'}); |
&printheader($r,'/adm/email?display='.&escape($msgid),'Display a Message','', |
|
$content{'baseurl'},$head_extra); |
|
|
# Prepare available functions |
# Prepare available functions |
my @functionlist; |
my @functionlist; |
Line 2452 sub displaymessage {
|
Line 2504 sub displaymessage {
|
$showsymb,$env{'user.domain'},$env{'user.name'}); |
$showsymb,$env{'user.domain'},$env{'user.name'}); |
if ($symb) { |
if ($symb) { |
if ($encrypturl =~ /^yes$/i && !$env{'request.role.adv'}) { |
if ($encrypturl =~ /^yes$/i && !$env{'request.role.adv'}) { |
$showsymb = &Apache::lonenc::check_encrypt($symb); |
unless ($showsymb =~ m{^/enc/}) { |
|
$showsymb = &Apache::lonenc::encrypted($showsymb); |
|
} |
} |
} |
$symblink = '?symb='.$showsymb; |
$symblink = '?symb='.$showsymb; |
} |
} |
if ($encrypturl =~ /^yes$/i && !$env{'request.role.adv'}) { |
if ($encrypturl =~ /^yes$/i && !$env{'request.role.adv'}) { |
$showurl = $baseurl; |
unless ($showurl =~ m{^/enc/}) { |
|
$showurl = &Apache::lonenc::encrypted($showurl); |
|
} |
} |
} |
$r->print(&Apache::lonhtmlcommon::row_title(&mt('Refers to')) |
$r->print(&Apache::lonhtmlcommon::row_title(&mt('Refers to')) |
.'<a href="'.$showurl.$symblink.'">'.$restitle.'</a>' |
.'<a href="'.$showurl.$symblink.'">'.$restitle.'</a>' |
Line 2651 sub displayresource {
|
Line 2707 sub displayresource {
|
&& (&Apache::lonnet::allowed('vgr',$content{'courseid'}))) { |
&& (&Apache::lonnet::allowed('vgr',$content{'courseid'}))) { |
my $symb; |
my $symb; |
if (defined($content{'symb'})) { |
if (defined($content{'symb'})) { |
$symb = $content{'symb'}; |
$symb = &Apache::lonenc::check_decrypt($content{'symb'}); |
} else { |
} elsif (defined($content{'baseurl'})) { |
$symb=&Apache::lonnet::symbread($content{'baseurl'}); |
$symb = |
|
&Apache::lonnet::symbread(&Apache::lonenc::check_decrypt($content{'baseurl'})); |
} |
} |
# Could not get a symb, give up |
# Could not get a symb, give up |
unless ($symb) { return $content{'citation'}; } |
unless ($symb) { return $content{'citation'}; } |
Line 2689 sub displayresource {
|
Line 2746 sub displayresource {
|
# ================================================================== The Header |
# ================================================================== The Header |
|
|
sub header { |
sub header { |
my ($r,$title,$baseurl)=@_; |
my ($r,$title,$baseurl,$head_extra)=@_; |
my $extra = &Apache::loncommon::studentbrowser_javascript(); |
my $extra = &Apache::loncommon::studentbrowser_javascript(); |
if ($baseurl) { |
if ($baseurl) { |
$extra .= "<base href=\"".&Apache::lonnet::absolute_url()."/$baseurl\" />"; |
$extra .= "<base href=\"".&Apache::lonnet::absolute_url()."/$baseurl\" />"; |
} |
} |
$extra .= '<script type="text/javascript" |
$extra .= '<script type="text/javascript" |
src="/res/adm/includes/file_upload.js"></script>'; |
src="/res/adm/includes/file_upload.js"></script>'; |
|
if ($head_extra) { |
|
$extra .= "\n$head_extra"; |
|
} |
$r->print(&Apache::loncommon::start_page('Messages', |
$r->print(&Apache::loncommon::start_page('Messages', |
$extra)); |
$extra)); |
$r->print(&Apache::lonhtmlcommon::breadcrumbs |
$r->print(&Apache::lonhtmlcommon::breadcrumbs |
Line 2705 sub header {
|
Line 2765 sub header {
|
# ---------------------------------------------------------------- Print header |
# ---------------------------------------------------------------- Print header |
|
|
sub printheader { |
sub printheader { |
my ($r,$url,$desc,$title,$baseurl)=@_; |
my ($r,$url,$desc,$title,$baseurl,$head_extra)=@_; |
&Apache::lonhtmlcommon::add_breadcrumb |
&Apache::lonhtmlcommon::add_breadcrumb |
({href=>$url, |
({href=>$url, |
text=>$desc}); |
text=>$desc}); |
&header($r,$title,$baseurl); |
&header($r,$title,$baseurl,$head_extra); |
} |
} |
|
|
# ------------------------------------------------------------ Store the comment |
# ------------------------------------------------------------ Store the comment |
Line 2766 sub sendoffmail {
|
Line 2826 sub sendoffmail {
|
$cnum = $env{'course.'.$env{'request.course.id'}.'.num'}; |
$cnum = $env{'course.'.$env{'request.course.id'}.'.num'}; |
$cdom = $env{'course.'.$env{'request.course.id'}.'.domain'}; |
$cdom = $env{'course.'.$env{'request.course.id'}.'.domain'}; |
} |
} |
if ($env{'form.send'}) { |
my $clientip = &Apache::lonnet::get_requestor_ip($r); |
|
my %setters; |
|
my ($startblock,$endblock,$triggerblock,$by_ip,$blockdom) = |
|
&Apache::loncommon::blockcheck(\%setters,'com',$clientip); |
|
if ($by_ip) { |
|
&printheader($r,'','Sending messages blocked from your location.'); |
|
return 'blocked'; |
|
} elsif ($env{'form.send'}) { |
if (!$env{'form.multiforward'}) { |
if (!$env{'form.multiforward'}) { |
if ($group eq '') { |
if ($group eq '') { |
&printheader($r,'','Messages being sent.'); |
&printheader($r,'','Messages being sent.'); |
Line 3203 sub handler {
|
Line 3270 sub handler {
|
'sendreply','compose','sendmail','critical','recname','recdom', |
'sendreply','compose','sendmail','critical','recname','recdom', |
'recordftf','sortedby','folder','startdis','interdis', |
'recordftf','sortedby','folder','startdis','interdis', |
'showcommentbaseurl','dismode','group','subject','text','ref', |
'showcommentbaseurl','dismode','group','subject','text','ref', |
'msgstatus']); |
'msgstatus','btoken']); |
$sqs='&sortedby='.$env{'form.sortedby'}; |
$sqs='&sortedby='.$env{'form.sortedby'}; |
|
|
|
# ----------- Check if access was from balancer to server with existing session |
|
|
|
if ($env{'form.btoken'}) { |
|
my %info = &Apache::lonnet::tmpget($env{'form.btoken'}); |
|
&Apache::lonnet::tmpdel($env{'form.btoken'}); |
|
delete($env{'form.btoken'}); |
|
unless ($env{'form.display'}) { |
|
if (($info{'display'}) && ($info{'mailrecip'})) { |
|
if (&unescape($info{'mailrecip'}) eq $env{'user.name'}.':'.$env{'user.domain'}) { |
|
$env{'form.display'} = &unescape($info{'display'}); |
|
} |
|
} |
|
} |
|
} |
|
|
# ------------------------------------------------------ They checked for email |
# ------------------------------------------------------ They checked for email |
&Apache::lonnet::put('email_status',{'recnewemail'=>0}); |
&Apache::lonnet::put('email_status',{'recnewemail'=>0}); |
|
|
Line 3460 sub handler {
|
Line 3542 sub handler {
|
my $count = keys(%forwardfail); |
my $count = keys(%forwardfail); |
my $message = &Apache::lonhtmlcommon::confirm_success(&mt('Could not forward [quant,_1,message].',$count),1); |
my $message = &Apache::lonhtmlcommon::confirm_success(&mt('Could not forward [quant,_1,message].',$count),1); |
foreach my $key (keys(%forwardfail)) { |
foreach my $key (keys(%forwardfail)) { |
$message .= '<br />'.&mt('Could not deliver forwarded message.').'</span> '. |
$message .= '<br />'.&mt('Could not deliver forwarded message.').' '; |
&mt('The recipient addresses may need to be corrected').' ('.$forwardfail{$key}.')'; |
if ($forwardfail{$key} eq 'blocked') { |
|
$message .= &mt('Sending messages is blocked from your IP address'); |
|
} else { |
|
$message .= &mt('The recipient addresses may need to be corrected').' ('.$forwardfail{$key}.')'; |
|
} |
} |
} |
$message = &Apache::loncommon::confirmwrapper($message); |
$message = &Apache::loncommon::confirmwrapper($message); |
$r->print($message); |
$r->print($message); |