f... msie
authorThierry Parmentelat <thierry.parmentelat@sophia.inria.fr>
Fri, 30 Jan 2009 11:52:20 +0000 (11:52 +0000)
committerThierry Parmentelat <thierry.parmentelat@sophia.inria.fr>
Fri, 30 Jan 2009 11:52:20 +0000 (11:52 +0000)
planetlab/css/plc_tables.css
planetlab/includes/plc_tables.php
planetlab/minitabs/minitabs.js

index 48f8da0..508b7ff 100644 (file)
@@ -224,3 +224,13 @@ p.plc_filter_note {
     font-family: georgia;
     text-align: center
 }
+
+<!--[if IE]>
+<style type="text/css">
+ul.fdtablePaginater {display:inline-block;}
+mul.fdtablePaginater {display:inline;}
+ul.fdtablePaginater li {float:left;}
+ul.fdtablePaginater {text-align:center;}
+table { border-bottom:1px solid #C1DAD7; }
+</style>
+<![endif]-->
index dcebdb1..5eb0726 100644 (file)
@@ -49,8 +49,8 @@ function plc_table_start ($table_id, $headers, $column_sort, $options=NULL) {
   $classname="paginationcallback-".$paginator;
   $classname.=" max-pages-" . $max_pages;
   $classname.=" paginate-" . $pagesize;
+  // instantiate paginator callback
   print <<< EOF
-<!-- instantiate paginator callback -->
 <script type="text/javascript"> 
 function $paginator (opts) { plc_table_paginator (opts,"$table_id"); }
 </script>
index 15f0135..b44eab2 100644 (file)
@@ -37,6 +37,28 @@ function plc_introspect (txt,obj,verbose,attribute) {
   window.console.log ('=== end intro ' + txt);
 }
 
+/* I'm done with this - write it ourselves - don't care about perfs so much anyway */
+/* define getElementsByClassName on Element if missing */
+function getElementsByClassName (elt,cls) {
+  try {
+    var retval= elt.getElementsByClassName(cls);
+    plc_debug ('getElementsByClassName','used native method');
+    return retval;
+    } catch (err) {
+    plc_debug ('getElementsByClassName','running custom method');
+    var retVal = new Array();
+    var elements = elt.getElementsByTagName("*");
+    for (var i = 0; i < elements.length; i++) {
+      var element = elements[i];
+      var classes = element.className.split(" ");
+      for (var c = 0; c < classes.length; c++) 
+       if (classes[c] == cls) 
+         retVal.push(elements[i]);
+    }
+    return retVal;
+  }
+}
+
 var miniTab = {
  currentTab:     0,
  activeTab:      0,
@@ -55,27 +77,11 @@ var miniTab = {
         
  init: function() {
 
-    /* define getElementsByClassName on Element if missing */
-    if ( ! Element.prototype.getElementsByClassName ) {
-      Element.prototype.getElementsByClassName = function (cls) {
-       var retVal = new Array();
-       var elements = this.getElementsByTagName("*");
-       for (var i = 0; i < elements.length; i++) {
-         var element = elements[i];
-         var classes = element.className.split(" ");
-         for (var c = 0; c < classes.length; c++) 
-           if (classes[c] == cls) 
-             retVal.push(elements[i]);
-       }
-       return retVal;
-      }
-    }
-
     miniTab.ul          = document.getElementById("minitabs-list");
     miniTab.liArr       = miniTab.ul.getElementsByTagName("li");
     // Thierry: the original impl. relied on <a> links rather than forms 
     // we use <input>s and there might be hidden ones, so use a class marker instead
-    miniTab.inputArr        = miniTab.ul.getElementsByClassName("minitabs-submit");
+    miniTab.inputArr        = getElementsByClassName(miniTab.ul,"minitabs-submit");
  
     for(var i = 0, li; li = miniTab.liArr[i]; i++) {
       li.onmouseover = miniTab.inputArr[i].onfocus = function(e) {
@@ -137,7 +143,7 @@ var miniTab = {
   },
  
  setActive: function (pos,active) {
-    var input=miniTab.liArr[pos].getElementsByClassName("minitabs-submit")[0];
+    var input=getElementsByClassName(miniTab.liArr[pos],"minitabs-submit")[0];
     var cn=input.className;
     cn=cn.replace(" active","");
     if (active) cn += " active";
@@ -146,7 +152,7 @@ var miniTab = {
  
  initAnim: function() {
     /* search for the input with type != hidden */
-    var input=miniTab.liArr[miniTab.activeTab].getElementsByClassName("minitabs-submit")[0];
+    var input=getElementsByClassName(miniTab.liArr[miniTab.activeTab],"minitabs-submit")[0];
     miniTab.destX = parseInt(miniTab.liArr[miniTab.activeTab].offsetLeft + input.offsetLeft + miniTab.ul.offsetLeft);
     miniTab.destW = parseInt(input.offsetWidth);
     miniTab.t = 0;
@@ -190,7 +196,7 @@ var miniTab = {
     /* ask for confirmation if message is not empty */
     if (message && ! confirm (message) ) return;
     this.inputArr[submitTab].parentNode.parentNode.submit();
-  },
+  }
 }
  
 window.onload = miniTab.init;