Jarry1250 has uploaded a new change for review.

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


Change subject: Upgrade TranslateSvg for use with TUX
......................................................................

Upgrade TranslateSvg for use with TUX

Add two translation aids (properties and thumbnail) in PHP and JS.

Rewrite JavaScript to take account of new class names, ids, structures,
etc.

Fix task management, which seems to be associated.

Change-Id: I3b638a98c1ecfe85cf3a95367744856b162cf50d
---
A PropertiesTranslationAid.php
M SVGMessageGroup.php
A ThumbnailTranslationAid.php
M TranslateSvg.php
M TranslateSvgHooks.php
M resources/ext.translatesvg.core.js
6 files changed, 149 insertions(+), 14 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/TranslateSvg 
refs/changes/62/65462/1

diff --git a/PropertiesTranslationAid.php b/PropertiesTranslationAid.php
new file mode 100644
index 0000000..4fbde26
--- /dev/null
+++ b/PropertiesTranslationAid.php
@@ -0,0 +1,35 @@
+<?php
+/**
+ * Translation aid provider.
+ *
+ * @file
+ * @author Niklas Laxström
+ * @copyright Copyright © 2012-2013, Niklas Laxström
+ * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 
2.0 or later
+ */
+
+/**
+ * Translation aid which gives the original SVG thumnail where the QQQ 
documentation would otherwise go.
+ * It is later updated dynamically using JavaScript
+ *
+ * @ingroup TranslationAids
+ * @since 2013-01-01
+ */
+class PropertiesTranslationAid extends TranslationAid {
+       public function getData() {
+               $title = $this->handle->getTitle();
+               $translation = TranslateUtils::getMessageContent(
+                       $this->handle->getKey(),
+                       $this->handle->getCode(),
+                       $title->getNamespace()
+               );
+
+               // As long as we have to code for both interfaces in parallel I 
reserve the right to do this
+               $result = "";
+               TranslateSvgHooks::getDefaultPropertiesFromGroup( $translation, 
$this->handle );
+               TranslateSvgHooks::propertiesToExtraInputs( $translation, 
$result );
+               return array(
+                       'html' => $result
+               );
+       }
+}
diff --git a/SVGMessageGroup.php b/SVGMessageGroup.php
index 3ee90e6..d8c47c1 100644
--- a/SVGMessageGroup.php
+++ b/SVGMessageGroup.php
@@ -194,4 +194,23 @@
                }
                return $languages;
        }
+
+       public function getTranslationAids() {
+               // TODO: translation hinting for non-template portion
+               $aids = array(
+                       'properties' => 'PropertiesTranslationAid',
+                       'thumbnail' => 'ThumbnailTranslationAid',
+                       'definition' => 'MessageDefinitionAid',
+                       'translation' => 'CurrentTranslationAid',
+                       'inotherlanguages' => 'InOtherLanguagesAid',
+
+                       'documentation' => 'UnsupportedTranslationAid',
+                       'mt' => 'UnsupportedTranslationAid',
+                       'definitiondiff' => 'UnsupportedTranslationAid',
+                       'ttmserver' => 'UnsupportedTranslationAid',
+                       'support' => 'UnsupportedTranslationAid',
+                       'gettext' => 'UnsupportedTranslationAid',
+               );
+               return $aids;
+       }
 }
diff --git a/ThumbnailTranslationAid.php b/ThumbnailTranslationAid.php
new file mode 100644
index 0000000..52a4de8
--- /dev/null
+++ b/ThumbnailTranslationAid.php
@@ -0,0 +1,31 @@
+<?php
+/**
+ * Translation aid provider.
+ *
+ * @file
+ * @author Niklas Laxström
+ * @copyright Copyright © 2012-2013, Niklas Laxström
+ * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 
2.0 or later
+ */
+
+/**
+ * Translation aid which gives the original SVG thumnail where the QQQ 
documentation would otherwise go.
+ * It is later updated dynamically using JavaScript
+ *
+ * @ingroup TranslationAids
+ * @since 2013-01-01
+ */
+class ThumbnailTranslationAid extends TranslationAid {
+       public function getData() {
+               global $wgContLang;
+               $language = $this->handle->getCode();
+               $key = $this->handle->getKey();
+               list( $filename, ) = explode( '/', $key );
+               $prefixedFilename = $wgContLang->getNsText( NS_FILE ) . ':' . 
$filename;
+               $desc = 
"[[$prefixedFilename|frameless|center|upright|lang=$language|275x275px]]";
+               return array(
+                       'value' => $desc,
+                       'html' => '<div class="translatesvg-thumb">' . 
$this->context->getOutput()->parse( $desc ) .'</div>',
+               );
+       }
+}
diff --git a/TranslateSvg.php b/TranslateSvg.php
index 99bb2db..ac5c4ec 100644
--- a/TranslateSvg.php
+++ b/TranslateSvg.php
@@ -17,6 +17,7 @@
 );
 
 $dir = dirname( __FILE__ ) . '/';
+$wgAutoloadClasses['PropertiesTranslationAid'] = $dir . 
'PropertiesTranslationAid.php';
 $wgAutoloadClasses['SpecialTranslateNewSVG'] = $dir . 
'SpecialTranslateNewSVG.php';
 $wgAutoloadClasses['SVGFormatReader'] = $dir . 'SVGFormatReader.php';
 $wgAutoloadClasses['SVGFormatWriter'] = $dir . 'SVGFormatWriter.php';
@@ -25,7 +26,9 @@
 $wgAutoloadClasses['TranslateSvgHooks'] = $dir . 'TranslateSvgHooks.php';
 $wgAutoloadClasses['ExportSVGMessagesTask'] = $dir . 'TranslateSvgTasks.php';
 $wgAutoloadClasses['TranslateSvgUpload'] = $dir . 'SVGFormatWriter.php';
+$wgAutoloadClasses['ThumbnailTranslationAid'] = $dir . 
'ThumbnailTranslationAid.php';
 $wgExtensionMessagesFiles['TranslateSvg'] = $dir . 'TranslateSvg.i18n.php';
+$wgTranslateTasks['export-as-svg'] = 'ExportSVGMessagesTask';
 
 $wgResourceModules['jquery.colorpicker'] = array(
        'scripts' => array( 'resources/jquery.colorpicker.js' ),
@@ -43,6 +46,7 @@
                'jquery.colorpicker',
                'jquery.json',
                'ext.translate.hooks'
+               'ext.translate.editor'
        ),
        'messages' => array(
                'translate-taction-mstats-svgmg',
@@ -89,6 +93,7 @@
 $wgHooks['TranslateGetAPIMessageGroupsParameterList'][] = 
'TranslateSvgHooks::addAPIParams';
 $wgHooks['TranslatePostInitGroups'][] = 'TranslateSvgHooks::loadSVGGroups';
 $wgHooks['TranslateProcessAPIMessageGroupsProperties'][] = 
'TranslateSvgHooks::processAPIProperties';
+$wgHooks['TranslateTranslationAids'][] = 
'TranslateSvgHooks::modifyGlobalTranslationAids';
 
 $wgSpecialPages['TranslateNewSVG'] = 'SpecialTranslateNewSVG';
 $wgSpecialPageGroups['TranslateNewSVG'] = 'wiki';
diff --git a/TranslateSvgHooks.php b/TranslateSvgHooks.php
index a81a9ff..ddaba96 100644
--- a/TranslateSvgHooks.php
+++ b/TranslateSvgHooks.php
@@ -75,6 +75,13 @@
                return true;
        }
 
+       public static function modifyGlobalTranslationAids( &$aids ) {
+               // Additive list: will be unsupported if group not 
SVGMessageGroup
+               $aids[] = 'thumbnail';
+               $aids[] = 'properties';
+               return true;
+       }
+
        /**
         * Function used to add modules to the ResourceLoader via the
         * TranslateBeforeAddModules hook
@@ -190,7 +197,8 @@
 
                $extraInputs = Xml::fieldset(
                        wfMessage( 'translate-js-properties-legend' ),
-                       $extraInputs
+                       $extraInputs,
+                       array( 'class' => 'mw-translate-inputs' )
                );
 
                return true;
diff --git a/resources/ext.translatesvg.core.js 
b/resources/ext.translatesvg.core.js
index 29d44c1..1a40cfb 100644
--- a/resources/ext.translatesvg.core.js
+++ b/resources/ext.translatesvg.core.js
@@ -16,7 +16,8 @@
                // Everything in here will get transferred to every instance 
returned
                // from the constructor above.
                init: function () {
-                       if ( $( 'fieldset.mw-sp-translate-settings' ).data( 
'grouptype' ) !== 'SVGMessageGroup' ) {
+                       if ( $( 'fieldset.mw-sp-translate-settings' ).data( 
'grouptype' ) !== 'SVGMessageGroup'
+                               && $( '.tux-messagelist' ).data( 'grouptype' ) 
!== 'SVGMessageGroup' ) {
                                // Not translating an SVG file
                                return;
                        }
@@ -27,7 +28,7 @@
 
                        mw.translateHooks.add( 'beforeSubmit', function ( $form 
) {
                                // Add properties from other inputs back into 
main translations
-                               var textarea = $form.find( 
'.mw-translate-edit-area' );
+                               var textarea = $form.find( 'textarea' );
                                tsvgLoader.oldValue = textarea.val();
                                textarea.val( tsvgLoader.oldValue + 
tsvgLoader.propertiesToString( $form ) );
                                $form.parents( '.ui-dialog' ).hide();
@@ -36,21 +37,51 @@
                        mw.translateHooks.add( 'afterSubmit', function ( $form 
) {
                                // ...and remove them again to avoid 
duplication / user confusion
                                $form.find( '.mw-translate-edit-area' ).val( 
tsvgLoader.oldValue );
+                               $( '.tux-list-translation' ).each( function () {
+                                       $( this ).text(  $( this 
).text().slice( 0, $( this ).text().indexOf( '{{' ) ) );
+                               } );
                                return true;
+                       } );
+                       mw.translateHooks.add( 'formatMessageBeforeTable', 
function ( message ) {
+                               // Tidy the display of messages in the message 
table.
+                               // TODO: template name, not any old template
+                               if ( message.translation !== undefined && 
message.translation !== null ) {
+                                       message.original = message.translation;
+                                       console.log( message.translation );
+                                       message.translation = 
message.translation.slice( 0, message.translation.indexOf( '{{' ) );
+                               }
+
+                               return true;
+                       } );
+                       mw.translateHooks.add( 'showTranslationHelpers', 
function ( response, $editor ) {
+                               if( !response.thumbnail.error ) {
+                                       $infocolumn = $editor.find( 
'.infocolumn' );
+                                       $infocolumn.html( 
response.thumbnail.html );
+                                       $( '.translatesvg-thumb' ).css( 
'padding', '20px 10px' );
+                               }
+                               if( !response.properties.error ) {
+                                       var $editarea = $editor.find( 
'.tux-editor-editarea-block' );
+                                       var $container = $( '<div 
class="editarea eleven columns">' );
+                                       $container.append( 
response.properties.html );
+                                       $editarea.append( $container );
+                               }
                        } );
                        mw.translateHooks.add( 'afterRegisterFeatures', 
function ( $form ) {
                                // Initialise colourPicker UI
-                               $form.find( '#mw-translate-prop-color' 
).colorPicker();
-                               var colorPicker = $form.find( 
'#mw-translate-prop-color' );
-                               if( colorPicker.val() === 'other' ){
-                                       colorPicker.val( '' );
-                               }
+                               $form.find( 
'select#mw-translate-prop-color').each( function () {
+                                       $( this ).colorPicker();
+                               } );
+                               $form.find( 'input#mw-translate-prop-color' 
).each( function () {
+                                       if( $( this ).val() === 'other' ){
+                                               $( this ).val( '' );
+                                       }
+                               } );
 
                                // Add thumbnail update events. The duplication 
is intentional;
                                // e.g. to account for copy-paste, or the fact 
that type="number" is
                                // textual in some browsers but has 
increment/decrement buttons in others.
                                $form.find(
-                                       '.mw-translate-inputs textarea,' +
+                                       'textarea,' +
                                        '.mw-translate-inputs 
input[type="number"],' +
                                        '.mw-translate-inputs 
input[type="text"]'
                                ).keyup( function () { 
tsvgLoader.updateThumbnailDelayed( $form ); } );
@@ -96,16 +127,22 @@
                },
                updateThumbnail: function ( $form ) {
                        // Generate a live thumbnail and show it
-                       var textarea = $form.find( '.mw-translate-edit-area' );
-                       var name = $form.find( 'input[name="title"]' ).val();
-                       if ( name === undefined || name.split( '/' ).length !== 
3 ) {
+                       var $thumbnail = $form.find( '.translatesvg-thumb' ),
+                               $textarea = $form.find( 'textarea' ),
+                               name = $form.find( 'input[name="title"]' 
).val();
+
+                       // Work out what we're supposed be doing
+                       if ( name === undefined ) {
+                               name = $form.find( '.messagekey' 
).html().split('<')[0];
+                       }
+                       if ( name === undefined || name.split( '/' ).length < 3 
) {
                                // Somehow this has been called on the wrong 
form
                                return;
                        }
                        var identifiers = name.split( '/' );
 
                        // Create and set overrides[identifier][langcode]
-                       var overrideValue = $( textarea ).val() + 
tsvgLoader.propertiesToString( $form );
+                       var overrideValue = $textarea.val() + 
tsvgLoader.propertiesToString( $form );
                        var overrides = {};
                        overrides[identifiers[1]] = {};
                        overrides[identifiers[1]][identifiers[2]] = 
overrideValue;
@@ -125,7 +162,7 @@
                                        // The extension ensures 
data.query.messagegroups[0].thumbnail.success exists
                                        if ( 
data.query.messagegroups[0].thumbnail.success ) {
                                                var newSrc = 
data.query.messagegroups[0].thumbnail.message;
-                                               $form.find( 
'.mw-sp-translate-edit-fields a.image img').attr( 'src', newSrc );
+                                               $thumbnail.find('img').attr( 
'src', newSrc );
                                        }
                                }
                        } );

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I3b638a98c1ecfe85cf3a95367744856b162cf50d
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/TranslateSvg
Gerrit-Branch: master
Gerrit-Owner: Jarry1250 <jarry1...@gmail.com>

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

Reply via email to