<& '/widgets/search/search.mc', object => 'story', state_key => 'rel_story', type => 'story', field => 'title', use_form_tag => 0 &> <& '/widgets/wrappers/table_top.mc', caption => 'Choose a Related Story' &> <& /widgets/listManager/listManager.mc, object => 'story', state_key => 'rel_story', sortBy => 'name', select => undef, profile => '', featured => $relate_id ? [$relate_id] : undef, exclude => $excl_sub, fields => [qw(id title uri cover_date action)], field_titles => { action => ''}, field_values => $field_values, addition => '', behavior => 'expand', &> <& '/widgets/wrappers/table_bottom.mc' &> <& '/widgets/buttons/submit.mc', disp => 'Return', name => 'return', button => 'return_dgreen', value => 'Return', js => qq{onclick="window.close()"}, useTable => 0, &> <%args> $widget $element => undef <%init>; # The element object $element ||= get_state_data($widget, 'element'); my $relate_id = $element->get_related_story_id; my $excl_sub; if ($element->get_object_type eq 'story') { my $asset_id = get_state_data('story_prof', 'story')->get_id; $excl_sub = sub { return 1 if $_[0]->get_id == $asset_id; return !chk_authz($_[0], READ, 1); }; } else { $excl_sub = sub { return !chk_authz($_[0], READ, 1) }; } my $field_values = sub { my ($o, $field) = @_; if ($field eq 'title') { return '' . $o->get_title . ''; } elsif ($field eq 'action') { if ($relate_id == $o->get_id) { return qq{Un-relate}; } else { return qq{Relate}; } } };