/** * Generate wiki's page tree * * @param page_wiki $page. A wiki page object * @param navigation_node $node. Starting navigation_node * @param array $keys. An array to store keys * @return an array with all tree nodes */ function wiki_build_tree($page, $node, &$keys) { $content = array(); static $icon; $icon = new pix_icon('f/odt', ''); $pages = wiki_get_linked_pages($page->id); foreach ($pages as $p) { $key = $page->id . ':' . $p->id; if (in_array($key, $keys)) { break; } array_push($keys, $key); $l = wiki_parser_link($p); $link = new moodle_url('/mod/wiki/view.php', array('pageid' => $p->id)); // navigation_node::get_content will format the title for us $nodeaux = $node->add($p->title, $link, null, null, null, $icon); if ($l['new']) { $nodeaux->add_class('wiki_newentry'); } wiki_build_tree($p, $nodeaux, $keys); } $content[] = $node; return $content; }
/** * Prints the index page tab content * * */ private function print_index_content() { global $OUTPUT; $page = $this->page; if ($page->timerendered + WIKI_REFRESH_CACHE_TIME < time()) { $fresh = wiki_refresh_cachedcontent($page); $page = $fresh['page']; } // navigation_node get_content calls format string for us $node = new navigation_node($page->title); $keys = array(); $tree = array(); $tree = wiki_build_tree($page, $node, $keys); $table = new html_table(); $table->head = array(get_string('pageindex', 'wiki') . $OUTPUT->help_icon('pageindex', 'wiki')); $table->attributes['class'] = 'wiki_editor generalbox'; $table->data[] = array($this->render_navigation_node($tree)); echo html_writer::table($table); }