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' ) ? '‏' : '‎' ),
+ $( '<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 <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits