version 1.297, 2010/08/07 19:23:50
|
version 1.302, 2010/09/21 04:18:50
|
Line 722 END
|
Line 722 END
|
$attachnum += @{$currnewattach}; |
$attachnum += @{$currnewattach}; |
} |
} |
} |
} |
if (&discussion_open($status)) { |
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') { |
$discussion .= |
$discussion .= |
Line 738 END
|
Line 738 END
|
$currnewattach,$currdelold,'',$crstype); |
$currnewattach,$currdelold,'',$crstype); |
} |
} |
} |
} |
} else { |
} 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'}:''))) { |
if ($outputtarget ne 'tex') { |
$discussion.= &send_feedback_link($ressymb,$target); |
$discussion.= &send_feedback_link($ressymb,$target); |
if ($env{'request.role.adv'}) { |
|
my $close = &Apache::lonnet::EXT('resource.0.discussend',$ressymb); |
|
if (defined($close) && $close ne '' && $close < time) { |
|
$discussion .= ' '.&mt('(Closed for [_1] roles)', |
|
&Apache::lonnet::plaintext('st',$crstype)); |
|
} |
} |
} |
} else { |
} else { |
if ($outputtarget ne 'tex') { |
$discussion.= '<span class="LC_feedback_link">'.&mt('This discussion is closed.').'</span>'; |
$discussion.= &mt('This discussion is closed.'); |
|
} |
|
} |
} |
if ($outputtarget ne 'tex') { |
$discussion.= &send_message_link($ressymb).'</div>'; |
$discussion.= &send_message_link($ressymb); |
|
} |
|
$discussion.='</div>'; |
|
} |
} |
return $discussion; |
return $discussion; |
} |
} |
Line 787 sub action_links_bar {
|
Line 787 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 835 sub action_links_bar {
|
Line 835 sub action_links_bar {
|
sub postingform_display { |
sub postingform_display { |
my ($mode,$ressymb,$now,$subject,$comment,$outputtarget,$attachnum, |
my ($mode,$ressymb,$now,$subject,$comment,$outputtarget,$attachnum, |
$currnewattach,$currdelold,$group,$crstype) = @_; |
$currnewattach,$currdelold,$group,$crstype) = @_; |
if ($outputtarget eq 'tex') { return ''; } |
|
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', |
Line 851 sub postingform_display {
|
Line 850 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 922 sub build_posting_display {
|
Line 926 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 935 sub build_posting_display {
|
Line 952 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 965 sub build_posting_display {
|
Line 982 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 999 sub build_posting_display {
|
Line 1016 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 1063 sub build_posting_display {
|
Line 1080 sub build_posting_display {
|
} else { |
} else { |
@{$$namesort{$lastname}{$firstname}} = ("$idx"); |
@{$$namesort{$lastname}{$firstname}} = ("$idx"); |
} |
} |
if ((&editing_allowed($escsymb.':::'.$idx,$group)) && ($outputtarget ne 'tex')) { |
if ($outputtarget ne 'tex') { |
if (($env{'user.domain'} eq $contrib{$idx.':senderdomain'}) && ($env{'user.name'} eq $contrib{$idx.':sendername'})) { |
if (&editing_allowed($escsymb.':::'.$idx,$group)) { |
$sender.=' <a href="/adm/feedback?editdisc='. |
if (($env{'user.domain'} eq $contrib{$idx.':senderdomain'}) && ($env{'user.name'} eq $contrib{$idx.':sendername'})) { |
$escsymb.':::'.$idx; |
$sender.=' <a href="/adm/feedback?editdisc='. |
if ($$newpostsflag) { |
$escsymb.':::'.$idx; |
$sender .= '&previous='.$prevread; |
if ($$newpostsflag) { |
} |
$sender .= '&previous='.$prevread; |
$sender .= &group_args($group); |
} |
$sender .= '" '.$target.'>'.&mt('Edit').'</a>'; |
$sender .= &group_args($group); |
|
$sender .= '" '.$target.'>'.&mt('Edit').'</a>'; |
|
|
unless ($seeid) { |
unless ($seeid) { |
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')"; |
$sender .= '">'.&mt('Delete').'</a>'; |
$sender .= '">'.&mt('Delete').'</a>'; |
|
} |
} |
} |
} |
} |
} |
if ($seeid) { |
if (($seeid) && ($outputtarget ne 'tex')) { |
if ($hiddens{$idx}) { |
if ($hidden) { |
unless ($studenthidden) { |
unless ($studenthidden) { |
$sender.=' <a href="/adm/feedback?unhide='. |
$sender.=' <a href="/adm/feedback?unhide='. |
$escsymb.':::'.$idx; |
$escsymb.':::'.$idx; |
if ($$newpostsflag) { |
|
$sender .= '&previous='.$prevread; |
|
} |
|
$sender .= '">'.&mt('Make Visible').'</a>'; |
|
} |
|
} else { |
|
$sender.=' <a href="/adm/feedback?hide='. |
|
$escsymb.':::'.$idx; |
if ($$newpostsflag) { |
if ($$newpostsflag) { |
$sender .= '&previous='.$prevread; |
$sender .= '&previous='.$prevread; |
} |
} |
$sender .= '">'.&mt('Make Visible').'</a>'; |
$sender .= &group_args($group); |
} |
$sender .= '">'.&mt('Hide').'</a>'; |
} else { |
} |
$sender.=' <a href="/adm/feedback?hide='. |
my $grpargs = &group_args($group); |
$escsymb.':::'.$idx; |
$sender.= |
if ($$newpostsflag) { |
" <a href=\"javascript:verifydelete('seeiddelete','$escsymb','$idx','$$newpostsflag','$prevread','$grpargs')\">"; |
$sender .= '&previous='.$prevread; |
$sender .= &mt('Delete').'</a>'; |
} |
} |
$sender .= &group_args($group); |
|
$sender .= '">'.&mt('Hide').'</a>'; |
|
} |
|
my $grpargs = &group_args($group); |
|
$sender.= |
|
" <a href=\"javascript:verifydelete('seeiddelete','$escsymb','$idx','$$newpostsflag','$prevread','$grpargs')\">"; |
|
$sender .= &mt('Delete').'</a>'; |
|
} |
} |
} else { |
} else { |
if ($screenname) { |
if ($screenname) { |
$sender='<i>'.$screenname.'</i>'; |
$sender='<i>'.$screenname.'</i>'; |
} else { |
} else { |
Line 1130 sub build_posting_display {
|
Line 1149 sub build_posting_display {
|
@{$$namesort{'__anon'}{'__anon'}} = ("$idx"); |
@{$$namesort{'__anon'}{'__anon'}} = ("$idx"); |
} |
} |
} |
} |
if ((&discussion_open($status)) && ($outputtarget ne 'tex')) { |
if ($outputtarget ne 'tex') { |
if (($group ne '') && |
if (&discussion_open($status)) { |
(&check_group_priv($group,'pgd') eq 'ok')) { |
if (($group ne '') && |
$sender.=' <a href="/adm/feedback?replydisc='. |
(&check_group_priv($group,'pgd') eq 'ok')) { |
$escsymb.':::'.$idx; |
$sender.=' <a href="/adm/feedback?replydisc='. |
if ($$newpostsflag) { |
$escsymb.':::'.$idx; |
$sender .= '&previous='.$prevread; |
if ($$newpostsflag) { |
} |
$sender .= '&previous='.$prevread; |
$sender .= &group_args($group); |
} |
$sender .= '" '.$target.'>'.&mt('Reply').'</a>'; |
$sender .= &group_args($group); |
} elsif (&Apache::lonnet::allowed('pch', |
$sender .= '" '.$target.'>'.&mt('Reply').'</a>'; |
$env{'request.course.id'}. |
} elsif (&Apache::lonnet::allowed('pch', |
($env{'request.course.sec'}?'/'. |
$env{'request.course.id'}. |
$env{'request.course.sec'}:''))) { |
($env{'request.course.sec'}?'/'. |
$sender.=' <a href="/adm/feedback?replydisc='. |
$env{'request.course.sec'}:''))) { |
$escsymb.':::'.$idx; |
$sender.=' <a href="/adm/feedback?replydisc='. |
if ($$newpostsflag) { |
$escsymb.':::'.$idx; |
$sender .= '&previous='.$prevread; |
if ($$newpostsflag) { |
|
$sender .= '&previous='.$prevread; |
|
} |
|
$sender .= '" '.$target.'>'.&mt('Reply').'</a>'; |
} |
} |
$sender .= '" '.$target.'>'.&mt('Reply').'</a>'; |
|
} |
} |
} |
if ($viewgrades) { |
if (($viewgrades) && ($outputtarget ne 'tex')) { |
|
$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\./) && ($outputtarget ne 'tex')) { |
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>'; |
|
} |
} |
} |
} |
} |
#figure out at what position this needs to print |
#figure out at what position this needs to print |
Line 1176 sub build_posting_display {
|
Line 1197 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 1683 END
|
Line 1704 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 2641 sub screen_header {
|
Line 2667 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 $realsymb = $symb; |
|
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', |
&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'}:''))) { |
Line 3894 ENDREDIR
|
Line 3926 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, |