[pmwiki-users] Including an Accordion widget

Hans design5 at softflow.co.uk
Tue Feb 15 17:05:23 CST 2011


Harald, I need to correct myself once again!

The script failed in IE8 (tested only in that version)
because of me using getElementsByClassName().
Here is a version avoiding use of that.
Tested with Firefox, IE8 and Opera.
I also added your last changes for the <a> to the markup definition.

===========================================================
<?php if (!defined('PmWiki')) exit();

$HTMLHeaderFmt['accordion'] = "
 <script>
  function Accordion(n) {
    d = HideDivs(\"accordion\");
    d[n-1].style.display = \"block\";
  };
 </script>       
";

$HTMLFooterFmt['accordion'] = "
 <script>
  function HideDivs(obj) {
    var e = document.getElementById(obj);
    if(e) { 
      var ee = e.getElementsByTagName(\"DIV\");
      var dd = new Array();
      for (var i = 0; i < ee.length; i++) { 
        if ( ee[i].className == \"acc\") {
          ee[i].style.display =  \"none\";
          dd.push(ee[i]); 
        }
      }
      return dd;
    } else return;
  };
  //init
  window.onload = HideDivs(\"accordion\");
 </script>
";

Markup('[[##','<[[','/(?>\\[\\[##([0-9]*))\\s+(.*?)\\]\\]/',
 '<a class="acclink" href="#accordion" onclick="Accordion(\'$1\')">$2</a>');

=======================================================================
=


  ~Hans




More information about the pmwiki-users mailing list