[ Index ]
 

Code source de Symfony 1.0.0

Accédez au Source d'autres logiciels libresSoutenez Angelica Josefina !

title

Body

[fermer]

/data/web/sf/sf_admin/js/ -> collapse.js (source)

   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);


Généré le : Fri Mar 16 22:42:14 2007 par Balluche grâce à PHPXref 0.7