#!/usr/local/bin/perl # Show one project require './rbac-lib.pl'; $access{'projects'} || &error($text{'projects_ecannot'}); &ReadParse(); $projects = &list_projects(); if ($in{'new'}) { &ui_print_header(undef, $text{'project_title1'}, ""); # Pick a free ID %taken = map { $_->{'id'}, 1 } @$projects; for($id=$config{'base_id'}; $taken{$id}; $id++) { } $project = { 'id' => $id }; } else { &ui_print_header(undef, $text{'project_title2'}, ""); $project = $projects->[$in{'idx'}]; } print &ui_form_start("save_project.cgi", "post"); print &ui_hidden("idx", $in{'idx'}),"\n"; print &ui_hidden("new", $in{'new'}),"\n"; print &ui_table_start($text{'project_header'}, "width=100%", 2); print &ui_table_row($text{'project_name'}, &ui_textbox("name", $project->{'name'}, 20)); print &ui_table_row($text{'project_id'}, &ui_textbox("id", $project->{'id'}, 5)); print &ui_table_row($text{'project_desc'}, &ui_textbox("desc", $project->{'desc'}, 60)); print &ui_table_row($text{'project_users'}, &project_members_input("users", $project->{'users'})); print &ui_table_row($text{'project_groups'}, &project_members_input("groups", $project->{'groups'})); # Work out which resources this project has foreach $a (keys %{$project->{'attr'}}) { $v = $project->{'attr'}->{$a}; if ($a eq "project.pool") { # Special case for project pool $pool = $v; } elsif ($a eq "rcap.max-rss") { # Special case for max RSS $maxrss = $v; } elsif ($v) { while($v =~ /^\(([^,]+),([^,]+),([^,]+)\),?(.*)$/) { push(@res, [ $a, $1, $2, $3 ]); $v = $4; } } else { push(@res, [ $a ]); } } print &ui_table_row($text{'project_pool'}, &ui_opt_textbox("pool", $pool, 40, $text{'default'})); print &ui_table_row($text{'project_maxrss'}, &ui_radio("maxrss_def", $maxrss ? 0 : 1, [ [ 1, $text{'default'} ], [ 0, &ui_bytesbox("maxrss", $maxrss) ] ])); print &ui_table_end(),"
\n"; # Show table for resources print &ui_table_start($text{'project_header2'}, "width=100%", 2); print "