[LON-CAPA-cvs] cvs: loncom /interface printout.pl
foxr
lon-capa-cvs@mail.lon-capa.org
Wed, 03 Aug 2005 10:34:06 -0000
foxr Wed Aug 3 06:34:06 2005 EDT
Modified files:
/loncom/interface printout.pl
Log:
Addressing Bug 4047:
Give a bit more indication what's going on in both status and download
when multiple files are created. There are two cases that are handled
more or less ok:
- Multiple selected students: The files are now created in the
form (oldfilename_serialfirst-last.* where first and last are
the last names of the first and last students in the range.
The download links for the individual files show the name range as
before.
- Multiple anonymous students: This had given only @ on the status line
and for each of the download links. Now we present the name of the .tex
file (not dir path, just name.tex) in the status window and for the
individual download links as well.
Index: loncom/interface/printout.pl
diff -u loncom/interface/printout.pl:1.87 loncom/interface/printout.pl:1.88
--- loncom/interface/printout.pl:1.87 Mon Jul 25 06:43:29 2005
+++ loncom/interface/printout.pl Wed Aug 3 06:34:03 2005
@@ -28,6 +28,7 @@
use lib '/home/httpd/lib/perl';
use LONCAPA::loncgi;
use File::Path;
+use File::Basename;
use IO::File;
use Image::Magick;
use Apache::lonhtmlcommon;
@@ -273,6 +274,7 @@
print "<a href=\"$backref\"><b>Return</b></a> to last resource.<br /><br />";
if ($adv) { %prog_state=&Apache::lonhtmlcommon::Create_PrgWin('','Print Status','Class Print Status',$number_of_files,'inline','80'); }
print "<br />";
+my $num_files = @texfile;
foreach $texfile (@texfile) {
my $status_statement='';
my $link_text='download PDF';
@@ -280,30 +282,57 @@
my @stud_info=split(/_END_/,$names_pack[$ind]);
my @tempo_array=split(/:/,$stud_info[0]);
my $name;
+ my $name_range='';
if ($tempo_array[3]) {
$name=$tempo_array[3];
+ my @full_names = split(/,/,$name); # split last name from others...
+ $name_range = $full_names[0];
} else {
$name=$tempo_array[0].'@'.$tempo_array[1];
+ $name_range = $tempo_array[0];
+ }
+ if (($name ne "") && ($name ne '@') ) { # Could be printing codes...
+ $link_text='<b>'.$name.'</b>';
+ $status_statement.=$name;
}
- $link_text='<b>'.$name.'</b>';
- $status_statement.=$name;
if ($#stud_info>0) {
@tempo_array=split(/:/,$stud_info[-1]);
if ($tempo_array[3]) {
$name=$tempo_array[3];
+ my @full_names = split(/,/, $name);
+ $name_range .= "-".$full_names[0];
} else {
$name=$tempo_array[0].'@'.$tempo_array[1];
+ $name_range .= '-'.$tempo_array[0];
+ }
+ if (($name ne "") && ($name ne '@')) {
+ $link_text.=' - <b>'.$name.'</b>';
+ $status_statement.=' - '.$name;
+
}
- $link_text.=' - <b>'.$name.'</b>';
- $status_statement.=' - '.$name;
- }
+ }
+ if(($num_files > 1) && ($link_text eq 'download PDF')) { # Printing codes
+ $link_text = '<b>'.basename($texfile,'.tex').'.pdf</b>';
+ $status_statement .= basename($texfile);
+ }
+ $name_range =~ s/'//g; # O'Neil -> ONeil e.g.
+ print "<br/>";
if ($adv) { &Apache::lonhtmlcommon::Update_PrgWin('',\%prog_state,'Creating PDF for '.$status_statement); }
+ # This little piece of dirt puts username ranges into the original tex
+ # Tex filename from which they'll propagate into the other filenames as well.
+ #
if (-e $texfile) {
+ if (($name_range ne '') && ($num_files > 1)) {
+ my $newtexfile = $texfile;
+ $newtexfile =~ s/\.tex/$name_range\.tex/;
+ rename($texfile, $newtexfile);
+ $texfile = $newtexfile;
+ }
$texfile =~ m/^(.*)\/([^\/]+)$/;
my $name_file = $2;
my $path_file = $1.'/';
chdir $path_file;
- my $dvi_file= $name_file; $dvi_file =~ s/\.tex/\.dvi/;
+ my $dvi_file= $name_file; $dvi_file =~ s/\.tex/$name_range\.dvi/;
&busy_wait_command("latex $name_file 1>/dev/null 2>/dev/null",
"for $status_statement now LaTeXing file",
\%prog_state,$dvi_file);