get_array
[plewww.git] / plekit / php / linetabs.php
index b26dffc..24a3834 100644 (file)
@@ -38,29 +38,36 @@ drupal_set_html_head('
 // $tabs['Simple Tab']="http://planet-lab.org";
 // $tabs['Complex Tab']=array('url'=>'http://planet-lab.org/',
 //                           'bubble'=>'This text gets displayed when the mouse remains over for a while');
-// plc_tabs($tabs);
+// plekit_linetabs($tabs);
 
 ////////// Notes: limited support for images
-// (*) for some reason, confirmation does not work with image tabs 
+// (*) for some reason, confirmation does not work with image tabs
 //     (the form gets submitted whatever the confirmation....)
-// (*) you need to tune the image size, which is wrong, as the image should rather be bottom-aligned 
+// (*) you need to tune the image size, which is wrong, as the image should rather be bottom-aligned
 
-function plc_tabs ($array, $id=NULL) {
+function plekit_linetabs ($tabs, $id=NULL) {
+  // do not output anything if $tabs has no entry (unpleasant rendering)
+  if (empty ($tabs)) return;
+  $active_line_tab=get_array($_GET, 'active_line_tab');
   // need id to pass to the onclick function attached to the input buttons
-  $id="minitabs";
+  $id="linetabs";
   if (! $id) $id .= '-' + $id;
-  print "<div id='$id' class='minitabs'>";
+  print "<div id='$id' class='linetabs'>";
   print "<ul>";
-  foreach ($array as $label=>$todo) {
+  foreach ($tabs as $label=>$todo) {
     // in case we have a simple string, rewrite it as an array
-    if (is_string ($todo)) $todo=array('method'=>'GET','url'=>$todo);
+    if (is_string ($todo))
+      $todo = array('method'=>'GET', 'url'=>$todo);
     // the 'label' key, if set in the hash, supersedes key
-    if ($todo['label']) $label=$todo['label'];
+    if (get_array($todo, 'label'))
+      $label = $todo['label'];
     $tracer="";
-    if ($todo['id']) $tracer .= "id=".$todo['id'];
+    if (get_array($todo, 'id'))
+      $tracer .= "id=" . $todo['id'];
     print "<li $tracer>";
     // set default method
-    if ( ! $todo['method'] ) $todo['method']='GET';
+    if ( ! get_array($todo, 'method') )
+      $todo['method'] = 'GET';
     // extract var=value settings from url if any
     $full_url=$todo['url'];
     $split=plekit_split_url($full_url);
@@ -68,34 +75,44 @@ function plc_tabs ($array, $id=NULL) {
     $url_values=$split['values'];
 
     // create form
-    $method=$todo['method'];
-    print "<form name='$label' action='$url' method='$method'>";
+    $method=strtolower($todo['method']);
+    print "<form action='$url' method='$method'><fieldset>";
     // set values
-    $values=$todo['values'];
+    $values = get_array($todo, 'values');
     if ( ! $values) $values = array();
-    if ($url_values) $values = array_merge($values,$url_values);
-    if ( $values ) foreach ($values as $key=>$value) {
-       print "<input type=hidden name='$key' value='$value' />";
+    if ($url_values) 
+      $values = array_merge($values, $url_values);
+    if ( $values ) 
+      foreach ($values as $key=>$value) {
+        if ($key != "active_line_tab")
+          print "<input type='hidden' name='$key' value='$value' />";
+      }
+    print "<input type='hidden' name='active_line_tab' value='$label' />";
+    if ($label == $active_line_tab) $tracer = "class='linetabs-submit active'";
+    else $tracer="class='linetabs-submit'";
+    // image and its companions 'height'
+    if (get_array($todo, 'image')) {
+      $what=$todo['image'];
+      $type="type='image' src='$what'";
+      if ($todo['height']) {
+       $what=$todo['height'];
+       $type .= " height='$what'";
       }
-    $tracer="class=minitabs-submit";
-    // image and its companions 'height' 
-    if ($todo['image']) {
-      $type='type=image src="' . $todo['image'] . '"';
-      if ($todo['height']) $type.= ' height=' . $todo['height'];
     } else {
-      $type='type=button value="' . $label . '"';
+      $type="type='button' value='$label'";
     }
-    $bubble=$todo['bubble'];
+    $bubble=htmlspecialchars($todo['bubble'], ENT_QUOTES);
     print "<span title='$bubble'>";
     $message="";
-    if ($todo['confirm']) $message=$todo['confirm'] . " ?";
-    print "<input $tracer $type onclick='minitabs_namespace.submit(\"$id\",\"$message\")' />";
+    if (get_array($todo, 'confirm'))
+      $message=htmlspecialchars($todo['confirm'], ENT_QUOTES) . " ?";
+    print "<input $tracer $type onclick='linetabs_namespace.submit(\"$id\",\"$message\")' />";
     print "</span>";
-    print "</form></li>\n";
+    print "</fieldset></form></li>\n";
   }
   print '</ul>';
   print '</div>';
-  print "<p class='plc-minittabs'></p>\n";
+  print "<p class='linetabs'></p>\n";
 }
 
 ?>