--- loncom/interface/lonfeedback.pm 2004/12/23 14:00:58 1.147
+++ loncom/interface/lonfeedback.pm 2006/03/02 18:54:49 1.181
@@ -1,7 +1,7 @@
# The LearningOnline Network
# Feedback
#
-# $Id: lonfeedback.pm,v 1.147 2004/12/23 14:00:58 raeburn Exp $
+# $Id: lonfeedback.pm,v 1.181 2006/03/02 18:54:49 www Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -35,15 +35,18 @@ use Apache::lonmsg();
use Apache::loncommon();
use Apache::lontexconvert();
use Apache::lonlocal; # must not have ()
+use Apache::lonnet;
use Apache::lonhtmlcommon();
use Apache::lonnavmaps;
use Apache::lonenc();
+use Apache::lonrss();
use HTML::LCParser();
use Apache::lonspeller();
use Cwd;
sub discussion_open {
my ($status,$symb)=@_;
+ if ($env{'request.role.adv'}) { return 1; }
if (defined($status) &&
!($status eq 'CAN_ANSWER' || $status eq 'CANNOT_ANSWER'
|| $status eq 'OPEN')) {
@@ -61,7 +64,7 @@ sub discussion_visible {
if (not &discussion_open($status)) {
my $hidden=&Apache::lonnet::EXT('resource.0.discusshide');
if (lc($hidden) eq 'yes' or $hidden eq '' or !defined($hidden)) {
- if (!$ENV{'request.role.adv'}) { return 0; }
+ if (!$env{'request.role.adv'}) { return 0; }
}
}
return 1;
@@ -69,9 +72,9 @@ sub discussion_visible {
sub list_discussion {
my ($mode,$status,$ressymb,$imsextras)=@_;
- my $outputtarget=$ENV{'form.grade_target'};
- if (defined($ENV{'form.export'})) {
- if($ENV{'form.export'}) {
+ my $outputtarget=$env{'form.grade_target'};
+ if (defined($env{'form.export'})) {
+ if($env{'form.export'}) {
$outputtarget = 'export';
}
}
@@ -84,11 +87,11 @@ sub list_discussion {
my @bgcols = ("#cccccc","#eeeeee");
my $discussiononly=0;
if ($mode eq 'board') { $discussiononly=1; }
- unless ($ENV{'request.course.id'}) { return ''; }
- my $crs='/'.$ENV{'request.course.id'};
- my $cid=$ENV{'request.course.id'};
- if ($ENV{'request.course.sec'}) {
- $crs.='_'.$ENV{'request.course.sec'};
+ unless ($env{'request.course.id'}) { return ''; }
+ my $crs='/'.$env{'request.course.id'};
+ my $cid=$env{'request.course.id'};
+ if ($env{'request.course.sec'}) {
+ $crs.='_'.$env{'request.course.sec'};
}
$crs=~s/\_/\//g;
unless ($ressymb) { $ressymb=&Apache::lonnet::symbread(); }
@@ -96,7 +99,7 @@ sub list_discussion {
$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)$/));
+ && ($ressymb=~/\.(problem|exam|quiz|assess|survey|form|task)$/));
my %usernamesort = ();
my %namesort =();
@@ -112,7 +115,7 @@ sub list_discussion {
my $toggkey = $ressymb.'_readtoggle';
my $readkey = $ressymb.'_read';
$ressymb=$encsymb;
- my %dischash = &Apache::lonnet::get('nohist_'.$ENV{'request.course.id'}.'_discuss',[$lastkey,$showkey,$markkey,$visitkey,$ondispkey,$userpickkey,$toggkey,$readkey],$ENV{'user.domain'},$ENV{'user.name'});
+ my %dischash = &Apache::lonnet::get('nohist_'.$cid.'_discuss',[$lastkey,$showkey,$markkey,$visitkey,$ondispkey,$userpickkey,$toggkey,$readkey],$env{'user.domain'},$env{'user.name'});
my %discinfo = ();
my $showonlyunread = 0;
my $showunmark = 0;
@@ -125,22 +128,22 @@ sub list_discussion {
# 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','totposters']);
- my $sortposts = $ENV{'form.sortposts'};
- my $statusfilter = $ENV{'form.statusfilter'};
+ my $sortposts = $env{'form.sortposts'};
+ my $statusfilter = $env{'form.statusfilter'};
my @sectionpick = ();
- if ($ENV{'form.sectionpick'} =~ /,/) {
- @sectionpick = split/,/,$ENV{'form.sectionpick'};
+ if ($env{'form.sectionpick'} =~ /,/) {
+ @sectionpick = split/,/,$env{'form.sectionpick'};
} else {
- $sectionpick[0] = $ENV{'form.sectionpick'};
+ $sectionpick[0] = $env{'form.sectionpick'};
}
my @rolefilter = ();
- if ($ENV{'form.rolefilter'} =~ /,/) {
- @rolefilter = split/,/,$ENV{'form.rolefilter'};
+ if ($env{'form.rolefilter'} =~ /,/) {
+ @rolefilter = split/,/,$env{'form.rolefilter'};
} else {
- $rolefilter[0] = $ENV{'form.rolefilter'};
+ $rolefilter[0] = $env{'form.rolefilter'};
}
- my $totposters = $ENV{'form.totposters'};
- $previous = $ENV{'form.previous'};
+ my $totposters = $env{'form.totposters'};
+ $previous = $env{'form.previous'};
if ($previous > 0) {
$prevread = $previous;
} elsif (defined($dischash{$lastkey})) {
@@ -152,8 +155,10 @@ sub list_discussion {
# Get information about students and non-students in course for filtering display of posts
my %roleshash = ();
my %roleinfo = ();
- if ($ENV{'form.rolefilter'}) {
- %roleshash = &Apache::lonnet::dump('nohist_userroles',$ENV{'course.'.$ENV{'request.course.id'}.'.domain'},$ENV{'course.'.$ENV{'request.course.id'}.'.num'});
+ if ($env{'form.rolefilter'}) {
+ %roleshash = &Apache::lonnet::dump('nohist_userroles',
+ $env{'course.'.$cid.'.domain'},
+ $env{'course.'.$cid.'.num'});
foreach (keys %roleshash) {
my ($role,$uname,$udom,$sec) = split/:/,$_;
if ($role =~ /^cr/) {
@@ -170,9 +175,8 @@ sub list_discussion {
}
}
my ($classlist) = &Apache::loncoursedata::get_classlist(
- $ENV{'request.course.id'},
- $ENV{'course.'.$ENV{'request.course.id'}.'.domain'},
- $ENV{'course.'.$ENV{'request.course.id'}.'.num'});
+ $env{'course.'.$cid.'.domain'},
+ $env{'course.'.$cid.'.num'});
my $sec_index = &Apache::loncoursedata::CL_SECTION();
my $status_index = &Apache::loncoursedata::CL_STATUS();
while (my ($student,$data) = each %$classlist) {
@@ -183,10 +187,10 @@ sub list_discussion {
}
# Get discussion display default settings for user
- if ($ENV{'environment.discdisplay'} eq 'unread') {
+ if ($env{'environment.discdisplay'} eq 'unread') {
$showonlyunread = 1;
}
- if ($ENV{'environment.discmarkread'} eq 'ondisp') {
+ if ($env{'environment.discmarkread'} eq 'ondisp') {
$markondisp = 1;
}
@@ -234,18 +238,19 @@ sub list_discussion {
my %notshown = ();
my %newitem = ();
my $maxdepth=0;
-
+ my %anonhash=();
+ my $anoncnt=0;
my $target='';
- unless ($ENV{'browser.interface'} eq 'textual' ||
- $ENV{'environment.remote'} eq 'off' ) {
+ unless ($env{'browser.interface'} eq 'textual' ||
+ $env{'environment.remote'} eq 'off' ) {
$target='target="LONcom"';
}
my $now = time;
$discinfo{$visitkey} = $visit;
- &Apache::lonnet::put('nohist_'.$ENV{'request.course.id'}.'_discuss',\%discinfo,$ENV{'user.domain'},$ENV{'user.name'});
- &build_posting_display(\%usernamesort,\%subjectsort,\%namesort,\%notshown,\%newitem,\%dischash,\%shown,\%alldiscussion,\%imsitems,\%imsfiles,\%roleinfo,\@discussionitems,\@replies,\@depth,\@posters,\$maxdepth,\$visible,\$newpostsflag,\$current,$status,$viewgrades,$seeid,$prevread,$sortposts,$encsymb,$target,$readkey,$showunmark,$showonlyunread,$totposters,\@rolefilter,\@sectionpick,$statusfilter,$toggkey,$outputtarget);
+ &Apache::lonnet::put('nohist_'.$cid.'_discuss',\%discinfo,$env{'user.domain'},$env{'user.name'});
+ &build_posting_display(\%usernamesort,\%subjectsort,\%namesort,\%notshown,\%newitem,\%dischash,\%shown,\%alldiscussion,\%imsitems,\%imsfiles,\%roleinfo,\@discussionitems,\@replies,\@depth,\@posters,\$maxdepth,\$visible,\$newpostsflag,\$current,$status,$viewgrades,$seeid,$prevread,$sortposts,$encsymb,$target,$readkey,$showunmark,$showonlyunread,$totposters,\@rolefilter,\@sectionpick,$statusfilter,$toggkey,$outputtarget,\%anonhash,$anoncnt);
my $discussion='';
my $manifestfile;
@@ -256,7 +261,7 @@ sub list_discussion {
my $function = &Apache::loncommon::get_users_function();
my $color = &Apache::loncommon::designparm($function.'.tabbg',
- $ENV{'user.domain'});
+ $env{'user.domain'});
my %lt = &Apache::lonlocal::texthash(
'cuse' => 'Current discussion settings',
'allposts' => 'All posts',
@@ -322,11 +327,11 @@ sub list_discussion {
if ($visible) {
# Print the discusssion
if ($outputtarget eq 'tex') {
- $discussion.='