[LON-CAPA-cvs] cvs: loncom /interface multidownload.pl

raeburn raeburn@source.lon-capa.org
Tue, 30 Dec 2008 23:18:24 -0000


raeburn		Tue Dec 30 23:18:24 2008 EDT

  Modified files:              
    /loncom/interface	multidownload.pl 
  Log:
  - Missing cookie message generated from &LONCAPA::loncgi::missing_cookie_msg().
  - zip file can contain directly uploaded files as well as files submitted from a portfolio.
  - CSS: LC_error and LC_filename   
  
  
Index: loncom/interface/multidownload.pl
diff -u loncom/interface/multidownload.pl:1.37 loncom/interface/multidownload.pl:1.38
--- loncom/interface/multidownload.pl:1.37	Tue Feb  5 06:51:55 2008
+++ loncom/interface/multidownload.pl	Tue Dec 30 23:18:24 2008
@@ -2,7 +2,7 @@
 # CGI-script to allow download of all essay submissions of 
 # multiple students.
 #
-# $Id: multidownload.pl,v 1.37 2008/02/05 06:51:55 raeburn Exp $
+# $Id: multidownload.pl,v 1.38 2008/12/30 23:18:24 raeburn Exp $
 # Copyright Michigan State University Board of Trustees
 #
 # This file is part of the LearningOnline Network with CAPA (LON-CAPA).
@@ -72,22 +72,13 @@
 
 
 $|=1;
+&Apache::lonlocal::get_language_handle();
+&Apache::loncommon::content_type(undef,'text/html');
 if (! &LONCAPA::loncgi::check_cookie_and_load_env()) {
-    print <<END;
-Content-type: text/html
-
-<html>
-<head><title>Bad Cookie</title></head>
-<body>
-Your cookie information is incorrect.
-</body>
-</html>
-END
+    print(&LONCAPA::loncgi::missing_cookie_msg());
     return;
 }
 
-&Apache::lonlocal::get_language_handle();
-&Apache::loncommon::content_type(undef,'text/html');
 my $identifier = $ENV{'QUERY_STRING'};
 my $unique_path = $identifier.time();
 print(&Apache::loncommon::start_page('Multiple Downloads'));
@@ -132,7 +123,7 @@
         my %files_saved;
         my ($stuname,$studom,$fullname) = split(/:/,$stu);
         my %record = &Apache::lonnet::restore($symb,$courseid,$studom,$stuname);
-        my $file_url = '/uploaded/'.$studom.'/'.$stuname.'/portfolio';
+        my $port_url = '/uploaded/'.$studom.'/'.$stuname.'/portfolio';
         print MANIFEST ($fullname."\n");
          
         my $submission_count = 0;
@@ -141,28 +132,41 @@
             foreach my $respid (@ids) {
                 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);
-                foreach my $file (split(',',$record{"resource.$partid.$respid.portfiles"})) {
-                    $file = $file_url.$file;
-                    my ($file_name_only) = ($file =~ /^.*\/(.+$)/);
-                    print MANIFEST ("\t$file_name_only (".&mt("Part [_1]",$partid).
-                                    ") (".&mt("Response [_1]",$respid).")"."\n");
-                    $submission_count ++;
-                    &Apache::lonnet::repcopy($file);
-                    my $source = &Apache::lonnet::filelocation("",$file);
-                    my $destination = "$doc_zip_root/zipdir/$unique_user/$unique_path/$stuname$part_resp_path/$file_name_only";
-                    if (exists($files_saved{$destination})) {
-                        # file has already been saved once
-                        my ($file_name,$file_ext) = ($destination =~ /(^.*)(\..+$)/);
-                        $destination = $file_name.$files_saved{$destination}.$file_ext;
-                        $files_saved{$destination}++;
+                foreach my $origin ('portfiles','uploadedurl') {
+                    my @files;
+                    if ($record{"resource.$partid.$respid.$origin"} ne '') {
+                        if ($origin eq 'portfiles') {
+                            @files = (split(',',$record{"resource.$partid.$respid.$origin"}));
+                        } else {
+                            @files = ($record{"resource.$partid.$respid.$origin"});
+                        }
                     }
-                    $files_saved{$destination}++;
-                    if (!&copy($source,$destination)) {
-                        if (!$file_problem) {
-                            print(&mt("Unable to create: ")."<br />");
-                            $file_problem = 1;
+                    foreach my $file (@files) {
+                        if ($origin eq 'portfiles') { 
+                            $file = $port_url.$file;
+                        }
+                        my ($file_name_only) = ($file =~ m{.*/([^/]+)$});
+                        print MANIFEST ("\t$file_name_only (".&mt("Part [_1]",$partid).
+                                        ") (".&mt("Response [_1]",$respid).")"."\n");
+                        $submission_count ++;
+                        &Apache::lonnet::repcopy($file);
+                        my $source = &Apache::lonnet::filelocation("",$file);
+                        my $destination = "$doc_zip_root/zipdir/$unique_user/$unique_path/$stuname$part_resp_path/$file_name_only";
+                        if (exists($files_saved{$destination})) {
+                            # file has already been saved once
+                            my ($file_name,$file_ext) = 
+                                ($destination =~ /(^.*)(\..+$)/);
+                            $destination = $file_name.$files_saved{$destination}.$file_ext;
+                            $files_saved{$destination}++;
+                        }
+                        $files_saved{$destination}++;
+                        if (!&copy($source,$destination)) {
+                            if (!$file_problem) {
+                                print('<br /><span class="LC_error">'.&mt("Unable to create: ")."</span><br />");
+                                $file_problem = 1;
+                            }
+                            print('<span class="LC_filename">'."$stuname/part$partid/resp$respid/$file_name_only".'</span><br />');
                         }
-                        print("$stuname/part$partid/resp$respid/$file_name_only <br />");
                     }
                 }
             }