diff --git a/app/controllers/course/wiki.php b/app/controllers/course/wiki.php index 2420f1d7ecd2984cd290881545090db3f79da230..6393d1ca5cf01fb7805df6c4bf177752c6b89d1a 100644 --- a/app/controllers/course/wiki.php +++ b/app/controllers/course/wiki.php @@ -116,7 +116,7 @@ class Course_WikiController extends AuthenticatedController $startPage = WikiPage::find($this->range->getConfiguration()->WIKI_STARTPAGE_ID); $this->contentbar = ContentBar::get() - ->setTOC(CoreWiki::getTOC($this->page->parent && $startPage ? $startPage : $this->page, $this->page['name'])) + ->setTOC(CoreWiki::getTOC($this->page)) ->setIcon(Icon::create('wiki')) ->setInfo(sprintf( _('Version %1$s, geändert von %2$s <br> am %3$s'), @@ -418,7 +418,7 @@ class Course_WikiController extends AuthenticatedController ); $startPage = WikiPage::find($this->range->getConfiguration()->WIKI_STARTPAGE_ID); $this->contentbar = ContentBar::get() - ->setTOC(CoreWiki::getTOC($startPage, $page['name'])) + ->setTOC(CoreWiki::getTOC($page)) ->setIcon(Icon::create('wiki')) ->setInfo(_('Zuletzt gespeichert') .': '. '<studip-date-time :timestamp="Math.floor(lastSaveDate / 1000)" :relative="true"></studip-date-time>'); } @@ -609,7 +609,7 @@ class Course_WikiController extends AuthenticatedController Sidebar::Get()->addWidget($this->getViewsWidget($version->page, 'history')); $startPage = WikiPage::find($this->range->getConfiguration()->WIKI_STARTPAGE_ID); $this->contentbar = ContentBar::get() - ->setTOC(CoreWiki::getTOC($startPage, $version->page['name'])) + ->setTOC(CoreWiki::getTOC($version->page)) ->setIcon(Icon::create('wiki')) ->setInfo(sprintf( _('Version %1$s vom %2$s'), diff --git a/lib/modules/CoreWiki.class.php b/lib/modules/CoreWiki.class.php index e82fd6582ebd5704579c790da306746c371f49c1..a447451b8e34a9104e0e79e99ed3191718b204a0 100644 --- a/lib/modules/CoreWiki.class.php +++ b/lib/modules/CoreWiki.class.php @@ -181,23 +181,22 @@ class CoreWiki extends CorePlugin implements StudipModule * Generates a page hierarchy for table of contents/breadcrumbs. * @return TOCItem */ - public static function getTOC($startPage, $active_title = null): TOCItem + public static function getTOC($page, $first = true): TOCItem { $root = new TOCItem( - ($startPage && ($startPage->isNew() || $startPage->name === 'WikiWikiWeb')) + ($page && ($page->isNew() || $page->name === 'WikiWikiWeb')) ? _('Wiki-Startseite') - : $startPage->name + : $page->name ); - $root->setURL(URLHelper::getURL('dispatch.php/course/wiki/page/'.$startPage->id)); - if ($startPage->name == 'WikiWikiWeb' || $startPage->id == CourseConfig::get($startPage->range_id)->WIKI_STARTPAGE_ID) { + $root->setURL(URLHelper::getURL('dispatch.php/course/wiki/page/'.$page->id)); + if ($page->name == 'WikiWikiWeb' || $page->id == CourseConfig::get($page->range_id)->WIKI_STARTPAGE_ID) { $root->setIcon(Icon::create('wiki')); } - $root->setActive($root->getTitle() === $active_title); + $root->setActive($first); - foreach ($startPage->children as $child) { - $item = self::getTOC($child, $active_title); - $item->setActive($item->getTitle() === $active_title); - $root->addChild($item); + if ($page->parent) { + $parent = self::getTOC($page->parent, false); + $root->setParent($parent); } return $root;