version 1.91, 2004/06/04 18:58:32
|
version 1.96, 2004/06/28 16:41:08
|
Line 37 use Apache::lontexconvert();
|
Line 37 use Apache::lontexconvert();
|
use Apache::lonlocal; # must not have () |
use Apache::lonlocal; # must not have () |
use Apache::lonhtmlcommon(); |
use Apache::lonhtmlcommon(); |
|
|
sub discussion_closed { |
sub discussion_open { |
my ($status)=@_; |
my ($status)=@_; |
if (!($status eq 'CAN_ANSWER' || $status eq 'CANNOT_ANSWER' |
if (defined($status) && |
|
!($status eq 'CAN_ANSWER' || $status eq 'CANNOT_ANSWER' |
|| $status eq 'OPEN')) { |
|| $status eq 'OPEN')) { |
return '1'; |
return 0; |
} |
} |
my $close=&Apache::lonnet::EXT('resource.0.discussend'); |
my $close=&Apache::lonnet::EXT('resource.0.discussend'); |
if (defined($close) && $close ne '' && $close < time) { |
if (defined($close) && $close ne '' && $close < time) { |
return '1' |
return 0; |
} |
} |
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 { |
sub list_discussion { |
my ($mode,$status,$symb)=@_; |
my ($mode,$status,$symb)=@_; |
|
|
if (&discussion_closed($status)) { |
my $outputtarget=$ENV{'form.grade_target'}; |
return ''; |
if (not &discussion_visible($status)) { return ''; } |
} |
|
my @bgcols = ("#cccccc","#eeeeee"); |
my @bgcols = ("#cccccc","#eeeeee"); |
my $discussiononly=0; |
my $discussiononly=0; |
if ($mode eq 'board') { $discussiononly=1; } |
if ($mode eq 'board') { $discussiononly=1; } |
Line 259 sub list_discussion {
|
Line 270 sub list_discussion {
|
$sender='<i>'.$screenname.'</i>'; |
$sender='<i>'.$screenname.'</i>'; |
} |
} |
} |
} |
if (!&discussion_closed($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'}:''))) { |
Line 352 sub list_discussion {
|
Line 363 sub list_discussion {
|
|
|
if ($visible) { |
if ($visible) { |
# Print the discusssion |
# Print the discusssion |
$discussion.='<table bgcolor="#AAAAAA" cellpadding="2" cellspacing="2" border="0">'; |
if ($outputtarget ne 'tex') { |
my $colspan=$maxdepth+1; |
$discussion.='<table bgcolor="#AAAAAA" cellpadding="2" cellspacing="2" border="0">'; |
$discussion .= '<tr bgcolor="#FFFFFF"><td colspan="'.$colspan.'" valign="top">'. |
my $colspan=$maxdepth+1; |
'<table border="0" bgcolor="#FFFFFF" width="100%" cellspacing="2" cellpadding="2">'. |
$discussion .= '<tr bgcolor="#FFFFFF"><td colspan="'.$colspan.'" valign="top">'. |
'<tr><td align="left"><b>'.$lt{'cuse'}.'</b></td><td> </td><td align="right"><b>'.$lt{'chgt'}.'</b></td></tr>'. |
'<table border="0" bgcolor="#FFFFFF" width="100%" cellspacing="2" cellpadding="2">'. |
'<tr><td>'.$lt{'disa'}.': <i>'.$currdisp.'</i></td><td> </td><td align="right"><a href="'.$displink.'">'.$dispchange.'</a></td></tr>'. |
'<tr><td align="left"><b>'.$lt{'cuse'}.'</b></td><td> </td><td align="right"><b>'.$lt{'chgt'}.'</b></td></tr>'. |
'<tr><td>'.$lt{'npce'}.': <i>'.$currmark.'</i></td><td> </td><td align="right"><a href="'.$marklink.'">'.$markchange.'</a></td></tr>'. |
'<tr><td>'.$lt{'disa'}.': <i>'.$currdisp.'</i></td><td> </td><td align="right"><a href="'.$displink.'">'.$dispchange.'</a></td></tr>'. |
'</table></td></tr>'. |
'<tr><td>'.$lt{'npce'}.': <i>'.$currmark.'</i></td><td> </td><td align="right"><a href="'.$marklink.'">'.$markchange.'</a></td></tr>'. |
'<tr><td bgcolor="#DDDDBB" colspan="'.$colspan.'">'. |
'</table></td></tr>'. |
'<table border="0" width="100%" bgcolor="#DDDDBB"><tr>'; |
'<tr><td bgcolor="#DDDDBB" colspan="'.$colspan.'">'. |
if ($visible>2) { |
'<table border="0" width="100%" bgcolor="#DDDDBB"><tr>'; |
$discussion.='<td align="left">'. |
if ($visible>2) { |
'<a href="/adm/feedback?threadedon='.$ressymb; |
$discussion.='<td align="left">'. |
if ($newpostsflag) { |
'<a href="/adm/feedback?threadedon='.$ressymb; |
$discussion .= '&previous='.$prevread; |
if ($newpostsflag) { |
} |
$discussion .= '&previous='.$prevread; |
$discussion .='">'.&mt('Threaded View').'</a> '. |
} |
'<a href="/adm/feedback?threadedoff='.$ressymb; |
$discussion .='">'.&mt('Threaded View').'</a> '. |
if ($newpostsflag) { |
'<a href="/adm/feedback?threadedoff='.$ressymb; |
$discussion .= '&previous='.$prevread; |
if ($newpostsflag) { |
} |
$discussion .= '&previous='.$prevread; |
$discussion .='">'.&mt('Chronological View').'</a> </td>'; |
} |
} |
$discussion .='">'.&mt('Chronological View').'</a> </td>'; |
if ($newpostsflag) { |
} |
if (!$markondisp) { |
if ($newpostsflag) { |
$discussion .='<td align="right"><a href="/adm/feedback?markread='.$ressymb.'">'.&mt('Mark new posts as read').'</a> '; |
if (!$markondisp) { |
} else { |
$discussion .='<td align="right"><a href="/adm/feedback?markread='.$ressymb.'">'.&mt('Mark new posts as read').'</a> '; |
$discussion .= '<td> </td>'; |
} else { |
} |
$discussion .= '<td> </td>'; |
} else { |
} |
$discussion .= '<td> </td>'; |
} else { |
} |
$discussion .= '<td> </td>'; |
$discussion .= '</tr></table></td></tr>'; |
} |
|
$discussion .= '</tr></table></td></tr>'; |
|
} 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; |
my $numhidden = keys %notshown; |
if ($numhidden > 0) { |
if ($numhidden > 0) { |
my $colspan = $maxdepth+1; |
my $colspan = $maxdepth+1; |
Line 400 sub list_discussion {
|
Line 418 sub list_discussion {
|
} |
} |
foreach (sort { $a <=> $b } keys %alldiscussion) { |
foreach (sort { $a <=> $b } keys %alldiscussion) { |
unless ($notshown{$alldiscussion{$_}} eq '1') { |
unless ($notshown{$alldiscussion{$_}} eq '1') { |
$discussion.="\n<tr>"; |
if ($outputtarget ne 'tex') { |
|
$discussion.="\n<tr>"; |
|
} else { |
|
$discussion.='\vskip 0 mm\noindent\makebox[2 cm][b]{\hrulefill}'; |
|
} |
my $thisdepth=$depth[$alldiscussion{$_}]; |
my $thisdepth=$depth[$alldiscussion{$_}]; |
for (1..$thisdepth) { |
if ($outputtarget ne 'tex') { |
$discussion.='<td> </td>'; |
for (1..$thisdepth) { |
} |
$discussion.='<td> </td>'; |
|
} |
|
} |
my $colspan=$maxdepth-$thisdepth+1; |
my $colspan=$maxdepth-$thisdepth+1; |
$discussion.='<td bgcolor="'.$bgcols[$newitem{$alldiscussion{$_}}].'" colspan="'.$colspan.'">'. |
if ($outputtarget ne 'tex') { |
|
$discussion.='<td bgcolor="'.$bgcols[$newitem{$alldiscussion{$_}}].'" colspan="'.$colspan.'">'. |
$discussionitems[$alldiscussion{$_}]. |
$discussionitems[$alldiscussion{$_}]. |
'</td></tr>'; |
'</td></tr>'; |
|
} else { |
|
#cleanup block |
|
$discussionitems[$alldiscussion{$_}]=~s/<table([^>]*)>/<table TeXwidth="90 mm">/; |
|
$discussionitems[$alldiscussion{$_}]=~s/<tr([^>]*)><td([^>]*)>/<tr><td TeXwidth="20 mm" align="left">/; |
|
my $threadinsert=''; |
|
if ($thisdepth > 0) { |
|
$threadinsert='<br /><strong>Reply: '.$thisdepth.'</strong>'; |
|
} |
|
$discussionitems[$alldiscussion{$_}]=~s/<\/td><td([^>]*)>/$threadinsert<\/td><td TeXwidth="65 mm" align="left">/; |
|
$discussionitems[$alldiscussion{$_}]=~s/<a([^>]+)>(Hide|Delete|Reply|Submissions)<\/a>//g; |
|
$discussionitems[$alldiscussion{$_}]=~s/(<b>|<\/b>|<\/a>|<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.='</table><br /><br />'; |
if ($outputtarget ne 'tex') { |
|
$discussion.='</table><br /><br />'; |
|
} |
} |
} |
if ($discussiononly) { |
if ($discussiononly) { |
$discussion.=(<<ENDDISCUSS); |
$discussion.=(<<ENDDISCUSS); |
Line 424 sub list_discussion {
|
Line 470 sub list_discussion {
|
<font size="1">Note: in anonymous discussion, your name is visible only to |
<font size="1">Note: in anonymous discussion, your name is visible only to |
course faculty</font><br /> |
course faculty</font><br /> |
<b>Title:</b> <input type="text" name="subject" value="" size="30" /><br /><br /> |
<b>Title:</b> <input type="text" name="subject" value="" size="30" /><br /><br /> |
<textarea name="comment" cols="60" rows="12" wrap="hard"></textarea> |
<textarea name="comment" cols="80" rows="14" wrap="hard"></textarea> |
<p> |
<p> |
Attachment (128 KB max size): <input type="file" name="attachment" /> |
Attachment (128 KB max size): <input type="file" name="attachment" /> |
</p> |
</p> |
</form> |
</form> |
ENDDISCUSS |
ENDDISCUSS |
$discussion.=&generate_preview_button(); |
if ($outputtarget ne 'tex') { |
|
$discussion.=&generate_preview_button(); |
|
} |
} else { |
} else { |
if (!&discussion_closed($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.='<table bgcolor="#BBBBBB"><tr><td><a href="/adm/feedback?replydisc='. |
if ($outputtarget ne 'tex') { |
$symb.':::" '.$target.'>'. |
$discussion.='<table bgcolor="#BBBBBB"><tr><td><a href="/adm/feedback?replydisc='. |
'<img src="/adm/lonMisc/chat.gif" border="0" />'. |
$symb.':::" '.$target.'>'. |
&mt('Post Discussion').'</a></td></tr></table>'; |
'<img src="/adm/lonMisc/chat.gif" border="0" />'. |
|
&mt('Post Discussion').'</a></td></tr></table>'; |
|
} |
} |
} |
} |
} |
return $discussion; |
return $discussion; |
Line 473 sub mail_screen {
|
Line 523 sub mail_screen {
|
} |
} |
my $latexHelp=&Apache::loncommon::helpLatexCheatsheet(); |
my $latexHelp=&Apache::loncommon::helpLatexCheatsheet(); |
my $htmlheader=&Apache::lonhtmlcommon::htmlareaheaders(); |
my $htmlheader=&Apache::lonhtmlcommon::htmlareaheaders(); |
|
my $onsubmit=''; |
|
if ((&Apache::lonhtmlcommon::htmlareabrowser()) && |
|
(!&Apache::lonhtmlcommon::htmlareablocked())) { |
|
$onsubmit='document.mailform.onsubmit();'; |
|
} |
my $send=&mt('Send'); |
my $send=&mt('Send'); |
$r->print(<<ENDDOCUMENT); |
$r->print(<<ENDDOCUMENT); |
<html> |
<html> |
Line 516 $htmlheader
|
Line 571 $htmlheader
|
} |
} |
|
|
if (rec) { |
if (rec) { |
document.mailform.onsubmit(); |
$onsubmit |
document.mailform.submit(); |
document.mailform.submit(); |
} else { |
} else { |
alert('Please check a feedback type.'); |
alert('Please check a feedback type.'); |
Line 540 $quote
|
Line 595 $quote
|
$latexHelp |
$latexHelp |
Title: <input type="text" name="subject" size="30" value="$subject" /></p> |
Title: <input type="text" name="subject" size="30" value="$subject" /></p> |
<p> |
<p> |
<textarea name="comment" cols="60" rows="10" wrap="hard"> |
<textarea name="comment" id="comment" cols="60" rows="10" wrap="hard"> |
</textarea></p> |
</textarea></p> |
<p> |
<p> |
Attachment (128 KB max size): <input type="file" name="attachment" /> |
Attachment (128 KB max size): <input type="file" name="attachment" /> |
Line 552 Attachment (128 KB max size): <input typ
|
Line 607 Attachment (128 KB max size): <input typ
|
</form> |
</form> |
ENDDOCUMENT |
ENDDOCUMENT |
$r->print(&generate_preview_button(). |
$r->print(&generate_preview_button(). |
&Apache::lonhtmlcommon::htmlareaactive(). |
&Apache::lonhtmlcommon::htmlareaselectactive('comment'). |
'</body></html>'); |
'</body></html>'); |
} |
} |
|
|
Line 656 sub screen_header {
|
Line 711 sub screen_header {
|
} |
} |
} |
} |
if ($ENV{'request.course.id'}) { |
if ($ENV{'request.course.id'}) { |
if (not &discussion_closed() && |
if (&discussion_open() && |
&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 833 sub send_msg {
|
Line 888 sub send_msg {
|
sub adddiscuss { |
sub adddiscuss { |
my ($symb,$email,$anon,$attachmenturl,$subject)=@_; |
my ($symb,$email,$anon,$attachmenturl,$subject)=@_; |
my $status=''; |
my $status=''; |
if (not &discussion_closed() && |
if (&discussion_open() && |
&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'}:''))) { |
|
|