version 1.290.2.2, 2010/08/14 18:14:29
|
version 1.304, 2010/11/20 01:07:05
|
Line 58 sub discussion_open {
|
Line 58 sub discussion_open {
|
return 1; |
return 1; |
} |
} |
# It was not explicitly open, check if the problem is available. |
# It was not explicitly open, check if the problem is available. |
# If the problem is not available, close the discussion |
# If the problem is not available, close the discussion |
if (defined($status) && |
if (defined($status) && |
!($status eq 'CAN_ANSWER' || $status eq 'CANNOT_ANSWER' |
!($status eq 'CAN_ANSWER' || $status eq 'CANNOT_ANSWER' |
|| $status eq 'OPEN')) { |
|| $status eq 'OPEN')) { |
return 0; |
return 0; |
} |
} |
# The problem is available, but check if the instructor explictly closed discussion |
# The problem is available, but check if the instructor explictly closed discussion |
if (defined($close) && $close ne '' && $close < time) { |
if (defined($close) && $close ne '' && $close < time) { |
return 0; |
return 0; |
} |
} |
return 1; |
return 1; |
} |
} |
Line 282 sub list_discussion {
|
Line 282 sub list_discussion {
|
my %anonhash=(); |
my %anonhash=(); |
my $anoncnt=0; |
my $anoncnt=0; |
my $target=''; |
my $target=''; |
unless ($env{'browser.interface'} eq 'textual' || |
|
$env{'environment.remote'} eq 'off' ) { |
|
$target='target="LONcom"'; |
|
} |
|
|
|
my $now = time; |
my $now = time; |
$discinfo{$visitkey} = $visit; |
$discinfo{$visitkey} = $visit; |
Line 425 imscp_v1p1.xsd http://www.imsglobal.org/
|
Line 421 imscp_v1p1.xsd http://www.imsglobal.org/
|
} |
} |
} else { |
} else { |
my $colspan=$maxdepth+1; |
my $colspan=$maxdepth+1; |
#JW |
|
$discussion.= &Apache::lonhtmlcommon::scripttag(qq| |
$discussion.= &Apache::lonhtmlcommon::scripttag(qq| |
function verifydelete (caller,symb,idx,newflag,previous,groupparm) { |
function verifydelete (caller,symb,idx,newflag,previous,groupparm) { |
var symbparm = symb+':::'+idx |
var symbparm = symb+':::'+idx |
Line 727 END
|
Line 722 END
|
$attachnum += @{$currnewattach}; |
$attachnum += @{$currnewattach}; |
} |
} |
} |
} |
if (&discussion_open($status) && ($outputtarget ne 'tex')) { |
if ((&discussion_open($status)) && ($outputtarget ne 'tex')) { |
if (($group ne '') && ($mode eq 'board')) { |
if (($group ne '') && ($mode eq 'board')) { |
if (&check_group_priv($group,'pgd') eq 'ok') { |
if ((&check_group_priv($group,'pgd') eq 'ok') && |
|
($ressymb =~ m{^bulletin___\d+___adm/wrapper/adm/\Q$cdom\E/\Q$cnum\E/\d+/bulletinboard$})) { |
$discussion .= |
$discussion .= |
&postingform_display($mode,$ressymb,$now,$subject, |
&postingform_display($mode,$ressymb,$now,$subject, |
$comment,$outputtarget,$attachnum, |
$comment,$outputtarget,$attachnum, |
Line 737 END
|
Line 733 END
|
$group,$crstype); |
$group,$crstype); |
} |
} |
} else { |
} else { |
$discussion.= |
if (&Apache::lonnet::allowed('pch',$env{'request.course.id'}. |
&postingform_display($mode,$ressymb,$now,$subject, |
($env{'request.course.sec'}?'/'.$env{'request.course.sec'}:''))) { |
$comment,$outputtarget,$attachnum, |
|
$currnewattach,$currdelold,'',$crstype); |
$discussion.= |
|
&postingform_display($mode,$ressymb,$now,$subject, |
|
$comment,$outputtarget,$attachnum, |
|
$currnewattach,$currdelold,'',$crstype); |
|
} else { |
|
$discussion.= '<span class="LC_feedback_link">'. |
|
&mt('This discussion is closed.').'</span>'; |
|
} |
} |
} |
} |
} |
|
if (!(&discussion_open($status)) && ($outputtarget ne 'tex')) { |
|
$discussion.= '<span class="LC_feedback_link">'. |
|
&mt('This discussion is closed.').'</span>'; |
|
} |
} elsif ($outputtarget ne 'tex') { |
} elsif ($outputtarget ne 'tex') { |
$discussion.='<div class="LC_feedback_link">'; |
$discussion.='<div class="LC_feedback_link">'; |
if (&discussion_open($status) && |
if (&discussion_open($status) && |
&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'}:''))) { |
$discussion.= &send_feedback_link($ressymb,$target); |
$discussion.= &send_feedback_link($ressymb,$target); |
if ($env{'request.role.adv'}) { |
if ($env{'request.role.adv'}) { |
my $close = &Apache::lonnet::EXT('resource.0.discussend',$ressymb); |
my $close = &Apache::lonnet::EXT('resource.0.discussend',$ressymb); |
if (defined($close) && $close ne '' && $close < time) { |
if (defined($close) && $close ne '' && $close < time) { |
Line 757 END
|
Line 764 END
|
&Apache::lonnet::plaintext('st',$crstype)); |
&Apache::lonnet::plaintext('st',$crstype)); |
} |
} |
} |
} |
} else { |
} else { |
$discussion.= '<span class="LC_feedback_link">'.&mt('This discussion is closed.').'</span>'; |
$discussion.= '<span class="LC_feedback_link">'.&mt('This discussion is closed.').'</span>'; |
} |
} |
$discussion.= &send_message_link($ressymb). |
$discussion.= &send_message_link($ressymb).'</div>'; |
'</div>'; |
|
} |
} |
return $discussion; |
return $discussion; |
} |
} |
Line 793 sub action_links_bar {
|
Line 799 sub action_links_bar {
|
'<table width="100%" class="LC_disc_action_table"><tr>'. |
'<table width="100%" class="LC_disc_action_table"><tr>'. |
'<td class="LC_disc_action_left">'; |
'<td class="LC_disc_action_left">'; |
my $escsymb=&escape($ressymb); |
my $escsymb=&escape($ressymb); |
if ($visible>2) { |
if ($visible) { |
$discussion .= '<a href="/adm/feedback?cmd=threadedon&symb='.$escsymb; |
$discussion .= '<a href="/adm/feedback?cmd=threadedon&symb='.$escsymb; |
if ($newpostsflag) { |
if ($newpostsflag) { |
$discussion .= '&previous='.$prevread; |
$discussion .= '&previous='.$prevread; |
Line 856 sub postingform_display {
|
Line 862 sub postingform_display {
|
if (&Apache::lonhtmlcommon::htmlareabrowser()) { |
if (&Apache::lonhtmlcommon::htmlareabrowser()) { |
$postingform = &Apache::lonhtmlcommon::htmlareaselectactive(); |
$postingform = &Apache::lonhtmlcommon::htmlareaselectactive(); |
$textareaclass = 'class="LC_richDefaultOff"'; |
$textareaclass = 'class="LC_richDefaultOff"'; |
|
if ($env{'request.course.id'}) { |
|
unless (($env{'course.'.$env{'request.course.id'}.'.allow_limited_html_in_feedback'} =~ /^\s*yes\s*$/i) || ($env{'form.sendmessageonly'})) { |
|
undef($textareaclass); |
|
} |
|
} |
} |
} |
$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'}" /> |
Line 865 sub postingform_display {
|
Line 876 sub postingform_display {
|
<br /><a name="newpost"></a> |
<br /><a name="newpost"></a> |
<font size="1">$lt{'note'}</font><br /> |
<font size="1">$lt{'note'}</font><br /> |
<b>$lt{'title'}:</b> <input type="text" name="subject" value="$subject" size="30" /><br /><br /> |
<b>$lt{'title'}:</b> <input type="text" name="subject" value="$subject" size="30" /><br /><br /> |
<textarea name="comment" cols="80" rows="14"id="comment" $textareaclass>$comment</textarea> |
<textarea name="comment" cols="80" rows="14" id="comment" $textareaclass>$comment</textarea> |
ENDDISCUSS |
ENDDISCUSS |
if ($env{'form.origpage'}) { |
if ($env{'form.origpage'}) { |
$postingform .= '<input type="hidden" name="origpage" value="'. |
$postingform .= '<input type="hidden" name="origpage" value="'. |
Line 888 ENDDISCUSS
|
Line 899 ENDDISCUSS
|
} |
} |
$postingform .= "</form>\n"; |
$postingform .= "</form>\n"; |
$postingform .= &generate_attachments_button('',$attachnum,$ressymb, |
$postingform .= &generate_attachments_button('',$attachnum,$ressymb, |
$now,$currnewattach, |
$now,$currnewattach, |
$currdelold,'',$mode, |
$currdelold,'',$mode, |
$blockblog); |
$blockblog); |
if ((ref($currnewattach) eq 'ARRAY') && (@{$currnewattach} > 0)) { |
if ((ref($currnewattach) eq 'ARRAY') && (@{$currnewattach} > 0)) { |
$newattachmsg = '<br /><b>'.$lt{'newa'}.'</b><br />'; |
$newattachmsg = '<br /><b>'.$lt{'newa'}.'</b><br />'; |
if (@{$currnewattach} > 1) { |
if (@{$currnewattach} > 1) { |
$newattachmsg .= '<ol>'; |
$newattachmsg .= '<ol>'; |
foreach my $item (@{$currnewattach}) { |
foreach my $item (@{$currnewattach}) { |
$item =~ m#.*/([^/]+)$#; |
$item =~ m#.*/([^/]+)$#; |
$newattachmsg .= '<li><a href="'.$item.'">'.$1.'</a></li>'."\n"; |
$newattachmsg .= '<li><a href="'.$item.'">'.$1.'</a></li>'."\n"; |
} |
} |
$newattachmsg .= '</ol>'."\n"; |
$newattachmsg .= '</ol>'."\n"; |
} else { |
} else { |
$$currnewattach[0] =~ m#.*/([^/]+)$#; |
$$currnewattach[0] =~ m#.*/([^/]+)$#; |
$newattachmsg .= '<a href="'.$$currnewattach[0].'">'.$1.'</a><br />'."\n"; |
$newattachmsg .= '<a href="'.$$currnewattach[0].'">'.$1.'</a><br />'."\n"; |
} |
} |
} |
} |
$postingform .= $newattachmsg; |
$postingform .= $newattachmsg; |
$postingform .= &generate_preview_button(); |
$postingform .= &generate_preview_button(); |
Line 927 sub build_posting_display {
|
Line 938 sub build_posting_display {
|
if ((@{$grouppick} == 0) || (grep(/^all$/,@{$grouppick}))) { |
if ((@{$grouppick} == 0) || (grep(/^all$/,@{$grouppick}))) { |
$skip_group_check = 1; |
$skip_group_check = 1; |
} |
} |
|
my (%deletions,%hiddens); |
|
if ($contrib{'deleted'}) { |
|
my $deleted = $contrib{'deleted'}; |
|
$deleted =~ s/^\.//; |
|
$deleted =~ s/\.$//; |
|
%deletions = map { $_ => 1 } (split(/\.\./,$deleted)); |
|
} |
|
if ($contrib{'hidden'}) { |
|
my $hidden = $contrib{'hidden'}; |
|
$hidden =~ s/^\.//; |
|
$hidden =~ s/\.$//; |
|
%hiddens = map { $_ => 1 } (split(/\.\./,$hidden)); |
|
} |
if ($contrib{'version'}) { |
if ($contrib{'version'}) { |
my $oldest = $contrib{'1:timestamp'}; |
my $oldest = $contrib{'1:timestamp'}; |
if ($prevread eq '0') { |
if ($prevread eq '0') { |
Line 940 sub build_posting_display {
|
Line 964 sub build_posting_display {
|
} |
} |
for (my $id=1;$id<=$contrib{'version'};$id++) { |
for (my $id=1;$id<=$contrib{'version'};$id++) { |
my $idx=$id; |
my $idx=$id; |
|
next if ($contrib{$idx.':deleted'}); |
|
next if ($contrib{$idx.':hidden'}); |
my $posttime = $contrib{$idx.':timestamp'}; |
my $posttime = $contrib{$idx.':timestamp'}; |
if ($prevread <= $posttime) { |
if ($prevread <= $posttime) { |
$$newpostsflag = 1; |
$$newpostsflag = 1; |
} |
} |
my $hidden=($contrib{'hidden'}=~/\.$idx\./); |
|
my $studenthidden=($contrib{'studenthidden'}=~/\.$idx\./); |
my $studenthidden=($contrib{'studenthidden'}=~/\.$idx\./); |
my $deleted=($contrib{'deleted'}=~/\.$idx\./); |
|
my $origindex='0.'; |
my $origindex='0.'; |
my $numoldver=0; |
my $numoldver=0; |
if ($contrib{$idx.':replyto'}) { |
if ($contrib{$idx.':replyto'}) { |
Line 970 sub build_posting_display {
|
Line 994 sub build_posting_display {
|
} else { |
} else { |
$$replies[$$depth[$idx]]=1; |
$$replies[$$depth[$idx]]=1; |
} |
} |
unless ((($hidden) && (!$seeid)) || ($deleted)) { |
unless ((($hiddens{$idx}) && (!$seeid)) || ($deletions{$idx})) { |
$$visible++; |
$$visible++; |
if ($contrib{$idx.':history'}) { |
if ($contrib{$idx.':history'}) { |
if ($contrib{$idx.':history'} =~ /:/) { |
if ($contrib{$idx.':history'} =~ /:/) { |
Line 1004 sub build_posting_display {
|
Line 1028 sub build_posting_display {
|
$message.=$attachtxt{$numoldver}; |
$message.=$attachtxt{$numoldver}; |
$subject=$subjects{$numoldver}; |
$subject=$subjects{$numoldver}; |
if ($message) { |
if ($message) { |
if ($hidden) { |
if ($hiddens{$idx}) { |
$message='<font color="#888888">'.$message.'</font>'; |
$message='<font color="#888888">'.$message.'</font>'; |
if ($studenthidden) { |
if ($studenthidden) { |
$message .='<br /><br />Deleted by poster (student).'; |
$message .='<br /><br />Deleted by poster (student).'; |
Line 1086 sub build_posting_display {
|
Line 1110 sub build_posting_display {
|
} |
} |
} |
} |
} |
} |
if ($seeid) { |
if ($seeid) { |
if ($hidden) { |
if ($hiddens{$idx}) { |
unless ($studenthidden) { |
unless ($studenthidden) { |
$sender.=' <a href="/adm/feedback?unhide='. |
$sender.=' <a href="/adm/feedback?unhide='. |
$escsymb.':::'.$idx; |
$escsymb.':::'.$idx; |
if ($$newpostsflag) { |
if ($$newpostsflag) { |
$sender .= '&previous='.$prevread; |
$sender .= '&previous='.$prevread; |
} |
} |
Line 1098 sub build_posting_display {
|
Line 1122 sub build_posting_display {
|
} |
} |
} else { |
} else { |
$sender.=' <a href="/adm/feedback?hide='. |
$sender.=' <a href="/adm/feedback?hide='. |
$escsymb.':::'.$idx; |
$escsymb.':::'.$idx; |
if ($$newpostsflag) { |
if ($$newpostsflag) { |
$sender .= '&previous='.$prevread; |
$sender .= '&previous='.$prevread; |
} |
} |
Line 1111 sub build_posting_display {
|
Line 1135 sub build_posting_display {
|
$sender .= &mt('Delete').'</a>'; |
$sender .= &mt('Delete').'</a>'; |
} |
} |
} |
} |
} else { |
} else { |
if ($screenname) { |
if ($screenname) { |
$sender='<i>'.$screenname.'</i>'; |
$sender='<i>'.$screenname.'</i>'; |
} else { |
} else { |
Line 1138 sub build_posting_display {
|
Line 1162 sub build_posting_display {
|
} |
} |
} |
} |
if ($outputtarget ne 'tex') { |
if ($outputtarget ne 'tex') { |
if (&discussion_open($status)) { |
if (&discussion_open($status)) { |
if (($group ne '') && |
if (($group ne '') && |
(&check_group_priv($group,'pgd') eq 'ok')) { |
(&check_group_priv($group,'pgd') eq 'ok')) { |
$sender.=' <a href="/adm/feedback?replydisc='. |
$sender.=' <a href="/adm/feedback?replydisc='. |
Line 1160 sub build_posting_display {
|
Line 1184 sub build_posting_display {
|
$sender .= '" '.$target.'>'.&mt('Reply').'</a>'; |
$sender .= '" '.$target.'>'.&mt('Reply').'</a>'; |
} |
} |
} |
} |
if ($viewgrades) { |
if ($viewgrades) { |
$vgrlink=&Apache::loncommon::submlink(&mt('Submissions'), |
$vgrlink=&Apache::loncommon::submlink(&mt('Submissions'), |
$contrib{$idx.':sendername'},$contrib{$idx.':senderdomain'},$ressymb); |
$contrib{$idx.':sendername'},$contrib{$idx.':senderdomain'},$ressymb); |
} |
} |
if ($$dischash{$readkey}=~/\.$idx\./) { |
if ($$dischash{$readkey}=~/\.$idx\./) { |
$ctlink = '<label><b>'.&mt('Mark unread').'?</b> <input type="checkbox" name="postunread_'.$idx.'" /></label>'; |
$ctlink = '<label><b>'.&mt('Mark unread').'?</b> <input type="checkbox" name="postunread_'.$idx.'" /></label>'; |
} else { |
} else { |
$ctlink = '<label><b>'.&mt('Mark read').'?</b> <input type="checkbox" name="postread_'.$idx.'" /></label>'; |
$ctlink = '<label><b>'.&mt('Mark read').'?</b> <input type="checkbox" name="postread_'.$idx.'" /></label>'; |
Line 1185 sub build_posting_display {
|
Line 1209 sub build_posting_display {
|
if ($outputtarget eq 'export') { |
if ($outputtarget eq 'export') { |
%{$$imsitems{$idx}} = (); |
%{$$imsitems{$idx}} = (); |
$$imsitems{$idx}{'isvisible'}='true'; |
$$imsitems{$idx}{'isvisible'}='true'; |
if ($hidden) { |
if ($hiddens{$idx}) { |
$$imsitems{$idx}{'isvisible'}='false'; |
$$imsitems{$idx}{'isvisible'}='false'; |
} |
} |
$$imsitems{$idx}{'title'}=$subjects{$numoldver}; |
$$imsitems{$idx}{'title'}=$subjects{$numoldver}; |
Line 1267 sub build_posting_display {
|
Line 1291 sub build_posting_display {
|
$$newitem{$idx} = 1; |
$$newitem{$idx} = 1; |
$$discussionitems[$idx] .= ' |
$$discussionitems[$idx] .= ' |
<table border="0" width="100%"> |
<table border="0" width="100%"> |
<tr><td align="left"><font color="#FF0000"><b>'.&mt('NEW').'</b></font></td>'; |
<tr><td align="left"><font color="#FF0000"><b>'.&mt('NEW').' </b></font></td>'; |
} else { |
} else { |
$$newitem{$idx} = 0; |
$$newitem{$idx} = 0; |
$$discussionitems[$idx] .= ' |
$$discussionitems[$idx] .= ' |
Line 1692 END
|
Line 1716 END
|
if (&Apache::lonhtmlcommon::htmlareabrowser()) { |
if (&Apache::lonhtmlcommon::htmlareabrowser()) { |
$textareaheader = &Apache::lonhtmlcommon::htmlareaselectactive(); |
$textareaheader = &Apache::lonhtmlcommon::htmlareaselectactive(); |
$textareaclass = 'class="LC_richDefaultOff"'; |
$textareaclass = 'class="LC_richDefaultOff"'; |
|
if ($env{'request.course.id'}) { |
|
unless (($env{'course.'.$env{'request.course.id'}.'.allow_limited_html_in_feedback'} =~ /^\s*yes\s*$/i) || ($env{'form.sendmessageonly'})) { |
|
undef($textareaclass); |
|
} |
|
} |
} |
} |
|
|
# Breadcrumbs |
# Breadcrumbs |
Line 1742 $latexHelp
|
Line 1771 $latexHelp
|
<p> |
<p> |
$lt{'title'}: <input type="text" name="subject" size="30" value="$subject" /></p> |
$lt{'title'}: <input type="text" name="subject" size="30" value="$subject" /></p> |
<p> |
<p> |
<textarea name="comment" id="comment" cols="60" rows="10" $textareaclass>$comment |
<textarea name="comment" id="comment" cols="60" rows="10" $textareaclass>$comment |
</textarea></p> |
</textarea></p> |
END |
END |
if ( ($env{'form.editdisc'}) || ($env{'form.replydisc'}) ) { |
if ( ($env{'form.editdisc'}) || ($env{'form.replydisc'}) ) { |
Line 2268 sub print_showposters {
|
Line 2297 sub print_showposters {
|
my $group = $env{'form.group'}; |
my $group = $env{'form.group'}; |
my $ressymb = &wrap_symb($symb); |
my $ressymb = &wrap_symb($symb); |
if (($group ne '') && |
if (($group ne '') && |
($ressymb =~ m|^bulletin___ \d+___adm/wrapper/adm/\Q$cdom\E/\Q$cnum\E/\d+/bulletinboard$|)) { |
($ressymb =~ m|^bulletin___\d+___adm/wrapper/adm/\Q$cdom\E/\Q$cnum\E/\d+/bulletinboard$|)) { |
if (&check_group_priv($group,'dgp') eq 'ok') { |
if (&check_group_priv($group,'dgp') eq 'ok') { |
$seeid = 1; |
$seeid = 1; |
} |
} |
Line 2542 sub redirect_back {
|
Line 2571 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 %onload; |
my %onload; |
if ($env{'environment.remote'} ne 'off') { |
|
$onload{'onload'} = |
|
"if (window.name!='loncapaclient') { this.document.reldt.submit(); self.window.close(); }"; |
|
} |
|
my $start_page= |
my $start_page= |
&Apache::loncommon::start_page('Feedback sent',undef, |
&Apache::loncommon::start_page('Feedback sent',undef, |
{'redirect' => [0,$feedurl], |
{'redirect' => [0,$feedurl], |
Line 2579 sub no_redirect_back {
|
Line 2604 sub no_redirect_back {
|
my $nofeed=&mt('Sorry, no feedback possible on this resource ...'); |
my $nofeed=&mt('Sorry, no feedback possible on this resource ...'); |
|
|
my %onload; |
my %onload; |
if ($env{'environment.remote'} ne 'off') { |
|
$onload{'onload'} = |
|
"if (window.name!='loncapaclient') { self.window.close(); }"; |
|
} |
|
|
|
my %body_options = ('only_body' => 1, |
my %body_options = ('only_body' => 1, |
'bgcolor' => '#FFFFFF', |
'bgcolor' => '#FFFFFF', |
Line 2609 ENDNOREDIRTWO
|
Line 2630 ENDNOREDIRTWO
|
} |
} |
|
|
sub screen_header { |
sub screen_header { |
my ($feedurl,$symb) = @_; |
my ($feedurl,$symb,$group) = @_; |
my $crscontent = &mt('Question/Comment/Feedback about course content'); |
my $crscontent = &mt('Question/Comment/Feedback about course content'); |
my $crspolicy = &mt('Question/Comment/Feedback about course policy'); |
my $crspolicy = &mt('Question/Comment/Feedback about course policy'); |
my $contribdisc = &mt('Contribution to course discussion of resource'); |
my $contribdisc = &mt('Contribution to course discussion of resource'); |
Line 2658 sub screen_header {
|
Line 2679 sub screen_header {
|
} |
} |
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'); |
if (!$blocked && &discussion_open(undef,$symb) && |
my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'}; |
&Apache::lonnet::allowed('pch', |
my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'}; |
$env{'request.course.id'}. |
my $realsymb = $symb; |
($env{'request.course.sec'}?'/'.$env{'request.course.sec'}:''))) { |
if ($symb=~/^bulletin___/) { |
|
my $filename=(&Apache::lonnet::decode_symb($symb))[2]; |
|
$filename=~s|^adm/wrapper/||; |
|
$realsymb=&Apache::lonnet::symbread($filename); |
|
} |
|
if (!$blocked && &discussion_open(undef,$realsymb) && |
|
(&Apache::lonnet::allowed('pch', |
|
$env{'request.course.id'}. |
|
($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')))) { |
$discussoptions='<label><input type="radio" name="discuss" value="nonanon" checked="checked" /> '. |
$discussoptions='<label><input type="radio" name="discuss" value="nonanon" checked="checked" /> '. |
$contribdisc. |
$contribdisc. |
'</label><br /><label><input type="radio" name="discuss" value="anon" /> '. |
'</label><br /><label><input type="radio" name="discuss" value="anon" /> '. |
Line 2712 sub clear_out_html {
|
Line 2742 sub clear_out_html {
|
# <BLOCKQUOTE> <DIV .*> <DIV> <IMG> <M> <SPAN> <H1> <H2> <H3> <H4> <SUB> |
# <BLOCKQUOTE> <DIV .*> <DIV> <IMG> <M> <SPAN> <H1> <H2> <H3> <H4> <SUB> |
# <SUP> <TABLE> <TR> <TD> <TH> <TBODY> |
# <SUP> <TABLE> <TR> <TD> <TH> <TBODY> |
%html=(B=>1, I=>1, P=>1, A=>1, LI=>1, OL=>1, UL=>1, EM=>1, |
%html=(B=>1, I=>1, P=>1, A=>1, LI=>1, OL=>1, UL=>1, EM=>1, |
BR=>1, TT=>1, STRONG=>1, BLOCKQUOTE=>1, PRE=>1, DIV=>1, IMG=>1, |
BR=>1, TT=>1, STRONG=>1, BLOCKQUOTE=>1, PRE=>1, DIV=>1, IMG=>1, |
M=>1, CHEM=>1, ALGEBRA=>1, SUB=>1, SUP=>1, SPAN=>1, |
M=>1, CHEM=>1, ALGEBRA=>1, SUB=>1, SUP=>1, SPAN=>1, |
H1=>1, H2=>1, H3=>1, H4=>1, H5=>1, H6=>1, |
H1=>1, H2=>1, H3=>1, H4=>1, H5=>1, H6=>1, |
TABLE=>1, TR=>1, TD=>1, TH=>1, TBODY=>1); |
TABLE=>1, TR=>1, TD=>1, TH=>1, TBODY=>1); |
} |
} |
Line 2800 sub send_msg {
|
Line 2830 sub send_msg {
|
} |
} |
|
|
sub adddiscuss { |
sub adddiscuss { |
my ($symb,$email,$anon,$attachmenturl,$subject)=@_; |
my ($symb,$email,$anon,$attachmenturl,$subject,$group)=@_; |
my $status=''; |
my $status=''; |
my $realsymb; |
my $realsymb; |
if ($symb=~/^bulletin___/) { |
if ($symb=~/^bulletin___/) { |
Line 2808 sub adddiscuss {
|
Line 2838 sub adddiscuss {
|
$filename=~s|^adm/wrapper/||; |
$filename=~s|^adm/wrapper/||; |
$realsymb=&Apache::lonnet::symbread($filename); |
$realsymb=&Apache::lonnet::symbread($filename); |
} |
} |
|
my ($cnum,$cdom); |
|
if ($env{'request.course.id'}) { |
|
$cdom = $env{'course.'.$env{'request.course.id'}.'.domain'}; |
|
$cnum = $env{'course.'.$env{'request.course.id'}.'.num'}; |
|
} |
if (&discussion_open(undef,$realsymb) && |
if (&discussion_open(undef,$realsymb) && |
&Apache::lonnet::allowed('pch',$env{'request.course.id'}. |
(&Apache::lonnet::allowed('pch',$env{'request.course.id'}. |
($env{'request.course.sec'}?'/'.$env{'request.course.sec'}:''))) { |
($env{'request.course.sec'}?'/'.$env{'request.course.sec'}:'')) || |
|
(($group ne '') && (&check_group_priv($group,'pgd') eq 'ok') && |
|
($symb =~ m{^bulletin___\d+___adm/wrapper/adm/\Q$cdom\E/\Q$cnum\E/\d+/bulletinboard$})))) { |
|
|
my %contrib=('message' => $email, |
my %contrib=('message' => $email, |
'sendername' => $env{'user.name'}, |
'sendername' => $env{'user.name'}, |
Line 3589 sub handler {
|
Line 3626 sub handler {
|
$r->send_http_header; |
$r->send_http_header; |
my $logo=&Apache::loncommon::lonhttpdurl('/adm/lonIcons/lonlogos.gif'); |
my $logo=&Apache::loncommon::lonhttpdurl('/adm/lonIcons/lonlogos.gif'); |
my %onload; |
my %onload; |
if ($env{'environment.remote'} ne 'off') { |
|
$onload{'onload'} = |
|
"if (window.name!='loncapaclient') { this.document.reldt.submit(); self.window.close(); }"; |
|
} |
|
|
|
my $start_page= |
my $start_page= |
&Apache::loncommon::start_page('New posts marked as read',undef, |
&Apache::loncommon::start_page('New posts marked as read',undef, |
Line 3859 ENDREDIR
|
Line 3892 ENDREDIR
|
return OK; |
return OK; |
} |
} |
} |
} |
my $options=&screen_header($feedurl,$symb); |
my $options=&screen_header($feedurl,$symb,$group); |
if ($options) { |
if ($options) { |
&mail_screen($r,$feedurl,$options,$symb,$attachmax{'text'}); |
&mail_screen($r,$feedurl,$options,$symb,$attachmax{'text'}); |
} else { |
} else { |
Line 3915 ENDREDIR
|
Line 3948 ENDREDIR
|
} |
} |
} |
} |
# Filter HTML out of message (could be nasty) |
# Filter HTML out of message (could be nasty) |
my $message=&clear_out_html($env{'form.comment'}); |
my $override; |
|
if ($env{'form.discuss'} =~ /^(?:author|question|course|policy)$/) { |
|
$override = 1; |
|
} |
|
my $message=&clear_out_html($env{'form.comment'},$override); |
|
|
# Assemble email |
# Assemble email |
my ($email,$citations)=&assemble_email($message,$prevattempts, |
my ($email,$citations)=&assemble_email($message,$prevattempts, |
Line 3937 ENDREDIR
|
Line 3974 ENDREDIR
|
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=($env{'form.discuss'} eq 'anon' || $env{'form.anondiscuss'} ); |
$typestyle.=&adddiscuss($symb,$message,$anonmode,$attachmenturl, |
$typestyle.=&adddiscuss($symb,$message,$anonmode,$attachmenturl, |
$subject); |
$subject,$group); |
$numpost++; |
$numpost++; |
} |
} |
|
|