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