Changeset 144


Ignore:
Timestamp:
05/19/09 18:41:18 (15 years ago)
Author:
nanardon
Message:
  • make AttrForm? model usable also for object creation
Location:
LATMOS-Accounts-Web
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • LATMOS-Accounts-Web/lib/LATMOS/Accounts/Web/Controller/Create.pm

    r139 r144  
    3131    my ( $self, $c ) = @_; 
    3232 
     33    my $base = $c->model('Accounts')->db; 
     34    $c->stash->{form} = $c->model('AttrForms', undef, 'user', $base); 
    3335    for ($c->req->param('step') || '') { 
    3436        /^1$/ and do { 
     
    3840        }; 
    3941        /^2$/ and do { 
    40             my $base = $c->model('Accounts')->db; 
    4142            $base->create_c_object('user', $c->req->params->{id}, %{ $c->req->params }); 
    4243            $base->commit; 
  • LATMOS-Accounts-Web/lib/LATMOS/Accounts/Web/Model/AttrForms.pm

    r143 r144  
    101101} 
    102102 
     103# call either OBJ or type + base 
     104 
    103105sub ACCEPT_CONTEXT { 
    104     my ($self, $c, $form, $object) = @_; 
    105     $form or return $self; 
    106     $forms->{$form} or return; 
    107     $self->{c} = $c; 
    108     $self->{form} = $form; 
    109     $self->{object} = $object or return; 
    110     $self 
     106    my ($self, $c, $form, $object, $base) = @_; 
     107    my $new = {}; 
     108    $new->{c} = $c; 
     109    $new->{form} = $form; 
     110    $new->{object} = $object if (ref $object); 
     111    $new->{base} = $base || ($object ? $object->base : undef) or return $self; 
     112    $new->{otype} = ref $object ? $object->type : $object; 
     113    bless($new, 'LATMOS::Accounts::Web::Model::AttrForms'); 
     114} 
     115 
     116sub base { 
     117    my ( $self ) = @_; 
     118    $self->{base} 
     119} 
     120 
     121sub otype { 
     122    my ($self) = @_; 
     123    $self->{otype}; 
    111124} 
    112125 
     
    118131sub attributes { 
    119132    my ($self) = @_; 
    120     grep { $self->{object}->get_field_name($_, 'a') } 
     133    grep { $self->base->get_field_name($self->otype, $_, 'a') } 
    121134    @{ $forms->{$self->{form}}->{attrs} }; 
    122135} 
     
    127140} 
    128141 
     142sub attr_raw_value { 
     143    my ($self, $attr) = @_; 
     144    return $self->{c}->req->param($attr) || 
     145        ($self->{object} ? $self->{object}->get_c_field($attr) : '') 
     146} 
     147 
    129148sub attr_field { 
    130149    my ($self, $attr, $type) = @_; 
    131     $type ||= $self->{object}->get_field_name($attr, 'w') 
     150    $type ||= $self->base->get_field_name($self->otype, $attr, 'w') 
    132151        ? $attrs->{$attr}[1] || '' 
    133152        : 'label'; 
     
    139158            '<textarea name="%s">%s</textarea>', 
    140159            $self->escape($attr), 
    141             $self->escape($self->{object}->get_c_field($attr)), 
     160            $self->escape($self->attr_raw_value($attr)), 
    142161        ); 
    143162        /^label$/ and return $self->escape( 
    144             $self->{object}->get_c_field($attr) 
     163            $self->attr_raw_value($attr) 
    145164        ); 
    146165        /^select:([^:]+):(.*)$/ and do { 
     
    149168            my $select = sprintf('<select name="%s">', 
    150169                $self->escape($attr)) . "\n"; 
    151             my $value = $self->{object}->get_c_field($attr); 
     170            my $value = $self->attr_raw_value($attr); 
    152171            foreach my $id ($self->{object}->base->list_objects($otype)) { 
    153172                my $obj = $self->{object}->base->get_object($otype, $id) or next; 
     
    168187        '<input type="text" name="%s" value="%s">', 
    169188        $attr, 
    170         $self->escape( 
    171             $self->{c}->req->param($attr) || 
    172             $self->{object}->get_c_field($attr) 
    173         ) 
     189        $self->escape($self->attr_raw_value($attr)) 
    174190    ); 
    175191} 
  • LATMOS-Accounts-Web/root/html/create/user.tt

    r139 r144  
    33<form action="[% c.uri_for('/create', 'user') %]" method="POST"> 
    44<input type="hidden" name="step" value="2"> 
    5 Login: <input type="text" name="id" value="[% c.req.param('id') | html %]"><br 
     5Login: <input type="text" name="id" value="[% c.req.param('id') | html %]"><br> 
    66Nom: <input type="text" name="sn" value="[% c.req.param('sn') | html %]"><br> 
    77Prenom: <input type="text" name="givenName" value="[% c.req.param('givenName') | html %]"><br> 
     
    1313<form action="[% c.uri_for('/create', 'user') %]" method="POST"> 
    1414<input type="hidden" name="step" value="1"> 
    15 Nom: <input type="text" name="sn"><br> 
    16 Prénom: <input type="text" name="givenName"><br> 
     15[% form.attr_label('sn') %] [% form.attr_field('sn') %]<br> 
     16[% form.attr_label('givenName') %] [% form.attr_field('givenName') %]<br> 
    1717<input type="submit"> 
    1818</form> 
Note: See TracChangeset for help on using the changeset viewer.