https://www.mediawiki.org/wiki/Special:Code/MediaWiki/112785

Revision: 112785
Author:   nikerabbit
Date:     2012-03-01 09:27:38 +0000 (Thu, 01 Mar 2012)
Log Message:
-----------
Split the new code into different hook. Also provide reason.
Ping r112576

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

Modified: trunk/extensions/Translate/PageTranslation.i18n.php
===================================================================
--- trunk/extensions/Translate/PageTranslation.i18n.php 2012-03-01 09:26:30 UTC 
(rev 112784)
+++ trunk/extensions/Translate/PageTranslation.i18n.php 2012-03-01 09:27:38 UTC 
(rev 112785)
@@ -97,7 +97,9 @@
 This page is a translation of page [[$1]] and the translation can be updated 
using [$2 the translation tool].',
        'tpt-unknown-page' => 'This namespace is reserved for content page 
translations.
 The page you are trying to edit does not seem to correspond any page marked 
for translation.',
-       'tpt-translation-restricted' => 'Translation of this message group to 
this language has been prevented by translation administrator.',
+       'tpt-translation-restricted' => 'Translation of this message group to 
this language has been prevented by translation administrator.
+
+Reason for limiting: $1',
        'tpt-discouraged-language-force' => 'Translation administrator has 
limited the languages this message group can be translated to. This language is 
not among those languages.
 
 Reason for limiting: $1',

Modified: trunk/extensions/Translate/TranslateHooks.php
===================================================================
--- trunk/extensions/Translate/TranslateHooks.php       2012-03-01 09:26:30 UTC 
(rev 112784)
+++ trunk/extensions/Translate/TranslateHooks.php       2012-03-01 09:27:38 UTC 
(rev 112785)
@@ -118,6 +118,8 @@
 
                        // Prevent editing of unknown pages in Translations 
namespace
                        $wgHooks['getUserPermissionsErrorsExpensive'][] = 
'PageTranslationHooks::preventUnknownTranslations';
+                       // Prevent editing of translation in restricted 
languages
+                       $wgHooks['getUserPermissionsErrorsExpensive'][] = 
'PageTranslationHooks::preventRestrictedTranslations';
                        // Prevent editing of translation pages directly
                        $wgHooks['getUserPermissionsErrorsExpensive'][] = 
'PageTranslationHooks::preventDirectEditing';
 

Modified: trunk/extensions/Translate/tag/PageTranslationHooks.php
===================================================================
--- trunk/extensions/Translate/tag/PageTranslationHooks.php     2012-03-01 
09:26:30 UTC (rev 112784)
+++ trunk/extensions/Translate/tag/PageTranslationHooks.php     2012-03-01 
09:27:38 UTC (rev 112785)
@@ -370,20 +370,41 @@
                                $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;
        }
 
        /**
+        * Prevent editing of restricted languages
+        * Hook: getUserPermissionsErrorsExpensive
+        * @since 2012-03-01
+        */
+       public static function preventRestrictedTranslations( Title $title, 
User $user, $action, &$result ) {
+               $handle = new MessageHandle( $title );
+               if ( !$handle->isValid() ) {
+                       return true;
+               }
+
+               $groupId = $handle->getGroup()->getId();
+               $priorityForce = TranslateMetadata::get( $groupId, 
'priorityforce' );
+               if ( !$priorityForce ) {
+                       return true;
+               }
+
+               $priorityLangs = TranslateMetadata::get( $groupId, 
'prioritylangs' );
+               $priorityReason = TranslateMetadata::get( $groupId, 
'priorityreason' );
+               $filter = array_flip( explode( ',', $priorityLangs ) );
+               if ( !isset( $filter[$handle->getCode()] ) ) {
+                       $result = array( 'tpt-translation-restricted', 
$priorityReason );
+                       return false;
+               }
+
+               return true;
+       }
+
+
+
+       /**
         * Prevent editing of translation pages directly.
         * Hook: getUserPermissionsErrorsExpensive
         */


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

Reply via email to