Changeset 25685

Show
Ignore:
Timestamp:
12/02/08 16:54:11 (5 weeks ago)
Author:
kazuho
Message:

configurable submit label and reset label

Location:
lang/perl/HTML-AutoForm/trunk
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • lang/perl/HTML-AutoForm/trunk/lib/HTML/AutoForm.pm

    r25498 r25685  
    2323our $VERSION; 
    2424our %Defaults; 
     25our %Lang_Defaults; 
    2526our $DEFAULT_LANG; 
    2627our $CLASS_PREFIX; 
     
    3334        fields       => undef, # need to be copied 
    3435        secure       => 1, 
    35     ); 
    36     Class::Accessor::Lite->mk_accessors(keys %Defaults); 
     36        reset_label  => undef, 
     37    ); 
     38    %Lang_Defaults = ( 
     39        en => { 
     40            submit_label => 'Submit Form', 
     41            error_prefix => '', 
     42        }, 
     43        ja => { 
     44            submit_label => 'フォームを投稿', 
     45            error_prefix => '※', 
     46        }, 
     47    ); 
     48    Class::Accessor::Lite->mk_accessors( 
     49        keys %Defaults, 
     50        keys %{$Lang_Defaults{en}}, 
     51    ); 
    3752    $DEFAULT_LANG = 'en'; 
    3853    $CLASS_PREFIX = 'autoform'; 
     
    4863    } 
    4964    my $self = bless { 
     65        %{$Lang_Defaults{$DEFAULT_LANG}}, 
    5066        %Defaults, 
    5167        %args, 
     
    115131                            $CLASS_PREFIX, 
    116132                            '_error">', 
    117                             _escape_html('※' . $err->message), 
     133                            _escape_html($self->error_prefix . $err->message), 
    118134                            '</div>', 
    119135                        ); 
     
    124140            }->($_) 
    125141        } @{$self->{fields}}), 
    126         $self->secure 
    127             ? ( 
    128                 '<input type="hidden" name="', 
    129                 _escape_html($self->csrf_keyname), 
    130                 '" value="', 
    131                 # TODO: use a different id 
    132                 _escape_html($csrf_token), 
     142        $self->secure ? ( 
     143            '<input type="hidden" name="', 
     144            _escape_html($self->csrf_keyname), 
     145            '" value="', 
     146            # TODO: use a different id 
     147            _escape_html($csrf_token), 
     148            '" />', 
     149        ) : (), 
     150        $self->submit_label || $self->reset_label ? ( 
     151            '<tr><th></th><td>', 
     152            $self->submit_label ? ( 
     153                '<input class="', 
     154                $CLASS_PREFIX, 
     155                '_field_submit" type="submit" value="', 
     156                _escape_html($self->submit_label), 
    133157                '" />', 
    134158            ) : (), 
    135         '<tr><th></th><td><input type="submit" value="投稿する" /></td></tr>', 
     159            $self->reset_label ? ( 
     160                '<input class="', 
     161                $CLASS_PREFIX, 
     162                '_field_reset" type="reset" value="', 
     163                _escape_html($self->reset_label), 
     164                '" />', 
     165            ) : (), 
     166            '</td></tr>', 
     167        ) : (), 
    136168        '</table></form>', 
    137169    ); 
  • lang/perl/HTML-AutoForm/trunk/t/00-base.t

    r25410 r25685  
    44 
    55use CGI; 
    6 use Test::More tests => 67; 
     6use Test::More tests => 71; 
    77 
    88BEGIN { use_ok('HTML::AutoForm'); }; 
     
    270270   'hidden render 1', 
    271271); 
     272 
     273$form = HTML::AutoForm->new( 
     274    action => '/action', 
     275    fields => [ 
     276        username => { 
     277            type     => 'text', 
     278            value    => 'defval', 
     279            required => 1, 
     280        }, 
     281    ], 
     282    submit_label => 'Register Me!', 
     283); 
     284 
     285$ENV{REQUEST_METHOD} = 'GET'; 
     286is($form->render(CGI->new(''), 'abcde'), 
     287   join('', 
     288        '<form action="/action" method="POST">', 
     289        '<table class="autoform_table">', 
     290        '<tr><th>Username</th><td><input class="autoform_field_text" name="username" type="text" value="defval" /></td></tr>', 
     291        '<input type="hidden" name="__autoform_csrf_key" value="abcde" />', 
     292        '<tr><th></th><td><input class="autoform_field_submit" type="submit" value="Register Me!" /></td></tr>', 
     293        '</table>', 
     294        '</form>', 
     295    ), 
     296   'form render', 
     297); 
     298 
     299$form->secure(undef); 
     300is($form->render(CGI->new(''), 'abcde'), 
     301   join('', 
     302        '<form action="/action">', 
     303        '<table class="autoform_table">', 
     304        '<tr><th>Username</th><td><input class="autoform_field_text" name="username" type="text" value="defval" /></td></tr>', 
     305        '<tr><th></th><td><input class="autoform_field_submit" type="submit" value="Register Me!" /></td></tr>', 
     306        '</table>', 
     307        '</form>', 
     308    ), 
     309   'form render', 
     310); 
     311 
     312$form->reset_label('Forget Me!'); 
     313is($form->render(CGI->new(''), 'abcde'), 
     314   join('', 
     315        '<form action="/action">', 
     316        '<table class="autoform_table">', 
     317        '<tr><th>Username</th><td><input class="autoform_field_text" name="username" type="text" value="defval" /></td></tr>', 
     318        '<tr><th></th><td><input class="autoform_field_submit" type="submit" value="Register Me!" /><input class="autoform_field_reset" type="reset" value="Forget Me!" /></td></tr>', 
     319        '</table>', 
     320        '</form>', 
     321    ), 
     322   'form render', 
     323); 
     324 
     325$form->submit_label(undef); 
     326$form->reset_label(undef); 
     327is($form->render(CGI->new(''), 'abcde'), 
     328   join('', 
     329        '<form action="/action">', 
     330        '<table class="autoform_table">', 
     331        '<tr><th>Username</th><td><input class="autoform_field_text" name="username" type="text" value="defval" /></td></tr>', 
     332        '</table>', 
     333        '</form>', 
     334    ), 
     335   'form render', 
     336);