http://www.mediawiki.org/wiki/Special:Code/MediaWiki/71786

Revision: 71786
Author:   questpc
Date:     2010-08-27 09:17:57 +0000 (Fri, 27 Aug 2010)

Log Message:
-----------
ImageGallery limits proper calculation

Modified Paths:
--------------
    trunk/extensions/CategoryBrowser/CategoryBrowser.php
    trunk/extensions/CategoryBrowser/CategoryBrowserCtrl.php
    trunk/extensions/CategoryBrowser/CategoryBrowserModel.php

Modified: trunk/extensions/CategoryBrowser/CategoryBrowser.php
===================================================================
--- trunk/extensions/CategoryBrowser/CategoryBrowser.php        2010-08-27 
09:12:24 UTC (rev 71785)
+++ trunk/extensions/CategoryBrowser/CategoryBrowser.php        2010-08-27 
09:17:57 UTC (rev 71786)
@@ -40,7 +40,7 @@
 /* default minimal count of DB rows to start paging */
 define( 'CB_PAGING_ROWS', 20 );
 /* minimal count of rows in image gallery (not DB rows!) pager */
-define( 'CB_FILES_ROWS', 3 );
+define( 'CB_FILES_MAX_ROWS', 3 );
 /* maximal number of logical operations in SQL filter (condition) */
 define( 'CB_MAX_LOGICAL_OP', 5 );
 
@@ -67,7 +67,8 @@
        // default limits of different pagers
        static $categoriesLimit = CB_PAGING_ROWS;
        static $pagesLimit = CB_PAGING_ROWS;
-       static $filesLimit = CB_FILES_ROWS;
+       static $filesLimit = null;
+       static $filesMaxRows = CB_FILES_MAX_ROWS;
 
        /**
         * Add this extension to the mediawiki's extensions list.
@@ -113,6 +114,14 @@
                $wgAjaxExportList[] = 'CategoryBrowser::getSubOffsetHtml';
                $wgAjaxExportList[] = 'CategoryBrowser::applyEncodedQueue';
                $wgAjaxExportList[] = 'CategoryBrowser::generateSelectedOption';
+
+               # calculate proper limit for files pager
+               # by default, limit for ImageGallery is maxrows * perrow :
+               self::$filesLimit = CB_Setup::$filesMaxRows * 
CB_Setup::$imageGalleryPerRow;
+               if ( self::$filesLimit <= 0 ) {
+                       # ImageGallery is disabled, use pages limit instead
+                       self::$filesLimit = CB_Setup::$pagesLimit;
+               }
        }
 
        /*
@@ -127,8 +136,8 @@
                self::$skin = is_object( $wgUser ) ? self::$user->getSkin() : 
$wgSkin;
                self::$response = $wgRequest->response();
                self::$cookie_prefix = 'CategoryBrowser_' . 
self::$user->getId() . '_';
-               // find out current collation of category table 'cat_title' 
field
-               // this is required to switch between CI and CS search
+               # find out current collation of category table 'cat_title' field
+               # this is required to switch between CI and CS search
                $db = & wfGetDB( DB_SLAVE );
                $category_table = $db->tableName( 'category' );
                $db_result = $db->query( "SHOW FULL COLUMNS FROM 
${category_table}" );

Modified: trunk/extensions/CategoryBrowser/CategoryBrowserCtrl.php
===================================================================
--- trunk/extensions/CategoryBrowser/CategoryBrowserCtrl.php    2010-08-27 
09:12:24 UTC (rev 71785)
+++ trunk/extensions/CategoryBrowser/CategoryBrowserCtrl.php    2010-08-27 
09:17:57 UTC (rev 71786)
@@ -265,7 +265,7 @@
                                'js_nav_func' => "filesNav",
                                'select_fields' => "page_title, page_namespace, 
page_len, page_is_redirect",
                                'ns_cond' => "page_namespace = " . NS_FILE,
-                               'default_limit' => CB_Setup::$filesLimit * 
CB_Setup::$imageGalleryPerRow
+                               'default_limit' => CB_Setup::$filesLimit
                        )
                );
                wfLoadExtensionMessages( 'CategoryBrowser' );
@@ -273,27 +273,28 @@
                if ( count( $args ) < 2 ) {
                        return 'Too few parameters in ' . __METHOD__;
                }
-               if ( !isset( $pager_types[ $args[0] ] ) ) {
-                       return 'Unknown pager type in ' . __METHOD__;
+               $pager_type = $args[0];
+               if ( !isset( $pager_types[ $pager_type ] ) ) {
+                       return 'Unknown pager type=' . CB_Setup::specialchars( 
$pager_type ) . ' in ' . __METHOD__;
                }
-               $pager_type = & $pager_types[ $args[0] ];
-               $limit = ( count( $args ) > 3 ) ? abs( intval( $args[3] ) ) : 
$pager_type[ 'default_limit' ];
+               $pager_setup = & $pager_types[ $args[0] ];
+               $limit = ( count( $args ) > 3 ) ? abs( intval( $args[3] ) ) : 
$pager_setup[ 'default_limit' ];
                $offset = ( count( $args ) > 2 ) ? abs( intval( $args[2] ) ) : 
0;
                $parentCatId = abs( intval( $args[1] ) );
                $cb = new CategoryBrowser();
                $pager = new CB_SubPager( $parentCatId, $offset, $limit,
-                       $pager_type[ 'js_nav_func' ],
-                       $pager_type[ 'select_fields' ],
-                       $pager_type[ 'ns_cond' ] );
+                       $pager_setup[ 'js_nav_func' ],
+                       $pager_setup[ 'select_fields' ],
+                       $pager_setup[ 'ns_cond' ] );
                $pager->getCurrentRows();
-               switch ( $pager->getListType() ) {
-               case 'generateCatList' :
+               switch ( $pager_type ) {
+               case 'subcats' :
                        $view = new CB_CategoriesView( $pager );
                        break;
-               case 'generatePagesList' :
+               case 'pages' :
                        $view = new CB_PagesView( $pager );
                        break;
-               case 'generateFilesList' :
+               case 'files' :
                        # respect extension & core settings
                        global $wgOut, $wgCategoryMagicGallery;
                        // unstub $wgOut, otherwise $wgOut->mNoGallery may be 
unavailable

Modified: trunk/extensions/CategoryBrowser/CategoryBrowserModel.php
===================================================================
--- trunk/extensions/CategoryBrowser/CategoryBrowserModel.php   2010-08-27 
09:12:24 UTC (rev 71785)
+++ trunk/extensions/CategoryBrowser/CategoryBrowserModel.php   2010-08-27 
09:17:57 UTC (rev 71786)
@@ -107,6 +107,7 @@
         * otherwise throws an error
         * warning: will fail, when called before calling 
$this->getCurrentRows() !
         * warning: $this->limit is not set properly before calling 
$this->getCurrentRows() !
+        * todo: unused anymore; keep because might be useful in some cases
         */
        function getListType() {
                // it is not enough to check $this->entries[0],



_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs

Reply via email to