function getDefaultQuery() { $query = parent::getDefaultQuery(); $query['template'] = $this->mTemplateTitle->getPartialURL(); return $query; }
/** * Format the HTML output of the special page. * @param $opts Form options, such as wikilog name, category, date, etc. */ public function webOutput( FormOptions $opts ) { global $wgRequest, $wgOut, $wgMimeType, $wgTitle, $wgParser; # Set page title, html title, nofollow, noindex, etc... $this->setHeaders(); $this->outputHeader(); # Build query object. $query = self::getQuery( $opts ); # Prepare the parser. # This must be called here if not including, before the pager # object is created. WikilogTemplatePager fails otherwise. if ( !$this->including() ) { $popts = $wgOut->parserOptions(); $wgParser->startExternalParse( $wgTitle, $popts, Parser::OT_HTML ); } # Create the pager object that will create the list of articles. if ( $opts['view'] == 'archives' ) { $pager = new WikilogArchivesPager( $query, $this->including() ); } elseif ( $opts['template'] ) { $templ = Title::makeTitle( NS_TEMPLATE, $opts['template'] ); $pager = new WikilogTemplatePager( $query, $templ, $opts['limit'], $this->including() ); } else { $pager = new WikilogSummaryPager( $query, $opts['limit'], $this->including() ); } # Handle special page inclusion. if ( $this->including() ) { # Get pager body. $body = $pager->getBody(); } else { # If a wikilog is selected, set the title. $title = $query->getWikilogTitle(); if ( !is_null( $title ) ) { # Retrieve wikilog front page $article = new Article( $title ); $content = $article->getContent(); $wgOut->setPageTitle( $title->getPrefixedText() ); $wgOut->addWikiTextTitle( $content, $title ); } # Display query options. $body = $this->getHeader( $opts ); # Get pager body. $body .= $pager->getBody(); # Add navigation bars. $body .= $pager->getNavigationBar(); } # Output. $body = Xml::wrapClass( $body, 'wl-wrapper', 'div' ); $wgOut->addHTML( $body ); # Get query parameter array, for the following links. $qarr = $query->getDefaultQuery(); # Add feed links. $wgOut->setSyndicated(); $altquery = wfArrayToCGI( array_intersect_key( $qarr, WikilogItemFeed::$paramWhitelist ) ); if ( $altquery ) { $wgOut->setFeedAppendQuery( $altquery ); } # Add links for alternate views. foreach ( self::$views as $alt ) { if ( $alt != $opts['view'] ) { $altquery = wfArrayToCGI( array( 'view' => $alt ), $qarr ); $wgOut->addLink( array( 'rel' => 'alternate', 'href' => $wgTitle->getLocalURL( $altquery ), 'type' => $wgMimeType, 'title' => wfMsgExt( "wikilog-view-{$alt}", array( 'content', 'parsemag' ) ) ) ); } } }
/** * View action handler. */ public function view() { global $wgRequest, $wgOut, $wgMimeType; $query = new WikilogItemQuery( $this->mTitle ); $query->setPubStatus( $wgRequest->getVal( 'show' ) ); # RSS or Atom feed requested. Ignore all other options. if ( ( $feedFormat = $wgRequest->getVal( 'feed' ) ) ) { global $wgWikilogNumArticles; $feed = new WikilogItemFeed( $this->mTitle, $feedFormat, $query, $wgRequest->getInt( 'limit', $wgWikilogNumArticles ) ); return $feed->execute(); } # View selection. $view = $wgRequest->getVal( 'view', 'summary' ); # Query filter options. $query->setCategory( $wgRequest->getVal( 'category' ) ); $query->setAuthor( $wgRequest->getVal( 'author' ) ); $query->setTag( $wgRequest->getVal( 'tag' ) ); $year = $wgRequest->getIntOrNull( 'year' ); $month = $wgRequest->getIntOrNull( 'month' ); $day = $wgRequest->getIntOrNull( 'day' ); $query->setDate( $year, $month, $day ); # Display wiki text page contents. parent::view(); # Create pager object, according to the type of listing. if ( $view == 'archives' ) { $pager = new WikilogArchivesPager( $query ); } else { $pager = new WikilogSummaryPager( $query ); } # Display list of wikilog posts. $body = $pager->getBody(); $body .= $pager->getNavigationBar(); $wgOut->addHTML( Xml::openElement( 'div', array( 'class' => 'wl-wrapper' ) ) ); $wgOut->addHTML( $body ); $wgOut->addHTML( Xml::closeElement( 'div' ) ); # Get query parameter array, for the following links. $qarr = $query->getDefaultQuery(); # Add feed links. $wgOut->setSyndicated(); if ( isset( $qarr['show'] ) ) { $altquery = wfArrayToCGI( array_intersect_key( $qarr, WikilogItemFeed::$paramWhitelist ) ); $wgOut->setFeedAppendQuery( $altquery ); } # Add links for alternate views. foreach ( self::$views as $alt ) { if ( $alt != $view ) { $altquery = wfArrayToCGI( array( 'view' => $alt ), $qarr ); $wgOut->addLink( array( 'rel' => 'alternate', 'href' => $this->mTitle->getLocalURL( $altquery ), 'type' => $wgMimeType, 'title' => wfMsgExt( "wikilog-view-{$alt}", array( 'content', 'parsemag' ) ) ) ); } } }