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

Revision: 96122
Author:   robin
Date:     2011-09-02 16:43:33 +0000 (Fri, 02 Sep 2011)
Log Message:
-----------
* Use more specific css for .subpages and mark it important, because it's 
overridden by other css
* Make ListUsersTestWiki work for "incubator" option; reuse existing 
IncubatorTest::getUrlParam(); nicer SQL queries with arrays
* Remove link in user right message

Modified Paths:
--------------
    trunk/extensions/WikimediaIncubator/InfoPage.css
    trunk/extensions/WikimediaIncubator/ListUsersTestWiki.php
    trunk/extensions/WikimediaIncubator/WikimediaIncubator.i18n.php

Modified: trunk/extensions/WikimediaIncubator/InfoPage.css
===================================================================
--- trunk/extensions/WikimediaIncubator/InfoPage.css    2011-09-02 16:41:38 UTC 
(rev 96121)
+++ trunk/extensions/WikimediaIncubator/InfoPage.css    2011-09-02 16:43:33 UTC 
(rev 96122)
@@ -50,6 +50,6 @@
 #ca-nstab-main a {
        color: black;
 }
-.subpages {
-       display: none;
+span.subpages {
+       display: none !important;
 }
\ No newline at end of file

Modified: trunk/extensions/WikimediaIncubator/ListUsersTestWiki.php
===================================================================
--- trunk/extensions/WikimediaIncubator/ListUsersTestWiki.php   2011-09-02 
16:41:38 UTC (rev 96121)
+++ trunk/extensions/WikimediaIncubator/ListUsersTestWiki.php   2011-09-02 
16:43:33 UTC (rev 96122)
@@ -5,21 +5,27 @@
  */
 class ListUsersTestWiki {
        /**
-        * Get the &testwiki=wx/xyz parameter and validate it
-        * @return Array
+        * If the &testwiki= parameter matches the project site (Incubator), 
return that
+        * @return Array or null
         */
-       static function getTestWiki() {
-               global $wgRequest;
-               return IncubatorTest::analyzePrefix( $wgRequest->getVal( 
'testwiki' ), true );
+       static function getProjectInput() {
+               global $wmincProjectSite, $wgRequest;
+               $input = strtolower( $wgRequest->getVal( 'testwiki' ) );
+               if( $input == strtolower( $wmincProjectSite['name'] ) || $input 
== strtolower( $wmincProjectSite['short'] ) ) {
+                       return $wmincProjectSite;
+               }
+               return;
        }
 
        /**
         * Input form
         */
        static function onSpecialListusersHeaderForm( $pager, &$out ) {
-               $testwiki = self::getTestWiki();
+               $testwiki = IncubatorTest::getUrlParam();
+               $project = self::getProjectInput();
+               $input = $project ? $project['name'] : ( $testwiki ? 
$testwiki['prefix'] : null );
                $out .= Xml::label( wfMsg( 'wminc-testwiki' ), 'testwiki' ) . ' 
' .
-                       Xml::input( 'testwiki', 20, ( $testwiki['error'] ? null 
: $testwiki['prefix'] ), array( 'id' => 'testwiki' ) ) . '<br />';
+                       Xml::input( 'testwiki', 20, $input, array( 'id' => 
'testwiki' ) ) . '<br />';
                return true;
        }
 
@@ -27,9 +33,11 @@
         * Show a message that you are viewing a list of users of a certain 
test wiki
         */
        static function onSpecialListusersHeader( $pager, &$out ) {
-               $testwiki = self::getTestWiki();
-               if( !$testwiki['error'] ) {
-                       $out .= wfMsgWikiHtml( 'wminc-listusers-testwiki', 
$testwiki['prefix'] );
+               if( $project = self::getProjectInput() ) {
+                       $out .= wfMsgWikiHtml( 'wminc-listusers-testwiki', '"' 
. $project['name'] . '"' );
+               } elseif( $testwiki = IncubatorTest::getUrlParam() ) {
+                       $link = Linker::linkKnown( Title::newFromText( 
$testwiki['prefix'] ) );
+                       $out .= wfMsgWikiHtml( 'wminc-listusers-testwiki', 
$link );
                }
                return true;
        }
@@ -38,21 +46,25 @@
         * Query
         */
        static function onSpecialListusersQueryInfo( $pager, &$query ) {
-               $testwiki = self::getTestWiki();
-               if( !$testwiki['error'] ) {
-                       global $wmincPref;
-                       $dbr = wfGetDB( DB_SLAVE );
-                       $projectPrefName = $dbr->addQuotes( 
"$wmincPref-project" );
-                       $projectPrefVal = $dbr->addQuotes( $testwiki['project'] 
);
-                       $langPrefName = $dbr->addQuotes( "$wmincPref-code" );
-                       $langPrefVal = $dbr->addQuotes( $testwiki['lang'] );
-                       $query['tables']['p1'] = 'user_properties';
-                       $query['tables']['p2'] = 'user_properties';
-                       $query['join_conds']['p1'] = array( 'JOIN',
-                               "user_id=p1.up_user AND 
(p1.up_property=$projectPrefName AND p1.up_value=$projectPrefVal)" );
-                       $query['join_conds']['p2'] = array( 'JOIN',
-                               "user_id=p2.up_user AND 
(p2.up_property=$langPrefName AND p2.up_value=$langPrefVal)" );
+               $testwiki = IncubatorTest::getUrlParam();
+               $project = self::getProjectInput();
+               if( !$project && !$testwiki ) {
+                       return true; # no input or invalid input
                }
+               global $wmincPref;
+               $query['tables']['p1'] = 'user_properties';
+               $query['join_conds']['p1'] = array( 'JOIN', array( 
'user_id=p1.up_user',
+                       'p1.up_property' => "$wmincPref-project",
+                       'p1.up_value' => $project ? $project['short'] : 
$testwiki['project']
+               ) );
+               if( $project ) {
+                       return true; # project site doesn't need language code 
= returning
+               }
+               $query['tables']['p2'] = 'user_properties';
+               $query['join_conds']['p2'] = array( 'JOIN', array( 
'user_id=p2.up_user',
+                       'p2.up_property' => "$wmincPref-code",
+                       'p2.up_value' => $testwiki['lang']
+               ) );
                return true;
        }
 }

Modified: trunk/extensions/WikimediaIncubator/WikimediaIncubator.i18n.php
===================================================================
--- trunk/extensions/WikimediaIncubator/WikimediaIncubator.i18n.php     
2011-09-02 16:41:38 UTC (rev 96121)
+++ trunk/extensions/WikimediaIncubator/WikimediaIncubator.i18n.php     
2011-09-02 16:43:33 UTC (rev 96122)
@@ -45,7 +45,7 @@
        'wminc-ip' => '"$1" is an IP address.',
 
        # User groups
-       'right-viewuserlang' => 'View [[Special:ViewUserLang|user language and 
test wiki]]',
+       'right-viewuserlang' => 'View user language and test wiki',
        'group-test-sysop' => 'Test wiki administrators',
        'group-test-sysop-member' => 'test wiki administrator',
        'grouppage-test-sysop' => 'Project:Test wiki administrators',
@@ -56,7 +56,7 @@
        'wminc-code-retired' => 'This language code has been changed and no 
longer refers to the original language.',
 
        # Special:ListUsers
-       'wminc-listusers-testwiki' => 'You are viewing users who have set their 
test wiki preference to [[$1]].',
+       'wminc-listusers-testwiki' => 'You are viewing users who have set their 
test wiki preference to $1.',
 );
 
 /** Message documentation (Message documentation)


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

Reply via email to