slice page in progress, can renew and manage users
authorThierry Parmentelat <thierry.parmentelat@sophia.inria.fr>
Wed, 11 Mar 2009 23:55:30 +0000 (23:55 +0000)
committerThierry Parmentelat <thierry.parmentelat@sophia.inria.fr>
Wed, 11 Mar 2009 23:55:30 +0000 (23:55 +0000)
planetlab/common/actions.php
planetlab/persons/person.php
planetlab/persons/persons.php
planetlab/slices/slice.php
plekit/niftycorner/nifty_init.js
plekit/php/table.php
plekit/table/table.js

index b7b2bc8..9c519b8 100644 (file)
@@ -69,6 +69,10 @@ $known_actions []= "update-site";
 //////////////////////////////////////// slices
 $known_actions []= "renew-slice";
 //     expects:        slice_id & expires
+$known_actions []= 'remove-persons-from-slice';
+//     expects:        slice_id & person_ids
+$known_actions []= 'add-persons-in-slice';
+//     expects:        slice_id & person_ids
 
 //////////////////////////////////////// tag types
 $known_actions []= "update-tag-type";
@@ -430,18 +434,21 @@ switch ($action) {
  }
 
 //////////////////////////////////////////////////////////// slices
- case 'renew_slice': {
+ case 'renew-slice': {
    $slice_id = intval ($_POST['slice_id']);    
    $expires = intval ($_POST['expires']);
    // 8 weeks from now
    // xxx
-   $now=date();
+   $now=mktime();
+   $WEEK=7*24*3600;
    $WEEKS=8;
-   $MAX_FUTURE=$WEEKS*7*24*3600;
+   $MAX_FUTURE=$WEEKS*$WEEK;
    if ( ($expires-$now) > $MAX_FUTURE) {
-     drupal_set_error("Cannot renew slice that far in the future, max is $WEEKS from now");
+     drupal_set_error("Cannot renew slice that far in the future, max is $WEEKS weeks from now");
      plc_redirect(l_slice($slice_id));
    }
+   plc_debug('slice_id',$slice_id);
+   plc_debug('expires',$expires);
    if ($api->UpdateSlice ($slice_id, array('expires'=>$expires)) == 1)
      drupal_set_message("Slice renewed");
    else
@@ -450,6 +457,45 @@ switch ($action) {
    break;
  }
 
+ case 'remove-persons-from-slice': {
+   $slice_id = intval ($_POST['slice_id']);    
+   $person_ids = $_POST['person_ids'];
+   
+   $success=true;
+   $counter=0;
+   foreach( $person_ids as $person_id ) {
+     if ($api->DeletePersonFromSlice(intval($person_id),$slice_id) != 1) 
+       $success=false;
+     else
+       $counter++;
+   }
+   if ($success) 
+     drupal_set_message ("Deleted $counter person(s)");
+   else
+     drupal_set_error ("Could not delete all selected persons, only $counter were removed");
+   plc_redirect(l_slice($slice_id));
+   break;
+ }
+
+ case 'add-persons-in-slice': {
+   $slice_id = intval ($_POST['slice_id']);    
+   $person_ids = $_POST['person_ids'];
+   
+   $success=true;
+   $counter=0;
+   foreach( $person_ids as $person_id ) {
+     if ($api->AddPersonToSlice(intval($person_id),$slice_id) != 1) 
+       $success=false;
+     else
+       $counter++;
+   }
+   if ($success) 
+     drupal_set_message ("Added $counter person(s)");
+   else
+     drupal_set_error ("Could not add all selected persons, only $counter were added");
+   plc_redirect(l_slice($slice_id));
+   break;
+ }
 
 //////////////////////////////////////////////////////////// tag types
 
index 3154035..5521a40 100644 (file)
@@ -342,7 +342,7 @@ if ($can_manage_roles) {
   $selectors=$form->role_selectors_excluding($api,$role_ids);
   $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",array('label'=>"Add role"));
+  $add_role_right_area=$form->submit_html("add-role-to-person","Add role");
   $table->cell ($add_role_left_area . $add_role_right_area,
                $table->columns(),"right");
   $table->row_end();
index ccc4219..86203bd 100644 (file)
@@ -139,7 +139,7 @@ $headers = array ("Peer"=>"string",
                  "Last"=>"string",
                  "Email"=>"string",
                  "Site" => "string",
-                 "Roles"=>"string",
+                 "R"=>"string",
                  "S" => "int",
                  "Status"=>"string",
                  );
index 7366067..1259f61 100644 (file)
@@ -20,113 +20,16 @@ require_once 'linetabs.php';
 require_once 'table.php';
 require_once 'details.php';
 require_once 'toggle.php';
+require_once 'form.php';
+
+// -------------------- admins potentially need to get full list of users
+ini_set('memory_limit','32M');
 
 // -------------------- 
 // recognized URL arguments
 $slice_id=intval($_GET['id']);
 if ( ! $slice_id ) { plc_error('Malformed URL - id not set'); return; }
 
-function renew_area ($slice,$site) {
-  // Constants
-  $week= 7 * 24 * 60 * 60; // seconds
-  $max_renewal_length= 8; // weeks from today
-  $max_expiration= mktime() + ($max_renewal_length * $week); // seconds since epoch
-  $max_expiration_date= gmstrftime("%A %b-%d-%y %T %Z", $max_expiration);
-  
-  // the renew area
-  // xxx some extra code needed to enable this area only if the slice description is OK:
-  // description and url must be non void
-  $toggle=new PlekitToggle('renew',"Renew this slice",
-                          array("trigger-bubble"=>"Enter this zone if you wish to renew your slice",
-                                'start-visible'=>true));
-  $toggle->start();
-
-  // xxx message could take roles into account
-  if ($site['max_slices']<=0) {
-     $message= <<< EOF
-<p>Slice creation and renewal have been temporarily disabled for your
-site. This may have occurred because your site's nodes have been down
-or unreachable for several weeks, and multiple attempts to contact
-your site's PI(s) and Technical Contact(s) have all failed. If so,
-contact your site's PI(s) and Technical Contact(s) and ask them to
-bring up your site's nodes. Please visit your <a
-href='/db/sites/index.php?id=$site_id'>site details</a> page to find
-out more about your site's nodes, and how to contact your site's PI(s)
-and Technical Contact(s).</p>
-EOF;
-     echo $message;
-  } else {
-    // xxx this is a rough cut and paste from the former UI
-    // Showing a datepicker view could be considered as well with some extra work
-    // Calculate possible extension lengths
-    $renewal_lengths = array();
-    foreach ( array ( 1 => "One more week", 
-                     2 => "Two more weeks", 
-                     4 => "One more month" ) as $weeks => $text ) {
-       if (($slice [ 'expires' ] + ($weeks * $week)) < $max_expiration) {
-        $renewal_lengths [ $weeks ] = "$text (" . 
-          gmstrftime( "%A %b-%d-%y %T %Z", $slice [ 'expires' ] + ( $weeks * $week ) ) 
-          . ")";
-       }
-    }
-
-    if ( empty( $renewal_lengths ) ) {
-      plc_warning("Slice cannot be renewed any further into the future, try again closer to expiration date.");
-     } else {
-      // clean vars
-       $expiration_date = gmstrftime( "%A %b-%d-%y %T %Z", $slice [ 'expires' ] );
-       echo '<p> area under construction </a>';
-       
-       //       // display form
-       //       echo "<form action='/db/slices/renew_slice.php' method='post'>\n";
-       //       echo "<input type=hidden name='id' value='$slice_id'><input type=hidden name='expires' value='". $slice['expires'] ."'>\n";
-     
-// $message = <<< EOF
-// <p>You must provide a short description as well as a link to a project website before renewing it.
-// Do <span class='bold'>not</span> provide bogus information; if a complaint is lodged against your slice 
-// and PlanetLab Operations is unable to determine what the normal behavior of your slice is, 
-// your slice may be deleted to resolve the complaint.</p>
-// EOF;
-// echo $message;
-//       
-//       echo "<p><span class='bold'>NOTE:</span> 
-// Slices cannot be renewed beyond $max_renewal_length weeks of today ($max_expiration_date).</p>\n";
-//       
-//       echo "<table cellpadding=2><tbody>\n";
-//       
-//       echo "<tr><th>Name:</th><td colspan=2>". $slice['name'] ."</td></tr>\n";
-//       
-//       if( $error['url'] ) 
-//         $url_style= " style='border: 1px solid red;'";
-//       echo "<tr><th$url_style>URL: </th><td$url_style><input size=50 name='url' value='". $slice['url'] ."' /></td><td$url_style><font color=red>". $error['url'] ."</font></td></tr>\n";
-//       
-//       if( $error['description'] ) 
-//         $desc_style= " style='border: 1px solid red;'";
-//       echo "<tr><th$desc_style>Description: </th><td$desc_style><textarea name='description' rows=5 cols=40>". $slice['description'] ."</textarea></td><td$desc_style><font color=red>". $error['description'] ."</font></td></tr>\n";
-//       
-//       echo "<tr><th>Expiration Date: </th><td colspan=2>$expiration_date</td></tr>\n";
-//       
-//       echo "<tr><th>Renewal Length: </th><td colspan=2><select name='expire_len'>";
-//       
-//       // create drop down of lengths to choose
-//       foreach ($renewal_lengths as $weeks => $text) {
-//         echo "<option value='$weeks'";
-//         if( $weeks == $expire_len )
-//           echo " selected";
-//         echo ">$text</option>\n";
-       }
-//       
-//       echo "</select></td></tr>\n<tr><td colspan=3 align=center><input type=submit value='Renew Slice' name='submitted'></td></tr>\n</tbody></table>\n";
-//     
-//     }
-//     
-  }
-  $toggle->end();
-}
-
 ////////////////////
 // Get all columns as we focus on only one entry
 $slices= $api->GetSlices( array($slice_id));
@@ -156,6 +59,8 @@ $sites= $api->GetSites( array( $site_id ) );
 $site=$sites[0];
 $site_name= $site['name'];
 $max_slices = $site['max_slices'];
+// xxx PIs
+//$pis=$api->GetPersons(...)
 
 // get all persons info
 if (!empty($person_ids))
@@ -216,307 +121,188 @@ $details->th_td('URL',$slice['url'],'url',array('width'=>50));
 $details->th_td('Expires',$expires);
 $details->th_td('Instantiation',$slice['instantiation']);
 $details->th_td('Site',l_site_obj($site));
+// xxx
+//$details->th_td('PIs',...);
 $details->end();
 
 $details->form_end();
 $toggle->end();
 
-renew_area ($slice,$site);
-
-$peers->block_end($peer_id);
-
-//////////////////// users
-
-//////////////////// nodes
-
-//////////////////// tags
-
-// Print footer
-include 'plc_footer.php';
-
-return;
-
-?>
-
-
-
+//////////////////////////////////////// renewal area
 
+function renew_area ($slice,$site) {
+    // Constants
+  $DAY = 24*60*60;
+  $WEEK = 7 * $DAY; 
+  $MAX_WEEKS= 8;                       // weeks from today
+  $now=mktime();
+  $current_exp=$slice['expires'];
+  $max_exp= $now + ($MAX_WEEKS * $WEEK); // seconds since epoch
+
+  // make this area visible only is the expiration time is less than 10 days from now
+  $time_left = $current_exp - $now;
+  $visible = $time_left/$DAY <= 10;
+  
+  // xxx some extra code needed to enable this area only if the slice description is OK:
+  // description and url must be non void
+  $toggle=new PlekitToggle('renew',"Renew this slice",
+                          array("trigger-bubble"=>"Enter this zone if you wish to renew your slice",
+                                'start-visible'=>$visible));
+  $toggle->start();
 
-
-
-
-
-
-
-
-
-
-  // gets all persons from site_id
-    // person info
-  if( !empty( $person_ids ) ) 
-    $persons= $api->GetPersons( $site_info[0]['person_ids'] , array( "person_id", "role_ids", "first_name", "last_name", "email" ) );
-
-  if( $persons ) {
-    // gets site contacts pis stores in dict
-    foreach( $persons as $person )
-      if( in_array( "20", $person['role_ids'] ) ) {
-       $pis[]= array( "email" => $person['email'], "first_name" => $person['first_name'], "last_name" => $person['last_name'], "person_id" => $person['person_id'] );
-       
+  // xxx message could take roles into account
+  if ($site['max_slices']<=0) {
+     $message= <<< EOF
+<p>Slice creation and renewal have been temporarily disabled for your
+<site. This may have occurred because your site's nodes have been down
+or unreachable for several weeks, and multiple attempts to contact
+your site's PI(s) and Technical Contact(s) have all failed. If so,
+contact your site's PI(s) and Technical Contact(s) and ask them to
+bring up your site's nodes. Please visit your <a
+href='/db/sites/index.php?id=$site_id'>site details</a> page to find
+out more about your site's nodes, and how to contact your site's PI(s)
+and Technical Contact(s).</p>
+EOF;
+     echo $message;
+  } else {
+    // xxx this is a rough cut and paste from the former UI
+    // showing a datepicker view could be considered as well with some extra work
+    // calculate possible extension lengths
+    $selectors = array();
+    foreach ( array ( 1 => "One more week", 
+                     2 => "Two more weeks", 
+                     3 => "Two more weeks", 
+                     4 => "One more month" ) as $weeks => $text ) {
+      $candidate_exp = $current_exp + $weeks*$WEEK;
+      if ( $candidate_exp < $max_exp) {
+       $selectors []= array('display'=>"$text (" . gmstrftime("%A %b-%d-%y %T %Z", $candidate_exp) . ")",
+                            'value'=>$candidate_exp);
+       $max_renewal_weeks=$weeks;
+       $max_renewal_date= gmstrftime("%A %b-%d-%y %T %Z", $candidate_exp);
       }
-    if ($pis) {
-      sort_persons( $pis );
     }
-  }
 
-  // slice tag info
-  if( !empty( $slice_tag_ids ) )
-    $slice_attibs= $api->GetSliceTags( $slice_tag_ids, 
-                                      array( "slice_tag_id", "tag_type_id", "value", "description", "min_role_id", "node_id" ) );
-
-  // gets tag type info and combines it to form all tag info array
-  if( $slice_attibs ) {
-    foreach( $slice_attibs as $slice_attib ) {
-      $tag_type= $api->GetTagTypes( array( $slice_attib['tag_type_id'] ), 
-                                   array( "tag_type_id", "tagname", "description" ) );
-      
-      $tags[]= array( "slice_tag_id" => $slice_attib['slice_tag_id'], 
-                     "tag_type_id" => $slice_attib['tag_type_id'], 
-                     "tagname" => $tag_type[0]['tagname'], 
-                     "value" => $slice_attib['value'], 
-                     "description" => $slice_attib['description'], 
-                     "min_role_id" => $slice_attib['min_role_id'], 
-                     "node_id" => $slice_attib['node_id'] );
-    }
+    if ( empty( $selectors ) ) {
+      plc_warning("Slice cannot be renewed any further into the future, try again closer to expiration date.");
+     } else {
+      print <<< EOF
+<p>You must provide a short description as well as a link to a project website before renewing it.
+Do <span class='bold'>not</span> provide bogus information; if a complaint is lodged against your slice 
+and PlanetLab Operations is unable to determine what the normal behavior of your slice is, 
+your slice may be deleted to resolve the complaint.</p>
+<p><span class='bold'>NOTE:</span> 
+Slices cannot be renewed beyond another $max_renewal_weeks week(s) ($max_renewal_date)
+.</p>
+EOF;
 
+      $form = new PlekitForm (l_actions(),
+                             array('action'=>'renew-slice',
+                                   'slice_id'=>$slice['slice_id']));
+      $form->start();
+      print $form->label_html('expires','Duration');
+      print $form->select_html('expires',$selectors,array('label'=>'Pick one'));
+      print $form->submit_html('renew-button','Renew');
+      $form->end();
+    }
   }
+  $toggle->end();
+}
 
-  drupal_set_title("Slice details for " . $name);
-  // start form
+renew_area ($slice,$site);
 
-  if( $peer_id ) {
-    echo "<div class='plc-foreign'>\n";
-  }
+//////////////////// users
+$persons=$api->GetPersons(array('person_id'=>$slice['person_ids']));
+// just propose to add evryone else, regular users can see only a fraction of the db anyway
+$potential_persons=$api->GetPersons(array('~person_id'=>$slice['person_ids'],'peer_id'=>NULL),
+                                   array('email','person_id','first_name','last_name','roles'));
+$toggle=new PlekitToggle ('persons',"Users",array('trigger-bubble'=>'Manage users attached to this slice','start-visible'=>false));
+$toggle->start();
 
-  // basic slice menu
-  if( ! $peer_id ) {
+////////// people currently in
+$headers=array();
+$headers['email']='string';
+$headers['first']='string';
+$headers['last']='string';
+$headers['R']='string';
+if ($privileges) $headers[plc_delete_icon()]="none";
+$table=new PlekitTable('persons',$headers,'1',array('caption'=>'Current users',
+                                                   'search_area'=>false,
+                                                   'notes_area'=>false,
+                                                   'pagesize_area'=>false));
+$form=new PlekitForm(l_actions(),array('slice_id'=>$slice['slice_id']));
+$form->start();
+$table->start();
+if ($persons) foreach ($persons as $person) {
+  $table->row_start();
+  $table->cell(l_person_obj($person));
+  $table->cell($person['first_name']);
+  $table->cell($person['last_name']);
+  $table->cell(plc_vertical_table ($person['roles']));
+  if ($privileges) $table->cell ($form->checkbox_html('person_ids[]',$person['person_id']));
+  $table->row_end();
+}
+// actions area
+if ($privileges) {
 
-    $actions= array( ''=>'Choose Action' );
-    
-    if( in_array( 10, $_roles ) 
-       || ( in_array( 20, $_roles ) && in_array( $site_id, $_person['site_ids'] ) ) 
-       || in_array( $slice_id, $_person['slice_ids'] ) ) {
-      $actions['renew']= "Renew $name";
-      $actions['nodes']= "Manage Nodes";
-    }
-    if ( in_array( 10, $_roles )
-        || ( in_array( 20, $_roles ) && in_array( $site_id, $_person['site_ids'] ) ) ) {
-      $actions['users']= "Manage Users";
-      $actions['delete']= "Delete $name";
-    }
-    
-    echo "<table><tr><td>\n";
-    if (in_array( 10, $_roles )) {
-      echo plc_event_button("slices","slice",$slice_id);
-      echo "</td><td>";
-    }
-    echo plc_comon_button("slice_id",$slice_id);
-    echo "</td><td>\n";
-
-    echo "<form action='/db/slices/slice_action.php' method='post'>\n";
-    echo "<input type=hidden name=slice_id value=$slice_id>\n";
-
-    echo "<select name='actions' onChange=\"submit();\">\n";
-    foreach( $actions as $key => $val ) {
-      echo "<option value='$key'";
-      
-      if( $key == $_POST['actions'] )
-       echo " selected";
-      
-      echo ">$val\n";
-    }
-    
-    echo "</select><br />\n";
-    echo "</form>\n";
+  // remove users
+  $table->tfoot_start();
 
-    echo "</td></tr></table>\n";
-  }
+  $table->row_start();
+  $table->cell($form->submit_html ("remove-persons-from-slice","Remove selected"),
+              $table->columns(),"right");
+  $table->row_end();
+ }
+$table->end();
 
-  echo "<table cellpadding=3><tbody>\n
-       <tr><th>Slice Name: </th><td> $name </td></tr>\n
-       <tr><th>Description: </th><td> $description </td></tr>\n
-        <tr><th>URL: </th><td> <a href='$url'>$url</a> </td></tr>\n";
-       
-  if( gmmktime() > $slice['expires'] ) { 
-    $class1= ' style="color:red;"'; 
-    $msg1= '(slice is expired)'; 
-  }
-  echo "<tr><th$class1>Expiration: </th><td$class1> $expires &nbsp; $msg1</td></tr>\n";
-  echo "<tr><th>Instantiation: </th><td><select name='instantiation' onChange=\"submit();\"\n";
-  echo "<option value='delegated'"; 
-  if( $instantiation == 'delegated' ) echo " selected"; 
-  echo ">delegated</option>";
-  echo "<option value='plc-instantiated'"; 
-  if( $instantiation == 'plc-instantiated' ) echo " selected"; 
-  echo ">plc-instantiated</option>";
-  echo "<option value='not-instantiated'"; 
-  if( $instantiation == 'not-instantiated' ) echo " selected"; 
-  echo ">not-instantiated</option>";
-  echo "</select>"; 
-
-  echo "</td></tr>\n";
-  echo "<tr><th>Site: </th><td> <a href='/db/sites/index.php?id=$site_id'>". $site_info[0]['name'] ."</a></td></tr>\n";
-  $href="'/db/nodes/index.php?slice_id=" . $slice_id . "'";
-  printf ("<tr><th> <a href=%s># Nodes</a></th><td><a href=%s>Total %d nodes</a></td>\n",$href,$href,count($node_ids));
-  $href="'/db/persons/index.php?slice_id=" . $slice_id . "'";
-  printf ("<tr><th> <a href=%s># Users</a></th><td><a href=%s>Total %d users</a></td>\n",$href,$href,count($person_ids));
-  echo "</tbody></table>\n";
-
-  if ( (!$class1) && in_array( $slice_id, $_person['slice_ids'] ) && (! $peer_id) ) 
-    echo "<p><a href='update_slice.php?id=$slice_id'>Update Information</a>\n";
-
-  echo "<br /><hr />\n";
-
-
-  // slice tags
-  if( $tags ) {
-
-    // builds 2 arrays, one for tags, one for slivers
-    foreach( $tags as $tag ) {
-      if( empty( $tag['node_id'] ) ) {
-        $slice_tag[]= $tag;
-      }
-      else {
-        $sliver_tag[]= $tag;
-        $sliver_nodes[]= $tag['node_id'];
-      }
+////////// people to add
+if ($privileges) {
+  $headers=array();
+  $headers['email']='string';
+  $headers['first']='string';
+  $headers['last']='string';
+  $headers['R']='string';
+  $headers['Add']="none";
+  $table=new PlekitTable('add_persons',$headers,'1',array('caption'=>'Users to add',
+                                                         'search_area'=>false,
+                                                         'notes_area'=>false));
+  //                                                     'pagesize'=>5));
+  $form=new PlekitForm(l_actions(),array('slice_id'=>$slice['slice_id']));
+  $form->start();
+  $table->start();
+  if ($potential_persons) foreach ($potential_persons as $person) {
+      $table->row_start();
+      $table->cell(l_person_obj($person));
+      $table->cell($person['first_name']);
+      $table->cell($person['last_name']);
+      $table->cell(plc_vertical_table ($person['roles']));
+      $table->cell ($form->checkbox_html('person_ids[]',$person['person_id']));
+      $table->row_end();
     }
-  }
+  // add users
+  $table->tfoot_start();
+  
+  $table->row_start();
+  $table->cell($form->submit_html ("add-persons-in-slice","Add selected"),
+              $table->columns(),"right");
+  $table->row_end();
+ }
+$table->end();
 
-  // Get node info for those slivers
-  $sliver_node_info= $api->GetNodes( $sliver_nodes, array( "node_id", "hostname" ) );
+$toggle->end();
 
-  if( $sliver_node_info ) {
-    foreach( $sliver_node_info as $sliv_node ) {
-      $new_sliver_node_info[$sliv_node['node_id']]= $sliv_node;
-    }
-  }
+//////////////////// nodes
 
- if( $peer_id ) {
-   echo "<br /></div>\n";
-  }
-  // slice tags
-  $is_admin=in_array( 10, $_roles );
-  $is_in_slice=in_array( $slice_id, $_person['slice_ids'] );
-  $is_pi=in_array( 20, $_roles );
-  if( $slice_tag ) {
-    echo "<table cellpadding=3><caption class='list_set'>Slice Tags</caption>";
-    echo "<thead><tr>";
-    if( $is_admin )
-      echo "<th></th>";
-    echo "<th>Tag</th><th>Value</th><th>Description</th>";
-    echo "</tr></thead><tbody>\n";
-
-    foreach( $tags as $tag ) {
-      // ignore sliver tags at this stage
-      if( empty( $tag['node_id'] ) ) {
-        echo("<tr>");
-        if( $is_admin ) {
-         printf("<td>");
-         sprintf($label,"\\n [ %s = %s] \\n from %s",$tag['tagname'],$tag['value'],$name);
-         // xxx this is deprecated
-         echo plc_delete_link_button ('tag_action.php?rem_id=' . $tag['slice_tag_id'],
-                                      $label);
-         echo "</td>";
-       }
-       if( $is_admin || ($is_pi && $is_in_slice) ) {
-          printf ("<td><a href='tags.php?type=slice?id=%s'>%s</a></td>",
-                 $tag['slice_tag_id'],$tag['tagname']);
-       } else {
-         printf("<td>%s</td>",$tag['tagname']);
-       }
-       printf("<td align=center>%s</td><td>%s</td>",
-              $tag['value'],$tag['description']);
-        echo "</tr>";
-      }
-    }
+//////////////////// tags
 
-    
-    echo "</tbody></table>\n";
+$peers->block_end($peer_id);
 
-  }
-  if( $is_admin || ($is_pi && $is_in_slice) )
-    echo "<a href='tags.php?type=slice&add=$slice_id'>Add a Slice Tag</a>\n";    
-
-
-
-  // sliver tags
-  if( $sliver_tag ) {
-    echo "<table cellpadding=3><caption class='list_set'>Sliver Tags</caption>";
-    echo "<thead><tr>";
-    if( $is_admin )
-      echo "<th></th>";
-    echo "<th>Tag</th><th>Value</th><th>Description</th><th>Node</th>";
-    echo "</tr></thead><tbody>\n";
-
-    foreach( $tags as $tag ) {
-      $nodename=$new_sliver_node_info[$tag['node_id']]['hostname'];
-      // consider only sliver tags at this stage
-      if( !empty( $tag['node_id'] ) ) {
-        echo("<tr>");
-        if( $is_admin ) {
-         echo("<td>");
-         $label=sprintf("\\n [ %s = %s ] \\n from %s \\n on node %s",
-                        $tag['tagname'],$tag['value'],$name,$nodename);
-         echo plc_delete_link_label('/db/nodes/sliver_action.php?rem_id=' . $tag['slice_tag_id'], 
-                                    $label);
-         echo "</td>";
-       }
-        if( $is_admin ) {
-          printf("<td><a href='tags.php?type=slice&id=%s'>%s</a></td>",$tag['slice_tag_id'],$tag['tagname']);
-       } else {
-         printf("<td>%s</td>",$tag['tagname']);
-       }
-       printf("<td align=center>%s</td><td>%s</td><td><a href='/db/nodes/index.php?id=%s'>%s</a></td>",
-              $tag['value'],$tag['description'],$tag['node_id'],$nodename);
-       
-        echo "</tr>";
-      }
-    }
+// Print footer
+include 'plc_footer.php';
 
-    echo "</tbody></table>\n";
-    
-  }
-  
-  echo "<br /><hr />\n";
-  
-  if( $pis && !$peer_id ) {
-    // site contacts
-    echo "<h5>Contacts</h5>\n";
-               
-    $pi_rows= count( $pis );
-    $tech_rows= count( $techs );
-    $table_row= 0;
-       
-    echo "<table cellpadding=2><tbody>";
-    if( $pis ) {
-      echo "<tr><td rowspan=$pi_rows><strong>PI's:</strong> &nbsp; </td>\n";
-      
-      foreach( $pis as $pi ) {
-       if( $table_row != 0 )
-         echo "<tr>";
-       printf("<td><a href='/db/persons/index.php?id=%s'>%s %s</td><td><a href='mailto:%s'>%s</a></td></tr>\n",
-              $pi['person_id'],$pi['first_name'],$pi['last_name'],$pi['email'],$pi['email']);
-       $table_row++;
-      }
-      
-    }
-    
-    echo "</table>\n<br /><hr />\n";
-    
-  }
-  
-  
-  echo "<p><a href='index.php'>Back to slice list</a></div>\n";
- }
+return;
+
+?>
 
index d027e00..49aa5d2 100644 (file)
 var nifty_inited = false;
 
 function nifty_init () {
-  window.console.log('initing - 1');
   if ( nifty_inited ) return;
-  window.console.log('initing - 2');
   var elements=document.getElementsByClassName('nifty-medium');
   for (var i=0; i<elements.length; i++) {
-    window.console.log('catched ' + elements[i].id);
     Nifty('div#'+elements[i].id,'medium');
   }
   nifty_inited = true;
index a475bee..481cbc6 100644 (file)
@@ -32,6 +32,7 @@ class PlekitTable {
   var $headers;
   var $column_sort;
   // options
+  var $caption;
   var $search_area;   // boolean (default true)
   var $pagesize_area; // boolean (default true)
   var $notes_area;    // boolean (default true)
@@ -64,6 +65,7 @@ class PlekitTable {
   function set_options ($options) {
     if ( ! $options)
       return;
+    if (array_key_exists('caption',$options)) $this->caption=$options['caption'];
     if (array_key_exists('search_area',$options)) $this->search_area=$options['search_area'];
     if (array_key_exists('pagesize_area',$options)) $this->pagesize_area=$options['pagesize_area'];
     if (array_key_exists('notes_area',$options)) $this->notes_area=$options['notes_area'];
@@ -101,6 +103,8 @@ EOF;
   if ($this->search_area) 
     print $this->search_area_html ();
 
+  if ($this->caption) 
+    print "<caption> $this->caption </caption>";
   print "<tr>";
   foreach ($this->headers as $label => $type) {
     switch ($type) {
index 5851acd..8656af9 100644 (file)
@@ -136,7 +136,6 @@ function plekit_table_filter (table_id,pattern_id,and_id) {
   var previous_pattern=table['previous_pattern'];
   var previous_mode=table['previous_mode'];
   if ( (previous_pattern == pattern_text) && (previous_mode == and_if_true) ) {
-    window.console.log ('no change in pattern');
     return;
   }
 
@@ -145,14 +144,12 @@ function plekit_table_filter (table_id,pattern_id,and_id) {
   var searches=new Array();
   var patterns=new Array();
   for (var i=0; i < pattern_texts.length; i++) {
-    window.console.log ('compiled ' + i + '-th pattern = [' + pattern_texts[i] + ']');
     // ignore case
     searches[i]=pattern_texts[i].toLowerCase();
     patterns[i]=new RegExp(pattern_texts[i],"i");
   }
 
   // scan rows, elaborate 'visible'
-  window.console.log ('we have ' + rows.length + ' rows');
   for (var row_index = 0; row_index < rows.length ; row_index++) {
     var tr=rows[row_index];
     var visible=false;
@@ -199,11 +196,6 @@ function plekit_table_filter (table_id,pattern_id,and_id) {
   // optimize useless calls to init, by comparing # of matching entries
   var previous_matching=table['previous_matching'];
   if (matching_entries == previous_matching) {
-    window.console.log ('same # of matching entries - skipped redisplay');
-    window.console.log ("plekit_table_filter: " + 
-                       match_attempts + " matches - " +
-                       matching_entries + " lines - " 
-                       + "match=" + match_ms + " ms");
     return;
   }
   
@@ -212,11 +204,6 @@ function plekit_table_filter (table_id,pattern_id,and_id) {
   tablePaginater.init(table_id);
   var end2=(new Date).getTime();
   var paginate_ms=end2-end;
-  window.console.log ("plekit_table_filter: " + 
-                     match_attempts + " matches - " +
-                     matching_entries + " lines - " 
-                     + "match=" + match_ms + " ms - "
-                     + "paginate=" + paginate_ms + " ms");
   
 }