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