--- loncom/interface/lonfeedback.pm 2017/11/03 21:36:27 1.374
+++ loncom/interface/lonfeedback.pm 2018/04/14 17:52:43 1.379
@@ -1,7 +1,7 @@
# The LearningOnline Network
# Feedback
#
-# $Id: lonfeedback.pm,v 1.374 2017/11/03 21:36:27 raeburn Exp $
+# $Id: lonfeedback.pm,v 1.379 2018/04/14 17:52:43 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -44,7 +44,7 @@ use HTML::LCParser();
#use HTML::Tidy::libXML;
use Apache::lonspeller();
use Apache::longroup;
-use Cwd;
+use Archive::Zip qw( :ERROR_CODES );
use LONCAPA qw(:DEFAULT :match);
sub discussion_open {
@@ -674,7 +674,7 @@ END
$newpostsflag,$group,
$prevread,$markondisp,$seehidden);
$discussion .= "\n";
- }
+ }
if ($outputtarget eq 'export') {
if ($manifestok) {
while ($currdepth > 0) {
@@ -698,18 +698,19 @@ END
if (($env{'user.name'} =~ /^$match_username$/)
&& ($env{'user.domain'} =~ /^$match_domain$/)) {
- my $now = time();
+ my $now = time();
my $imszipfile = '/prtspool/'.
join('_',$env{'user.name'},$env{'user.domain'},$now).
'_'.rand(1000000000).'.zip';
- my $cwd = &getcwd();
+ my $zip = Archive::Zip->new();
+ $zip->addTree($tempexport);
my $imszip = '/home/httpd/'.$imszipfile;
- chdir $tempexport;
- open(OUTPUT, "zip -r $imszip * 2> /dev/null |");
- close(OUTPUT);
- chdir $cwd;
- $discussion .= &mt('Download the zip file from [_1]Discussion Posting Archive[_2]',
+ if ($zip->writeToFileNamed($imszip) == AZ_OK) {
+ $discussion .= &mt('Download the zip file from [_1]Discussion Posting Archive[_2]',
'','').'
';
+ } else {
+ $discussion .= &mt('Failed to create zip file').'
';
+ }
if ($copyresult) {
$discussion .= ''.
&mt('The following errors occurred during export:').
@@ -854,7 +855,7 @@ sub send_feedback_link {
&discussion_link($ressymb,
' ',
+ '" /> ',
'replydisc').
'';
}
@@ -865,7 +866,7 @@ sub send_message_link {
&discussion_link($ressymb,
'
',
+ '" /> ',
'sendmessageonly').
'';
return $output;
@@ -2839,6 +2840,10 @@ sub redirect_back {
my $start_page=
&Apache::loncommon::start_page('Feedback sent',undef,\%parms);
my $end_page = &Apache::loncommon::end_page();
+ my $windowname = 'loncapaclient';
+ if ($env{'request.lti.login'}) {
+ $windowname .= 'lti';
+ }
$r->print(<