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

Revision: 89323
Author:   nikerabbit
Date:     2011-06-02 09:58:23 +0000 (Thu, 02 Jun 2011)
Log Message:
-----------
New hook which tries to do the right thing for subpagelist when viewing 
translatable pages

Modified Paths:
--------------
    trunk/extensions/Translate/Translate.php
    trunk/extensions/Translate/tag/PageTranslationHooks.php

Modified: trunk/extensions/Translate/Translate.php
===================================================================
--- trunk/extensions/Translate/Translate.php    2011-06-02 08:18:52 UTC (rev 
89322)
+++ trunk/extensions/Translate/Translate.php    2011-06-02 09:58:23 UTC (rev 
89323)
@@ -615,6 +615,9 @@
 
                // Custom move page that can move all the associated pages too
                $wgHooks['SpecialPage_initList'][] = 
'PageTranslationHooks::replaceMovePage';
+
+               // Replace subpage logic behaviour
+               $wgHooks['SkinSubPageSubtitle'][] = 
'PageTranslationHooks::replaceSubtitle';
        }
 }
 

Modified: trunk/extensions/Translate/tag/PageTranslationHooks.php
===================================================================
--- trunk/extensions/Translate/tag/PageTranslationHooks.php     2011-06-02 
08:18:52 UTC (rev 89322)
+++ trunk/extensions/Translate/tag/PageTranslationHooks.php     2011-06-02 
09:58:23 UTC (rev 89323)
@@ -569,4 +569,63 @@
 
                return true;
        }
+
+       public static function replaceSubtitle( &$subpages, $skin, $out ) {
+               global $wgOut, $wgUser;
+               if ( $out === null ) $out = $wgOut;
+               if ( $skin === null ) $skin = $wgUser->getSkin();
+
+               if ( !TranslatablePage::isTranslationPage( $out->getTitle() )
+                               && !TranslatablePage::isSourcePage( 
$out->getTitle() ) ) {
+                       return true;
+               }
+
+               // Copied from Skin::subPageSubtitle()
+               if ( $out->isArticle() && MWNamespace::hasSubpages( 
$out->getTitle()->getNamespace() ) ) {
+                       $ptext = $out->getTitle()->getPrefixedText();
+                       if ( preg_match( '/\//', $ptext ) ) {
+                               $links = explode( '/', $ptext );
+                               array_pop( $links );
+                               // Also pop of one extra for language code is 
needed
+                               if ( TranslatablePage::isTranslationPage( 
$out->getTitle() ) ) {
+                                       array_pop( $links );
+                               }
+                               $c = 0;
+                               $growinglink = '';
+                               $display = '';
+
+                               foreach ( $links as $link ) {
+                                       $growinglink .= $link;
+                                       $display .= $link;
+                                       $linkObj = Title::newFromText( 
$growinglink );
+
+                                       if ( is_object( $linkObj ) && 
$linkObj->exists() ) {
+                                               $getlink = $skin->linkKnown(
+                                                       
SpecialPage::getTitleFor( 'MyLanguage', $growinglink ),
+                                                       htmlspecialchars( 
$display )
+                                               );
+
+                                               $c++;
+
+                                               if ( $c > 1 ) {
+                                                       $subpages .= wfMsgExt( 
'pipe-separator', 'escapenoentities' );
+                                               } else  {
+                                                       // This one is stupid 
imho, doesn't work with chihuahua
+                                                       //$subpages .= '< ';
+                                               }
+
+                                               $subpages .= $getlink;
+                                               $display = '';
+                                       } else {
+                                               $display .= '/';
+                                       }
+                                       $growinglink .= '/';
+                               }
+                       }
+                       return false;
+               }
+
+               return true;
+       }
+
 }


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

Reply via email to