Santhosh has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/69285


Change subject: [WIP]Special page TranslationStash
......................................................................

[WIP]Special page TranslationStash

Change-Id: Ia112b86a07f75c476139f92fde8941559bfb6799
---
M Resources.php
M Translate.alias.php
M Translate.php
M _autoload.php
A resources/js/ext.translate.special.translationstash.js
A specials/SpecialTranslationStash.php
6 files changed, 172 insertions(+), 2 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Translate 
refs/changes/85/69285/1

diff --git a/Resources.php b/Resources.php
index 70ee5a7..9075b7b 100644
--- a/Resources.php
+++ b/Resources.php
@@ -355,6 +355,14 @@
        )
 ) + $resourcePaths;
 
+$wgResourceModules['ext.translate.special.translationstash'] = array(
+       'scripts' => 'resources/js/ext.translate.special.translationstash.js',
+       'dependencies' => array(
+               'ext.translate.editor',
+               'ext.translate.messagetable',
+       )
+) + $resourcePaths;
+
 $wgResourceModules['ext.translate.special.translationstats'] = array(
        'scripts' => 'resources/js/ext.translate.special.translationstats.js',
        'dependencies' => array(
diff --git a/Translate.alias.php b/Translate.alias.php
index bd475c5..d647e43 100644
--- a/Translate.alias.php
+++ b/Translate.alias.php
@@ -26,6 +26,7 @@
        'AggregateGroups' => array( 'AggregateGroups' ),
        'SearchTranslations' => array( 'SearchTranslations' ),
        'TranslateSandbox' => array( 'ManageTranslatorSandbox', 
'TranslateSandbox' ),
+       'TranslationStash' => array( 'TranslationStash' ),
 );
 
 /** Afrikaans (Afrikaans) */
@@ -1086,4 +1087,4 @@
        'AggregateGroups' => array( '聚合組' ),
        'SearchTranslations' => array( '搜尋翻譯' ),
        'TranslateSandbox' => array( '管理翻譯者沙盒' ),
-);
\ No newline at end of file
+);
diff --git a/Translate.php b/Translate.php
index b186e70..887aeca 100644
--- a/Translate.php
+++ b/Translate.php
@@ -50,6 +50,7 @@
 $wgExtensionMessagesFiles['TranslateGroupDescriptions'] = 
"$dir/TranslateGroupDescriptions.i18n.php";
 $wgExtensionMessagesFiles['TranslateSearch'] = "$dir/TranslateSearch.i18n.php";
 $wgExtensionMessagesFiles['TranslateSandbox'] = 
"$dir/TranslateSandbox.i18n.php";
+$wgExtensionMessagesFiles['TranslationStash'] = 
"$dir/TranslationStash.i18n.php";
 $wgExtensionMessagesFiles['TranslateAlias'] = "$dir/Translate.alias.php";
 $wgExtensionMessagesFiles['TranslateMagic'] = "$dir/Translate.magic.php";
 
@@ -90,7 +91,8 @@
 $wgSpecialPages['SearchTranslations'] = 'SpecialSearchTranslations';
 $wgSpecialPageGroups['SearchTranslations'] = 'wiki';
 $wgSpecialPages['TranslateSandbox'] = 'SpecialTranslateSandbox';
-
+$wgSpecialPages['TranslationStash'] = 'SpecialTranslationStash';
+$wgSpecialPageGroups['TranslationStash'] = 'wiki';
 // API
 $wgAPIListModules['messagecollection'] = 'ApiQueryMessageCollection';
 $wgAPIMetaModules['languagestats'] = 'ApiQueryLanguageStats';
diff --git a/_autoload.php b/_autoload.php
index a8c0280..9d0b642 100644
--- a/_autoload.php
+++ b/_autoload.php
@@ -49,6 +49,7 @@
 $wgAutoloadClasses['SpecialTranslateSandbox'] = 
"$dir/specials/SpecialTranslateSandbox.php";
 $wgAutoloadClasses['SpecialTranslationStats'] = 
"$dir/specials/SpecialTranslationStats.php";
 $wgAutoloadClasses['SpecialTranslations'] = 
"$dir/specials/SpecialTranslations.php";
+$wgAutoloadClasses['SpecialTranslationStash'] = 
"$dir/specials/SpecialTranslationStash.php";
 /**@}*/
 
 /**
diff --git a/resources/js/ext.translate.special.translationstash.js 
b/resources/js/ext.translate.special.translationstash.js
new file mode 100644
index 0000000..52ddf83
--- /dev/null
+++ b/resources/js/ext.translate.special.translationstash.js
@@ -0,0 +1,102 @@
+( function ( $, mw ) {
+       'use strict';
+       function getMessages( messageGroup, language, offset, limit ) {
+               var api = new mw.Api();
+
+               return api.get( {
+                       action: 'query',
+                       list: 'messagecollection',
+                       mcgroup: messageGroup,
+                       format: 'json',
+                       mclanguage: language,
+                       mcoffset: offset,
+                       mclimit: limit,
+                       //mcfilter: '!translated',
+                       mcprop: 'definition|translation|tags|properties'
+               } );
+       }
+
+       function addMessage( message ) {
+               var $messageWrapper, $message,
+                       $messageTable = $( '.tux-messagelist' ),
+                       sourceLanguage = $messageTable .data( 'sourcelangcode' 
),
+                       sourceLanguageDir = $.uls.data.getDir( sourceLanguage ),
+                       targetLanguage = $messageTable .data( 'targetlangcode' 
),
+                       targetLanguageDir = $.uls.data.getDir( targetLanguage ),
+                       status = message.properties.status,
+                       statusClass = 'tux-status-' + status;
+
+               $messageWrapper = $( '<div>' )
+                       .addClass( 'row tux-message' );
+
+               $message = $( '<div>' )
+                       .addClass( 'row message tux-message-item ' + status )
+                       .append(
+                               $( '<div>' )
+                                       .addClass( 'eight columns 
tux-list-message' )
+                                       .append(
+                                               $( '<span>' )
+                                                       .addClass( 
'tux-list-source' )
+                                                       .attr( {
+                                                               lang: 
sourceLanguage,
+                                                               dir: 
sourceLanguageDir
+                                                       } )
+                                                       .text( 
message.definition ),
+                                               // Bidirectional isolation.
+                                               // This should be removed some 
day when proper
+                                               // unicode-bidi: isolate
+                                               // is supported everywhere
+                                               $( '<span>' )
+                                                       .html( $( 'body' 
).hasClass( 'rtl' ) ? '&rlm;' : '&lrm;' ),
+                                               $( '<span>' )
+                                                       .addClass( 
'tux-list-translation' )
+                                                       .attr( {
+                                                               lang: 
targetLanguage,
+                                                               dir: 
targetLanguageDir
+                                                       } )
+                                                       .text( 
message.translation || '' )
+                                               ),
+                               $( '<div>' )
+                                       .addClass( 'two columns tux-list-status 
text-center' )
+                                       .append(
+                                               $( '<span>' )
+                                                       .addClass( statusClass )
+                                       ),
+                               $( '<div>' )
+                                       .addClass( 'two column tux-list-edit 
text-right' )
+                                       .append(
+                                               $( '<a>' )
+                                                       .attr( {
+                                                               'title': 
mw.msg( 'translate-edit-title', message.key )
+                                                       } )
+                                                       .text( mw.msg( 
'tux-edit' ) )
+                                       )
+                       );
+
+               $messageWrapper.append( $message );
+               $messageTable.append( $messageWrapper );
+               // Attach translate editor to the message
+               $messageWrapper.translateeditor( {
+                       message: message
+               } );
+       }
+
+       $( 'document' ).ready( function () {
+               var $messageTable = $( '.tux-messagelist' ),
+                       messagegroup = '!recent'; //FIXME
+               getMessages( messagegroup,  $messageTable.data( 'targetLang' ), 
0, 5  )
+                       .done( function ( result ) {
+                               var messages = result.query.messagecollection;
+                               $.each( messages, function ( index, message ) {
+                                       message.group = messagegroup;
+                                       addMessage( message );
+                                       if ( index === 0 ) {
+                                               $( '.tux-message:first' ).data( 
'translateeditor' ).show();
+                                       }
+                                       console.log(message);
+                               } );
+                       } ).fail( function ( errorCode, response ) {
+                               // Handler error
+                       } );
+       } );
+}( jQuery, mediaWiki ) );
diff --git a/specials/SpecialTranslationStash.php 
b/specials/SpecialTranslationStash.php
new file mode 100644
index 0000000..cacc3b2
--- /dev/null
+++ b/specials/SpecialTranslationStash.php
@@ -0,0 +1,56 @@
+<?php
+/**
+ * TranslationStash - Translator screening page
+ *
+ * @file
+ * @author Santhosh Thottingal
+ * @license GPL2+
+ */
+
+/**
+ * Special page for new users to translate example messages.
+ *
+ * @ingroup SpecialPage TranslateSpecialPage
+ */
+class SpecialTranslationStash extends SpecialPage {
+       function __construct() {
+               parent::__construct( 'TranslationStash' );
+       }
+
+       public function execute( $params ) {
+               $this->setHeaders();
+               $out = $this->getOutput();
+               $out->addModules( 'ext.translate.special.translationstash' );
+               $this->showPage();
+       }
+
+       /**
+        * Generates the whole page html and appends it to output
+        */
+       protected function showPage() {
+               // Easier to do this way than in JS
+               $out = $this->getOutput();
+               $out->addHtml( <<<HTML
+<div class="grid">
+       {$this->getMessageTable()}
+</div>
+HTML
+               );
+       }
+
+       protected function getMessageTable() {
+               $sourceLang = Language::factory('en');
+               $targetLang = $this->getLanguage();
+
+               $list = Html::element( 'div', array(
+                       'class' => 'row tux-messagelist',
+                       'data-sourcelangcode' => $sourceLang->getCode(),
+                       'data-sourcelangdir' => $sourceLang->getDir(),
+                       'data-targetlangcode' => $targetLang->getCode(),
+                       'data-targetlangdir' => $targetLang->getDir(),
+               ) );
+
+               return $list;
+       }
+
+}

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ia112b86a07f75c476139f92fde8941559bfb6799
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Translate
Gerrit-Branch: master
Gerrit-Owner: Santhosh <santhosh.thottin...@gmail.com>

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

Reply via email to