r8507@llin: dpavlin | 2005-10-13 20:32:53 +0200
authordpavlin <dpavlin@8392b6e1-25fa-0310-8288-cc32f8e212ea>
Thu, 13 Oct 2005 18:33:00 +0000 (18:33 +0000)
committerdpavlin <dpavlin@8392b6e1-25fa-0310-8288-cc32f8e212ea>
Thu, 13 Oct 2005 18:33:00 +0000 (18:33 +0000)
 added support for multiple parts to user interface

git-svn-id: svn+ssh://llin/home/dpavlin/private/svn/BackupPC/trunk@197 8392b6e1-25fa-0310-8288-cc32f8e212ea

lib/BackupPC/CGI/BurnMedia.pm
lib/BackupPC/SearchLib.pm

index 922485a..e01f9cb 100644 (file)
@@ -38,18 +38,31 @@ EOF
                my @selected_backup_ids;
 
                my $total_size = 0;
-               
+               my $selected = 0;
+
                foreach my $key(keys(%In)) {
                        if ($key =~ m/^fcb([0-9]+)_([0-9]+)_([0-9]+)$/gi) {
                                my ($host_id, $backup_num, $backup_id) = ($1,$2,$3);
                                push @selected_backup_ids, $backup_id;
                                $total_size += BackupPC::SearchLib::getGzipSize($host_id, $backup_num);
+                               $selected++;
                        }
                }
 
-               if (($total_size / 1024) > $Conf{MaxArchiveSize}) {
+               my $total_kb = int($total_size / 1024);
+
+               # and now a little magic to check multi-volume increments
+               my $parts = 1;
+               if ($#selected_backup_ids == 0) {
+                       ($parts) = $dbh->selectrow_array("select parts from backups where id = ?", undef, $selected_backup_ids[0]);
+               }
+
+               if ($total_kb > ($Conf{MaxArchiveSize} * $parts)) {
+                       $cont .= eval( q{ ${h2(Error)}});
+                       $cont .= "Selected backups size $total_kb Kb exceed max archive size $Conf{MaxArchiveSize} Kb.";
+               } elsif ($total_size == 0) {
                        $cont .= eval( q{ ${h2(Error)}});
-                       $cont .= "Selected backups size $total_size exceed max archive size $Conf{MaxArchiveSize}.";
+                       $cont .= "No backups selected.";
                } else {
 
                        # create new archive
index 11478f8..6719ab9 100644 (file)
@@ -369,7 +369,8 @@ sub getBackupsNotBurned() {
                        backups.date AS date,
                        backups.size AS size,
                        backups.id AS id,
-                       backups.inc_size AS inc_size
+                       backups.inc_size AS inc_size,
+                       backups.parts AS parts
                FROM backups 
                INNER JOIN shares       ON backups.shareID=shares.ID
                INNER JOIN hosts        ON backups.hostID = hosts.ID
@@ -385,7 +386,8 @@ sub getBackupsNotBurned() {
                        backups.type,
                        backups.date,
                        backups.size,
-                       backups.inc_size
+                       backups.inc_size,
+                       backups.parts
                ORDER BY backups.date
        };
        my $sth = $dbh->prepare( $sql );
@@ -511,6 +513,15 @@ DIV#fixedBox #submitBurner {
        z-index: 3;
        background-color: transparent;
 }
+
+#parts {
+       padding: 0.4em;
+       display: none;
+       width: 100%;
+       font-size: 80%;
+       color: #ff0000;
+       text-align: center;
+}
 -->
 </style>
 <script type="text/javascript">
@@ -525,7 +536,7 @@ EOF3
        $retHTML .= <<'EOF3';
 
 function debug(msg) {
-//     return; // Disable debugging
+       return; // Disable debugging
 
        if (! debug_div) debug_div = document.getElementById('debug');
 
@@ -581,8 +592,9 @@ function checkAll(location) {
        update_sum(suma);
 }
 
-function update_sum(suma) {
-       element_id('forma').elements['totalsize'].value = suma;
+function update_sum(suma, suma_disp) {
+       if (! suma_disp) suma_disp = suma;
+       element_id('forma').elements['totalsize'].value = suma_disp;
        pbar_set(suma, media_size);
        debug('total size: ' + suma);
 }
@@ -597,6 +609,19 @@ function sumiraj(e) {
                } else {
                        suma -= size;
                }
+
+               var parts = parseInt( element_id("prt" + e.name.substr(3)).value);
+               if (suma > media_size && suma == size && parts > 1) {
+                       element_id("parts").innerHTML = "This will take "+parts+" mediums!";
+                       element_id("parts").style.display = 'block';
+                       update_sum(media_size, suma);
+                       suma = media_size;
+                       return suma;
+               } else {
+                       element_id("parts").style.display = 'none';
+               }
+
+               if (suma < 0) suma = 0;
        } else {
                suma = 0;
                for (var i = 0; i < len; i++) {
@@ -694,6 +719,8 @@ Size: <input type="text" name="totalsize" size="7" readonly="readonly" style="te
 </div>
 <br/>
 
+<div id="parts">&nbsp;</div>
+
 Note:
 <textarea name="note" cols="10" rows="5" id="note"></textarea>
 
@@ -758,7 +785,8 @@ EOF3
                        '<td align="center">' . $backup->{'age'} . '</td>' .
                        '<td align="right">' . $backup->{'size'} . '</td>' .
                        '<td align="right">' . $backup->{'inc_size'} .
-                       '<input type="hidden" iD="fss'.$checkbox_key .'" value="'. $backup->{'inc_size'} .'"></td>' .
+                       '<input type="hidden" id="fss'.$checkbox_key .'" value="'. $backup->{'inc_size'} .'"></td>' .
+                       '<input type="hidden" id="prt'.$checkbox_key .'" value="'. $backup->{'parts'} .'"></td>' .
 
                        "</tr>\n";
        }