use strict; use warnings; =head1 NAME TestApp::JiftyJS::Action::Play =cut package TestApp::JiftyJS::Action::Play; use base qw/TestApp::JiftyJS::Action Jifty::Action/; use Jifty::Param::Schema; use Jifty::Action schema { param vanilla => type is 'text'; param mood => type is 'text', ajax validates, valid are qw(happy angry normal); param flavor => autocompleter is \&autocomplete_flavor, type is 'text'; param tags => type is 'text', ajax canonicalizes; }; =head2 take_action =cut sub take_action { my $self = shift; $self->report_success if not $self->result->failure; return 1; } =head2 report_success =cut sub report_success { my $self = shift; # Your success message here $self->result->message('Success'); } sub canonicalize_tags { my ($self, $value) = @_; my $v = lc($value); $v =~ s/\s+/ /g; $v =~ s/^\s*//g; $v =~ s/\s*$//g; return $v; } sub autocomplete_flavor { my ($self, $value) = @_; return grep { $_ =~ /$value/i; } sort qw( berry vanilla caramel caracara honey miso blueberry strawberry ); } 1;