[LON-CAPA-cvs] cvs: loncom(version_2_10_X) /interface lonfeedback.pm
raeburn
raeburn@source.lon-capa.org
Sat, 14 Aug 2010 18:14:29 -0000
This is a MIME encoded message
--raeburn1281809669
Content-Type: text/plain
raeburn Sat Aug 14 18:14:29 2010 EDT
Modified files: (Branch: version_2_10_X)
/loncom/interface lonfeedback.pm
Log:
- Backport 1.294, 1.295, 1.296, 1.297, 1.298, 1.299.
--raeburn1281809669
Content-Type: text/plain
Content-Disposition: attachment; filename="raeburn-20100814181429.txt"
Index: loncom/interface/lonfeedback.pm
diff -u loncom/interface/lonfeedback.pm:1.290.2.1 loncom/interface/lonfeedback.pm:1.290.2.2
--- loncom/interface/lonfeedback.pm:1.290.2.1 Thu May 27 14:34:41 2010
+++ loncom/interface/lonfeedback.pm Sat Aug 14 18:14:29 2010
@@ -1,7 +1,7 @@
# The LearningOnline Network
# Feedback
#
-# $Id: lonfeedback.pm,v 1.290.2.1 2010/05/27 14:34:41 raeburn Exp $
+# $Id: lonfeedback.pm,v 1.290.2.2 2010/08/14 18:14:29 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -49,15 +49,24 @@
sub discussion_open {
my ($status,$symb)=@_;
+# Advanced roles can always discuss
if ($env{'request.role.adv'}) { return 1; }
+# Get discussion closing date
+ my $close=&Apache::lonnet::EXT('resource.0.discussend',$symb);
+# If it is defined and in the future, the instructor wants this discussion to be open
+ if (defined($close) && $close ne '' && $close > time) {
+ return 1;
+ }
+# It was not explicitly open, check if the problem is available.
+# If the problem is not available, close the discussion
if (defined($status) &&
- !($status eq 'CAN_ANSWER' || $status eq 'CANNOT_ANSWER'
- || $status eq 'OPEN')) {
- return 0;
+ !($status eq 'CAN_ANSWER' || $status eq 'CANNOT_ANSWER'
+ || $status eq 'OPEN')) {
+ return 0;
}
- my $close=&Apache::lonnet::EXT('resource.0.discussend',$symb);
+# The problem is available, but check if the instructor explictly closed discussion
if (defined($close) && $close ne '' && $close < time) {
- return 0;
+ return 0;
}
return 1;
}
@@ -317,6 +326,7 @@
'dpwn' => 'Deleted posts will no longer be visible to you and other students',
'bwco' => 'but will continue to be visible to your instructor',
'depo' => 'Deleted posts will no longer be visible to you or anyone else.',
+ 'discussions' => 'DISCUSSIONS'
);
my $currdisp = $lt{'allposts'};
@@ -368,8 +378,7 @@
# Print the discusssion
if ($outputtarget eq 'tex') {
$discussion.='<tex>{\tiny \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'.
+ '\textbf{'.$lt{'discussions'}.'}\makebox[2 cm][b]{\hrulefill}\vskip 0 mm'.
'\noindent\textbf{'.$lt{'disa'}.'}: \textit{'.$currdisp.'}\vskip 0 mm'.
'\noindent\textbf{'.$lt{'npce'}.'}: \textit{'.$currmark.'}}</tex>';
} elsif ($outputtarget eq 'export') {
@@ -514,7 +523,6 @@
$threadinsert='<br /><strong>Reply: '.$thisdepth.'</strong>';
}
$discussionitems[$alldiscussion{$post}]=~s/<\/td><td([^>]*)>/$threadinsert<\/td><td TeXwidth="65 mm" align="left">/;
- $discussionitems[$alldiscussion{$post}]=~s/<a([^>]+)>(Edit|Hide|Delete|Reply|Submissions)<\/a>//g;
$discussionitems[$alldiscussion{$post}]=~s/(<b>|<\/b>|<\/a>|<a([^>]+)>)//g;
$discussionitems[$alldiscussion{$post}]='<tex>\vskip 0 mm\noindent\makebox[2 cm][b]{\hrulefill}</tex>'.$discussionitems[$alldiscussion{$post}];
@@ -719,7 +727,7 @@
$attachnum += @{$currnewattach};
}
}
- if (&discussion_open($status)) {
+ if (&discussion_open($status) && ($outputtarget ne 'tex')) {
if (($group ne '') && ($mode eq 'board')) {
if (&check_group_priv($group,'pgd') eq 'ok') {
$discussion .=
@@ -735,20 +743,25 @@
$currnewattach,$currdelold,'',$crstype);
}
}
- } else {
+ } elsif ($outputtarget ne 'tex') {
$discussion.='<div class="LC_feedback_link">';
if (&discussion_open($status) &&
&Apache::lonnet::allowed('pch',
$env{'request.course.id'}.
($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));
+ }
}
- }
- if ($outputtarget ne 'tex') {
- $discussion.= &send_message_link($ressymb);
+ } else {
+ $discussion.= '<span class="LC_feedback_link">'.&mt('This discussion is closed.').'</span>';
}
- $discussion.='</div>';
+ $discussion.= &send_message_link($ressymb).
+ '</div>';
}
return $discussion;
}
@@ -839,7 +852,12 @@
if ($crstype eq 'Community') {
$lt{'note'} = &mt('Note: in anonymous discussion, your name is visible only to community facilitators');
}
- my $postingform = (<<ENDDISCUSS);
+ my ($postingform,$textareaclass);
+ if (&Apache::lonhtmlcommon::htmlareabrowser()) {
+ $postingform = &Apache::lonhtmlcommon::htmlareaselectactive();
+ $textareaclass = 'class="LC_richDefaultOff"';
+ }
+ $postingform .= (<<ENDDISCUSS);
<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" />
<input type="hidden" name="sendit" value="true" />
@@ -847,7 +865,7 @@
<br /><a name="newpost"></a>
<font size="1">$lt{'note'}</font><br />
<b>$lt{'title'}:</b> <input type="text" name="subject" value="$subject" size="30" /><br /><br />
-<textarea name="comment" cols="80" rows="14" >$comment</textarea>
+<textarea name="comment" cols="80" rows="14"id="comment" $textareaclass>$comment</textarea>
ENDDISCUSS
if ($env{'form.origpage'}) {
$postingform .= '<input type="hidden" name="origpage" value="'.
@@ -869,28 +887,26 @@
$postingform .= &add_blog_checkbox($crstype);
}
$postingform .= "</form>\n";
- if ($outputtarget ne 'tex') {
- $postingform .= &generate_attachments_button('',$attachnum,$ressymb,
- $now,$currnewattach,
- $currdelold,'',$mode,
- $blockblog);
- if ((ref($currnewattach) eq 'ARRAY') && (@{$currnewattach} > 0)) {
- $newattachmsg = '<br /><b>'.$lt{'newa'}.'</b><br />';
- if (@{$currnewattach} > 1) {
- $newattachmsg .= '<ol>';
- foreach my $item (@{$currnewattach}) {
- $item =~ m#.*/([^/]+)$#;
- $newattachmsg .= '<li><a href="'.$item.'">'.$1.'</a></li>'."\n";
- }
- $newattachmsg .= '</ol>'."\n";
- } else {
- $$currnewattach[0] =~ m#.*/([^/]+)$#;
- $newattachmsg .= '<a href="'.$$currnewattach[0].'">'.$1.'</a><br />'."\n";
+ $postingform .= &generate_attachments_button('',$attachnum,$ressymb,
+ $now,$currnewattach,
+ $currdelold,'',$mode,
+ $blockblog);
+ if ((ref($currnewattach) eq 'ARRAY') && (@{$currnewattach} > 0)) {
+ $newattachmsg = '<br /><b>'.$lt{'newa'}.'</b><br />';
+ if (@{$currnewattach} > 1) {
+ $newattachmsg .= '<ol>';
+ foreach my $item (@{$currnewattach}) {
+ $item =~ m#.*/([^/]+)$#;
+ $newattachmsg .= '<li><a href="'.$item.'">'.$1.'</a></li>'."\n";
}
+ $newattachmsg .= '</ol>'."\n";
+ } else {
+ $$currnewattach[0] =~ m#.*/([^/]+)$#;
+ $newattachmsg .= '<a href="'.$$currnewattach[0].'">'.$1.'</a><br />'."\n";
}
- $postingform .= $newattachmsg;
- $postingform .= &generate_preview_button();
}
+ $postingform .= $newattachmsg;
+ $postingform .= &generate_preview_button();
return $postingform;
}
@@ -1052,46 +1068,48 @@
} else {
@{$$namesort{$lastname}{$firstname}} = ("$idx");
}
- if (&editing_allowed($escsymb.':::'.$idx,$group)) {
- if (($env{'user.domain'} eq $contrib{$idx.':senderdomain'}) && ($env{'user.name'} eq $contrib{$idx.':sendername'})) {
- $sender.=' <a href="/adm/feedback?editdisc='.
- $escsymb.':::'.$idx;
- if ($$newpostsflag) {
- $sender .= '&previous='.$prevread;
- }
- $sender .= &group_args($group);
- $sender .= '" '.$target.'>'.&mt('Edit').'</a>';
+ if ($outputtarget ne 'tex') {
+ if (&editing_allowed($escsymb.':::'.$idx,$group)) {
+ if (($env{'user.domain'} eq $contrib{$idx.':senderdomain'}) && ($env{'user.name'} eq $contrib{$idx.':sendername'})) {
+ $sender.=' <a href="/adm/feedback?editdisc='.
+ $escsymb.':::'.$idx;
+ if ($$newpostsflag) {
+ $sender .= '&previous='.$prevread;
+ }
+ $sender .= &group_args($group);
+ $sender .= '" '.$target.'>'.&mt('Edit').'</a>';
- unless ($seeid) {
- my $grpargs = &group_args($group);
- $sender.=" <a href=\"javascript:verifydelete('studentdelete','$escsymb','$idx','$$newpostsflag','$prevread','$grpargs')";
- $sender .= '">'.&mt('Delete').'</a>';
+ unless ($seeid) {
+ my $grpargs = &group_args($group);
+ $sender.=" <a href=\"javascript:verifydelete('studentdelete','$escsymb','$idx','$$newpostsflag','$prevread','$grpargs')";
+ $sender .= '">'.&mt('Delete').'</a>';
+ }
}
}
- }
- if ($seeid) {
- if ($hidden) {
- unless ($studenthidden) {
- $sender.=' <a href="/adm/feedback?unhide='.
- $escsymb.':::'.$idx;
+ if ($seeid) {
+ if ($hidden) {
+ unless ($studenthidden) {
+ $sender.=' <a href="/adm/feedback?unhide='.
+ $escsymb.':::'.$idx;
+ if ($$newpostsflag) {
+ $sender .= '&previous='.$prevread;
+ }
+ $sender .= '">'.&mt('Make Visible').'</a>';
+ }
+ } else {
+ $sender.=' <a href="/adm/feedback?hide='.
+ $escsymb.':::'.$idx;
if ($$newpostsflag) {
$sender .= '&previous='.$prevread;
}
- $sender .= '">'.&mt('Make Visible').'</a>';
- }
- } else {
- $sender.=' <a href="/adm/feedback?hide='.
- $escsymb.':::'.$idx;
- if ($$newpostsflag) {
- $sender .= '&previous='.$prevread;
- }
- $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>';
+ $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 {
if ($screenname) {
@@ -1119,36 +1137,38 @@
@{$$namesort{'__anon'}{'__anon'}} = ("$idx");
}
}
- if (&discussion_open($status)) {
- if (($group ne '') &&
- (&check_group_priv($group,'pgd') eq 'ok')) {
- $sender.=' <a href="/adm/feedback?replydisc='.
- $escsymb.':::'.$idx;
- if ($$newpostsflag) {
- $sender .= '&previous='.$prevread;
- }
- $sender .= &group_args($group);
- $sender .= '" '.$target.'>'.&mt('Reply').'</a>';
- } elsif (&Apache::lonnet::allowed('pch',
- $env{'request.course.id'}.
- ($env{'request.course.sec'}?'/'.
- $env{'request.course.sec'}:''))) {
- $sender.=' <a href="/adm/feedback?replydisc='.
- $escsymb.':::'.$idx;
- if ($$newpostsflag) {
- $sender .= '&previous='.$prevread;
+ if ($outputtarget ne 'tex') {
+ if (&discussion_open($status)) {
+ if (($group ne '') &&
+ (&check_group_priv($group,'pgd') eq 'ok')) {
+ $sender.=' <a href="/adm/feedback?replydisc='.
+ $escsymb.':::'.$idx;
+ if ($$newpostsflag) {
+ $sender .= '&previous='.$prevread;
+ }
+ $sender .= &group_args($group);
+ $sender .= '" '.$target.'>'.&mt('Reply').'</a>';
+ } elsif (&Apache::lonnet::allowed('pch',
+ $env{'request.course.id'}.
+ ($env{'request.course.sec'}?'/'.
+ $env{'request.course.sec'}:''))) {
+ $sender.=' <a href="/adm/feedback?replydisc='.
+ $escsymb.':::'.$idx;
+ if ($$newpostsflag) {
+ $sender .= '&previous='.$prevread;
+ }
+ $sender .= '" '.$target.'>'.&mt('Reply').'</a>';
}
- $sender .= '" '.$target.'>'.&mt('Reply').'</a>';
}
- }
- if ($viewgrades) {
+ if ($viewgrades) {
$vgrlink=&Apache::loncommon::submlink(&mt('Submissions'),
- $contrib{$idx.':sendername'},$contrib{$idx.':senderdomain'},$ressymb);
- }
- if ($$dischash{$readkey}=~/\.$idx\./) {
- $ctlink = '<label><b>'.&mt('Mark unread').'?</b> <input type="checkbox" name="postunread_'.$idx.'" /></label>';
- } else {
- $ctlink = '<label><b>'.&mt('Mark read').'?</b> <input type="checkbox" name="postread_'.$idx.'" /></label>';
+ $contrib{$idx.':sendername'},$contrib{$idx.':senderdomain'},$ressymb);
+ }
+ if ($$dischash{$readkey}=~/\.$idx\./) {
+ $ctlink = '<label><b>'.&mt('Mark unread').'?</b> <input type="checkbox" name="postunread_'.$idx.'" /></label>';
+ } else {
+ $ctlink = '<label><b>'.&mt('Mark read').'?</b> <input type="checkbox" name="postread_'.$idx.'" /></label>';
+ }
}
}
#figure out at what position this needs to print
@@ -1668,6 +1688,12 @@
</script>
END
+ my ($textareaheader,$textareaclass);
+ if (&Apache::lonhtmlcommon::htmlareabrowser()) {
+ $textareaheader = &Apache::lonhtmlcommon::htmlareaselectactive();
+ $textareaclass = 'class="LC_richDefaultOff"';
+ }
+
# Breadcrumbs
my $brcrum = [{'href' => '',
'text' => 'Resource Feedback and Discussion'}];
@@ -1707,14 +1733,16 @@
$r->print(<<END);
$options<hr />
$quote
-<p>$lt{'myqu'}</p>
+<p>$lt{'myqu'}
+$textareaheader
+</p>
<p>
$latexHelp
</p>
<p>
$lt{'title'}: <input type="text" name="subject" size="30" value="$subject" /></p>
<p>
-<textarea name="comment" id="comment" cols="60" rows="10">$comment
+<textarea name="comment" id="comment" cols="60" rows="10" $textareaclass>$comment
</textarea></p>
END
if ( ($env{'form.editdisc'}) || ($env{'form.replydisc'}) ) {
@@ -1792,7 +1820,6 @@
}
}
$r->print(&generate_preview_button().
- &Apache::lonhtmlcommon::htmlareaselectactive('comment').
&Apache::loncommon::end_page());
}
@@ -2674,9 +2701,7 @@
}
sub clear_out_html {
- my ($message,$override,$ignore_htmlarea)=@_;
- if (!$ignore_htmlarea
- && !&Apache::lonhtmlcommon::htmlareablocked()) { return $message; }
+ my ($message,$override)=@_;
# Always allow the <m>-tag
my %html=(M=>1);
# Check if more is allowed
@@ -2687,8 +2712,8 @@
# <BLOCKQUOTE> <DIV .*> <DIV> <IMG> <M> <SPAN> <H1> <H2> <H3> <H4> <SUB>
# <SUP> <TABLE> <TR> <TD> <TH> <TBODY>
%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, DIV=>1, IMG=>1,
- M=>1, ALGEBRA=>1, SUB=>1, SUP=>1, SPAN=>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,
H1=>1, H2=>1, H3=>1, H4=>1, H5=>1, H6=>1,
TABLE=>1, TR=>1, TD=>1, TH=>1, TBODY=>1);
}
@@ -2936,7 +2961,7 @@
&newline_to_br(\$message);
$message=&Apache::lonspeller::markeduptext($message);
$message=&Apache::lontexconvert::msgtexconverted($message);
- my $subject=&clear_out_html($env{'form.subject'},undef,1);
+ my $subject=&clear_out_html($env{'form.subject'});
$subject=~s/\n/\<br \/\>/g;
$subject=&Apache::lontexconvert::msgtexconverted($subject);
@@ -3048,7 +3073,7 @@
{'bread_crumbs' => $brcrum,});
my $orig_subject = &unescape($env{'form.subject'});
- my $subject=&clear_out_html($orig_subject,undef,1);
+ my $subject=&clear_out_html($orig_subject);
$subject=~s/\n/\<br \/\>/g;
$subject=&Apache::lontexconvert::msgtexconverted($subject);
my $timestamp=$env{'form.timestamp'};
@@ -3900,8 +3925,7 @@
my ($typestyle,%to) = &Apache::lonmsg::decide_receiver($feedurl);
# Actually send mail
- my ($status,$numsent)=&send_msg(&clear_out_html($env{'form.subject'},
- undef,1),
+ my ($status,$numsent)=&send_msg(&clear_out_html($env{'form.subject'}),
$feedurl,$email,$citations,
$attachmenturl,$usersymb,%to);
@@ -3910,7 +3934,7 @@
if ( ($env{'form.discuss'} ne ''
&& $env{'form.discuss'} !~ /^(?:author|question|course|policy)/)
|| $env{'form.anondiscuss'} ne '') {
- my $subject = &clear_out_html($env{'form.subject'},undef,1);
+ my $subject = &clear_out_html($env{'form.subject'});
my $anonmode=($env{'form.discuss'} eq 'anon' || $env{'form.anondiscuss'} );
$typestyle.=&adddiscuss($symb,$message,$anonmode,$attachmenturl,
$subject);
@@ -3921,7 +3945,7 @@
my $blog='';
if ($env{'form.blog'}) {
- my $subject = &clear_out_html($env{'form.subject'},undef,1);
+ my $subject = &clear_out_html($env{'form.subject'});
$status.=&Apache::lonrss::addentry($env{'user.name'},
$env{'user.domain'},
'CourseBlog_'.$env{'request.course.id'},
--raeburn1281809669--