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 <santhosh.thottin...@gmail.com> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits