tables layout
[plewww.git] / planetlab / includes / plc_tables.php
index ee3a5d2..ef31cd5 100644 (file)
@@ -25,6 +25,7 @@ function plc_table_cell($cell) {
 // column_sort: the column to sort on at load-time
 // options : an associative array to override options (should be passed to both _stsart and _end)
 //  - search_area : boolean (default true)
+//  - pagesize_area : boolean (default true)
 //  - notes_area : boolean (default true)
 //  - notes : an array of additional notes
 //  - pagesize: the initial pagination size
@@ -36,69 +37,11 @@ function plc_table_start ($table_id, $headers, $column_sort, $options=NULL) {
   global $plc_table_hash;
   $plc_table_hash[$table_id]=array($headers,$options);
   $search_area = array_key_exists('search_area',$options) ? $options['search_area'] : true;
+  $pagesize_area = array_key_exists('pagesize_area',$options) ? $options['pagesize_area'] : true;
   $max_pages = array_key_exists('max_pages',$options) ? $options['max_pages'] : 10;
   $pagesize = array_key_exists('pagesize',$options) ? $options['pagesize'] : 25;
   $pagesize_def = array_key_exists('pagesize_def',$options) ? $options['pagesize_def'] : 999;
 
-  if ($search_area) 
-    plc_table_search_area($table_id,$pagesize,$pagesize_def);
-  plc_table_head($table_id,$headers,$column_sort,$max_pages,$pagesize);
-}
-
-// for convenience, the options that apply to the footer only can be passed in plc_table_end()
-// they add up to the ones provided to the begin clause
-// makes code more readable, as preparing the footer before the table is displayed is confusing
-function plc_table_end ($table_id,$options_end=NULL) {
-  global $plc_table_hash;
-  list($headers,$options) = $plc_table_hash[$table_id];
-  if ($options_end) 
-    $options=array_merge($options,$options_end);
-
-  plc_table_foot($options);
-  $notes_area = array_key_exists('notes_area',$options) ? $options['notes_area'] : true;
-  if ($notes_area) 
-    plc_table_notes($options);
-}
-                   
-////////////////////
-function plc_table_search_area ($table_id,$pagesize,$pagesize_def) {
-  $pagesize_text_id = $table_id . "_pagesize";
-  $search_text_id = $table_id . "_search";
-  $search_reset_id = $table_id . "_search_reset";
-  $search_and_id = $table_id . "_search_and";
-  print <<< EOF
-<table class='table_dialogs'> <tr>
-<td class='table_flushleft'>
-<form class='pagesize'>
-   <input class='pagesize_input' type='text' id="$pagesize_text_id" value=$pagesize 
-      onkeyup='plc_pagesize_set("$table_id","$pagesize_text_id", $pagesize);' 
-      size=3 maxlength=3 /> 
-  <label class='pagesize_label'> items/page </label>   
-  <img class='table_reset' src="/planetlab/icons/clear.png" 
-      onmousedown='plc_pagesize_reset("$table_id","$pagesize_text_id",$pagesize_def);'>
-</form>
-</td>
-
-<td class='table_flushright'> 
-<form class='table_search'>
-   <label class='table_search_label'> Search </label> 
-   <input class='table_search_input' type='text' id='$search_text_id'
-      onkeyup='plc_table_filter("$table_id","$search_text_id","$search_and_id");'
-      size=40 maxlength=256 />
-   <label>and</label>
-   <input id='$search_and_id' class='table_search_and' 
-      type='checkbox' checked='checked' 
-      onchange='plc_table_filter("$table_id","$search_text_id","$search_and_id");' />
-   <img class='table_reset' src="/planetlab/icons/clear.png" 
-      onmousedown='plc_table_filter_reset("$table_id","$search_text_id","$search_and_id");'>
-</form>
-</td>
-</tr></table>
-EOF;
-}
-
-////////////////////////////////////////
-function plc_table_head ($table_id,$headers,$column_sort,$max_pages,$pagesize) {
   $paginator=$table_id."_paginator";
   $classname="paginationcallback-".$paginator;
   $classname.=" max-pages-" . $max_pages;
@@ -112,9 +55,12 @@ function $paginator (opts) { plc_table_paginator (opts,"$table_id"); }
 <table id="$table_id" cellpadding="0" cellspacing="0" border="0" 
 class="plc_table sortable-onload-$column_sort rowstyle-alt colstyle-alt no-arrow $classname">
 <thead>
-<tr>
 EOF;
 
+  if ($pagesize_area) plc_table_pagesize_area ($table_id,$headers,$pagesize, $pagesize_def);
+  if ($search_area) plc_table_search_area ($table_id, $headers);
+
+  print "<tr>";
   foreach ($headers as $label => $type) {
     if ($type == "none" ) {
       $class="";
@@ -135,6 +81,60 @@ EOF;
 EOF;
 }
 
+////////////////////
+function plc_table_pagesize_area ($table_id,$headers,$pagesize,$pagesize_def) {
+  $width=count($headers);
+  $pagesize_text_id = $table_id . "_pagesize";
+  print <<< EOF
+<tr class=pagesize_area><td class=pagesize_area colspan=$width><form class='pagesize'>
+   <input class='pagesize_input' type='text' id="$pagesize_text_id" value=$pagesize 
+      onkeyup='plc_pagesize_set("$table_id","$pagesize_text_id", $pagesize);' 
+      size=3 maxlength=3 /> 
+  <label class='pagesize_label'> items/page </label>   
+  <img class='table_reset' src="/planetlab/icons/clear.png" 
+      onmousedown='plc_pagesize_reset("$table_id","$pagesize_text_id",$pagesize_def);' />
+</form></td></tr>
+EOF;
+}
+
+////////////////////
+function plc_table_search_area ($table_id,$headers) {
+  $width=count($headers);
+  $search_text_id = $table_id . "_search";
+  $search_reset_id = $table_id . "_search_reset";
+  $search_and_id = $table_id . "_search_and";
+  print <<< EOF
+<tr class=search_area><td class=search_area colspan=$width><form class='table_search'>
+   <label class='table_search_label'> Search </label> 
+   <input class='table_search_input' type='text' id='$search_text_id'
+      onkeyup='plc_table_filter("$table_id","$search_text_id","$search_and_id");'
+      size=40 maxlength=256 />
+   <label>and</label>
+   <input id='$search_and_id' class='table_search_and' 
+      type='checkbox' checked='checked' 
+      onchange='plc_table_filter("$table_id","$search_text_id","$search_and_id");' />
+   <img class='table_reset' src="/planetlab/icons/clear.png" 
+      onmousedown='plc_table_filter_reset("$table_id","$search_text_id","$search_and_id");'>
+</form></td></tr>
+EOF;
+}
+
+////////////////////////////////////////
+// for convenience, the options that apply to the footer only can be passed in plc_table_end()
+// they add up to the ones provided to the begin clause
+// makes code more readable, as preparing the footer before the table is displayed is confusing
+function plc_table_end ($table_id,$options_end=NULL) {
+  global $plc_table_hash;
+  list($headers,$options) = $plc_table_hash[$table_id];
+  if ($options_end) 
+    $options=array_merge($options,$options_end);
+
+  plc_table_foot($options);
+  $notes_area = array_key_exists('notes_area',$options) ? $options['notes_area'] : true;
+  if ($notes_area) 
+    plc_table_notes($options);
+}
+                   
 ////////////////////////////////////////
 function plc_table_foot ($options) {
   print "</tbody><tfoot>";
@@ -161,10 +161,6 @@ EOF;
 }
 
 ////////////////////////////////////////
-function plc_table_title ($text) {
-  print "<h2> $text </h2>\n";
-}
-
 function plc_table_row_start ($id="") {
   if ( $id) {
     printf ('<tr id="%s">',$id);