X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;ds=sidebyside;f=include%2Fdiogenes.barrel.inc.php;fp=include%2Fdiogenes.barrel.inc.php;h=65ad7ff4c7c77fc7008aae2a50449c76857af4bb;hb=51dda5825f66ced0a744d9e49159cedbe0fd5771;hp=38932841ba3ae90850afdbf104c20a75c45f174c;hpb=d67ed5a62c8c59e3a6e21248b214150af80789fd;p=diogenes.git diff --git a/include/diogenes.barrel.inc.php b/include/diogenes.barrel.inc.php index 3893284..65ad7ff 100644 --- a/include/diogenes.barrel.inc.php +++ b/include/diogenes.barrel.inc.php @@ -21,6 +21,7 @@ require_once 'diogenes.page.inc.php'; require_once 'Barrel.php'; +require_once 'Barrel/Menu.php'; /** This class is used to display a page of a Diogenes barrel, * that is an RCS-managed website with a virtual directory @@ -312,6 +313,9 @@ class DiogenesBarrel extends DiogenesPage // favicon if ($bbarrel->options->favicon) array_push($this->head, 'options->favicon).'" type="image/png" />'); + + // RSS feed + array_push($this->head, ''); } @@ -352,74 +356,9 @@ class DiogenesBarrel extends DiogenesPage if (!isset($this->table_menu)) return; - // all menu entries from database - $mcache = $this->menuRead(); - - // try to figure out the current MID from the current PID - // and build filiation - $filiation = array(); - foreach ($mcache as $mid => $mentry) - { - if ($mentry['pid'] == $PID) - $filiation = $this->menuToRoot($mcache, $mid, $filiation); - } - // add the user-defined part of the menu - $this->menu = array_merge($this->menu,$this->menuRecurse($mcache,0,$filiation,0)); - } - - - /** Return the filiation to get to the root element. - * - * @param mcache - * @param MID - * @param path - */ - function menuToRoot($mcache, $MID, $path) { - /* add ourself to the path */ - array_push($path,$MID); - - if ($MID) { - /* recursion */ - return $this->menuToRoot($mcache, $mcache[$MID]['parent'], $path); - } else { - /* termination */ - return $path; - } - } - - - /** Recursively add menu entries - * - * @param mcache - * @param MIDpere - * @param filiation - * @param level - */ - function menuRecurse($mcache, $MIDpere, $filiation, $level) { - // the produced output - $out = array(); - - foreach ($mcache[$MIDpere]['children'] as $mid) - { - $mentry = $mcache[$mid]; -// echo "pid : $pid, location : $location
"; - $entry = htmlentities(stripslashes($mentry['title']), ENT_QUOTES); - if ($mentry['pid']) - { - $link = $this->urlSite($this->barrel->getLocation($mentry['pid'])); - } else { - $link = $mentry['link']; - } - // decide whether this menu should be expanded - $expanded = ($this->barrel->options->menu_min_level == 0) || - ($level+1 < $this->barrel->options->menu_min_level) || - in_array($mid, $filiation); - array_push($out, array($level, $entry, $link, $expanded)); - $out = array_merge($out, $this->menuRecurse($mcache, $mid, $filiation, $level+1)); - } - - return $out; + $bmenu = new Diogenes_Barrel_Menu($this->dbh, $this->table_menu); + $this->menu = array_merge($this->menu, $bmenu->makeMenu($PID, $this->barrel->options->menu_min_level, array($this, 'urlSiteByPid'))); } @@ -496,7 +435,7 @@ class DiogenesBarrel extends DiogenesPage } return $path; } - + /** Returns the URL to one of the barrel's pages relative to * the current location. @@ -511,6 +450,18 @@ class DiogenesBarrel extends DiogenesPage return strlen($url) ? $url : "./"; } + + /** Returns the URL to one of the barrel's pages relative to + * the current location. + * + * @param dir + * @param file + */ + function urlSiteByPid($PID, $file = '') + { + return $this->urlSite($this->barrel->getLocation($PID), $file); + } + } ?>