[Jifty-commit] r2284 - jifty/trunk/lib/Jifty/Action
jifty-commit at lists.jifty.org
jifty-commit at lists.jifty.org
Sun Dec 3 02:41:48 EST 2006
Author: audreyt
Date: Sun Dec 3 02:41:47 2006
New Revision: 2284
Modified:
jifty/trunk/lib/Jifty/Action/Record.pm
Log:
* Jifty::Action::Record - Support for "is autocompleted" annotation.
Modified: jifty/trunk/lib/Jifty/Action/Record.pm
==============================================================================
--- jifty/trunk/lib/Jifty/Action/Record.pm (original)
+++ jifty/trunk/lib/Jifty/Action/Record.pm Sun Dec 3 02:41:47 2006
@@ -251,6 +251,7 @@
};
}
my $autocomplete_method = "autocomplete_" . $field;
+
if ( $self->record->can($autocomplete_method) ) {
$info->{'autocompleter'} ||= sub {
my ( $self, $value ) = @_;
@@ -261,6 +262,30 @@
%columns );
};
}
+ elsif ($column->autocompleted) {
+ # Auto-generated autocompleter
+ $info->{'autocompleter'} ||= sub {
+ my ( $self, $value ) = @_;
+
+ my $collection = Jifty::Collection->new(
+ record_class => $self->record_class,
+ current_user => $self->record->current_user
+ );
+
+ $collection->unlimit;
+ $collection->rows_per_page(20);
+ $collection->limit(column => $field, value => $value, operator => 'STARTSWITH') if length($value);
+ $collection->columns('id', $field);
+ $collection->order_by(column => $field);
+ $collection->group_by(column => $field);
+
+ my @choices;
+ while (my $record = $collection->next) {
+ push @choices, $record->$field;
+ }
+ return @choices;
+ };
+ }
my $canonicalize_method = "canonicalize_" . $field;
if ( $self->record->can($canonicalize_method) ) {
@@ -361,7 +386,6 @@
$event_class->new($event_info)->publish;
}
-
=head1 SEE ALSO
L<Jifty::Action>, L<Jifty::Record>, L<Jifty::DBI::Record>,
More information about the Jifty-commit
mailing list