[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