make Special:Newpages includable
authorErik Moeller <erik@users.mediawiki.org>
Sat, 28 May 2005 17:17:27 +0000 (17:17 +0000)
committerErik Moeller <erik@users.mediawiki.org>
Sat, 28 May 2005 17:17:27 +0000 (17:17 +0000)
{{Special:Newpages}} => default number of pages, with no navigation
{{Special:Newpages/shownav}} => show the header and navigation links
{{Special:Newpages/10}} => set number of pages to 10
{{Special:Newpages/limit=5,offset=10,shownav}} => all possible params

includes/QueryPage.php
includes/SpecialNewpages.php
includes/SpecialPage.php

index 01af31a..3e37e37 100644 (file)
@@ -199,8 +199,9 @@ class QueryPage {
         *
         * @param $offset database query offset
         * @param $limit database query limit
+        * @param $shownavigation show navigation like "next 200"?
         */
-       function doQuery( $offset, $limit ) {
+       function doQuery( $offset, $limit, $shownavigation=true ) {
                global $wgUser, $wgOut, $wgLang, $wgRequest, $wgContLang;
                global $wgMiserMode;
 
@@ -234,17 +235,17 @@ class QueryPage {
 
                $sk = $wgUser->getSkin( );
 
-               $wgOut->addHTML( $this->getPageHeader() );
-
-               $top = wfShowingResults( $offset, $num);
-               $wgOut->addHTML( "<p>{$top}\n" );
-
-               # often disable 'next' link when we reach the end
-               if($num < $limit) { $atend = true; } else { $atend = false; }
-
-               $sl = wfViewPrevNext( $offset, $limit , $wgContLang->specialPage( $sname ), "" ,$atend );
-               $wgOut->addHTML( "<br />{$sl}</p>\n" );
-
+               if($shownavigation) {
+                       $wgOut->addHTML( $this->getPageHeader() );
+                       $top = wfShowingResults( $offset, $num);
+                       $wgOut->addHTML( "<p>{$top}\n" );
+       
+                       # often disable 'next' link when we reach the end
+                       if($num < $limit) { $atend = true; } else { $atend = false; }
+                       
+                       $sl = wfViewPrevNext( $offset, $limit , $wgContLang->specialPage( $sname ), "" ,$atend );
+                       $wgOut->addHTML( "<br />{$sl}</p>\n" );
+               }
                if ( $num > 0 ) {
                        $s = "<ol start='" . ( $offset + 1 ) . "' class='special'>";
 
@@ -273,7 +274,9 @@ class QueryPage {
                        $s .= '</ol>';
                        $wgOut->addHTML( $s );
                }
-               $wgOut->addHTML( "<p>{$sl}</p>\n" );
+               if($shownavigation) {
+                       $wgOut->addHTML( "<p>{$sl}</p>\n" );
+               }
                return $num;
        }
 
index a60324d..618375c 100644 (file)
@@ -101,15 +101,34 @@ class NewPagesPage extends QueryPage {
 /**
  * constructor
  */
-function wfSpecialNewpages()
+function wfSpecialNewpages($par, $specialPage)
 {
        global $wgRequest;
-    list( $limit, $offset ) = wfCheckLimits();
+       list( $limit, $offset ) = wfCheckLimits();
+       if( $par ) {
+               $bits = preg_split( '/\s*,\s*/', trim( $par ) );
+               foreach ( $bits as $bit ) {
+                       if ( 'shownav' == $bit ) $shownavigation = 1;
+                       if ( is_numeric( $bit ) ) {
+                               $limit = $bit;
+                       }
+
+                       if ( preg_match( '/^limit=(\d+)$/', $bit, $m ) ) {
+                               $limit = intval($m[1]);
+                       }
+                       if ( preg_match( '/^offset=(\d+)$/', $bit, $m ) ) {
+                               $offset = intval($m[1]);
+                       }
+               }
+       }
+       if(!isset($shownavigation)) {
+               $shownavigation=!$specialPage->including();
+       }
 
-    $npp = new NewPagesPage();
+       $npp = new NewPagesPage();
 
-    if( !$npp->doFeed( $wgRequest->getVal( 'feed' ) ) ) {
-           $npp->doQuery( $offset, $limit );
+       if( !$npp->doFeed( $wgRequest->getVal( 'feed' ) ) ) {
+               $npp->doQuery( $offset, $limit, $shownavigation );
        }
 }
 
index 8741610..5469001 100644 (file)
@@ -48,7 +48,7 @@ $wgSpecialPages = array(
        'Wantedpages'   => new SpecialPage( 'Wantedpages' ),
        'Shortpages'    => new SpecialPage( 'Shortpages' ),
        'Longpages'             => new SpecialPage( 'Longpages' ),
-       'Newpages'              => new SpecialPage( 'Newpages' ),
+       'Newpages'              => new IncludableSpecialPage( 'Newpages' ),
        'Ancientpages'  => new SpecialPage( 'Ancientpages' ),
        'Deadendpages'  => new SpecialPage( 'Deadendpages' ),
        'Allpages'              => new IncludableSpecialPage( 'Allpages' ),