jenkins-bot has submitted this change and it was merged.

Change subject: Convert translationreview logs to LogFormatter
......................................................................


Convert translationreview logs to LogFormatter

Change-Id: I09be2d49e5cf200ebecb55a70108a455beddcbe2
---
M Translate.i18n.php
M Translate.php
M TranslateHooks.php
M _autoload.php
M api/ApiGroupReview.php
M api/ApiTranslationReview.php
A utils/TranslateLogFormatter.php
7 files changed, 109 insertions(+), 71 deletions(-)

Approvals:
  Siebrand: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/Translate.i18n.php b/Translate.i18n.php
index 30a9c79..d4f0d8a 100644
--- a/Translate.i18n.php
+++ b/Translate.i18n.php
@@ -389,7 +389,7 @@
        'log-name-translationreview' => 'Translation review log',
        'log-description-translationreview' => 'Log of all reviews to 
translations and message groups.',
        'logentry-translationreview-message' => '$1 {{GENDER:$2|accepted}} 
translation $3',
-       'logentry-groupreview-message' => '$1 {{GENDER:$2|changed}} the state 
of $4 translations of message group $3 from $5 to $6',
+       'logentry-translationreview-group' => '$1 {{GENDER:$2|changed}} the 
state of $4 translations of $3 from $6 to $7',
 
        // The actual states, when set, come after the hyphen.
        // The dangling hyphen hints that it's unset.
@@ -861,11 +861,12 @@
        'group-translate-proofr.js' => '{{doc-group|translate-proofr|js}}',
        'log-name-translationreview' => '{{doc-logpage}}',
        'logentry-translationreview-message' => '{{Logentry}}',
-       'logentry-groupreview-message' => '{{Logentry}}
+       'logentry-translationreview-group' => '{{Logentry}}
 Additional parameters:
-* $4 - Localised language name (with language code in parentheses)
-* $5 - Previous workflow state
-* $6 - New workflow state',
+* $4 - Localised language name
+* $5 - Label of the message group (unused)
+* $6 - Previous workflow state
+* $7 - New workflow state',
        'translate-workflow-state-' => 'Unselectable select option in 
[[Special:Translate]] if workflow state editing is on. The dangling hyphen in 
the message key hints that this state is unset; the actual states have the same 
key with something after the hyphen.',
        'translate-workflowstatus' => 'In [[Special:Translate]] if workflow 
states are in use, $1 is selector or the current state.
 {{Identical|Status}}',
diff --git a/Translate.php b/Translate.php
index a65e56f..c6cd203 100644
--- a/Translate.php
+++ b/Translate.php
@@ -190,10 +190,10 @@
 $wgGroupPermissions['translate-proofr']['translate-messagereview'] = true;
 $wgAddGroups['translate-proofr'] = array( 'translate-proofr' );
 
-// Logs
+// Logs. More logs are defined in TranslateHooks::setupTranslate
 $wgLogTypes[] = 'translationreview';
-$wgLogActionsHandlers['translationreview/message'] = 
'TranslateHooks::formatTranslationreviewLogEntry';
-$wgLogActionsHandlers['translationreview/group'] = 
'TranslateHooks::formatTranslationreviewLogEntry';
+$wgLogActionsHandlers['translationreview/message'] = 'TranslateLogFormatter';
+$wgLogActionsHandlers['translationreview/group'] = 'TranslateLogFormatter';
 
 // New jobs
 $wgJobClasses['MessageIndexRebuildJob'] = 'MessageIndexRebuildJob';
diff --git a/TranslateHooks.php b/TranslateHooks.php
index eeb5498..f221a3c 100644
--- a/TranslateHooks.php
+++ b/TranslateHooks.php
@@ -326,52 +326,6 @@
                return true;
        }
 
-       /// Log action handler
-       public static function formatTranslationreviewLogEntry( $type, $action, 
Title $title, $forUI, $params ) {
-               global $wgLang, $wgContLang;
-
-               $language = $forUI === null ? $wgContLang : $wgLang;
-
-               if ( $action === 'message' ) {
-                       $link = $forUI ?
-                               Linker::link( $title, null, array(), array( 
'oldid' => $params[0] ) ) :
-                               $title->getPrefixedText();
-                       return wfMessage( 'logentry-translationreview-message' 
)->params(
-                               '', // User link in the new system
-                               '#', // User name for gender in the new system
-                               Message::rawParam( $link )
-                       )->inLanguage( $language )->text();
-               }
-
-               if ( $action === 'group' ) {
-                       $languageCode = $params[0];
-                       $languageNames = Language::getTranslatedLanguageNames( 
$language->getCode() );
-                       $languageName = "$languageNames[$languageCode] 
($languageCode)";
-                       $groupLabel = $params[1];
-                       $oldState = $params[2];
-                       $newState = $params[3];
-                       $oldStateMessage = wfMessage( 
"translate-workflow-state-$oldState" );
-                       $newStateMessage = wfMessage( 
"translate-workflow-state-$newState" );
-                       $oldState = $oldStateMessage->isBlank() ? $oldState : 
$oldStateMessage->text();
-                       $newState = $newStateMessage->isBlank() ? $newState : 
$newStateMessage->text();
-
-                       $link = $forUI ?
-                               Linker::link( $title, $groupLabel, array(), 
array( 'language' => $languageCode ) ) :
-                               $groupLabel;
-
-                       return wfMessage( 'logentry-groupreview-message' 
)->params(
-                               '', // User link in the new system
-                               '#', // User name for gender in the new system
-                               Message::rawParam( $link ),
-                               $languageName,
-                               $oldState,
-                               $newState
-                       )->inLanguage( $language )->text();
-               }
-
-               return '';
-       }
-
        /**
         * Parser function hook
         */
diff --git a/_autoload.php b/_autoload.php
index bc1be4f..531bee1 100644
--- a/_autoload.php
+++ b/_autoload.php
@@ -91,6 +91,7 @@
 $wgAutoloadClasses['StringMangler'] = "$dir/utils/StringMatcher.php";
 $wgAutoloadClasses['StringMatcher'] = "$dir/utils/StringMatcher.php";
 $wgAutoloadClasses['TTMServer'] = "$dir/utils/TTMServer.php";
+$wgAutoloadClasses['TranslateLogFormatter'] = 
"$dir/utils/TranslateLogFormatter.php";
 $wgAutoloadClasses['TranslateMetadata'] = "$dir/utils/TranslateMetadata.php";
 $wgAutoloadClasses['TranslatePerLanguageStats'] = 
"$dir/specials/SpecialTranslationStats.php";
 $wgAutoloadClasses['TranslatePreferences'] = "$dir/utils/UserToggles.php";
diff --git a/api/ApiGroupReview.php b/api/ApiGroupReview.php
index 51c7b6d..c319ba5 100644
--- a/api/ApiGroupReview.php
+++ b/api/ApiGroupReview.php
@@ -94,21 +94,21 @@
                $dbw = wfGetDB( DB_MASTER );
                $dbw->replace( $table, array( $index ), $row, __METHOD__ );
 
-               $logger = new LogPage( 'translationreview' );
-               $logParams = array(
-                       $code,
-                       $group->getLabel(),
-                       $currentState,
-                       $newState,
-               );
 
-               $logger->addEntry(
-                       'group',
-                       SpecialPage::getTitleFor( 'Translate', $group->getId() 
),
-                       '', // No comments
-                       $logParams,
-                       $user
-               );
+               $entry = new ManualLogEntry( 'translationreview', 'group' );
+               $entry->setPerformer( $user );
+               $entry->setTarget( SpecialPage::getTitleFor( 'Translate', 
$group->getId() ) );
+               // @todo
+               // $entry->setComment( $comment );
+               $entry->setParameters( array(
+                       '4::language' => $code,
+                       '5::group-label' => $group->getLabel(),
+                       '6::old-state' => $currentState,
+                       '7::new-state' => $newState,
+               ) );
+
+               $logid = $entry->insert();
+               $entry->publish( $logid );
 
                wfRunHooks( 'TranslateEventMessageGroupStateChange',
                        array( $group, $code, $currentState, $newState ) );
diff --git a/api/ApiTranslationReview.php b/api/ApiTranslationReview.php
index e8d7901..5f16d8f 100644
--- a/api/ApiTranslationReview.php
+++ b/api/ApiTranslationReview.php
@@ -86,9 +86,17 @@
                }
 
                $title = $revision->getTitle();
-               $logger = new LogPage( 'translationreview' );
-               $params = array( $revision->getId() );
-               $logger->addEntry( 'message', $title, $comment, $params, $user 
);
+
+               $entry = new ManualLogEntry( 'translationreview', 'message' );
+               $entry->setPerformer( $user );
+               $entry->setTarget( $title );
+               $entry->setComment( $comment );
+               $entry->setParameters( array(
+                       '4::revision' => $revision->getId(),
+               ) );
+
+               $logid = $entry->insert();
+               $entry->publish( $logid );
 
                $handle = new MessageHandle( $title );
                wfRunHooks( 'TranslateEventTranslationReview', array( $handle ) 
);
diff --git a/utils/TranslateLogFormatter.php b/utils/TranslateLogFormatter.php
new file mode 100644
index 0000000..e38ab17
--- /dev/null
+++ b/utils/TranslateLogFormatter.php
@@ -0,0 +1,74 @@
+<?php
+/**
+ * Class for formatting Translate logs.
+ *
+ * @file
+ * @author Niklas Laxström
+ * @copyright Copyright © 2013, Niklas Laxström
+ * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 
2.0 or later
+ */
+
+/**
+ * Class for formatting Translate logs.
+ */
+class TranslateLogFormatter extends LogFormatter {
+
+       public function getMessageParameters() {
+               $params = parent::getMessageParameters();
+
+               $type = $this->entry->getFullType();
+
+               if ( $type === 'translationreview/message' ) {
+                       $targetPage = $this->makePageLink(
+                               $this->entry->getTarget(),
+                               array( 'oldid' => $params[3] )
+                       );
+
+                       $params[2] = Message::rawParam( $targetPage );
+
+               } elseif ( $type === 'translationreview/group' ) {
+                       /*
+                        * - 3: language code
+                        * - 4: label of the message group
+                        * - 5: old state
+                        * - 6: new state
+                        */
+
+                       $uiLanguage = $this->context->getLanguage();
+                       $language = $params[3];
+
+                       $targetPage = $this->makePageLinkWithText(
+                               $this->entry->getTarget(),
+                               $params[4],
+                               array( 'language' => $language )
+                       );
+
+                       $params[2] = Message::rawParam( $targetPage );
+                       $params[3] = TranslateUtils::getLanguageName( 
$language, false, $uiLanguage->getCode() );
+                       $params[5] = $this->formatStateMessage( $params[5] );
+                       $params[6] = $this->formatStateMessage( $params[6] );
+
+               }
+
+               return $params;
+       }
+
+       protected function formatStateMessage( $value ) {
+               $message = $this->msg( "translate-workflow-state-$value" );
+               return $message->isBlank() ? $value : $message->text();
+       }
+
+       protected function makePageLinkWithText( Title $title = null, $text, 
$parameters = array() ) {
+               if ( !$this->plaintext ) {
+                       $link = Linker::link( $title, htmlspecialchars( $text 
), array(), $parameters );
+               } else {
+                       $target = '***';
+                       if ( $title instanceof Title ) {
+                               $target = $title->getPrefixedText();
+                       }
+                       $link = "[[$target|$text]]";
+               }
+               return $link;
+       }
+
+}

-- 
To view, visit https://gerrit.wikimedia.org/r/51354
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I09be2d49e5cf200ebecb55a70108a455beddcbe2
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Translate
Gerrit-Branch: master
Gerrit-Owner: Nikerabbit <niklas.laxst...@gmail.com>
Gerrit-Reviewer: Santhosh <santhosh.thottin...@gmail.com>
Gerrit-Reviewer: Siebrand <siebr...@wikimedia.org>
Gerrit-Reviewer: jenkins-bot

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to