[jifty-devel] Two questions about Actions

Nelson Elhage nelhage at bestpractical.com
Mon Dec 11 11:15:58 EST 2006


Isn't the right answer these days supposed to be Scalar::Defer?

param group_name =>
  label is 'Group Name',
  type is 'select', 
  valid_values are defer { get_groups(); };

I don't know if it actually works yet, although I did see some commits
recently that I think were trying to fix it.

- Nelson

On Mon, Dec 11, 2006 at 10:24:49AM -0500, Jesse Vincent wrote:
> 
> 
> 
> On Mon, Dec 11, 2006 at 04:15:33PM +0100, Agostini yves wrote:
> > Le lundi 11 d??cembre 2006 ?? 09:41 -0500, Edward Funnekotter a ??crit :
> > > Hi,
> > > 
> > > I haven't found any documentation to answer these yet (forgive me if I
> > > missed them):
> > > 
> > > 1. Is it possible to populate an Action's selection field at runtime?
> > > What I am trying to do is have a selection box in a form that has a
> > > subset of a list of items that is dependent on the user.  I tried the
> > > following: 
> > > 
> > >   param group_name => 
> > >     label is 'Group Name',
> > >     type is 'select',
> > >     valid_values are sub { get_groups(); };
> > > 
> > > But it seems that giving a code ref to the valid values is not
> > > acceptable.
> > 
> > I don't think it's possible in action
> > I make this yesterday by making my own html form
> 
> What we've done in the past is to do this in the arguments sub. (Which,
> yes, is deprecated, but I haven't yet spent enough time with the param
> syntax to know the answer with it off the top of my head)
> 
> sub arguments {
>     my $self = shift;
>     return $self->{__cached_arguments} if (exists $self->{__cached_arguments});
> 
>     my $args = $self->__get_cache->{$self->__cache_key($self->record)} ||=
>         $self->SUPER::arguments();
> 
>     if (my $owner_id = $record->owner->id) {
>         $args->{'owner_id'}{'default_value'} = $record->owner->email;
> 
>         if (   $owner_id == BTDT::CurrentUser->nobody->id
>             or $owner_id == $self->current_user->id )
>         {
>             $args->{'group_id'}{'valid_values'} = [
>                 {   display => (($record->group_id ? $record->group->name : "Personal" ) . " (Unchanged)"),
>                     value   => $record->group_id,
>                 },
>                 {   display => 'Personal',
>                     value   => 0,
>                 },
>                 {   display_from => 'name',
>                     value_from   => 'id',
>                     collection   => Jifty->web->current_user->user_object->groups,
>                 },
>             ];
>         }
>     }
> 
>     ...
>    return $args;
> }
> 
> 
> -- 
> _______________________________________________
> jifty-devel mailing list
> jifty-devel at lists.jifty.org
> http://lists.jifty.org/cgi-bin/mailman/listinfo/jifty-devel


More information about the jifty-devel mailing list