2 # Show a table of all project attributes
4 require './rbac-lib.pl';
5 &ui_print_header(undef, $text{'projects_title'}, "", "projects", 0, 0, 0,
6 &help_search_link("resource_controls", "man"));
8 $projects = &list_projects();
9 @canprojects = @$projects;
11 print "<a href='edit_project.cgi?new=1'>$text{'projects_add'}</a><br>\n";
12 print &ui_columns_start(
13 [ $text{'projects_name'},
14 $text{'projects_desc'},
15 $text{'projects_users'},
16 $text{'projects_groups'} ]);
17 foreach $p (sort { $a->{'name'} cmp $b->{'name'} } @canprojects) {
18 print &ui_columns_row(
19 [ "<a href='edit_project.cgi?idx=$p->{'index'}'>$p->{'name'}</a>",
21 &nice_user_list("users", $p->{'users'}),
22 &nice_user_list("groups", $p->{'groups'}),
25 print &ui_columns_end();
28 print "<b>$text{'projects_none'}</b><p>\n";
30 print "<a href='edit_project.cgi?new=1'>$text{'projects_add'}</a><br>\n";
32 &ui_print_footer("", $text{"index_return"});
34 # nice_user_list(mode, * or !* or user,user)
38 local @users = split(/,/, $_[1]);
39 local %users = map { $_, 1 } @users;
40 if ($users{'*'} && @users == 1) {
41 return $text{'projects_all'.$mode};
43 elsif (@users == 0 || $users{'!*'} && @users == 1) {
44 return $text{'projects_none'.$mode};
48 return &text('projects_except'.$mode,
49 join(", ", map { /^\!(.*)/; "<tt>$1</tt>" }
50 grep { /^\!/ } @users[1..$#users]));
52 elsif ($users{'!*'}) {
54 return &text('projects_only'.$mode,
55 join(", ", map { "<tt>$_</tt>" }
56 grep { !/^\!/ } @users[1..$#users]));
60 return &text('projects_only'.$mode,
61 join(", ", map { "<tt>$_</tt>" } @users));