--- loncom/interface/lonfeedback.pm 2005/02/17 04:39:58 1.152
+++ loncom/interface/lonfeedback.pm 2005/10/04 18:27:32 1.169
@@ -1,7 +1,7 @@
# The LearningOnline Network
# Feedback
#
-# $Id: lonfeedback.pm,v 1.152 2005/02/17 04:39:58 albertel Exp $
+# $Id: lonfeedback.pm,v 1.169 2005/10/04 18:27:32 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -35,6 +35,7 @@ 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();
@@ -61,7 +62,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 +70,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 +85,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 +97,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 +113,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 +126,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 +153,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 +173,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 +185,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;
}
@@ -236,15 +238,15 @@ sub list_discussion {
my $maxdepth=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'});
+ &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);
my $discussion='';
@@ -256,7 +258,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 +324,11 @@ sub list_discussion {
if ($visible) {
# Print the discusssion
if ($outputtarget eq 'tex') {
- $discussion.='\vskip 0 mm\noindent\makebox[2 cm][b]{\hrulefill}'.
+ $discussion.='{\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'.
'\noindent\textbf{'.$lt{'disa'}.'}: \textit{'.$currdisp.'}\vskip 0 mm'.
- '\noindent\textbf{'.$lt{'npce'}.'}: \textit{'.$currmark.'}';
+ '\noindent\textbf{'.$lt{'npce'}.'}: \textit{'.$currmark.'}}';
} elsif ($outputtarget eq 'export') {
# Create temporary directory if this is an export
my $now = time;
@@ -348,7 +350,7 @@ sub list_discussion {
if (!-e $tempexport) {
mkdir($tempexport,0700);
}
- $tempexport .= '/'.$ENV{'user.domain'}.'_'.$ENV{'user.name'};
+ $tempexport .= '/'.$env{'user.domain'}.'_'.$env{'user.name'};
}
if (!-e $tempexport) {
mkdir($tempexport,0700);
@@ -472,7 +474,7 @@ imscp_v1p1.xsd http://www.imsglobal.org/
my $currdepth = 0;
my $firstidx = $alldiscussion{$showposts[0]};
foreach (@showposts) {
- unless (($sortposts eq 'thread') || (($sortposts eq '') && ($ENV{'environment.threadeddiscussion'})) || ($outputtarget eq 'export')) {
+ unless (($sortposts eq 'thread') || (($sortposts eq '') && ($env{'environment.threadeddiscussion'})) || ($outputtarget eq 'export')) {
$alldiscussion{$_} = $_;
}
unless ( ($notshown{$alldiscussion{$_}} eq '1') || ($shown{$alldiscussion{$_}} == 0) ) {
@@ -584,7 +586,7 @@ END
&sort_filter_names(\%sort_types,\%role_types,\%status_types);
$discussion .= '
'.&mt('Sorted by').': '.$sort_types{$sortposts}.' ';
- if (defined($ENV{'form.totposters'})) {
+ if (defined($env{'form.totposters'})) {
$discussion .= &mt('Posts by').':';
if ($totposters > 0) {
foreach my $poster (@posters) {
@@ -598,7 +600,7 @@ END
} else {
my $filterchoice ='';
if (@sectionpick > 0) {
- $filterchoice = ''.&mt('sections').'- '.$ENV{'form.sectionpick'};
+ $filterchoice = ''.&mt('sections').'- '.$env{'form.sectionpick'};
$filterchoice .= ' ';
}
if (@rolefilter > 0) {
@@ -657,20 +659,14 @@ END
#Create zip file in prtspool
my $imszipfile = '/prtspool/'.
- $ENV{'user.name'}.'_'.$ENV{'user.domain'}.'_'.
+ $env{'user.name'}.'_'.$env{'user.domain'}.'_'.
time.'_'.rand(1000000000).'.zip';
- # zip can cause an sh launch which can pass along all of %ENV
- # which can be too large for /bin/sh to handle
- my %oldENV=%ENV;
- undef(%ENV);
my $cwd = &getcwd();
my $imszip = '/home/httpd/'.$imszipfile;
chdir $tempexport;
open(OUTPUT, "zip -r $imszip * 2> /dev/null |");
close(OUTPUT);
chdir $cwd;
- %ENV=%oldENV;
- undef(%oldENV);
$discussion .= 'Download the zip file from Discussion Posting Archive ';
if ($copyresult) {
$discussion .= 'The following errors occurred during export - '.$copyresult;
@@ -690,10 +686,10 @@ END
my @currdelold = ();
my $comment = '';
my $subject = '';
- if ($ENV{'form.origpage'}) {
+ if ($env{'form.origpage'}) {
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['addnewattach','deloldattach','delnewattach','timestamp','idx','subject','comment']);
- $subject = &Apache::lonnet::unescape($ENV{'form.subject'});
- $comment = &Apache::lonnet::unescape($ENV{'form.comment'});
+ $subject = &Apache::lonnet::unescape($env{'form.subject'});
+ $comment = &Apache::lonnet::unescape($env{'form.comment'});
my @keepold = ();
&process_attachments(\@currnewattach,\@currdelold,\@keepold);
if (@currnewattach > 0) {
@@ -714,8 +710,8 @@ to course faculty Title:
ENDDISCUSS
- if ($ENV{'form.origpage'}) {
- $discussion.=''."\n";
+ if ($env{'form.origpage'}) {
+ $discussion.=''."\n";
foreach (@currnewattach) {
$discussion.=''."\n";
}
@@ -744,8 +740,8 @@ ENDDISCUSS
} else {
if (&discussion_open($status) &&
&Apache::lonnet::allowed('pch',
- $ENV{'request.course.id'}.
- ($ENV{'request.course.sec'}?'/'.$ENV{'request.course.sec'}:''))) {
+ $env{'request.course.id'}.
+ ($env{'request.course.sec'}?'/'.$env{'request.course.sec'}:''))) {
if ($outputtarget ne 'tex') {
$discussion.='