summaryrefslogtreecommitdiff
path: root/inc/html.php
diff options
context:
space:
mode:
authorHakan Sandell <sandell.hakan@gmail.com>2011-10-17 20:17:05 +0200
committerHakan Sandell <sandell.hakan@gmail.com>2011-10-17 20:17:05 +0200
commit434f59213c7786053b453612347ff83abfeb8b7b (patch)
treefe21e5e1a16123b7676e6b737d6a52d59653e525 /inc/html.php
parente10e770cbef96be859b572c97ac1b9f0bc1e95bd (diff)
downloadrpg-434f59213c7786053b453612347ff83abfeb8b7b.tar.gz
rpg-434f59213c7786053b453612347ff83abfeb8b7b.tar.bz2
HTML compliant fix for missing ul wrapper in TOC (FS#2328)
Diffstat (limited to 'inc/html.php')
-rw-r--r--inc/html.php34
1 files changed, 18 insertions, 16 deletions
diff --git a/inc/html.php b/inc/html.php
index 1658e9b4c..1a2d7daef 100644
--- a/inc/html.php
+++ b/inc/html.php
@@ -905,40 +905,35 @@ function html_buildlist($data,$class,$func,$lifunc='html_li_default',$forcewrapp
}
$start_level = $data[0]['level'];
- $ret = '';
-
- if ($forcewrapper || $start_level < 2) {
- // Trigger building a wrapper ul if the first level is
- // 0 (we have a root object) or 1 (just the root content)
- --$start_level;
- }
-
$level = $start_level;
+ $ret = '';
+ $open = 0;
foreach ($data as $item){
if( $item['level'] > $level ){
//open new list
for($i=0; $i<($item['level'] - $level); $i++){
- if ($i) $ret .= "<li class=\"clear\">\n";
+ if ($i) $ret .= "<li class=\"clear\">";
$ret .= "\n<ul class=\"$class\">\n";
+ $open++;
}
+ $level = $item['level'];
+
}elseif( $item['level'] < $level ){
//close last item
$ret .= "</li>\n";
- for ($i=0; $i<($level - $item['level']); $i++){
+ while( $level > $item['level'] && $open > 0 ){
//close higher lists
$ret .= "</ul>\n</li>\n";
+ $level--;
+ $open--;
}
- $ret .= "<ul class=\"$class\">\n";
} elseif ($ret !== '') {
//close previous item
$ret .= "</li>\n";
}
- //remember current level
- $level = $item['level'];
-
//print item
$ret .= call_user_func($lifunc,$item);
$ret .= '<div class="li">';
@@ -948,8 +943,15 @@ function html_buildlist($data,$class,$func,$lifunc='html_li_default',$forcewrapp
}
//close remaining items and lists
- while(--$level >= $start_level) {
- $ret .= "</li></ul>\n";
+ $ret .= "</li>\n";
+ while($open-- > 0) {
+ $ret .= "</ul></li>\n";
+ }
+
+ if ($forcewrapper || $start_level < 2) {
+ // Trigger building a wrapper ul if the first level is
+ // 0 (we have a root object) or 1 (just the root content)
+ $ret = "\n<ul class=\"$class\">\n".$ret."</ul>\n";
}
return $ret;