Changeset 23149
- Timestamp:
- 2010-10-18T00:24:44+13:00 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
main/trunk/greenstone2/cgi-bin/talkback-progressbar.pl
r23140 r23149 25 25 26 26 27 sub get_progress_filename 28 { 29 my ($uploaded_file) = @_; 30 31 my $progress_file = $uploaded_file; 32 33 $progress_file =~ s{^(.*)\/}{}; 34 $progress_file =~ s/\.*?$//; 35 $progress_file .= "-progress.txt"; 36 37 my $progress_filename = &util::filename_cat($gsdl_tmp_dir, $progress_file); 38 39 return $progress_filename; 40 } 41 42 sub get_file_central_filename 43 { 44 my $file_central = &util::filename_cat($gsdl_tmp_dir,"file-central.txt"); 45 46 return $file_central; 47 } 48 49 sub read_file_central 50 { 51 my $fc_filename = get_file_central_filename(); 52 53 my @fc_list; 54 55 if (open(FCIN,"<$fc_filename")) { 56 57 my $fc_list_str = do { local $/; <FCIN> }; 58 @fc_list = split(/\n/,$fc_list_str); 59 60 close(FCIN); 61 } 62 else { 63 # OK to have no file-central.txt to start with 64 # return empty list 65 @fc_list = (); 66 } 67 68 return \@fc_list; 69 70 } 71 72 sub remove_from_file_central 73 { 74 my ($filename,$fc_list) = @_; 75 76 my @new_fc_list = (); 77 78 my $removed = 0; 79 80 foreach my $f (@$fc_list) { 81 82 if ($f ne $filename) { 83 push(@new_fc_list,$f); 84 } 85 else { 86 $removed = 1; 87 } 88 } 89 90 if (!$removed) { 91 print STDERR "Warning: Failed to locate '$filename' in file-central.txt\n"; 92 } 93 94 return \@new_fc_list; 95 } 96 97 sub add_to_file_central 98 { 99 my ($filename,$fc_list) = @_; 100 101 my @new_fc_list = @$fc_list; 102 103 my $duplicate = 0; 104 foreach my $f (@new_fc_list) { 105 106 if ($f eq $filename) { 107 $duplicate = 1; 108 } 109 } 110 111 if (!$duplicate) { 112 push(@new_fc_list,$filename); 113 } 114 else { 115 print STDERR "Warning: Ingoring request to add duplicate entry:\n"; 116 print STDERR " '$filename' into file-central.txt\n" 117 } 118 119 return \@new_fc_list; 120 } 121 122 123 124 sub write_file_central 125 { 126 my ($fc_list) = @_; 127 128 my $fc_filename = get_file_central_filename(); 129 130 if (open(FCOUT,">$fc_filename")) { 131 132 foreach my $f (@$fc_list) { 133 print FCOUT "$f\n"; 134 } 135 136 close(FCOUT); 137 } 138 else { 139 print STDERR "Error: Failed to write out $fc_filename\n"; 140 print STDERR "$!\n"; 141 } 142 } 143 27 144 sub monitor_upload 28 145 { 29 my ($ filename, $buffer, $bytes_read, $data) = @_;146 my ($uploading_file, $buffer, $bytes_read, $data) = @_; 30 147 31 148 $bytes_read ||= 0; 32 33 my $full_filename = &util::filename_cat($gsdl_tmp_dir, 34 "$filename-progress.txt"); 35 36 open(COUNTER, ">$full_filename"); 149 150 my $progress_filename = get_progress_filename($uploading_file); 151 152 if (! -f $progress_filename) { 153 my $fc_list = read_file_central(); 154 $fc_list = add_to_file_central($uploading_file,$fc_list); 155 write_file_central($fc_list); 156 } 157 158 open(COUNTER, ">$progress_filename"); 37 159 38 160 my $per = 0; … … 46 168 # Sleep for 10 msecs 47 169 select(undef, undef, undef, 0.01); 170 #select(undef, undef, undef, 0.1); 48 171 } 49 172 … … 75 198 sub remove_progress_file 76 199 { 77 my ($file) = @_; 78 79 $file =~ s{^(.*)\/}{}; 80 81 my $progress_filename = &util::filename_cat($gsdl_tmp_dir, 82 "$file-progress.txt"); 200 my ($uploaded_file) = @_; 201 202 my $progress_filename = get_progress_filename($uploaded_file); 83 203 84 204 if (!unlink($progress_filename)) { 85 205 print STDERR "Warning: Failed to delete $progress_filename\n"; 86 206 } 207 208 my $fc_list = read_file_central(); 209 $fc_list = remove_from_file_central($uploaded_file,$fc_list); 210 write_file_central($fc_list); 87 211 } 88 212 … … 151 275 main(); 152 276 277 153 278 #===== 154 155 156 279 157 280 sub inc_wait_dots … … 172 295 } 173 296 297 174 298 sub check_status_single_file 175 299 { 176 300 my ($filename) = @_; 177 $filename =~ s{^(.*)\/}{}; 178 179 my $monitor_filename = &util::filename_cat($gsdl_tmp_dir, 180 "$filename-progress.txt"); 301 302 my $monitor_filename = get_progress_filename($filename); 181 303 182 304 if (! -f $monitor_filename ) { … … 197 319 198 320 my $r = ""; 199 $r .= "<div style=\"float:left;\">$filename:</div>"; 321 $r .= "<div>$filename:</div>"; 322 $r .= "<nobr>"; 200 323 $r .= "<div style=\"width: ${fgwidth}px; $fgcol $style_base\"></div>"; 201 324 $r .= "<div style=\"width: ${bgwidth}px; $bgcol $style_base\"></div>"; 202 325 $r .= "<div style=\"float:left; width: 80px\"> $s%</div>"; 203 $r .= "<br>"; 326 $r .= "</nobr>"; 327 $r .= "<br />"; 204 328 205 329 return $r; … … 209 333 sub check_status_all 210 334 { 211 my $file_central = &util::filename_cat($gsdl_tmp_dir,"file-central.txt");335 my $file_central = get_file_central_filename(); 212 336 213 337 my $html = ""; 214 338 215 if (open my $FC, '<', $file_central) { 216 # Read entire file in all at once 217 my $file_list_str = do { local $/; <$FC> }; 218 my @file_list = split(/\n/,$file_list_str); 219 220 foreach my $f (@file_list) { 221 $html .= check_status_single_file($f); 222 } 223 224 close ($FC); 225 } 226 else { 227 # error 228 $html = "Failed to open $file_central: $!\n"; 339 my $fc_list = read_file_central(); 340 341 foreach my $f (@$fc_list) { 342 $html .= check_status_single_file($f); 229 343 } 230 344 … … 243 357 244 358 my $filename = $gsdl_cgi->param('uploadedfile'); 245 if (defined $filename) { 359 360 if ((defined $filename) && ($filename ne "")) { 246 361 $html .= check_status_single_file($filename); 247 362 }
Note:
See TracChangeset
for help on using the changeset viewer.