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

Reply via email to