Difference between revisions of "Expandable.php"

From Organic Design wiki
m
(make our own JS for expandable tables)
Line 1: Line 1:
 
<?
 
<?
if ($GLOBALS['action'] == 'view') $article = preg_replace(
+
if ($GLOBALS['action'] == 'view') {
    '/<table class=["\']?expandable["\']? title=["\']?(.+?)["\']?\\s*>(.+?<\\/table.*?>)/s',
+
 
    '<table class=expandable-heading><tr><td>$1</td><td align=right>
+
# Insert a JS function into the page to be called when show/hide links are clicked
      <script type="text/javascript">showTocToggle("show","hide")</script>
+
$article = preg_replace(
    </td></tr>
+
'/(<\\/head\\s*>)/',
    <tr id="tocinside"><td colspan=2>
+
'<script type="text/javascript">
      <table class=expandable-content>$2
+
 
    </td></tr></table>',
+
function toggleExpandable(id) {
    $article
+
var heading = document.getElementById("expandable-"+id);
    );
+
var content = heading.getElementById("expandable-content");
 +
if (content.style.display == "none") {
 +
content.style.display = "block";
 +
}
 +
else {
 +
content.style.display = "none";
 +
}
 +
}
 +
 
 +
</script>$1',
 +
 
 +
$article
 +
);
 +
 
 +
# Replace all the expandable tables with html containing CSS classes and the show/hide links
 +
$article = preg_replace(
 +
'/<table class=["\']?expandable["\']? title=["\']?(.+?)["\']?\\s*>(.+?<\\/table\\s*?>)/se',
 +
 
 +
'<table class=expandable-heading id=expandable-'.$i.'><tr><td>$1</td><td align=right>
 +
[<a href="javascript:toggleExpandable('.($i++).')">
 +
<span id="showlink">show</span>
 +
<span id="hidelink" style="display:none;">hide</span>
 +
</a>]
 +
</td></tr>
 +
<tr id="expandable-content"><td colspan=2>
 +
<table class=expandable-content>$2
 +
</td></tr></table>',
 +
 
 +
$article
 +
);
 +
 
?>
 
?>

Revision as of 00:45, 2 October 2006

<? if ($GLOBALS['action'] == 'view') {

# Insert a JS function into the page to be called when show/hide links are clicked $article = preg_replace( '/(<\\/head\\s*>)/', '<script type="text/javascript">

function toggleExpandable(id) { var heading = document.getElementById("expandable-"+id); var content = heading.getElementById("expandable-content"); if (content.style.display == "none") { content.style.display = "block"; } else { content.style.display = "none"; } }

</script>$1',

$article );

# Replace all the expandable tables with html containing CSS classes and the show/hide links $article = preg_replace(

'/

(.+?<\\/table\\s*?>)/se', '
$1

[<a href="javascript:toggleExpandable('.($i++).')"> show </a>]

$2
',

$article );

?>