Hello Hans,
Thank you for your quick answer.
I tried your alternative recipe, and it does work, but:
With the script as is one has to start the numbering in the custom link
markup at '0' instead of '1' like this:
(:div0 id=accordion:)
!!![[##0 Section 1]] <-
>>acc<<
Some text in the first section.
a bit more...
>><<
!!![[##1 Section 2]] <-
>>acc<<
second section content
goes here....
>><<
...
otherwise a click on the 'Section 1' header shows the content of section
2 etc.
Where to amend your script?
One important note:
No empty line is permitted between sections:
wrong:
!!![[##0 Section 1]]
>>acc<<
Some text in the first section.
a bit more...
>><<
!!![[##1 Section 2]]
>>acc<<
second section content
goes here....
>><<
correct:
!!![[##0 Section 1]]
>>acc<<
Some text in the first section.
a bit more...
>><<
!!![[##1 Section 2]]
>>acc<<
second section content
goes here....
>><<
However, within a section content empty lines (to create paragraphs) are
allowed.
Harald
Hans schrieb am / wrote on 14.02.2011 23:37:
Alternatively here is an "Accordion" recipe which does not use jquery:
=====================================================================
<?php if (!defined('PmWiki')) exit();
$HTMLHeaderFmt['accordion'] = "
<script>
function Accordion(n) {
d = HideDivs(\"accordion\");
d[n].style.display = \"block\";
};
</script>
";
$HTMLFooterFmt['accordion'] = "
<script>
function HideDivs(obj) {
var el = document.getElementById(obj);
if(el) {
var d = el.getElementsByTagName(\"DIV\");
for(var i=0; i<d.length; i++) {
d[i].style.display = \"none\";
}
}
return d;
}
//init
window.onload = HideDivs(\"accordion\");
</script>
";
Markup('[[##','<[[','/(?>\\[\\[##([0-9]*))\\s+(.*?)\\]\\]/',
'<a href="#" onclick="Accordion(\'$1\')">$2</a>');
=======================================================================
In a page create an 'accordion' div like this
(:div0 id=accordion:)
!!![[##1 Section 1]]
acc<<
Some text in the first section.
a bit more...
<<
!!![[##2 Section 2]]
acc<<
second section content
goes here....
<<
!!![[##3 Section 3]]
acc<<
third section content
goes here....
<<
(:div0end:)
(:div0 id=accordion:) is essential, as the script looks for that
object.
The numbering in the custom link markup is important, it refers to the
appropriate section.
The 'acc' in>>acc<< adds just a class 'acc' as style hook, use
anything you like.
The script hides the sections on page load. If scripting is disabled
all sections are visible.
~Hans
_______________________________________________
pmwiki-users mailing list
[email protected]
http://www.pmichaud.com/mailman/listinfo/pmwiki-users