--- loncom/interface/lonfeedback.pm 2004/05/25 22:16:05 1.84 +++ loncom/interface/lonfeedback.pm 2004/08/27 22:13:24 1.99.2.3 @@ -1,7 +1,7 @@ # The LearningOnline Network # Feedback # -# $Id: lonfeedback.pm,v 1.84 2004/05/25 22:16:05 raeburn Exp $ +# $Id: lonfeedback.pm,v 1.99.2.3 2004/08/27 22:13:24 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -34,16 +34,39 @@ use Apache::Constants qw(:common); use Apache::lonmsg(); use Apache::loncommon(); use Apache::lontexconvert(); -use Apache::lonlocal; +use Apache::lonlocal; # must not have () +use Apache::lonhtmlcommon(); -sub list_discussion { - my ($mode,$status,$symb)=@_; -# &Apache::lonnet::logthis("status is $status"); - if (!($status eq 'CAN_ANSWER' || $status eq 'CANNOT_ANSWER' +sub discussion_open { + my ($status)=@_; + if (defined($status) && + !($status eq 'CAN_ANSWER' || $status eq 'CANNOT_ANSWER' || $status eq 'OPEN')) { - return ''; + return 0; + } + my $close=&Apache::lonnet::EXT('resource.0.discussend'); + if (defined($close) && $close ne '' && $close < time) { + return 0; + } + return 1; +} + +sub discussion_visible { + my ($status)=@_; + if (not &discussion_open($status)) { + my $hidden=&Apache::lonnet::EXT('resource.0.discusshide'); + if (lc($hidden) eq 'yes' or $hidden eq '' or !defined($hidden)) { + return 0; + } } + return 1; +} +sub list_discussion { + my ($mode,$status,$symb)=@_; + + my $outputtarget=$ENV{'form.grade_target'}; + if (not &discussion_visible($status)) { return ''; } my @bgcols = ("#cccccc","#eeeeee"); my $discussiononly=0; if ($mode eq 'board') { $discussiononly=1; } @@ -247,7 +270,8 @@ sub list_discussion { $sender=''.$screenname.''; } } - if (&Apache::lonnet::allowed('pch', + if (&discussion_open($status) && + &Apache::lonnet::allowed('pch', $ENV{'request.course.id'}. ($ENV{'request.course.sec'}?'/'.$ENV{'request.course.sec'}:''))) { $sender.=' 'Change to ', + 'chgt' => 'Change', + 'disp' => 'Display', + 'nolo' => 'Not new', ); my $currdisp = $lt{'allposts'}; my $currmark = $lt{'onmark'}; my $dispchange = $lt{'unread'}; my $markchange = $lt{'ondisp'}; - my $displink = '/adm/feedback?onlyunread='.$ressymb; - my $marklink = '/adm/feedback?markondisp='.$ressymb; + my $chglink = '/adm/feedback?modifydisp='.$ressymb; + my $displink = 'onlyunread'; + my $marklink = 'markondisp'; if ($markondisp) { $currmark = $lt{'ondisp'}; $markchange = $lt{'onmark'}; - $marklink = '/adm/feedback?markonread='.$ressymb; - if ($newpostsflag) { - $marklink .= '&previous='.$prevread; - } + $marklink = 'markonread'; } if ($showonlyunread) { $currdisp = $lt{'unread'}; $dispchange = $lt{'allposts'}; - $displink = '/adm/feedback?allposts='.$ressymb; + $displink = 'allposts'; } + + $chglink .= '&changes='.$displink.'_'.$marklink; if ($newpostsflag) { - $displink .= '&previous='.$prevread; + $chglink .= '&previous='.$prevread; } if ($visible) { # Print the discusssion - $discussion.=''; - my $colspan=$maxdepth+1; - $discussion .= ''. - ''; - + if ($outputtarget ne 'tex') { + my $colspan=$maxdepth+1; + $discussion.='
'. - ''. - ''. - ''. - ''. - '
'.$lt{'cuse'}.'    '.$lt{'chgt'}.'
'.$lt{'disa'}.': '.$currdisp.'    '.$dispchange.'
'.$lt{'npce'}.': '.$currmark.'    '.$markchange.'
'. - ''; - if ($visible>2) { - $discussion.=''; - } - if ($newpostsflag) { - if (!$markondisp) { - $discussion .=''; - } - } else { - $discussion .= ''; - } - $discussion .= '
'. - ''.&mt('Threaded View').'  '. - ''.&mt('Chronological View').'  '.&mt('Mark new posts as read').'  '; - } else { - $discussion .= '  
'; + $discussion .=''; + } else { + $discussion.='\vskip 0 mm\noindent\makebox[2 cm][b]{\hrulefill}'. + '\textbf{DISCUSSIONS}\makebox[2 cm][b]{\hrulefill}'. + '\vskip 0 mm\noindent\textbf{'.$lt{'cuse'}.'}:\vskip 0 mm'. + '\noindent\textbf{'.$lt{'disa'}.'}: \textit{'.$currdisp.'}\vskip 0 mm'. + '\noindent\textbf{'.$lt{'npce'}.'}: \textit{'.$currmark.'}'; + } my $numhidden = keys %notshown; if ($numhidden > 0) { my $colspan = $maxdepth+1; @@ -387,18 +414,79 @@ sub list_discussion { } foreach (sort { $a <=> $b } keys %alldiscussion) { unless ($notshown{$alldiscussion{$_}} eq '1') { - $discussion.="\n"; + if ($outputtarget ne 'tex') { + $discussion.="\n"; + } else { + $discussion.='\vskip 0 mm\noindent\makebox[2 cm][b]{\hrulefill}'; + } my $thisdepth=$depth[$alldiscussion{$_}]; - for (1..$thisdepth) { - $discussion.=''; - } + if ($outputtarget ne 'tex') { + for (1..$thisdepth) { + $discussion.=''; + } + } my $colspan=$maxdepth-$thisdepth+1; - $discussion.=''; + } else { + #cleanup block + $discussionitems[$alldiscussion{$_}]=~s/]*)>/
'. + ''; + if ($visible>2) { + $discussion.=''; + } + if ($newpostsflag) { + if (!$markondisp) { + $discussion .=''; + } + } else { + $discussion .= ''; + } + $discussion .= '
'. + ''.&mt('Threaded View').'  '. + ''.&mt('Chronological View').'  '.&mt('Mark new posts as read').'  '; + } else { + $discussion .= '  
      '. + if ($outputtarget ne 'tex') { + $discussion.=''. $discussionitems[$alldiscussion{$_}]. '
/; + $discussionitems[$alldiscussion{$_}]=~s/]*)>]*)>/
/; + my $threadinsert=''; + if ($thisdepth > 0) { + $threadinsert='
Reply: '.$thisdepth.''; + } + $discussionitems[$alldiscussion{$_}]=~s/<\/td>]*)>/$threadinsert<\/td>
/; + $discussionitems[$alldiscussion{$_}]=~s/]+)>(Hide|Delete|Reply|Submissions)<\/a>//g; + $discussionitems[$alldiscussion{$_}]=~s/(|<\/b>|<\/a>|]+)>)//g; + + #FIXME xmlparse can't be safely called from inside xmlparse + # due to the global variables that are use, the safe + # space etc. I expect this has unforseen issues that + # need resolving. + + $discussion.=&Apache::lonxml::xmlparse('','tex',$discussionitems[$alldiscussion{$_}]); + } } } - $discussion.='


'; + if ($outputtarget ne 'tex') { + my $colspan=$maxdepth+1; + $discussion .= < + + + + + +
+ + + + +END + if ($newpostsflag) { + $discussion .= + ''; + } else { + $discussion .= + ''; + } + $discussion .= <  + + +
+ $lt{'cuse'}: 1. '.$lt{'disp'}.' - '.$currdisp.'  2. '.$lt{'nolo'}.' - '.$currmark.''.$lt{'disp'}.' - '.$currdisp.' + $lt{'chgt'}?
+
+ + + +

+END + } } if ($discussiononly) { $discussion.=(<Note: in anonymous discussion, your name is visible only to course faculty
Title: 

- +

Attachment (128 KB max size):

ENDDISCUSS - $discussion.=&generate_preview_button(); + if ($outputtarget ne 'tex') { + $discussion.=&generate_preview_button(); + } } else { - if (&Apache::lonnet::allowed('pch', + if (&discussion_open($status) && + &Apache::lonnet::allowed('pch', $ENV{'request.course.id'}. ($ENV{'request.course.sec'}?'/'.$ENV{'request.course.sec'}:''))) { - $discussion.='
'. - ''. - &mt('Post Discussion').'
'; + if ($outputtarget ne 'tex') { + $discussion.='
'. + ''. + &mt('Post Discussion').'
'; + } } } return $discussion; @@ -457,13 +550,15 @@ sub mail_screen { $prevtag = ''; } } - my $latexHelp = Apache::loncommon::helpLatexCheatsheet(); + my $latexHelp=&Apache::loncommon::helpLatexCheatsheet(); + my $htmlheader=&Apache::lonhtmlcommon::htmlareaheaders(); my $send=&mt('Send'); $r->print(< The LearningOnline Network with CAPA +$htmlheader