#!/usr/local/bin/perl # Show a table of all project attributes require './rbac-lib.pl'; &ui_print_header(undef, $text{'projects_title'}, "", "projects", 0, 0, 0, &help_search_link("resource_controls", "man")); $projects = &list_projects(); @canprojects = @$projects; if (@canprojects) { print "$text{'projects_add'}
\n"; print &ui_columns_start( [ $text{'projects_name'}, $text{'projects_desc'}, $text{'projects_users'}, $text{'projects_groups'} ]); foreach $p (sort { $a->{'name'} cmp $b->{'name'} } @canprojects) { print &ui_columns_row( [ "$p->{'name'}", $p->{'desc'}, &nice_user_list("users", $p->{'users'}), &nice_user_list("groups", $p->{'groups'}), ]); } print &ui_columns_end(); } else { print "$text{'projects_none'}

\n"; } print "$text{'projects_add'}
\n"; &ui_print_footer("", $text{"index_return"}); # nice_user_list(mode, * or !* or user,user) sub nice_user_list { local $mode = $_[0]; local @users = split(/,/, $_[1]); local %users = map { $_, 1 } @users; if ($users{'*'} && @users == 1) { return $text{'projects_all'.$mode}; } elsif (@users == 0 || $users{'!*'} && @users == 1) { return $text{'projects_none'.$mode}; } elsif ($users{'*'}) { # All except some return &text('projects_except'.$mode, join(", ", map { /^\!(.*)/; "$1" } grep { /^\!/ } @users[1..$#users])); } elsif ($users{'!*'}) { # Only some return &text('projects_only'.$mode, join(", ", map { "$_" } grep { !/^\!/ } @users[1..$#users])); } else { # Only listed return &text('projects_only'.$mode, join(", ", map { "$_" } @users)); } }