';
+ }
+ }
if ($dischash{$toggkey}) {
my $storebutton = &mt('Store read/unread changes');
$discussion.='
'.
@@ -578,27 +651,25 @@ END
|;
close($manifestfile);
+ if ((defined($imsextras)) && ($$imsextras{'caller'} eq 'imsexport')) {
+ $discussion = $copyresult;
+ } else {
#Create zip file in prtspool
- my $imszipfile = '/prtspool/'.
- $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;
+ my $imszipfile = '/prtspool/'.
+ $env{'user.name'}.'_'.$env{'user.domain'}.'_'.
+ time.'_'.rand(1000000000).'.zip';
+ my $cwd = &getcwd();
+ my $imszip = '/home/httpd/'.$imszipfile;
+ chdir $tempexport;
+ open(OUTPUT, "zip -r $imszip * 2> /dev/null |");
+ close(OUTPUT);
+ chdir $cwd;
+ $discussion .= 'Download the zip file from Discussion Posting Archive ';
+ if ($copyresult) {
+ $discussion .= 'The following errors occurred during export - '.$copyresult;
+ }
}
} else {
$discussion .= ' Unfortunately you will not be able to retrieve an archive of the discussion posts at this time, because there was a problem creating a manifest file. ';
@@ -614,10 +685,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) {
@@ -638,8 +709,8 @@ to course faculty Title:
ENDDISCUSS
- if ($ENV{'form.origpage'}) {
- $discussion.=''."\n";
+ if ($env{'form.origpage'}) {
+ $discussion.=''."\n";
foreach (@currnewattach) {
$discussion.=''."\n";
}
@@ -668,12 +739,12 @@ 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.='
@@ -1682,30 +1799,13 @@ sub print_sortfilter_options {
my $section_sel = '';
my $numsections = 0;
my $numvisible = 5;
- my ($classlist) = &Apache::loncoursedata::get_classlist(
- $ENV{'request.course.id'},
- $ENV{'course.'.$ENV{'request.course.id'}.'.domain'},
- $ENV{'course.'.$ENV{'request.course.id'}.'.num'});
-
- my $sec_index = &Apache::loncoursedata::CL_SECTION();
- my $status_index = &Apache::loncoursedata::CL_STATUS();
my %sectioncount = ();
- while (my ($student,$data) = each %$classlist) {
- my ($section,$status) = ($data->[$sec_index],
- $data->[$status_index]);
- unless ($section eq '' || $section =~ /^\s*$/) {
- if (!defined($sectioncount{$section})) {
- $sectioncount{$section} = 1;
- $numsections ++;
- } else {
- $sectioncount{$section} ++;
- }
- }
- }
-
- if ($ENV{'request.course.sec'} !~ /^\s*$/) {
- @sections = ($ENV{'request.course.sec'});
- $numvisible = 1;
+
+ $numsections = &Apache::loncommon::get_sections($env{'course.'.$env{'request.course.id'}.'.domain'},$env{'course.'.$env{'request.course.id'}.'.num'},\%sectioncount);
+
+ if ($env{'request.course.sec'} !~ /^\s*$/) { #Restrict section choice to current section
+ @sections = ('all',$env{'request.course.sec'});
+ $numvisible = 2;
} else {
@sections = sort {$a cmp $b} keys(%sectioncount);
unshift(@sections,'all'); # Put 'all' at the front of the list
@@ -1719,7 +1819,7 @@ sub print_sortfilter_options {
my $function = &Apache::loncommon::get_users_function();
my $tabcolor = &Apache::loncommon::designparm($function.'.tabbg',
- $ENV{'user.domain'});
+ $env{'user.domain'});
my $bodytag=&Apache::loncommon::bodytag('Discussion options',
'','');
my %lt = &Apache::lonlocal::texthash(
@@ -1727,19 +1827,49 @@ sub print_sortfilter_options {
'diop' => 'Display Options',
'curr' => 'Current setting ',
'actn' => 'Action',
- 'prca' => 'Options can be set that control the sort order of the posts, in addition to which posts are displayed.',
+ 'prca' => 'Set options that control the sort order of posts, and/or which posts are displayed.',
'soor' => 'Sort order',
- 'disp' => 'Specific user roles',
- 'actv' => 'Specific role status',
+ 'spur' => 'Specific user roles',
+ 'sprs' => 'Specific role status',
'spse' => 'Specific sections',
'psub' => 'Pick specific users (by name)',
'shal' => 'Show a list of current posters'
);
+
+ my %sort_types = ();
+ my %role_types = ();
+ my %status_types = ();
+ &sort_filter_names(\%sort_types,\%role_types,\%status_types);
+ my $html=&Apache::lonxml::xmlbegin();
$r->print(<
+$html
$lt{'diso'}
+
$bodytag
@@ -1814,16 +1945,19 @@ END
sub print_showposters {
my ($r,$symb,$previous,$feedurl,$sortposts) = @_;
+ &Apache::loncommon::content_type($r,'text/html');
+ $r->send_http_header;
+
&Apache::lonenc::check_encrypt(\$symb);
- my $crs='/'.$ENV{'request.course.id'};
- if ($ENV{'request.course.sec'}) {
- $crs.='_'.$ENV{'request.course.sec'};
+ my $crs='/'.$env{'request.course.id'};
+ if ($env{'request.course.sec'}) {
+ $crs.='_'.$env{'request.course.sec'};
}
$crs=~s/\_/\//g;
my $seeid=&Apache::lonnet::allowed('rin',$crs);
- my %contrib=&Apache::lonnet::restore($symb,$ENV{'request.course.id'},
- $ENV{'course.'.$ENV{'request.course.id'}.'.domain'},
- $ENV{'course.'.$ENV{'request.course.id'}.'.num'});
+ my %contrib=&Apache::lonnet::restore($symb,$env{'request.course.id'},
+ $env{'course.'.$env{'request.course.id'}.'.domain'},
+ $env{'course.'.$env{'request.course.id'}.'.num'});
my %namesort = ();
my %postcounts = ();
my %lt=&Apache::lonlocal::texthash(
@@ -1862,8 +1996,9 @@ sub print_showposters {
}
}
}
+ my $html=&Apache::lonxml::xmlbegin();
$r->print(<
+$html
$lt{'diso'}
@@ -1890,7 +2025,7 @@ END
next;
} else {
$count ++;
- $r->print('
'.$count.'
'.$last.', '.$first.' ('.$uname.','.$udom.')
'.$postcounts{$_}.'
');
+ $r->print('
'.$count.'
'.$last.', '.$first.' ('.$uname.','.$udom.')
'.$postcounts{$_}.'
');
}
}
}
@@ -1971,17 +2106,20 @@ sub get_post_attachments {
return;
}
-sub fail_redirect {;
+sub fail_redirect {
my ($r,$feedurl) = @_;
if ($feedurl=~/^\/adm\//) { $feedurl.='?register=1' };
+ my $logo=&Apache::loncommon::lonhttpdurl('/adm/lonIcons/lonlogos.gif');
+ my $html=&Apache::lonxml::xmlbegin();
$r->print (<
-Feedback not sent
+$html
+
+Feedback not sent
-
+
Sorry, no recipients ... Continue
@@ -1990,7 +2128,7 @@ ENDFAILREDIR
}
sub redirect_back {
- my ($r,$feedurl,$typestyle,$sendsomething,$sendposts,$status,$previous,$sort,$rolefilter,$statusfilter,$secpick,$numpicks) = @_;
+ my ($r,$feedurl,$typestyle,$sendsomething,$sendposts,$status,$previous,$sort,$rolefilter,$statusfilter,$sectionpick,$numpicks) = @_;
my $sorttag = '';
my $roletag = '';
my $statustag = '';
@@ -2021,30 +2159,55 @@ sub redirect_back {
$feedurl .= '?'.$sortqry;
}
$sorttag = '';
- if ( (defined($numpicks)) && ($numpicks > 0) ) {
+ if (defined($numpicks)) {
my $userpickqry = 'totposters='.$numpicks;
$feedurl .= '&'.$userpickqry;
$userpicktag = '';
} else {
- my $roleqry = 'rolefilter='.$rolefilter;
- $feedurl .= '&'.$roleqry;
- $roletag = '';
+ if (ref($sectionpick) eq 'ARRAY') {
+ $feedurl .= '§ionpick=';
+ $sectag .= '';
+ } else {
+ $feedurl .= '§ionpick='.$sectionpick;
+ $sectag = '';
+ }
+ if (ref($rolefilter) eq 'ARRAY') {
+ $feedurl .= '&rolefilter=';
+ $roletag .= '';
+ } else {
+ $feedurl .= '&rolefilter='.$rolefilter;
+ $roletag = '';
+ }
$feedurl .= '&statusfilter='.$statusfilter;
$statustag ='';
- $feedurl .= '§ionpick='.$secpick;
- $sectag = '';
}
}
$feedurl=&Apache::lonenc::check_encrypt($feedurl);
+ my $logo=&Apache::loncommon::lonhttpdurl('/adm/lonIcons/lonlogos.gif');
+ my $html=&Apache::lonxml::xmlbegin();
$r->print (<
+$html
Feedback sent
-
+
$typestyle
Sent $sendsomething message(s), and $sendposts post(s).
$status
@@ -2066,9 +2229,11 @@ sub no_redirect_back {
my ($r,$feedurl) = @_;
my $nofeed=&mt('Sorry, no feedback possible on this resource ...');
my $continue=&mt('Continue');
+ my $html=&Apache::lonxml::xmlbegin();
$r->print (<
-Feedback not sent
+$html
+
+Feedback not sent
ENDNOREDIR
@@ -2077,10 +2242,11 @@ ENDNOREDIR
&Apache::lonenc::check_encrypt($feedurl).'">');
}
$feedurl=&Apache::lonenc::check_encrypt($feedurl);
+ my $logo=&Apache::loncommon::lonhttpdurl('/adm/lonIcons/lonlogos.gif');
$r->print (<
-
+
$nofeed $continue
@@ -2092,44 +2258,46 @@ sub screen_header {
my ($feedurl,$symb) = @_;
my $msgoptions='';
my $discussoptions='';
- unless (($ENV{'form.replydisc'}) || ($ENV{'form.editdisc'})) {
+ unless (($env{'form.replydisc'}) || ($env{'form.editdisc'})) {
if (($feedurl=~/^\/res\//) && ($feedurl!~/^\/res\/adm/)) {
$msgoptions=
- '
'.
- &mt('Feedback to resource author').'
';
+ '';
}
if (&feedback_available(1)) {
$msgoptions.=
- ' '.
- &mt('Question about resource content');
+ '';
}
if (&feedback_available(0,1)) {
$msgoptions.=
- ' '.
- &mt('Question/Comment/Feedback about course content');
+ '';
}
if (&feedback_available(0,0,1)) {
$msgoptions.=
- ' '.
- &mt('Question/Comment/Feedback about course policy');
+ '';
}
}
- if ($ENV{'request.course.id'}) {
+ if ($env{'request.course.id'}) {
if (&discussion_open(undef,$symb) &&
&Apache::lonnet::allowed('pch',
- $ENV{'request.course.id'}.
- ($ENV{'request.course.sec'}?'/'.$ENV{'request.course.sec'}:''))) {
- $discussoptions=' '.
+ $env{'request.course.id'}.
+ ($env{'request.course.sec'}?'/'.$env{'request.course.sec'}:''))) {
+ $discussoptions=' ';
}
}
- if ($msgoptions) { $msgoptions='
'.&mt('Sending Messages').'
'.$msgoptions; }
+ if ($msgoptions) { $msgoptions='
'.&mt('Sending Messages').'
'.$msgoptions; }
if ($discussoptions) {
- $discussoptions='
'.&mt('Discussion Contributions').'
'.$discussoptions; }
+ $discussoptions='
'.&mt('Discussion Contributions').'
'.$discussoptions; }
return $msgoptions.$discussoptions;
}
@@ -2152,15 +2320,15 @@ sub clear_out_html {
# Always allow the -tag
my %html=(M=>1);
# Check if more is allowed
- my $cid=$ENV{'request.course.id'};
- if (($ENV{"course.$cid.allow_limited_html_in_feedback"} =~ m/yes/i) ||
+ my $cid=$env{'request.course.id'};
+ if (($env{"course.$cid.allow_limited_html_in_feedback"} =~ m/yes/i) ||
($override)) {
# allows