Exemplo n.º 1
0
 private function renderDefaultSwitch()
 {
     // only add switch to activity / watchlist feed
     $feeds = array('activity', 'watchlist');
     if (!in_array($this->type, $feeds)) {
         return '';
     }
     // check current default view
     $defaultView = MyHome::getDefaultView();
     if ($defaultView == $this->type) {
         return '';
     }
     // render checkbox with label
     $html = '';
     $html .= Xml::openElement('div', array('id' => 'myhome-feed-switch-default', 'class' => 'accent'));
     $html .= Xml::element('input', array('id' => 'myhome-feed-switch-default-checkbox', 'type' => 'checkbox', 'name' => $this->type, 'disabled' => 'true'));
     $html .= Xml::element('label', array('for' => 'myhome-feed-switch-default-checkbox'), wfMsg('myhome-default-view-checkbox', wfMsg("myhome-{$this->type}-feed")));
     $html .= Xml::closeElement('div');
     return $html;
 }
    function execute($par)
    {
        wfProfileIn(__METHOD__);
        global $wgOut, $wgUser, $wgBlankImgUrl;
        $this->setHeaders();
        // not available for skins different than Oasis
        if (!F::app()->checkSkin('oasis')) {
            $wgOut->addWikiMsg('myhome-switch-to-monaco');
            wfProfileOut(__METHOD__);
            return;
        }
        // choose default view (RT #68074)
        if ($wgUser->isLoggedIn()) {
            $this->defaultView = MyHome::getDefaultView();
            if ($par == '') {
                $par = $this->defaultView;
            }
        } else {
            $this->defaultView = false;
        }
        // watchlist feed
        if ($par == 'watchlist') {
            $this->classWatchlist = "selected";
            // not available for anons
            if ($wgUser->isAnon()) {
                if (get_class(RequestContext::getMain()->getSkin()) == 'SkinOasis') {
                    $wgOut->wrapWikiMsg('<div class="latest-activity-watchlist-login" >$1</div>', array('oasis-activity-watchlist-login', wfGetReturntoParam()));
                } else {
                    $wgOut->wrapWikiMsg('<div id="myhome-log-in">$1</div>', array('myhome-log-in', wfGetReturntoParam()));
                }
                //oasis-activity-watchlist-login
                // RT #23970
                $wgOut->addInlineScript(<<<JS
\$(function() {
\t\$('#myhome-log-in').find('a').click(function(ev) {
\t\topenLogin(ev);
\t});
});
JS
);
                wfProfileOut(__METHOD__);
                return;
            } else {
                $this->feedSelected = 'watchlist';
                $feedProxy = new WatchlistFeedAPIProxy();
                $feedRenderer = new WatchlistFeedRenderer();
            }
        } else {
            //for example: wiki-domain.com/wiki/Special:WikiActivity
            $this->feedSelected = 'activity';
            $feedProxy = new ActivityFeedAPIProxy();
            $feedRenderer = new ActivityFeedRenderer();
        }
        $feedProvider = new DataFeedProvider($feedProxy);
        global $wgJsMimeType, $wgExtensionsPath;
        $wgOut->addScript("<script type=\"{$wgJsMimeType}\" src=\"{$wgExtensionsPath}/wikia/MyHome/WikiActivity.js\"></script>\n");
        $wgOut->addExtensionStyle(AssetsManager::getInstance()->getSassCommonURL('extensions/wikia/MyHome/oasis.scss'));
        wfRunHooks('SpecialWikiActivityExecute', array($wgOut, $wgUser));
        $data = $feedProvider->get(50);
        // this breaks when set to 60...
        // FIXME: do it in AchievementsII extension
        global $wgEnableAchievementsInActivityFeed, $wgEnableAchievementsExt;
        if (!empty($wgEnableAchievementsInActivityFeed) && !empty($wgEnableAchievementsExt)) {
            $wgOut->addExtensionStyle("{$wgExtensionsPath}/wikia/AchievementsII/css/achievements_sidebar.css");
        }
        // use message from MyHome as special page title
        $wgOut->setPageTitle(wfMsg('oasis-activity-header'));
        $template = new EasyTemplate(dirname(__FILE__) . '/templates');
        $template->set('data', $data['results']);
        $showMore = isset($data['query-continue']);
        if ($showMore) {
            $template->set('query_continue', $data['query-continue']);
        }
        if (empty($data['results'])) {
            $template->set('emptyMessage', wfMsgExt("myhome-activity-feed-empty", array('parse')));
        }
        $template->set_vars(array('showMore' => $showMore, 'type' => $this->feedSelected, 'wgBlankImgUrl' => $wgBlankImgUrl));
        $wgOut->addHTML($template->render('activityfeed.oasis'));
        // page header: replace subtitle with navigation
        global $wgHooks;
        $wgHooks['PageHeaderIndexAfterExecute'][] = array(&$this, 'addNavigation');
        wfProfileOut(__METHOD__);
    }