# Craig Barratt <cbarratt@users.sourceforge.net>
#
# COPYRIGHT
-# Copyright (C) 2003 Craig Barratt
+# Copyright (C) 2003-2009 Craig Barratt
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
#
#========================================================================
#
-# Version 2.1.0_CVS, released 3 Jul 2003.
+# Version 3.2.0, released 31 Jul 2010.
#
# See http://backuppc.sourceforge.net.
#
package BackupPC::CGI::Browse;
use strict;
+use Encode qw/decode_utf8/;
use BackupPC::CGI::Lib qw(:all);
use BackupPC::View;
use BackupPC::Attrib qw(:all);
#
# default to the newest backup
#
- if ( !defined($In{num}) && defined(@Backups) ) {
+ if ( !defined($In{num}) && defined(@Backups) && @Backups > 0 ) {
$i = @Backups - 1;
$num = $Backups[$i]{num};
}
my $backupTime = timeStamp2($Backups[$i]{startTime});
my $backupAge = sprintf("%.1f", (time - $Backups[$i]{startTime})
/ (24 * 3600));
- my $view = BackupPC::View->new($bpc, $host, \@Backups);
+ my $view = BackupPC::View->new($bpc, $host, \@Backups, {nlink => 1, only_increment => $In{only_increment}});
if ( $dir eq "" || $dir eq "." || $dir eq ".." ) {
$attr = $view->dirAttrib($num, "", "");
$attr = $view->dirAttrib($num, $share, $relDir);
if ( !defined($attr) ) {
+ $relDir = decode_utf8($relDir);
ErrorExit(eval("qq{$Lang->{Can_t_browse_bad_directory_name2}}"));
}
}
my $dirName = $f;
$dirName =~ s/ / /g;
+ $dirName = decode_utf8($dirName);
push(@DirStr, {needTick => 1,
tdArgs => " class=\"$tdStyle\"",
link => <<EOF});
-<a href="$MyURL?action=browse&host=${EscURI($host)}&num=$num&share=$shareURI&dir=$path">$imgStr</a><a href="$MyURL?action=browse&host=${EscURI($host)}&num=$num&share=$shareURI&dir=$path" class="$linkStyle"> $dirName</a></td></tr>
+<a href="$MyURL?action=browse&host=${EscURI($host)}&num=$num&share=$shareURI&dir=$path">$imgStr</a><a href="$MyURL?action=browse&host=${EscURI($host)}&num=$num&share=$shareURI&dir=$path&only_increment=$In{only_increment}" class="$linkStyle"> $dirName</a></td></tr>
EOF
$fileCnt++;
$gotDir = 1;
$a->{type});
my $modeStr = sprintf("0%o", $a->{mode} & 07777);
$iconStr = <<EOF;
-<img src="$Conf{CgiImageDirURL}/icon-$typeStr.gif" align="center">
+<img src="$Conf{CgiImageDirURL}/icon-$typeStr.png" valign="top">
EOF
$attrStr .= <<EOF;
<td align="center" class="fviewborder">$typeStr</td>
$attrStr .= "<td colspan=\"5\" align=\"center\" class=\"fviewborder\"> </td>\n";
}
(my $fDisp = "${EscHTML($f)}") =~ s/ / /g;
+ $fDisp = decode_utf8($fDisp);
if ( $gotDir ) {
$fileStr .= <<EOF;
<tr><td class="fviewborder">
- <table cellpadding="0" cellspacing="0" border="0"><tr><td>
- <input type="checkbox" name="fcb$checkBoxCnt" value="$path"> $iconStr
- </td><td>
- <a href="$MyURL?action=browse&host=${EscURI($host)}&num=$num&share=$shareURI&dir=$path">$fDisp</a>
- </td></tr></table>
+ <input type="checkbox" name="fcb$checkBoxCnt" value="$path"> $iconStr <a href="$MyURL?action=browse&host=${EscURI($host)}&num=$num&share=$shareURI&dir=$path">$fDisp</a>
</td>
$attrStr
</tr>
} else {
$fileStr .= <<EOF;
<tr><td class="fviewborder">
- <table cellpadding="0" cellspacing="0" border="0"><tr><td>
- <input type="checkbox" name="fcb$checkBoxCnt" value="$path"> $iconStr
- </td><td>
- <a href="$MyURL?action=RestoreFile&host=${EscURI($host)}&num=$num&share=$shareURI&dir=$path">$fDisp</a>
- </td></tr></table>
+ <input type="checkbox" name="fcb$checkBoxCnt" value="$path"> $iconStr <a href="$MyURL?action=RestoreFile&host=${EscURI($host)}&num=$num&share=$shareURI&dir=$path">$fDisp</a>
</td>
$attrStr
</tr>
}
}
$share = $currDir;
- my $dirDisplay = "$share/$dir";
+ my $dirDisplay = decode_utf8("$share/$dir");
$dirDisplay =~ s{//+}{/}g;
$dirDisplay =~ s{/+$}{}g;
$dirDisplay = "/" if ( $dirDisplay eq "" );
} else {
$fileStr = eval("qq{$Lang->{The_directory_is_empty}}");
}
- my @otherDirs;
my $pathURI = $dir;
my $shareURI = $share;
$pathURI =~ s/([^\w.\/-])/uc sprintf("%%%02x", ord($1))/eg;
$shareURI =~ s/([^\w.\/-])/uc sprintf("%%%02x", ord($1))/eg;
- foreach my $i ( $view->backupList($share, $dir) ) {
- push(@otherDirs, $i);
- }
- if ( @otherDirs ) {
- my $otherDirs = join(",\n", @otherDirs);
- my $inc = 0;
- foreach my $value (@otherDirs) {
- my $selected = undef;
- my $showDate = timeStamp2($Backups[$inc]{startTime});
- $selected = " selected" if ($value == $num);
- $otherDirs .= "<option value=\"$MyURL?action=browse&host=${EscURI($host)}&num=$value\"$selected>#$value - ($showDate)</option>\n";
- $inc++;
+ if ( my @otherDirs = $view->backupList($share, $dir) ) {
+ my $otherDirs;
+ foreach my $i ( @otherDirs ) {
+ my $selected;
+ my $showDate = timeStamp2($Backups[$i]{startTime});
+ my $backupNum = $Backups[$i]{num};
+ $selected = " selected" if ( $backupNum == $num );
+ $otherDirs .= "<option value=\"$MyURL?action=browse&host=${EscURI($host)}&num=$backupNum&share=$shareURI&dir=$pathURI&only_increment=$In{only_increment}\"$selected>#$backupNum - ($showDate)</option>\n";
}
$filledBackup .= eval("qq{$Lang->{Visit_this_directory_in_backup}}");
}
+
+ # XXX ASA
+ my $checked = $In{only_increment} ? ' checked' : '';
+ $filledBackup .= "<li><input type=checkbox name=only_increment$checked> show only this increment";
+
+ $dir = decode_utf8($dir);
+ $share = decode_utf8($share);
my $content = eval("qq{$Lang->{Backup_browse_for__host}}");
Header(eval("qq{$Lang->{Browse_backup__num_for__host}}"), $content);
Trailer();