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