https://www.mediawiki.org/wiki/Special:Code/MediaWiki/112576
Revision: 112576
Author: santhosh
Date: 2012-02-28 05:03:36 +0000 (Tue, 28 Feb 2012)
Log Message:
-----------
1. Restrict translation to a language if the group has a different priority
language list
2. Display all the priority languages in the languages listed on top of a
translated page. Show red link if translation percent is zero.
Modified Paths:
--------------
trunk/extensions/Translate/tag/PageTranslationHooks.php
Modified: trunk/extensions/Translate/tag/PageTranslationHooks.php
===================================================================
--- trunk/extensions/Translate/tag/PageTranslationHooks.php 2012-02-28
05:00:25 UTC (rev 112575)
+++ trunk/extensions/Translate/tag/PageTranslationHooks.php 2012-02-28
05:03:36 UTC (rev 112576)
@@ -196,12 +196,22 @@
}
// If the prioritylangs set, show those languages alone.
$priorityLangs = TranslateMetadata::get(
$page->getMessageGroupId(), 'prioritylangs' );
+ $priorityForce = TranslateMetadata::get(
$page->getMessageGroupId(), 'priorityforce' );
$filter = null;
if( strlen( $priorityLangs ) > 0 ) {
- $filter = explode( ',', $priorityLangs );
+ $filter = array_flip( explode( ',', $priorityLangs ) );
}
if ( $filter != null) {
- $status = array_intersect_key( $status, array_flip(
$filter ) );
+ if ( $priorityForce == 'on' ) {
+ // Show only the priority languages.
+ $status = array_intersect_key( $status, $filter
);
+ }
+ foreach ( $filter as $langCode => $value) {
+ if ( !isset( $status[$langCode] ) ) {
+ // We need to show all priority
languages even if no translation started
+ $status[ $langCode] = 0;
+ }
+ }
}
// Fix title
$title = $page->getTitle();
@@ -227,7 +237,7 @@
elseif ( $percent < 80 ) { $image = 4; }
else { $image = 5; }
- $percent = Xml::element( 'img', array(
+ $percentImage = Xml::element( 'img', array(
'src' => TranslateUtils::assetPath(
"resources/images/prog-$image.png" ),
'alt' => "$percent%", // @todo i18n missing.
'title' => "$percent%", // @todo i18n missing.
@@ -241,12 +251,12 @@
if ( $parser->getTitle()->getText() ===
$_title->getText() ) {
$name = Html::rawElement( 'span', array(
'class' => 'mw-pt-languages-selected' ), $name );
- $languages[] = "$name $percent";
+ $languages[] = "$name $percentImage";
} else {
if ( $code === $userLangCode ) {
$name = Html::rawElement( 'span',
array( 'class' => 'mw-pt-languages-ui' ), $name );
}
- $languages[] = Linker::linkKnown( $_title,
"$name $percent" );
+ $languages[] = Linker::link( $_title, "$name
$percentImage" );
}
}
@@ -336,11 +346,21 @@
*/
public static function preventUnknownTranslations( Title $title, User
$user, $action, &$result ) {
$handle = new MessageHandle( $title );
- if ( $handle->isPageTranslation() && $action === 'edit' &&
!$handle->isValid() ) {
- $result = array( 'tpt-unknown-page' );
- return false;
+ if ( $handle->isPageTranslation() && $action === 'edit' ) {
+ if( !$handle->isValid() ) {
+ $result = array( 'tpt-unknown-page' );
+ return false;
+ }
+ $priorityLangs = TranslateMetadata::get(
$handle->getGroup()->getId() , 'prioritylangs' );
+ $priorityForce = TranslateMetadata::get(
$handle->getGroup()->getId() , 'priorityforce' );
+ if ( strlen( $priorityLangs ) > 0 && $priorityForce ) {
+ $filter = array_flip( explode ( ',',
$priorityLangs ) );
+ if ( count( $filter) > 0 && !isset(
$filter[$handle->getCode()] ) ) {
+ $result = array(
'tpt-translation-restricted' );
+ return false;
+ }
+ }
}
-
return true;
}
_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs