[ Index ] |
|
Code source de Symfony 1.0.0 |
1 // django javascript file 2 3 // Finds all fieldsets with class="collapse", collapses them, and gives each 4 // one a "show" link that uncollapses it. The "show" link becomes a "hide" 5 // link when the fieldset is visible. 6 7 function findForm(node) { 8 // returns the node of the form containing the given node 9 if (node.tagName.toLowerCase() != 'form') { 10 return findForm(node.parentNode); 11 } 12 return node; 13 } 14 15 var CollapsedFieldsets = { 16 collapse_re: /\bcollapse\b/, // Class of fieldsets that should be dealt with. 17 collapsed_re: /\bcollapsed\b/, // Class that fieldsets get when they're hidden. 18 collapsed_class: 'collapsed', 19 init: function() { 20 var fieldsets = document.getElementsByTagName('fieldset'); 21 var collapsed_seen = false; 22 for (var i = 0, fs; fs = fieldsets[i]; i++) { 23 // Collapse this fieldset if it has the correct class, and if it 24 // doesn't have any errors. (Collapsing shouldn't apply in the case 25 // of error messages.) 26 if (fs.className.match(CollapsedFieldsets.collapse_re) && !CollapsedFieldsets.fieldset_has_errors(fs)) { 27 collapsed_seen = true; 28 // Give it an additional class, used by CSS to hide it. 29 fs.className += ' ' + CollapsedFieldsets.collapsed_class; 30 // (<a id="fieldsetcollapser3" class="collapse-toggle" href="#">show</a>) 31 var collapse_link = document.createElement('a'); 32 collapse_link.className = 'collapse-toggle'; 33 collapse_link.id = 'fieldsetcollapser' + i; 34 collapse_link.onclick = new Function('CollapsedFieldsets.show('+i+'); return false;'); 35 collapse_link.href = '#'; 36 collapse_link.innerHTML = 'show'; 37 var h2 = fs.getElementsByTagName('h2')[0]; 38 h2.appendChild(document.createTextNode(' [')); 39 h2.appendChild(collapse_link); 40 h2.appendChild(document.createTextNode(']')); 41 } 42 } 43 if (collapsed_seen) { 44 // Expand all collapsed fieldsets when form is submitted. 45 Event.observe(findForm(document.getElementsByTagName('fieldset')[0]), 'submit', function() { CollapsedFieldsets.uncollapse_all(); }, false); 46 } 47 }, 48 fieldset_has_errors: function(fs) { 49 // Returns true if any fields in the fieldset have validation errors. 50 var divs = fs.getElementsByTagName('div'); 51 for (var i=0; i<divs.length; i++) { 52 if (divs[i].className.match(/\bform-error\b/)) { 53 return true; 54 } 55 } 56 return false; 57 }, 58 show: function(fieldset_index) { 59 var fs = document.getElementsByTagName('fieldset')[fieldset_index]; 60 // Remove the class name that causes the "display: none". 61 fs.className = fs.className.replace(CollapsedFieldsets.collapsed_re, ''); 62 // Toggle the "show" link to a "hide" link 63 var collapse_link = document.getElementById('fieldsetcollapser' + fieldset_index); 64 collapse_link.onclick = new Function('CollapsedFieldsets.hide('+fieldset_index+'); return false;'); 65 collapse_link.innerHTML = 'hide'; 66 }, 67 hide: function(fieldset_index) { 68 var fs = document.getElementsByTagName('fieldset')[fieldset_index]; 69 // Add the class name that causes the "display: none". 70 fs.className += ' ' + CollapsedFieldsets.collapsed_class; 71 // Toggle the "hide" link to a "show" link 72 var collapse_link = document.getElementById('fieldsetcollapser' + fieldset_index); 73 collapse_link.onclick = new Function('CollapsedFieldsets.show('+fieldset_index+'); return false;'); 74 collapse_link.innerHTML = 'show'; 75 }, 76 77 uncollapse_all: function() { 78 var fieldsets = document.getElementsByTagName('fieldset'); 79 for (var i=0; i<fieldsets.length; i++) { 80 if (fieldsets[i].className.match(CollapsedFieldsets.collapsed_re)) { 81 CollapsedFieldsets.show(i); 82 } 83 } 84 } 85 } 86 87 Event.observe(window, 'load', CollapsedFieldsets.init, false);
titre
Description
Corps
titre
Description
Corps
titre
Description
Corps
titre
Corps
Généré le : Fri Mar 16 22:42:14 2007 | par Balluche grâce à PHPXref 0.7 |