ASP4x-Linker

 view release on metacpan or  search on metacpan

lib/ASP4x/Linker.pm  view on Meta::CPAN

{
  my ($s, $args) = @_;
  
  my $vars = $s->vars( $args, 1 );
  
  no warnings 'uninitialized';
  my ($uri) = split /\?/, $s->base_href;
  my $context = ASP4::HTTPContext->current;
  my $server = $context->server;

  my @inputs = map {qq(<input type="hidden" name="@{[ $server->URLEncode( $_ ) ]}" value="@{[ $server->URLEncode( $vars->{$_} ) ]}" />)}
                 keys %$vars;
  return join "\n", @inputs;
}# end hidden_fields()


sub vars
{
  my ($s, $args) = @_;
  
  my @parts = ( );

lib/ASP4x/Linker.pm  view on Meta::CPAN

=item * The incoming form data from the original request

=item * Individually-set values for each widget in the collection.

=item * Any properties provided as an argument to C<uri()>.

=back

=head2 hidden_fields( [$properties] )

Returns a string of XHTML hidden input fields (<input type="hidden" name="$name" value="$value" />).

Useful if your persistence logic involves repeated form submissions rather than hyperlinks.

The C<$properties> argument is the same as in the C<uri()> method.

=head2 vars( [$properties] )

Returns a hashref representing the intersect of all widgets' names and attributes.

Supposing you setup your linker like this:

t/010-basic/050-hidden-fields.t  view on Meta::CPAN

  attrs => [qw( page_number page_size )]
);

$linker->add_widget(
  name  => 'albums',
  attrs => [qw( page_number page_size )]
);

is
  $linker->hidden_fields() =>
  q(<input type="hidden" name="albums.page_size" value="" />
<input type="hidden" name="artists.page_number" value="" />
<input type="hidden" name="albums.page_number" value="" />
<input type="hidden" name="artists.page_size" value="" />),
  "Hidden Fields look right";

$linker->widget('albums')->set( page_number => 1 );
is
  $linker->hidden_fields() =>
  q(<input type="hidden" name="albums.page_size" value="" />
<input type="hidden" name="artists.page_number" value="" />
<input type="hidden" name="albums.page_number" value="1" />
<input type="hidden" name="artists.page_size" value="" />),
  "Hidden Fields look right";

is
  $linker->hidden_fields() =>
  q(<input type="hidden" name="albums.page_size" value="" />
<input type="hidden" name="artists.page_number" value="" />
<input type="hidden" name="albums.page_number" value="" />
<input type="hidden" name="artists.page_size" value="" />),
  "Auto-reset works";

my $args = {
  albums => { page_size => 20, page_number => 4 },
  artists => { page_size => 5, page_number => 10 }
};
is
  $linker->hidden_fields($args) =>
  q(<input type="hidden" name="albums.page_size" value="20" />
<input type="hidden" name="artists.page_number" value="10" />
<input type="hidden" name="albums.page_number" value="4" />
<input type="hidden" name="artists.page_size" value="5" />),
  "Auto-reset works";





( run in 1.654 second using v1.01-cache-2.11-cpan-df04353d9ac )