version 1.29, 2007/05/21 22:37:49
|
version 1.37, 2008/02/05 06:51:55
|
Line 3
|
Line 3
|
# multiple students. |
# multiple students. |
# |
# |
# $Id$ |
# $Id$ |
# |
|
# Copyright Michigan State University Board of Trustees |
# Copyright Michigan State University Board of Trustees |
# |
# |
# This file is part of the LearningOnline Network with CAPA (LON-CAPA). |
# This file is part of the LearningOnline Network with CAPA (LON-CAPA). |
Line 32 use LONCAPA::loncgi;
|
Line 31 use LONCAPA::loncgi;
|
use File::Path; |
use File::Path; |
use File::Basename; |
use File::Basename; |
use File::Copy; |
use File::Copy; |
use IO::File; |
|
use Apache::lonhtmlcommon(); |
use Apache::lonhtmlcommon(); |
use Apache::lonnavmaps; |
use Apache::lonnavmaps(); |
use Apache::lonnet; |
|
use Apache::loncommon(); |
use Apache::loncommon(); |
use Apache::lonlocal; |
use Apache::lonlocal; |
use Apache::lonmsg(); |
use Apache::lonmsg(); |
Line 58 sub is_flat {
|
Line 55 sub is_flat {
|
} |
} |
return ($flat_part, $flat_resp); |
return ($flat_part, $flat_resp); |
} |
} |
|
|
|
|
sub get_part_resp_path { |
sub get_part_resp_path { |
my ($flat_part, $flat_resp, $part_id, $resp_id) = @_; |
my ($flat_part, $flat_resp, $part_id, $resp_id) = @_; |
my $part_resp_path = ""; |
my $part_resp_path = ""; |
Line 70 sub get_part_resp_path {
|
Line 69 sub get_part_resp_path {
|
$part_resp_path =~ s/\/^//; |
$part_resp_path =~ s/\/^//; |
return('/'.$part_resp_path); |
return('/'.$part_resp_path); |
} |
} |
|
|
|
|
$|=1; |
$|=1; |
if (! &LONCAPA::loncgi::check_cookie_and_load_env()) { |
if (! &LONCAPA::loncgi::check_cookie_and_load_env()) { |
print <<END; |
print <<END; |
Line 84 Your cookie information is incorrect.
|
Line 85 Your cookie information is incorrect.
|
END |
END |
return; |
return; |
} |
} |
|
|
&Apache::lonlocal::get_language_handle(); |
&Apache::lonlocal::get_language_handle(); |
&Apache::loncommon::content_type(undef,'text/html'); |
&Apache::loncommon::content_type(undef,'text/html'); |
my $identifier = $ENV{'QUERY_STRING'}; |
my $identifier = $ENV{'QUERY_STRING'}; |
Line 119 if (&Apache::lonnet::allowed('vgr',$scop
|
Line 121 if (&Apache::lonnet::allowed('vgr',$scop
|
&Apache::lonnet::logthis("Problem making manifest"); |
&Apache::lonnet::logthis("Problem making manifest"); |
} |
} |
print MANIFEST (&mt("Zip file generated on [_1]",&Apache::lonlocal::locallocaltime(time()))."\n"); |
print MANIFEST (&mt("Zip file generated on [_1]",&Apache::lonlocal::locallocaltime(time()))."\n"); |
print MANIFEST (&mt("Files contained in this zip:\n")); |
print MANIFEST (&mt("Course: [_1]",$env{"course.$courseid.description"})."\n"); |
|
print MANIFEST (&mt("Problem: [_1]",$res->compTitle)."\n"); |
|
print MANIFEST (&mt("Files contained in this zip:")."\n"); |
my $file_problem = 0; |
my $file_problem = 0; |
my $current_student = 0; |
my $current_student = 0; |
foreach my $stu (@stuchecked) { |
foreach my $stu (@stuchecked) { |
Line 130 if (&Apache::lonnet::allowed('vgr',$scop
|
Line 134 if (&Apache::lonnet::allowed('vgr',$scop
|
my %record = &Apache::lonnet::restore($symb,$courseid,$studom,$stuname); |
my %record = &Apache::lonnet::restore($symb,$courseid,$studom,$stuname); |
my $file_url = '/uploaded/'.$studom.'/'.$stuname.'/portfolio'; |
my $file_url = '/uploaded/'.$studom.'/'.$stuname.'/portfolio'; |
print MANIFEST ($fullname."\n"); |
print MANIFEST ($fullname."\n"); |
|
|
|
my $submission_count = 0; |
foreach my $partid (@$partlist) { |
foreach my $partid (@$partlist) { |
my @ids = $res->responseIds($partid); |
my @ids = $res->responseIds($partid); |
foreach my $respid(@ids) { |
foreach my $respid (@ids) { |
my $part_resp_path = &get_part_resp_path($flat_part,$flat_resp, $partid, $respid); |
my $part_resp_path = &get_part_resp_path($flat_part,$flat_resp, $partid, $respid); |
&mkpath($doc_zip_root."/zipdir/$unique_user/$unique_path/$stuname/$part_resp_path",0,0700); |
&mkpath($doc_zip_root."/zipdir/$unique_user/$unique_path/$stuname/$part_resp_path",0,0700); |
foreach my $file (split(',',$record{"resource.$partid.$respid.portfiles"})) { |
foreach my $file (split(',',$record{"resource.$partid.$respid.portfiles"})) { |
$file = $file_url.$file; |
$file = $file_url.$file; |
my ($file_name_only) = ($file =~ /^.*\/(.+$)/); |
my ($file_name_only) = ($file =~ /^.*\/(.+$)/); |
print MANIFEST ("\t$file_name_only \n"); |
print MANIFEST ("\t$file_name_only (".&mt("Part [_1]",$partid). |
|
") (".&mt("Response [_1]",$respid).")"."\n"); |
|
$submission_count ++; |
&Apache::lonnet::repcopy($file); |
&Apache::lonnet::repcopy($file); |
my $source = &Apache::lonnet::filelocation("",$file); |
my $source = &Apache::lonnet::filelocation("",$file); |
|
|
my $destination = "$doc_zip_root/zipdir/$unique_user/$unique_path/$stuname$part_resp_path/$file_name_only"; |
my $destination = "$doc_zip_root/zipdir/$unique_user/$unique_path/$stuname$part_resp_path/$file_name_only"; |
if (exists($files_saved{$destination})) { |
if (exists($files_saved{$destination})) { |
# file has already been saved once |
# file has already been saved once |
my ($file_name,$file_ext) = ($destination =~ /(^.*)(\..+$)/); |
my ($file_name,$file_ext) = ($destination =~ /(^.*)(\..+$)/); |
$destination = $file_name.$files_saved{$destination}.$file_ext; |
$destination = $file_name.$files_saved{$destination}.$file_ext; |
$files_saved{$destination} ++; |
$files_saved{$destination}++; |
} |
} |
$files_saved{$destination}++; |
$files_saved{$destination}++; |
if (!©($source,$destination)) { |
if (!©($source,$destination)) { |
if (!$file_problem) { |
if (!$file_problem) { |
print(&mt("Unable to create: <br />")); |
print(&mt("Unable to create: ")."<br />"); |
$file_problem = 1; |
$file_problem = 1; |
} |
} |
print("$stuname/part$partid/resp$respid/$file_name_only <br />"); |
print("$stuname/part$partid/resp$respid/$file_name_only <br />"); |
Line 160 if (&Apache::lonnet::allowed('vgr',$scop
|
Line 167 if (&Apache::lonnet::allowed('vgr',$scop
|
} |
} |
} |
} |
} |
} |
|
if (!$submission_count) { |
|
print MANIFEST ("\t".&mt("No Files Submitted")."\n"); |
|
} |
} |
} |
|
|
&mkpath($doc_zip_root."/zipout/$unique_user",0,0700); |
&mkpath($doc_zip_root."/zipout/$unique_user",0,0700); |