iliaa Wed Feb 9 15:03:44 2005 EDT
Modified files:
/livedocs livedoc_funcs.php
Log:
Fixed bug #30204
http://cvs.php.net/diff.php/livedocs/livedoc_funcs.php?r1=1.20&r2=1.21&ty=u
Index: livedocs/livedoc_funcs.php
diff -u livedocs/livedoc_funcs.php:1.20 livedocs/livedoc_funcs.php:1.21
--- livedocs/livedoc_funcs.php:1.20 Wed Feb 9 14:47:38 2005
+++ livedocs/livedoc_funcs.php Wed Feb 9 15:03:43 2005
@@ -11,13 +11,35 @@
include LIVEDOC_SOURCE . '/handlers.php';
include LIVEDOC_SOURCE . '/themes/' . THEME_NAME . '/html_format.php';
+/* if THEME_NAME/html_format.php doesn't redefine these */
+if (!defined('NAV_TRUNCATE')) {
+ define('NAV_TRUNCATE', 25);
+}
+if (!defined('NAV_SPACE')) {
+ define('NAV_SPACE', ' ');
+}
+if (!defined('NAV_START')) {
+ define('NAV_START', '<table class="nav" border="0" cellpadding="0"
cellspacing="0" width="150">');
+}
+if (!defined('NAV_END')) {
+ define('NAV_END', "</table>\n");
+}
+if (!defined('NAV_CHILDREN_EMBEDED')) {
+ define('NAV_CHILDREN_EMBEDED', false);
+}
+if (!function_exists('nav_item')) {
+ function nav_item($data, $class ) {
+ return "<tr><td class='$class'>$data</td></tr>\n";
+ }
+}
+
/*****************************************************************************
* Helper functions for navigation
*/
function do_nav($idx, $fb_idx, $lang, $current_page, &$nav, &$children)
{
$children = array();
- $nav = "<table class='nav' border='0' cellpadding='0' cellspacing='0'
width='150'>";
+ $nav = NAV_START;
/* Get the fileinfo for the reference */
$tr = sqlite_array_query($idx, "SELECT title, filename, idents.fileid,
files.dirid from idents left join files where id='$current_page' and
idents.fileid=files.fileid", SQLITE_NUM);
@@ -33,37 +55,53 @@
/* Get parent ID and child IDs */
/* - first we get the first three parts of the path */
$last_item = 'manual';
+ $head_class = 'header home';
if (($r = sqlite_single_query($idx, "SELECT path FROM toc WHERE
docbook_id = '$current_page' LIMIT 1"))) {
$path = explode(",", $r);
foreach ($path as $item) {
- $nav .= do_nav_line($item, 'up', $current_page, $lang,
$dummy);
+ $nav .= do_nav_line($item, $head_class, $current_page,
$lang, $dummy);
$last_item = $item;
+ $head_class = 'header up';
}
} else {
$nav .= do_nav_line('manual', 'up', $current_page, $lang,
$dummy);
}
+ $after_child_class = '';
/* With $last_item we're going to show all brothers */
$r = (array) sqlite_single_query($idx, "SELECT docbook_id FROM toc
WHERE parent_docbook_id = '$last_item' ORDER BY id");
foreach ($r as $val) {
- $nav .= do_nav_line($val, 'down', $current_page, $lang, $dummy);
+ $nav .= do_nav_line($val, 'down'.$after_child_class,
$current_page, $lang, $dummy);
+ $after_child_class = '';
+
+ /* Include the children here */
+ if (NAV_CHILDREN_EMBEDED && $current_page == $val) {
+ do_nav_children($idx, $val, $lang, $current_page, $nav,
$children);
+ }
+
}
/* And finally all children, but only if $current_page != $last_item
* because showing the same thing twice makes no sense */
- if ($current_page != $last_item && $current_page != 'manual') {
- $r = (array) sqlite_single_query($idx, "SELECT docbook_id FROM
toc WHERE parent_docbook_id = '$current_page' ORDER BY id");
- foreach ($r as $val) {
- $nav .= do_nav_line($val, 'downdown', $current_page,
$lang, $title);
- $children[$val] = $title;
- }
+ if ( !NAV_CHILDREN_EMBEDED && $current_page != $last_item) {
+ do_nav_children($idx, $val, $lang, $current_page, $nav,
$children);
}
- $nav .= "</table>\n";
+
+ $nav .= NAV_END;
return $tr[0];
}
+function do_nav_children($idx, $parent, $lang, $current_page, &$nav,
&$children) {
+ if ($current_page != 'manual' ) {
+ $rsub = (array) sqlite_single_query($idx, "SELECT docbook_id
FROM toc WHERE parent_docbook_id = '$current_page' ORDER BY id");
+ foreach ($rsub as $valsub) {
+ $nav .= do_nav_line($valsub, 'downdown', $current_page,
$lang, $title);
+ $children[$parent] = $title;
+ }
+ }
+}
function generate_url_for_id($lang, $ref)
{
@@ -124,9 +162,9 @@
$title = lookup_title($item);
$fulltitle = $title;
- if (isset($title{25})) {
+ if (NAV_TRUNCATE && isset($title{NAV_TRUNCATE}) ) {
$ftitle = " title='$title'";
- $title = substr($title, 0, 22). '...';
+ $title = substr($title, 0, NAV_TRUNCATE-3). '...';
} else {
$ftitle = "";
if (!$title) {
@@ -137,16 +175,22 @@
if ($item == $current_page) {
$current_page_title = $title;
+ $class .= ' active';
$title = "<b>$title</b>";
}
- $title = str_replace(' ', ' ', $title);
+ if (NAV_SPACE != ' ') {
+ $title = str_replace(' ', NAV_SPACE, $title);
+ }
+
if ($nolink) {
- return "<tr><td class='$class'>$title</td></tr>\n";
+ $navitem = $title;
} else {
$url = generate_url_for_id($lang, $item);
- return "<tr><td class='$class'><a $ftitle class='$class'
href='$url'>$title</a></td></tr>\n";
+ $navitem = "<a $ftitle class='$class' href='$url'>$title</a>";
}
+
+ return nav_item($navitem, $class);
}
/*****************************************************************************