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