- Timestamp:
- 05/19/09 18:41:18 (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LATMOS-Accounts-Web/lib/LATMOS/Accounts/Web/Model/AttrForms.pm
r143 r144 101 101 } 102 102 103 # call either OBJ or type + base 104 103 105 sub 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 116 sub base { 117 my ( $self ) = @_; 118 $self->{base} 119 } 120 121 sub otype { 122 my ($self) = @_; 123 $self->{otype}; 111 124 } 112 125 … … 118 131 sub attributes { 119 132 my ($self) = @_; 120 grep { $self-> {object}->get_field_name($_, 'a') }133 grep { $self->base->get_field_name($self->otype, $_, 'a') } 121 134 @{ $forms->{$self->{form}}->{attrs} }; 122 135 } … … 127 140 } 128 141 142 sub 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 129 148 sub attr_field { 130 149 my ($self, $attr, $type) = @_; 131 $type ||= $self-> {object}->get_field_name($attr, 'w')150 $type ||= $self->base->get_field_name($self->otype, $attr, 'w') 132 151 ? $attrs->{$attr}[1] || '' 133 152 : 'label'; … … 139 158 '<textarea name="%s">%s</textarea>', 140 159 $self->escape($attr), 141 $self->escape($self-> {object}->get_c_field($attr)),160 $self->escape($self->attr_raw_value($attr)), 142 161 ); 143 162 /^label$/ and return $self->escape( 144 $self-> {object}->get_c_field($attr)163 $self->attr_raw_value($attr) 145 164 ); 146 165 /^select:([^:]+):(.*)$/ and do { … … 149 168 my $select = sprintf('<select name="%s">', 150 169 $self->escape($attr)) . "\n"; 151 my $value = $self-> {object}->get_c_field($attr);170 my $value = $self->attr_raw_value($attr); 152 171 foreach my $id ($self->{object}->base->list_objects($otype)) { 153 172 my $obj = $self->{object}->base->get_object($otype, $id) or next; … … 168 187 '<input type="text" name="%s" value="%s">', 169 188 $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)) 174 190 ); 175 191 }
Note: See TracChangeset
for help on using the changeset viewer.