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

Revision: 89457
Author:   nikerabbit
Date:     2011-06-04 09:29:36 +0000 (Sat, 04 Jun 2011)
Log Message:
-----------
Hack for making Special:MyLanguage links red if target doesn't exists

Modified Paths:
--------------
    trunk/extensions/Translate/Translate.php
    trunk/extensions/Translate/specials/SpecialMyLanguage.php

Modified: trunk/extensions/Translate/Translate.php
===================================================================
--- trunk/extensions/Translate/Translate.php    2011-06-04 09:22:24 UTC (rev 
89456)
+++ trunk/extensions/Translate/Translate.php    2011-06-04 09:29:36 UTC (rev 
89457)
@@ -116,6 +116,8 @@
 $wgHooks['SpecialSearchProfileForm'][] = 
'TranslateEditAddons::searchProfileForm';
 $wgHooks['SpecialSearchSetupEngine'][] = 
'TranslateEditAddons::searchProfileSetupEngine';
 
+$wgHooks['LinkBegin'][] = 'SpecialMyLanguage::linkfix';
+
 // New rights
 $wgAvailableRights[] = 'translate';
 $wgAvailableRights[] = 'translate-import';

Modified: trunk/extensions/Translate/specials/SpecialMyLanguage.php
===================================================================
--- trunk/extensions/Translate/specials/SpecialMyLanguage.php   2011-06-04 
09:22:24 UTC (rev 89456)
+++ trunk/extensions/Translate/specials/SpecialMyLanguage.php   2011-06-04 
09:29:36 UTC (rev 89457)
@@ -50,4 +50,26 @@
 
                $wgOut->redirect( $title->getLocalURL() );
        }
+
+       /**
+        * Make Special:MyLanguage links red if the target page doesn't exists.
+        * A bit hacky because the core code is not so flexible.
+        */
+       public static function linkfix( $dummy, $target, &$html, 
&$customAttribs, &$query, &$options, &$ret ) {
+               if ( $target->getNamespace() == NS_SPECIAL ) {
+                       list( $name, $subpage ) = SpecialPage::resolveAlias( 
$target->getDBkey() );
+                       if ( $name === 'MyLanguage' ) {
+                               $realTarget = Title::newFromText( $subpage );
+                               if ( !$realTarget->exists() ) {
+                                       $options[] = 'broken';
+                                       $index = array_search( 'known', 
$options, true );
+                                       if ( $index !== false ) unset( 
$options[$index] );
+
+                                       $index = array_search( 'noclasses', 
$options, true );
+                                       if ( $index !== false ) unset( 
$options[$index] );
+                               }
+                       }
+               }
+               return true;
+       }
 }


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

Reply via email to