foreach($matches[3] as $headline) {
if($level) { $prevlevel=$level;}
$level=$matches[1][$c];
- if(($nh||$st) && $level>$prevlevel) {
+ if(($nh||$st) && $prevlevel && $level>$prevlevel) {
$h[$level]=0; // reset when we enter a new level
- if($toclevel) {
- $toc.=$sk->tocIndent($level-$prevlevel);
- }
- $toclevel++;
+ $toc.=$sk->tocIndent($level-$prevlevel);
+ $toclevel+=$level-$prevlevel;
}
if(($nh||$st) && $level<$prevlevel) {
$h[$level+1]=0; // reset when we step back a level
- if($toclevel) {
- $toc.=$sk->tocUnindent($prevlevel-$level);
- }
- $toclevel--;
+ $toc.=$sk->tocUnindent($prevlevel-$level);
+ $toclevel-=$prevlevel-$level;
}
$h[$level]++; // count number of headlines for each level
$anchor=$canonized_headline;
if($refcount[$c]>1) {$anchor.="_".$refcount[$c];}
if($st) {
- $toc.=$sk->tocLine($anchor,$tocline);
+ $toc.=$sk->tocLine($anchor,$tocline,$toclevel);
}
if($es && !isset($wpPreview)) {
$head[$c].=$sk->editSectionLink($c+1);
if($st) {
$toclines=$c;
- while($toclevel>0) {
- $toc.="</ul>";
- $toclevel--;
- }
-
+ $toc.=$sk->tocUnindent($toclevel);
$toc=$sk->tocTable($toc);
}
-
// split up and insert constructed headlines
$blocks=preg_split("/<H[1-6].*?>.*?<\/H[1-6]>/i",$text);
$i=0;
+
foreach($blocks as $block) {
if($es && !isset($wpPreview) && $c>0 && $i==0) {
$full.=$sk->editSectionLink(0);
}
-
$full.=$block;
+ if($st && $toclines>3 && !$i) {
+ $full="<a name=\"top\"></a>".$full.$toc;
+ }
+
$full.=$head[$i];
$i++;
}
- if($st && $toclines>3) {
- $full=$toc."<a name=\"top\"></a>".$full;
- }
return $full;
}
function tocIndent($level) {
- while($level--) $rv.="<ul style=\"list-style-type:none;margin:0px;\">";
+ while($level--) $rv.="<div style=\"margin-left:2em;\">\n";
return $rv;
}
function tocUnindent($level) {
- while($level--) $rv.="</ul>";
+ while($level--) $rv.="</div>\n";
return $rv;
}
- function tocLine($anchor,$tocline) {
+ // parameter level defines if we are on an indentation level
+ function tocLine($anchor,$tocline,$level) {
+
+ if($level) {
+
+ return "<A CLASS=\"internal\" HREF=\"#".$anchor."\">".$tocline."</A><BR>\n";
+ } else {
- return "<li><A CLASS=\"internal\" HREF=\"#".$anchor."\">".$tocline."</A></li>";
+ return "<div style=\"margin-bottom:0px;\">\n".
+ "<A CLASS=\"internal\" HREF=\"#".$anchor."\">".$tocline."</A><BR>\n".
+ "</div>\n";
+ }
}
function tocTable($toc) {
+/* does not auto-expand, use table for now
+ return "
+ <div><div style=\"border-width:1px;background-color:#f3f3ff;border-color:#8888aa;border-style:solid;padding:1em;padding-bottom:1em;\">
+ <b>".wfMsg("toc")."</b><P>
+ $toc</div></div>";
+*/
return
- "<table border=\"0\" bgcolor=\"#8888aa\" cellpadding=\"0\" cellspacing=\"1\"><tr><td>" .
- "<table border=\"0\" bgcolor=\"#f3f3ff\" CELLPADDING=5><tr><td>".
- "<b>".wfMsg("toc")."</b><p>".
- $toc."</td></tr></table></td></tr></table><P>";
+ "<table border=\"0\" bgcolor=\"#8888aa\" cellpadding=\"0\" cellspacing=\"1\"><tr><td>\n" .
+ "<table border=\"0\" bgcolor=\"#f3f3ff\" CELLPADDING=5><tr><td>\n".
+ "<b>".wfMsg("toc")."</b><p>\n".
+ $toc."</td></tr></table></td></tr></table><P>\n";
}
function editSectionLink($section) {