X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=planetlab%2Fpersons%2Fpersons.php;h=85d8b408af24df42d5fa72c89da25af8cd1bf0e4;hb=27bb1ec08d010eb081ac3178cb70834846f1dba1;hp=f7eb758321975a946988cec4c1d295da3acd110c;hpb=376515b9a967482b4db80cffa1f68f74f9c0848e;p=plewww.git diff --git a/planetlab/persons/persons.php b/planetlab/persons/persons.php index f7eb758..85d8b40 100644 --- a/planetlab/persons/persons.php +++ b/planetlab/persons/persons.php @@ -1,6 +1,6 @@ l_persons(), - 'values'=>array('site_id'=>plc_my_site_id()), - 'bubble'=>'Lists accounts on site ' . $mysite_id); +$tabs []= tab_persons_mysite(); + +if (plc_is_admin()) + $tabs []= tab_persons_local(); // -------------------- -$peer_filter=array(); $person_filter=array(); //////////////////// @@ -54,17 +55,20 @@ function person_status ($person) { $messages [] = "No Key"; if ( ! $person['enabled'] ) $messages[] = "Disabled"; - //detect tech-only people involved in slices. + // for tech-only people: outline user if in a slice if ( ( count($person['roles'])==1 ) && - ( in_array('tech',$person['roles']) ) && - (! empty($person["slice_ids"])) ) - $messages[]="Tech involved in a Slice"; + ( in_array('tech',$person['roles']) ) ) { + if (! empty($person["slice_ids"]) ) $messages[]="Tech in a Slice"; + } else { + // or for other kind of people, if they have no slice + if ( count($person['slice_ids']) == 0) $messages [] = "No Slice"; + } return plc_vertical_table($messages,$class); } // fetch persons -$person_columns=array('first_name','last_name','email','roles','peer_id','key_ids','site_ids'); +$person_columns=array('person_id','first_name','last_name','email','roles','peer_id','key_ids','site_ids','enabled','slice_ids'); // PIs and admins can see users not yet enabled $privileges=plc_is_admin() || plc_is_pi(); if ( ! $privileges ) @@ -78,8 +82,9 @@ if ($pattern) { } // server-side selection on peerscope -list ( $peer_filter, $peer_label) = plc_peer_info($api,$_GET['peerscope']); -$person_filter=array_merge($person_filter,$peer_filter); +$peerscope=new PeerScope ($api,$_GET['peerscope']); +$person_filter=array_merge($person_filter,$peerscope->filter()); +$title .= ' - ' . $peerscope->label(); if ($site_id) { $sites=$api->GetSites(array($site_id),array("name","login_base","person_ids")); @@ -87,15 +92,16 @@ if ($site_id) { $name=$site['name']; $login_base=$site['login_base']; $title .= t_site($site); - $tabs = array_merge($tabs,tabs_site($site)); $person_filter['person_id']=$site['person_ids']; + if ($site_id != plc_my_site_id()) + $tabs []= tab_site($site); } if ($slice_id) { $slices=$api->GetSlices(array($slice_id),array('person_ids','name')); $slice=$slices[0]; $title .= t_slice($slice); - $tabs = array_merge($tabs,tabs_slice($slice)); + $tabs []= tab_slice($slice); $person_filter['person_id'] = $slice['person_ids']; } @@ -122,52 +128,68 @@ foreach ($sites as $site) { // -------------------- drupal_set_title($title); -plc_tabs($tabs); +plekit_linetabs($tabs); if ( ! $persons ) { drupal_set_message ('No account found'); return; } -$columns = array ("Peer"=>"string", - "Roles"=>"string", - "First"=>"string", - "Last"=>"string", - "Email"=>"string", - "Site" => "string", - "Status"=>"string", - ); - -// initial sort on email -$table_options=array(); -plc_table_start("persons",$columns,5,$table_options); - -$peer_hash = plc_peer_get_hash ($api); +$nifty=new PlekitNifty ('','objects-list','big'); +$nifty->start(); +$headers=array(); +if (plc_is_admin()) $headers["I"]='int'; +$headers["Peer"]="string"; +$headers["First"]="string"; +$headers["Last"]="string"; +$headers["Email"]="string"; +$headers["Site" ]= "string"; +$headers["R"]="string"; +$headers["S" ]= "int"; +$headers["Status"]="string"; + +// sort on email +if (! plc_is_admin()) $sort_column=3; +// but turn off initial sort for admins as this slows stuff down terribly +else $sort_column =-1; +$table=new PlekitTable("persons",$headers,$sort_column); +$table->start(); + +$peers=new Peers ($api); + // write rows foreach ($persons as $person) { $person_id=$person['person_id']; $email=$person['email']; - $shortname = plc_peer_shortname ($peer_hash,$person['peer_id']); $site_id=$person['site_ids'][0]; $site=$site_hash[$site_id]; $login_base = $site['login_base']; $roles = plc_vertical_table ($person['roles']); + $peer_id=$person['peer_id']; - plc_table_row_start($email); + $table->row_start(); - plc_table_cell($shortname); - plc_table_cell($roles); - plc_table_cell ($person['first_name']); - plc_table_cell ($person['last_name']); - plc_table_cell(l_person_t($person_id,$email)); - plc_table_cell($login_base); - plc_table_cell(person_status($person)); - plc_table_row_end(); + if (plc_is_admin()) $table->cell(href(l_person($person_id),$person_id)); + $peers->cell($table,$peer_id); + $table->cell (href(l_person($person_id),$person['first_name'])); + $table->cell (href(l_person($person_id),$person['last_name'])); + $table->cell(l_person_t($person_id,$email)); + $table->cell(l_site_t($site_id,$login_base),array('only-if'=>!$peer_id)); + $table->cell($roles,array('only-if'=>!$peer_id)); + $table->cell(count($person['slice_ids'])); + $table->cell(person_status($person)); + $table->row_end(); } - -plc_table_end($table_options); +$notes = array(); +if (plc_is_admin()) $notes[]= "I = person_id"; +$notes []= "R = roles"; +$notes []= "S = number of slices"; +$table->end(array('notes'=>$notes)); +$nifty->end(); + +//plekit_linetabs ($tabs,"bottom"); // Print footer include 'plc_footer.php';