$self->column_info($col)->{_filter_info} = $attrs;
my $acc = $self->column_info($col)->{accessor};
- $self->mk_group_accessors('filtered_column' => [ (defined $acc ? $acc : $col), $col]);
+ $self->mk_group_accessors('value' => [ (defined $acc ? $acc : $col), $col]);
return 1;
}
return $filtered;
}
-sub register_column {
- my ($class, $col, $info) = @_;
- my $acc = $col;
- if (exists $info->{accessor}) {
- return unless defined $info->{accessor};
- $acc = [ $info->{accessor}, $col ];
+sub update {
+ my ($self, $attrs, @rest) = @_;
+ foreach my $key (keys %{$attrs||{}}) {
+ if ($self->has_column($key) &&
+ exists $self->column_info($key)->{_filter_info}) {
+ my $val = delete $attrs->{$key};
+ $self->set_value($key, $val);
+ $attrs->{$key} = $self->_unfiltered_column($key, $val)
+ }
}
- if ( exists $self->column_info($col)->{_filter_info} ) {
- $class->mk_group_accessors(value => $acc);
- } else {
- $class->mk_group_accessors(column => $acc);
+ return $self->next::method($attrs, @rest);
+}
+
+
+sub new {
+ my ($class, $attrs, @rest) = @_;
+ my $filtered;
+ foreach my $key (keys %{$attrs||{}}) {
+ if ($class->has_column($key) &&
+ exists $class->column_info($key)->{_filter_info} ) {
+ $attrs->{$key} = $class->_unfiltered_column($key, delete $attrs->{$key})
+ }
}
+ my $obj = $class->next::method($attrs, @rest);
+ return $obj;
}
+
1;