/** * Adds Focus tab to main navigation * @param SkinTemplate $sktemplate * @param BaseTemplate $tpl * @return boolean Always true to keep hook running */ public function onSkinTemplateOutputPageBeforeExec(&$sktemplate, &$tpl) { $aViews = array(); $oUser = $sktemplate->getUser(); $oCurrentTitle = $sktemplate->getTitle(); $sEditLink = ''; if ($oUser->isLoggedIn() === false) { $this->getDefaultWidgets($aViews, $oUser, $oCurrentTitle); } else { $oTitle = Title::makeTitle(NS_USER, $oUser->getName() . '/Sidebar'); $sEditLink = Linker::link($oTitle, '', array('id' => 'bs-usersidebar-edit', 'class' => 'icon-pencil'), array('action' => 'edit', 'preload' => '')); if ($oTitle->exists() === false) { $this->getDefaultWidgets($aViews, $oUser, $oTitle); } else { $aWidgets = BsWidgetListHelper::getInstanceForTitle($oTitle)->getWidgets(); if (empty($aWidgets)) { $this->getDefaultWidgets($aViews, $oUser, $oTitle); } $aViews = array_merge($aViews, $aWidgets); } } $aOut = array(); $aOut[] = $sEditLink; foreach ($aViews as $oView) { if ($oView instanceof ViewBaseElement) { $aOut[] = $oView->execute(); } } if ($tpl instanceof BsBaseTemplate) { $tpl->data['bs_navigation_main']['bs-usersidebar'] = array('position' => 20, 'label' => wfMessage('bs-tab_focus')->plain(), 'class' => 'icon-clipboard', 'content' => implode("\n", $aOut)); } else { $tpl->data['sidebar'][wfMessage('bs-tab_focus')->plain()] = implode("\n", $aOut); } return true; }
protected function getWidgets($oCurrentTitle, $oUser) { $oWidgetListView = new ViewWidgetList(); $aWidgetViews = array(); if ($oCurrentTitle->userCan('read') == false) { if ($oCurrentTitle->isSpecialPage() && $oUser->isLoggedIn()) { $oView = $oWidgetListView->setWidgets($this->getDefaultWidgets($aWidgetViews, $oUser, $oCurrentTitle)); } else { // set widget list to empty when user cannot read the page $oView = $oWidgetListView->setWidgets(array()); } return $oView; } $oTitle = Title::makeTitle(NS_USER, $oUser->getName() . '/Widgetbar'); if ($oTitle->exists() === false) { $oView = $oWidgetListView->setWidgets($this->getDefaultWidgets($aWidgetViews, $oUser, $oTitle)); return $oView; } $aWidgets = BsWidgetListHelper::getInstanceForTitle($oTitle)->getWidgets(); if (empty($aWidgets)) { $aWidgets = $this->getDefaultWidgets($aWidgetViews, $oUser, $oTitle); } $oWidgetListView->setWidgets($aWidgets); $oView = $oWidgetListView; return $oView; }