Cargo's Special:Drilldown works differently to a normal category page:
- A category page sorts according to page name minus namespace (see [[Help:Categories#Sort_key]]).
- Special:Drilldown sorts according to page name WITH namespace.
This can be a problem, e.g. if all result pages are in a "Books" namespace:
- A category page will display headings from "A" to "Z" as appropriate.
- Special:Drilldown will only have "B", "B cont.", and "B cont."
Here is a patch which I hope fixes this:
`
index 8ed5d8a..471353c 100644
--- a/drilldown/CargoSpecialDrilldown.php
+++ b/drilldown/CargoSpecialDrilldown.php
@@ -1306,7 +1306,8 @@ END;
$matchingPages = array();
while ( $row = $cdb->fetchRow( $res ) ) {
$pageName = $row['title'];
- $curValue = array( 'title' => $pageName );
+ $pageNamespace = MWNamespace::getCanonicalName( $row['namespace'] ); #xxx added
+ $curValue = array( 'title' => $pageName, 'namespace' => $pageNamespace); #xxx changed
if ( array_key_exists( 'foundFileMatch', $row ) && $row['foundFileMatch'] ) {
if ( array_key_exists( 'fileName', $row ) ) {
// Not used for _fileData drilldown.
diff --git a/formats/CargoCategoryFormat.php b/formats/CargoCategoryFormat.php
index 2b5f7d0..edea47d 100644
--- a/formats/CargoCategoryFormat.php
+++ b/formats/CargoCategoryFormat.php
@@ -54,7 +54,7 @@ class CargoCategoryFormat extends CargoListFormat {
} else {
$curValue = $valuesTable[$i][$headerField];
}
- $cur_first_char = $wgContLang->firstChar( $curValue );
+ $cur_first_char = $wgContLang->firstChar( str_replace ($row['namespace'].':', '', $curValue) ); #xxx changed
if ( $rowindex % $rows_per_column == 0 ) {
$result .= "\n\t\t\t<div style=\"float: left; width: $column_width%;\">\n";
`