version 1.371, 2015/09/30 21:04:04
|
version 1.390, 2022/01/19 00:44:31
|
Line 44 use HTML::LCParser();
|
Line 44 use HTML::LCParser();
|
#use HTML::Tidy::libXML; |
#use HTML::Tidy::libXML; |
use Apache::lonspeller(); |
use Apache::lonspeller(); |
use Apache::longroup; |
use Apache::longroup; |
use Cwd; |
use Archive::Zip qw( :ERROR_CODES ); |
use LONCAPA; |
use LONCAPA qw(:DEFAULT :match); |
|
|
sub discussion_open { |
sub discussion_open { |
my ($status,$symb)=@_; |
my ($status,$symb)=@_; |
Line 118 sub list_discussion {
|
Line 118 sub list_discussion {
|
$outputtarget = 'export'; |
$outputtarget = 'export'; |
} |
} |
} |
} |
|
my ($nofooter,$nodisclink,$nofdbklink); |
if (not &discussion_visible($status)) { |
if (not &discussion_visible($status)) { |
if ($mode ne 'board') { |
if ($mode ne 'board') { |
&Apache::lonenc::check_encrypt(\$ressymb); |
($nofooter,$nodisclink,$nofdbklink) = &check_menucoll(); |
return '<br /><div class="LC_feedback_link">'.&send_message_link($ressymb)."</div>"; |
if ($nofooter || $nofdbklink) { |
|
return '<br />'; |
|
} else { |
|
&Apache::lonenc::check_encrypt(\$ressymb); |
|
return '<br /><div class="LC_feedback_link">'.&send_message_link($ressymb)."</div>"; |
|
} |
} |
} |
} |
} |
if ($group ne '' && $mode eq 'board') { |
if ($group ne '' && $mode eq 'board') { |
Line 130 sub list_discussion {
|
Line 136 sub list_discussion {
|
} |
} |
} |
} |
|
|
my ($blocked,$blocktext) = |
unless ($outputtarget eq 'export') { |
&Apache::loncommon::blocking_status('boards'); |
($nofooter,$nodisclink,$nofdbklink) = &check_menucoll(); |
if ($blocked) { |
} |
$blocktext = '<br /><div class="LC_feedback_link"><span class="LC_feedback_link">'.$blocktext."</span>"; |
|
&Apache::lonenc::check_encrypt(\$ressymb); |
unless ($nofooter) { |
if ($mode ne 'board') { |
my ($blocked,$blocktext) = |
$blocktext.=&send_message_link($ressymb).'</div>'; |
&Apache::loncommon::blocking_status('boards'); |
}else{ |
if ($blocked) { |
$blocktext.="</div>"; |
my $footer = '<br /><div class="LC_feedback_link">'; |
|
unless ($nodisclink) { |
|
$footer .= '<span class="LC_feedback_link">'.$blocktext.'</span>'; |
|
} |
|
&Apache::lonenc::check_encrypt(\$ressymb); |
|
if ($mode ne 'board') { |
|
unless ($nofdbklink) { |
|
$footer.=&send_message_link($ressymb); |
|
} |
|
} |
|
$footer.='</div>'; |
|
return $footer; |
} |
} |
return $blocktext; |
|
} |
} |
|
|
my @bgcols = ("LC_disc_old_item","LC_disc_new_item"); |
my @bgcols = ("LC_disc_old_item","LC_disc_new_item"); |
Line 674 END
|
Line 690 END
|
$newpostsflag,$group, |
$newpostsflag,$group, |
$prevread,$markondisp,$seehidden); |
$prevread,$markondisp,$seehidden); |
$discussion .= "</table></form>\n"; |
$discussion .= "</table></form>\n"; |
} |
} |
if ($outputtarget eq 'export') { |
if ($outputtarget eq 'export') { |
if ($manifestok) { |
if ($manifestok) { |
while ($currdepth > 0) { |
while ($currdepth > 0) { |
Line 696 END
|
Line 712 END
|
|
|
#Create zip file in prtspool |
#Create zip file in prtspool |
|
|
my $imszipfile = '/prtspool/'. |
if (($env{'user.name'} =~ /^$match_username$/) |
$env{'user.name'}.'_'.$env{'user.domain'}.'_'. |
&& ($env{'user.domain'} =~ /^$match_domain$/)) { |
time.'_'.rand(1000000000).'.zip'; |
my $now = time(); |
my $cwd = &getcwd(); |
my $imszipfile = '/prtspool/'. |
my $imszip = '/home/httpd/'.$imszipfile; |
join('_',$env{'user.name'},$env{'user.domain'},$now). |
chdir $tempexport; |
'_'.rand(1000000000).'.zip'; |
open(OUTPUT, "zip -r $imszip * 2> /dev/null |"); |
my $zip = Archive::Zip->new(); |
close(OUTPUT); |
$zip->addTree($tempexport); |
chdir $cwd; |
my $imszip = '/home/httpd/'.$imszipfile; |
$discussion .= &mt('Download the zip file from [_1]Discussion Posting Archive[_2]', |
if ($zip->writeToFileNamed($imszip) == AZ_OK) { |
|
$discussion .= &mt('Download the zip file from [_1]Discussion Posting Archive[_2]', |
'<a href="'.$imszipfile.'">','</a>').'<br />'; |
'<a href="'.$imszipfile.'">','</a>').'<br />'; |
if ($copyresult) { |
} else { |
$discussion .= '<span class="LC_error">'. |
$discussion .= &mt('Failed to create zip file').'<br />'; |
&mt('The following errors occurred during export:'). |
} |
'</span><br />'.$copyresult; |
if ($copyresult) { |
|
$discussion .= '<span class="LC_error">'. |
|
&mt('The following errors occurred during export:'). |
|
'</span><br />'.$copyresult; |
|
} |
|
} else { |
|
$discussion .= '<p class="LC_error">'. |
|
&mt('Unfortunately you will not be able to retrieve an archive of the discussion posts at this time, because there was a problem creating the zip file.').'</p>'; |
} |
} |
} |
} |
} else { |
} else { |
Line 766 END
|
Line 790 END
|
&mt('This discussion is closed.').'</span>'; |
&mt('This discussion is closed.').'</span>'; |
} |
} |
} elsif ($outputtarget ne 'tex') { |
} elsif ($outputtarget ne 'tex') { |
$discussion.='<div class="LC_feedback_link">'; |
unless ($nofooter) { |
if (&discussion_open($status) && |
$discussion.='<div class="LC_feedback_link">'; |
&Apache::lonnet::allowed('pch', |
unless ($nodisclink) { |
$env{'request.course.id'}. |
if (&discussion_open($status) && |
($env{'request.course.sec'}?'/'.$env{'request.course.sec'}:''))) { |
&Apache::lonnet::allowed('pch', |
$discussion.= &send_feedback_link($ressymb); |
$env{'request.course.id'}. |
if ($env{'request.role.adv'}) { |
($env{'request.course.sec'}?'/'.$env{'request.course.sec'}:''))) { |
my $close = &Apache::lonnet::EXT('resource.0.discussend',$ressymb); |
$discussion.= &send_feedback_link($ressymb); |
my $canvote = &Apache::lonnet::EXT('resource.0.discussvote',$ressymb); |
if ($env{'request.role.adv'}) { |
if (defined($close) && $close ne '' && $close < time) { |
my $close = &Apache::lonnet::EXT('resource.0.discussend',$ressymb); |
if ($canvote eq 'notended') { |
my $canvote = &Apache::lonnet::EXT('resource.0.discussvote',$ressymb); |
$discussion .= ' '.&mt('(Posting and voting closed for [_1] roles)', |
if (defined($close) && $close ne '' && $close < time) { |
&Apache::lonnet::plaintext('st',$crstype)); |
if ($canvote eq 'notended') { |
} else { |
$discussion .= ' '.&mt('(Posting and voting closed for [_1] roles)', |
$discussion .= ' '.&mt('(Closed for [_1] roles)', |
&Apache::lonnet::plaintext('st',$crstype)); |
&Apache::lonnet::plaintext('st',$crstype)); |
} else { |
|
$discussion .= ' '.&mt('(Closed for [_1] roles)', |
|
&Apache::lonnet::plaintext('st',$crstype)); |
|
} |
|
} |
} |
} |
|
} else { |
|
$discussion.= '<span class="LC_feedback_link">'.&mt('This discussion is closed.').'</span>'; |
} |
} |
} |
} |
} else { |
unless ($nofdbklink) { |
$discussion.= '<span class="LC_feedback_link">'.&mt('This discussion is closed.').'</span>'; |
$discussion.= &send_message_link($ressymb); |
|
} |
|
$discussion.='</div>'; |
} |
} |
$discussion.= &send_message_link($ressymb).'</div>'; |
|
} |
} |
return $discussion; |
return $discussion; |
} |
} |
|
|
|
sub check_menucoll { |
|
my ($nofooter,$nodisclink,$nofdbklink); |
|
my ($menucoll,$deeplinkmenu,$menuref) = &Apache::loncommon::menucoll_in_effect(); |
|
if ($menucoll) { |
|
if (ref($menuref) eq 'HASH') { |
|
if ($menuref->{'foot'} eq 'n') { |
|
$nofooter = 1; |
|
} else { |
|
unless ($menuref->{'disc'}) { |
|
$nodisclink = 1; |
|
} |
|
unless ($menuref->{'fdbk'}) { |
|
$nofdbklink = 1; |
|
} |
|
} |
|
} |
|
} |
|
return ($nofooter,$nodisclink,$nofdbklink); |
|
} |
|
|
sub can_see_hidden { |
sub can_see_hidden { |
my ($mode,$ressymb,$feedurl,$group,$cdom,$cnum,$crs) = @_; |
my ($mode,$ressymb,$feedurl,$group,$cdom,$cnum,$crs) = @_; |
my $seehidden; |
my $seehidden; |
Line 847 sub send_feedback_link {
|
Line 898 sub send_feedback_link {
|
&discussion_link($ressymb, |
&discussion_link($ressymb, |
'<img alt="" class="LC_noBorder" src="'. |
'<img alt="" class="LC_noBorder" src="'. |
&Apache::loncommon::lonhttpdurl('/adm/lonMisc/chat.gif'). |
&Apache::loncommon::lonhttpdurl('/adm/lonMisc/chat.gif'). |
'" border="0" /><span class="LC_menubuttons_inline_text">'.&mt('Post Discussion').'</span>', |
'" /><span class="LC_menubuttons_inline_text">'.&mt('Post Discussion').'</span>', |
'replydisc'). |
'replydisc'). |
'</span>'; |
'</span>'; |
} |
} |
Line 858 sub send_message_link {
|
Line 909 sub send_message_link {
|
&discussion_link($ressymb, |
&discussion_link($ressymb, |
'<img alt="" class="LC_noBorder" src="'. |
'<img alt="" class="LC_noBorder" src="'. |
&Apache::loncommon::lonhttpdurl('/res/adm/pages/feedback.png'). |
&Apache::loncommon::lonhttpdurl('/res/adm/pages/feedback.png'). |
'" border="0" /><span class="LC_menubuttons_inline_text">'.&mt('Send Feedback').'</span>', |
'" /><span class="LC_menubuttons_inline_text">'.&mt('Send Feedback').'</span>', |
'sendmessageonly'). |
'sendmessageonly'). |
'</span>'; |
'</span>'; |
return $output; |
return $output; |
Line 933 sub postingform_display {
|
Line 984 sub postingform_display {
|
$currnewattach,$currdelold,$group,$crstype) = @_; |
$currnewattach,$currdelold,$group,$crstype) = @_; |
my $newattachmsg; |
my $newattachmsg; |
my %lt = &Apache::lonlocal::texthash( |
my %lt = &Apache::lonlocal::texthash( |
'note' => 'Note: in anonymous discussion, your name is visible only to course faculty', |
'note' => 'Note: in anonymous discussion, your name is visible only to course faculty', |
'title' => 'Title', |
'title' => 'Title', |
'podi' => 'Post Discussion', |
'podi' => 'Post Discussion', |
'poan' => 'Post Anonymous Discussion', |
'poan' => 'Post Anonymous Discussion', |
Line 952 sub postingform_display {
|
Line 1003 sub postingform_display {
|
} |
} |
} |
} |
} |
} |
|
my $postanon; |
|
if (&Apache::lonnet::allowed('pac',$env{'request.course.id'}. |
|
($env{'request.course.sec'}?'/'.$env{'request.course.sec'}:''))) { |
|
$postanon = '<input type="submit" name="anondiscuss" value="'.$lt{'poan'}.'" />'; |
|
} |
$postingform .= (<<ENDDISCUSS); |
$postingform .= (<<ENDDISCUSS); |
<form action="/adm/feedback" method="post" name="mailform" enctype="multipart/form-data"> <input type="submit" name="discuss" value="$lt{'podi'}" /> |
<form action="/adm/feedback" method="post" name="mailform" enctype="multipart/form-data"> <input type="submit" name="discuss" value="$lt{'podi'}" /> |
<input type="submit" name="anondiscuss" value="$lt{'poan'}" /> <input type="hidden" name="symb" value="$ressymb" /> |
$postanon<input type="hidden" name="symb" value="$ressymb" /> |
<input type="hidden" name="sendit" value="true" /> |
<input type="hidden" name="sendit" value="true" /> |
<input type="hidden" name="timestamp" value="$now" /> |
<input type="hidden" name="timestamp" value="$now" /> |
<a name="newpost"></a> |
<a name="newpost"></a> |
Line 1285 sub build_posting_display {
|
Line 1341 sub build_posting_display {
|
if (&editing_allowed($escsymb.':::'.$idx,$group)) { |
if (&editing_allowed($escsymb.':::'.$idx,$group)) { |
if (($env{'user.domain'} eq $contrib{$idx.':senderdomain'}) && ($env{'user.name'} eq $contrib{$idx.':sendername'})) { |
if (($env{'user.domain'} eq $contrib{$idx.':senderdomain'}) && ($env{'user.name'} eq $contrib{$idx.':sendername'})) { |
$sender.=' '. |
$sender.=' '. |
&discussion_link($symb,&mt('Edit'),'editdisc',$idx,$$newpostsflag,$prevread,&group_args($group)); |
&discussion_link($ressymb,&mt('Edit'),'editdisc',$idx,$$newpostsflag,$prevread,&group_args($group)); |
unless ($seehidden) { |
unless ($seehidden) { |
my $grpargs = &group_args($group); |
my $grpargs = &group_args($group); |
$sender.=" <a href=\"javascript:verifydelete('studentdelete','$escsymb','$idx','$$newpostsflag','$prevread','$grpargs')"; |
$sender.=" <a href=\"javascript:verifydelete('studentdelete','$escsymb','$idx','$$newpostsflag','$prevread','$grpargs')"; |
Line 1297 sub build_posting_display {
|
Line 1353 sub build_posting_display {
|
if ($hiddens{$idx}) { |
if ($hiddens{$idx}) { |
unless ($studenthidden) { |
unless ($studenthidden) { |
$sender.=' '. |
$sender.=' '. |
&discussion_link($symb,&mt('Make Visible'),'unhide',$idx,$$newpostsflag,$prevread,&group_args($group)); |
&discussion_link($ressymb,&mt('Make Visible'),'unhide',$idx,$$newpostsflag,$prevread,&group_args($group)); |
} |
} |
} else { |
} else { |
$sender.=' '. |
$sender.=' '. |
&discussion_link($symb,&mt('Hide'),'hide',$idx,$$newpostsflag,$prevread,&group_args($group)); |
&discussion_link($ressymb,&mt('Hide'),'hide',$idx,$$newpostsflag,$prevread,&group_args($group)); |
} |
} |
my $grpargs = &group_args($group); |
my $grpargs = &group_args($group); |
$sender.= |
$sender.= |
Line 1340 sub build_posting_display {
|
Line 1396 sub build_posting_display {
|
if (($group ne '') && |
if (($group ne '') && |
(&check_group_priv($group,'pgd') eq 'ok')) { |
(&check_group_priv($group,'pgd') eq 'ok')) { |
$sender.=' '. |
$sender.=' '. |
&discussion_link($symb,&mt('Reply'),'replydisc',$idx,$$newpostsflag,$prevread,&group_args($group)); |
&discussion_link($ressymb,&mt('Reply'),'replydisc',$idx,$$newpostsflag,$prevread,&group_args($group)); |
} elsif (&Apache::lonnet::allowed('pch', |
} elsif (&Apache::lonnet::allowed('pch', |
$env{'request.course.id'}. |
$env{'request.course.id'}. |
($env{'request.course.sec'}?'/'. |
($env{'request.course.sec'}?'/'. |
$env{'request.course.sec'}:''))) { |
$env{'request.course.sec'}:''))) { |
$sender.=' '. |
$sender.=' '. |
&discussion_link($symb,&mt('Reply'),'replydisc',$idx,$$newpostsflag,$prevread); |
&discussion_link($ressymb,&mt('Reply'),'replydisc',$idx,$$newpostsflag,$prevread); |
} |
} |
} |
} |
if ($viewgrades) { |
if ($viewgrades) { |
Line 1513 sub build_posting_display {
|
Line 1569 sub build_posting_display {
|
if ($userlikes{$idx}) { |
if ($userlikes{$idx}) { |
$$discussionitems[$idx].='<img border="0" src="/res/adm/pages/thumbsup_gray.png" alt="'.&mt('You like this posting').'" />'; |
$$discussionitems[$idx].='<img border="0" src="/res/adm/pages/thumbsup_gray.png" alt="'.&mt('You like this posting').'" />'; |
} else { |
} else { |
$$discussionitems[$idx].=' '.&discussion_link($symb,'<img border="0" src="/res/adm/pages/thumbsup.png" alt="'.&mt('Like').'" />','like',$idx,$$newpostsflag,$prevread,&group_args($group),&mt("Like this posting")); |
$$discussionitems[$idx].=' '.&discussion_link($ressymb,'<img border="0" src="/res/adm/pages/thumbsup.png" alt="'.&mt('Like').'" />','like',$idx,$$newpostsflag,$prevread,&group_args($group),&mt("Like this posting")); |
} |
} |
if ($userunlikes{$idx}) { |
if ($userunlikes{$idx}) { |
$$discussionitems[$idx].='<img border="0" src="/res/adm/pages/thumbsdown_gray.png" alt="'.&mt('You unlike this posting').'" />'; |
$$discussionitems[$idx].='<img border="0" src="/res/adm/pages/thumbsdown_gray.png" alt="'.&mt('You unlike this posting').'" />'; |
} else { |
} else { |
$$discussionitems[$idx].=' '.&discussion_link($symb,'<img border="0" src="/res/adm/pages/thumbsdown.png" alt="'.&mt('Unlike').'" />','unlike',$idx,$$newpostsflag,$prevread,&group_args($group),&mt("Unlike this posting")); |
$$discussionitems[$idx].=' '.&discussion_link($ressymb,'<img border="0" src="/res/adm/pages/thumbsdown.png" alt="'.&mt('Unlike').'" />','unlike',$idx,$$newpostsflag,$prevread,&group_args($group),&mt("Unlike this posting")); |
} |
} |
} |
} |
} |
} |
Line 1536 sub build_posting_display {
|
Line 1592 sub build_posting_display {
|
$$discussionitems[$idx] .= ' '.&mt('This post has been edited by the author.'); |
$$discussionitems[$idx] .= ' '.&mt('This post has been edited by the author.'); |
if ($seehidden) { |
if ($seehidden) { |
$$discussionitems[$idx] .= ' '. |
$$discussionitems[$idx] .= ' '. |
&discussion_link($symb,&mt('Display all versions'),'allversions',$idx,$$newpostsflag,$prevread,&group_args($group)); |
&discussion_link($ressymb,&mt('Display all versions'),'allversions',$idx,$$newpostsflag,$prevread,&group_args($group)); |
} |
} |
$$discussionitems[$idx].='<br/>'.&mt('Earlier version(s) were posted on: '); |
$$discussionitems[$idx].='<br/>'.&mt('Earlier version(s) were posted on: '); |
if ($contrib{$idx.':history'} =~ m/:/) { |
if ($contrib{$idx.':history'} =~ m/:/) { |
Line 1768 sub mail_screen {
|
Line 1824 sub mail_screen {
|
|
|
my %lt = &Apache::lonlocal::texthash( |
my %lt = &Apache::lonlocal::texthash( |
'myqu' => 'Question/comment/feedback:', |
'myqu' => 'Question/comment/feedback:', |
'title' => 'Title', |
|
'reta' => 'Retained attachments', |
'reta' => 'Retained attachments', |
'atta' => 'Attachment', |
'atta' => 'Attachment', |
); |
); |
if($env{'form.editdisc'} || $env{'form.replydisc'}){ |
if ($env{'form.editdisc'} || $env{'form.replydisc'}){ |
%lt = &Apache::lonlocal::texthash( |
$lt{'myqu'} = &mt('Post Discussion'); |
'myqu' => 'Post Discussion', |
|
); |
|
} |
} |
my $restitle = &get_resource_title($caller_symb,$feedurl); |
my $restitle = &get_resource_title($caller_symb,$feedurl); |
my $quote=''; |
my $quote=''; |
Line 2050 END
|
Line 2103 END
|
} else { |
} else { |
$r->print(<<END); |
$r->print(<<END); |
<p> |
<p> |
$lt{'atta'} $attachmaxtext: <input type="file" name="attachment" class="flUpload" /> |
$lt{'atta'} $attachmaxtext: <input type="file" name="attachment" class="LC_flUpload" /> |
<input type="hidden" id="free_space" value="131072" /> |
<input type="hidden" id="LC_free_space" value="131072" /> |
</p> |
</p> |
END |
END |
} |
} |
Line 2062 END
|
Line 2115 END
|
$r->print('<input type="hidden" name="ref" value="'.$env{'form.ref'}.'" />'); |
$r->print('<input type="hidden" name="ref" value="'.$env{'form.ref'}.'" />'); |
} |
} |
$r->print(<<END); |
$r->print(<<END); |
<input type="hidden" name="sendit" value="1" /> |
<input type="hidden" name="sendit" value="1" /><br /><br /> |
<input type="button" value="$send" onclick='gosubmit();' /> |
<input type="button" value="$send" onclick='gosubmit();' /> |
</form> |
</form> |
END |
END |
Line 2698 sub get_post_attachments {
|
Line 2751 sub get_post_attachments {
|
$$attachments{'0'}{'filename'} = $attachmenturls; |
$$attachments{'0'}{'filename'} = $attachmenturls; |
$$attachments{'0'}{'0'} = 'n'; |
$$attachments{'0'}{'0'} = 'n'; |
} |
} |
|
|
return; |
return; |
} |
} |
|
|
sub fail_redirect { |
sub fail_redirect { |
my ($r,$feedurl) = @_; |
my ($r,$feedurl,$delay) = @_; |
if ($feedurl=~/^\/adm\//) { $feedurl.='?register=1' }; |
if ($feedurl=~/^\/adm\//) { $feedurl.='?register=1' }; |
my %lt = &Apache::lonlocal::texthash( |
my %lt = &Apache::lonlocal::texthash( |
'sorr' => 'Sorry, no recipients ...', |
'sorr' => 'Sorry, no recipients ...', |
); |
); |
my $logo=&Apache::loncommon::lonhttpdurl('/adm/lonIcons/lonlogos.gif'); |
my $logo=&Apache::loncommon::lonhttpdurl('/adm/lonIcons/lonlogos.gif'); |
$r->print(&Apache::loncommon::start_page('Feedback not sent',undef, |
my %parms=('only_body' => 1); |
{'redirect' => [2,$feedurl], |
if ($delay !~ /^\d+(|\.\d+)$/) { |
'only_body' => 1,})); |
$delay = 2; |
|
} |
|
if ($env{'form.modal'}) { |
|
my $onload = 'document.forms.reldt.submit()'; |
|
if ($delay) { |
|
my $js_delay = int(1000 * $delay); |
|
$onload = "setTimeout(function(){ |
|
document.forms.reldt.submit(); |
|
},$js_delay);"; |
|
} |
|
$parms{'add_entries'}={'onload' => $onload}; |
|
} else { |
|
$parms{'redirect'}=[$delay,$feedurl]; |
|
} |
|
$r->print(&Apache::loncommon::start_page('Feedback not sent',undef,\%parms)); |
|
my $windowname = 'loncapaclient'; |
|
if ($env{'request.lti.login'}) { |
|
$windowname .= 'lti'; |
|
} |
$r->print(<<ENDFAILREDIR); |
$r->print(<<ENDFAILREDIR); |
<img align="right" src="$logo" /> |
<img align="right" src="$logo" /> |
<p class="LC_warning">$lt{'sorr'}</p> |
<p class="LC_warning">$lt{'sorr'}</p> |
|
<form name="reldt" action="$feedurl" target="$windowname"> |
|
</form> |
ENDFAILREDIR |
ENDFAILREDIR |
$r->print(&Apache::loncommon::end_page()); |
$r->print(&Apache::loncommon::end_page()); |
} |
} |
|
|
sub redirect_back { |
sub redirect_back { |
my ($r,$feedurl,$typestyle,$sendsomething,$sendposts,$blog,$status,$previous,$sort,$rolefilter,$statusfilter,$sectionpick,$grouppick,$numpicks,$group,$toolarge) = @_; |
my ($r,$feedurl,$typestyle,$sendsomething,$sendposts,$blog,$status,$previous,$sort, |
|
$rolefilter,$statusfilter,$sectionpick,$grouppick,$numpicks,$group,$toolarge,$delay) = @_; |
my $sorttag = ''; |
my $sorttag = ''; |
my $roletag = ''; |
my $roletag = ''; |
my $statustag = ''; |
my $statustag = ''; |
Line 2819 sub redirect_back {
|
Line 2892 sub redirect_back {
|
&Apache::lonenc::check_encrypt(\$feedurl); |
&Apache::lonenc::check_encrypt(\$feedurl); |
my $logo=&Apache::loncommon::lonhttpdurl('/adm/lonIcons/lonlogos.gif'); |
my $logo=&Apache::loncommon::lonhttpdurl('/adm/lonIcons/lonlogos.gif'); |
my %parms=('only_body' => 1); |
my %parms=('only_body' => 1); |
|
if ($delay !~ /^\d+(|\.\d+)$/) { |
|
$delay = 0; |
|
} |
if ($env{'form.modal'}) { |
if ($env{'form.modal'}) { |
$parms{'add_entries'}={'onLoad' => 'document.forms.reldt.submit()'}; |
my $onload = 'document.forms.reldt.submit()'; |
|
if ($delay) { |
|
my $js_delay = int(1000 * $delay); |
|
$onload = "setTimeout(function(){ |
|
document.forms.reldt.submit(); |
|
},$js_delay);"; |
|
} |
|
$parms{'add_entries'}={'onload' => $onload}; |
} else { |
} else { |
$parms{'redirect'}=[0,$feedurl]; |
$parms{'redirect'}=[$delay,$feedurl]; |
} |
} |
my $start_page= |
my $start_page= |
&Apache::loncommon::start_page('Feedback sent',undef,\%parms); |
&Apache::loncommon::start_page('Feedback sent',undef,\%parms); |
my $end_page = &Apache::loncommon::end_page(); |
my $end_page = &Apache::loncommon::end_page(); |
|
my $windowname = 'loncapaclient'; |
|
if ($env{'request.lti.login'}) { |
|
$windowname .= 'lti'; |
|
} |
$r->print(<<ENDREDIR); |
$r->print(<<ENDREDIR); |
$start_page |
$start_page |
<img align="right" src="$logo" /> |
<img align="right" src="$logo" /> |
Line 2835 $typestyle
|
Line 2922 $typestyle
|
$blog |
$blog |
$toolarge |
$toolarge |
<font color="red">$status</font> |
<font color="red">$status</font> |
<form name="reldt" action="$feedurl" target="loncapaclient"> |
<form name="reldt" action="$feedurl" target="$windowname"> |
$prevtag |
$prevtag |
$sorttag |
$sorttag |
$statustag |
$statustag |
Line 2850 ENDREDIR
|
Line 2937 ENDREDIR
|
} |
} |
|
|
sub no_redirect_back { |
sub no_redirect_back { |
my ($r,$feedurl) = @_; |
my ($r,$feedurl,$delay) = @_; |
my $nofeed=&mt('Sorry, no feedback possible on this resource ...'); |
my $nofeed=&mt('Sorry, no feedback possible on this resource ...'); |
|
my $form_for_modal; |
my %onload; |
my %parms=('only_body' => 1, |
|
'bgcolor' => '#FFFFFF',); |
my %body_options = ('only_body' => 1, |
if ($delay !~ /^\d+(|\.\d+)$/) { |
'bgcolor' => '#FFFFFF', |
$delay = 0; |
'add_entries' => \%onload,); |
} |
|
if ($env{'form.modal'}) { |
if ($feedurl !~ m{^/adm/feedback}) { |
if (($feedurl !~ m{^/adm/feedback}) && ($feedurl ne '')) { |
$body_options{'redirect'} = [2,$feedurl]; |
my $onload = 'document.forms.reldt.submit()'; |
|
if ($delay) { |
|
my $js_delay = int(1000 * $delay); |
|
$onload = "setTimeout(function(){ |
|
document.forms.reldt.submit(); |
|
},$js_delay);"; |
|
} |
|
$parms{'add_entries'}={'onload' => $onload}; |
|
my $windowname = 'loncapaclient'; |
|
if ($env{'request.lti.login'}) { |
|
$windowname .= 'lti'; |
|
} |
|
$form_for_modal = <<ENDFORM; |
|
<form name="reldt" action="$feedurl" target="$windowname"> |
|
</form> |
|
ENDFORM |
|
} |
|
} else { |
|
if (($feedurl !~ m{^/adm/feedback}) && ($feedurl ne '')) { |
|
$parms{'redirect'}=[$delay,$feedurl]; |
|
} |
} |
} |
|
|
my $start_page= |
my $start_page= |
&Apache::loncommon::start_page('Feedback not sent',undef, |
&Apache::loncommon::start_page('Feedback not sent',undef, |
\%body_options); |
\%parms); |
|
|
my $end_page = &Apache::loncommon::end_page(); |
my $end_page = &Apache::loncommon::end_page(); |
|
|
&Apache::lonenc::check_encrypt(\$feedurl); |
|
my $logo=&Apache::loncommon::lonhttpdurl('/adm/lonIcons/lonlogos.gif'); |
my $logo=&Apache::loncommon::lonhttpdurl('/adm/lonIcons/lonlogos.gif'); |
$r->print (<<ENDNOREDIRTWO); |
$r->print (<<ENDNOREDIRTWO); |
$start_page |
$start_page |
<img align="right" src="$logo" /> |
<img align="right" src="$logo" /> |
<b>$nofeed</b> |
<b>$nofeed</b> |
<br /> |
<br /> |
|
$form_for_modal |
$end_page |
$end_page |
ENDNOREDIRTWO |
ENDNOREDIRTWO |
} |
} |
|
|
sub screen_header { |
sub screen_header { |
my ($feedurl,$symb,$group) = @_; |
my ($feedurl,$symb,$group) = @_; |
my $crscontent = &mt('Question/Comment/Feedback about course content'); |
my %default = &Apache::lonlocal::texthash ( |
my $crspolicy = &mt('Question/Comment/Feedback about course policy'); |
question => 'Question about resource content', |
|
comment => 'Question/Comment/Feedback about course content', |
|
policy => 'Question/Comment/Feedback about course policy', |
|
); |
my $contribdisc = &mt('Contribution to course discussion of resource'); |
my $contribdisc = &mt('Contribution to course discussion of resource'); |
my $anoncontrib = &mt('Anonymous contribution to course discussion of resource'); |
my $anoncontrib = &mt('Anonymous contribution to course discussion of resource'); |
my $namevis = &mt('name only visible to course faculty'); |
my $namevis = &mt('name only visible to course faculty'); |
Line 2890 sub screen_header {
|
Line 3001 sub screen_header {
|
if ($env{'request.course.id'}) { |
if ($env{'request.course.id'}) { |
$crstype = &Apache::loncommon::course_type(); |
$crstype = &Apache::loncommon::course_type(); |
if ($crstype eq 'Community') { |
if ($crstype eq 'Community') { |
$crscontent = &mt('Question/Comment/Feedback about community content'); |
$default{'comment'} = &mt('Question/Comment/Feedback about community content'); |
$crspolicy = &mt('Question/Comment/Feedback about community policy'); |
$default{'policy'} = &mt('Question/Comment/Feedback about community policy'); |
$contribdisc = &mt('Contribution to community discussion of resource'); |
$contribdisc = &mt('Contribution to community discussion of resource'); |
$anoncontrib = &mt('Anonymous contribution to community discussion of resource'); |
$anoncontrib = &mt('Anonymous contribution to community discussion of resource'); |
$namevis = &mt('name only visible to community facilitators'); |
$namevis = &mt('name only visible to community facilitators'); |
Line 2899 sub screen_header {
|
Line 3010 sub screen_header {
|
} |
} |
my $msgoptions=''; |
my $msgoptions=''; |
my $discussoptions=''; |
my $discussoptions=''; |
|
my $checkradio = ''; |
|
my $blockblog; |
|
my (%fdbkoptions,%discoptions); |
unless (($env{'form.replydisc'}) || ($env{'form.editdisc'})) { |
unless (($env{'form.replydisc'}) || ($env{'form.editdisc'})) { |
if (($feedurl=~/^\/res\//) && ($feedurl!~/^\/res\/adm/) && ($env{'user.adv'})) { |
if (($feedurl=~/^\/res\//) && ($feedurl!~/^\/res\/adm/) && ($env{'user.adv'})) { |
$msgoptions= |
$fdbkoptions{'author'} = 1; |
'<label><input type="radio" name="discuss" value="author" /> '. |
} |
&mt('Feedback to resource author').'</label><br />'; |
if (&feedback_available(1)) { |
} |
$fdbkoptions{'question'} = 1; |
my %optionhash=(); |
} |
foreach my $type ('question','comment','policy') { |
if (&feedback_available(0,1)) { |
$optionhash{$type}=$env{'course.'.$env{'request.course.id'}.'.'.$type.'.email.text'}; |
$fdbkoptions{'course'} = 1; |
} |
} |
if (&feedback_available(1)) { |
if (&feedback_available(0,0,1)) { |
$msgoptions.= |
$fdbkoptions{'policy'} = 1; |
'<label><input type="radio" name="discuss" value="question" /> '. |
} |
($optionhash{'question'}?$optionhash{'question'}:&mt('Question about resource content')).'</label><br />'; |
|
} |
|
if (&feedback_available(0,1)) { |
|
$msgoptions.= |
|
'<label><input type="radio" name="discuss" value="course" /> '. |
|
($optionhash{'comment'}?$optionhash{'comment'}:$crscontent). |
|
'</label><br />'; |
|
} |
|
if (&feedback_available(0,0,1)) { |
|
$msgoptions.= |
|
'<label><input type="radio" name="discuss" value="policy" /> '. |
|
($optionhash{'policy'}?$optionhash{'policy'}:$crspolicy). |
|
'</label><br />'; |
|
} |
|
} |
} |
if (($env{'request.course.id'}) && (!$env{'form.sendmessageonly'})) { |
if (($env{'request.course.id'}) && (!$env{'form.sendmessageonly'})) { |
my ($blocked,$blocktext) = &Apache::loncommon::blocking_status('boards'); |
my ($blocked,$blocktext) = &Apache::loncommon::blocking_status('boards'); |
my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'}; |
my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'}; |
my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'}; |
my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'}; |
my $realsymb = &get_realsymb($symb); |
my $realsymb = &get_realsymb($symb); |
if (!$blocked && &discussion_open(undef,$realsymb) && |
if (!$blocked && &discussion_open(undef,$realsymb) && |
(&Apache::lonnet::allowed('pch', |
(&Apache::lonnet::allowed('pch', |
$env{'request.course.id'}. |
$env{'request.course.id'}. |
($env{'request.course.sec'}?'/'.$env{'request.course.sec'}:'')) || |
($env{'request.course.sec'}?'/'.$env{'request.course.sec'}:'')) || |
(($group ne '') && ($symb =~ m{^bulletin___\d+___adm/wrapper/adm/\Q$cdom\E/\Q$cnum\E/\d+/bulletinboard$}) && (&check_group_priv($group,'pgd') eq 'ok')))) { |
(($group ne '') && ($symb =~ m{^bulletin___\d+___adm/wrapper/adm/\Q$cdom\E/\Q$cnum\E/\d+/bulletinboard$}) && (&check_group_priv($group,'pgd') eq 'ok')))) { |
$discussoptions='<label><input type="radio" name="discuss" value="nonanon" checked="checked" /> '. |
$discoptions{'nonanon'} = 1; |
$contribdisc. |
if (&Apache::lonnet::allowed('pac',$env{'request.course.id'}. |
'</label><br /><label><input type="radio" name="discuss" value="anon" /> '. |
($env{'request.course.sec'}?'/'.$env{'request.course.sec'}:''))) { |
$anoncontrib. |
$discoptions{'anon'} = 1; |
' <i>('.$namevis.')</i></label> '. |
} |
'<a href="/adm/preferences?action=changescreenname">'.&mt('Change Screenname').'</a>'; |
$blockblog = &Apache::loncommon::blocking_status('blogs'); |
my $blockblog = &Apache::loncommon::blocking_status('blogs'); |
} |
if (!$blockblog) { |
} |
$discussoptions.= &add_blog_checkbox($crstype); |
my $total = scalar(keys(%fdbkoptions)) + scalar(keys(%discoptions)); |
} |
return if (!$total); |
|
if ($total == 1) { |
|
$checkradio = ' checked="checked"'; |
|
} |
|
if (keys(%fdbkoptions)) { |
|
if ($fdbkoptions{'author'}) { |
|
$msgoptions = |
|
'<label><input type="radio" name="discuss" value="author"'.$checkradio.' /> '. |
|
&mt('Feedback to resource author').'</label><br />'; |
|
} |
|
foreach my $item ('question','comment','policy') { |
|
my $type = $item; |
|
if ($item eq 'comment') { |
|
$type = 'course'; |
|
} |
|
my $optionhash=$env{'course.'.$env{'request.course.id'}.'.'.$item.'.email.text'}; |
|
if ($fdbkoptions{$type}) { |
|
$msgoptions .= |
|
'<label><input type="radio" name="discuss" value="'.$type.'"'.$checkradio.' />'. |
|
($optionhash?$optionhash:$default{$item}).'</label><br />'; |
|
} |
|
} |
|
} |
|
if (keys(%discoptions)) { |
|
if ($discoptions{'nonanon'}) { |
|
$discussoptions='<label><input type="radio" name="discuss" value="nonanon" checked="checked" /> '. |
|
$contribdisc. |
|
'</label>'; |
|
} |
|
if ($discoptions{'anon'}) { |
|
$discussoptions .= '<br /><label><input type="radio" name="discuss" value="anon"'.$checkradio.' /> '. |
|
$anoncontrib. |
|
' <i>('.$namevis.')</i></label> '. |
|
'<a href="/adm/preferences?action=changescreenname">'.&mt('Change Screenname').'</a>'; |
|
} |
|
if (!$blockblog) { |
|
$discussoptions.= &add_blog_checkbox($crstype); |
} |
} |
} |
} |
if ($msgoptions) { |
if ($msgoptions) { |
Line 3034 sub feedback_available {
|
Line 3170 sub feedback_available {
|
} |
} |
|
|
sub send_msg { |
sub send_msg { |
my ($title,$feedurl,$email,$citations,$attachmenturl,$symb,%to)=@_; |
my ($title,$feedurl,$email,$citations,$attachmenturl,$symb,$clientip,%to)=@_; |
my $status=''; |
my $status=''; |
my $sendsomething=0; |
my $sendsomething=0; |
|
my $delay; |
|
my $senthide; |
|
my %setters; |
|
my ($startblock,$endblock,$triggerblock,$by_ip,$blockdom) = |
|
&Apache::loncommon::blockcheck(\%setters,'com',$clientip); |
|
if ($by_ip) { |
|
$senthide = 1; |
|
} |
my $restitle = &get_resource_title($symb,$feedurl); |
my $restitle = &get_resource_title($symb,$feedurl); |
if ($title=~/^Error/) { $title=&mt('Feedback').': '.$title; } |
if ($title=~/^Error/) { $title=&mt('Feedback').': '.$title; } |
unless ($title=~/\w/) { $title=&mt('Feedback'); } |
unless ($title=~/\w/) { $title=&mt('Feedback'); } |
Line 3050 sub send_msg {
|
Line 3194 sub send_msg {
|
} else { |
} else { |
unless (&Apache::lonmsg::user_normal_msg($user,$domain, |
unless (&Apache::lonmsg::user_normal_msg($user,$domain, |
$title.' ['.$restitle.']',$email,$citations,$feedurl, |
$title.' ['.$restitle.']',$email,$citations,$feedurl, |
$attachmenturl,undef,undef,$symb,$restitle)=~/ok/) { |
$attachmenturl,undef,undef,$symb,$restitle,undef, |
|
undef,undef,undef,$senthide)=~/ok/) { |
$status.='<br />'.&mt('Error sending message to').' '.$key.'<br />'; |
$status.='<br />'.&mt('Error sending message to').' '.$key.'<br />'; |
} else { |
} else { |
$sendsomething++; |
$sendsomething++; |
Line 3058 sub send_msg {
|
Line 3203 sub send_msg {
|
} |
} |
} |
} |
} |
} |
|
if ($sendsomething && $senthide) { |
|
if ($by_ip) { |
|
my $showdom = &Apache::lonnet::domain($blockdom); |
|
if ($showdom eq '') { |
|
$showdom = $blockdom; |
|
} |
|
$delay = 4; |
|
$status.='<br />'.&mt("Message content of feedback you send to instructor(s) from your current IP address: [_1] will be unavailable in your 'Sent' folder.",$clientip). |
|
'<ul><li>'. |
|
&mt('This does not affect delivery of feedback to your instructor(s).'). |
|
'</li><li>'. |
|
&mt('Note: some types of communication functionality are 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><br />'; |
|
} |
|
} |
|
|
# Records of number of feedback messages are kept under the "symb" called "_feedback" |
# Records of number of feedback messages are kept under the "symb" called "_feedback" |
# There are two entries within the framework of a course: |
# There are two entries within the framework of a course: |
Line 3075 sub send_msg {
|
Line 3238 sub send_msg {
|
} |
} |
} |
} |
} |
} |
return ($status,$sendsomething); |
return ($status,$sendsomething,$delay); |
} |
} |
|
|
# Routine to get the complete feedback records |
# Routine to get the complete feedback records |
Line 3165 sub adddiscuss {
|
Line 3328 sub adddiscuss {
|
if (($symb) && ($email)) { |
if (($symb) && ($email)) { |
my $now = time; |
my $now = time; |
if ($env{'form.editdisc'}) { |
if ($env{'form.editdisc'}) { |
$contrib{'ip'}=$ENV{'REMOTE_ADDR'}; |
$contrib{'ip'}=&Apache::lonnet::get_requestor_ip(); |
$contrib{'host'}=$Apache::lonnet::perlvar{'lonHostID'}; |
$contrib{'host'}=$Apache::lonnet::perlvar{'lonHostID'}; |
$contrib{'timestamp'} = $now; |
$contrib{'timestamp'} = $now; |
$contrib{'history'} = ''; |
$contrib{'history'} = ''; |
Line 3542 END
|
Line 3705 END
|
$r->print('<b>'.$subject.'</b>'); |
$r->print('<b>'.$subject.'</b>'); |
$r->print(&Apache::lonhtmlcommon::row_closure()); |
$r->print(&Apache::lonhtmlcommon::row_closure()); |
$r->print(&Apache::lonhtmlcommon::row_title($lt{'adda'})); |
$r->print(&Apache::lonhtmlcommon::row_title($lt{'adda'})); |
$r->print('<input type="file" name="addnewattach" class="flUpload" />' |
$r->print('<input type="file" name="addnewattach" class="LC_flUpload" />' |
.'<input type="hidden" id="free_space" value="131072" />' |
.'<input type="hidden" id="LC_free_space" value="131072" />' |
.'<input type="button" name="upload" value="Upload" ' |
.'<input type="button" name="upload" value="Upload" ' |
.'onclick="this.form.submit()" /> '.$attachmaxtext); |
.'onclick="this.form.submit()" /> '.$attachmaxtext); |
if(($idx)||(ref($currnewattach) eq 'ARRAY') && (@{$currnewattach} > 0)){ |
if(($idx)||(ref($currnewattach) eq 'ARRAY') && (@{$currnewattach} > 0)){ |
Line 3886 sub handler {
|
Line 4049 sub handler {
|
my $symb=(split(/\:\:\:/,$env{'form.editdisc'}))[0]; |
my $symb=(split(/\:\:\:/,$env{'form.editdisc'}))[0]; |
my ($map,$id,$url)=&Apache::lonnet::decode_symb($symb); |
my ($map,$id,$url)=&Apache::lonnet::decode_symb($symb); |
my $feedurl=&Apache::lonnet::clutter($url); |
my $feedurl=&Apache::lonnet::clutter($url); |
&redirect_back($r,$feedurl,&mt('Editing not permitted').'<br />', '0','0','','',$env{'form.previous'},undef,undef,undef, |
&redirect_back($r,$feedurl,&mt('Editing not permitted').'<br />', |
undef,undef,undef,$group); |
'0','0','','',$env{'form.previous'},undef,undef,undef, |
|
undef,undef,undef,$group); |
return OK; |
return OK; |
} |
} |
} |
} |
Line 4030 sub handler {
|
Line 4194 sub handler {
|
'only_body' => 1, |
'only_body' => 1, |
'add_entries' => \%onload}); |
'add_entries' => \%onload}); |
my $end_page = &Apache::loncommon::end_page(); |
my $end_page = &Apache::loncommon::end_page(); |
|
my $windowname = 'loncapaclient'; |
|
if ($env{'request.lti.login'}) { |
|
$windowname .= 'lti'; |
|
} |
$r->print (<<ENDREDIR); |
$r->print (<<ENDREDIR); |
$start_page |
$start_page |
<img align="right" src="$logo" /> |
<img align="right" src="$logo" /> |
$textline |
$textline |
<form name="reldt" action="$feedurl" target="loncapaclient"> |
<form name="reldt" action="$feedurl" target="$windowname"> |
</form> |
</form> |
<br /> |
<br /> |
$end_page |
$end_page |
Line 4094 ENDREDIR
|
Line 4262 ENDREDIR
|
unless (($seehidden) || (&editing_allowed($env{'form.hide'},$group))) { |
unless (($seehidden) || (&editing_allowed($env{'form.hide'},$group))) { |
&redirect_back($r,$feedurl,&mt('Hiding not permitted').'<br />', |
&redirect_back($r,$feedurl,&mt('Hiding not permitted').'<br />', |
'0','0','','',$env{'form.previous'},'','','','', |
'0','0','','',$env{'form.previous'},'','','','', |
undef,undef,$group,); |
undef,undef,$group); |
return OK; |
return OK; |
} |
} |
|
|
Line 4526 ENDREDIR
|
Line 4694 ENDREDIR
|
$r->internal_redirect('/adm/ambiguous'); |
$r->internal_redirect('/adm/ambiguous'); |
return OK; |
return OK; |
} |
} |
|
if ($feedurl eq '') { |
|
&Apache::loncommon::content_type($r,'text/html'); |
|
$r->send_http_header; |
|
&no_redirect_back($r); |
|
return OK; |
|
} |
# Go ahead with feedback, no ambiguous reference |
# Go ahead with feedback, no ambiguous reference |
unless ( |
unless ( |
( |
( |
Line 4535 ENDREDIR
|
Line 4709 ENDREDIR
|
($env{'request.course.id'} && ($feedurl!~m:^/adm:)) |
($env{'request.course.id'} && ($feedurl!~m:^/adm:)) |
|| |
|| |
($env{'request.course.id'} && ($symb=~/^bulletin\_\_\_/)) |
($env{'request.course.id'} && ($symb=~/^bulletin\_\_\_/)) |
|
|| |
|
(($env{'request.course.id'}) && ($feedurl =~ /ext\.tool$/)) |
) { |
) { |
&Apache::loncommon::content_type($r,'text/html'); |
&Apache::loncommon::content_type($r,'text/html'); |
$r->send_http_header; |
$r->send_http_header; |
# Unable to give feedback |
# Unable to give feedback |
&Apache::lonenc::check_encrypt(\$feedurl); |
&Apache::lonenc::check_encrypt(\$feedurl); |
&no_redirect_back($r,$feedurl); |
&no_redirect_back($r,$feedurl,2); |
return OK; |
return OK; |
} |
} |
# --------------------------------------------------- Print login screen header |
# --------------------------------------------------- Print login screen header |
Line 4560 ENDREDIR
|
Line 4736 ENDREDIR
|
if ($options) { |
if ($options) { |
&mail_screen($r,$feedurl,$options,$symb,$attachmax{'text'}); |
&mail_screen($r,$feedurl,$options,$symb,$attachmax{'text'}); |
} else { |
} else { |
&fail_redirect($r,$feedurl); |
&fail_redirect($r,$feedurl,2); |
} |
} |
return OK; |
return OK; |
} |
} |
Line 4626 ENDREDIR
|
Line 4802 ENDREDIR
|
my ($typestyle,%to) = &Apache::lonmsg::decide_receiver($feedurl); |
my ($typestyle,%to) = &Apache::lonmsg::decide_receiver($feedurl); |
|
|
# Actually send mail |
# Actually send mail |
my ($status,$numsent)=&send_msg(&clear_out_html($env{'form.subject'}), |
my $clientip = &Apache::lonnet::get_requestor_ip($r); |
$feedurl,$email,$citations, |
my ($status,$numsent,$delay)=&send_msg(&clear_out_html($env{'form.subject'}), |
$attachmenturl,$usersymb,%to); |
$feedurl,$email,$citations, |
|
$attachmenturl,$usersymb,$clientip,%to); |
|
|
# Discussion? Store that. |
# Discussion? Store that. |
my $numpost=0; |
my $numpost=0; |
Line 4636 ENDREDIR
|
Line 4813 ENDREDIR
|
&& $env{'form.discuss'} !~ /^(?:author|question|course|policy)/) |
&& $env{'form.discuss'} !~ /^(?:author|question|course|policy)/) |
|| $env{'form.anondiscuss'} ne '') { |
|| $env{'form.anondiscuss'} ne '') { |
my $subject = &clear_out_html($env{'form.subject'}); |
my $subject = &clear_out_html($env{'form.subject'}); |
my $anonmode=($env{'form.discuss'} eq 'anon' || $env{'form.anondiscuss'} ); |
my $anonmode; |
|
if (&Apache::lonnet::allowed('pac',$env{'request.course.id'}. |
|
($env{'request.course.sec'}?'/'.$env{'request.course.sec'}:''))) { |
|
$anonmode=($env{'form.discuss'} eq 'anon' || $env{'form.anondiscuss'} ); |
|
} |
$typestyle.=&adddiscuss($symb,$message,$anonmode,$attachmenturl, |
$typestyle.=&adddiscuss($symb,$message,$anonmode,$attachmenturl, |
$subject,$group); |
$subject,$group); |
$numpost++; |
$numpost++; |
Line 4659 ENDREDIR
|
Line 4840 ENDREDIR
|
} |
} |
|
|
# Receipt screen and redirect back to where came from |
# Receipt screen and redirect back to where came from |
&redirect_back($r,$feedurl,$typestyle,$numsent,$numpost,$blog,$status,$env{'form.previous'},undef,undef,undef,undef,undef,undef,$group,$toolarge); |
&redirect_back($r,$feedurl,$typestyle,$numsent,$numpost,$blog,$status,$env{'form.previous'}, |
|
undef,undef,undef,undef,undef,undef,$group,$toolarge,$delay); |
} |
} |
return OK; |
return OK; |
} |
} |