]> git.sur5r.net Git - bacula/bacula/commitdiff
ebl Add Jobs -> Missing Job feature. Now, you can
authorEric Bollengier <eric@eb.homelinux.org>
Thu, 27 Dec 2007 20:14:38 +0000 (20:14 +0000)
committerEric Bollengier <eric@eb.homelinux.org>
Thu, 27 Dec 2007 20:14:38 +0000 (20:14 +0000)
     check if jobs are missing or have to be re-run.

git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@6146 91ce42f0-d328-0410-95d8-f526ca767f89

gui/bweb/cgi/bweb.pl
gui/bweb/lang/en/tpl/begin.tpl
gui/bweb/lang/es/tpl/begin.tpl
gui/bweb/lang/fr/tpl/begin.tpl
gui/bweb/lib/Bweb.pm
gui/bweb/po/bweb.pot
gui/bweb/po/es.po
gui/bweb/po/fr.po
gui/bweb/technotes-2.3
gui/bweb/tpl/begin.tpl

index 1dc1a42b025829507d0049be1a4c4992297a5da4..54805a151a3d34cef2811327b17e6dfcc63f17ac 100755 (executable)
@@ -457,6 +457,9 @@ if ($action eq 'begin') {           # main display
 } elsif ($action eq 'next_job2') {
     $bweb->display_next_job();
 
+} elsif ($action eq 'missing') {
+    $bweb->display_missing_job();
+
 } elsif ($action eq 'overview') {
     $bweb->can_do('r_view_job');
     print "<div><table border='0'><tr><td valign='top'>\n";
@@ -496,27 +499,8 @@ __END__
 
 TODO :
 
- o Affichage des job en cours, termines
- o Affichage du detail d'un job (status client)
- o Acces aux log d'une sauvegarde
- o Cancel d'un job
- o Lancement d'un job
-
- o Affichage des medias (pool, cf bacweb)
- o Affichage de la liste des cartouches
- o Affichage d'un autochangeur
- o Mise a jour des slots
- o Label barcodes
  o Affichage des medias qui ont besoin d'etre change
-
- o Affichage des stats sur les dernieres sauvegardes (cf bacula-web)
- o Affichage des stats sur un type de job
  o Affichage des infos de query.sql
 
  - Affichage des du TapeAlert sur le site
  - Recuperation des erreurs SCSI de /var/log/kern.log
-
- o update d'un volume
- o update d'un pool
-
- o Configuration des autochanger a la main dans un hash dumper
index 9e4e77c69d279cec71ddf5bc4dc8b2710a62eaeb..d8934435c0d2561d4c13e96d8e881df106583651 100644 (file)
@@ -34,6 +34,7 @@ if ('Main' == ('_' + '_Main_' + '_')) {
      <li><a href="bweb.pl?action=run_job">Defined Jobs</a>
      <li><a href="bweb.pl?action=job_group">Jobs by group</a>
      <li><a href="bweb.pl?action=overview">Jobs overview</a>
+     <li><a href="bweb.pl?action=missing">Missing Jobs</a>
      <li><a href="bweb.pl?action=job">Last Jobs</a> </li>
      <li><a href="bweb.pl?action=running">Running Jobs</a>
      <li><a href="bweb.pl?action=next_job">Next Jobs</a> </li>
index cf836acecf6a8d8a97a6a403e4f9404dd3dd811e..4b8631e5416b534c40542610c280074baae659bd 100644 (file)
@@ -34,6 +34,7 @@ if ('Principal' == ('_' + '_Main_' + '_')) {
      <li><a href="bweb.pl?action=run_job">Jobs Definidos</a>
      <li><a href="bweb.pl?action=job_group">Jobs by group</a>
      <li><a href="bweb.pl?action=overview">Jobs overview</a>
+     <li><a href="bweb.pl?action=missing">Missing Jobs</a>
      <li><a href="bweb.pl?action=job">Últimos Jobs</a> </li>
      <li><a href="bweb.pl?action=running">Jobs en Ejecución</a>
      <li><a href="bweb.pl?action=next_job">Próximos Jobs</a> </li>
index 0ed0935adf2cd665e09396e70201e7b8fe5650a9..558404315032f05c002595e6e341330842369ca8 100644 (file)
@@ -34,6 +34,7 @@ if ('Accueil' == ('_' + '_Main_' + '_')) {
      <li><a href="bweb.pl?action=run_job">Jobs définis</a>
      <li><a href="bweb.pl?action=job_group">Jobs par groupe</a>
      <li><a href="bweb.pl?action=overview">Jobs overview</a>
+     <li><a href="bweb.pl?action=missing">Missing Jobs</a>
      <li><a href="bweb.pl?action=job">Historique</a> </li>
      <li><a href="bweb.pl?action=running">Jobs en cours</a>
      <li><a href="bweb.pl?action=next_job">Prochains jobs</a> </li>
index 461921ae2a1ac0c95db7475d75cd31b37c2d78f0..c0bb76dbaed09e6f717cb74d8642b45ad9094c50 100644 (file)
@@ -1056,17 +1056,22 @@ sub new
     # we compare the current schedule date with begin and end
     # in a float form ex: 20071212.1243 > 20070101
     if ($self->{begin} and $self->{end}) {
+       ($self->{fbegin}, $self->{fend}) = ($self->{begin}, $self->{end});
+       $self->{fbegin} =~ s/(-|:)//g;  $self->{fbegin} =~ s/ /./;
+       $self->{fend}   =~ s/(-|:)//g;  $self->{fend}   =~ s/ /./;
+    } 
 
-       $self->{begin} =~ s/(-|:)//g;
-       $self->{begin} =~ s/ /./;
-       $self->{end} =~ s/(-|:)//g;
-       $self->{end} =~ s/ /./;
+    bless($self,$class);
 
-    } else {
-       delete $self->{begin};
-       delete $self->{end};
+    if ($self->{bconsole}) {
+       my $sel = $self->{name}?"=\"$self->{name}\"":'';
+       my $b = $self->{bconsole};
+       my $out = $b->send_cmd("show schedule$sel");
+       $self->parse_scheds(split(/\r?\n/, $out));
+       undef $self->{bconsole}; # useless now
     }
-    return bless($self,$class);
+
+    return $self;
 }
 
 # cleanup and add a schedule
@@ -1213,11 +1218,11 @@ sub get_events
            {
                foreach my $min (@{$s->{mins}}) # minute
                {
-                   if ($self->{begin}) {
+                   if ($self->{fbegin}) {
                        no integer;
                        my $d = sprintf('%d%0.2d%0.2d.%0.2d%0.2d',
                                        $year,$m,$md,$h,$min);
-                       next if ($d < $self->{begin} or $d > $self->{end});
+                       next if ($d < $self->{fbegin} or $d > $self->{fend});
                    }
                    push @ret, sprintf($format, $year,$m,$md,$h,$min);
                }
@@ -1226,6 +1231,7 @@ sub get_events
     }
     return @ret;
 }
+1;
 
 ################################################################
 
@@ -1776,7 +1782,7 @@ sub get_form
            }
        } elsif (exists $opt_t{$i}) { # 1: hh:min optionnal, 2: hh:min required
            my $when = CGI::param($i) || '';
-           if ($when =~ /(\d{4}-\d{2}-\d{2}( \d{2}:\d{2}:\d{2}))/) {
+           if ($when =~ /(\d{4}-\d{2}-\d{2}( \d{2}:\d{2}:\d{2})?)/) {
                if ($opt_t{$i} == 1 or defined $2) {
                    $ret{$i} = $1;
                }
@@ -2976,6 +2982,22 @@ sub get_roles
     return 1;
 }
 
+sub can_view_client
+{
+    my ($self, $client) = @_;
+
+    my $filter = $self->get_client_filter();
+    if (!$filter) {
+       return 1;
+    }
+    my $cont = $self->dbh_selectrow_hashref("
+ SELECT 1
+   FROM Client $filter
+  WHERE Name = '$client'
+");
+    return defined $cont;
+}
+
 sub cant_do
 {
     my ($self, $action) = @_;
@@ -4576,6 +4598,7 @@ sub run_job_now
 sub display_next_job
 {
     my ($self) = @_;
+
     my $arg = $self->get_form(qw/job begin end/);
     if (!$arg->{job}) {
        return $self->error("Can't get job name");
@@ -4593,9 +4616,8 @@ sub display_next_job
        $jpool = $1;
     }
 
-    my $out = $b->send_cmd("show schedule=\"$jsched\"");
-    my $sched = new Bweb::Sched(begin => $arg->{begin}, end => $arg->{end});
-    $sched->parse_scheds(split(/\r?\n/, $out));
+    my $sched = new Bweb::Sched(bconsole => $b, name => $jsched,
+                               begin => $arg->{begin}, end => $arg->{end});
 
     my $ss = $sched->get_scheds($jsched); 
     my @ret;
@@ -4610,4 +4632,92 @@ sub display_next_job
     print "<b>$arg->{job}:</b><pre>", sort @ret, "</pre><br>";
 }
 
+# check jobs against their schedule
+sub check_job
+{
+    my ($self, $sched, $schedname, $job, $job_pool, $client) = @_;
+    return undef if (!$self->can_view_client($client));
+
+    my $sch = $sched->get_scheds($schedname);    
+    return undef if (!$sch);
+
+    my $end = $sched->{end}; # this backup must have start before the next one
+    my @ret;
+    foreach my $s (@$sch) {
+       my $pool = $sched->get_pool($s) || $job_pool;
+       my $level = $sched->get_level($s);
+       my ($l) = ($level =~ m/^(.)/); # we keep the first letter
+       my $evts = $sched->get_event($s);
+       
+       foreach my $evt (reverse @$evts) {
+           my $all = $self->dbh_selectrow_hashref("
+ SELECT 1
+   FROM Job JOIN Pool USING (PoolId) JOIN Client USING (ClientId)
+  WHERE Job.StartTime >= '$evt' 
+    AND Job.StartTime <  '$end'
+    AND Job.Type = 'B'
+    AND Job.Name = '$job'
+    AND Job.JobStatus = 'T'
+    AND Job.Level = '$l'
+" . ($pool?" AND Pool.Name = '$pool' ":'') . "
+    AND Client.Name = '$client'
+ LIMIT 1
+");            
+           if ($all) {
+#              print "ok $job ";
+           } else {
+               push @{$self->{tmp}}, {date => $evt, level => $level,
+                                      type => 'Backup', name => $job,
+                                      pool => $pool, volume => $pool};
+           }
+           $end = $evt;
+       }
+    }
+}
+
+sub display_missing_job
+{
+    my ($self) = @_;
+    my $arg = $self->get_form(qw/begin end/);
+
+    if (!$arg->{begin}) { # TODO: change this
+       $arg->{begin} = strftime('%F %T', localtime(time - 24*60*60 ));
+    }
+    if (!$arg->{end}) {
+       $arg->{end} = strftime('%F %T', localtime(time));
+    }
+    $self->{tmp} = [];         # check_job use this for result
+
+    my $bconsole = $self->get_bconsole();
+
+    my $sched = new Bweb::Sched(bconsole => $bconsole,
+                               begin => $arg->{begin},
+                               end => $arg->{end});
+
+    my $job = $bconsole->send_cmd("show job");
+    my ($jname, $jsched, $jclient, $jpool);
+    foreach my $j (split(/\r?\n/, $job)) {
+       if ($j =~ /Job: name=([\w\d\-]+?) JobType=/i) {
+           if ($jname and $jsched) {
+               $self->check_job($sched, $jsched, $jname, $jpool, $jclient);
+           }
+           $jname = $1;
+           $jclient = $jpool = $jsched = undef;
+       } elsif ($j =~ /Client: name=(.+?) address=/i) {
+           $jclient = $1;
+       } elsif ($j =~ /Pool: name=([\w\d\-]+) PoolType=/i) {
+           $jpool = $1;
+       } elsif ($j =~ /Schedule: name=([\w\d\-]+)/i) {
+           $jsched = $1;
+       }
+    }
+    $self->display({
+       id => $cur_id++,
+       title => "Missing Job (since $arg->{begin} to $arg->{end})",
+       list => $self->{tmp},
+    }, "scheduled_job.tpl");
+
+    delete $self->{tmp};
+}
+
 1;
index 413b8fb56def3214d3c4c0e609052924290a10e1..6e84d4ea1a6b1245a442f36cf485a16deaacbe57 100644 (file)
@@ -1,4 +1,4 @@
-#: ../tpl/about.tpl:3 ../tpl/begin.tpl:70
+#: ../tpl/about.tpl:3 ../tpl/begin.tpl:72
 msgid "About"
 msgstr ""
 
@@ -6,7 +6,7 @@ msgstr ""
 msgid "New"
 msgstr ""
 
-#: ../tpl/ach_add.tpl:3 ../tpl/begin.tpl:54 ../tpl/config_view.tpl:26
+#: ../tpl/ach_add.tpl:3 ../tpl/begin.tpl:56 ../tpl/config_view.tpl:27
 msgid "Autochanger"
 msgstr ""
 
@@ -46,7 +46,7 @@ msgstr ""
 msgid "drive index"
 msgstr ""
 
-#: ../tpl/ach_add.tpl:46 ../tpl/config_edit.tpl:60 ../tpl/groups_edit.tpl:25
+#: ../tpl/ach_add.tpl:46 ../tpl/config_edit.tpl:67 ../tpl/groups_edit.tpl:25
 #: ../tpl/location_add.tpl:26 ../tpl/location_edit.tpl:28
 msgid "Save"
 msgstr ""
@@ -186,7 +186,7 @@ msgstr ""
 msgid "Drive Name"
 msgstr ""
 
-#: ../tpl/add_media.tpl:3 ../tpl/begin.tpl:48
+#: ../tpl/add_media.tpl:3 ../tpl/begin.tpl:50
 msgid "Add Media"
 msgstr ""
 
@@ -226,7 +226,9 @@ msgid "Main"
 msgstr ""
 
 #: ../tpl/begin.tpl:20
-msgid "Update your configuration to use the correct tpl directory"
+msgid ""
+"Update your configuration to use the correct tpl directory (You are using "
+"devel tpl)"
 msgstr ""
 
 #: ../tpl/begin.tpl:26 ../tpl/begin.tpl:28 ../tpl/btime.tpl:94
@@ -256,81 +258,93 @@ msgstr ""
 msgid "Jobs overview"
 msgstr ""
 
-#: ../tpl/begin.tpl:37 ../tpl/display_job.tpl:2
+#: ../tpl/begin.tpl:37
+msgid "Missing Jobs"
+msgstr ""
+
+#: ../tpl/begin.tpl:38 ../tpl/display_job.tpl:2
 msgid "Last Jobs"
 msgstr ""
 
-#: ../tpl/begin.tpl:38 ../tpl/running_job.tpl:3
+#: ../tpl/begin.tpl:39 ../tpl/running_job.tpl:3
 msgid "Running Jobs"
 msgstr ""
 
-#: ../tpl/begin.tpl:39 ../tpl/scheduled_job.tpl:3
+#: ../tpl/begin.tpl:40 ../tpl/scheduled_job.tpl:3
 msgid "Next Jobs"
 msgstr ""
 
-#: ../tpl/begin.tpl:40
+#: ../tpl/begin.tpl:41
 msgid "Launch brestore"
 msgstr ""
 
-#: ../tpl/begin.tpl:40 ../tpl/display_form_job.tpl:102
+#: ../tpl/begin.tpl:41 ../tpl/display_form_job.tpl:102
 msgid "Restore"
 msgstr ""
 
-#: ../tpl/begin.tpl:43 ../tpl/display_media.tpl:3
+#: ../tpl/begin.tpl:42
+msgid "Try bresto"
+msgstr ""
+
+#: ../tpl/begin.tpl:42
+msgid "Web Restore"
+msgstr ""
+
+#: ../tpl/begin.tpl:45 ../tpl/display_media.tpl:3
 msgid "Media"
 msgstr ""
 
-#: ../tpl/begin.tpl:45 ../tpl/display_pool.tpl:3
+#: ../tpl/begin.tpl:47 ../tpl/display_pool.tpl:3
 msgid "Pools"
 msgstr ""
 
-#: ../tpl/begin.tpl:46 ../tpl/display_location.tpl:3
+#: ../tpl/begin.tpl:48 ../tpl/display_location.tpl:3
 msgid "Locations"
 msgstr ""
 
-#: ../tpl/begin.tpl:47
+#: ../tpl/begin.tpl:49
 msgid "All Media"
 msgstr ""
 
-#: ../tpl/begin.tpl:49
+#: ../tpl/begin.tpl:51
 msgid "Eject Media"
 msgstr ""
 
-#: ../tpl/begin.tpl:50
+#: ../tpl/begin.tpl:52
 msgid "Load Media"
 msgstr ""
 
-#: ../tpl/begin.tpl:62 ../tpl/display_groups.tpl:16 ../tpl/graph.tpl:3
+#: ../tpl/begin.tpl:64 ../tpl/display_groups.tpl:16 ../tpl/graph.tpl:3
 #: ../tpl/stats.tpl:2
 msgid "Statistics"
 msgstr ""
 
-#: ../tpl/begin.tpl:63 ../tpl/begin.tpl:65 ../tpl/config_edit.tpl:3
+#: ../tpl/begin.tpl:65 ../tpl/begin.tpl:67 ../tpl/config_edit.tpl:3
 #: ../tpl/config_view.tpl:3
 msgid "Configuration"
 msgstr ""
 
-#: ../tpl/begin.tpl:66
+#: ../tpl/begin.tpl:68
 msgid "Manage users"
 msgstr ""
 
-#: ../tpl/begin.tpl:71
+#: ../tpl/begin.tpl:73
 msgid "Logged as"
 msgstr ""
 
-#: ../tpl/begin.tpl:73
+#: ../tpl/begin.tpl:75
 msgid "Search media"
 msgstr ""
 
-#: ../tpl/begin.tpl:73
+#: ../tpl/begin.tpl:75
 msgid "Search client"
 msgstr ""
 
-#: ../tpl/begin.tpl:73
+#: ../tpl/begin.tpl:75
 msgid "search..."
 msgstr ""
 
-#: ../tpl/begin.tpl:73
+#: ../tpl/begin.tpl:75
 msgid "Search media or client"
 msgstr ""
 
@@ -627,81 +641,101 @@ msgstr ""
 msgid "Bweb Configuration"
 msgstr ""
 
-#: ../tpl/config_edit.tpl:39 ../tpl/config_view.tpl:17
+#: ../tpl/config_edit.tpl:36 ../tpl/config_view.tpl:16
 msgid ""
 "This folder must be writable by apache user and must be accessible on /bweb/"
 "fv"
 msgstr ""
 
-#: ../tpl/config_edit.tpl:41 ../tpl/config_view.tpl:18
+#: ../tpl/config_edit.tpl:38 ../tpl/config_view.tpl:17
 msgid "You can choose the Job table that you want to use to get statistics"
 msgstr ""
 
-#: ../tpl/config_edit.tpl:47
+#: ../tpl/config_edit.tpl:44
 msgid "Use a wiki for jobs documentation?"
 msgstr ""
 
-#: ../tpl/config_edit.tpl:50
+#: ../tpl/config_edit.tpl:49 ../tpl/config_view.tpl:21
+msgid "language:"
+msgstr ""
+
+#: ../tpl/config_edit.tpl:51 ../tpl/display_user.tpl:20
+msgid "English"
+msgstr ""
+
+#: ../tpl/config_edit.tpl:52 ../tpl/display_user.tpl:21
+msgid "French"
+msgstr ""
+
+#: ../tpl/config_edit.tpl:53 ../tpl/display_user.tpl:22
+msgid "Spanish"
+msgstr ""
+
+#: ../tpl/config_edit.tpl:57
 msgid "Display log timestamp"
 msgstr ""
 
-#: ../tpl/config_edit.tpl:53
+#: ../tpl/config_edit.tpl:60
 msgid "Use user managment in bweb. Read INSTALL first"
 msgstr ""
 
-#: ../tpl/config_edit.tpl:55
+#: ../tpl/config_edit.tpl:62
 msgid "Use user acl in bweb. Read INSTALL first"
 msgstr ""
 
-#: ../tpl/config_view.tpl:20
+#: ../tpl/config_view.tpl:19
 msgid "use a wiki for jobs documentation?"
 msgstr ""
 
 #: ../tpl/config_view.tpl:21
-msgid "display timestamp in job log"
+msgid "Default language"
 msgstr ""
 
 #: ../tpl/config_view.tpl:22
+msgid "display timestamp in job log"
+msgstr ""
+
+#: ../tpl/config_view.tpl:23
 msgid "user managment"
 msgstr ""
 
-#: ../tpl/config_view.tpl:22
+#: ../tpl/config_view.tpl:23
 msgid "security:"
 msgstr ""
 
-#: ../tpl/config_view.tpl:23
+#: ../tpl/config_view.tpl:24
 msgid "user filter"
 msgstr ""
 
-#: ../tpl/config_view.tpl:23
+#: ../tpl/config_view.tpl:24
 msgid "security acl:"
 msgstr ""
 
-#: ../tpl/config_view.tpl:24
+#: ../tpl/config_view.tpl:25
 msgid "debug:"
 msgstr ""
 
-#: ../tpl/config_view.tpl:43 ../tpl/config_view.tpl:56
+#: ../tpl/config_view.tpl:44 ../tpl/config_view.tpl:57
 #: ../tpl/display_groups.tpl:12 ../tpl/display_location.tpl:10
 #: ../tpl/display_media.tpl:25 ../tpl/display_media_zoom.tpl:21
 #: ../tpl/display_users.tpl:12
 msgid "Edit"
 msgstr ""
 
-#: ../tpl/config_view.tpl:44 ../tpl/display_job_zoom.tpl:11
+#: ../tpl/config_view.tpl:45 ../tpl/display_job_zoom.tpl:11
 msgid "Delete"
 msgstr ""
 
-#: ../tpl/config_view.tpl:45 ../tpl/display_media.tpl:26
+#: ../tpl/config_view.tpl:46 ../tpl/display_media.tpl:26
 #: ../tpl/display_pool.tpl:8 ../tpl/running_job.tpl:11
 msgid "View"
 msgstr ""
 
-#: ../tpl/config_view.tpl:57
+#: ../tpl/config_view.tpl:58
 msgid "Add autochanger"
 msgstr ""
 
-#: ../tpl/config_view.tpl:61
+#: ../tpl/config_view.tpl:62
 msgid "info:"
 msgstr ""
 
@@ -1181,7 +1215,7 @@ msgid "Comment:"
 msgstr ""
 
 #: ../tpl/display_user.tpl:17
-msgid "Lang:"
+msgid "Language:"
 msgstr ""
 
 #: ../tpl/display_user.tpl:26
index 050b3c109059e55a3746a940bbefdcf7993a3560..0868c19930f7d611bd4d30f63a60b22a3aee8cf1 100644 (file)
@@ -12,7 +12,7 @@ msgstr ""
 "Content-Type: text/plain; charset=ISO-8859-1\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: ../tpl/about.tpl:3 ../tpl/begin.tpl:70
+#: ../tpl/about.tpl:3 ../tpl/begin.tpl:72
 msgid "About"
 msgstr "Acerca"
 
@@ -20,7 +20,7 @@ msgstr "Acerca"
 msgid "New"
 msgstr "Nueva"
 
-#: ../tpl/ach_add.tpl:3 ../tpl/begin.tpl:54 ../tpl/config_view.tpl:26
+#: ../tpl/ach_add.tpl:3 ../tpl/begin.tpl:56 ../tpl/config_view.tpl:27
 msgid "Autochanger"
 msgstr "Autochanger"
 
@@ -62,7 +62,7 @@ msgstr "Index"
 msgid "drive index"
 msgstr "index"
 
-#: ../tpl/ach_add.tpl:46 ../tpl/config_edit.tpl:60 ../tpl/groups_edit.tpl:25
+#: ../tpl/ach_add.tpl:46 ../tpl/config_edit.tpl:67 ../tpl/groups_edit.tpl:25
 #: ../tpl/location_add.tpl:26 ../tpl/location_edit.tpl:28
 msgid "Save"
 msgstr "Save"
@@ -210,7 +210,7 @@ msgstr "Index"
 msgid "Drive Name"
 msgstr "Drive usage"
 
-#: ../tpl/add_media.tpl:3 ../tpl/begin.tpl:48
+#: ../tpl/add_media.tpl:3 ../tpl/begin.tpl:50
 msgid "Add Media"
 msgstr "Add Media"
 
@@ -250,7 +250,9 @@ msgid "Main"
 msgstr "Principal"
 
 #: ../tpl/begin.tpl:20
-msgid "Update your configuration to use the correct tpl directory"
+msgid ""
+"Update your configuration to use the correct tpl directory (You are using "
+"devel tpl)"
 msgstr ""
 
 #: ../tpl/begin.tpl:26 ../tpl/begin.tpl:28 ../tpl/btime.tpl:94
@@ -280,83 +282,97 @@ msgstr "Jobs by group"
 msgid "Jobs overview"
 msgstr "Jobs overview"
 
-#: ../tpl/begin.tpl:37 ../tpl/display_job.tpl:2
+#: ../tpl/begin.tpl:37
+#, fuzzy
+msgid "Missing Jobs"
+msgstr "Jobs en Ejecución"
+
+#: ../tpl/begin.tpl:38 ../tpl/display_job.tpl:2
 msgid "Last Jobs"
 msgstr "Últimos Jobs"
 
-#: ../tpl/begin.tpl:38 ../tpl/running_job.tpl:3
+#: ../tpl/begin.tpl:39 ../tpl/running_job.tpl:3
 msgid "Running Jobs"
 msgstr "Jobs en Ejecución"
 
-#: ../tpl/begin.tpl:39 ../tpl/scheduled_job.tpl:3
+#: ../tpl/begin.tpl:40 ../tpl/scheduled_job.tpl:3
 msgid "Next Jobs"
 msgstr "Próximos Jobs"
 
-#: ../tpl/begin.tpl:40
+#: ../tpl/begin.tpl:41
 msgid "Launch brestore"
 msgstr "Launch brestore"
 
-#: ../tpl/begin.tpl:40 ../tpl/display_form_job.tpl:102
+#: ../tpl/begin.tpl:41 ../tpl/display_form_job.tpl:102
 msgid "Restore"
 msgstr "Recuperación"
 
-#: ../tpl/begin.tpl:43 ../tpl/display_media.tpl:3
+#: ../tpl/begin.tpl:42
+msgid "Try bresto"
+msgstr ""
+
+#: ../tpl/begin.tpl:42
+#, fuzzy
+msgid "Web Restore"
+msgstr "Recuperación"
+
+#: ../tpl/begin.tpl:45 ../tpl/display_media.tpl:3
 msgid "Media"
 msgstr "Medios"
 
-#: ../tpl/begin.tpl:45 ../tpl/display_pool.tpl:3
+#: ../tpl/begin.tpl:47 ../tpl/display_pool.tpl:3
 msgid "Pools"
 msgstr "Pools"
 
-#: ../tpl/begin.tpl:46 ../tpl/display_location.tpl:3
+#: ../tpl/begin.tpl:48 ../tpl/display_location.tpl:3
 msgid "Locations"
 msgstr "Ubicaciones"
 
-#: ../tpl/begin.tpl:47
+#: ../tpl/begin.tpl:49
 msgid "All Media"
 msgstr "Todos los Medios"
 
-#: ../tpl/begin.tpl:49
+#: ../tpl/begin.tpl:51
 msgid "Eject Media"
 msgstr "Expulsar Medio"
 
-#: ../tpl/begin.tpl:50
+#: ../tpl/begin.tpl:52
 msgid "Load Media"
 msgstr "Cargar Medio"
 
-#: ../tpl/begin.tpl:62 ../tpl/display_groups.tpl:16 ../tpl/graph.tpl:3
+#: ../tpl/begin.tpl:64 ../tpl/display_groups.tpl:16 ../tpl/graph.tpl:3
 #: ../tpl/stats.tpl:2
 msgid "Statistics"
 msgstr "Estadísticas"
 
-#: ../tpl/begin.tpl:63 ../tpl/begin.tpl:65 ../tpl/config_edit.tpl:3
+#: ../tpl/begin.tpl:65 ../tpl/begin.tpl:67 ../tpl/config_edit.tpl:3
 #: ../tpl/config_view.tpl:3
 msgid "Configuration"
 msgstr "Configuración"
 
-#: ../tpl/begin.tpl:66
+#: ../tpl/begin.tpl:68
 msgid "Manage users"
 msgstr "Manage users"
 
-#: ../tpl/begin.tpl:71
+#: ../tpl/begin.tpl:73
 msgid "Logged as"
 msgstr "Usuario"
 
-#: ../tpl/begin.tpl:73
+#: ../tpl/begin.tpl:75
 #, fuzzy
 msgid "Search media"
 msgstr "buscar medio"
 
-#: ../tpl/begin.tpl:73
+#: ../tpl/begin.tpl:75
 #, fuzzy
 msgid "Search client"
 msgstr "buscar medio"
 
-#: ../tpl/begin.tpl:73
+#: ../tpl/begin.tpl:75
 msgid "search..."
 msgstr ""
 
-#: ../tpl/begin.tpl:73
+#: ../tpl/begin.tpl:75
 #, fuzzy
 msgid "Search media or client"
 msgstr "buscar medio"
@@ -660,7 +676,7 @@ msgstr "Opciones Generales"
 msgid "Bweb Configuration"
 msgstr "Configuración Bweb"
 
-#: ../tpl/config_edit.tpl:39 ../tpl/config_view.tpl:17
+#: ../tpl/config_edit.tpl:36 ../tpl/config_view.tpl:16
 msgid ""
 "This folder must be writable by apache user and must be accessible on /bweb/"
 "fv"
@@ -668,76 +684,96 @@ msgstr ""
 "Este directorio debe tener permisos de escritura para el usuario apache y "
 "debe ser accesible en /bweb/fv"
 
-#: ../tpl/config_edit.tpl:41 ../tpl/config_view.tpl:18
+#: ../tpl/config_edit.tpl:38 ../tpl/config_view.tpl:17
 msgid "You can choose the Job table that you want to use to get statistics"
 msgstr "You can choose the Job table that you want to use to get statistics"
 
-#: ../tpl/config_edit.tpl:47
+#: ../tpl/config_edit.tpl:44
 msgid "Use a wiki for jobs documentation?"
 msgstr "Use a wiki for jobs documentation?"
 
-#: ../tpl/config_edit.tpl:50
+#: ../tpl/config_edit.tpl:49 ../tpl/config_view.tpl:21
+msgid "language:"
+msgstr ""
+
+#: ../tpl/config_edit.tpl:51 ../tpl/display_user.tpl:20
+msgid "English"
+msgstr ""
+
+#: ../tpl/config_edit.tpl:52 ../tpl/display_user.tpl:21
+msgid "French"
+msgstr ""
+
+#: ../tpl/config_edit.tpl:53 ../tpl/display_user.tpl:22
+msgid "Spanish"
+msgstr ""
+
+#: ../tpl/config_edit.tpl:57
 msgid "Display log timestamp"
 msgstr "Display log timestamp"
 
-#: ../tpl/config_edit.tpl:53
+#: ../tpl/config_edit.tpl:60
 msgid "Use user managment in bweb. Read INSTALL first"
 msgstr "Use user managment in bweb. Read INSTALL first"
 
-#: ../tpl/config_edit.tpl:55
+#: ../tpl/config_edit.tpl:62
 msgid "Use user acl in bweb. Read INSTALL first"
 msgstr "Use user acl in bweb. Read INSTALL first"
 
-#: ../tpl/config_view.tpl:20
+#: ../tpl/config_view.tpl:19
 #, fuzzy
 msgid "use a wiki for jobs documentation?"
 msgstr "use a wiki for jobs documentation?"
 
 #: ../tpl/config_view.tpl:21
+msgid "Default language"
+msgstr ""
+
+#: ../tpl/config_view.tpl:22
 msgid "display timestamp in job log"
 msgstr "display timestamp in job log"
 
-#: ../tpl/config_view.tpl:22
+#: ../tpl/config_view.tpl:23
 msgid "user managment"
 msgstr "user managment"
 
-#: ../tpl/config_view.tpl:22
+#: ../tpl/config_view.tpl:23
 msgid "security:"
 msgstr ""
 
-#: ../tpl/config_view.tpl:23
+#: ../tpl/config_view.tpl:24
 msgid "user filter"
 msgstr "user filter"
 
-#: ../tpl/config_view.tpl:23
+#: ../tpl/config_view.tpl:24
 msgid "security acl:"
 msgstr ""
 
-#: ../tpl/config_view.tpl:24
+#: ../tpl/config_view.tpl:25
 msgid "debug:"
 msgstr "borrar"
 
-#: ../tpl/config_view.tpl:43 ../tpl/config_view.tpl:56
+#: ../tpl/config_view.tpl:44 ../tpl/config_view.tpl:57
 #: ../tpl/display_groups.tpl:12 ../tpl/display_location.tpl:10
 #: ../tpl/display_media.tpl:25 ../tpl/display_media_zoom.tpl:21
 #: ../tpl/display_users.tpl:12
 msgid "Edit"
 msgstr "Editar"
 
-#: ../tpl/config_view.tpl:44 ../tpl/display_job_zoom.tpl:11
+#: ../tpl/config_view.tpl:45 ../tpl/display_job_zoom.tpl:11
 msgid "Delete"
 msgstr "Borrar"
 
-#: ../tpl/config_view.tpl:45 ../tpl/display_media.tpl:26
+#: ../tpl/config_view.tpl:46 ../tpl/display_media.tpl:26
 #: ../tpl/display_pool.tpl:8 ../tpl/running_job.tpl:11
 msgid "View"
 msgstr "Ver"
 
-#: ../tpl/config_view.tpl:57
+#: ../tpl/config_view.tpl:58
 msgid "Add autochanger"
 msgstr "Agregar libreria"
 
-#: ../tpl/config_view.tpl:61
+#: ../tpl/config_view.tpl:62
 msgid "info:"
 msgstr "info:"
 
@@ -1249,7 +1285,7 @@ msgstr "Comentario:"
 
 #: ../tpl/display_user.tpl:17
 #, fuzzy
-msgid "Lang:"
+msgid "Language:"
 msgstr "Log:"
 
 #: ../tpl/display_user.tpl:26
index 2a8e11acdf465b31b8a4fee3d3fa4550c7b62376..d1e869b9e46bbc066b7a2b394e98b8231c4201e3 100644 (file)
@@ -1,7 +1,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2007-12-23 20:11+0100\n"
+"PO-Revision-Date: 2007-12-27 21:13+0100\n"
 "Last-Translator: Eric <eric@eb.homelinux.org>\n"
 "Language-Team: French\n"
 "MIME-Version: 1.0\n"
@@ -9,7 +9,7 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
 
-#: ../tpl/about.tpl:3 ../tpl/begin.tpl:70
+#: ../tpl/about.tpl:3 ../tpl/begin.tpl:72
 msgid "About"
 msgstr "A propos"
 
@@ -17,7 +17,7 @@ msgstr "A propos"
 msgid "New"
 msgstr "Nouvelle"
 
-#: ../tpl/ach_add.tpl:3 ../tpl/begin.tpl:54 ../tpl/config_view.tpl:26
+#: ../tpl/ach_add.tpl:3 ../tpl/begin.tpl:56 ../tpl/config_view.tpl:27
 msgid "Autochanger"
 msgstr "Autochanger"
 
@@ -57,7 +57,7 @@ msgstr "Index"
 msgid "drive index"
 msgstr "drive index"
 
-#: ../tpl/ach_add.tpl:46 ../tpl/config_edit.tpl:60 ../tpl/groups_edit.tpl:25
+#: ../tpl/ach_add.tpl:46 ../tpl/config_edit.tpl:67 ../tpl/groups_edit.tpl:25
 #: ../tpl/location_add.tpl:26 ../tpl/location_edit.tpl:28
 msgid "Save"
 msgstr "Sauver"
@@ -199,7 +199,7 @@ msgstr "Index"
 msgid "Drive Name"
 msgstr "Lecteurs"
 
-#: ../tpl/add_media.tpl:3 ../tpl/begin.tpl:48
+#: ../tpl/add_media.tpl:3 ../tpl/begin.tpl:50
 msgid "Add Media"
 msgstr "Ajouter des Medias"
 
@@ -239,7 +239,9 @@ msgid "Main"
 msgstr "Accueil"
 
 #: ../tpl/begin.tpl:20
-msgid "Update your configuration to use the correct tpl directory"
+msgid ""
+"Update your configuration to use the correct tpl directory (You are using "
+"devel tpl)"
 msgstr ""
 
 #: ../tpl/begin.tpl:26 ../tpl/begin.tpl:28 ../tpl/btime.tpl:94
@@ -269,81 +271,94 @@ msgstr "Jobs par groupe"
 msgid "Jobs overview"
 msgstr ""
 
-#: ../tpl/begin.tpl:37 ../tpl/display_job.tpl:2
+#: ../tpl/begin.tpl:37
+msgid "Missing Jobs"
+msgstr "Jobs absents"
+
+#: ../tpl/begin.tpl:38 ../tpl/display_job.tpl:2
 msgid "Last Jobs"
 msgstr "Historique"
 
-#: ../tpl/begin.tpl:38 ../tpl/running_job.tpl:3
+#: ../tpl/begin.tpl:39 ../tpl/running_job.tpl:3
 msgid "Running Jobs"
 msgstr "Jobs en cours"
 
-#: ../tpl/begin.tpl:39 ../tpl/scheduled_job.tpl:3
+#: ../tpl/begin.tpl:40 ../tpl/scheduled_job.tpl:3
 msgid "Next Jobs"
 msgstr "Prochains jobs"
 
-#: ../tpl/begin.tpl:40
+#: ../tpl/begin.tpl:41
 msgid "Launch brestore"
 msgstr "Lancer brestore"
 
-#: ../tpl/begin.tpl:40 ../tpl/display_form_job.tpl:102
+#: ../tpl/begin.tpl:41 ../tpl/display_form_job.tpl:102
 msgid "Restore"
 msgstr "Restauration"
 
-#: ../tpl/begin.tpl:43 ../tpl/display_media.tpl:3
+#: ../tpl/begin.tpl:42
+msgid "Try bresto"
+msgstr ""
+
+#: ../tpl/begin.tpl:42
+#, fuzzy
+msgid "Web Restore"
+msgstr "Restauration"
+
+#: ../tpl/begin.tpl:45 ../tpl/display_media.tpl:3
 msgid "Media"
 msgstr "Médias"
 
-#: ../tpl/begin.tpl:45 ../tpl/display_pool.tpl:3
+#: ../tpl/begin.tpl:47 ../tpl/display_pool.tpl:3
 msgid "Pools"
 msgstr "Pools de média"
 
-#: ../tpl/begin.tpl:46 ../tpl/display_location.tpl:3
+#: ../tpl/begin.tpl:48 ../tpl/display_location.tpl:3
 msgid "Locations"
 msgstr "Localisations"
 
-#: ../tpl/begin.tpl:47
+#: ../tpl/begin.tpl:49
 msgid "All Media"
 msgstr "Tous les Medias"
 
-#: ../tpl/begin.tpl:49
+#: ../tpl/begin.tpl:51
 msgid "Eject Media"
 msgstr "Externaliser"
 
-#: ../tpl/begin.tpl:50
+#: ../tpl/begin.tpl:52
 msgid "Load Media"
 msgstr "Internaliser"
 
-#: ../tpl/begin.tpl:62 ../tpl/display_groups.tpl:16 ../tpl/graph.tpl:3
+#: ../tpl/begin.tpl:64 ../tpl/display_groups.tpl:16 ../tpl/graph.tpl:3
 #: ../tpl/stats.tpl:2
 msgid "Statistics"
 msgstr "Statistiques"
 
-#: ../tpl/begin.tpl:63 ../tpl/begin.tpl:65 ../tpl/config_edit.tpl:3
+#: ../tpl/begin.tpl:65 ../tpl/begin.tpl:67 ../tpl/config_edit.tpl:3
 #: ../tpl/config_view.tpl:3
 msgid "Configuration"
 msgstr "Configuration"
 
-#: ../tpl/begin.tpl:66
+#: ../tpl/begin.tpl:68
 msgid "Manage users"
 msgstr "Manage users"
 
-#: ../tpl/begin.tpl:71
+#: ../tpl/begin.tpl:73
 msgid "Logged as"
 msgstr "Logged as"
 
-#: ../tpl/begin.tpl:73
+#: ../tpl/begin.tpl:75
 msgid "Search media"
 msgstr "Chercher un media"
 
-#: ../tpl/begin.tpl:73
+#: ../tpl/begin.tpl:75
 msgid "Search client"
 msgstr "Chercher un client"
 
-#: ../tpl/begin.tpl:73
+#: ../tpl/begin.tpl:75
 msgid "search..."
 msgstr ""
 
-#: ../tpl/begin.tpl:73
+#: ../tpl/begin.tpl:75
 msgid "Search media or client"
 msgstr "Chercher un media ou un client"
 
@@ -642,7 +657,7 @@ msgstr "Options G
 msgid "Bweb Configuration"
 msgstr "Configuration Bweb"
 
-#: ../tpl/config_edit.tpl:39 ../tpl/config_view.tpl:17
+#: ../tpl/config_edit.tpl:36 ../tpl/config_view.tpl:16
 msgid ""
 "This folder must be writable by apache user and must be accessible on /bweb/"
 "fv"
@@ -650,75 +665,95 @@ msgstr ""
 "Ce répertoire doit être accessible en ecriture pour apache et être sous /"
 "bweb/fv"
 
-#: ../tpl/config_edit.tpl:41 ../tpl/config_view.tpl:18
+#: ../tpl/config_edit.tpl:38 ../tpl/config_view.tpl:17
 msgid "You can choose the Job table that you want to use to get statistics"
 msgstr "Vous pouvez utiliser une autre table que Job pour vos statistiques"
 
-#: ../tpl/config_edit.tpl:47
+#: ../tpl/config_edit.tpl:44
 msgid "Use a wiki for jobs documentation?"
 msgstr "Utiliser un wiki pour documenter les jobs ?"
 
-#: ../tpl/config_edit.tpl:50
+#: ../tpl/config_edit.tpl:49 ../tpl/config_view.tpl:21
+msgid "language:"
+msgstr ""
+
+#: ../tpl/config_edit.tpl:51 ../tpl/display_user.tpl:20
+msgid "English"
+msgstr ""
+
+#: ../tpl/config_edit.tpl:52 ../tpl/display_user.tpl:21
+msgid "French"
+msgstr ""
+
+#: ../tpl/config_edit.tpl:53 ../tpl/display_user.tpl:22
+msgid "Spanish"
+msgstr ""
+
+#: ../tpl/config_edit.tpl:57
 msgid "Display log timestamp"
 msgstr "Afficher l'heure des logs"
 
-#: ../tpl/config_edit.tpl:53
+#: ../tpl/config_edit.tpl:60
 msgid "Use user managment in bweb. Read INSTALL first"
 msgstr "Active la gestion des utilisateurs dans bweb. Lire le manuel avant."
 
-#: ../tpl/config_edit.tpl:55
+#: ../tpl/config_edit.tpl:62
 msgid "Use user acl in bweb. Read INSTALL first"
 msgstr ""
 
-#: ../tpl/config_view.tpl:20
+#: ../tpl/config_view.tpl:19
 msgid "use a wiki for jobs documentation?"
 msgstr "Utiliser un wiki pour documenter les jobs ?"
 
 #: ../tpl/config_view.tpl:21
-msgid "display timestamp in job log"
+msgid "Default language"
 msgstr ""
 
 #: ../tpl/config_view.tpl:22
+msgid "display timestamp in job log"
+msgstr ""
+
+#: ../tpl/config_view.tpl:23
 msgid "user managment"
 msgstr ""
 
-#: ../tpl/config_view.tpl:22
+#: ../tpl/config_view.tpl:23
 msgid "security:"
 msgstr ""
 
-#: ../tpl/config_view.tpl:23
+#: ../tpl/config_view.tpl:24
 msgid "user filter"
 msgstr "user filter"
 
-#: ../tpl/config_view.tpl:23
+#: ../tpl/config_view.tpl:24
 msgid "security acl:"
 msgstr ""
 
-#: ../tpl/config_view.tpl:24
+#: ../tpl/config_view.tpl:25
 msgid "debug:"
 msgstr "debug :"
 
-#: ../tpl/config_view.tpl:43 ../tpl/config_view.tpl:56
+#: ../tpl/config_view.tpl:44 ../tpl/config_view.tpl:57
 #: ../tpl/display_groups.tpl:12 ../tpl/display_location.tpl:10
 #: ../tpl/display_media.tpl:25 ../tpl/display_media_zoom.tpl:21
 #: ../tpl/display_users.tpl:12
 msgid "Edit"
 msgstr "Modifier"
 
-#: ../tpl/config_view.tpl:44 ../tpl/display_job_zoom.tpl:11
+#: ../tpl/config_view.tpl:45 ../tpl/display_job_zoom.tpl:11
 msgid "Delete"
 msgstr "Supprimer"
 
-#: ../tpl/config_view.tpl:45 ../tpl/display_media.tpl:26
+#: ../tpl/config_view.tpl:46 ../tpl/display_media.tpl:26
 #: ../tpl/display_pool.tpl:8 ../tpl/running_job.tpl:11
 msgid "View"
 msgstr "Voir"
 
-#: ../tpl/config_view.tpl:57
+#: ../tpl/config_view.tpl:58
 msgid "Add autochanger"
 msgstr "Ajouter une robotique"
 
-#: ../tpl/config_view.tpl:61
+#: ../tpl/config_view.tpl:62
 msgid "info:"
 msgstr "info :"
 
@@ -1207,7 +1242,7 @@ msgstr "Commentaire :"
 
 #: ../tpl/display_user.tpl:17
 #, fuzzy
-msgid "Lang:"
+msgid "Language:"
 msgstr "Log :"
 
 #: ../tpl/display_user.tpl:26
index f01ff769bea1000d971070832c1c0ff8ea6eab2e..9ddeabf23dcaae2605acb799b09b11fd2f4a0336 100644 (file)
@@ -1,4 +1,6 @@
 27Dec07
+ebl  Add Jobs -> Missing Job feature. Now, you can
+     check if jobs are missing or have to be re-run.
 ebl  Add begin/end param to Bweb::Sched object
 ebl  Fix a couple of small bug in GBalloon module when
      we don't find any valid job
index eb0f7fd85e0f35e1ffd303f81768449da0911187..032cc9f6da9aa7e3842606d1c2baaae4fe22b756 100644 (file)
@@ -34,6 +34,7 @@ if ('__Main__' == ('_' + '_Main_' + '_')) {
      <li><a href="bweb.pl?action=run_job">__Defined Jobs__</a>
      <li><a href="bweb.pl?action=job_group">__Jobs by group__</a>
      <li><a href="bweb.pl?action=overview">__Jobs overview__</a>
+     <li><a href="bweb.pl?action=missing">__Missing Jobs__</a>
      <li><a href="bweb.pl?action=job">__Last Jobs__</a> </li>
      <li><a href="bweb.pl?action=running">__Running Jobs__</a>
      <li><a href="bweb.pl?action=next_job">__Next Jobs__</a> </li>