-// construct role array
-for( $n=0; $n<count($roles); $n++ ) {
- $proles[]= array( 'role_id'=>$role_ids[$n], 'name'=>$roles[$n] );
- }
-
-$button_shown=0;
-if ( !empty ($roles) ) {
- foreach( $proles as $role ) {
- $role_name= $role['name'];
- $role_id= $role['role_id'];
-
- echo "<tr><td>$role_name";
-
-
- if( plc_is_admin()) {
- echo "</td><td><input type=checkbox name='rem_role[]' value='$role_id'>";
- if ( ! $button_shown ) {
- $rowspan=count($roles);
- echo "</td><td rowspan=$rowspan valign=center><input type=submit name='Remove_Roles' value='Remove Roles'></td></tr>\n";
- $button_shown=1;
- }
+ // construct array of role objs
+ $role_objs=array();
+ for ($n=0; $n<count($roles); $n++) {
+ $role_objs[]= array('role_id'=>$role_ids[$n], 'name'=>$roles[$n]);
+ }
+
+ if ($role_objs) foreach ($role_objs as $role_obj) {
+ $table->row_start();
+ $table->cell($role_obj['name']);
+ if ($can_manage_roles) $table->cell ($form->checkbox_html('role_ids[]',$role_obj['role_id']));
+ $table->row_end();
+ }
+
+ // footers : the remove and add buttons
+ if ($can_manage_roles) {
+
+ // remove
+ $table->tfoot_start();
+ if ($roles) {
+ $table->row_start();
+ $table->cell($form->submit_html("remove-roles-from-person","Remove Roles"),
+ array('hfill'=>true,'align'=>'right'));
+ $table->row_end();
+ }
+
+ // add
+ // compute the roles that can be added
+ if (plc_is_admin())
+ // all roles, except 'node' that does not make sense for a person
+ $exclude_role_ids=array(50);
+ else
+ // all roles except admin and pi, and node to avoid confusing people
+ $exclude_role_ids=array(10,20,50);
+ $possible_roles = roles_except($api->GetRoles(),$exclude_role_ids);
+ $roles_to_add = roles_except ($possible_roles,$role_ids);
+ if ( $roles_to_add ) {
+ $selectors=$form->role_selectors($roles_to_add);
+ $table->row_start();
+ $add_role_left_area=$form->select_html("role_id",$selectors,array('label'=>"Choose role"));
+ // add a role : the button
+ $add_role_right_area=$form->submit_html("add-role-to-person","Add role");
+ $table->cell ($add_role_left_area . $add_role_right_area,
+ array('hfill'=>true,'align'=>'right'));
+ $table->row_end();