--- loncom/interface/lonfeedback.pm 2006/08/08 19:02:04 1.214
+++ loncom/interface/lonfeedback.pm 2010/01/24 15:30:04 1.285
@@ -1,7 +1,7 @@
# The LearningOnline Network
# Feedback
#
-# $Id: lonfeedback.pm,v 1.214 2006/08/08 19:02:04 albertel Exp $
+# $Id: lonfeedback.pm,v 1.285 2010/01/24 15:30:04 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -41,10 +41,10 @@ use Apache::lonnavmaps;
use Apache::lonenc();
use Apache::lonrss();
use HTML::LCParser();
+#use HTML::Tidy::libXML;
use Apache::lonspeller();
use Apache::longroup;
use Cwd;
-use lib '/home/httpd/lib/perl/';
use LONCAPA;
sub discussion_open {
@@ -75,6 +75,9 @@ sub discussion_visible {
sub list_discussion {
my ($mode,$status,$ressymb,$imsextras,$group)=@_;
+ unless ($ressymb) { $ressymb=&Apache::lonnet::symbread(); }
+ unless ($ressymb) { return ''; }
+ $ressymb=&wrap_symb($ressymb);
my $outputtarget=$env{'form.grade_target'};
if (defined($env{'form.export'})) {
if($env{'form.export'}) {
@@ -86,13 +89,32 @@ sub list_discussion {
$outputtarget = 'export';
}
}
- if (not &discussion_visible($status)) { return ''; }
+ if (not &discussion_visible($status)) {
+ if ($mode ne 'board') {
+ &Apache::lonenc::check_encrypt(\$ressymb);
+ return '
'.&send_message_link($ressymb)."
";
+ }
+ }
if ($group ne '' && $mode eq 'board') {
if (&check_group_priv($group,'vgb') ne 'ok') {
return '';
}
}
- my @bgcols = ("#cccccc","#eeeeee");
+
+ my ($blocked,$blocktext) =
+ &Apache::loncommon::blocking_status('boards');
+ if ($blocked) {
+ $blocktext = '
'.$blocktext."";
+ &Apache::lonenc::check_encrypt(\$ressymb);
+ if ($mode ne 'board') {
+ $blocktext.=&send_message_link($ressymb).'
';
+ }else{
+ $blocktext.="";
+ }
+ return $blocktext;
+ }
+
+ my @bgcols = ("LC_disc_old_item","LC_disc_new_item");
my $discussiononly=0;
if ($mode eq 'board') { $discussiononly=1; }
unless ($env{'request.course.id'}) { return ''; }
@@ -102,9 +124,6 @@ sub list_discussion {
$crs.='_'.$env{'request.course.sec'};
}
$crs=~s/\_/\//g;
- unless ($ressymb) { $ressymb=&Apache::lonnet::symbread(); }
- unless ($ressymb) { return ''; }
- $ressymb=&wrap_symb($ressymb);
my $encsymb=&Apache::lonenc::check_encrypt($ressymb);
my $viewgrades=(&Apache::lonnet::allowed('vgr',$crs)
&& ($ressymb=~/\.(problem|exam|quiz|assess|survey|form|task)$/));
@@ -132,7 +151,7 @@ sub list_discussion {
my $previous = 0;
my $visit = 0;
my $newpostsflag = 0;
- my @posters = split/\&/,$dischash{$userpickkey};
+ my @posters = split(/\&/,$dischash{$userpickkey});
# Retain identification of "NEW" posts identified in last display, if continuing 'previous' browsing of posts.
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['previous','sortposts','rolefilter','statusfilter','sectionpick','grouppick','totposters']);
@@ -154,6 +173,7 @@ sub list_discussion {
my $cdom = $env{'course.'.$cid.'.domain'};
my $cnum = $env{'course.'.$cid.'.num'};
+ my $crstype = &Apache::loncommon::course_type();
# Get information about students and non-students in course for filtering display of posts
my %roleshash = ();
@@ -161,19 +181,19 @@ sub list_discussion {
my ($classgroups,$studentgroups);
if ($env{'form.rolefilter'}) {
%roleshash = &Apache::lonnet::dump('nohist_userroles',$cdom,$cnum);
- foreach (keys %roleshash) {
- my ($role,$uname,$udom,$sec) = split/:/,$_;
+ foreach my $rolekey (keys(%roleshash)) {
+ my ($role,$uname,$udom,$sec) = split(/:/,$rolekey);
if ($role =~ /^cr/) {
$role = 'cr';
}
- my ($end,$start) = split/:/,$roleshash{$_};
+ my ($end,$start) = split(/:/,$roleshash{$rolekey});
my $now = time;
my $status = 'Active';
if (($now < $start) || ($end > 0 && $now > $end)) {
$status = 'Expired';
}
if ($uname && $udom) {
- push @{$roleinfo{$uname.':'.$udom}}, $role.':'.$sec.':'.$status;
+ push(@{$roleinfo{$uname.':'.$udom}}, $role.':'.$sec.':'.$status);
}
}
my ($classlist,$keylist) =
@@ -183,7 +203,7 @@ sub list_discussion {
while (my ($student,$data) = each %$classlist) {
my ($section,$status) = ($data->[$sec_index],
$data->[$status_index]);
- push @{$roleinfo{$student}}, 'st:'.$section.':'.$status;
+ push(@{$roleinfo{$student}}, 'st:'.$section.':'.$status);
}
($classgroups,$studentgroups) =
&Apache::loncoursedata::get_group_memberships($classlist,$keylist,
@@ -290,6 +310,13 @@ sub list_discussion {
'disp' => 'Display',
'nolo' => 'Not new',
'togg' => 'Toggle read/unread',
+ 'aner' => 'An error occurred opening the manifest file.',
+ 'difo' => 'Discussion for',
+ 'aerr' => 'An error occurred opening the export file for posting',
+ 'aysu' => 'Are you sure you want to delete this post?',
+ '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.',
);
my $currdisp = $lt{'allposts'};
@@ -330,10 +357,10 @@ sub list_discussion {
$togglink = 'toggoff';
}
- $chglink .= '&changes='.$displinkA.'_'.$displinkB.'_'.$marklink.'_'.$togglink;
+ $chglink .= '&changes='.$displinkA.'_'.$displinkB.'_'.$marklink.'_'.$togglink;
if ($newpostsflag) {
- $chglink .= '&previous='.$prevread;
+ $chglink .= '&previous='.$prevread;
}
$chglink.=&group_args($group);
@@ -376,91 +403,53 @@ sub list_discussion {
my $manifestfilename = $tempexport.$manifest;
if ($manifestfile = Apache::File->new('>'.$manifestfilename)) {
$manifestok=1;
- print $manifestfile qq|
-
+ print $manifestfile qq|
- Discussion for $ressymb\n|;
+ $lt{'difo'} $ressymb\n|;
} else {
- $discussion .= 'An error occurred opening the manifest file.
';
+ $discussion .= $lt{'aner'}.'
';
}
} else {
my $colspan=$maxdepth+1;
- $discussion.= qq|
-
- |;
- $discussion.='