From: Thierry Parmentelat Date: Tue, 20 Jan 2009 14:47:27 +0000 (+0000) Subject: support for confirmation in tabs X-Git-Tag: PLEWWW-4.3-1~99 X-Git-Url: http://git.onelab.eu/?a=commitdiff_plain;h=10b954d4aa30a97573df08b1d8fbe50599262cf4;p=plewww.git support for confirmation in tabs --- diff --git a/planetlab/includes/plc_minitabs.php b/planetlab/includes/plc_minitabs.php index 6e8e1b7..2b2a3eb 100644 --- a/planetlab/includes/plc_minitabs.php +++ b/planetlab/includes/plc_minitabs.php @@ -15,9 +15,9 @@ drupal_set_html_head(' // (*) or an associative array with the following keys // (*) 'method': 'POST' or 'GET' -- default is 'GET' // (*) 'url': where to go +// (*) 'confirm': a question to display before actually triggering // (*) 'values': an associative array of (key,value) pairs to send to the URL; values are strings - function plc_tabs($array) { print '
'; print ''; diff --git a/planetlab/minitabs/minitabs.css b/planetlab/minitabs/minitabs.css index 9b63387..33c6c27 100644 --- a/planetlab/minitabs/minitabs.css +++ b/planetlab/minitabs/minitabs.css @@ -1,3 +1,5 @@ +/* $Id$ */ + #minitabs_container { padding: 20px; margin: 8px 0; diff --git a/planetlab/minitabs/minitabs.js b/planetlab/minitabs/minitabs.js index 5086cce..3867bdb 100644 --- a/planetlab/minitabs/minitabs.js +++ b/planetlab/minitabs/minitabs.js @@ -6,6 +6,8 @@ derived from the original idea of Stephen Clark (http://www.sgclark.com/sandbox/minislide/) Adjusted by Thierry Parmentelat -- INRIA - uses only forms rather than tags, for supporting http-POST + + $Id$ */ @@ -23,7 +25,7 @@ var miniTab = { aHeight: 0, ul: [], liArr: [], - aArr: [], + inputArr: [], init: function() { if(!document.getElementById || !document.getElementById("miniflex")) return; @@ -31,11 +33,10 @@ var miniTab = { miniTab.ul = document.getElementById("miniflex"); miniTab.liArr = miniTab.ul.getElementsByTagName("li"); // Thierry: the original impl. relied on links rather than forms - we use ids - miniTab.aArr = miniTab.ul.getElementsByClassName("minitabs-submit"); + miniTab.inputArr = miniTab.ul.getElementsByClassName("minitabs-submit"); for(var i = 0, li; li = miniTab.liArr[i]; i++) { - li.onmouseover = miniTab.aArr[i].onfocus = function(e) { - window.console.log('onmouseover/onfocus'); + li.onmouseover = miniTab.inputArr[i].onfocus = function(e) { var pos = 0; var elem = this.nodeName == "LI" ? this : this.parentNode; while(elem.previousSibling) { @@ -52,7 +53,7 @@ var miniTab = { miniTab.setActive (miniTab.activeTab,false); }; - for(var i = 0, a; a = miniTab.aArr[i]; i++) { + for(var i = 0, a; a = miniTab.inputArr[i]; i++) { if(a.className.search("active") != -1) { miniTab.activeTab = miniTab.currentTab = i; } @@ -63,10 +64,10 @@ var miniTab = { miniTab.slideObj = miniTab.ul.parentNode.appendChild(document.createElement("div")); miniTab.slideObj.appendChild(document.createTextNode(String.fromCharCode(160))); miniTab.slideObj.id = "animated-tab"; - miniTab.slideObj.style.top = (miniTab.ul.offsetTop + miniTab.liArr[miniTab.activeTab].offsetTop + miniTab.aArr[miniTab.activeTab].offsetTop) + "px"; - miniTab.slideObj.style.left = (miniTab.ul.offsetLeft + miniTab.liArr[miniTab.activeTab].offsetLeft + miniTab.aArr[miniTab.activeTab].offsetLeft) + "px"; - miniTab.slideObj.style.width = miniTab.aArr[miniTab.activeTab].offsetWidth + "px"; - miniTab.aHeight = miniTab.ul.offsetTop + miniTab.liArr[miniTab.activeTab].offsetTop + miniTab.aArr[miniTab.activeTab].offsetTop; + miniTab.slideObj.style.top = (miniTab.ul.offsetTop + miniTab.liArr[miniTab.activeTab].offsetTop + miniTab.inputArr[miniTab.activeTab].offsetTop) + "px"; + miniTab.slideObj.style.left = (miniTab.ul.offsetLeft + miniTab.liArr[miniTab.activeTab].offsetLeft + miniTab.inputArr[miniTab.activeTab].offsetLeft) + "px"; + miniTab.slideObj.style.width = miniTab.inputArr[miniTab.activeTab].offsetWidth + "px"; + miniTab.aHeight = miniTab.ul.offsetTop + miniTab.liArr[miniTab.activeTab].offsetTop + miniTab.inputArr[miniTab.activeTab].offsetTop; miniTab.initSlide(miniTab.activeTab, true); @@ -107,15 +108,15 @@ var miniTab = { miniTab.bW = miniTab.slideObj.offsetWidth; miniTab.cW = miniTab.destW - miniTab.bW; - miniTab.slideObj.style.top = (miniTab.ul.offsetTop + miniTab.liArr[miniTab.activeTab].offsetTop + miniTab.aArr[miniTab.activeTab].offsetTop) + "px"; + miniTab.slideObj.style.top = (miniTab.ul.offsetTop + miniTab.liArr[miniTab.activeTab].offsetTop + miniTab.inputArr[miniTab.activeTab].offsetTop) + "px"; }, slideIt:function() { // Has the browser text size changed? - if(miniTab.aHeight != miniTab.ul.offsetTop + miniTab.liArr[miniTab.activeTab].offsetTop + miniTab.aArr[miniTab.activeTab].offsetTop) { + if(miniTab.aHeight != miniTab.ul.offsetTop + miniTab.liArr[miniTab.activeTab].offsetTop + miniTab.inputArr[miniTab.activeTab].offsetTop) { miniTab.initAnim(); - miniTab.aHeight = miniTab.ul.offsetTop + miniTab.liArr[miniTab.activeTab].offsetTop + miniTab.aArr[miniTab.activeTab].offsetTop + miniTab.aHeight = miniTab.ul.offsetTop + miniTab.liArr[miniTab.activeTab].offsetTop + miniTab.inputArr[miniTab.activeTab].offsetTop }; if(miniTab.t++ < miniTab.d) { @@ -133,7 +134,12 @@ var miniTab = { animate: function(t,b,c,d) { if ((t/=d/2) < 1) return c/2*t*t + b; return -c/2 * ((--t)*(t-2) - 1) + b; - } + }, + + submit: function (message) { + if ( ! confirm (message) ) return; + this.inputArr[this.activeTab].parentNode.submit(); + }, } window.onload = miniTab.init;