Leser: 3
![]() |
|< 1 2 >| | ![]() |
15 Einträge, 2 Seiten |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
#!/usr/bin/perl use strict; use warnings; use CGI; use CGI::Carp qw(fatalsToBrowser); $CGI::DISABLE_UPLOADS = 1; use Data::Dumper; use HTML::Template::Compiled; package Widget::Select; use Moose; has 'tuple' => (is => 'rw'); # ID, Text, ... has 'name' => (is => 'rw'); has 'selection' => (is => 'rw'); sub set_tuple { my $self = shift; $self->{tuple} = [@_] if @_ % 2 == 0; } sub as_form { my $self = shift; my @l = @{$self->{tuple}}; # non destructive my $o = '<select name="' . $self->name . "\">\n"; while (my ($k, $v) = splice @l, 0, 2) { $o .= ($k == $self->selection) ? '<option selected value="'. $k .'">'. $v .'</option>'."\n" : '<option value="'. $k .'">'. $v .'</option>'."\n"; } $o .= '</select>' . "\n"; return $o; } package main; my $q = CGI->new; my $sel = $q->param('sel'); my @files = <*.pl>; my $wdgt = Widget::Select->new( name => 'sel' ); $wdgt->set_tuple( map { $_, $files[$_] } 0..$#files ); $wdgt->selection($sel); print $q->header; my $t = HTML::Template::Compiled->new( filehandle => *DATA); $t->param(wdgt => $wdgt, message => Dumper $q); print $t->output; __DATA__ <html> <head> <title>Test</title> </head> <body> <form> <%= wdgt.as_form %> <input type="submit" value="Senden"> </form> <hr /> <pre><%= message %></pre> </body> </html>
![]() |
|< 1 2 >| | ![]() |
15 Einträge, 2 Seiten |