From: <ri...@us...> - 2008-08-25 07:40:58
|
Revision: 7506 http://bacula.svn.sourceforge.net/bacula/?rev=7506&view=rev Author: ricozz Date: 2008-08-25 07:41:08 +0000 (Mon, 25 Aug 2008) Log Message: ----------- ebl fix #1132 about a bug in install_bweb script tweak some html Modified Paths: -------------- trunk/gui/bweb/cgi/bresto.pl trunk/gui/bweb/install_bweb trunk/gui/bweb/technotes-2.3 trunk/gui/bweb/tpl/begin.tpl Modified: trunk/gui/bweb/cgi/bresto.pl =================================================================== --- trunk/gui/bweb/cgi/bresto.pl 2008-08-24 18:20:12 UTC (rev 7505) +++ trunk/gui/bweb/cgi/bresto.pl 2008-08-25 07:41:08 UTC (rev 7506) @@ -795,7 +795,7 @@ print "]\n"; exit 0; -} elsif ($action eq 'list_storage') { # TODO: use .storage hier +} elsif ($action eq 'list_storage') { # TODO: use .storage here print CGI::header('application/x-javascript'); my $q="SELECT Name FROM Storage"; Modified: trunk/gui/bweb/install_bweb =================================================================== --- trunk/gui/bweb/install_bweb 2008-08-24 18:20:12 UTC (rev 7505) +++ trunk/gui/bweb/install_bweb 2008-08-25 07:41:08 UTC (rev 7506) @@ -112,8 +112,8 @@ install -m 644 -o root -g root lang/tpl/fr/*.tpl ${SHARE_DIR}/bweb/tpl/fr # copy the bweb graphics elements (bweb elements must reside in /bweb) -if [ ! -d ${WEB_DIR} ] ; then - mkdir ${WEB_DIR}/bweb +if [ ! -d ${WEB_DIR}/bweb ] ; then + mkdir -p ${WEB_DIR}/bweb fi install -m 644 -o root -g root html/*.{js,png,css,gif,ico,html} ${WEB_DIR}/bweb Modified: trunk/gui/bweb/technotes-2.3 =================================================================== --- trunk/gui/bweb/technotes-2.3 2008-08-24 18:20:12 UTC (rev 7505) +++ trunk/gui/bweb/technotes-2.3 2008-08-25 07:41:08 UTC (rev 7506) @@ -1,3 +1,6 @@ +25Aug08 +ebl Fix #1132 about typo in directory creation in install_bweb + 02Jul08 ebl Add documentation link on missing job view Modified: trunk/gui/bweb/tpl/begin.tpl =================================================================== --- trunk/gui/bweb/tpl/begin.tpl 2008-08-24 18:20:12 UTC (rev 7505) +++ trunk/gui/bweb/tpl/begin.tpl 2008-08-25 07:41:08 UTC (rev 7506) @@ -2,7 +2,7 @@ <html> <head> <title>__Bweb - Bacula Web Interface__</title> -<link rel="SHORTCUT ICON" href="/bweb/favicon.ico"> +<link rel="SHORTCUT ICON" href="/bweb/favicon.ico"/> <script type="text/javascript" language="JavaScript" src="/bweb/natcompare.js"></script> <script type="text/javascript" language="JavaScript" src="/bweb/nrs_table.js"></script> <script type="text/javascript" language="JavaScript" src="/bweb/bweb.js"></script> @@ -78,7 +78,7 @@ <li> <a href="bweb.pl?action=about"> __About__ </a> </li> <li style="padding: 0.25em 2em;float: right;"> __Logged as__ <TMPL_VAR NAME=loginname> </li> <li style="float: right;white-space: nowrap;"> -<button type="submit" class="bp" class="button" title="__Search media__" onclick="search_media();"><img src="/bweb/tape.png" alt=''></button><button type="submit" title="__Search client__" onclick="search_client();" class='bp'><img src="/bweb/client.png" alt=''></button><input class='formulaire' style="margin: 0 2px 0 2px; padding: 0 0 0 0;" id='searchbox' type='text' size='8' value='__search...__' onclick="this.value='';" title="__Search media or client__"></li> </button> +<button type="submit" class="bp" class="button" title="__Search media__" onclick="search_media();"><img src="/bweb/tape.png" alt=''></button><button type="submit" title="__Search client__" onclick="search_client();" class='bp'><img src="/bweb/client.png" alt=''></button><input class='formulaire' style="margin: 0 2px 0 2px; padding: 0 0 0 0;" id='searchbox' type='text' size='8' value='__search...__' onclick="this.value='';" title="__Search media or client__"></button></li> </ul> <form name="search" action="bweb.pl?" method='GET'> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ri...@us...> - 2008-09-21 21:18:18
|
Revision: 7617 http://bacula.svn.sourceforge.net/bacula/?rev=7617&view=rev Author: ricozz Date: 2008-09-21 21:18:12 +0000 (Sun, 21 Sep 2008) Log Message: ----------- ebl bfileview: - Add error message for pruned of uncomputed jobs - Bugfix for looking / Bweb.pm - Add support for age=1w2d40m - Add new configuration variable to modify default age general.tpl - Add hyperlink to failed job count Modified Paths: -------------- trunk/gui/bweb/INSTALL trunk/gui/bweb/cgi/bfileview.pl trunk/gui/bweb/cgi/bgraph.pl trunk/gui/bweb/html/bweb.css trunk/gui/bweb/lib/Bweb.pm trunk/gui/bweb/technotes-2.3 trunk/gui/bweb/tpl/config_edit.tpl trunk/gui/bweb/tpl/config_view.tpl trunk/gui/bweb/tpl/display_client_stats.tpl trunk/gui/bweb/tpl/general.tpl Modified: trunk/gui/bweb/INSTALL =================================================================== --- trunk/gui/bweb/INSTALL 2008-09-21 07:06:04 UTC (rev 7616) +++ trunk/gui/bweb/INSTALL 2008-09-21 21:18:12 UTC (rev 7617) @@ -267,6 +267,9 @@ You have to remove "<!-- Remove this to activate bfileview" and "-->" from tpl/en/display_job_zoom.tpl. +Add (or configure) a writable location to the parameters in bweb.conf + 'fv_write_path' => '/var/spool/bweb', + You MUST use brestore.pl -b to initialize the database, and you CAN use bfileview.pl mode=batch jobid=xxx where=/ to compute tree size. Modified: trunk/gui/bweb/cgi/bfileview.pl =================================================================== --- trunk/gui/bweb/cgi/bfileview.pl 2008-09-21 07:06:04 UTC (rev 7616) +++ trunk/gui/bweb/cgi/bfileview.pl 2008-09-21 21:18:12 UTC (rev 7617) @@ -78,12 +78,14 @@ unless ($jobid) { $bweb->error("Can't get where or jobid"); + $bweb->display_end(); exit 0; } unless ($base_fich and -w $base_fich) { $bweb->error("fv_write_path ($base_fich) is not writable." . " See Bweb configuration."); + $bweb->display_end(); exit 0; } @@ -94,7 +96,20 @@ exit 0; } +my $r = $bweb->dbh_selectrow_hashref("SELECT PurgedFiles AS ok FROM Job WHERE JobId = $jobid"); +if (!$r || $r->{ok}) { + $bweb->error("File information for job $jobid has been pruned from catalog"); + $bweb->display_end(); + exit 0; +} +$r = $bweb->dbh_selectrow_hashref("SELECT JobId AS ok FROM brestore_knownjobid WHERE JobId = $jobid"); +if (!$r || !$r->{ok}) { # TODO: compute information + $bweb->error("Path information for job $jobid has not been updated in the catalog"); + $bweb->display_end(); + exit 0; +} + # if it's a file, display it if ($fnid and $pathid) { @@ -266,8 +281,14 @@ { my ($jobid, $full_name) = @_; - my $filename = $bweb->dbh_quote(basename($full_name)); - my $path = $bweb->dbh_quote(dirname($full_name) . "/"); + # default to / + my $path = "'/'"; + my $filename = "''"; + + if ($full_name ne '/') { + $filename = $bweb->dbh_quote(basename($full_name)); + $path = $bweb->dbh_quote(dirname($full_name) . "/"); + } my $attr = $bweb->dbh_selectrow_hashref(" SELECT 1 AS found, @@ -277,8 +298,8 @@ base64_decode_lstat(12, LStat) AS mtime, base64_decode_lstat(13, LStat) AS ctime - FROM File INNER JOIN Filename USING (FilenameId) - INNER JOIN Path USING (PathId) + FROM File JOIN Filename USING (FilenameId) + JOIN Path USING (PathId) WHERE Name = $filename AND Path = $path AND JobId = $jobid Modified: trunk/gui/bweb/cgi/bgraph.pl =================================================================== --- trunk/gui/bweb/cgi/bgraph.pl 2008-09-21 07:06:04 UTC (rev 7616) +++ trunk/gui/bweb/cgi/bgraph.pl 2008-09-21 21:18:12 UTC (rev 7617) @@ -103,7 +103,7 @@ } my $groupf=''; # from clause -my $groupq=''; # whre clause +my $groupq=''; # where clause if ($arg->{jclient_groups}) { $groupf = " JOIN client_group_member ON (Client.ClientId = client_group_member.clientid) JOIN client_group USING (client_group_id)"; @@ -231,6 +231,7 @@ my $ret = {}; foreach my $row (@$all_row) { + # Todo, add Level to label if option is set ->[4] my $label = $row->[1] . "/" . $row->[2] ; # client/backup name $ret->{date}->[$i] = $row->[0]; @@ -277,7 +278,8 @@ UNIX_TIMESTAMP(Job.StartTime) AS starttime, Client.Name AS clientname, Job.Name AS jobname, - Job.JobBytes AS jobbytes + Job.JobBytes AS jobbytes, + Job.Level AS joblevel FROM $jobt AS Job, FileSet, Client $filter $groupf WHERE Job.ClientId = Client.ClientId AND Job.FileSetId = FileSet.FileSetId @@ -315,7 +317,8 @@ UNIX_TIMESTAMP(Job.StartTime) AS starttime, Client.Name AS clientname, Job.Name AS jobname, - Job.JobFiles AS jobfiles + Job.JobFiles AS jobfiles, + Job.Level AS joblevel FROM $jobt AS Job, FileSet, Client $filter $groupf WHERE Job.ClientId = Client.ClientId AND Job.FileSetId = FileSet.FileSetId @@ -356,7 +359,8 @@ SELECT UNIX_TIMESTAMP(Job.StartTime) AS starttime, Client.Name AS client, Job.Name AS jobname, - base64_decode_lstat(8,LStat) AS lstat + base64_decode_lstat(8,LStat) AS lstat, + Job.Level AS joblevel FROM Job, FileSet, Filename, Path, File, Client $filter WHERE Job.ClientId = Client.ClientId @@ -406,7 +410,8 @@ SELECT UNIX_TIMESTAMP(Job.StartTime) AS starttime, Client.Name AS client, Job.Name AS jobname, - brestore_pathvisibility.size AS size + brestore_pathvisibility.size AS size, + Job.Level AS joblevel FROM Job, Client $filter, FileSet, Path, brestore_pathvisibility WHERE Job.ClientId = Client.ClientId @@ -453,7 +458,8 @@ ($bweb->{sql}->{SEC_TO_INT}( $bweb->{sql}->{UNIX_TIMESTAMP}(EndTime) - $bweb->{sql}->{UNIX_TIMESTAMP}(StartTime)) + 0.01) - AS rate + AS rate, + Job.Level AS joblevel FROM $jobt AS Job, FileSet, Client $filter $groupf WHERE Job.ClientId = Client.ClientId @@ -496,7 +502,9 @@ Job.Name AS jobname, $bweb->{sql}->{SEC_TO_INT}( $bweb->{sql}->{UNIX_TIMESTAMP}(EndTime) - $bweb->{sql}->{UNIX_TIMESTAMP}(StartTime)) - AS duration + AS duration, + Job.Level AS joblevel + FROM $jobt AS Job, FileSet, Client $filter $groupf WHERE Job.ClientId = Client.ClientId AND Job.FileSetId = FileSet.FileSetId Modified: trunk/gui/bweb/html/bweb.css =================================================================== --- trunk/gui/bweb/html/bweb.css 2008-09-21 07:06:04 UTC (rev 7616) +++ trunk/gui/bweb/html/bweb.css 2008-09-21 21:18:12 UTC (rev 7617) @@ -10,6 +10,8 @@ button.bp { border: 0px; background-color: transparent; } td.joberr { background-color: red; color: white;} +.joberr a:link { color: white; } +.joberr a:visited { color: #ffe0c0; } .pSlice, .pSliceFull, .pSliceError, .pSliceAppend, .pSlicePurged, .pSliceRecycle, .pSliceArchive, .pSliceUsed, .pSliceRead_Only, .pSliceDisabled, Modified: trunk/gui/bweb/lib/Bweb.pm =================================================================== --- trunk/gui/bweb/lib/Bweb.pm 2008-09-21 07:06:04 UTC (rev 7616) +++ trunk/gui/bweb/lib/Bweb.pm 2008-09-21 21:18:12 UTC (rev 7617) @@ -234,6 +234,7 @@ display_log_time => qr!^(on)?$!, enable_security => qr/^(on)?$/, enable_security_acl => qr/^(on)?$/, + default_age => qr/^(?:\d+(?:[ywdhms]\s*)?)+\s*$/, ); =head1 FUNCTION @@ -273,6 +274,9 @@ return $self->error("If you update from an old bweb install, your must reload this page and if it's fail again, you have to configure bweb again...") ; } + # set default values + $self->{default_age} = '7d'; + foreach my $k (keys %$VAR1) { $self->{$k} = $VAR1->{$k}; } @@ -1271,7 +1275,6 @@ use POSIX qw/strftime/; our $config_file='/etc/bacula/bweb.conf'; - our $cur_id=0; =head1 VARIABLE @@ -1425,6 +1428,25 @@ return sprintf($format, $val, $unit[$i]); } +sub human_sec_unit +{ + my $val = shift; + my $orig = $val; + if ($val =~ /^(?:\d+(?:[ywdhms]\s*)?)+\s*$/) { + for ($val) { + s/y/*52w/g; + s/w/*7d/g; + s/d/*24h/g; + s/h/*60m/g; + s/m/*60s/g; + s/s(\d)/+$1/g; + s/s//; + } + $val = eval $val; + } + return int($val); +} + # display Day, Hour, Year sub human_sec { @@ -1740,7 +1762,7 @@ slot => 0, drive => 0, priority => 10, - age => 60*60*24*7, + age => $self->{info}->{default_age}, days => 1, maxvoljobs => 0, maxvolbytes => 0, @@ -1798,6 +1820,10 @@ my $value = CGI::param($i) || $opt_i{$i} ; if ($value =~ /^(\d+)$/) { $ret{$i} = $1; + } elsif ($value eq 'age' && # can have unit + $i =~ /^(?:\d+(?:[ywdhms]\s*)?)+\s*$/) # 2y1h2m34s + { + $ret{$i} = human_sec_unit($i); } } elsif ($opt_s{$i}) { # simple string param my $value = CGI::param($i) || ''; @@ -2212,6 +2238,7 @@ $row->{db_size} = human_size($row->{db_size}); $row->{label} = $label; + $row->{age} = $arg{age}; $self->display($row, "general.tpl"); } @@ -3618,6 +3645,7 @@ $row->{ID} = $cur_id++; $row->{label} = $label; $row->{grapharg} = "client"; + $row->{age} = $arg{age}; $self->display($row, "display_client_stats.tpl"); } Modified: trunk/gui/bweb/technotes-2.3 =================================================================== --- trunk/gui/bweb/technotes-2.3 2008-09-21 07:06:04 UTC (rev 7616) +++ trunk/gui/bweb/technotes-2.3 2008-09-21 21:18:12 UTC (rev 7617) @@ -1,3 +1,15 @@ +21Sep08 +ebl + bfileview: + - Add error message for pruned of uncomputed jobs + - Bugfix for looking / + Bweb.pm + - Add support for age=1w2d40m + - Add new configuration variable to modify default age + general.tpl + - Add hyperlink to failed job count + TODO: add C.png (with something like zzZZzzz) + 25Aug08 ebl Fix #1132 about typo in directory creation in install_bweb Modified: trunk/gui/bweb/tpl/config_edit.tpl =================================================================== --- trunk/gui/bweb/tpl/config_edit.tpl 2008-09-21 07:06:04 UTC (rev 7616) +++ trunk/gui/bweb/tpl/config_edit.tpl 2008-09-21 21:18:12 UTC (rev 7617) @@ -53,6 +53,9 @@ <option id='lang_es' value='es'>__Spanish__</option> </select> </td></tr> + <tr><td>__default_age:__</td> + <td> <input class="formulaire" type='text' value='<TMPL_VAR default_age>' title='24h15m' size='64' name='default_age'> + </td></tr> <tr><td>display_log_time:</td> <td> <input class="formulaire" title="__Display log timestamp__" type='checkbox' name='display_log_time' <TMPL_IF display_log_time> checked='checked' value='on' </TMPL_IF> > </td></tr> Modified: trunk/gui/bweb/tpl/config_view.tpl =================================================================== --- trunk/gui/bweb/tpl/config_view.tpl 2008-09-21 07:06:04 UTC (rev 7616) +++ trunk/gui/bweb/tpl/config_view.tpl 2008-09-21 21:18:12 UTC (rev 7617) @@ -19,6 +19,7 @@ <tr><td title="__use a wiki for jobs documentation?__">wiki_url:</td> <td> <TMPL_VAR wiki_url> </td></tr> <tr><td title="/path/to/your/template_dir">template_dir:</td> <td> <TMPL_VAR template_dir> </td></tr> <tr><td title="__Default language__">__language:__</td> <td> <TMPL_VAR lang> </td></tr> + <tr><td title="__Default Age__">__default_age:__</td> <td> <TMPL_VAR default_age> </td></tr> <tr><td title="__display timestamp in job log__">display_log_time:</td> <td> <TMPL_VAR display_log_time> </td></tr> <tr><td title="__user managment__">__security:__</td> <td> <TMPL_VAR enable_security> </td></tr> <tr><td title="__user filter__">__security acl:__</td> <td> <TMPL_VAR enable_security_acl> </td></tr> Modified: trunk/gui/bweb/tpl/display_client_stats.tpl =================================================================== --- trunk/gui/bweb/tpl/display_client_stats.tpl 2008-09-21 07:06:04 UTC (rev 7616) +++ trunk/gui/bweb/tpl/display_client_stats.tpl 2008-09-21 21:18:12 UTC (rev 7617) @@ -5,9 +5,9 @@ <div class='bodydiv'> <form action='?'> <table id='id<TMPL_VAR ID>'></table> - <img src="bgraph.pl?<TMPL_VAR grapharg>=<TMPL_VAR clientname>;graph=job_duration;age=2592000;width=420;height=200" alt='Not enough data' > - <img src="bgraph.pl?<TMPL_VAR grapharg>=<TMPL_VAR clientname>;graph=job_rate;age=2592000;width=420;height=200" alt='Not enough data'> - <img src="bgraph.pl?<TMPL_VAR grapharg>=<TMPL_VAR clientname>;graph=job_size;age=2592000;width=420;height=200" alt='Not enough data'> + <img src="bgraph.pl?<TMPL_VAR grapharg>=<TMPL_VAR clientname>;graph=job_duration;age=<TMPL_VAR age>;width=420;height=200" alt='Not enough data' > + <img src="bgraph.pl?<TMPL_VAR grapharg>=<TMPL_VAR clientname>;graph=job_rate;age=<TMPL_VAR age>;width=420;height=200" alt='Not enough data'> + <img src="bgraph.pl?<TMPL_VAR grapharg>=<TMPL_VAR clientname>;graph=job_size;age=<TMPL_VAR age>;width=420;height=200" alt='Not enough data'> <!-- <div class="otherboxtitle"> __Actions__ </div> Modified: trunk/gui/bweb/tpl/general.tpl =================================================================== --- trunk/gui/bweb/tpl/general.tpl 2008-09-21 07:06:04 UTC (rev 7616) +++ trunk/gui/bweb/tpl/general.tpl 2008-09-21 21:18:12 UTC (rev 7617) @@ -20,7 +20,9 @@ <tr><td>__Job failed__ (<TMPL_VAR label>):</td> <td <TMPL_IF nb_err> class='joberr' </TMPL_IF>> + <a href="?action=job;level=Any;status=f;age=<TMPL_VAR age>;jobtype=B"> <TMPL_VAR nb_err> + </a> </td> <td></td> <td></td> <td></td> <td></td> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ri...@us...> - 2008-09-22 15:14:24
|
Revision: 7621 http://bacula.svn.sourceforge.net/bacula/?rev=7621&view=rev Author: ricozz Date: 2008-09-22 15:14:12 +0000 (Mon, 22 Sep 2008) Log Message: ----------- ebl Add an option to bgraph that shows each levels as different source Modified Paths: -------------- trunk/gui/bweb/cgi/bgraph.pl trunk/gui/bweb/technotes-2.3 trunk/gui/bweb/tpl/graph.tpl Modified: trunk/gui/bweb/cgi/bgraph.pl =================================================================== --- trunk/gui/bweb/cgi/bgraph.pl 2008-09-22 15:03:01 UTC (rev 7620) +++ trunk/gui/bweb/cgi/bgraph.pl 2008-09-22 15:14:12 UTC (rev 7621) @@ -79,7 +79,7 @@ } my $levelq=''; -if ($arg->{level} and $arg->{level} ne 'Any') { +if ($arg->{level} and $arg->{level} !~ 'All|Any') { $levelq = " AND Job.Level = '$arg->{level}' "; } @@ -232,9 +232,12 @@ my $ret = {}; foreach my $row (@$all_row) { - # Todo, add Level to label if option is set ->[4] my $label = $row->[1] . "/" . $row->[2] ; # client/backup name + if ($arg->{level} eq 'All') { # can separate level + $label = $row->[4] . ': ' . $label; # if users ask for + } + $ret->{date}->[$i] = $row->[0]; $ret->{$label}->[$i] = $row->[3]; $i++; Modified: trunk/gui/bweb/technotes-2.3 =================================================================== --- trunk/gui/bweb/technotes-2.3 2008-09-22 15:03:01 UTC (rev 7620) +++ trunk/gui/bweb/technotes-2.3 2008-09-22 15:14:12 UTC (rev 7621) @@ -1,3 +1,5 @@ +22Sep08 +ebl Add an option to bgraph that shows each levels as different source 21Sep08 ebl bfileview: Modified: trunk/gui/bweb/tpl/graph.tpl =================================================================== --- trunk/gui/bweb/tpl/graph.tpl 2008-09-22 15:03:01 UTC (rev 7620) +++ trunk/gui/bweb/tpl/graph.tpl 2008-09-22 15:14:12 UTC (rev 7621) @@ -15,7 +15,8 @@ <td valign='top'> <h2>__Level__</h2> <select name='level' class='formulaire'> - <option id='level_Any' value='Any'>__Any__</option> + <option id='level_Any' title='__Any level (grouped)__' value='Any'>__Any__</option> + <option id='level_All' title='__All levels (separated)__' value='All'>__All__</option> <option id='level_F' value='F'>__Full__</option> <option id='level_D' value='D'>__Differential__</option> <option id='level_I' value='I'>__Incremental__</option> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ri...@us...> - 2008-10-07 18:45:43
|
Revision: 7728 http://bacula.svn.sourceforge.net/bacula/?rev=7728&view=rev Author: ricozz Date: 2008-10-07 18:45:36 +0000 (Tue, 07 Oct 2008) Log Message: ----------- ebl Update for base64_decode_lstat() function Modified Paths: -------------- trunk/gui/bweb/technotes-2.3 trunk/gui/bweb/tpl/display_job_zoom.tpl Modified: trunk/gui/bweb/technotes-2.3 =================================================================== --- trunk/gui/bweb/technotes-2.3 2008-10-07 18:41:41 UTC (rev 7727) +++ trunk/gui/bweb/technotes-2.3 2008-10-07 18:45:36 UTC (rev 7728) @@ -1,5 +1,9 @@ +07Oct08 +ebl Add base64_decode_lstat() function to Mysql + 22Sep08 ebl Add an option to bgraph that shows each levels as different source + 21Sep08 ebl bfileview: Modified: trunk/gui/bweb/tpl/display_job_zoom.tpl =================================================================== --- trunk/gui/bweb/tpl/display_job_zoom.tpl 2008-10-07 18:41:41 UTC (rev 7727) +++ trunk/gui/bweb/tpl/display_job_zoom.tpl 2008-10-07 18:45:36 UTC (rev 7728) @@ -41,7 +41,6 @@ <img src='/bweb/zoom.png' alt=''>__View FileSet__</button> </form> </td> -<!-- Remove this to activate bfileview <td> <form name="bfileview" action='bfileview.pl?'> <input type='hidden' name='jobid' value='<TMPL_VAR jobid>'> @@ -52,7 +51,6 @@ <img src='/bweb/colorscm.png' alt=''> __View file usage__ </button> </form> </td> ---> <TMPL_IF wiki_url> <td> <a href="<TMPL_VAR wiki_url><TMPL_VAR Client>" title='__View doc__'><img src='/bweb/doc.png' alt='__View doc__'></a>__View doc__ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ri...@us...> - 2008-10-21 11:35:28
|
Revision: 7860 http://bacula.svn.sourceforge.net/bacula/?rev=7860&view=rev Author: ricozz Date: 2008-10-21 11:34:20 +0000 (Tue, 21 Oct 2008) Log Message: ----------- ebl Rename JobStat table, fix couple of warning Modified Paths: -------------- trunk/gui/bweb/cgi/bgraph.pl trunk/gui/bweb/lib/Bweb.pm trunk/gui/bweb/script/bweb-postgresql.sql trunk/gui/bweb/script/update_job_old.sql trunk/gui/bweb/technotes-2.3 Modified: trunk/gui/bweb/cgi/bgraph.pl =================================================================== --- trunk/gui/bweb/cgi/bgraph.pl 2008-10-21 09:42:02 UTC (rev 7859) +++ trunk/gui/bweb/cgi/bgraph.pl 2008-10-21 11:34:20 UTC (rev 7860) @@ -55,9 +55,9 @@ # Job table keep use Media or Job retention, so it's quite enought # for good statistics -# CREATE TABLE job_old (LIKE Job); -# INSERT INTO job_old -# (SELECT * FROM Job WHERE JobId NOT IN (SELECT JobId FROM job_old) ); +# CREATE TABLE JobHistory (LIKE Job); +# INSERT INTO JobHistory +# (SELECT * FROM Job WHERE JobId NOT IN (SELECT JobId FROM JobHistory) ); my $jobt = $bweb->get_stat_table(); my $graph = CGI::param('graph') || 'job_size'; Modified: trunk/gui/bweb/lib/Bweb.pm =================================================================== --- trunk/gui/bweb/lib/Bweb.pm 2008-10-21 09:42:02 UTC (rev 7859) +++ trunk/gui/bweb/lib/Bweb.pm 2008-10-21 11:34:20 UTC (rev 7860) @@ -1876,7 +1876,7 @@ } if ($what{storage_cmd}) { - if (!grep {/^$ret{storage_cmd}$/} ('mount', 'umount', 'release','status')) { + if (!grep {/^\Q$ret{storage_cmd}$/} ('mount', 'umount', 'release','status')) { delete $ret{storage_cmd}; } } @@ -1890,7 +1890,7 @@ } if ($what{since}) { - my $age = $ret{age} || $opt_i{age}; + my $age = $ret{age} || human_sec_unit($opt_i{age}); my $since = CGI::param('since') || strftime('%F %T', localtime(time - $age)); if ($since =~ /^(\d{4}-\d{2}-\d{2}( \d{2}:\d{2}:\d{2})?)$/) { $ret{since} = $1; Modified: trunk/gui/bweb/script/bweb-postgresql.sql =================================================================== --- trunk/gui/bweb/script/bweb-postgresql.sql 2008-10-21 09:42:02 UTC (rev 7859) +++ trunk/gui/bweb/script/bweb-postgresql.sql 2008-10-21 11:34:20 UTC (rev 7860) @@ -1,3 +1,6 @@ +-- Require > 7.4, else use createlang command +CREATE PROCEDURAL LANGUAGE plpgsql; + -- -------------------------------------------------- -- Upgrade from 2.2 -- -------------------------------------------------- @@ -210,7 +213,6 @@ -- -- -CREATE PROCEDURAL LANGUAGE plpgsql; BEGIN; CREATE FUNCTION SEC_TO_TIME(timestamp with time zone) Modified: trunk/gui/bweb/script/update_job_old.sql =================================================================== --- trunk/gui/bweb/script/update_job_old.sql 2008-10-21 09:42:02 UTC (rev 7859) +++ trunk/gui/bweb/script/update_job_old.sql 2008-10-21 11:34:20 UTC (rev 7860) @@ -1,8 +1,8 @@ --- First, create job_old table --- CREATE TABLE job_old (LIKE Job); +-- First, create JobHistory table +-- CREATE TABLE JobHistory (LIKE Job); -- -- then put this on your crontab -- */20 * * * * psql -f /opt/bacula/etc/update_job_old.sql > /home/bacula/update_job_old.log -INSERT INTO job_old - (SELECT * FROM Job WHERE JobStatus in ('T', 'f', 'A') AND JobId NOT IN (SELECT JobId FROM job_old) ); +INSERT INTO JobHistory + (SELECT * FROM Job WHERE JobStatus in ('T', 'f', 'A') AND JobId NOT IN (SELECT JobId FROM JobHistory) ); Modified: trunk/gui/bweb/technotes-2.3 =================================================================== --- trunk/gui/bweb/technotes-2.3 2008-10-21 09:42:02 UTC (rev 7859) +++ trunk/gui/bweb/technotes-2.3 2008-10-21 11:34:20 UTC (rev 7860) @@ -1,3 +1,6 @@ +20Oct08 +ebl Rename job_old to JobHistory + 07Oct08 ebl Add base64_decode_lstat() function to Mysql This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ri...@us...> - 2008-10-21 16:39:55
|
Revision: 7869 http://bacula.svn.sourceforge.net/bacula/?rev=7869&view=rev Author: ricozz Date: 2008-10-21 16:39:44 +0000 (Tue, 21 Oct 2008) Log Message: ----------- ebl fix Balloon mode with firefox3 ebl fix bug in group stat page Modified Paths: -------------- trunk/gui/bweb/lang/en/tpl/graph.tpl trunk/gui/bweb/lang/es/tpl/graph.tpl trunk/gui/bweb/lang/fr/tpl/graph.tpl trunk/gui/bweb/technotes-2.3 trunk/gui/bweb/tpl/display_stats.tpl trunk/gui/bweb/tpl/graph.tpl Modified: trunk/gui/bweb/lang/en/tpl/graph.tpl =================================================================== --- trunk/gui/bweb/lang/en/tpl/graph.tpl 2008-10-21 16:35:01 UTC (rev 7868) +++ trunk/gui/bweb/lang/en/tpl/graph.tpl 2008-10-21 16:39:44 UTC (rev 7869) @@ -132,7 +132,7 @@ </div> <div class="otherbox"> - <img usemap='imggraph' id='imggraph' + <img usemap='#imggraph' id='imggraph' alt='Nothing to display, Try a bigger date range'> </div> Modified: trunk/gui/bweb/lang/es/tpl/graph.tpl =================================================================== --- trunk/gui/bweb/lang/es/tpl/graph.tpl 2008-10-21 16:35:01 UTC (rev 7868) +++ trunk/gui/bweb/lang/es/tpl/graph.tpl 2008-10-21 16:39:44 UTC (rev 7869) @@ -132,7 +132,7 @@ </div> <div class="otherbox"> - <img usemap='imggraph' id='imggraph' + <img usemap='#imggraph' id='imggraph' alt='Nothing to display, Try a bigger date range'> </div> Modified: trunk/gui/bweb/lang/fr/tpl/graph.tpl =================================================================== --- trunk/gui/bweb/lang/fr/tpl/graph.tpl 2008-10-21 16:35:01 UTC (rev 7868) +++ trunk/gui/bweb/lang/fr/tpl/graph.tpl 2008-10-21 16:39:44 UTC (rev 7869) @@ -132,7 +132,7 @@ </div> <div class="otherbox"> - <img usemap='imggraph' id='imggraph' + <img usemap='#imggraph' id='imggraph' alt='Rien n a afficher, essayer avec une autre p\xE9riode'> </div> Modified: trunk/gui/bweb/technotes-2.3 =================================================================== --- trunk/gui/bweb/technotes-2.3 2008-10-21 16:35:01 UTC (rev 7868) +++ trunk/gui/bweb/technotes-2.3 2008-10-21 16:39:44 UTC (rev 7869) @@ -1,3 +1,6 @@ +21Oct08 +ebl Fix lot of small bugs + 20Oct08 ebl Rename job_old to JobHistory Modified: trunk/gui/bweb/tpl/display_stats.tpl =================================================================== --- trunk/gui/bweb/tpl/display_stats.tpl 2008-10-21 16:35:01 UTC (rev 7868) +++ trunk/gui/bweb/tpl/display_stats.tpl 2008-10-21 16:39:44 UTC (rev 7869) @@ -8,7 +8,7 @@ </div> <script type="text/javascript" language="JavaScript"> -var header = new Array("__Name__", "__Nb Jobs__", "__Nb Err__", "__% Ok__", , "__Nb Resto__", +var header = new Array("__Name__", "__Nb Jobs__", "__Nb Err__", "__% Ok__", "__Nb Resto__", "__Nb Bytes__", "__Nb Bytes__", "__Nb Files__"); var data = new Array(); Modified: trunk/gui/bweb/tpl/graph.tpl =================================================================== --- trunk/gui/bweb/tpl/graph.tpl 2008-10-21 16:35:01 UTC (rev 7868) +++ trunk/gui/bweb/tpl/graph.tpl 2008-10-21 16:39:44 UTC (rev 7869) @@ -133,7 +133,7 @@ </div> <div class="otherbox"> - <img usemap='imggraph' id='imggraph' + <img usemap='#imggraph' id='imggraph' alt='__Nothing to display, Try a bigger date range__'> </div> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ri...@us...> - 2008-10-29 12:17:14
|
Revision: 7932 http://bacula.svn.sourceforge.net/bacula/?rev=7932&view=rev Author: ricozz Date: 2008-10-29 12:17:09 +0000 (Wed, 29 Oct 2008) Log Message: ----------- ebl Add support for volume that contains . and - (VOL.001 or VOL-001) Modified Paths: -------------- trunk/gui/bweb/lib/Bweb.pm trunk/gui/bweb/technotes-2.3 Modified: trunk/gui/bweb/lib/Bweb.pm =================================================================== --- trunk/gui/bweb/lib/Bweb.pm 2008-10-29 09:50:17 UTC (rev 7931) +++ trunk/gui/bweb/lib/Bweb.pm 2008-10-29 12:17:09 UTC (rev 7932) @@ -630,7 +630,7 @@ # Storage Element 7:Empty # Storage Element 2:Full :VolumeTag=000002 - if ($l =~ /Storage Element (\d+):(Empty|Full)(\s+:VolumeTag=([\w\d]+))?/){ + if ($l =~ /Storage Element (\d+):(Empty|Full)(\s+:VolumeTag=([\w\d.-]+))?/){ if ($2 eq 'Empty') { $self->set_empty_slot($1); @@ -638,7 +638,7 @@ $self->set_slot($1, $4); } - } elsif ($l =~ /Data Transfer.+(\d+):(Full|Empty)(\s+.Storage Element (\d+) Loaded.(:VolumeTag = ([\w\d]+))?)?/) { + } elsif ($l =~ /Data Transfer.+(\d+):(Full|Empty)(\s+.Storage Element (\d+) Loaded.(:VolumeTag = ([\w\d.-]+))?)?/) { if ($2 eq 'Empty') { $self->set_empty_drive($1); @@ -646,7 +646,7 @@ $self->set_drive($1, $4, $6); } - } elsif ($l =~ /Storage Element (\d+).+IMPORT\/EXPORT:(Empty|Full)( :VolumeTag=([\d\w]+))?/) + } elsif ($l =~ /Storage Element (\d+).+IMPORT\/EXPORT:(Empty|Full)( :VolumeTag=([\d\w.-]+))?/) { if ($2 eq 'Empty') { $self->set_empty_io($1); Modified: trunk/gui/bweb/technotes-2.3 =================================================================== --- trunk/gui/bweb/technotes-2.3 2008-10-29 09:50:17 UTC (rev 7931) +++ trunk/gui/bweb/technotes-2.3 2008-10-29 12:17:09 UTC (rev 7932) @@ -1,3 +1,7 @@ +29Oct08 +ebl Add support for volume that contains - and . + in autochanger + 21Oct08 ebl Fix lot of small bugs This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ri...@us...> - 2008-11-04 13:33:50
|
Revision: 7972 http://bacula.svn.sourceforge.net/bacula/?rev=7972&view=rev Author: ricozz Date: 2008-11-04 13:33:46 +0000 (Tue, 04 Nov 2008) Log Message: ----------- ebl Display all groups in display_stat page Modified Paths: -------------- trunk/gui/bweb/lang/en/tpl/display_stats.tpl trunk/gui/bweb/lang/es/tpl/display_stats.tpl trunk/gui/bweb/lang/fr/tpl/display_stats.tpl trunk/gui/bweb/technotes-2.3 trunk/gui/bweb/tpl/display_stats.tpl Modified: trunk/gui/bweb/lang/en/tpl/display_stats.tpl =================================================================== --- trunk/gui/bweb/lang/en/tpl/display_stats.tpl 2008-11-03 16:39:23 UTC (rev 7971) +++ trunk/gui/bweb/lang/en/tpl/display_stats.tpl 2008-11-04 13:33:46 UTC (rev 7972) @@ -48,7 +48,7 @@ header_color: header_color, page_nav: true, // disable_sorting: new Array(1), - rows_per_page: rows_per_page + rows_per_page: 100 } ); </script> Modified: trunk/gui/bweb/lang/es/tpl/display_stats.tpl =================================================================== --- trunk/gui/bweb/lang/es/tpl/display_stats.tpl 2008-11-03 16:39:23 UTC (rev 7971) +++ trunk/gui/bweb/lang/es/tpl/display_stats.tpl 2008-11-04 13:33:46 UTC (rev 7972) @@ -48,7 +48,7 @@ header_color: header_color, page_nav: true, // disable_sorting: new Array(1), - rows_per_page: rows_per_page + rows_per_page: 100 } ); </script> Modified: trunk/gui/bweb/lang/fr/tpl/display_stats.tpl =================================================================== --- trunk/gui/bweb/lang/fr/tpl/display_stats.tpl 2008-11-03 16:39:23 UTC (rev 7971) +++ trunk/gui/bweb/lang/fr/tpl/display_stats.tpl 2008-11-04 13:33:46 UTC (rev 7972) @@ -48,7 +48,7 @@ header_color: header_color, page_nav: true, // disable_sorting: new Array(1), - rows_per_page: rows_per_page + rows_per_page: 100 } ); </script> Modified: trunk/gui/bweb/technotes-2.3 =================================================================== --- trunk/gui/bweb/technotes-2.3 2008-11-03 16:39:23 UTC (rev 7971) +++ trunk/gui/bweb/technotes-2.3 2008-11-04 13:33:46 UTC (rev 7972) @@ -1,6 +1,5 @@ -29Oct08 -ebl Add support for volume that contains - and . - in autochanger +04Nov08 +ebl Display all groups in display_stat page 21Oct08 ebl Fix lot of small bugs Modified: trunk/gui/bweb/tpl/display_stats.tpl =================================================================== --- trunk/gui/bweb/tpl/display_stats.tpl 2008-11-03 16:39:23 UTC (rev 7971) +++ trunk/gui/bweb/tpl/display_stats.tpl 2008-11-04 13:33:46 UTC (rev 7972) @@ -48,7 +48,7 @@ header_color: header_color, page_nav: true, // disable_sorting: new Array(1), - rows_per_page: rows_per_page + rows_per_page: 100 } ); </script> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ri...@us...> - 2008-11-06 12:22:35
|
Revision: 7988 http://bacula.svn.sourceforge.net/bacula/?rev=7988&view=rev Author: ricozz Date: 2008-11-06 11:48:20 +0000 (Thu, 06 Nov 2008) Log Message: ----------- ebl Fix a Bconsole.pm with Expect bug on debian lenny Modified Paths: -------------- trunk/gui/bweb/lib/Bconsole.pm trunk/gui/bweb/technotes-2.3 Modified: trunk/gui/bweb/lib/Bconsole.pm =================================================================== --- trunk/gui/bweb/lib/Bconsole.pm 2008-11-06 08:59:25 UTC (rev 7987) +++ trunk/gui/bweb/lib/Bconsole.pm 2008-11-06 11:48:20 UTC (rev 7988) @@ -88,7 +88,7 @@ print STDERR "===> $cmd $go\n"; $self->{bconsole}->clear_accum(); $self->send("$cmd $go\n"); - $self->expect_it('-re',qr/^[*]/); + $self->expect_it('-re','^[*]'); my $ret = $self->before(); if ($ret =~ /jobid=(\d+)/is) { return $1; @@ -207,7 +207,7 @@ $self->{bconsole}->clear_accum(); $self->send("$cmd\n"); # $self->expect_it($cmd); - $self->expect_it('-re',qr/^[*]/); + $self->expect_it('-re','^[*]'); return $self->before(); } @@ -223,7 +223,7 @@ $self->{bconsole}->clear_accum(); $self->send("yes\n"); # $self->expect_it("yes"); - $self->expect_it('-re',qr/^[*]/); + $self->expect_it('-re','^[*]'); return $self->before(); } @@ -254,7 +254,7 @@ $self->send("yes\n"); # $self->expect_it("yes"); # $res .= $self->before(); - $self->expect_it('-re',qr/^[*]/); + $self->expect_it('-re','^[*]'); $res .= $self->before(); return $res; } @@ -452,7 +452,7 @@ print "fileset : ", join(',', $c->list_fileset()), "\n"; print "job : ", join(',', $c->list_job()), "\n"; print "storage : ", join(',', $c->list_storage()), "\n"; -print $c->label_barcodes(pool => 'Scratch', drive => 0, storage => 'LTO3', slots => '45'); +#print $c->label_barcodes(pool => 'Scratch', drive => 0, storage => 'LTO3', slots => '45'); #print "prune : " . $c->prune_volume('000001'), "\n"; #print "update : " . $c->send_cmd('update slots storage=SDLT-1-2, drive=0'), "\n"; #print "label : ", join(',', $c->label_barcodes(storage => 'SDLT-1-2', Modified: trunk/gui/bweb/technotes-2.3 =================================================================== --- trunk/gui/bweb/technotes-2.3 2008-11-06 08:59:25 UTC (rev 7987) +++ trunk/gui/bweb/technotes-2.3 2008-11-06 11:48:20 UTC (rev 7988) @@ -1,3 +1,6 @@ +06Nov08 +ebl Fix a Bconsole.pm with Expect bug on debian lenny + 04Nov08 ebl Display all groups in display_stat page This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ri...@us...> - 2008-11-06 12:59:22
|
Revision: 7989 http://bacula.svn.sourceforge.net/bacula/?rev=7989&view=rev Author: ricozz Date: 2008-11-06 12:59:19 +0000 (Thu, 06 Nov 2008) Log Message: ----------- ebl Fix in storage command Modified Paths: -------------- trunk/gui/bweb/lib/Bweb.pm trunk/gui/bweb/technotes-2.3 Modified: trunk/gui/bweb/lib/Bweb.pm =================================================================== --- trunk/gui/bweb/lib/Bweb.pm 2008-11-06 11:48:20 UTC (rev 7988) +++ trunk/gui/bweb/lib/Bweb.pm 2008-11-06 12:59:19 UTC (rev 7989) @@ -1877,7 +1877,7 @@ } if ($what{storage_cmd}) { - if (!grep {/^\Q$ret{storage_cmd}$/} ('mount', 'umount', 'release','status')) { + if (!grep {/^\Q$ret{storage_cmd}\E$/} ('mount', 'umount', 'release','status')) { delete $ret{storage_cmd}; } } Modified: trunk/gui/bweb/technotes-2.3 =================================================================== --- trunk/gui/bweb/technotes-2.3 2008-11-06 11:48:20 UTC (rev 7988) +++ trunk/gui/bweb/technotes-2.3 2008-11-06 12:59:19 UTC (rev 7989) @@ -1,5 +1,6 @@ 06Nov08 ebl Fix a Bconsole.pm with Expect bug on debian lenny +ebl Fix in storage command 04Nov08 ebl Display all groups in display_stat page This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ri...@us...> - 2008-11-07 17:10:54
|
Revision: 8014 http://bacula.svn.sourceforge.net/bacula/?rev=8014&view=rev Author: ricozz Date: 2008-11-07 17:10:44 +0000 (Fri, 07 Nov 2008) Log Message: ----------- ebl Fix bad statistics Modified Paths: -------------- trunk/gui/bweb/lang/en/tpl/display_stats.tpl trunk/gui/bweb/lang/es/tpl/display_stats.tpl trunk/gui/bweb/lang/fr/tpl/display_stats.tpl trunk/gui/bweb/tpl/display_stats.tpl Modified: trunk/gui/bweb/lang/en/tpl/display_stats.tpl =================================================================== --- trunk/gui/bweb/lang/en/tpl/display_stats.tpl 2008-11-07 16:28:48 UTC (rev 8013) +++ trunk/gui/bweb/lang/en/tpl/display_stats.tpl 2008-11-07 17:10:44 UTC (rev 8014) @@ -17,16 +17,16 @@ var nb_job=<TMPL_IF nb_job><TMPL_VAR nb_job><TMPL_ELSE>0</TMPL_IF>; var nb_err=<TMPL_IF nb_err><TMPL_VAR nb_err><TMPL_ELSE>0</TMPL_IF>; -var t_ok = (nb_job - nb_err)/(nb_job + 0.0001)*100; - +var t_ok = Math.abs((nb_job - nb_err)/(nb_job + nb_err + 0.0001)*100); +var nb_byte = <TMPL_IF nb_byte><TMPL_VAR nb_byte><TMPL_ELSE>0</TMPL_IF>; data.push( new Array( "<TMPL_VAR name>", nb_job, nb_err, t_ok.toFixed(2), "<TMPL_VAR nb_resto>", - human_size(<TMPL_VAR nb_byte>), - <TMPL_VAR nb_byte>, + human_size(nb_byte), + nb_byte, "<TMPL_VAR nb_file>" ) ) ; Modified: trunk/gui/bweb/lang/es/tpl/display_stats.tpl =================================================================== --- trunk/gui/bweb/lang/es/tpl/display_stats.tpl 2008-11-07 16:28:48 UTC (rev 8013) +++ trunk/gui/bweb/lang/es/tpl/display_stats.tpl 2008-11-07 17:10:44 UTC (rev 8014) @@ -17,16 +17,16 @@ var nb_job=<TMPL_IF nb_job><TMPL_VAR nb_job><TMPL_ELSE>0</TMPL_IF>; var nb_err=<TMPL_IF nb_err><TMPL_VAR nb_err><TMPL_ELSE>0</TMPL_IF>; -var t_ok = (nb_job - nb_err)/(nb_job + 0.0001)*100; - +var t_ok = Math.abs((nb_job - nb_err)/(nb_job + nb_err + 0.0001)*100); +var nb_byte = <TMPL_IF nb_byte><TMPL_VAR nb_byte><TMPL_ELSE>0</TMPL_IF>; data.push( new Array( "<TMPL_VAR name>", nb_job, nb_err, t_ok.toFixed(2), "<TMPL_VAR nb_resto>", - human_size(<TMPL_VAR nb_byte>), - <TMPL_VAR nb_byte>, + human_size(nb_byte), + nb_byte, "<TMPL_VAR nb_file>" ) ) ; Modified: trunk/gui/bweb/lang/fr/tpl/display_stats.tpl =================================================================== --- trunk/gui/bweb/lang/fr/tpl/display_stats.tpl 2008-11-07 16:28:48 UTC (rev 8013) +++ trunk/gui/bweb/lang/fr/tpl/display_stats.tpl 2008-11-07 17:10:44 UTC (rev 8014) @@ -17,16 +17,16 @@ var nb_job=<TMPL_IF nb_job><TMPL_VAR nb_job><TMPL_ELSE>0</TMPL_IF>; var nb_err=<TMPL_IF nb_err><TMPL_VAR nb_err><TMPL_ELSE>0</TMPL_IF>; -var t_ok = (nb_job - nb_err)/(nb_job + 0.0001)*100; - +var t_ok = Math.abs((nb_job - nb_err)/(nb_job + nb_err + 0.0001)*100); +var nb_byte = <TMPL_IF nb_byte><TMPL_VAR nb_byte><TMPL_ELSE>0</TMPL_IF>; data.push( new Array( "<TMPL_VAR name>", nb_job, nb_err, t_ok.toFixed(2), "<TMPL_VAR nb_resto>", - human_size(<TMPL_VAR nb_byte>), - <TMPL_VAR nb_byte>, + human_size(nb_byte), + nb_byte, "<TMPL_VAR nb_file>" ) ) ; Modified: trunk/gui/bweb/tpl/display_stats.tpl =================================================================== --- trunk/gui/bweb/tpl/display_stats.tpl 2008-11-07 16:28:48 UTC (rev 8013) +++ trunk/gui/bweb/tpl/display_stats.tpl 2008-11-07 17:10:44 UTC (rev 8014) @@ -17,16 +17,16 @@ var nb_job=<TMPL_IF nb_job><TMPL_VAR nb_job><TMPL_ELSE>0</TMPL_IF>; var nb_err=<TMPL_IF nb_err><TMPL_VAR nb_err><TMPL_ELSE>0</TMPL_IF>; -var t_ok = (nb_job - nb_err)/(nb_job + 0.0001)*100; - +var t_ok = Math.abs((nb_job - nb_err)/(nb_job + nb_err + 0.0001)*100); +var nb_byte = <TMPL_IF nb_byte><TMPL_VAR nb_byte><TMPL_ELSE>0</TMPL_IF>; data.push( new Array( "<TMPL_VAR name>", nb_job, nb_err, t_ok.toFixed(2), "<TMPL_VAR nb_resto>", - human_size(<TMPL_VAR nb_byte>), - <TMPL_VAR nb_byte>, + human_size(nb_byte), + nb_byte, "<TMPL_VAR nb_file>" ) ) ; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ri...@us...> - 2008-11-07 17:48:48
|
Revision: 8015 http://bacula.svn.sourceforge.net/bacula/?rev=8015&view=rev Author: ricozz Date: 2008-11-07 17:48:39 +0000 (Fri, 07 Nov 2008) Log Message: ----------- ebl tweak the fix Modified Paths: -------------- trunk/gui/bweb/lang/en/tpl/display_stats.tpl trunk/gui/bweb/lang/es/tpl/display_stats.tpl trunk/gui/bweb/lang/fr/tpl/display_stats.tpl trunk/gui/bweb/tpl/display_stats.tpl Modified: trunk/gui/bweb/lang/en/tpl/display_stats.tpl =================================================================== --- trunk/gui/bweb/lang/en/tpl/display_stats.tpl 2008-11-07 17:10:44 UTC (rev 8014) +++ trunk/gui/bweb/lang/en/tpl/display_stats.tpl 2008-11-07 17:48:39 UTC (rev 8015) @@ -17,7 +17,7 @@ var nb_job=<TMPL_IF nb_job><TMPL_VAR nb_job><TMPL_ELSE>0</TMPL_IF>; var nb_err=<TMPL_IF nb_err><TMPL_VAR nb_err><TMPL_ELSE>0</TMPL_IF>; -var t_ok = Math.abs((nb_job - nb_err)/(nb_job + nb_err + 0.0001)*100); +var t_ok = Math.abs(nb_job/(nb_job + nb_err + 0.0001)*100); var nb_byte = <TMPL_IF nb_byte><TMPL_VAR nb_byte><TMPL_ELSE>0</TMPL_IF>; data.push( new Array( "<TMPL_VAR name>", Modified: trunk/gui/bweb/lang/es/tpl/display_stats.tpl =================================================================== --- trunk/gui/bweb/lang/es/tpl/display_stats.tpl 2008-11-07 17:10:44 UTC (rev 8014) +++ trunk/gui/bweb/lang/es/tpl/display_stats.tpl 2008-11-07 17:48:39 UTC (rev 8015) @@ -17,7 +17,7 @@ var nb_job=<TMPL_IF nb_job><TMPL_VAR nb_job><TMPL_ELSE>0</TMPL_IF>; var nb_err=<TMPL_IF nb_err><TMPL_VAR nb_err><TMPL_ELSE>0</TMPL_IF>; -var t_ok = Math.abs((nb_job - nb_err)/(nb_job + nb_err + 0.0001)*100); +var t_ok = Math.abs(nb_job/(nb_job + nb_err + 0.0001)*100); var nb_byte = <TMPL_IF nb_byte><TMPL_VAR nb_byte><TMPL_ELSE>0</TMPL_IF>; data.push( new Array( "<TMPL_VAR name>", Modified: trunk/gui/bweb/lang/fr/tpl/display_stats.tpl =================================================================== --- trunk/gui/bweb/lang/fr/tpl/display_stats.tpl 2008-11-07 17:10:44 UTC (rev 8014) +++ trunk/gui/bweb/lang/fr/tpl/display_stats.tpl 2008-11-07 17:48:39 UTC (rev 8015) @@ -17,7 +17,7 @@ var nb_job=<TMPL_IF nb_job><TMPL_VAR nb_job><TMPL_ELSE>0</TMPL_IF>; var nb_err=<TMPL_IF nb_err><TMPL_VAR nb_err><TMPL_ELSE>0</TMPL_IF>; -var t_ok = Math.abs((nb_job - nb_err)/(nb_job + nb_err + 0.0001)*100); +var t_ok = Math.abs(nb_job/(nb_job + nb_err + 0.0001)*100); var nb_byte = <TMPL_IF nb_byte><TMPL_VAR nb_byte><TMPL_ELSE>0</TMPL_IF>; data.push( new Array( "<TMPL_VAR name>", Modified: trunk/gui/bweb/tpl/display_stats.tpl =================================================================== --- trunk/gui/bweb/tpl/display_stats.tpl 2008-11-07 17:10:44 UTC (rev 8014) +++ trunk/gui/bweb/tpl/display_stats.tpl 2008-11-07 17:48:39 UTC (rev 8015) @@ -17,7 +17,7 @@ var nb_job=<TMPL_IF nb_job><TMPL_VAR nb_job><TMPL_ELSE>0</TMPL_IF>; var nb_err=<TMPL_IF nb_err><TMPL_VAR nb_err><TMPL_ELSE>0</TMPL_IF>; -var t_ok = Math.abs((nb_job - nb_err)/(nb_job + nb_err + 0.0001)*100); +var t_ok = Math.abs(nb_job/(nb_job + nb_err + 0.0001)*100); var nb_byte = <TMPL_IF nb_byte><TMPL_VAR nb_byte><TMPL_ELSE>0</TMPL_IF>; data.push( new Array( "<TMPL_VAR name>", This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ri...@us...> - 2008-11-07 19:18:58
|
Revision: 8016 http://bacula.svn.sourceforge.net/bacula/?rev=8016&view=rev Author: ricozz Date: 2008-11-07 19:18:54 +0000 (Fri, 07 Nov 2008) Log Message: ----------- ebl Add a new function that permit to mark missing jobs as failed in job history table. That gives a more accurate way to do statistics. Modified Paths: -------------- trunk/gui/bweb/cgi/bweb.pl trunk/gui/bweb/lang/en/tpl/scheduled_job.tpl trunk/gui/bweb/lang/es/tpl/scheduled_job.tpl trunk/gui/bweb/lang/fr/tpl/scheduled_job.tpl trunk/gui/bweb/lib/Bconsole.pm trunk/gui/bweb/lib/Bweb.pm trunk/gui/bweb/script/regress.pl trunk/gui/bweb/technotes-2.3 trunk/gui/bweb/tpl/scheduled_job.tpl Modified: trunk/gui/bweb/cgi/bweb.pl =================================================================== --- trunk/gui/bweb/cgi/bweb.pl 2008-11-07 17:48:39 UTC (rev 8015) +++ trunk/gui/bweb/cgi/bweb.pl 2008-11-07 19:18:54 UTC (rev 8016) @@ -441,6 +441,9 @@ } elsif ($action eq 'cancel_job') { $bweb->cancel_job(); +} elsif ($action eq 'cancel_future_job') { + $bweb->cancel_future_job(); + } elsif ($action eq 'media_zoom') { $bweb->display_media_zoom(); Modified: trunk/gui/bweb/lang/en/tpl/scheduled_job.tpl =================================================================== --- trunk/gui/bweb/lang/en/tpl/scheduled_job.tpl 2008-11-07 17:48:39 UTC (rev 8015) +++ trunk/gui/bweb/lang/en/tpl/scheduled_job.tpl 2008-11-07 19:18:54 UTC (rev 8016) @@ -10,6 +10,10 @@ <button type="submit" class="bp" name='action' title='Disable' value='disable_job'> <img src='/bweb/inflag0.png' alt=''> Disable </button> <button type="submit" onsubmit='document.form1.level.value="all"' class="bp" name='action' value='job' title='view <TMPL_VAR Client> jobs'><img src='/bweb/zoom.png'>View jobs</button> +<TMPL_IF missing_mode> + <button type="submit" class="bp" name='action' title='Mark this job as canceled in job history' value='cancel_future_job'> + <img src='/bweb/f.png' alt=''> Mark it as canceled </button> +</TMPL_IF> <TMPL_IF wiki_url> <a id='wiki' href="<TMPL_VAR wiki_url>" title='View doc'><img src='/bweb/doc.png' alt='View doc'></a>View doc </TMPL_IF> @@ -17,6 +21,7 @@ <input type='hidden' name='level' value=''> <input type='hidden' name='media' value=''> <input type='hidden' name='client' value=''> + <input type='hidden' name='when' value=''> </form> </div> @@ -45,6 +50,7 @@ document.form1.pool.value = '<TMPL_VAR pool>'; document.form1.media.value = '<TMPL_VAR volume>'; document.form1.client.value = '<TMPL_VAR client>'; + document.form1.when.value = '<TMPL_VAR date>'; if (wiki_url) { document.getElementById('wiki').href=wiki_url + '<TMPL_VAR client>'; } Modified: trunk/gui/bweb/lang/es/tpl/scheduled_job.tpl =================================================================== --- trunk/gui/bweb/lang/es/tpl/scheduled_job.tpl 2008-11-07 17:48:39 UTC (rev 8015) +++ trunk/gui/bweb/lang/es/tpl/scheduled_job.tpl 2008-11-07 19:18:54 UTC (rev 8016) @@ -10,6 +10,10 @@ <button type="submit" class="bp" name='action' title='Desactivar' value='disable_job'> <img src='/bweb/inflag0.png' alt=''> Desactivar </button> <button type="submit" onsubmit='document.form1.level.value="all"' class="bp" name='action' value='job' title='view <TMPL_VAR Client> jobs'><img src='/bweb/zoom.png'>Ver jobs</button> +<TMPL_IF missing_mode> + <button type="submit" class="bp" name='action' title='Mark this job as canceled in job history' value='cancel_future_job'> + <img src='/bweb/f.png' alt=''> Mark it as canceled </button> +</TMPL_IF> <TMPL_IF wiki_url> <a id='wiki' href="<TMPL_VAR wiki_url>" title='View doc'><img src='/bweb/doc.png' alt='View doc'></a>View doc </TMPL_IF> @@ -17,6 +21,7 @@ <input type='hidden' name='level' value=''> <input type='hidden' name='media' value=''> <input type='hidden' name='client' value=''> + <input type='hidden' name='when' value=''> </form> </div> @@ -45,6 +50,7 @@ document.form1.pool.value = '<TMPL_VAR pool>'; document.form1.media.value = '<TMPL_VAR volume>'; document.form1.client.value = '<TMPL_VAR client>'; + document.form1.when.value = '<TMPL_VAR date>'; if (wiki_url) { document.getElementById('wiki').href=wiki_url + '<TMPL_VAR client>'; } Modified: trunk/gui/bweb/lang/fr/tpl/scheduled_job.tpl =================================================================== --- trunk/gui/bweb/lang/fr/tpl/scheduled_job.tpl 2008-11-07 17:48:39 UTC (rev 8015) +++ trunk/gui/bweb/lang/fr/tpl/scheduled_job.tpl 2008-11-07 19:18:54 UTC (rev 8016) @@ -10,6 +10,10 @@ <button type="submit" class="bp" name='action' title='D\xE9sactiver' value='disable_job'> <img src='/bweb/inflag0.png' alt=''> D\xE9sactiver </button> <button type="submit" onsubmit='document.form1.level.value="all"' class="bp" name='action' value='job' title='voir <TMPL_VAR Client> jobs'><img src='/bweb/zoom.png'>Voir les jobs</button> +<TMPL_IF missing_mode> + <button type="submit" class="bp" name='action' title='Mark this job as canceled in job history' value='cancel_future_job'> + <img src='/bweb/f.png' alt=''> Mark it as canceled </button> +</TMPL_IF> <TMPL_IF wiki_url> <a id='wiki' href="<TMPL_VAR wiki_url>" title='Documentation'><img src='/bweb/doc.png' alt='Documentation'></a>Documentation </TMPL_IF> @@ -17,6 +21,7 @@ <input type='hidden' name='level' value=''> <input type='hidden' name='media' value=''> <input type='hidden' name='client' value=''> + <input type='hidden' name='when' value=''> </form> </div> @@ -45,6 +50,7 @@ document.form1.pool.value = '<TMPL_VAR pool>'; document.form1.media.value = '<TMPL_VAR volume>'; document.form1.client.value = '<TMPL_VAR client>'; + document.form1.when.value = '<TMPL_VAR date>'; if (wiki_url) { document.getElementById('wiki').href=wiki_url + '<TMPL_VAR client>'; } Modified: trunk/gui/bweb/lib/Bconsole.pm =================================================================== --- trunk/gui/bweb/lib/Bconsole.pm 2008-11-07 17:48:39 UTC (rev 8015) +++ trunk/gui/bweb/lib/Bconsole.pm 2008-11-07 19:18:54 UTC (rev 8016) @@ -445,7 +445,7 @@ print "test sans conio\n"; my $c = new Bconsole(pref => { - bconsole => '/tmp/bacula/sbin/bconsole -n -c /tmp/bacula/etc/bconsole.conf', + bconsole => '/tmp/regress/bin/bconsole -n -c /tmp/regress/bin/bconsole.conf', }, debug => 0); Modified: trunk/gui/bweb/lib/Bweb.pm =================================================================== --- trunk/gui/bweb/lib/Bweb.pm 2008-11-07 17:48:39 UTC (rev 8015) +++ trunk/gui/bweb/lib/Bweb.pm 2008-11-07 19:18:54 UTC (rev 8016) @@ -1868,7 +1868,7 @@ } } 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; } @@ -4554,6 +4554,69 @@ }, 'display_log.tpl'); } +sub cancel_future_job +{ + my ($self) = @_; + $self->can_do('r_cancel_job'); + + my $arg = $self->get_form(qw/job pool level client when/); + + if ( !$arg->{job} or !$arg->{pool} or !$arg->{level} + or !$arg->{client} or !$arg->{when}) + { + return $self->error("Can't get enough information to mark this job as canceled"); + } + + $arg->{level} =~ s/^(.).+/$1/; # we keep the first letter + my $jobtable = $self->{info}->{stat_job_table} || 'JobHistory'; + + if ($jobtable =~ /^Job$/i) { + return $self->error("Can add records only in history table"); + } + my $jname = "$arg->{job}.$arg->{when}"; + $jname =~ s/\s/_/g; + + my $found = $self->dbh_selectrow_hashref(" +SELECT 1 + FROM $jobtable + WHERE JobId = 0 + AND Job = '$jname' + AND Name = '$arg->{job}' +"); + if ($found) { + return $self->error("$jname is already in history table"); + } + + $self->dbh_do(" +INSERT INTO $jobtable + (JobId, Name, Job, Type, Level, JobStatus, SchedTime, StartTime, EndTime, + RealEndTime, ClientId, PoolId) + VALUES + (0, '$arg->{job}', '$jname', 'B', '$arg->{level}', 'A', + '$arg->{when}', '$arg->{when}', '$arg->{when}', '$arg->{when}', + (SELECT ClientId FROM Client WHERE Name = '$arg->{client}'), + (SELECT PoolId FROM Pool WHERE Name = '$arg->{pool}') + ) +"); + $self->display({ Filter => "Dummy record for $jname", + ID => 1, + Jobs => + [{ jobid => 0, + client => $arg->{client}, + jobname => $arg->{job}, + pool => $arg->{pool}, + level => $arg->{level}, + starttime => $arg->{when}, + duration => '00:00:00', + jobfiles => 0, + jobbytes => 0, + joberrors => 0, + jobstatus => 'A', + }] + }, + "display_job.tpl"); +} + sub add_media { my ($self) = @_ ; @@ -4738,8 +4801,8 @@ my ($self, $what) = @_ ; $self->can_do('r_run_job'); - my $name = CGI::param('job') || ''; - unless ($name =~ /^[\w\d\.\-\s]+$/) { + my $arg = $self->get_form('job'); + if (!$arg->{job}) { return $self->error("Can't find job name"); } @@ -4753,9 +4816,9 @@ } $self->display({ - content => $b->send_cmd("$cmd job=\"$name\""), - title => "$cmd $name", - name => "$cmd job=\"$name\"", + content => $b->send_cmd("$cmd job=\"$arg->{job}\""), + title => "$cmd $arg->{job}", + name => "$cmd job=\"$arg->{job}\"", }, "command.tpl"); } @@ -4830,14 +4893,15 @@ $self->can_do('r_run_job'); my $b = $self->get_bconsole(); - - my $job = CGI::param('job') || ''; + my $arg = $self->get_form(qw/pool level client fileset storage media job/); + if (!$arg->{job}) { + return $self->error("Can't get job name"); + } + # we take informations from director, and we overwrite with user wish - my $info = $b->send_cmd("show job=\"$job\""); + my $info = $b->send_cmd("show job=\"$arg->{job}\""); my $attr = $self->run_parse_job($info); - - my $arg = $self->get_form(qw/pool level client fileset storage media/); if (!$arg->{pool} and $arg->{media}) { my $r = $self->dbh_selectrow_hashref(" @@ -4893,15 +4957,17 @@ # TODO: check input (don't use pool, level) - my $arg = $self->get_form('pool', 'level', 'client', 'priority', 'when', 'fileset'); - my $job = CGI::param('job') || ''; - my $storage = CGI::param('storage') || ''; + my $arg = $self->get_form(qw/pool level client priority when + fileset job storage/); + if (!$arg->{job}) { + return $self->error("Can't get your job name"); + } - my $jobid = $b->run(job => $job, + my $jobid = $b->run(job => $arg->{job}, client => $arg->{client}, priority => $arg->{priority}, level => $arg->{level}, - storage => $storage, + storage => $arg->{storage}, pool => $arg->{pool}, fileset => $arg->{fileset}, when => $arg->{when}, @@ -4983,11 +5049,11 @@ $l = $self->get_higher_level($l); my $evts = $sched->get_event($s); my $end = $sched->{end}; # this backup must have start before the next one - foreach my $evt (reverse @$evts) { my $all = $self->dbh_selectrow_hashref(" SELECT 1 - FROM Job JOIN Client USING (ClientId) LEFT JOIN Pool USING (PoolId) + FROM Job + JOIN Client USING (ClientId) LEFT JOIN Pool USING (PoolId) WHERE Job.StartTime >= '$evt' AND Job.StartTime < '$end' AND Job.Name = '$job' @@ -5050,10 +5116,11 @@ } } $self->display({ - id => $cur_id++, - title => "Missing Job (since $arg->{begin} to $arg->{end})", - list => $self->{tmp}, - wiki_url => $self->{info}->{wiki_url}, + id => $cur_id++, + title => "Missing Job (since $arg->{begin} to $arg->{end})", + list => $self->{tmp}, + wiki_url => $self->{info}->{wiki_url}, + missing_mode => 1, }, "scheduled_job.tpl"); delete $self->{tmp}; Modified: trunk/gui/bweb/script/regress.pl =================================================================== --- trunk/gui/bweb/script/regress.pl 2008-11-07 17:48:39 UTC (rev 8015) +++ trunk/gui/bweb/script/regress.pl 2008-11-07 19:18:54 UTC (rev 8016) @@ -93,6 +93,12 @@ die "Can't get first jobid ($c)" unless $1; $job_url=$1; +# check missing view +ok($agent->follow_link(text_regex=>qr/Missing Jobs/), "Go to Missing Jobs page"); +$c=$agent->content; +like($c, qr/BackupCatalog/, "Check for BackupCatalog job"); +unlike($c, qr/backup/, "Check for backup job"); + # test job_zoom page # check for # - job log @@ -138,7 +144,7 @@ ok($agent->form_name('delete'), "Find form"); $agent->click(); $c=$agent->content; ok($agent->success, "Delete it"); -like($c, qr!deleted!, "Check deleted message"); +like($c, qr!deleted from the catalog!, "Check deleted message"); $agent->get("$url?$job_url"); ok($agent->success,"Get job zoom"); Modified: trunk/gui/bweb/technotes-2.3 =================================================================== --- trunk/gui/bweb/technotes-2.3 2008-11-07 17:48:39 UTC (rev 8015) +++ trunk/gui/bweb/technotes-2.3 2008-11-07 19:18:54 UTC (rev 8016) @@ -1,3 +1,9 @@ +07Nov08 +ebl Fix statistics page +ebl Add new "Cancel missing job" feature to be able + to mark missing job as failed in history table. +ebl Fix a couple of unchecked arguments. + 06Nov08 ebl Fix a Bconsole.pm with Expect bug on debian lenny ebl Fix in storage command Modified: trunk/gui/bweb/tpl/scheduled_job.tpl =================================================================== --- trunk/gui/bweb/tpl/scheduled_job.tpl 2008-11-07 17:48:39 UTC (rev 8015) +++ trunk/gui/bweb/tpl/scheduled_job.tpl 2008-11-07 19:18:54 UTC (rev 8016) @@ -10,6 +10,10 @@ <button type="submit" class="bp" name='action' title='__Disable__' value='disable_job'> <img src='/bweb/inflag0.png' alt=''> __Disable__ </button> <button type="submit" onsubmit='document.form1.level.value="all"' class="bp" name='action' value='job' title='__view__ <TMPL_VAR Client> __jobs__'><img src='/bweb/zoom.png'>__View jobs__</button> +<TMPL_IF missing_mode> + <button type="submit" class="bp" name='action' title='__Mark this job as canceled in job history__' value='cancel_future_job'> + <img src='/bweb/f.png' alt=''> __Mark it as canceled__ </button> +</TMPL_IF> <TMPL_IF wiki_url> <a id='wiki' href="<TMPL_VAR wiki_url>" title='__View doc__'><img src='/bweb/doc.png' alt='__View doc__'></a>__View doc__ </TMPL_IF> @@ -17,6 +21,7 @@ <input type='hidden' name='level' value=''> <input type='hidden' name='media' value=''> <input type='hidden' name='client' value=''> + <input type='hidden' name='when' value=''> </form> </div> @@ -45,6 +50,7 @@ document.form1.pool.value = '<TMPL_VAR pool>'; document.form1.media.value = '<TMPL_VAR volume>'; document.form1.client.value = '<TMPL_VAR client>'; + document.form1.when.value = '<TMPL_VAR date>'; if (wiki_url) { document.getElementById('wiki').href=wiki_url + '<TMPL_VAR client>'; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ri...@us...> - 2008-11-10 12:56:42
|
Revision: 8030 http://bacula.svn.sourceforge.net/bacula/?rev=8030&view=rev Author: ricozz Date: 2008-11-10 12:56:35 +0000 (Mon, 10 Nov 2008) Log Message: ----------- ebl Fix small bug in overview Modified Paths: -------------- trunk/gui/bweb/lang/en/tpl/overview.tpl trunk/gui/bweb/lang/es/tpl/overview.tpl trunk/gui/bweb/lang/fr/tpl/overview.tpl trunk/gui/bweb/tpl/overview.tpl Modified: trunk/gui/bweb/lang/en/tpl/overview.tpl =================================================================== --- trunk/gui/bweb/lang/en/tpl/overview.tpl 2008-11-10 10:45:03 UTC (rev 8029) +++ trunk/gui/bweb/lang/en/tpl/overview.tpl 2008-11-10 12:56:35 UTC (rev 8030) @@ -48,7 +48,7 @@ <TMPL_LOOP events> min_cel=(min_cel< <TMPL_VAR num>)?min_cel:<TMPL_VAR num>; infos[<TMPL_VAR num>] = new Array('<TMPL_VAR num>', '<TMPL_VAR status>', - <TMPL_VAR joberrors>, '<TMPL_VAR title>'); + '<TMPL_VAR joberrors>', '<TMPL_VAR title>'); </TMPL_LOOP> max_cel=(max_cel>infos.length)?max_cel:infos.length; all.push({ name: "<TMPL_VAR name>", values: infos}); Modified: trunk/gui/bweb/lang/es/tpl/overview.tpl =================================================================== --- trunk/gui/bweb/lang/es/tpl/overview.tpl 2008-11-10 10:45:03 UTC (rev 8029) +++ trunk/gui/bweb/lang/es/tpl/overview.tpl 2008-11-10 12:56:35 UTC (rev 8030) @@ -48,7 +48,7 @@ <TMPL_LOOP events> min_cel=(min_cel< <TMPL_VAR num>)?min_cel:<TMPL_VAR num>; infos[<TMPL_VAR num>] = new Array('<TMPL_VAR num>', '<TMPL_VAR status>', - <TMPL_VAR joberrors>, '<TMPL_VAR title>'); + '<TMPL_VAR joberrors>', '<TMPL_VAR title>'); </TMPL_LOOP> max_cel=(max_cel>infos.length)?max_cel:infos.length; all.push({ name: "<TMPL_VAR name>", values: infos}); Modified: trunk/gui/bweb/lang/fr/tpl/overview.tpl =================================================================== --- trunk/gui/bweb/lang/fr/tpl/overview.tpl 2008-11-10 10:45:03 UTC (rev 8029) +++ trunk/gui/bweb/lang/fr/tpl/overview.tpl 2008-11-10 12:56:35 UTC (rev 8030) @@ -48,7 +48,7 @@ <TMPL_LOOP events> min_cel=(min_cel< <TMPL_VAR num>)?min_cel:<TMPL_VAR num>; infos[<TMPL_VAR num>] = new Array('<TMPL_VAR num>', '<TMPL_VAR status>', - <TMPL_VAR joberrors>, '<TMPL_VAR title>'); + '<TMPL_VAR joberrors>', '<TMPL_VAR title>'); </TMPL_LOOP> max_cel=(max_cel>infos.length)?max_cel:infos.length; all.push({ name: "<TMPL_VAR name>", values: infos}); Modified: trunk/gui/bweb/tpl/overview.tpl =================================================================== --- trunk/gui/bweb/tpl/overview.tpl 2008-11-10 10:45:03 UTC (rev 8029) +++ trunk/gui/bweb/tpl/overview.tpl 2008-11-10 12:56:35 UTC (rev 8030) @@ -48,7 +48,7 @@ <TMPL_LOOP events> min_cel=(min_cel< <TMPL_VAR num>)?min_cel:<TMPL_VAR num>; infos[<TMPL_VAR num>] = new Array('<TMPL_VAR num>', '<TMPL_VAR status>', - <TMPL_VAR joberrors>, '<TMPL_VAR title>'); + '<TMPL_VAR joberrors>', '<TMPL_VAR title>'); </TMPL_LOOP> max_cel=(max_cel>infos.length)?max_cel:infos.length; all.push({ name: "<TMPL_VAR name>", values: infos}); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ri...@us...> - 2008-12-10 10:19:15
|
Revision: 8135 http://bacula.svn.sourceforge.net/bacula/?rev=8135&view=rev Author: ricozz Date: 2008-12-10 10:19:11 +0000 (Wed, 10 Dec 2008) Log Message: ----------- ebl fix mysql bug Modified Paths: -------------- trunk/gui/bweb/lib/Bweb.pm trunk/gui/bweb/technotes-2.3 Modified: trunk/gui/bweb/lib/Bweb.pm =================================================================== --- trunk/gui/bweb/lib/Bweb.pm 2008-12-10 03:48:56 UTC (rev 8134) +++ trunk/gui/bweb/lib/Bweb.pm 2008-12-10 10:19:11 UTC (rev 8135) @@ -4543,7 +4543,7 @@ unless ($log) { return $self->error("Can't get log for jobid $arg->{jobid}"); } - + $log->{logtxt} =~ s/\0//g; $self->display({ lines=> $log->{logtxt}, nbline => $log->{nbline}, jobid => $arg->{jobid}, Modified: trunk/gui/bweb/technotes-2.3 =================================================================== --- trunk/gui/bweb/technotes-2.3 2008-12-10 03:48:56 UTC (rev 8134) +++ trunk/gui/bweb/technotes-2.3 2008-12-10 10:19:11 UTC (rev 8135) @@ -1,3 +1,5 @@ +10Dec08 +ebl Fix mysql bug in log output 07Nov08 ebl Fix statistics page ebl Add new "Cancel missing job" feature to be able This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ri...@us...> - 2008-12-15 13:52:55
|
Revision: 8166 http://bacula.svn.sourceforge.net/bacula/?rev=8166&view=rev Author: ricozz Date: 2008-12-15 13:52:44 +0000 (Mon, 15 Dec 2008) Log Message: ----------- ebl Update Bconsole.pm to use raw_pty() instead of using IO::Pty noecho Modified Paths: -------------- trunk/gui/bweb/lib/Bconsole.pm Added Paths: ----------- trunk/gui/bweb/technotes-3.0 Modified: trunk/gui/bweb/lib/Bconsole.pm =================================================================== --- trunk/gui/bweb/lib/Bconsole.pm 2008-12-15 08:50:23 UTC (rev 8165) +++ trunk/gui/bweb/lib/Bconsole.pm 2008-12-15 13:52:44 UTC (rev 8166) @@ -153,7 +153,7 @@ return $self->error("bconsole string not found"); } $self->{bconsole} = new Expect; - $self->{bconsole}->raw_pty(0); + $self->{bconsole}->raw_pty(1); $self->{bconsole}->debug($self->{debug}); $self->{bconsole}->log_stdout($self->{debug} || $self->{log_stdout}); @@ -171,8 +171,6 @@ $SIG{__DIE__} = $sav; } - $self->{bconsole}->slave->stty(qw(-echo)); - unless ($ret) { return $self->error($self->{bconsole}->error()); } @@ -206,7 +204,6 @@ } $self->{bconsole}->clear_accum(); $self->send("$cmd\n"); -# $self->expect_it($cmd); $self->expect_it('-re','^[*]'); return $self->before(); } @@ -220,10 +217,7 @@ $self->send("$cmd\n"); $self->expect_it('-re', '[?].+:'); - $self->{bconsole}->clear_accum(); - $self->send("yes\n"); -# $self->expect_it("yes"); - $self->expect_it('-re','^[*]'); + $self->send_cmd("yes"); return $self->before(); } @@ -328,31 +322,31 @@ sub list_job { my ($self) = @_; - return sort split(/\r\n/, $self->send_cmd(".jobs")); + return sort split(/\r?\n/, $self->send_cmd(".jobs")); } sub list_fileset { my ($self) = @_; - return sort split(/\r\n/, $self->send_cmd(".filesets")); + return sort split(/\r?\n/, $self->send_cmd(".filesets")); } sub list_storage { my ($self) = @_; - return sort split(/\r\n/, $self->send_cmd(".storage")); + return sort split(/\r?\n/, $self->send_cmd(".storage")); } sub list_client { my ($self) = @_; - return sort split(/\r\n/, $self->send_cmd(".clients")); + return sort split(/\r?\n/, $self->send_cmd(".clients")); } sub list_pool { my ($self) = @_; - return sort split(/\r\n/, $self->send_cmd(".pools")); + return sort split(/\r?\n/, $self->send_cmd(".pools")); } use Time::ParseDate qw/parsedate/; Copied: trunk/gui/bweb/technotes-3.0 (from rev 8135, trunk/gui/bweb/technotes-2.3) =================================================================== --- trunk/gui/bweb/technotes-3.0 (rev 0) +++ trunk/gui/bweb/technotes-3.0 2008-12-15 13:52:44 UTC (rev 8166) @@ -0,0 +1,174 @@ +15Dec08 +ebl Update Bconsole.pm to use raw_pty() instead of using IO::Pty noecho +10Dec08 +ebl Fix mysql bug in log output +07Nov08 +ebl Fix statistics page +ebl Add new "Cancel missing job" feature to be able + to mark missing job as failed in history table. +ebl Fix a couple of unchecked arguments. + +06Nov08 +ebl Fix a Bconsole.pm with Expect bug on debian lenny +ebl Fix in storage command + +04Nov08 +ebl Display all groups in display_stat page + +21Oct08 +ebl Fix lot of small bugs + +20Oct08 +ebl Rename job_old to JobHistory + +07Oct08 +ebl Add base64_decode_lstat() function to Mysql + +22Sep08 +ebl Add an option to bgraph that shows each levels as different source + +21Sep08 +ebl + bfileview: + - Add error message for pruned of uncomputed jobs + - Bugfix for looking / + Bweb.pm + - Add support for age=1w2d40m + - Add new configuration variable to modify default age + general.tpl + - Add hyperlink to failed job count + TODO: add C.png (with something like zzZZzzz) + +25Aug08 +ebl Fix #1132 about typo in directory creation in install_bweb + +02Jul08 +ebl Add documentation link on missing job view + +31Jun08 +ebl Fix log display in job zoom view + +22Jun08 +ebl Fix bug in missing job view + +20Jun08 +ebl Update check_bacula.pl documentation + +16Jun08 +ebl Take Recycle volumes from the import/export tool. + +03Jun08 +ebl Add a nagios plugin for bacula script/check_bacula.pl + +02Jun08 +ebl Modify missing job view to handle all kind of job + +28Apr08 +ebl Change We from 45 to 66 hours (from friday 18h to monday 12h) + +10Apr08 +ebl Fix group statistics to use client_group param + +03Apr08 +ebl Tweak progress bar and add Backuped files count to job status +ebl Remove progress bar from restore + +02Apr08 +ebl Add group statistics page + +10Mar08 +ebl Use lineal regression to guess backup progress (postgresql) + +09Mar08 +ebl Add progress bar to backup screen (files and bytes estimation) + +07Mar08 +ebl Fix btime.pl + +15Feb08 +ebl Add bcheck.pl script that check various things in + you bacula setup. + - Try to connect to each client + - Reports you big backup size change + - Reports you useless (or unconfigured) Job + +14Feb08 +ebl Cleanup some SQL + +13Feb08 +ebl Can modify client list group for a specific client +ebl Disable use of Enabled flag in volume mgnt +ebl Add comment field to client_group + +09Jan08 +ebl Adapt btime for bacula 2.2.7 + +05Jan08 +ebl Add basic Device managment (mount, umount, release, status) + +02Jan08 +ebl Fix a couple of bug in btime module +ebl Keep level param between overview pages + +31Dec07 +ebl Add new r_view_group role to view group content + +27Dec07 +ebl Fix a bug in user edition. +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 + +23Dec07 +ebl Each user can have a different template dir (lang). +ebl WARNING: now, bweb/tpl contains main tpl files + for english version, you have to use bweb/lang/en/tpl + +21Dec07 +ebl Use main tpl for editing, and use scripts to + generate other lang. + +19Dec07 +ebl Add a new balloon graphic mode which display + time, bytes and number of files on the same graph + +13Dec07 +ebl Try to extract when= from get_form() more smoothly + +06Dec07 +ebl Add Bweb::Schedule Object to parse show schedule output. + Now, we can make ical events for example... + +05Dec07 +ebl Add truncate to second function +ebl Add btime module + +28Nov07 +ebl Fix the time slice between overview and overview_zoom + +26Nov07 +ebl Fix overview to works with mysql +ebl Add date support to bresto +ebl Make bresto works with mysql (no DISTINCT ON (c1,c2)) +ebl Add the list of media that will be needed for resto + +25Nov07 +ebl Use a automatic rediction when launching a new job +ebl Add new overview view. + +24Nov07 +ebl Add ERR= to error log filter +ebl Set where_field when selecting a directory in the tree +ebl Add a wiki option to integrate a link to jobs documentation + directly in bweb. +ebl Add a tpl field to bweb_user. (To be able to have a tpl for each + user). + +23Nov07 +ebl Add brestore_xxx tables to sql scripts +ebl Add a batch=1 option to bresto.pl to fill bresto tables +ebl Adapt Bconsole.pm to run a restore job +ebl Make bresto.html/js working (you can restore files now) +ebl Improve run job from scheduled view and missing view Property changes on: trunk/gui/bweb/technotes-3.0 ___________________________________________________________________ Added: svn:mergeinfo + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ri...@us...> - 2008-12-18 17:22:04
|
Revision: 8185 http://bacula.svn.sourceforge.net/bacula/?rev=8185&view=rev Author: ricozz Date: 2008-12-18 17:22:01 +0000 (Thu, 18 Dec 2008) Log Message: ----------- ebl Rewrite bresto for ExtJS 2.2, fix lots of bug Modified Paths: -------------- trunk/gui/bweb/html/bresto.html trunk/gui/bweb/html/bresto.js trunk/gui/bweb/technotes-3.0 Modified: trunk/gui/bweb/html/bresto.html =================================================================== --- trunk/gui/bweb/html/bresto.html 2008-12-18 10:28:39 UTC (rev 8184) +++ trunk/gui/bweb/html/bresto.html 2008-12-18 17:22:01 UTC (rev 8185) @@ -1,35 +1,14 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> - <head> - <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> - <title>Bweb - restore</title> - - <link rel="stylesheet" type="text/css" href="/bweb/ext/resources/css/ext-all.css" /> - - <script type="text/javascript" src="/bweb/ext/adapter/ext/ext-base.js"></script> <!-- ENDLIBS --> - - <script type="text/javascript" src="/bweb/ext/ext-all.js"></script> -<!-- <script type="text/javascript" src="/bweb/ext/ext-all-debug.js"></script>--> - <script type="text/javascript" src="bweb.js"></script> - <script type="text/javascript" src="bresto.js"></script> - - </head> - <body> -<div id="div-container" > - <div id="div-main-menu" > - <div id="div-toolbar" ></div> - <div id="div-tb-sel" ></div> - <div id="div-files" ></div> - <div id="div-file-versions" ></div> - <div id="div-file-selection" ></div> - <div id="div-tree" ></div> -</div> - -<div id="div-resto-dlg" style="visibility:hidden;"> -<div id="div-resto-form" > -<div id="div-media" ></div> -<div id="div-resto-form-bp1"></div> <div id="div-resto-form-bp2"></div> -</div> -</div> - </body> -</html> +<head> + <title>Bacula Web Restore interface</title> + <link rel="stylesheet" type="text/css" href="ext/resources/css/ext-all.css"> + <script type="text/javascript" src="ext/adapter/ext/ext-base.js"></script> + <script type="text/javascript" src="ext/ext-all.js"></script> + <script type="text/javascript" src="bweb.js"></script> + <script type="text/javascript" src="bresto.js"></script> +</head> +<body> +<div id="tb-div"></div> +<div id="resto-div" class="x-hidden"></div> +</body> +</head> Modified: trunk/gui/bweb/html/bresto.js =================================================================== --- trunk/gui/bweb/html/bresto.js 2008-12-18 10:28:39 UTC (rev 8184) +++ trunk/gui/bweb/html/bresto.js 2008-12-18 17:22:01 UTC (rev 8185) @@ -1,8 +1,7 @@ - // Bweb - A Bacula web interface // Bacula® - The Network Backup Solution // -// Copyright (C) 2000-2006 Free Software Foundation Europe e.V. +// Copyright (C) 2000-2008 Free Software Foundation Europe e.V. // // The main author of Bweb is Eric Bollengier. // The main author of Bacula is Kern Sibbald, with contributions from @@ -31,21 +30,20 @@ // render if vol is online/offline function rd_vol_is_online(val) { - return '<img src="/bweb/inflag' + val + '.png">'; + return '<img src="inflag' + val + '.png">'; } // TODO: fichier ou rep function rd_file_or_dir(val) { if (val == 'F') { - return '<img src="/bweb/A.png">'; + return '<img src="A.png">'; } else { - return '<img src="/bweb/R.png">'; + return '<img src="R.png">'; } } Ext.namespace('Ext.brestore'); - Ext.brestore.jobid=0; // selected jobid Ext.brestore.jobdate=''; // selected date Ext.brestore.client=''; // selected client @@ -53,12 +51,11 @@ Ext.brestore.storage=''; // selected storage for resto Ext.brestore.path=''; // current path (without user location) Ext.brestore.root_path=''; // user location - +Ext.brestore.media_store; // media store Ext.brestore.option_vosb = false; Ext.brestore.option_vafv = false; Ext.brestore.dlglaunch; -Ext.BLANK_IMAGE_URL = '/bweb/ext/resources/images/aero/s.gif'; // 1.1 - +Ext.brestore.use_filerelocation=false; function get_node_path(node) { var temp=''; @@ -74,7 +71,6 @@ return Ext.brestore.root_path + temp; } - function init_params(baseParams) { baseParams['client']= Ext.brestore.client; @@ -87,22 +83,42 @@ return baseParams; } +function captureEvents(observable) { + Ext.util.Observable.capture( + observable, + function(eventName) { + console.info(eventName); + }, + this + ); +} -function ext_init() -{ -//////////////////////////////////////////////////////////////: - var Tree = Ext.tree; +//////////////////////////////////////////////////////////////// + +Ext.BLANK_IMAGE_URL = 'ext/resources/images/default/s.gif'; +Ext.onReady(function(){ + if (!Ext.version || Ext.version < 2.2) { + alert("You must upgrade your extjs version to 2.2"); + return; + } + + Ext.QuickTips.init(); + + // Init tree for directory selection var tree_loader = new Ext.tree.TreeLoader({ baseParams:{}, dataUrl:'/cgi-bin/bweb/bresto.pl' }); - var tree = new Ext.tree.TreePanel('div-tree', { + var tree = new Ext.tree.TreePanel({ animate:true, loader: tree_loader, enableDD:true, enableDragDrop: true, - containerScroll: true + containerScroll: true, + title: 'Directories', + width: 250, + minSize: 100 }); // set the root node @@ -112,13 +128,9 @@ id:'source' }); tree.setRootNode(root); - Ext.brestore.tree = root; + Ext.brestore.tree = root; // shortcut - // render the tree - tree.render(); -// root.expand(); - - click_cb = function(node, event) { + var click_cb = function(node, event) { Ext.brestore.path = get_node_path(node); where_field.setValue(Ext.brestore.path); file_store.removeAll(); @@ -126,16 +138,16 @@ file_store.load({params:init_params({action: 'list_files', path:Ext.brestore.path, node:node.id}) - }); + }); return true; }; + tree.on('click', click_cb); tree.on('beforeload', function(e) { file_store.removeAll(); return true; }); - tree.on('load', function(n,e) { if (!n.firstChild) { click_cb(n, e); @@ -143,156 +155,177 @@ return true; }); -//////////////////////////////////////////////////////////////// - - var file_store = new Ext.data.Store({ + //////////////////////////////////////////////////////////////// + + var file_store = new Ext.data.Store({ proxy: new Ext.data.HttpProxy({ url: '/cgi-bin/bweb/bresto.pl', method: 'GET', params:{} }), - - reader: new Ext.data.ArrayReader({ - }, Ext.data.Record.create([ - {name: 'fileid' }, - {name: 'filenameid'}, - {name: 'pathid' }, - {name: 'jobid' }, - {name: 'name' }, - {name: 'size', type: 'int' }, - {name: 'mtime', type: 'date', dateFormat: 'Y-m-d h:i:s'} + + reader: new Ext.data.ArrayReader({}, + Ext.data.Record.create([ + {name: 'fileid' }, + {name: 'filenameid'}, + {name: 'pathid' }, + {name: 'jobid' }, + {name: 'name' }, + {name: 'size', type: 'int' }, + {name: 'mtime', type: 'date', dateFormat: 'Y-m-d h:i:s'} ])) - }); + }); + Ext.brestore.file_store=file_store; + var cm = new Ext.grid.ColumnModel([{ + id: 'cm-id', // id assigned so we can apply custom css + // (e.g. .x-grid-col-topic b { color:#333 }) + header: 'File', + dataIndex: 'name', + width: 200, + css: 'white-space:normal;' + },{ + header: "Size", + dataIndex: 'size', + renderer: human_size, + width: 60 + },{ + header: "Date", + dataIndex: 'mtime', + renderer: Ext.util.Format.dateRenderer('Y-m-d h:i'), + width: 100 + },{ + dataIndex: 'pathid', + hidden: true + },{ + dataIndex: 'filenameid', + hidden: true + },{ + dataIndex: 'fileid', + hidden: true + },{ + dataIndex: 'jobid', + hidden: true + }]); - var cm = new Ext.grid.ColumnModel([{ - id: 'name', // id assigned so we can apply custom css (e.g. .x-grid-col-topic b { color:#333 }) - header: 'File', - dataIndex: 'name', - width: 200, - css: 'white-space:normal;' - },{ - header: "Size", - dataIndex: 'size', - renderer: human_size, - width: 50 - },{ - header: "Date", - dataIndex: 'mtime', - renderer: Ext.util.Format.dateRenderer('Y-m-d h:i'), - width: 100 - },{ - dataIndex: 'pathid', - hidden: true - },{ - dataIndex: 'filenameid', - hidden: true - },{ - dataIndex: 'fileid', - hidden: true - },{ - dataIndex: 'jobid', - hidden: true - } - ]); + // by default columns are sortable + cm.defaultSortable = true; - // by default columns are sortable - cm.defaultSortable = true; - // create the grid - var files_grid = new Ext.grid.Grid('div-files', { - ds: file_store, - cm: cm, - ddGroup : 'TreeDD', - enableDrag: true, + var file_grid = new Ext.grid.GridPanel({ + id: 'div-files', + store: file_store, + colModel: cm, + ddGroup: 'TreeDD', enableDragDrop: true, selModel: new Ext.grid.RowSelectionModel(), - loadMask: true, + loadMask: true, autoSizeColumns: true, - enableColLock:false - + autoShow: true, + autoHeight: true, + title: 'Directory content', + cmargins: '5 0 0 0' }); + Ext.brestore.file_grid=file_grid; +// captureEvents(file_grid); +// captureEvents(file_store); // when we reload the view, // we clear the file version box file_store.on('beforeload', function(e) { file_versions_store.removeAll(); return true; }); + + file_store.on('loadexception', function(obj, options, response, e){ + console.info('store loadexception, arguments:', arguments); + console.info('error = ', e); + }); + file_store.on('load', function(store, records, options){ + //store is loaded, now you can work with it's records, etc. + console.info('store load, arguments:', arguments); + console.info('Store count = ', store.getCount()); + }); + // TODO: selection only when using dblclick - files_grid.selModel.on('rowselect', function(e,i,r) { + file_grid.selModel.on('rowselect', function(e,i,r) { if (r.json[4] == '.') { - return true; - } + return true; + } Ext.brestore.filename = r.json[4]; - file_versions_store.load({params:init_params({action: 'list_versions', - vafv: Ext.brestore.option_vafv, - pathid: r.json[2], - filenameid: r.json[1] - }) - }); + file_versions_store.load({ + params:init_params({action: 'list_versions', + vafv: Ext.brestore.option_vafv, + pathid: r.json[2], + filenameid: r.json[1] + }) + }); return true; }); -//////////////////////////////////////////////////////////////: + //////////////////////////////////////////////////////////////// - var file_selection_store = new Ext.data.Store({ + var file_selection_store = new Ext.data.Store({ proxy: new Ext.data.MemoryProxy(), + + reader: new Ext.data.ArrayReader({}, + Ext.data.Record.create([ + {name: 'jobid' }, + {name: 'fileid' }, + {name: 'filenameid'}, + {name: 'pathid' }, + {name: 'name' }, + {name: 'size', type: 'int' }, + {name: 'mtime'}//, type: 'date', dateFormat: 'Y-m-d h:i:s'} + ])) + }); - reader: new Ext.data.ArrayReader({ - }, Ext.data.Record.create([ - {name: 'jobid' }, - {name: 'fileid' }, - {name: 'filenameid'}, - {name: 'pathid' }, - {name: 'name' }, - {name: 'size', type: 'int' }, - {name: 'mtime', type: 'date', dateFormat: 'Y-m-d h:i:s'} - ])) - }); - - var file_selection_cm = new Ext.grid.ColumnModel([{ - id: 'name', // id assigned so we can apply custom css (e.g. .x-grid-col-topic b { color:#333 }) - header: "Name", - dataIndex: 'name', - width: 250 + var file_selection_cm = new Ext.grid.ColumnModel([ + { + id: 'file-selection-id', + header: "Name", + dataIndex: 'name', + width: 250 },{ - header: "JobId", - width: 50, - dataIndex: 'jobid' + header: "JobId", + width: 50, + dataIndex: 'jobid' },{ - header: "Size", - dataIndex: 'size', - renderer: human_size, - width: 50 + header: "Size", + dataIndex: 'size', + renderer: human_size, + width: 50 },{ - header: "Date", - dataIndex: 'mtime', - renderer: Ext.util.Format.dateRenderer('Y-m-d h:i'), - width: 100 + header: "Date", + dataIndex: 'mtime', +// renderer: Ext.util.Format.dateRenderer('Y-m-d h:i'), + width: 100 },{ - dataIndex: 'pathid', - header: 'PathId', - hidden: true + header: 'PathId', + dataIndex: 'pathid', + hidden: true },{ - dataIndex: 'filenameid', - hidden: true + header: 'Filenameid', + dataIndex: 'filenameid', + hidden: true },{ - dataIndex: 'fileid', - header: 'FileId', - hidden: true + header: 'FileId', + dataIndex: 'fileid', + hidden: true } - ]); + ]); - // create the grid - var file_selection_grid = new Ext.grid.Grid('div-file-selection', { - cm: file_selection_cm, - ds: file_selection_store, + var file_selection_grid = new Ext.grid.GridPanel({ + colModel: file_selection_cm, + store: file_selection_store, ddGroup : 'TreeDD', - enableDrag: false, - enableDrop: true, + enableDragDrop: false, selModel: new Ext.grid.RowSelectionModel(), loadMask: true, - enableColLock:false + height: 200, +// autoHeight: true, + minSize: 75, + maxSize: 250, + cmargins: '5 0 0 0' }); var file_selection_record = Ext.data.Record.create( @@ -303,168 +336,113 @@ {name: 'size'}, {name: 'mtime'} ); -// data.selections[0].json[] -// data.node.id -// http://extjs.com/forum/showthread.php?t=12582&highlight=drag+drop - var ddrow = new Ext.dd.DropTarget(file_selection_grid.container, { - ddGroup : 'TreeDD', - copy:false, - notifyDrop : function(dd, e, data){ - var r; - if (data.selections) { - if (data.grid.id == 'div-files') { - for(var i=0;i<data.selections.length;i++) { - r = new file_selection_record({ - jobid: data.selections[0].json[3], - fileid: data.selections[i].json[0], - filenameid:data.selections[i].json[1], - pathid: data.selections[i].json[2], - name: Ext.brestore.path + data.selections[i].json[4], - size: data.selections[i].json[5], - mtime: data.selections[i].json[6] - }); - file_selection_store.add(r) - } - } +// captureEvents(file_selection_grid); +// captureEvents(file_selection_store); - if (data.grid.id == 'div-file-versions') { - r = new file_selection_record({ - jobid: data.selections[0].json[3], - fileid: data.selections[0].json[0], - filenameid:data.selections[0].json[1], - pathid: data.selections[0].json[2], - name: Ext.brestore.path + Ext.brestore.filename, - size: data.selections[0].json[7], - mtime: data.selections[0].json[8] - }); - file_selection_store.add(r) - } - } - - if (data.node) { - var path= get_node_path(data.node); - r = new file_selection_record({ - jobid: data.node.attributes.jobid, - fileid: 0, - filenameid:0, - pathid: data.node.id, - name: path, - size: 4096, - mtime: 0 - }); - file_selection_store.add(r) - } - - return true; - }}); - - file_selection_grid.on('enddrag', function(dd,e) { - alert('enddrag'); alert(e) ; return true; - }); - file_selection_grid.on('notifyDrop', function(dd,e) { - alert('notifyDrop'); alert(e) ; return true; - }); - func1 = function(e,b,c) { - if (e.browserEvent.keyCode == 46) { + func1 = function(e,b,c) { + if (e.browserEvent.keyCode == 46) { var m = file_selection_grid.getSelections(); if(m.length > 0) { - for(var i = 0, len = m.length; i < len; i++){ - file_selection_store.remove(m[i]); - } + for(var i = 0, len = m.length; i < len; i++){ + file_selection_store.remove(m[i]); + } } - } - }; - file_selection_grid.on('keypress', func1); -/////////////////////////////////////////////////////// + } + }; + file_selection_grid.on('keypress', func1); + + //////////////////////////////////////////////////////////////// - var file_versions_store = new Ext.data.Store({ + var file_versions_store = new Ext.data.Store({ proxy: new Ext.data.HttpProxy({ url: '/cgi-bin/bweb/bresto.pl', method: 'GET', params:{offset:0, limit:50 } }), + + reader: new Ext.data.ArrayReader({}, + Ext.data.Record.create([ + {name: 'fileid' }, + {name: 'filenameid'}, + {name: 'pathid' }, + {name: 'jobid' }, + {name: 'volume' }, + {name: 'inchanger' }, + {name: 'md5' }, + {name: 'size', type: 'int' }, + {name: 'mtime', type: 'date', dateFormat: 'Y-m-d h:i:s'} + ])) + }); - reader: new Ext.data.ArrayReader({ - }, Ext.data.Record.create([ - {name: 'fileid' }, - {name: 'filenameid'}, - {name: 'pathid' }, - {name: 'jobid' }, - {name: 'volume' }, - {name: 'inchanger' }, - {name: 'md5' }, - {name: 'size', type: 'int' }, - {name: 'mtime', type: 'date', dateFormat: 'Y-m-d h:i:s'} - ])) - }); + var file_versions_cm = new Ext.grid.ColumnModel([{ + id: 'file-version-id', + dataIndex: 'name', + hidden: true + },{ + header: "InChanger", + dataIndex: 'inchanger', + width: 60, + renderer: rd_vol_is_online + },{ + header: "Volume", + dataIndex: 'volume', + width: 128 + },{ + header: "JobId", + width: 50, + dataIndex: 'jobid' + },{ + header: "Size", + dataIndex: 'size', + renderer: human_size, + width: 50 + },{ + header: "Date", + dataIndex: 'mtime', + renderer: Ext.util.Format.dateRenderer('Y-m-d h:i'), + width: 100 + },{ + header: "CheckSum", + dataIndex: 'md5', + width: 160 + },{ + header: "pathid", + dataIndex: 'pathid', + hidden: true + },{ + header: "filenameid", + dataIndex: 'filenameid', + hidden: true + },{ + header: "fileid", + dataIndex: 'fileid', + hidden: true + }]); - var file_versions_cm = new Ext.grid.ColumnModel([{ - id: 'name', // id assigned so we can apply custom css (e.g. .x-grid-col-topic b { color:#333 }) - dataIndex: 'name', - hidden: true - },{ - header: "InChanger", - dataIndex: 'inchanger', - width: 60, - renderer: rd_vol_is_online - },{ - header: "Volume", - dataIndex: 'volume' - },{ - header: "JobId", - width: 50, - dataIndex: 'jobid' - },{ - header: "Size", - dataIndex: 'size', - renderer: human_size, - width: 50 - },{ - header: "Date", - dataIndex: 'mtime', - renderer: Ext.util.Format.dateRenderer('Y-m-d h:i'), - width: 100 - },{ - header: "MD5", - dataIndex: 'md5', - width: 160 - },{ - header: "pathid", - dataIndex: 'pathid', - hidden: true - },{ - header: "filenameid", - dataIndex: 'filenameid', - hidden: true - },{ - header: "fileid", - dataIndex: 'fileid', - hidden: true - } - ]); - // by default columns are sortable - file_versions_cm.defaultSortable = true; + file_versions_cm.defaultSortable = true; // create the grid - var file_versions_grid = new Ext.grid.Grid('div-file-versions', { - ds: file_versions_store, - cm: file_versions_cm, + var file_versions_grid = new Ext.grid.GridPanel({ + id: 'div-file-versions', + store: file_versions_store, + colModel: file_versions_cm, ddGroup : 'TreeDD', - enableDrag: true, - enableDrop: false, + enableDragDrop: true, selModel: new Ext.grid.RowSelectionModel(), loadMask: true, - enableColLock:false - + autoHeight: true, + autoScroll: true, + title: 'File version', + cmargins: '5 0 0 0' }); file_versions_grid.on('rowdblclick', function(e) { alert(e) ; file_versions_store.removeAll(); return true; }); -//////////////////////////////////////////////////////////////: + //////////////////////////////////////////////////////////////// var client_store = new Ext.data.Store({ proxy: new Ext.data.HttpProxy({ @@ -472,10 +450,10 @@ method: 'GET', params:{action:'list_client'} }), - + reader: new Ext.data.ArrayReader({ }, Ext.data.Record.create([ - {name: 'name' } + {name: 'name' } ])) }); @@ -509,7 +487,7 @@ return true; }); -//////////////////////////////////////////////////////////////: + //////////////////////////////////////////////////////////////: var job_store = new Ext.data.Store({ proxy: new Ext.data.HttpProxy({ @@ -527,17 +505,17 @@ }); var job_combo = new Ext.form.ComboBox({ - fieldLabel: 'Jobs', - store: job_store, - displayField:'jobname', - typeAhead: true, - mode: 'local', - triggerAction: 'all', - emptyText:'Select a job...', - selectOnFocus:true, - loadMask: true, - forceSelection: true, - width:350 + store: job_store, + fieldLabel: 'Jobs', + displayField: 'jobname', + mode: 'local', + triggerAction: 'all', + emptyText: 'Select a job...', + typeAhead: true, + selectOnFocus: true, + loadMask: true, + forceSelection: true, + width: 350 }); job_combo.on('select', function(e,c) { @@ -549,7 +527,12 @@ root.reload(); }); -//////////////////////////////////////////////////////////////// + var where_field = new Ext.form.TextField({ + fieldLabel: 'Location', + name: 'where', + width:275, + allowBlank:false + }); function sel_option(item, check) { @@ -578,95 +561,204 @@ }) ] }); -////////////////////////////////////////////////////////////////: - // create the primary toolbar - var tb2 = new Ext.Toolbar('div-tb-sel'); + var tb = new Ext.Toolbar({ + items: [ + client_combo, + job_combo, + '-', + { + text: 'Change location', + cls:'x-btn-text-icon', + handler: function() { + var where = where_field.getValue(); + if (!where) { + Ext.MessageBox.show({ + title: 'Bad parameter', + msg: 'Location is empty!', + buttons: Ext.MessageBox.OK, + icon: Ext.MessageBox.ERROR + }); + return; + } + Ext.brestore.root_path=where; + root.setText(where); + tree_loader.baseParams = init_params({ + action:'list_dirs', path: where + }); + root.reload(); + } + }, + where_field, + { + text:'Options', + iconCls: 'bmenu', // <-- icon + menu: menu // assign menu by instance + }, + '->', // Fill + { // TODO: put this button on south panel + icon: '/bweb/mR.png', // icons can also be specified inline + cls: 'x-btn-text-icon', + tooltip: 'Run restore', + text: 'Run restore', + handler: function() { + if (!file_selection_store.data.items.length) { + Ext.MessageBox.show({ + title: 'Empty selection', + msg: 'Your object selection list is empty!', + buttons: Ext.MessageBox.OK, + icon: Ext.MessageBox.ERROR + }); + } else { + display_run_job(); + } + } + }]}); + tb.render('tb-div'); - var where_field = new Ext.form.TextField({ - fieldLabel: 'Location', - name: 'where', - width:175, - allowBlank:false - }); + //////////////////////////////////////////////////////////////// + + // Define Main interface + var MainView = new Ext.Viewport({ + id:'mainview-panel', + title: 'Bacula Web Restore', + layout:'border', + bodyBorder: false, + renderTo: Ext.getBody(), + defaults: { + collapsible: false, + split: true, + animFloat: false, + autoHide: false, + autoScroll: true, + useSplitTips: true + }, + tbar: tb, + items: [ + { + title: 'Directories', + region: 'west', + width: 250, + minSize: 100, + items: tree + }, { + title: 'Directory content', + region: 'center', + minSize: 100, + items: file_grid + }, { + title: 'File version', + region: 'east', + width: 550, + minSize: 100, + items: file_versions_grid + + }, { + title: 'Restore selection', + region: 'south', + height: 200, + autoScroll: false, + items: file_selection_grid + } + ]}); + client_store.load({params:{action: 'list_client'}}); - var tb = new Ext.Toolbar('div-toolbar', [ - client_combo, - job_combo, - '-', - { - id: 'tb_home', -// icon: '/bweb/up.gif', - text: 'Change location', - cls:'x-btn-text-icon', - handler: function() { - var where = where_field.getValue(); - Ext.brestore.root_path=where; - root.setText(where); - tree_loader.baseParams = init_params({ action:'list_dirs', path: where }); - root.reload(); - } - }, - where_field, - '-', - { - cls: 'x-btn-text-icon bmenu', // icon and text class - text:'Options', - menu: menu // assign menu by instance - }, - { - icon: '/bweb/mR.png', // icons can also be specified inline - cls: 'x-btn-icon', - title: 'restore', - handler: function() { - if (Ext.brestore.dlglaunch) { - Ext.brestore.dlglaunch.show(); - return 0; + // data.selections[0].json[] + // data.node.id + // http://extjs.com/forum/showthread.php?t=12582&highlight=drag+drop + + var horror_show1 = file_selection_grid.getView().el.dom; + var ddrow = new Ext.dd.DropTarget(horror_show1, { + ddGroup : 'TreeDD', + copy:false, + notifyDrop : function(dd, e, data){ + var r; + if (data.selections) { + if (data.grid.id == 'div-files') { + for(var i=0;i<data.selections.length;i++) { + r = new file_selection_record({ + jobid: data.selections[0].json[3], + fileid: data.selections[i].json[0], + filenameid:data.selections[i].json[1], + pathid: data.selections[i].json[2], + name: Ext.brestore.path + data.selections[i].json[4], + size: data.selections[i].json[5], + mtime: data.selections[i].json[6] + }); + file_selection_store.add(r); + } } - Ext.brestore.dlglaunch = new Ext.LayoutDialog("div-resto-dlg", { -// modal:true, - width:600, - height:500, - shadow:true, - minWidth:300, - minHeight:300, - proxyDrag: true, -// west: { -// split:true, -// initialSize: 150, -// minSize: 100, -// maxSize: 250, -// titlebar: true, -// collapsible: true, -// animate: true -// }, - center: { - autoScroll:true, -// tabPosition: 'top', -// closeOnTab: true, -// alwaysShowTabs: true - } + + if (data.grid.id == 'div-file-versions') { + r = new file_selection_record({ + jobid: data.selections[0].json[3], + fileid: data.selections[0].json[0], + filenameid:data.selections[0].json[1], + pathid: data.selections[0].json[2], + name: Ext.brestore.path + Ext.brestore.filename, + size: data.selections[0].json[7], + mtime: data.selections[0].json[8] + }); + file_selection_store.add(r) + } + } + + if (data.node) { + var path= get_node_path(data.node); + r = new file_selection_record({ + jobid: data.node.attributes.jobid, + fileid: 0, + filenameid:0, + pathid: data.node.id, + name: path, + size: 4096, + mtime: 0 }); + file_selection_store.add(r) + } + + return true; + }}); - var fs = new Ext.form.Form({ - labelAlign: 'right', - labelWidth: 80 - }); + function reload_media_store() { + var items = file_selection_store.data.items; + var tab_fileid=new Array(); + var tab_jobid=new Array(); + var enable_compute=false; + for(var i=0;i<items.length;i++) { + if (items[i].data['fileid']) { + tab_fileid.push(items[i].data['fileid']); + } else { + enable_compute=true; + } + tab_jobid.push(items[i].data['jobid']); + } + var res = tab_fileid.join(","); + var res2 = tab_jobid.join(","); + + console.info(res); + console.info(res2); -// var resto_store = new Ext.data.Store({ -// proxy: new Ext.data.HttpProxy({ -// url: '/cgi-bin/bweb/bresto.pl', -// method: 'GET', -// params:{action:'list_resto'} -// }), -// -// reader: new Ext.data.ArrayReader({ -// }, Ext.data.Record.create([ -// {name: 'name' } -// ])) -// }); + Ext.brestore.media_store.baseParams = init_params({ + action: 'get_media', + jobid: res2, + fileid: res + }); + Ext.brestore.media_store.load(); + if (enable_compute) { + Ext.get('reload_media').show(); + } else { + Ext.get('reload_media').hide(); + } + }; - var rclient_combo = new Ext.form.ComboBox({ + function display_run_job() { + if (Ext.brestore.dlglaunch) { + reload_media_store(); + Ext.brestore.dlglaunch.show(); + return 0; + } + var rclient_combo = new Ext.form.ComboBox({ value: Ext.brestore.client, fieldLabel: 'Client', hiddenName:'client', @@ -676,341 +768,256 @@ mode: 'local', triggerAction: 'all', emptyText:'Select a client...', - selectOnFocus:true, - width:190 + forceSelection: true, + value: Ext.brestore.client, + selectOnFocus:true }); - var where_text = new Ext.form.TextField({ + var where_text = new Ext.form.TextField({ fieldLabel: 'Where', name: 'where', - value: '/tmp/bacula-restore', - width:190 + value: '/tmp/bacula-restore' }); - var stripprefix_text = new Ext.form.TextField({ + var stripprefix_text = new Ext.form.TextField({ fieldLabel: 'Strip prefix', name: 'strip_prefix', value: '', - disabled: 1, - width:190 + disabled: 1 }); - var addsuffix_text = new Ext.form.TextField({ + var addsuffix_text = new Ext.form.TextField({ fieldLabel: 'Add suffix', name: 'add_suffix', value: '', - disabled: 1, - width:190 + disabled: 1 }); - var addprefix_text = new Ext.form.TextField({ + var addprefix_text = new Ext.form.TextField({ fieldLabel: 'Add prefix', name: 'add_prefix', value: '', - disabled: 1, - width:190 + disabled: 1 }); - var rwhere_text = new Ext.form.TextField({ + var rwhere_text = new Ext.form.TextField({ fieldLabel: 'Where regexp', name: 'regexp_where', value: '', - disabled: 1, - width:190 + disabled: 1 }); - var usefilerelocation_bp = new Ext.form.Checkbox({ - fieldLabel: 'Use file relocation', - name: 'use_relocation', - checked: 0 - }); - var useregexp_bp = new Ext.form.Checkbox({ + var useregexp_bp = new Ext.form.Checkbox({ fieldLabel: 'Use regexp', name: 'use_regexp', disabled: 1, - checked: 0 - }); - usefilerelocation_bp.on('check', function(bp,state) { - if (state) { - where_text.disable(); - useregexp_bp.enable(); - if (useregexp_bp.getValue()) { - addsuffix_text.disable(); - addprefix_text.disable(); - stripprefix_text.disable(); - rwhere_text.enable(); - } else { - addsuffix_text.enable(); - addprefix_text.enable(); - stripprefix_text.enable(); - rwhere_text.disable(); - } - } else { - where_text.enable(); - addsuffix_text.disable(); - addprefix_text.disable(); - stripprefix_text.disable(); - useregexp_bp.disable(); - rwhere_text.disable(); - } - }); + checked: 0, + handler: function(bp,state) { + if (state) { + addsuffix_text.disable(); + addprefix_text.disable(); + stripprefix_text.disable(); + rwhere_text.enable(); + } else { + addsuffix_text.enable(); + addprefix_text.enable(); + stripprefix_text.enable(); + rwhere_text.disable(); + } + } + }); - useregexp_bp.on('check', function(bp,state) { - if (state) { - addsuffix_text.disable(); - addprefix_text.disable(); - stripprefix_text.disable(); - rwhere_text.enable(); - } else { - addsuffix_text.enable(); - addprefix_text.enable(); - stripprefix_text.enable(); - rwhere_text.disable(); - } - }); + var use_filerelocation_fieldset = new Ext.form.FieldSet({ + checkboxToggle : true, + title : 'Use file relocation', + autoHeight : true, + defaults : {width: 210}, + defaultType : 'textfield', + checkboxName : 'use_filerelocation', + collapsed : true, + anchor : '100%', + items :[ stripprefix_text, addsuffix_text, addprefix_text, + useregexp_bp, rwhere_text ] + }); + + use_filerelocation_fieldset.on('collapse', function(bp) { + Ext.brestore.use_filerelocation=false; + where_text.enable(); + addsuffix_text.disable(); + addprefix_text.disable(); + stripprefix_text.disable(); + useregexp_bp.disable(); + rwhere_text.disable(); + }); + use_filerelocation_fieldset.on('expand', function(bp) { + Ext.brestore.use_filerelocation=true; + where_text.disable(); + useregexp_bp.enable(); + if (useregexp_bp.getValue()) { + addsuffix_text.disable(); + addprefix_text.disable(); + stripprefix_text.disable(); + rwhere_text.enable(); + } else { + addsuffix_text.enable(); + addprefix_text.enable(); + stripprefix_text.enable(); + rwhere_text.disable(); + } + }); + + var media_store = Ext.brestore.media_store = new Ext.data.Store({ + proxy: new Ext.data.HttpProxy({ + url: '/cgi-bin/bweb/bresto.pl', + method: 'GET', + params:{offset:0, limit:50 } + }), + + reader: new Ext.data.ArrayReader({ + }, Ext.data.Record.create([ + {name: 'volumename'}, + {name: 'enabled' }, + {name: 'inchanger' } + ])) + }); + + var media_cm = new Ext.grid.ColumnModel( + [{ + header: "InChanger", + dataIndex: 'inchanger', + width: 60, + renderer: rd_vol_is_online + }, { + header: "Volume", + id: 'volumename', + dataIndex: 'volumename', + width: 140 + } + ]); + + // create the grid + var media_grid = new Ext.grid.GridPanel({ + id: 'div-media-grid', + store: media_store, + colModel: media_cm, + enableDragDrop: false, + loadMask: true, + width: 200, + autoHeight: true, + frame: true + }); - var storage_store = new Ext.data.Store({ - proxy: new Ext.data.HttpProxy({ - url: '/cgi-bin/bweb/bresto.pl', - method: 'GET', - params:{action:'list_storage'} - }), + var form_panel = new Ext.FormPanel({ + labelWidth : 75, // label settings here cascade unless overridden + url : 'save-form.php', + frame : true, + bodyStyle : 'padding:5px 5px 0', + width : 250, +// autoHeight : true, + items: [{ + xtype : 'fieldset', + title : 'Media needed', + autoHeight : true, + defaults : {width: 210}, + defaultType : 'textfield', + items :[ media_grid, {xtype: 'button', id: 'reload_media', + text: 'Compute with directories', + tooltip: 'Can take long time...', + handler:reload_media_store}] + }, { + xtype : 'fieldset', + title : 'Restore options', + autoHeight : true, + defaults : {width: 210}, + defaultType : 'textfield', + items :[ rclient_combo, where_text ] + }, use_filerelocation_fieldset], + + buttons: [{ + text: 'Run', + handler: function() { + if(!form_panel.getForm().isValid()) { alert("invalid") } + else { launch_restore() } + } + },{ + text: 'Cancel', + handler: function() { Ext.brestore.dlglaunch.hide(); } + }] + }); - reader: new Ext.data.ArrayReader({ - }, Ext.data.Record.create([ - {name: 'name' } - ])) - }); - var storage_combo = new Ext.form.ComboBox({ - fieldLabel: 'Storage', - hiddenName:'storage', - store: storage_store, - displayField:'name', - typeAhead: true, - mode: 'local', - triggerAction: 'all', - emptyText:'Select a storage...', - selectOnFocus:true, - width:190 + Ext.brestore.dlglaunch = new Ext.Window({ + applyTo : 'resto-div', + title : 'Restore selection', + layout : 'fit', + width : 640, + height : 480, + closeAction :'hide', + plain : true, + items : form_panel }); -//////////////////////////////////////////////////////////////// - var media_store = new Ext.data.Store({ - proxy: new Ext.data.HttpProxy({ - url: '/cgi-bin/bweb/bresto.pl', - method: 'GET', - params:{offset:0, limit:50 } - }), - reader: new Ext.data.ArrayReader({ - }, Ext.data.Record.create([ - {name: 'volumename'}, - {name: 'enabled' }, - {name: 'inchanger' } - ])) - }); +// Ext.brestore.dlglaunch.addKeyListener(27, +// Ext.brestore.dlglaunch.hide, +// Ext.brestore.dlglaunch); +/* + * var storage_store = new Ext.data.Store({ + * proxy: new Ext.data.HttpProxy({ + * url: '/cgi-bin/bweb/bresto.pl', + * method: 'GET', + * params:{action:'list_storage'} + * }), + * + * reader: new Ext.data.ArrayReader({ + * }, Ext.data.Record.create([ + * {name: 'name' } + * ])) + * }); + */ + //////////////////////////////////////////////////////////////// - var media_cm = new Ext.grid.ColumnModel([{ - header: "InChanger", - dataIndex: 'inchanger', - width: 60, - renderer: rd_vol_is_online - }, { - header: "Volume", - id: 'volumename', - dataIndex: 'volumename', - width: 140 - } - ]); - - // create the grid - var media_grid = new Ext.grid.Grid('div-media', { - ds: media_store, - cm: media_cm, - enableDrag: false, - enableDrop: false, - loadMask: true, - width: 200, - enableColLock:false - }); - - var items = file_selection_store.data.items; - var tab_fileid=new Array(); - var tab_jobid=new Array(); - for(var i=0;i<items.length;i++) { - if (items[i].data['fileid']) { - tab_fileid.push(items[i].data['fileid']); - } - tab_jobid.push(items[i].data['jobid']); - } - var res = tab_fileid.join(","); - var res2 = tab_jobid.join(","); - -//////////////////////////////////////////////////////////////// - fs.fieldset( - {legend:'Media needed'}, - media_grid - ); - fs.fieldset( - {legend:'Restore options'}, - new Ext.form.ComboBox({ - fieldLabel: 'Replace', - hiddenName:'replace', - store: new Ext.data.SimpleStore({ - fields: ['replace'], - data : [['always'],['never'],['if newer']] - }), - displayField:'replace', - typeAhead: true, - mode: 'local', - triggerAction: 'all', - emptyText:'never', - selectOnFocus:true, - width:190 - }), -// -// new Ext.form.ComboBox({ -// fieldLabel: 'job', -// hiddenName:'job', -// store: resto_store, -// displayField:'name', -// typeAhead: true, -// mode: 'local', -// triggerAction: 'all', -// emptyText:'Select a job...', -// selectOnFocus:true, -// width:190 -// }), - - rclient_combo, - storage_combo, - where_text - ); - fs.fieldset( - {legend:'File relocation'}, - usefilerelocation_bp, - stripprefix_text, - addprefix_text, - addsuffix_text, - useregexp_bp, - rwhere_text - ); - media_store.baseParams = init_params({action: 'get_media', jobid: res2, fileid: res}); - media_store.load(); - storage_store.load({params:{action: 'list_storage'}}); -// resto_store.load({params:{action: 'list_resto'}}); - fs.render('div-resto-form'); - -// var f = new Ext.form.BasicForm('div-resto-form', {url: '/bweb/test', method: 'GET', -// baseParams: {init: 1} -// } -// ); - - var launch_restore = function() { - var items = file_selection_store.data.items; - var tab_fileid=new Array(); - var tab_dirid=new Array(); - var tab_jobid=new Array(); - for(var i=0;i<items.length;i++) { + function launch_restore() { + var items = file_selection_store.data.items; + var tab_fileid=new Array(); + var tab_dirid=new Array(); + var tab_jobid=new Array(); + for(var i=0;i<items.length;i++) { if (items[i].data['fileid']) { - tab_fileid.push(items[i].data['fileid']); + tab_fileid.push(items[i].data['fileid']); } else { - tab_dirid.push(items[i].data['pathid']); + tab_dirid.push(items[i].data['pathid']); } tab_jobid.push(items[i].data['jobid']); - } - var res = ';fileid=' + tab_fileid.join(";fileid="); - var res2 = ';dirid=' + tab_dirid.join(";dirid="); - var res3 = ';jobid=' + tab_jobid.join(";jobid="); + } + var res = ';fileid=' + tab_fileid.join(";fileid="); + var res2 = ';dirid=' + tab_dirid.join(";dirid="); + var res3 = ';jobid=' + tab_jobid.join(";jobid="); - var res4 = ';client=' + rclient_combo.getValue(); - if (storage_combo.getValue()) { - res4 = res4 + ';storage=' + storage_combo.getValue(); - } - if (usefilerelocation_bp.getValue()) { - if (useregexp_bp.getValue()) { - res4 = res4 + ';regexwhere=' + rwhere_text.getValue(); - } else { - var reg = new Array(); - if (stripprefix_text.getValue()) { - reg.push('!' + stripprefix_text.getValue() + '!!i'); - } - if (addprefix_text.getValue()) { - reg.push('!^!' + addprefix_text.getValue() + '!'); - } - if (addsuffix_text.getValue()) { - reg.push('!([^/])$!$1' + addsuffix_text.getValue() + '!'); - } - res4 = res4 + ';regexwhere=' + reg.join(','); - } - } else { - res4 = res4 + ';where=' + where_text.getValue(); - } - window.location='/cgi-bin/bweb/bresto.pl?action=restore' + res + res2 + res3 + res4; - } // end launch_restore + var res4 = ';client=' + rclient_combo.getValue(); +// if (storage_combo.getValue()) { +// res4 = res4 + ';storage=' + storage_combo.getValue(); +// } + if (Ext.brestore.use_filerelocation) { + if (useregexp_bp.getValue()) { + res4 = res4 + ';regexwhere=' + rwhere_text.getValue(); + } else { + var reg = new Array(); + if (stripprefix_text.getValue()) { + reg.push('!' + stripprefix_text.getValue() + '!!i'); + } + if (addprefix_text.getValue()) { + reg.push('!^!' + addprefix_text.getValue() + '!'); + } + if (addsuffix_text.getValue()) { + reg.push('!([^/])$!$1' + addsuffix_text.getValue() + '!'); + } + res4 = res4 + ';regexwhere=' + reg.join(','); + } + } else { + res4 = res4 + ';where=' + where_text.getValue(); + } + //window.location='/cgi-bin/bweb/bresto.pl?action=restore' + res + res2 + res3 + res4; + console.info('/cgi-bin/bweb/bresto.pl?action=restore' + res + res2 + res3 + res4); + } // end launch_restore - var dialog = Ext.brestore.dlglaunch; - dialog.addKeyListener(27, dialog.hide, dialog); - dialog.addButton('Submit', launch_restore); - dialog.addButton('Close', dialog.hide, dialog); - - var layout = dialog.getLayout(); - layout.beginUpdate(); - layout.add('center', new Ext.ContentPanel('div-resto-form', { - autoCreate:true, title: 'Third Tab', closable:true, background:true})); - layout.endUpdate(); - dialog.show(); + //////////////////////////////////////////////////////////////// + reload_media_store(); + Ext.brestore.dlglaunch.show(); +// storage_store.load({params:{action: 'list_storage'}}); } - } - ]); - -//////////////////////////////////////////////////////////////// - - var layout = new Ext.BorderLayout(document.body, { - north: { -// split: true - }, - south: { - split: true, initialSize: 300 - }, - east: { - split: true, initialSize: 550 - }, - west: { - split: true, initialSize: 300 - }, - center: { - initialSize: 450 - } - - }); - -layout.beginUpdate(); - layout.add('north', new Ext.ContentPanel('div-toolbar', { - fitToFrame: true, autoCreate:true,closable: false - })); - layout.add('south', new Ext.ContentPanel('div-file-selection', { - toolbar: tb2,resizeEl:'div-file-selection', - fitToFrame: true, autoCreate:true,closable: false - })); - layout.add('east', new Ext.ContentPanel('div-file-versions', { - fitToFrame: true, autoCreate:true,closable: false - })); - layout.add('west', new Ext.ContentPanel('div-tree', { - autoScroll:true, fitToFrame: true, - autoCreate:true,closable: false - })); - layout.add('center', new Ext.ContentPanel('div-files', { - autoScroll:true,autoCreate:true,fitToFrame: true - })); -layout.endUpdate(); - - -//////////////////////////////////////////////////////////////// - -// job_store.load(); - client_store.load({params:{action: 'list_client'}}); -// file_store.load({params:{offset:0, limit:50}}); -// file_versions_store.load({params:{offset:0, limit:50}}); -// file_selection_store.load(); - files_grid.render(); - file_selection_grid.render(); - file_versions_grid.render(); - -} -Ext.onReady( ext_init ); +}); \ No newline at end of file Modified: trunk/gui/bweb/technotes-3.0 =================================================================== --- trunk/gui/bweb/technotes-3.0 2008-12-18 10:28:39 UTC (rev 8184) +++ trunk/gui/bweb/technotes-3.0 2008-12-18 17:22:01 UTC (rev 8185) @@ -1,3 +1,6 @@ +18Dec08 +ebl Rewrite bresto (bweb restore interface) to work with ExtJS 2.2 + Fix lots of bug 15Dec08 ebl Update Bconsole.pm to use raw_pty() instead of using IO::Pty noecho 10Dec08 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ri...@us...> - 2008-12-23 13:20:03
|
Revision: 8234 http://bacula.svn.sourceforge.net/bacula/?rev=8234&view=rev Author: ricozz Date: 2008-12-23 13:19:51 +0000 (Tue, 23 Dec 2008) Log Message: ----------- ebl update bresto Modified Paths: -------------- trunk/gui/bweb/html/bresto.js trunk/gui/bweb/technotes-3.0 Modified: trunk/gui/bweb/html/bresto.js =================================================================== --- trunk/gui/bweb/html/bresto.js 2008-12-23 11:45:23 UTC (rev 8233) +++ trunk/gui/bweb/html/bresto.js 2008-12-23 13:19:51 UTC (rev 8234) @@ -143,8 +143,9 @@ tree.on('click', click_cb); - tree.on('beforeload', function(e) { - file_store.removeAll(); + tree.on('beforeload', function(e,b) { +// console.info(b); +// file_store.removeAll(); return true; }); tree.on('load', function(n,e) { @@ -301,7 +302,7 @@ header: "Date", dataIndex: 'mtime', // renderer: Ext.util.Format.dateRenderer('Y-m-d h:i'), - width: 100 + width: 120 },{ header: 'PathId', dataIndex: 'pathid', @@ -474,6 +475,24 @@ width:135 }); + var replace_store = new Ext.data.SimpleStore({ + fields: ['value', 'text'], + data : [['never', 'Never'],['always', 'Always']] + }); + + var replace_combo = new Ext.form.ComboBox({ + fieldLabel: 'Replace', + store: replace_store, + displayField:'text', + typeAhead: true, + mode: 'local', + triggerAction: 'all', + emptyText:'Replace mode...', + selectOnFocus:true, + forceSelection: true, + width:135 + }); + client_combo.on('valid', function(e) { Ext.brestore.client = e.getValue(); Ext.brestore.jobid=0; @@ -822,34 +841,39 @@ } }); - var use_filerelocation_fieldset = new Ext.form.FieldSet({ - checkboxToggle : true, - title : 'Use file relocation', - autoHeight : true, - defaults : {width: 210}, - defaultType : 'textfield', - checkboxName : 'use_filerelocation', - collapsed : true, - anchor : '100%', - items :[ stripprefix_text, addsuffix_text, addprefix_text, - useregexp_bp, rwhere_text ] + var usefilerelocation_bp = new Ext.form.Checkbox({ + fieldLabel: 'Use file relocation', + name: 'use_relocation', + checked: 0 }); - - use_filerelocation_fieldset.on('collapse', function(bp) { - Ext.brestore.use_filerelocation=false; - where_text.enable(); - addsuffix_text.disable(); - addprefix_text.disable(); - stripprefix_text.disable(); - useregexp_bp.disable(); - rwhere_text.disable(); - }); + + usefilerelocation_bp.on('check', function(bp,state) { + if (state) { + where_text.disable(); + useregexp_bp.enable(); + if (useregexp_bp.getValue()) { + addsuffix_text.disable(); + addprefix_text.disable(); + stripprefix_text.disable(); + rwhere_text.enable(); + } else { + addsuffix_text.enable(); + addprefix_text.enable(); + stripprefix_text.enable(); + rwhere_text.disable(); + } + } else { + where_text.enable(); + addsuffix_text.disable(); + addprefix_text.disable(); + stripprefix_text.disable(); + useregexp_bp.disable(); + rwhere_text.disable(); + } + }); - use_filerelocation_fieldset.on('expand', function(bp) { - Ext.brestore.use_filerelocation=true; - where_text.disable(); - useregexp_bp.enable(); - if (useregexp_bp.getValue()) { + useregexp_bp.on('check', function(bp,state) { + if (state) { addsuffix_text.disable(); addprefix_text.disable(); stripprefix_text.disable(); @@ -860,7 +884,7 @@ stripprefix_text.enable(); rwhere_text.disable(); } - }); + }); var media_store = Ext.brestore.media_store = new Ext.data.Store({ proxy: new Ext.data.HttpProxy({ @@ -905,29 +929,72 @@ var form_panel = new Ext.FormPanel({ labelWidth : 75, // label settings here cascade unless overridden - url : 'save-form.php', frame : true, bodyStyle : 'padding:5px 5px 0', width : 250, -// autoHeight : true, +// autoHeight : true, items: [{ - xtype : 'fieldset', - title : 'Media needed', - autoHeight : true, - defaults : {width: 210}, - defaultType : 'textfield', - items :[ media_grid, {xtype: 'button', id: 'reload_media', - text: 'Compute with directories', - tooltip: 'Can take long time...', - handler:reload_media_store}] - }, { - xtype : 'fieldset', - title : 'Restore options', - autoHeight : true, - defaults : {width: 210}, - defaultType : 'textfield', - items :[ rclient_combo, where_text ] - }, use_filerelocation_fieldset], + xtype : 'tabpanel', + autoTabs : true, + activeTab : 0, + border : false, + bodyStyle : 'padding:5px 5px 0', + deferredRender : false, + items: [{ + xtype : 'panel', + title : 'Restore details', + items : [{ + xtype : 'fieldset', + title : 'Restore options', + autoHeight : true, + defaults : {width: 210}, + bodyStyle : 'padding:5px 5px 0', + items :[ rclient_combo, where_text, replace_combo ] + }, { + xtype : 'fieldset', + title : 'Media needed', + autoHeight : true, + defaults : {width: 210}, + bodyStyle : 'padding:5px 5px 0', + items :[ media_grid, + {xtype: 'button', id: 'reload_media', + text: 'Compute with directories', + tooltip: 'Can take long time...', + handler:reload_media_store}] + }], + }, { + xtype : 'panel', + title : 'Advanced', + items : [{ + xtype : 'fieldset', + title : 'File relocation', + autoHeight : true, + defaults : {width: 210}, + bodyStyle : 'padding:5px 5px 0', + items :[ usefilerelocation_bp, stripprefix_text, + addsuffix_text, addprefix_text, + useregexp_bp, rwhere_text ] + },{ + xtype : 'fieldset', + title : 'Other options', + autoHeight : true, + defaults : {width: 210}, + bodyStyle : 'padding:5px 5px 0', + defaultType : 'textfield', + items :[{ + name: 'when_text', + fieldLabel: 'When', + disabled: true, + tooltip: 'YYY-MM-DD HH:MM' + }, { + name: 'prio_text', + fieldLabel: 'Priority', + disabled: true, + tooltip: '1-100' + }] + }] + }] + }], buttons: [{ text: 'Run', Modified: trunk/gui/bweb/technotes-3.0 =================================================================== --- trunk/gui/bweb/technotes-3.0 2008-12-23 11:45:23 UTC (rev 8233) +++ trunk/gui/bweb/technotes-3.0 2008-12-23 13:19:51 UTC (rev 8234) @@ -1,3 +1,5 @@ +23Dec08 +ebl Update final restore options box with tabpanel 18Dec08 ebl Rewrite bresto (bweb restore interface) to work with ExtJS 2.2 Fix lots of bug @@ -40,7 +42,6 @@ - Add new configuration variable to modify default age general.tpl - Add hyperlink to failed job count - TODO: add C.png (with something like zzZZzzz) 25Aug08 ebl Fix #1132 about typo in directory creation in install_bweb This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ri...@us...> - 2009-01-03 19:40:22
|
Revision: 8299 http://bacula.svn.sourceforge.net/bacula/?rev=8299&view=rev Author: ricozz Date: 2009-01-03 19:40:17 +0000 (Sat, 03 Jan 2009) Log Message: ----------- ebl use special icon for Admin, Copy, Migration control jobs Modified Paths: -------------- trunk/gui/bweb/cgi/bresto.pl trunk/gui/bweb/html/bweb.js trunk/gui/bweb/lang/en/tpl/begin.tpl trunk/gui/bweb/lang/en/tpl/display_job.tpl trunk/gui/bweb/lang/en/tpl/display_job_group.tpl trunk/gui/bweb/lang/en/tpl/display_job_zoom.tpl trunk/gui/bweb/lang/en/tpl/overview.tpl trunk/gui/bweb/lang/es/tpl/begin.tpl trunk/gui/bweb/lang/es/tpl/display_job.tpl trunk/gui/bweb/lang/es/tpl/display_job_group.tpl trunk/gui/bweb/lang/es/tpl/display_job_zoom.tpl trunk/gui/bweb/lang/es/tpl/overview.tpl trunk/gui/bweb/lang/fr/tpl/begin.tpl trunk/gui/bweb/lang/fr/tpl/display_job.tpl trunk/gui/bweb/lang/fr/tpl/display_job_group.tpl trunk/gui/bweb/lang/fr/tpl/display_job_zoom.tpl trunk/gui/bweb/lang/fr/tpl/overview.tpl trunk/gui/bweb/lib/Bweb.pm trunk/gui/bweb/technotes-3.0 trunk/gui/bweb/tpl/display_job.tpl trunk/gui/bweb/tpl/display_job_group.tpl trunk/gui/bweb/tpl/display_job_zoom.tpl trunk/gui/bweb/tpl/overview.tpl Added Paths: ----------- trunk/gui/bweb/html/AT.png Removed Paths: ------------- trunk/gui/bweb/technotes-2.3 Modified: trunk/gui/bweb/cgi/bresto.pl =================================================================== --- trunk/gui/bweb/cgi/bresto.pl 2009-01-03 19:07:14 UTC (rev 8298) +++ trunk/gui/bweb/cgi/bresto.pl 2009-01-03 19:40:17 UTC (rev 8299) @@ -563,7 +563,7 @@ } # We have the list of all versions of this file. - # We'll sort it by mtime desc, size, md5, inchanger desc + # We'll sort it by mtime desc, size, md5, inchanger desc, FileId # the rest of the algorithm will be simpler # ('FILE:',filename,jobid,fileindex,mtime,size,inchanger,md5,volname) @versions = sort { $b->[4] <=> $a->[4] @@ -591,7 +591,7 @@ # we never met this one before... $allready_seen_by_md5{$ref->[7] .'-'. $ref->[5]}=1; } - #\xA0Even if it has a md5, we should also work with mtimes + # Even if it has a md5, we should also work with mtimes # We allready have a (better) version next if ( (not $see_all) and $allready_seen_by_mtime{$ref->[4] .'-'. $ref->[5]}); @@ -813,6 +813,7 @@ @jobid = $bvfs->set_job_ids_for_date($args->{client}, $args->{qdate}); } $bvfs->set_curjobids(@jobid); +print STDERR "date=$args->{qdate} currentjobids = ", join(",", @jobid), "\n"; $bvfs->set_limits($args->{limit}, $args->{offset}); if (!scalar(@jobid)) { Added: trunk/gui/bweb/html/AT.png =================================================================== (Binary files differ) Property changes on: trunk/gui/bweb/html/AT.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Modified: trunk/gui/bweb/html/bweb.js =================================================================== --- trunk/gui/bweb/html/bweb.js 2009-01-03 19:07:14 UTC (rev 8298) +++ trunk/gui/bweb/html/bweb.js 2009-01-03 19:40:17 UTC (rev 8299) @@ -309,7 +309,7 @@ return parent; } -function bweb_get_job_img(status, errors) +function bweb_get_job_img(status, errors, type) { var ret; @@ -318,9 +318,12 @@ ret = "W.png"; } else { - ret = "T.png"; + if (type == 'B' || type == 'R') { // Backup or Restore + ret = "T.png"; + } else { + ret = "AT.png"; // Admin, migration, copy etc... + } } - } else { ret = status + ".png"; } Modified: trunk/gui/bweb/lang/en/tpl/begin.tpl =================================================================== --- trunk/gui/bweb/lang/en/tpl/begin.tpl 2009-01-03 19:07:14 UTC (rev 8298) +++ trunk/gui/bweb/lang/en/tpl/begin.tpl 2009-01-03 19:40:17 UTC (rev 8299) @@ -38,7 +38,7 @@ <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> - <li><a href="bweb.pl?action=restore" title="Launch brestore">Restore</a> </li> +<!-- <li><a href="bweb.pl?action=restore" title="Launch brestore">Restore</a> </li> --> <li><a href="/bweb/bresto.html" title="Try bresto">Web Restore</a> </li> </ul> </li> Modified: trunk/gui/bweb/lang/en/tpl/display_job.tpl =================================================================== --- trunk/gui/bweb/lang/en/tpl/display_job.tpl 2009-01-03 19:07:14 UTC (rev 8298) +++ trunk/gui/bweb/lang/en/tpl/display_job.tpl 2009-01-03 19:40:17 UTC (rev 8299) @@ -32,7 +32,9 @@ a.href='?action=job_zoom;jobid=<TMPL_VAR JobId>'; img = document.createElement("IMG"); -img.src=bweb_get_job_img("<TMPL_VAR JobStatus>", <TMPL_VAR joberrors>); +img.src=bweb_get_job_img("<TMPL_VAR JobStatus>", + <TMPL_VAR joberrors>, + "<TMPL_VAR jobtype>"); img.title=jobstatus['<TMPL_VAR JobStatus>']; a.appendChild(img); Modified: trunk/gui/bweb/lang/en/tpl/display_job_group.tpl =================================================================== --- trunk/gui/bweb/lang/en/tpl/display_job_group.tpl 2009-01-03 19:07:14 UTC (rev 8298) +++ trunk/gui/bweb/lang/en/tpl/display_job_group.tpl 2009-01-03 19:40:17 UTC (rev 8299) @@ -38,7 +38,7 @@ jobstatus='T'; } -img.src=bweb_get_job_img(jobstatus, <TMPL_VAR joberrors>); +img.src=bweb_get_job_img(jobstatus, <TMPL_VAR joberrors>, "B"); img.title=jobstatus[jobstatus]; a.appendChild(img); Modified: trunk/gui/bweb/lang/en/tpl/display_job_zoom.tpl =================================================================== --- trunk/gui/bweb/lang/en/tpl/display_job_zoom.tpl 2009-01-03 19:07:14 UTC (rev 8298) +++ trunk/gui/bweb/lang/en/tpl/display_job_zoom.tpl 2009-01-03 19:40:17 UTC (rev 8299) @@ -96,7 +96,9 @@ var data = new Array(); img = document.createElement("IMG"); -img.src=bweb_get_job_img("<TMPL_VAR JobStatus>", <TMPL_VAR joberrors>); +img.src=bweb_get_job_img("<TMPL_VAR JobStatus>", + <TMPL_VAR joberrors>, + '<TMPL_VAR jobtype>'); img.title=jobstatus['<TMPL_VAR JobStatus>']; data.push( new Array( Modified: trunk/gui/bweb/lang/en/tpl/overview.tpl =================================================================== --- trunk/gui/bweb/lang/en/tpl/overview.tpl 2009-01-03 19:07:14 UTC (rev 8298) +++ trunk/gui/bweb/lang/en/tpl/overview.tpl 2009-01-03 19:40:17 UTC (rev 8299) @@ -97,7 +97,7 @@ // a=document.createElement("A"); // create a link to action=job // a.setAttribute('href', "?action=job;client_group=" + name); img=document.createElement("IMG"); - img.setAttribute("src", bweb_get_job_img(infos[j][1],infos[j][2])); + img.setAttribute("src", bweb_get_job_img(infos[j][1],infos[j][2], 'B')); img.setAttribute("title", infos[j][3]); // a.appendChild(img); td.appendChild(img); Modified: trunk/gui/bweb/lang/es/tpl/begin.tpl =================================================================== --- trunk/gui/bweb/lang/es/tpl/begin.tpl 2009-01-03 19:07:14 UTC (rev 8298) +++ trunk/gui/bweb/lang/es/tpl/begin.tpl 2009-01-03 19:40:17 UTC (rev 8299) @@ -38,7 +38,7 @@ <li><a href="bweb.pl?action=job">\xDAltimos Jobs</a> </li> <li><a href="bweb.pl?action=running">Jobs en Ejecuci\xF3n</a> <li><a href="bweb.pl?action=next_job">Pr\xF3ximos Jobs</a> </li> - <li><a href="bweb.pl?action=restore" title="Launch brestore">Recuperaci\xF3n</a> </li> +<!-- <li><a href="bweb.pl?action=restore" title="Launch brestore">Recuperaci\xF3n</a> </li> --> <li><a href="/bweb/bresto.html" title="Try bresto">Web Restore</a> </li> </ul> </li> Modified: trunk/gui/bweb/lang/es/tpl/display_job.tpl =================================================================== --- trunk/gui/bweb/lang/es/tpl/display_job.tpl 2009-01-03 19:07:14 UTC (rev 8298) +++ trunk/gui/bweb/lang/es/tpl/display_job.tpl 2009-01-03 19:40:17 UTC (rev 8299) @@ -32,7 +32,9 @@ a.href='?action=job_zoom;jobid=<TMPL_VAR JobId>'; img = document.createElement("IMG"); -img.src=bweb_get_job_img("<TMPL_VAR JobStatus>", <TMPL_VAR joberrors>); +img.src=bweb_get_job_img("<TMPL_VAR JobStatus>", + <TMPL_VAR joberrors>, + "<TMPL_VAR jobtype>"); img.title=jobstatus['<TMPL_VAR JobStatus>']; a.appendChild(img); Modified: trunk/gui/bweb/lang/es/tpl/display_job_group.tpl =================================================================== --- trunk/gui/bweb/lang/es/tpl/display_job_group.tpl 2009-01-03 19:07:14 UTC (rev 8298) +++ trunk/gui/bweb/lang/es/tpl/display_job_group.tpl 2009-01-03 19:40:17 UTC (rev 8299) @@ -38,7 +38,7 @@ jobstatus='T'; } -img.src=bweb_get_job_img(jobstatus, <TMPL_VAR joberrors>); +img.src=bweb_get_job_img(jobstatus, <TMPL_VAR joberrors>, "B"); img.title=jobstatus[jobstatus]; a.appendChild(img); Modified: trunk/gui/bweb/lang/es/tpl/display_job_zoom.tpl =================================================================== --- trunk/gui/bweb/lang/es/tpl/display_job_zoom.tpl 2009-01-03 19:07:14 UTC (rev 8298) +++ trunk/gui/bweb/lang/es/tpl/display_job_zoom.tpl 2009-01-03 19:40:17 UTC (rev 8299) @@ -96,7 +96,9 @@ var data = new Array(); img = document.createElement("IMG"); -img.src=bweb_get_job_img("<TMPL_VAR JobStatus>", <TMPL_VAR joberrors>); +img.src=bweb_get_job_img("<TMPL_VAR JobStatus>", + <TMPL_VAR joberrors>, + '<TMPL_VAR jobtype>'); img.title=jobstatus['<TMPL_VAR JobStatus>']; data.push( new Array( Modified: trunk/gui/bweb/lang/es/tpl/overview.tpl =================================================================== --- trunk/gui/bweb/lang/es/tpl/overview.tpl 2009-01-03 19:07:14 UTC (rev 8298) +++ trunk/gui/bweb/lang/es/tpl/overview.tpl 2009-01-03 19:40:17 UTC (rev 8299) @@ -97,7 +97,7 @@ // a=document.createElement("A"); // create a link to action=job // a.setAttribute('href', "?action=job;client_group=" + name); img=document.createElement("IMG"); - img.setAttribute("src", bweb_get_job_img(infos[j][1],infos[j][2])); + img.setAttribute("src", bweb_get_job_img(infos[j][1],infos[j][2], 'B')); img.setAttribute("title", infos[j][3]); // a.appendChild(img); td.appendChild(img); Modified: trunk/gui/bweb/lang/fr/tpl/begin.tpl =================================================================== --- trunk/gui/bweb/lang/fr/tpl/begin.tpl 2009-01-03 19:07:14 UTC (rev 8298) +++ trunk/gui/bweb/lang/fr/tpl/begin.tpl 2009-01-03 19:40:17 UTC (rev 8299) @@ -38,7 +38,7 @@ <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> - <li><a href="bweb.pl?action=restore" title="Lancer brestore">Restauration</a> </li> +<!-- <li><a href="bweb.pl?action=restore" title="Lancer brestore">Restauration</a> </li> --> <li><a href="/bweb/bresto.html" title="Try bresto">Web Restore</a> </li> </ul> </li> Modified: trunk/gui/bweb/lang/fr/tpl/display_job.tpl =================================================================== --- trunk/gui/bweb/lang/fr/tpl/display_job.tpl 2009-01-03 19:07:14 UTC (rev 8298) +++ trunk/gui/bweb/lang/fr/tpl/display_job.tpl 2009-01-03 19:40:17 UTC (rev 8299) @@ -32,7 +32,9 @@ a.href='?action=job_zoom;jobid=<TMPL_VAR JobId>'; img = document.createElement("IMG"); -img.src=bweb_get_job_img("<TMPL_VAR JobStatus>", <TMPL_VAR joberrors>); +img.src=bweb_get_job_img("<TMPL_VAR JobStatus>", + <TMPL_VAR joberrors>, + "<TMPL_VAR jobtype>"); img.title=jobstatus['<TMPL_VAR JobStatus>']; a.appendChild(img); Modified: trunk/gui/bweb/lang/fr/tpl/display_job_group.tpl =================================================================== --- trunk/gui/bweb/lang/fr/tpl/display_job_group.tpl 2009-01-03 19:07:14 UTC (rev 8298) +++ trunk/gui/bweb/lang/fr/tpl/display_job_group.tpl 2009-01-03 19:40:17 UTC (rev 8299) @@ -38,7 +38,7 @@ jobstatus='T'; } -img.src=bweb_get_job_img(jobstatus, <TMPL_VAR joberrors>); +img.src=bweb_get_job_img(jobstatus, <TMPL_VAR joberrors>, "B"); img.title=jobstatus[jobstatus]; a.appendChild(img); Modified: trunk/gui/bweb/lang/fr/tpl/display_job_zoom.tpl =================================================================== --- trunk/gui/bweb/lang/fr/tpl/display_job_zoom.tpl 2009-01-03 19:07:14 UTC (rev 8298) +++ trunk/gui/bweb/lang/fr/tpl/display_job_zoom.tpl 2009-01-03 19:40:17 UTC (rev 8299) @@ -96,7 +96,9 @@ var data = new Array(); img = document.createElement("IMG"); -img.src=bweb_get_job_img("<TMPL_VAR JobStatus>", <TMPL_VAR joberrors>); +img.src=bweb_get_job_img("<TMPL_VAR JobStatus>", + <TMPL_VAR joberrors>, + '<TMPL_VAR jobtype>'); img.title=jobstatus['<TMPL_VAR JobStatus>']; data.push( new Array( Modified: trunk/gui/bweb/lang/fr/tpl/overview.tpl =================================================================== --- trunk/gui/bweb/lang/fr/tpl/overview.tpl 2009-01-03 19:07:14 UTC (rev 8298) +++ trunk/gui/bweb/lang/fr/tpl/overview.tpl 2009-01-03 19:40:17 UTC (rev 8299) @@ -97,7 +97,7 @@ // a=document.createElement("A"); // create a link to action=job // a.setAttribute('href', "?action=job;client_group=" + name); img=document.createElement("IMG"); - img.setAttribute("src", bweb_get_job_img(infos[j][1],infos[j][2])); + img.setAttribute("src", bweb_get_job_img(infos[j][1],infos[j][2], 'B')); img.setAttribute("title", infos[j][3]); // a.appendChild(img); td.appendChild(img); Modified: trunk/gui/bweb/lib/Bweb.pm =================================================================== --- trunk/gui/bweb/lib/Bweb.pm 2009-01-03 19:07:14 UTC (rev 8298) +++ trunk/gui/bweb/lib/Bweb.pm 2009-01-03 19:40:17 UTC (rev 8299) @@ -6,7 +6,7 @@ Bweb - A Bacula web interface Bacula® - The Network Backup Solution - Copyright (C) 2000-2007 Free Software Foundation Europe e.V. + Copyright (C) 2000-2009 Free Software Foundation Europe e.V. The main author of Bweb is Eric Bollengier. The main author of Bacula is Kern Sibbald, with contributions from @@ -2426,6 +2426,7 @@ JobFiles AS jobfiles, JobBytes AS jobbytes, JobStatus AS jobstatus, + Type AS jobtype, $self->{sql}->{SEC_TO_TIME}( $self->{sql}->{UNIX_TIMESTAMP}(EndTime) - $self->{sql}->{UNIX_TIMESTAMP}(StartTime)) AS duration, @@ -2477,6 +2478,7 @@ JobBytes AS jobbytes, JobStatus AS jobstatus, JobErrors AS joberrors, + Type AS jobtype, $self->{sql}->{SEC_TO_TIME}( $self->{sql}->{UNIX_TIMESTAMP}(EndTime) - $self->{sql}->{UNIX_TIMESTAMP}(StartTime)) AS duration @@ -2538,7 +2540,7 @@ FROM Job JOIN client_group_member ON (Job.ClientId = client_group_member.ClientId) JOIN client_group USING (client_group_id) - WHERE JobStatus = 'T' + WHERE Type IN ('B', 'R') AND JobStatus = 'T' $where $limit ) AS jobok USING (client_group_name) LEFT JOIN @@ -2550,7 +2552,7 @@ FROM Job JOIN client_group_member ON (Job.ClientId = client_group_member.ClientId) JOIN client_group USING (client_group_id) - WHERE JobStatus IN ('f','E', 'A') + WHERE Type IN ('B', 'R') AND JobStatus IN ('f','E', 'A') $where $limit ) AS joberr USING (client_group_name) Deleted: trunk/gui/bweb/technotes-2.3 =================================================================== --- trunk/gui/bweb/technotes-2.3 2009-01-03 19:07:14 UTC (rev 8298) +++ trunk/gui/bweb/technotes-2.3 2009-01-03 19:40:17 UTC (rev 8299) @@ -1,172 +0,0 @@ -10Dec08 -ebl Fix mysql bug in log output -07Nov08 -ebl Fix statistics page -ebl Add new "Cancel missing job" feature to be able - to mark missing job as failed in history table. -ebl Fix a couple of unchecked arguments. - -06Nov08 -ebl Fix a Bconsole.pm with Expect bug on debian lenny -ebl Fix in storage command - -04Nov08 -ebl Display all groups in display_stat page - -21Oct08 -ebl Fix lot of small bugs - -20Oct08 -ebl Rename job_old to JobHistory - -07Oct08 -ebl Add base64_decode_lstat() function to Mysql - -22Sep08 -ebl Add an option to bgraph that shows each levels as different source - -21Sep08 -ebl - bfileview: - - Add error message for pruned of uncomputed jobs - - Bugfix for looking / - Bweb.pm - - Add support for age=1w2d40m - - Add new configuration variable to modify default age - general.tpl - - Add hyperlink to failed job count - TODO: add C.png (with something like zzZZzzz) - -25Aug08 -ebl Fix #1132 about typo in directory creation in install_bweb - -02Jul08 -ebl Add documentation link on missing job view - -31Jun08 -ebl Fix log display in job zoom view - -22Jun08 -ebl Fix bug in missing job view - -20Jun08 -ebl Update check_bacula.pl documentation - -16Jun08 -ebl Take Recycle volumes from the import/export tool. - -03Jun08 -ebl Add a nagios plugin for bacula script/check_bacula.pl - -02Jun08 -ebl Modify missing job view to handle all kind of job - -28Apr08 -ebl Change We from 45 to 66 hours (from friday 18h to monday 12h) - -10Apr08 -ebl Fix group statistics to use client_group param - -03Apr08 -ebl Tweak progress bar and add Backuped files count to job status -ebl Remove progress bar from restore - -02Apr08 -ebl Add group statistics page - -10Mar08 -ebl Use lineal regression to guess backup progress (postgresql) - -09Mar08 -ebl Add progress bar to backup screen (files and bytes estimation) - -07Mar08 -ebl Fix btime.pl - -15Feb08 -ebl Add bcheck.pl script that check various things in - you bacula setup. - - Try to connect to each client - - Reports you big backup size change - - Reports you useless (or unconfigured) Job - -14Feb08 -ebl Cleanup some SQL - -13Feb08 -ebl Can modify client list group for a specific client -ebl Disable use of Enabled flag in volume mgnt -ebl Add comment field to client_group - -09Jan08 -ebl Adapt btime for bacula 2.2.7 - -05Jan08 -ebl Add basic Device managment (mount, umount, release, status) - -02Jan08 -ebl Fix a couple of bug in btime module -ebl Keep level param between overview pages - -31Dec07 -ebl Add new r_view_group role to view group content - -27Dec07 -ebl Fix a bug in user edition. -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 - -23Dec07 -ebl Each user can have a different template dir (lang). -ebl WARNING: now, bweb/tpl contains main tpl files - for english version, you have to use bweb/lang/en/tpl - -21Dec07 -ebl Use main tpl for editing, and use scripts to - generate other lang. - -19Dec07 -ebl Add a new balloon graphic mode which display - time, bytes and number of files on the same graph - -13Dec07 -ebl Try to extract when= from get_form() more smoothly - -06Dec07 -ebl Add Bweb::Schedule Object to parse show schedule output. - Now, we can make ical events for example... - -05Dec07 -ebl Add truncate to second function -ebl Add btime module - -28Nov07 -ebl Fix the time slice between overview and overview_zoom - -26Nov07 -ebl Fix overview to works with mysql -ebl Add date support to bresto -ebl Make bresto works with mysql (no DISTINCT ON (c1,c2)) -ebl Add the list of media that will be needed for resto - -25Nov07 -ebl Use a automatic rediction when launching a new job -ebl Add new overview view. - -24Nov07 -ebl Add ERR= to error log filter -ebl Set where_field when selecting a directory in the tree -ebl Add a wiki option to integrate a link to jobs documentation - directly in bweb. -ebl Add a tpl field to bweb_user. (To be able to have a tpl for each - user). - -23Nov07 -ebl Add brestore_xxx tables to sql scripts -ebl Add a batch=1 option to bresto.pl to fill bresto tables -ebl Adapt Bconsole.pm to run a restore job -ebl Make bresto.html/js working (you can restore files now) -ebl Improve run job from scheduled view and missing view Modified: trunk/gui/bweb/technotes-3.0 =================================================================== --- trunk/gui/bweb/technotes-3.0 2009-01-03 19:07:14 UTC (rev 8298) +++ trunk/gui/bweb/technotes-3.0 2009-01-03 19:40:17 UTC (rev 8299) @@ -1,3 +1,5 @@ +03Jan09 +ebl Use a special icon for Admin/Migration/Copy etc.. job 23Dec08 ebl Update final restore options box with tabpanel 18Dec08 Modified: trunk/gui/bweb/tpl/display_job.tpl =================================================================== --- trunk/gui/bweb/tpl/display_job.tpl 2009-01-03 19:07:14 UTC (rev 8298) +++ trunk/gui/bweb/tpl/display_job.tpl 2009-01-03 19:40:17 UTC (rev 8299) @@ -32,7 +32,9 @@ a.href='?action=job_zoom;jobid=<TMPL_VAR JobId>'; img = document.createElement("IMG"); -img.src=bweb_get_job_img("<TMPL_VAR JobStatus>", <TMPL_VAR joberrors>); +img.src=bweb_get_job_img("<TMPL_VAR JobStatus>", + <TMPL_VAR joberrors>, + "<TMPL_VAR jobtype>"); img.title=jobstatus['<TMPL_VAR JobStatus>']; a.appendChild(img); Modified: trunk/gui/bweb/tpl/display_job_group.tpl =================================================================== --- trunk/gui/bweb/tpl/display_job_group.tpl 2009-01-03 19:07:14 UTC (rev 8298) +++ trunk/gui/bweb/tpl/display_job_group.tpl 2009-01-03 19:40:17 UTC (rev 8299) @@ -38,7 +38,7 @@ jobstatus='T'; } -img.src=bweb_get_job_img(jobstatus, <TMPL_VAR joberrors>); +img.src=bweb_get_job_img(jobstatus, <TMPL_VAR joberrors>, "B"); img.title=jobstatus[jobstatus]; a.appendChild(img); Modified: trunk/gui/bweb/tpl/display_job_zoom.tpl =================================================================== --- trunk/gui/bweb/tpl/display_job_zoom.tpl 2009-01-03 19:07:14 UTC (rev 8298) +++ trunk/gui/bweb/tpl/display_job_zoom.tpl 2009-01-03 19:40:17 UTC (rev 8299) @@ -96,7 +96,9 @@ var data = new Array(); img = document.createElement("IMG"); -img.src=bweb_get_job_img("<TMPL_VAR JobStatus>", <TMPL_VAR joberrors>); +img.src=bweb_get_job_img("<TMPL_VAR JobStatus>", + <TMPL_VAR joberrors>, + '<TMPL_VAR jobtype>'); img.title=jobstatus['<TMPL_VAR JobStatus>']; data.push( new Array( Modified: trunk/gui/bweb/tpl/overview.tpl =================================================================== --- trunk/gui/bweb/tpl/overview.tpl 2009-01-03 19:07:14 UTC (rev 8298) +++ trunk/gui/bweb/tpl/overview.tpl 2009-01-03 19:40:17 UTC (rev 8299) @@ -97,7 +97,7 @@ // a=document.createElement("A"); // create a link to action=job // a.setAttribute('href', "?action=job;client_group=" + name); img=document.createElement("IMG"); - img.setAttribute("src", bweb_get_job_img(infos[j][1],infos[j][2])); + img.setAttribute("src", bweb_get_job_img(infos[j][1],infos[j][2], 'B')); img.setAttribute("title", infos[j][3]); // a.appendChild(img); td.appendChild(img); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ri...@us...> - 2009-01-03 20:34:55
|
Revision: 8301 http://bacula.svn.sourceforge.net/bacula/?rev=8301&view=rev Author: ricozz Date: 2009-01-03 20:34:42 +0000 (Sat, 03 Jan 2009) Log Message: ----------- ebl Add Job copy type Modified Paths: -------------- trunk/gui/bweb/html/bweb.js trunk/gui/bweb/lang/en/tpl/display_form_job.tpl trunk/gui/bweb/lang/es/tpl/display_form_job.tpl trunk/gui/bweb/lang/fr/tpl/display_form_job.tpl trunk/gui/bweb/tpl/display_form_job.tpl Added Paths: ----------- trunk/gui/bweb/html/CT.png Added: trunk/gui/bweb/html/CT.png =================================================================== (Binary files differ) Property changes on: trunk/gui/bweb/html/CT.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Modified: trunk/gui/bweb/html/bweb.js =================================================================== --- trunk/gui/bweb/html/bweb.js 2009-01-03 20:17:51 UTC (rev 8300) +++ trunk/gui/bweb/html/bweb.js 2009-01-03 20:34:42 UTC (rev 8301) @@ -320,6 +320,10 @@ } else { if (type == 'B' || type == 'R') { // Backup or Restore ret = "T.png"; + + } else if (type == 'C') { + ret = "CT.png"; + } else { ret = "AT.png"; // Admin, migration, copy etc... } Modified: trunk/gui/bweb/lang/en/tpl/display_form_job.tpl =================================================================== --- trunk/gui/bweb/lang/en/tpl/display_form_job.tpl 2009-01-03 20:17:51 UTC (rev 8300) +++ trunk/gui/bweb/lang/en/tpl/display_form_job.tpl 2009-01-03 20:34:42 UTC (rev 8301) @@ -106,6 +106,10 @@ <option id='jobtype_any' value='all type'>Any</option> <option id='jobtype_B' value='B'>Backup</option> <option id='jobtype_R' value='R'>Restore</option> + <option id='jobtype_m' value='m'>Migration</option> + <option id='jobtype_M' value='M'>Migrated job</option> + <option id='jobtype_C' value='C'>Job copy</option> + <option id='jobtype_c' value='c'>Copy</option> <option id='jobtype_D' value='D'>Admin</option> </select> </td> Modified: trunk/gui/bweb/lang/es/tpl/display_form_job.tpl =================================================================== --- trunk/gui/bweb/lang/es/tpl/display_form_job.tpl 2009-01-03 20:17:51 UTC (rev 8300) +++ trunk/gui/bweb/lang/es/tpl/display_form_job.tpl 2009-01-03 20:34:42 UTC (rev 8301) @@ -106,6 +106,10 @@ <option id='jobtype_any' value='all type'>Cualquiera</option> <option id='jobtype_B' value='B'>Backup</option> <option id='jobtype_R' value='R'>Recuperaci\xF3n</option> + <option id='jobtype_m' value='m'>Migration</option> + <option id='jobtype_M' value='M'>Migrated job</option> + <option id='jobtype_C' value='C'>Job copy</option> + <option id='jobtype_c' value='c'>Copy</option> <option id='jobtype_D' value='D'>Admin</option> </select> </td> Modified: trunk/gui/bweb/lang/fr/tpl/display_form_job.tpl =================================================================== --- trunk/gui/bweb/lang/fr/tpl/display_form_job.tpl 2009-01-03 20:17:51 UTC (rev 8300) +++ trunk/gui/bweb/lang/fr/tpl/display_form_job.tpl 2009-01-03 20:34:42 UTC (rev 8301) @@ -106,6 +106,10 @@ <option id='jobtype_any' value='all type'>Tous</option> <option id='jobtype_B' value='B'>Backup</option> <option id='jobtype_R' value='R'>Restauration</option> + <option id='jobtype_m' value='m'>Migration</option> + <option id='jobtype_M' value='M'>Migrated job</option> + <option id='jobtype_C' value='C'>Job copy</option> + <option id='jobtype_c' value='c'>Copy</option> <option id='jobtype_D' value='D'>Admin</option> </select> </td> Modified: trunk/gui/bweb/tpl/display_form_job.tpl =================================================================== --- trunk/gui/bweb/tpl/display_form_job.tpl 2009-01-03 20:17:51 UTC (rev 8300) +++ trunk/gui/bweb/tpl/display_form_job.tpl 2009-01-03 20:34:42 UTC (rev 8301) @@ -106,6 +106,10 @@ <option id='jobtype_any' value='all type'>__Any__</option> <option id='jobtype_B' value='B'>__Backup__</option> <option id='jobtype_R' value='R'>__Restore__</option> + <option id='jobtype_m' value='m'>__Migration__</option> + <option id='jobtype_M' value='M'>__Migrated job__</option> + <option id='jobtype_C' value='C'>__Job copy__</option> + <option id='jobtype_c' value='c'>__Copy__</option> <option id='jobtype_D' value='D'>__Admin__</option> </select> </td> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ri...@us...> - 2009-01-04 10:27:58
|
Revision: 8309 http://bacula.svn.sourceforge.net/bacula/?rev=8309&view=rev Author: ricozz Date: 2009-01-04 10:27:53 +0000 (Sun, 04 Jan 2009) Log Message: ----------- ebl Fix group edition for client ebl cleanup Modified Paths: -------------- trunk/gui/bweb/cgi/bweb.pl trunk/gui/bweb/lang/en/tpl/client_edit.tpl trunk/gui/bweb/lang/en/tpl/client_list.tpl trunk/gui/bweb/lang/es/tpl/client_edit.tpl trunk/gui/bweb/lang/es/tpl/client_list.tpl trunk/gui/bweb/lang/fr/tpl/client_edit.tpl trunk/gui/bweb/lang/fr/tpl/client_list.tpl trunk/gui/bweb/technotes-3.0 trunk/gui/bweb/tpl/client_edit.tpl trunk/gui/bweb/tpl/client_list.tpl Modified: trunk/gui/bweb/cgi/bweb.pl =================================================================== --- trunk/gui/bweb/cgi/bweb.pl 2009-01-04 10:04:00 UTC (rev 8308) +++ trunk/gui/bweb/cgi/bweb.pl 2009-01-04 10:27:53 UTC (rev 8309) @@ -373,7 +373,7 @@ } elsif ($action eq 'client_stats') { foreach my $client (CGI::param('client')) { - if ($client =~ m/$client_re/) { + if ($client =~ $client_re) { $bweb->display_client_stats(clientname => $1, age => $arg->{age}); } @@ -422,7 +422,7 @@ $bweb->can_do('r_client_status'); my $b; foreach my $client (CGI::param('client')) { - if ($client =~ m/$client_re/) { + if ($client =~ $client_re) { $client = $1; $b = new Bconsole(pref => $conf) unless ($b) ; Modified: trunk/gui/bweb/lang/en/tpl/client_edit.tpl =================================================================== --- trunk/gui/bweb/lang/en/tpl/client_edit.tpl 2009-01-04 10:04:00 UTC (rev 8308) +++ trunk/gui/bweb/lang/en/tpl/client_edit.tpl 2009-01-04 10:27:53 UTC (rev 8309) @@ -20,19 +20,19 @@ var header = new Array("Group Name", "Description", "Selection"); var data = new Array(); -var radiobox ; +var chkbox ; <TMPL_LOOP client_group> -radiobox = document.createElement('INPUT'); -radiobox.type = 'radio'; -radiobox.name = 'client_group'; -radiobox.value = '<TMPL_VAR client_group_name>'; -radiobox.checked = <TMPL_IF here>1<TMPL_ELSE>0</TMPL_IF>; +chkbox = document.createElement('INPUT'); +chkbox.type = 'checkbox'; +chkbox.name = 'client_group'; +chkbox.value = '<TMPL_VAR client_group_name>'; +chkbox.checked = <TMPL_IF here>1<TMPL_ELSE>0</TMPL_IF>; data.push( new Array( "<TMPL_VAR client_group_name>", "<TMPL_VAR comment>", - radiobox + chkbox ) ) ; </TMPL_LOOP> Modified: trunk/gui/bweb/lang/en/tpl/client_list.tpl =================================================================== --- trunk/gui/bweb/lang/en/tpl/client_list.tpl 2009-01-04 10:04:00 UTC (rev 8308) +++ trunk/gui/bweb/lang/en/tpl/client_list.tpl 2009-01-04 10:27:53 UTC (rev 8309) @@ -15,7 +15,7 @@ <button type="submit" class="bp" name='action' value='groups' title='View client groups'> <img src='/bweb/zoom.png' alt=''>View groups</button> <button type="submit" class="bp" name='action' value='client_status' title='Show client status'> <img src='/bweb/zoom.png' alt=''>Status </button> <button type="submit" class="bp" name='action' value='client_stats' title='Client stats'> <img src='/bweb/chart.png' alt=''>Stats </button> - <button type="submit" class="bp" name='action' value='client_edit' title='Client groups'> <img src='/bweb/edit.png' alt=''>Edit </button> + <button type="submit" class="bp" name='action' value='client_edit' title='Client groups'> <img src='/bweb/edit.png' alt=''>Edit groups </button> </div> </form> Modified: trunk/gui/bweb/lang/es/tpl/client_edit.tpl =================================================================== --- trunk/gui/bweb/lang/es/tpl/client_edit.tpl 2009-01-04 10:04:00 UTC (rev 8308) +++ trunk/gui/bweb/lang/es/tpl/client_edit.tpl 2009-01-04 10:27:53 UTC (rev 8309) @@ -20,19 +20,19 @@ var header = new Array("Group Name", "Description", "Selection"); var data = new Array(); -var radiobox ; +var chkbox ; <TMPL_LOOP client_group> -radiobox = document.createElement('INPUT'); -radiobox.type = 'radio'; -radiobox.name = 'client_group'; -radiobox.value = '<TMPL_VAR client_group_name>'; -radiobox.checked = <TMPL_IF here>1<TMPL_ELSE>0</TMPL_IF>; +chkbox = document.createElement('INPUT'); +chkbox.type = 'checkbox'; +chkbox.name = 'client_group'; +chkbox.value = '<TMPL_VAR client_group_name>'; +chkbox.checked = <TMPL_IF here>1<TMPL_ELSE>0</TMPL_IF>; data.push( new Array( "<TMPL_VAR client_group_name>", "<TMPL_VAR comment>", - radiobox + chkbox ) ) ; </TMPL_LOOP> Modified: trunk/gui/bweb/lang/es/tpl/client_list.tpl =================================================================== --- trunk/gui/bweb/lang/es/tpl/client_list.tpl 2009-01-04 10:04:00 UTC (rev 8308) +++ trunk/gui/bweb/lang/es/tpl/client_list.tpl 2009-01-04 10:27:53 UTC (rev 8309) @@ -15,7 +15,7 @@ <button type="submit" class="bp" name='action' value='groups' title='View client groups'> <img src='/bweb/zoom.png' alt=''>View groups</button> <button type="submit" class="bp" name='action' value='client_status' title='Mostrar estado del cliente'> <img src='/bweb/zoom.png' alt=''>Estado </button> <button type="submit" class="bp" name='action' value='client_stats' title='Estad\xEDsticas del Cliente'> <img src='/bweb/chart.png' alt=''>Estado </button> - <button type="submit" class="bp" name='action' value='client_edit' title='Client groups'> <img src='/bweb/edit.png' alt=''>Editar </button> + <button type="submit" class="bp" name='action' value='client_edit' title='Client groups'> <img src='/bweb/edit.png' alt=''>Edit groups </button> </div> </form> Modified: trunk/gui/bweb/lang/fr/tpl/client_edit.tpl =================================================================== --- trunk/gui/bweb/lang/fr/tpl/client_edit.tpl 2009-01-04 10:04:00 UTC (rev 8308) +++ trunk/gui/bweb/lang/fr/tpl/client_edit.tpl 2009-01-04 10:27:53 UTC (rev 8309) @@ -20,19 +20,19 @@ var header = new Array("Group Name", "Description", "S\xE9lection"); var data = new Array(); -var radiobox ; +var chkbox ; <TMPL_LOOP client_group> -radiobox = document.createElement('INPUT'); -radiobox.type = 'radio'; -radiobox.name = 'client_group'; -radiobox.value = '<TMPL_VAR client_group_name>'; -radiobox.checked = <TMPL_IF here>1<TMPL_ELSE>0</TMPL_IF>; +chkbox = document.createElement('INPUT'); +chkbox.type = 'checkbox'; +chkbox.name = 'client_group'; +chkbox.value = '<TMPL_VAR client_group_name>'; +chkbox.checked = <TMPL_IF here>1<TMPL_ELSE>0</TMPL_IF>; data.push( new Array( "<TMPL_VAR client_group_name>", "<TMPL_VAR comment>", - radiobox + chkbox ) ) ; </TMPL_LOOP> Modified: trunk/gui/bweb/lang/fr/tpl/client_list.tpl =================================================================== --- trunk/gui/bweb/lang/fr/tpl/client_list.tpl 2009-01-04 10:04:00 UTC (rev 8308) +++ trunk/gui/bweb/lang/fr/tpl/client_list.tpl 2009-01-04 10:27:53 UTC (rev 8309) @@ -15,7 +15,7 @@ <button type="submit" class="bp" name='action' value='groups' title='View client groups'> <img src='/bweb/zoom.png' alt=''>View groups</button> <button type="submit" class="bp" name='action' value='client_status' title='Statistiques'> <img src='/bweb/zoom.png' alt=''>Statut </button> <button type="submit" class="bp" name='action' value='client_stats' title='Statistiques'> <img src='/bweb/chart.png' alt=''>Stats </button> - <button type="submit" class="bp" name='action' value='client_edit' title='Client groups'> <img src='/bweb/edit.png' alt=''>Modifier </button> + <button type="submit" class="bp" name='action' value='client_edit' title='Client groups'> <img src='/bweb/edit.png' alt=''>Edit groups </button> </div> </form> Modified: trunk/gui/bweb/technotes-3.0 =================================================================== --- trunk/gui/bweb/technotes-3.0 2009-01-04 10:04:00 UTC (rev 8308) +++ trunk/gui/bweb/technotes-3.0 2009-01-04 10:27:53 UTC (rev 8309) @@ -1,3 +1,5 @@ +04Jan09 +ebl Fix group edition for client 03Jan09 ebl Use a special icon for Admin/Migration/Copy etc.. job 23Dec08 Modified: trunk/gui/bweb/tpl/client_edit.tpl =================================================================== --- trunk/gui/bweb/tpl/client_edit.tpl 2009-01-04 10:04:00 UTC (rev 8308) +++ trunk/gui/bweb/tpl/client_edit.tpl 2009-01-04 10:27:53 UTC (rev 8309) @@ -20,19 +20,19 @@ var header = new Array("__Group Name__", "__Description__", "__Selection__"); var data = new Array(); -var radiobox ; +var chkbox ; <TMPL_LOOP client_group> -radiobox = document.createElement('INPUT'); -radiobox.type = 'radio'; -radiobox.name = 'client_group'; -radiobox.value = '<TMPL_VAR client_group_name>'; -radiobox.checked = <TMPL_IF here>1<TMPL_ELSE>0</TMPL_IF>; +chkbox = document.createElement('INPUT'); +chkbox.type = 'checkbox'; +chkbox.name = 'client_group'; +chkbox.value = '<TMPL_VAR client_group_name>'; +chkbox.checked = <TMPL_IF here>1<TMPL_ELSE>0</TMPL_IF>; data.push( new Array( "<TMPL_VAR client_group_name>", "<TMPL_VAR comment>", - radiobox + chkbox ) ) ; </TMPL_LOOP> Modified: trunk/gui/bweb/tpl/client_list.tpl =================================================================== --- trunk/gui/bweb/tpl/client_list.tpl 2009-01-04 10:04:00 UTC (rev 8308) +++ trunk/gui/bweb/tpl/client_list.tpl 2009-01-04 10:27:53 UTC (rev 8309) @@ -15,7 +15,7 @@ <button type="submit" class="bp" name='action' value='groups' title='__View client groups__'> <img src='/bweb/zoom.png' alt=''>__View groups__</button> <button type="submit" class="bp" name='action' value='client_status' title='__Show client status__'> <img src='/bweb/zoom.png' alt=''>__Status__ </button> <button type="submit" class="bp" name='action' value='client_stats' title='__Client stats__'> <img src='/bweb/chart.png' alt=''>__Stats__ </button> - <button type="submit" class="bp" name='action' value='client_edit' title='__Client groups__'> <img src='/bweb/edit.png' alt=''>__Edit__ </button> + <button type="submit" class="bp" name='action' value='client_edit' title='__Client groups__'> <img src='/bweb/edit.png' alt=''>__Edit groups__ </button> </div> </form> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ri...@us...> - 2009-01-12 22:27:41
|
Revision: 8364 http://bacula.svn.sourceforge.net/bacula/?rev=8364&view=rev Author: ricozz Date: 2009-01-12 21:32:15 +0000 (Mon, 12 Jan 2009) Log Message: ----------- ebl first cut of limit/offset feature for file list Modified Paths: -------------- trunk/gui/bweb/html/bresto.js trunk/gui/bweb/lib/Bweb.pm Modified: trunk/gui/bweb/html/bresto.js =================================================================== --- trunk/gui/bweb/html/bresto.js 2009-01-12 16:38:13 UTC (rev 8363) +++ trunk/gui/bweb/html/bresto.js 2009-01-12 21:32:15 UTC (rev 8364) @@ -50,12 +50,15 @@ Ext.brestore.rclient=''; // selected client for resto Ext.brestore.storage=''; // selected storage for resto Ext.brestore.path=''; // current path (without user location) +Ext.brestore.pathid=0; // current pathid Ext.brestore.root_path=''; // user location Ext.brestore.media_store; // media store Ext.brestore.option_vosb = false; Ext.brestore.option_vafv = false; Ext.brestore.dlglaunch; Ext.brestore.use_filerelocation=false; +Ext.brestore.limit = 5000; +Ext.brestore.offset = 0; function get_node_path(node) { var temp=''; @@ -80,6 +83,8 @@ } else { baseParams['date'] = Ext.brestore.jobdate; } + baseParams['offset'] = Ext.brestore.offset; + baseParams['limit'] = Ext.brestore.limit; return baseParams; } @@ -131,6 +136,8 @@ var click_cb = function(node, event) { Ext.brestore.path = get_node_path(node); + Ext.brestore.pathid = node.id; + Ext.brestore.offset=0; where_field.setValue(Ext.brestore.path); file_store.removeAll(); file_versions_store.removeAll(); @@ -214,6 +221,78 @@ // by default columns are sortable cm.defaultSortable = true; + function update_limits() { + Ext.get('txt-file-start').setValue(Ext.brestore.offset); + Ext.get('txt-file-limit').setValue(Ext.brestore.limit); + } + + var file_paging = new Ext.Toolbar({ + items: [ + { + id: 'bp-file-prev', + icon: '/bweb/ext/resources/images/default/grid/page-prev.gif', + cls: '.x-btn-icon', + tooltip: 'Last', + handler: function() { + if (Ext.brestore.offset > 0) { + Ext.brestore.offset -= Ext.brestore.limit; + if (Ext.brestore.offset < 0) { + Ext.brestore.offset=0; + } + file_store.removeAll(); + file_versions_store.removeAll(); + file_store.load({params:init_params({action: 'list_files', + path:Ext.brestore.path, + node:Ext.brestore.pathid}) + }); + update_limits(); + } + } + }, { + id: 'txt-file-start', + xtype: 'numberfield', + width: 60, + value: Ext.brestore.offset + }, { + xtype: 'tbtext', + text: '-' + }, { + id: 'txt-file-limit', + xtype: 'numberfield', + width: 60, + value: Ext.brestore.limit + }, { + id: 'bp-file-next', + icon: '/bweb/ext/resources/images/default/grid/page-next.gif', + cls: '.x-btn-icon', + tooltip: 'Next', + handler: function(a,b,c) { + if (file_store.getCount() >= Ext.brestore.limit) { + Ext.brestore.offset += Ext.brestore.limit; + file_store.removeAll(); + file_versions_store.removeAll(); + file_store.load({params:init_params({action: 'list_files', + path:Ext.brestore.path, + node:Ext.brestore.pathid}) + }); + update_limits(); + } + } + }, '->', { + id: 'txt-file-pattern', + xtype: 'textfield', + text: 'pattern...' + }, { + id: 'bp-file-match', + icon: '/bweb/ext/resources/images/default/grid/refresh.gif', + cls: '.x-btn-icon', + tooltip: 'Refresh', + handler: function(a,b,c) { + } + } + ] + }); + var file_grid = new Ext.grid.GridPanel({ id: 'div-files', store: file_store, @@ -362,7 +441,7 @@ proxy: new Ext.data.HttpProxy({ url: '/cgi-bin/bweb/bresto.pl', method: 'GET', - params:{offset:0, limit:50 } + params:{start:0, limit:50 } }), reader: new Ext.data.ArrayReader({}, @@ -498,6 +577,7 @@ Ext.brestore.jobid=0; Ext.brestore.jobdate = ''; Ext.brestore.root_path=''; + Ext.brestore.offset=0; job_combo.clearValue(); file_store.removeAll(); file_versions_store.removeAll(); @@ -516,7 +596,7 @@ proxy: new Ext.data.HttpProxy({ url: '/cgi-bin/bweb/bresto.pl', method: 'GET', - params:{offset:0, limit:50 } + params:{start:0, limit:50 } }), reader: new Ext.data.ArrayReader({ @@ -668,7 +748,8 @@ title: 'Directory content', region: 'center', minSize: '33%', - items: file_grid + items: file_grid, + bbar: file_paging }, { title: 'File version', region: 'east', @@ -890,7 +971,7 @@ proxy: new Ext.data.HttpProxy({ url: '/cgi-bin/bweb/bresto.pl', method: 'GET', - params:{offset:0, limit:50 } + params:{start:0, limit:50 } }), reader: new Ext.data.ArrayReader({ Modified: trunk/gui/bweb/lib/Bweb.pm =================================================================== --- trunk/gui/bweb/lib/Bweb.pm 2009-01-12 16:38:13 UTC (rev 8363) +++ trunk/gui/bweb/lib/Bweb.pm 2009-01-12 21:32:15 UTC (rev 8364) @@ -1757,6 +1757,7 @@ limit => 100, cost => 10, offset => 0, + start => 0, width => 640, height => 480, jobid => 0, This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ri...@us...> - 2009-01-13 16:55:05
|
Revision: 8366 http://bacula.svn.sourceforge.net/bacula/?rev=8366&view=rev Author: ricozz Date: 2009-01-13 16:55:00 +0000 (Tue, 13 Jan 2009) Log Message: ----------- ebl Fix bug when updating Purged volume parameters Modified Paths: -------------- trunk/gui/bweb/lang/en/tpl/update_media.tpl trunk/gui/bweb/lang/es/tpl/update_media.tpl trunk/gui/bweb/lang/fr/tpl/update_media.tpl trunk/gui/bweb/technotes-3.0 trunk/gui/bweb/tpl/update_media.tpl Modified: trunk/gui/bweb/lang/en/tpl/update_media.tpl =================================================================== --- trunk/gui/bweb/lang/en/tpl/update_media.tpl 2009-01-13 08:34:16 UTC (rev 8365) +++ trunk/gui/bweb/lang/en/tpl/update_media.tpl 2009-01-13 16:55:00 UTC (rev 8366) @@ -28,6 +28,7 @@ <option value='Read-Only'>Read-Only</option> <option value='Used'>Used</option> <option value='Recycle'>Recycle</option> + <option value='Purged'>Purged</option> </select> </td> </tr> Modified: trunk/gui/bweb/lang/es/tpl/update_media.tpl =================================================================== --- trunk/gui/bweb/lang/es/tpl/update_media.tpl 2009-01-13 08:34:16 UTC (rev 8365) +++ trunk/gui/bweb/lang/es/tpl/update_media.tpl 2009-01-13 16:55:00 UTC (rev 8366) @@ -28,6 +28,7 @@ <option value='Read-Only'>Read-Only</option> <option value='Used'>Used</option> <option value='Recycle'>Recycle</option> + <option value='Purged'>Purged</option> </select> </td> </tr> Modified: trunk/gui/bweb/lang/fr/tpl/update_media.tpl =================================================================== --- trunk/gui/bweb/lang/fr/tpl/update_media.tpl 2009-01-13 08:34:16 UTC (rev 8365) +++ trunk/gui/bweb/lang/fr/tpl/update_media.tpl 2009-01-13 16:55:00 UTC (rev 8366) @@ -28,6 +28,7 @@ <option value='Read-Only'>Read-Only</option> <option value='Used'>Used</option> <option value='Recycle'>Recycle</option> + <option value='Purged'>Purged</option> </select> </td> </tr> Modified: trunk/gui/bweb/technotes-3.0 =================================================================== --- trunk/gui/bweb/technotes-3.0 2009-01-13 08:34:16 UTC (rev 8365) +++ trunk/gui/bweb/technotes-3.0 2009-01-13 16:55:00 UTC (rev 8366) @@ -1,3 +1,6 @@ +13Jan09 +ebl Add Purged status to update_media form even if the + update volume console doesn't permit it. 04Jan09 ebl Fix group edition for client 03Jan09 Modified: trunk/gui/bweb/tpl/update_media.tpl =================================================================== --- trunk/gui/bweb/tpl/update_media.tpl 2009-01-13 08:34:16 UTC (rev 8365) +++ trunk/gui/bweb/tpl/update_media.tpl 2009-01-13 16:55:00 UTC (rev 8366) @@ -28,6 +28,7 @@ <option value='Read-Only'>Read-Only</option> <option value='Used'>Used</option> <option value='Recycle'>Recycle</option> + <option value='Purged'>Purged</option> </select> </td> </tr> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ri...@us...> - 2009-01-13 22:54:02
|
Revision: 8367 http://bacula.svn.sourceforge.net/bacula/?rev=8367&view=rev Author: ricozz Date: 2009-01-13 22:19:34 +0000 (Tue, 13 Jan 2009) Log Message: ----------- ebl Add limit/offset and pattern selection Modified Paths: -------------- trunk/gui/bweb/cgi/bresto.pl trunk/gui/bweb/html/bresto.js trunk/gui/bweb/lib/Bweb.pm Modified: trunk/gui/bweb/cgi/bresto.pl =================================================================== --- trunk/gui/bweb/cgi/bresto.pl 2009-01-13 16:55:00 UTC (rev 8366) +++ trunk/gui/bweb/cgi/bresto.pl 2009-01-13 22:19:34 UTC (rev 8367) @@ -125,6 +125,12 @@ $self->{offset} = $offset || 0; } +sub set_pattern +{ + my ($self, $pattern) = @_; + $self->{pattern} = $pattern; +} + # fill brestore_xxx tables for speedup sub update_cache { @@ -347,6 +353,10 @@ my $inclause = $self->{curjobids}; my $inpath = $self->{cwdid}; + my $filter = ''; + if ($self->{pattern}) { + $filter = " AND Filename.Name $self->{sql}->{MATCH} $self->{pattern} "; + } my $query = "SELECT File.FilenameId, listfiles.id, listfiles.Name, File.LStat, File.JobId @@ -357,6 +367,7 @@ AND Filename.Name != '' AND File.PathId = $inpath AND File.JobId IN ($inclause) + $filter GROUP BY Filename.Name ORDER BY Filename.Name LIMIT $self->{limit} OFFSET $self->{offset} ) AS listfiles @@ -755,7 +766,7 @@ my $action = CGI::param('action') || ''; my $args = $bvfs->get_form('pathid', 'filenameid', 'fileid', 'qdate', - 'limit', 'offset', 'client'); + 'limit', 'offset', 'client', 'qpattern'); if ($action eq 'batch') { $bvfs->update_cache(); @@ -839,6 +850,11 @@ } $bvfs->ch_dir($pathid); +# permit to use a regex filter +if ($args->{qpattern}) { + $bvfs->set_pattern($args->{qpattern}); +} + if ($action eq 'restore') { # TODO: pouvoir choisir le replace et le jobname Modified: trunk/gui/bweb/html/bresto.js =================================================================== --- trunk/gui/bweb/html/bresto.js 2009-01-13 16:55:00 UTC (rev 8366) +++ trunk/gui/bweb/html/bresto.js 2009-01-13 22:19:34 UTC (rev 8367) @@ -56,8 +56,9 @@ Ext.brestore.option_vosb = false; Ext.brestore.option_vafv = false; Ext.brestore.dlglaunch; +Ext.brestore.fpattern; Ext.brestore.use_filerelocation=false; -Ext.brestore.limit = 5000; +Ext.brestore.limit = 2000; Ext.brestore.offset = 0; function get_node_path(node) { @@ -76,16 +77,21 @@ function init_params(baseParams) { - baseParams['client']= Ext.brestore.client; - - if (Ext.brestore.option_vosb) { - baseParams['jobid'] = Ext.brestore.jobid; - } else { - baseParams['date'] = Ext.brestore.jobdate; - } - baseParams['offset'] = Ext.brestore.offset; - baseParams['limit'] = Ext.brestore.limit; - return baseParams; + baseParams['client']= Ext.brestore.client; + + if (Ext.brestore.option_vosb) { + baseParams['jobid'] = Ext.brestore.jobid; + } else { + baseParams['date'] = Ext.brestore.jobdate; + } + baseParams['offset'] = Ext.brestore.offset; + baseParams['limit'] = Ext.brestore.limit; + if (Ext.brestore.fpattern) { + if (RegExp(Ext.brestore.fpattern)) { + baseParams['pattern'] = Ext.brestore.fpattern; + } + } + return baseParams; } function captureEvents(observable) { @@ -138,9 +144,9 @@ Ext.brestore.path = get_node_path(node); Ext.brestore.pathid = node.id; Ext.brestore.offset=0; + Ext.brestore.fpattern = Ext.get('txt-file-pattern').getValue(); where_field.setValue(Ext.brestore.path); - file_store.removeAll(); - file_versions_store.removeAll(); + update_limits(); file_store.load({params:init_params({action: 'list_files', path:Ext.brestore.path, node:node.id}) @@ -221,78 +227,113 @@ // by default columns are sortable cm.defaultSortable = true; + // reset limits function update_limits() { - Ext.get('txt-file-offset').setValue(Ext.brestore.offset); - Ext.get('txt-file-limit').setValue(Ext.brestore.limit); + Ext.get('txt-file-offset').dom.value = Ext.brestore.offset; + Ext.get('txt-file-limit').dom.value = Ext.brestore.offset + Ext.brestore.limit; } - var file_paging = new Ext.Toolbar({ - items: [ - { - id: 'bp-file-prev', - icon: '/bweb/ext/resources/images/default/grid/page-prev.gif', - cls: '.x-btn-icon', - tooltip: 'Last', - handler: function() { - if (Ext.brestore.offset > 0) { - Ext.brestore.offset -= Ext.brestore.limit; - if (Ext.brestore.offset < 0) { - Ext.brestore.offset=0; - } - file_store.removeAll(); - file_versions_store.removeAll(); - file_store.load({params:init_params({action: 'list_files', - path:Ext.brestore.path, - node:Ext.brestore.pathid}) - }); - update_limits(); - } + // get limits from user input + function update_user_limits() { + var off = parseInt(Ext.get('txt-file-offset').getValue()); + var lim = parseInt(Ext.get('txt-file-limit').getValue()); + if (off >= 0 && lim >= 0 && off < lim) { + Ext.brestore.offset = off; + Ext.brestore.limit = lim - off; + } else { + update_limits(); + } + Ext.brestore.fpattern = Ext.get('txt-file-pattern').getValue(); + } + + var file_paging_next = new Ext.Toolbar.Button({ + id: 'bp-file-next', + icon: '/bweb/ext/resources/images/default/grid/page-next.gif', + cls: '.x-btn-icon', + tooltip: 'Next', + handler: function(a,b,c) { + update_user_limits(); + if (file_store.getCount() >= Ext.brestore.limit) { + Ext.brestore.offset += Ext.brestore.limit; + file_store.removeAll(); + file_versions_store.removeAll(); + file_store.load({params:init_params({action: 'list_files', + path:Ext.brestore.path, + node:Ext.brestore.pathid}) + }); + } + } + }); + var file_paging_prev = new Ext.Toolbar.Button({ + id: 'bp-file-prev', + icon: '/bweb/ext/resources/images/default/grid/page-prev.gif', + cls: '.x-btn-icon', + tooltip: 'Last', + handler: function() { + update_user_limits(); + if (Ext.brestore.offset > 0) { + Ext.brestore.offset -= Ext.brestore.limit; + if (Ext.brestore.offset < 0) { + Ext.brestore.offset=0; } - }, { - id: 'txt-file-offset', - xtype: 'numberfield', - width: 60, - value: Ext.brestore.offset - }, { - xtype: 'tbtext', - text: '-' - }, { - id: 'txt-file-limit', - xtype: 'numberfield', - width: 60, - value: Ext.brestore.limit - }, { - id: 'bp-file-next', - icon: '/bweb/ext/resources/images/default/grid/page-next.gif', - cls: '.x-btn-icon', - tooltip: 'Next', - handler: function(a,b,c) { - if (file_store.getCount() >= Ext.brestore.limit) { - Ext.brestore.offset += Ext.brestore.limit; - file_store.removeAll(); - file_versions_store.removeAll(); - file_store.load({params:init_params({action: 'list_files', - path:Ext.brestore.path, - node:Ext.brestore.pathid}) - }); - update_limits(); - } - } - }, '->', { - id: 'txt-file-pattern', - xtype: 'textfield', - text: 'pattern...' - }, { - id: 'bp-file-match', - icon: '/bweb/ext/resources/images/default/grid/refresh.gif', - cls: '.x-btn-icon', - tooltip: 'Refresh', - handler: function(a,b,c) { - } + file_store.removeAll(); + file_versions_store.removeAll(); + file_store.load({params:init_params({action: 'list_files', + path:Ext.brestore.path, + node:Ext.brestore.pathid}) + }); } - ] + } }); - + var file_paging_pattern = new Ext.form.TextField({ + enableKeyEvents: true, + id: 'txt-file-pattern', + text: 'pattern...' + }); + file_paging_pattern.on('keyup', function(a, e) { + if (e.getKey() == e. ENTER) { + var re; + var pattern = file_paging_pattern.getValue(); + if (pattern) { + re = new RegExp(pattern, "i"); + } + if (re) { + file_store.filter('name', re); + } else { + file_store.clearFilter(false); + } + } + }); + var file_paging = new Ext.Toolbar({ + items: [file_paging_prev, { + id: 'txt-file-offset', + xtype: 'numberfield', + width: 60, + value: Ext.brestore.offset + }, { + xtype: 'tbtext', + text: '-' + }, { + id: 'txt-file-limit', + xtype: 'numberfield', + width: 60, + value: Ext.brestore.limit + }, file_paging_next, '->', file_paging_pattern, { + id: 'bp-file-match', + icon: '/bweb/ext/resources/images/default/grid/refresh.gif', + cls: '.x-btn-icon', + tooltip: 'Refresh', + handler: function(a,b,c) { + update_user_limits(); + file_store.removeAll(); + file_versions_store.removeAll(); + file_store.load({params:init_params({action: 'list_files', + path:Ext.brestore.path, + node:Ext.brestore.pathid}) + }); + } + }] + }); var file_grid = new Ext.grid.GridPanel({ id: 'div-files', store: file_store, @@ -308,14 +349,31 @@ cmargins: '5 0 0 0' }); Ext.brestore.file_grid=file_grid; -// captureEvents(file_grid); -// captureEvents(file_store); // when we reload the view, // we clear the file version box file_store.on('beforeload', function(e) { + file_store.removeAll(); file_versions_store.removeAll(); return true; }); + + // If we have more than limit elements, we can + // display the next button + file_store.on('load', function(e,o) { + update_limits(); + if (e.getCount() >= Ext.brestore.limit) { + file_paging_next.enable(); + } else { + file_paging_next.disable(); + } + + if (Ext.brestore.offset) { + file_paging_prev.enable(); + } else { + file_paging_prev.disable(); + } + + }); /* * file_store.on('loadexception', function(obj, options, response, e){ Modified: trunk/gui/bweb/lib/Bweb.pm =================================================================== --- trunk/gui/bweb/lib/Bweb.pm 2009-01-13 16:55:00 UTC (rev 8366) +++ trunk/gui/bweb/lib/Bweb.pm 2009-01-13 22:19:34 UTC (rev 8367) @@ -3088,15 +3088,15 @@ if (not $self->{info}->{enable_security}) { return 1; } - # admin is a special user that can do everything - if ($self->{loginname} eq 'admin') { - return 1; - } if (!$self->{loginname}) { $self->error("Can't get your login name"); $self->display_end(); exit 0; } + # admin is a special user that can do everything + if ($self->{loginname} eq 'admin') { + return 1; + } # already fill if (defined $self->{security}) { return 1; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ri...@us...> - 2009-01-15 09:56:43
|
Revision: 8369 http://bacula.svn.sourceforge.net/bacula/?rev=8369&view=rev Author: ricozz Date: 2009-01-15 09:56:29 +0000 (Thu, 15 Jan 2009) Log Message: ----------- ebl don't send volstatus=Purged to the server to avoid error message Modified Paths: -------------- trunk/gui/bweb/lang/en/tpl/update_media.tpl trunk/gui/bweb/lang/es/tpl/update_media.tpl trunk/gui/bweb/lang/fr/tpl/update_media.tpl trunk/gui/bweb/tpl/update_media.tpl Modified: trunk/gui/bweb/lang/en/tpl/update_media.tpl =================================================================== --- trunk/gui/bweb/lang/en/tpl/update_media.tpl 2009-01-14 00:09:26 UTC (rev 8368) +++ trunk/gui/bweb/lang/en/tpl/update_media.tpl 2009-01-15 09:56:29 UTC (rev 8369) @@ -28,7 +28,7 @@ <option value='Read-Only'>Read-Only</option> <option value='Used'>Used</option> <option value='Recycle'>Recycle</option> - <option value='Purged'>Purged</option> + <option value=''>Purged</option> </select> </td> </tr> Modified: trunk/gui/bweb/lang/es/tpl/update_media.tpl =================================================================== --- trunk/gui/bweb/lang/es/tpl/update_media.tpl 2009-01-14 00:09:26 UTC (rev 8368) +++ trunk/gui/bweb/lang/es/tpl/update_media.tpl 2009-01-15 09:56:29 UTC (rev 8369) @@ -28,7 +28,7 @@ <option value='Read-Only'>Read-Only</option> <option value='Used'>Used</option> <option value='Recycle'>Recycle</option> - <option value='Purged'>Purged</option> + <option value=''>Purged</option> </select> </td> </tr> Modified: trunk/gui/bweb/lang/fr/tpl/update_media.tpl =================================================================== --- trunk/gui/bweb/lang/fr/tpl/update_media.tpl 2009-01-14 00:09:26 UTC (rev 8368) +++ trunk/gui/bweb/lang/fr/tpl/update_media.tpl 2009-01-15 09:56:29 UTC (rev 8369) @@ -28,7 +28,7 @@ <option value='Read-Only'>Read-Only</option> <option value='Used'>Used</option> <option value='Recycle'>Recycle</option> - <option value='Purged'>Purged</option> + <option value=''>Purged</option> </select> </td> </tr> Modified: trunk/gui/bweb/tpl/update_media.tpl =================================================================== --- trunk/gui/bweb/tpl/update_media.tpl 2009-01-14 00:09:26 UTC (rev 8368) +++ trunk/gui/bweb/tpl/update_media.tpl 2009-01-15 09:56:29 UTC (rev 8369) @@ -28,7 +28,7 @@ <option value='Read-Only'>Read-Only</option> <option value='Used'>Used</option> <option value='Recycle'>Recycle</option> - <option value='Purged'>Purged</option> + <option value=''>Purged</option> </select> </td> </tr> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |