% $m->comp("/widgets/wrappers/sharky/table_top.mc", % caption => "Current Contributors", % ); % my $i = 1; % my $total = scalar @contribs; % my @sort_array; % foreach (@contribs) { % my $id = $_->get_id; % push @sort_array, qq{"$widget|reorder_$id"}; % my $person = $_->get_object; % my $val = $_->get_grp->get_name(); % my $media = get_state_data('media_prof', 'media'); % my $role = $media->get_contributor_role($_); % $val .= ' (Role: '.ucfirst($role).')' if $role; % my $order_vals; % foreach (1 .. $total) { % $order_vals->{$_} = $_; % } % $i++; % }
Last Name First Name Type Order Delete
<% $person->get_lname || ' ' %> <% $person->get_fname || ' ' %> <% $val %> <& '/widgets/profile/displayFormElement.mc', key => "$widget|reorder_$id", useTable => 0, vals => { value => $i, props => { type => 'select', vals => $order_vals, }, js => 'onChange="reorder(this, \'theForm\')"' } &>
% $m->comp("/widgets/wrappers/sharky/table_bottom.mc"); <& /widgets/listManager/listManager.mc, object => 'contrib', title => 'Choose Contributors', sortBy => 'name', select => undef, profile => \&contrib_profile, exclude => \@existing_contribs, fields => [qw(lname fname type)], constrain => { no_grp_id => Bric::Biz::Person->INSTANCE_GROUP_ID }, addition => '' &>

<%args> $widget <%init> my $media = get_state_data($widget, 'media'); my @existing_contribs = map { $_->get_id } $media->get_contributors; my @contribs = $media->get_contributors(); <%once> sub contrib_profile { my ($o,$flags) = @_; unless ($flags->{'featured'}) { return ['Associate', $r->uri, "media_prof|assoc_contrib_cb=".$o->get_id]; } else { return ['Un-Associate', $r->uri, "media_prof|unassoc_contrib_cb=".$o->get_id]; } } sub contrib_alter_type { my ($val, $o, $flags) = @_; return $val unless $flags->{'featured'}; my $media = get_state_data('media_prof', 'media'); my $role = $media->get_contributor_role($o); # Just return the value if there is no role defined for this contributor. return $val unless $role; # Show the role if there is one. return $val.' (Role: '.ucfirst($role).')'; }