/**
  * The template used for article pages and edit previews.
  */
 public function articlePage()
 {
     wfProfileIn(__METHOD__);
     // Template rendering cancelled by hook
     if (!wfRunHooks('CategorySelectArticlePage')) {
         wfProfileOut(__METHOD__);
         return false;
     }
     $categories = $this->wg->out->getCategories();
     $showHidden = (bool) $this->wg->User->getGlobalPreference('showhiddencats');
     $userCanEdit = $this->request->getVal('userCanEdit', CategorySelectHelper::isEditable());
     // There are no categories present and user can't edit, skip rendering
     if (!$userCanEdit && !count($categories)) {
         wfProfileOut(__METHOD__);
         return false;
     }
     // Categories link
     $categoriesLinkAttributes = array('class' => 'categoriesLink');
     $categoriesLinkPage = wfMessage('pagecategorieslink')->inContentLanguage()->text();
     $categoriesLinkText = wfMessage('pagecategories')->escaped();
     if (!empty($this->wg->WikiaUseNoFollow)) {
         $categoriesLinkAttributes['rel'] = 'nofollow';
     }
     $categoriesLink = Linker::link(Title::newFromText($categoriesLinkPage), $categoriesLinkText, $categoriesLinkAttributes);
     Wikia::addAssetsToOutput('category_select_css');
     Wikia::addAssetsToOutput('category_select_js');
     $this->response->setVal('categories', $categories);
     $this->response->setVal('categoriesLink', $categoriesLink);
     $this->response->setVal('showHidden', $showHidden);
     $this->response->setVal('userCanEdit', $userCanEdit);
     if ($this->app->checkSkin('venus')) {
         $this->overrideTemplate('articlePageVenus');
     }
     wfProfileOut(__METHOD__);
 }
 /**
  * Whether the current user can edit categories for the current request.
  * @return Boolean
  */
 public static function isEditable()
 {
     wfProfileIn(__METHOD__);
     if (!isset(self::$isEditable)) {
         $app = F::app();
         $request = $app->wg->Request;
         $title = $app->wg->Title;
         $user = $app->wg->User;
         $isEditable = true;
         if (!$user->isAllowed('edit') || $title->mNamespace != NS_SPECIAL && !$title->quickUserCan('edit') || $request->getVal('diff') || $request->getVal('oldid')) {
             $isEditable = false;
         }
         self::$isEditable = $isEditable;
     }
     wfProfileOut(__METHOD__);
     return self::$isEditable;
 }