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
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
backups.type,
backups.date,
backups.size,
- backups.inc_size
+ backups.inc_size,
+ backups.parts
ORDER BY backups.date
};
my $sth = $dbh->prepare( $sql );
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">
$retHTML .= <<'EOF3';
function debug(msg) {
-// return; // Disable debugging
+ return; // Disable debugging
if (! debug_div) debug_div = document.getElementById('debug');
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);
}
} 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++) {
</div>
<br/>
+<div id="parts"> </div>
+
Note:
<textarea name="note" cols="10" rows="5" id="note"></textarea>
'<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";
}