CGI-Widget-DBI-Browse
view release on metacpan or search on metacpan
lib/CGI/Widget/DBI/Browse.pm view on Meta::CPAN
my ($self, $category_col, $row, @exclude_params) = @_;
my (@cols, $col_found);
foreach (@{ $self->{-category_columns} }) {
push(@cols, $_);
if ($_ eq $category_col) {
$col_found = 1;
last;
}
}
my $extra_vars = $self->{ws}->extra_vars_for_uri([ @{ $self->{'filter_columns'} }, '_browse_skip_to_results_', @exclude_params ]);
my $category_decoded = $self->decode_utf8($row->{$category_col});
return $col_found
? '<a href="?'.join('&', (map { _uri_param_pair($_, $self->decode_utf8($row->{$_})) } @cols), $extra_vars || ()).'" id="jumpToCategoryLink">'
.$category_decoded.'</a>'
: $category_decoded;
}
sub _category_columndata_closure {
my ($self, $category_col) = @_;
my $existing_category_filters =
join('&', map { _uri_param_pair($_, $self->decode_utf8(scalar $self->{q}->param($_))) } @{ $self->{'filter_columns'} });
my $before_link_closure = $self->{-category_before_link_closures}->{$category_col};
my $column_closure = $self->{-category_column_closures}->{$category_col};
my @filter_columns = @{ $self->{'filter_columns'} };
return sub {
my ($sd, $row) = @_;
my $category_decoded = $sd->decode_utf8($row->{$category_col}) || '(empty)';
my $category_display_value = ref $column_closure eq 'CODE' ? $column_closure->($sd, $row) : $category_decoded;
my $extra_vars = $sd->extra_vars_for_uri([ @filter_columns, '_browse_skip_to_results_' ]);
return ($before_link_closure ? $before_link_closure->($sd, $row) : '').'<a href="?'.join(
'&', $existing_category_filters || (),
_uri_param_pair($category_col, $category_decoded),
$extra_vars || (),
).'" id="categoryNavLink-'.CGI::escapeHTML($category_decoded).'">'.$category_display_value.'</a>'; # TODO: HTML::Escape is faster than CGI
};
}
1;
__END__
=back
=head1 AUTHOR
( run in 0.390 second using v1.01-cache-2.11-cpan-26ccb49234f )