]> git.sur5r.net Git - bacula/bacula/blobdiff - gui/bweb/lib/Bweb.pm
ebl fix
[bacula/bacula] / gui / bweb / lib / Bweb.pm
index 0d19c66519b63f05f8afd49decaef7200f11daab..1e69b486e549184840a386c72d4a6f86b17b7fd9 100644 (file)
@@ -207,7 +207,7 @@ use CGI;
 our %k_re = ( dbi      => qr/^(dbi:(Pg|mysql):(?:\w+=[\w\d\.-]+;?)+)$/i,
              user     => qr/^([\w\d\.-]+)$/i,
              password => qr/^(.*)$/i,
-             fv_write_path => qr!^([/\w\d\.-]+)$!,
+             fv_write_path => qr!^([/\w\d\.-]*)$!,
              template_dir => qr!^([/\w\d\.-]+)$!,
              debug    => qr/^(on)?$/,
              email_media => qr/^([\w\d\.-]+@[\d\w\.-]+)$/,
@@ -215,6 +215,7 @@ our %k_re = ( dbi      => qr/^(dbi:(Pg|mysql):(?:\w+=[\w\d\.-]+;?)+)$/i,
              bconsole    => qr!^(.+)?$!,
              syslog_file => qr!^(.+)?$!,
              log_dir     => qr!^(.+)?$!,
+             stat_job_table => qr!^(\w*)$!,
              );
 
 =head1 FUNCTION
@@ -860,12 +861,13 @@ sub send_to_io
 sub transfer
 {
     my ($self, $src, $dst) = @_ ;
-    print "<pre>$self->{precmd} $self->{mtxcmd} -f $self->{device} transfer $src $dst</pre>\n";
+    if ($self->{debug}) {
+       print "<pre>$self->{precmd} $self->{mtxcmd} -f $self->{device} transfer $src $dst</pre>\n";
+    }
     my $out = `$self->{precmd} $self->{mtxcmd} -f $self->{device} transfer $src $dst 2>&1`;
     
     if ($? == 0) {
        my $content = $self->get_slot($src);
-       print "$content ($src) => $dst<br/>";
        $self->{slot}->[$src] = 'empty';
        $self->set_slot($dst, $content);
        return 1;
@@ -901,13 +903,17 @@ sub clear_io
        if ($self->slot_is_full($slot))
        {
            my $free = $self->slot_get_first_free() ;
-           print "want to move $slot to $free\n";
+           print "move $slot to $free :\n";
 
            if ($free) {
-               $self->transfer($slot, $free) || print "$self->{error}\n";
+               if ($self->transfer($slot, $free)) {
+                   print "<img src='/bweb/T.png' alt='ok'><br/>\n";
+               } else {
+                   print "<img src='/bweb/E.png' alt='ok' title='$self->{error}'><br/>\n";
+               }
                
            } else {
-               $self->{error} = "E : Can't find free slot";
+               $self->{error} = "<img src='/bweb/E.png' alt='ok' title='E : Can t find free slot'><br/>\n";
            }
        }
     }
@@ -969,7 +975,7 @@ WHERE Media.VolumeName IN ($media_list)
 
            } else {            # empty or no label
                push @{ $param }, {realslot => $slot,
-                                  volstatus => 'Unknow',
+                                  volstatus => 'Unknown',
                                   volumename => $self->{slot}->[$slot]} ;
            }
        } else {                # empty
@@ -1923,6 +1929,7 @@ SELECT  Job.JobId       AS jobid,
        Job.Name        AS jobname,
         Level           AS level,
         StartTime       AS starttime,
+        EndTime         AS endtime,
         Pool.Name       AS poolname,
         JobFiles        AS jobfiles, 
         JobBytes        AS jobbytes,
@@ -2406,7 +2413,7 @@ sub change_location
     }
     my $newloc = CGI::param('newlocation');
 
-    my $user = CGI::param('user') || 'unknow';
+    my $user = CGI::param('user') || 'unknown';
     my $comm = CGI::param('comment') || '';
     $comm = $self->dbh_quote("$user: $comm");
 
@@ -2432,7 +2439,7 @@ INSERT LocationLog (Date, Comment, MediaId, LocationId, NewVolStatus)
     $self->display({ email  => $self->{info}->{email_media},
                     url => $url,
                     newlocation => $newloc,
-                    # [ { volumename => 'vol1' }, { volumename => 'vol2' },..]
+                    # [ { volumename => 'vol1' }, { volumename => 'vol2'\81 },..]
                     medias => [ values %$medias ],
                   },
                   "change_location.tpl");
@@ -2618,9 +2625,11 @@ WHERE JobStatus IN ('C','R','B','e','D','F','S','m','M','s','j','c','d','t','p')
                   "running_job.tpl") ;
 }
 
+# return the autochanger list to update
 sub eject_media
 {
     my ($self) = @_;
+    my %ret; 
     my $arg = $self->get_form('jmedias');
 
     unless ($arg->{jmedias}) {
@@ -2643,6 +2652,7 @@ WHERE Media.VolumeName IN ($arg->{jmedias})
     foreach my $vol (values %$all) {
        my $a = $self->ach_get($vol->{location});
        next unless ($a) ;
+       $ret{$vol->{location}} = 1;
 
        unless ($a->{have_status}) {
            $a->status();
@@ -2651,11 +2661,12 @@ WHERE Media.VolumeName IN ($arg->{jmedias})
 
        print "eject $vol->{volumename} from $vol->{storage} : ";
        if ($a->send_to_io($vol->{slot})) {
-           print "ok</br>";
+           print "<img src='/bweb/T.png' alt='ok'><br/>";
        } else {
-           print "err</br>";
+           print "<img src='/bweb/E.png' alt='err'><br/>";
        }
     }
+    return keys %ret;
 }
 
 sub move_email
@@ -2712,7 +2723,8 @@ sub ach_get
        return undef;
     }
 
-    $a->{bweb} = $self;
+    $a->{bweb}  = $self;
+    $a->{debug} = $self->{debug};
 
     return $a;
 }
@@ -3035,12 +3047,14 @@ sub label_barcodes
   UPDATE Media 
        SET LocationId =   (SELECT LocationId 
                              FROM Location 
-                            WHERE Location = '$arg->{ach}')
+                            WHERE Location = '$arg->{ach}'),
+
+           RecyclePoolId = PoolId
 
      WHERE Media.PoolId = (SELECT PoolId 
                              FROM Pool
                             WHERE Name = 'Scratch')
-       AND LocationId = 0
+       AND (LocationId = 0 OR LocationId IS NULL)
 ");
 
 }