http://www.mediawiki.org/wiki/Special:Code/MediaWiki/100243
Revision: 100243
Author: nikerabbit
Date: 2011-10-19 17:35:43 +0000 (Wed, 19 Oct 2011)
Log Message:
-----------
Api module for marking translations as reviewed.
Internationalization/#128
Modified Paths:
--------------
trunk/extensions/Translate/Translate.php
trunk/extensions/Translate/_autoload.php
Added Paths:
-----------
trunk/extensions/Translate/api/ApiTranslationReview.php
Modified: trunk/extensions/Translate/Translate.php
===================================================================
--- trunk/extensions/Translate/Translate.php 2011-10-19 17:30:55 UTC (rev
100242)
+++ trunk/extensions/Translate/Translate.php 2011-10-19 17:35:43 UTC (rev
100243)
@@ -85,6 +85,8 @@
$wgAPIListModules['messagecollection'] = 'ApiQueryMessageCollection';
$wgAPIMetaModules['messagegroups'] = 'ApiQueryMessageGroups';
$wgAPIMetaModules['messagetranslations'] = 'ApiQueryMessageTranslations';
+$wgAPIModules['translationreview'] = 'ApiTranslationReview';
+$wgHooks['APIQueryInfoTokens'][] = 'ApiTranslationReview::injectTokenFunction';
// Register hooks.
$wgHooks['EditPage::showEditForm:initial'][] = 'TranslateEditAddons::addTools';
Modified: trunk/extensions/Translate/_autoload.php
===================================================================
--- trunk/extensions/Translate/_autoload.php 2011-10-19 17:30:55 UTC (rev
100242)
+++ trunk/extensions/Translate/_autoload.php 2011-10-19 17:35:43 UTC (rev
100243)
@@ -193,4 +193,5 @@
$wgAutoloadClasses['ApiQueryMessageCollection'] = $dir .
'api/ApiQueryMessageCollection.php';
$wgAutoloadClasses['ApiQueryMessageGroups'] = $dir .
'api/ApiQueryMessageGroups.php';
$wgAutoloadClasses['ApiQueryMessageTranslations'] = $dir .
'api/ApiQueryMessageTranslations.php';
+$wgAutoloadClasses['ApiTranslationReview'] = $dir .
'api/ApiTranslationReview.php';
/**@}*/
Added: trunk/extensions/Translate/api/ApiTranslationReview.php
===================================================================
--- trunk/extensions/Translate/api/ApiTranslationReview.php
(rev 0)
+++ trunk/extensions/Translate/api/ApiTranslationReview.php 2011-10-19
17:35:43 UTC (rev 100243)
@@ -0,0 +1,132 @@
+<?php
+/**
+ * API module for marking translations as reviewed
+ * @file
+ * @author Niklas Laxström
+ * @copyright Copyright © 2011, Niklas Laxström
+ * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License
2.0 or later
+ */
+
+/**
+ * API module for marking translations as reviewed
+ *
+ * @ingroup API TranslateAPI
+ */
+class ApiTranslationReview extends ApiBase {
+
+ public function execute() {
+ global $wgUser;
+ if ( !$wgUser->isallowed( 'translate-messagereview' ) ) {
+ $this->dieUsageMsg( 'permissiondenied' );
+ }
+
+ $params = $this->extractRequestParams();
+
+ $revision = Revision::newFromId( $params['revision'] );
+ if ( !$revision ) {
+ $this->dieUsage( 'You made me sad :(',
'invalidrevision' );
+ }
+
+ $title = $revision->getTitle();
+ $handle = new MessageHandle( $title );
+ if ( !$handle->isValid() ) {
+ $this->dieUsage( 'You made me confused :X',
'unknownmessage' );
+ }
+
+ $dbw = wfGetDB( DB_MASTER );
+ $table = 'translate_reviews';
+ $row = array(
+ 'trr_user' => $wgUser->getId(),
+ 'trr_page' => $revision->getPage(),
+ 'trr_revision' => $revision->getId(),
+ );
+ $options = array( 'IGNORE' );
+ $res = $dbw->insert( $table, $row, __METHOD__, $options );
+ if ( !$dbw->affectedRows() ) {
+ $this->setWarning( 'Already marked as reviewed by you'
);
+ }
+
+ $output = array( 'review' => array(
+ 'title' => $title->getPrefixedText(),
+ 'pageid' => $revision->getPage(),
+ 'revision' => $revision->getId()
+ ) );
+
+ $this->getResult()->addValue( null, $this->getModuleName(),
$output );
+ }
+
+ public function isWriteMode() {
+ return true;
+ }
+
+ public function needsToken() {
+ return true;
+ }
+
+ public function getTokenSalt() {
+ return 'translate-messagereview';
+ }
+
+ public function getAllowedParams() {
+ return array(
+ 'revision' => array(
+ ApiBase::PARAM_TYPE => 'integer',
+ ApiBase::PARAM_REQUIRED => true,
+ ),
+ 'token' => array(
+ ApiBase::PARAM_TYPE => 'string',
+ ApiBase::PARAM_REQUIRED => true,
+ ),
+ );
+ }
+
+ public function getParamDescription() {
+ return array(
+ 'revision' => 'The revision number to review',
+ 'token' => 'A token previously acquired with
prop=token&intoken=translationreview',
+ );
+ }
+
+ public function getDescription() {
+ return 'Mark translations reviewed';
+ }
+
+ public function getPossibleErrors() {
+ return array_merge( parent::getPossibleErrors(), array(
+ array( 'code' => 'permissiondenied', 'info' => 'You
must have translate-messagereview right' ),
+ array( 'code' => 'unknownmessage', 'info' => 'Title $1
does not belong to a message group' ),
+ array( 'code' => 'invalidrevision', 'info' => 'Revision
$1 is invalid' ),
+ ) );
+ }
+
+ public function getExamples() {
+ return array(
+ 'api.php?action=translationreview&revision=1&token=foo',
+ );
+ }
+
+ public function getVersion() {
+ return __CLASS__ . ': $Id$';
+ }
+
+ public static function getToken( $pageid, $title ) {
+ global $wgUser;
+ if ( !$wgUser->isAllowed( 'translate-messagereview' ) ) {
+ return false;
+ }
+
+ static $cachedToken = null;
+ if ( !is_null( $cachedToken ) ) {
+ return $cachedToken;
+ }
+
+ $cachedToken = $wgUser->editToken( 'translate-messagereview' );
+ return $cachedToken;
+ }
+
+ public static function injectTokenFunction( &$list ) {
+ $list['translationreview'] = array( __CLASS__, 'getToken' );
+ return true; // Hooks must return bool
+ }
+
+}
Property changes on: trunk/extensions/Translate/api/ApiTranslationReview.php
___________________________________________________________________
Added: svn:keywords
+ Id
Added: svn:eol-style
+ native
_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs