fill the 'interface' tab in the node view even if no interface;
[plewww.git] / planetlab / nodes / node.php
index 694e05f..4d8ccb5 100644 (file)
@@ -1,7 +1,5 @@
 <?php
 
-// $Id$
-
 // Require login
 require_once 'plc_login.php';
 
@@ -239,10 +237,41 @@ if ($display_pcus) {
 //////////////////// Reboot Node
 if ( $display_reboot_button ) 
 {
-    $details->form_start(l_actions(),array("action"=>"reboot-node-with-pcu", "node_id"=>$node_id, "hostname"=>$hostname));
-    $details->tr_submit("submit", "Reboot Node");
-    $details->form_end();
-    //if ($privileges) $details->space();
+    if ( ! empty($_SESSION['messages']) ) {
+        $msg = $_SESSION['messages']['status'][0];
+    } else {
+        $msg = "";
+    }
+    $body="Hello,
+
+This message is a template from the 'Report a problem' link on the node details page.
+
+I've experienced a problem rebooting $hostname with the pcu_id $pcu_id; 
+
+    http://".PLC_WWW_HOST."/db/sites/pcu.php?id=$pcu_id
+    http://".PLC_WWW_HOST."/db/nodes/node.php?id=$node_id\n\n";
+
+    if ( $msg != "" ) {
+        $body .= "The last time I tried, it returned:\n    $msg\n\n";
+    }
+    $body .= "And, this is what I've tried, which leads me to believe that there is a bug on your side:";
+
+    $url=rawurlencode($body);
+    $email = "<font style='font-size: smaller'>><a href=\"mailto:".PLC_MAIL_SUPPORT_ADDRESS."?Subject=Reporting a problem rebooting $hostname&Body=$url\">Report a problem</a></font>";
+
+    // NOTE: not sure how to make the buttons display side-by-side...
+    $reboot = $details->form_start_html(l_actions(),array("action"=>"reboot-node-with-pcu",
+                                "node_id"=>$node_id, "hostname"=>$hostname, "test"=>FALSE));
+    $reboot .= $email . $details->form->submit_html("submit","Reboot Node");
+    $reboot .= $details->form_end_html();
+
+    $reboot .= $details->form_start_html(l_actions(),array("action"=>"reboot-node-with-pcu",
+                                "node_id"=>$node_id, "hostname"=>$hostname, "test"=>TRUE));
+    $reboot .= $details->form->submit_html("submit","Test PCU");
+    $reboot .= $details->form_end_html();
+
+    $details->tr($reboot, "right");
+
 }
 $details->space();
 
@@ -407,7 +436,7 @@ if ( $local_peer ) {
     // set tag area
     $table->row_start();
     // get list of tag names in the node/* category    
-    $all_tags= $api->GetTagTypes( array ("category"=>"node*"), array("tagname","tag_type_id"));
+    $all_tags= $api->GetTagTypes( array ("category"=>"node*","-SORT"=>"tagname"), array("tagname","tag_type_id"));
     // xxx cannot use onchange=submit() - would need to somehow pass action name 
     function tag_selector ($tag) { return array("display"=>$tag['tagname'],"value"=>$tag['tag_type_id']); }
     $selector=array_map("tag_selector",$all_tags);
@@ -432,7 +461,7 @@ if ( $local_peer ) {
     echo '<p>';
     plc_warning_html("This node has no interface");
     echo "Please add an interface to make this a usable PLC node.</p>\n";
-  } else {
+  } // else { // show this unconditionnally as otherwise there's no mean to create one..
 
     // display a hostname column iff at least one interface has a hostname
     $need_hostname=false;
@@ -457,7 +486,7 @@ if ( $local_peer ) {
     $table=new PlekitTable("node_interfaces",$headers,$sort_column,$table_options);
     $table->start();
        
-    foreach ( $interfaces as $interface ) {
+    if ($interfaces) foreach ( $interfaces as $interface ) {
       $interface_id= $interface['interface_id'];
       $interface_ip= $interface['ip'];
 
@@ -493,7 +522,7 @@ if ( $local_peer ) {
       $table->row_end();
     }
     $table->end();
-  }
+    //  }
   $toggle->end();
  }