"Sidebar", "version" => "0.1", "author" => "Starbeamrainbowlabs", "description" => "", "id" => "extra-sidebar", "code" => function() { $show_sidebar = false; // Show the sidebar if it is enabled in the settings if(isset($settings->sidebar_show) && $settings->sidebar_show === true) $show_sidebar = true; // Also show and persist the sidebar if the special GET parameter // sidebar is seet if(!$show_sidebar && isset($_GET["sidebar"])) { $show_sidebar = true; // Set a cookie to persist the display of the sidebar setcookie("sidebar_show", "true", 60 * 60 * 24 * 30); } // Show the sidebar if the cookie is set if(!$show_sidebar && isset($_COOKIE["sidebar_show"])) $show_sidebar = true; // Delete the cookie and hide the sidebar if the special GET paramter // nosidebar is set if(isset($_GET["nosidebar"])) { $show_sidebar = false; unset($_COOKIE["sidebar_show"]); setcookie("sidebar_show", null, time() - 3600); } page_renderer::register_part_preprocessor(function(&$parts) use ($show_sidebar) { global $settings, $pageindex; if($show_sidebar) { // Show the sidebar $exec_start = microtime(true); $sidebar_contents = ""; $sidebar_contents .= render_sidebar($pageindex); $parts["{body}"] = "
" . $parts["{body}"] . "
"; } }); } ]); /* * @summary Renders the sidebar for the given pageindex. * * @param $pageindex {array} - The pageindex to renderthe sidebar for * @param $root_pagename {string} - The pagename that should be considered the root of the rendering. You don't usually need to use this, it is used by the algorithm itself since it is recursive. * * @returns {string} A HTML rendering of the sidebar for the given pageindex */ function render_sidebar($pageindex, $root_pagename = "") { global $settings; $result = " $details) { // If we have a valid root pagename, and it isn't present at the // beginning of the current pagename, skip it if($root_pagename !== "" && strpos($pagename, $root_pagename) !== 0) continue; // The current page is the same as the root page, skip it if($pagename == $root_pagename) continue; // If the part of the current pagename that comes after the root // pagename has a slash in it, skip it as it is a sub-sub page. if(strpos(substr($pagename, strlen($root_pagename)), "/") !== false) continue; $result .= "
  • $pagename\n"; $result .= render_sidebar($pageindex, $pagename); $result .= "
  • \n"; } $result .= "\n"; return $result == "" ? "" : $result; } ?>