- From: Ville Skytta via cvs-syncmail <cvsmail@w3.org>
- Date: Sun, 04 May 2008 16:57:35 +0000
- To: www-validator-cvs@w3.org
Update of /sources/public/perl/modules/W3C/LinkChecker/bin
In directory hutz:/tmp/cvs-serv16024
Modified Files:
checklink
Log Message:
Fix command line HTML output.
Index: checklink
===================================================================
RCS file: /sources/public/perl/modules/W3C/LinkChecker/bin/checklink,v
retrieving revision 4.107
retrieving revision 4.108
diff -u -d -r4.107 -r4.108
--- checklink 4 May 2008 16:55:27 -0000 4.107
+++ checklink 4 May 2008 16:57:33 -0000 4.108
@@ -416,7 +416,19 @@
$Opts{Progress} = 0;
}
- my $is_first = 1;
+ # Populate data for print_form()
+ my %params = (
+ summary => $Opts{Summary_Only},
+ hide_redirects => !$Opts{Redirects},
+ hide_type => $Opts{Dir_Redirects} ? 'dir' : 'all',
+ no_accept_language => !(defined($Opts{Accept_Language}) &&
+ $Opts{Accept_Language} eq 'auto'),
+ no_referer => $Opts{No_Referer},
+ recursive => ($Opts{Depth} != 0),
+ depth => $Opts{Depth},
+ );
+
+ my $check_num = 1;
my @bases = @{$Opts{Base_Locations}};
foreach my $uri (@ARGV) {
# Reset base locations so that previous URI's given on the command line
@@ -424,10 +436,11 @@
@{$Opts{Base_Locations}} = @bases;
# Transform the parameter into a URI
$uri = &urize($uri);
- &check_uri(undef, $uri, $is_first, $Opts{Depth}, undef, undef, 1);
- $is_first &&= 0;
+ $params{uri} = $uri;
+ &check_uri(\%params, $uri, $check_num, $Opts{Depth}, undef, undef, 1);
+ $check_num++;
}
- undef $is_first;
+ undef $check_num;
if ($Opts{HTML}) {
&html_footer();
@@ -440,6 +453,8 @@
require CGI;
require CGI::Carp;
CGI::Carp->import(qw(fatalsToBrowser));
+ require CGI::Cookie;
+
my $query = new CGI;
# Set a few parameters in CGI mode
$Opts{Verbose} = 0;
@@ -457,7 +472,8 @@
if (! $uri) {
&html_header('', 1); # Set cookie only from results page.
- &print_form($query);
+ my %cookies = CGI::Cookie->fetch();
+ &print_form(scalar($query->Vars()), $cookies{$PROGRAM}, 1);
&html_footer();
exit;
}
@@ -490,29 +506,27 @@
}
# Save, clear or leave cookie as is.
- my $cookie = '';
+ my $cookie = undef;
if (my $action = $query->param('cookie')) {
- my %cookie = (-name => $PROGRAM);
if ($action eq 'clear') {
# Clear the cookie.
- $cookie{-value} = '';
- $cookie{-expires} = '-1M';
- } else {
- # Always refresh the expiration time.
- $cookie{-expires} = '+1M';
- if ($action eq 'set') {
- # Set the options.
- my %options = $query->Vars();
- delete($options{$_}) for qw(url uri check cookie); # Non-persistent.
- $cookie{-value} = \%options;
- } else {
- # Use the old values.
- $cookie{-value} = { $query->cookie($PROGRAM) };
- }
+ $cookie = CGI::Cookie->new(-name => $PROGRAM);
+ $cookie->value({ clear => 1 });
+ $cookie->expires('-1M');
+ } elsif ($action eq 'set') {
+ # Set the options.
+ $cookie = CGI::Cookie->new(-name => $PROGRAM);
+ my %options = $query->Vars();
+ delete($options{$_}) for qw(url uri check cookie); # Non-persistent.
+ $cookie->value(\%options);
}
- $cookie = $query->cookie(%cookie);
}
-
+ if (!$cookie) {
+ my %cookies = CGI::Cookie->fetch();
+ $cookie = $cookies{$PROGRAM};
+ }
+ # Always refresh cookie expiration time.
+ $cookie->expires('+1M') if ($cookie && !$cookie->expires());
# All Apache configurations don't set HTTP_AUTHORIZATION for CGI scripts.
# If we're under mod_perl, there is a way around it...
@@ -535,7 +549,7 @@
}
}
- &check_uri($query, $uri, 1, $Opts{Depth}, $cookie);
+ &check_uri(scalar($query->Vars()), $uri, 1, $Opts{Depth}, $cookie);
undef $query; # Not needed any more.
&html_footer();
}
@@ -762,14 +776,14 @@
# Check for broken links in a resource #
########################################
-sub check_uri ($$$$;$$$)
+sub check_uri (\%$$$$;$$)
{
- my ($query, $uri, $is_first, $depth, $cookie, $referer, $is_start) = @_;
- $is_start ||= $is_first;
+ my ($params, $uri, $check_num, $depth, $cookie, $referer, $is_start) = @_;
+ $is_start ||= ($check_num == 1);
if ($Opts{HTML}) {
- &html_header($uri, 0, $cookie) if $is_first;
- &print_form($query) if $is_start;
+ &html_header($uri, 0, $cookie) if ($check_num == 1);
+ &print_form($params, $cookie, $check_num) if $is_start;
}
my $start = $Opts{Summary_Only} ? 0 : &get_timestamp();
@@ -802,7 +816,7 @@
my $result_anchor = 'results'.$doc_count;
- if ($is_first && !$Opts{HTML} && !$Opts{Summary_Only}) {
+ if ($check_num == 1 && !$Opts{HTML} && !$Opts{Summary_Only}) {
my $s = $Opts{Sleep_Time} == 1 ? '' : 's';
my $acclang = $Opts{Accept_Language} || '(not sent)';
my $send_referer = $Opts{No_Referer} ? 'not sent' : 'sending';
@@ -1029,9 +1043,9 @@
}
if ($depth < 0) {
- &check_uri($query, $u, 0, -1, undef, $uri);
+ &check_uri($params, $u, 0, -1, $cookie, $uri);
} else {
- &check_uri($query, $u, 0, $depth-1, undef, $uri);
+ &check_uri($params, $u, 0, $depth-1, $cookie, $uri);
}
}
}
@@ -2231,14 +2245,14 @@
my $title = defined($uri) ? $uri : '';
$title = ': ' . $title if ($title =~ /\S/);
- # mod_perl 1.99_05 doesn't seem to like if the "\n\n" isn't in the same
- # print() statement as the last header...
-
my $headers = '';
if (! $Opts{Command_Line}) {
$headers .= "Cache-Control: no-cache\nPragma: no-cache\n" if $doform;
$headers .= "Content-Type: text/html; charset=utf-8\n";
$headers .= "Set-Cookie: $cookie\n" if $cookie;
+
+ # mod_perl 1.99_05 doesn't seem to like it if the "\n\n" isn't in the same
+ # print() statement as the last header
$headers .= "Content-Language: en\n\n";
}
@@ -2246,23 +2260,26 @@
if ($doform) {
$script = <<'EOF';
<script type="text/javascript">
-function uriOk()
+function uriOk(num)
{
- var u = document.forms[0].uri;
- var ok = false;
- if (u.value.length > 0) {
- if (u.value.search) {
- ok = (u.value.search(/\S/) != -1);
- } else {
- ok = true;
+ if (document.getElementById) {
+ var u = document.getElementById('uri_' + num);
+ var ok = false;
+ if (u.value.length > 0) {
+ if (u.value.search) {
+ ok = (u.value.search(/\S/) != -1);
+ } else {
+ ok = true;
+ }
}
+ if (! ok) u.focus();
+ return ok;
}
- if (! ok) u.focus();
- return ok;
+ return true;
}
</script>
EOF
- $onload = ' onload="document.forms[0].uri.focus()"';
+ $onload = ' onload="if(document.getElementById){document.getElementById(\'uri_1\').focus()}"';
}
print $headers, $DocType, "
@@ -2390,63 +2407,74 @@
exit;
}
-sub print_form ($)
+sub print_form (\%$$)
{
- my ($q) = @_;
+ my ($params, $cookie, $check_num) = @_;
+
+ # Split params on \0, see CGI's docs on Vars()
+ while (my ($key, $value) = each(%$params)) {
+ if ($value) {
+ my @vals = split(/\0/, $value, 2);
+ $params->{$key} = $vals[0];
+ }
+ }
# Override undefined values from the cookie, if we got one.
- my $got_cookie = 0;
- if (my %cookie = $q->cookie($PROGRAM)) {
- $got_cookie = 1;
- while (my ($key, $value) = each %cookie) {
- $q->param($key, $value) unless defined($q->param($key));
+ my $valid_cookie = 0;
+ if ($cookie) {
+ my %cookie_values = $cookie->value();
+ if (!$cookie_values{clear}) { # XXX no easy way to check if cookie expired?
+ $valid_cookie = 1;
+ while (my ($key, $value) = each(%cookie_values)) {
+ $params->{$key} = $value unless defined($params->{$key});
+ }
}
}
my $chk = ' checked="checked"';
- $q->param('hide_type', 'all') unless $q->param('hide_type');
+ $params->{hide_type} = 'all' unless $params->{hide_type};
- my $requested_uri = &encode($q->param('uri') || '');
- my $sum = $q->param('summary') ? $chk : '';
- my $red = $q->param('hide_redirects') ? $chk : '';
- my $all = ($q->param('hide_type') ne 'dir') ? $chk : '';
+ my $requested_uri = &encode($params->{uri} || '');
+ my $sum = $params->{summary} ? $chk : '';
+ my $red = $params->{hide_redirects} ? $chk : '';
+ my $all = ($params->{hide_type} ne 'dir') ? $chk : '';
my $dir = $all ? '' : $chk;
- my $acc = $q->param('no_accept_language') ? $chk : '';
- my $ref = $q->param('no_referer') ? $chk : '';
- my $rec = $q->param('recursive') ? $chk : '';
- my $dep = &encode($q->param('depth') || '');
+ my $acc = $params->{no_accept_language} ? $chk : '';
+ my $ref = $params->{no_referer} ? $chk : '';
+ my $rec = $params->{recursive} ? $chk : '';
+ my $dep = &encode($params->{depth} || '');
my $cookie_options = '';
- if ($got_cookie) {
+ if ($valid_cookie) {
$cookie_options = "
- <label for=\"cookie1\"><input type=\"radio\" id=\"cookie1\" name=\"cookie\" value=\"nochanges\" checked=\"checked\" /> Don't modify saved options</label>
- <label for=\"cookie2\"><input type=\"radio\" id=\"cookie2\" name=\"cookie\" value=\"set\" /> Save these options</label>
- <label for=\"cookie3\"><input type=\"radio\" id=\"cookie3\" name=\"cookie\" value=\"clear\" /> Clear saved options</label>";
+ <label for=\"cookie1_$check_num\"><input type=\"radio\" id=\"cookie1_$check_num\" name=\"cookie\" value=\"nochanges\" checked=\"checked\" /> Don't modify saved options</label>
+ <label for=\"cookie2_$check_num\"><input type=\"radio\" id=\"cookie2_$check_num\" name=\"cookie\" value=\"set\" /> Save these options</label>
+ <label for=\"cookie3_$check_num\"><input type=\"radio\" id=\"cookie3_$check_num\" name=\"cookie\" value=\"clear\" /> Clear saved options</label>";
} else {
$cookie_options = "
- <label for=\"cookie\"><input type=\"checkbox\" id=\"cookie\" name=\"cookie\" value=\"set\" /> Save options in a <a href=\"http://www.w3.org/Protocols/rfc2109/rfc2109\">cookie</a></label>";
+ <label for=\"cookie_$check_num\"><input type=\"checkbox\" id=\"cookie_$check_num\" name=\"cookie\" value=\"set\" /> Save options in a <a href=\"http://www.w3.org/Protocols/rfc2109/rfc2109\">cookie</a></label>";
}
- print "<form action=\"", $Opts{_Self_URI}, "\" method=\"get\" onsubmit=\"return uriOk()\">
-<p><label for=\"uri\">Enter the address (<a href=\"http://www.w3.org/Addressing/\">URL</a>)
+ print "<form action=\"", $Opts{_Self_URI}, "\" method=\"get\" onsubmit=\"return uriOk($check_num)\">
+<p><label for=\"uri_$check_num\">Enter the address (<a href=\"http://www.w3.org/Addressing/\">URL</a>)
of a document that you would like to check:</label></p>
-<p><input type=\"text\" size=\"50\" id=\"uri\" name=\"uri\" value=\"",$requested_uri,"\" /></p>
-<fieldset id=\"extra_opt_uri\" class=\"moreoptions\">
+<p><input type=\"text\" size=\"50\" id=\"uri_$check_num\" name=\"uri\" value=\"",$requested_uri,"\" /></p>
+<fieldset id=\"extra_opt_uri_$check_num\" class=\"moreoptions\">
<legend class=\"toggletext\">More Options</legend>
<div class=\"options\">
<p>
- <label for=\"summary\"><input type=\"checkbox\" id=\"summary\" name=\"summary\" value=\"on\"", $sum, " /> Summary only</label>
+ <label for=\"summary_$check_num\"><input type=\"checkbox\" id=\"summary_$check_num\" name=\"summary\" value=\"on\"", $sum, " /> Summary only</label>
<br />
- <label for=\"hide_redirects\"><input type=\"checkbox\" id=\"hide_redirects\" name=\"hide_redirects\" value=\"on\"", $red, " /> Hide <a href=\"http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3\">redirects</a>:</label>
- <label for=\"hide_type_all\"><input type=\"radio\" id=\"hide_type_all\" name=\"hide_type\" value=\"all\"", $all, " /> all</label>
- <label for=\"hide_type_dir\"><input type=\"radio\" id=\"hide_type_dir\" name=\"hide_type\" value=\"dir\"", $dir, " /> for directories only</label>
+ <label for=\"hide_redirects_$check_num\"><input type=\"checkbox\" id=\"hide_redirects_$check_num\" name=\"hide_redirects\" value=\"on\"", $red, " /> Hide <a href=\"http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3\">redirects</a>:</label>
+ <label for=\"hide_type_all_$check_num\"><input type=\"radio\" id=\"hide_type_all_$check_num\" name=\"hide_type\" value=\"all\"", $all, " /> all</label>
+ <label for=\"hide_type_dir_$check_num\"><input type=\"radio\" id=\"hide_type_dir_$check_num\" name=\"hide_type\" value=\"dir\"", $dir, " /> for directories only</label>
<br />
- <label for=\"no_accept_language\"><input type=\"checkbox\" id=\"no_accept_language\" name=\"no_accept_language\" value=\"on\"", $acc, " /> Don't send the <tt><a href=\"http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.4\">Accept-Language</a></tt> header</label>
+ <label for=\"no_accept_language_$check_num\"><input type=\"checkbox\" id=\"no_accept_language_$check_num\" name=\"no_accept_language\" value=\"on\"", $acc, " /> Don't send the <tt><a href=\"http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.4\">Accept-Language</a></tt> header</label>
<br />
- <label for=\"no_referer\"><input type=\"checkbox\" id=\"no_referer\" name=\"no_referer\" value=\"on\"", $ref, " /> Don't send the <tt><a href=\"http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.36\">Referer</a></tt> header</label>
+ <label for=\"no_referer_$check_num\"><input type=\"checkbox\" id=\"no_referer_$check_num\" name=\"no_referer\" value=\"on\"", $ref, " /> Don't send the <tt><a href=\"http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.36\">Referer</a></tt> header</label>
<br />
- <label title=\"Check linked documents recursively (maximum: ", $Opts{Max_Documents}, " documents)\" for=\"recursive\"><input type=\"checkbox\" id=\"recursive\" name=\"recursive\" value=\"on\"", $rec, " /> Check linked documents recursively</label>,
- <label title=\"Depth of the recursion (-1 is the default and means unlimited)\" for=\"depth\">recursion depth: <input type=\"text\" size=\"3\" maxlength=\"3\" id=\"depth\" name=\"depth\" value=\"", $dep, "\" /></label>
+ <label title=\"Check linked documents recursively (maximum: ", $Opts{Max_Documents}, " documents)\" for=\"recursive_$check_num\"><input type=\"checkbox\" id=\"recursive_$check_num\" name=\"recursive\" value=\"on\"", $rec, " /> Check linked documents recursively</label>,
+ <label title=\"Depth of the recursion (-1 is the default and means unlimited)\" for=\"depth_$check_num\">recursion depth: <input type=\"text\" size=\"3\" maxlength=\"3\" id=\"depth_$check_num\" name=\"depth\" value=\"", $dep, "\" /></label>
<br /><br />", $cookie_options, "
</p>
</div>
Received on Sunday, 4 May 2008 16:58:07 UTC