jenkins-bot has submitted this change and it was merged. ( https://gerrit.wikimedia.org/r/346727 )
Change subject: CX2: Define translation unit for external links ...................................................................... CX2: Define translation unit for external links Do not mix up them with internal links as we did in CX1 Also remove some unused methods from LinkTranslationUnit Bug: T106525 Change-Id: I8cf8e155144297073c1f067e408fe6faf4cf05c7 --- M extension.json A modules/dm/translationunits/mw.cx.dm.ExternalLinkTranslationUnit.js M modules/dm/translationunits/mw.cx.dm.LinkTranslationUnit.js A modules/tools/mw.cx.tools.ExternalLinkTool.js A modules/tools/styles/mw.cx.tools.ExternalLinkTool.less A modules/ui/translationunits/mw.cx.ui.ExternalLinkTranslationUnit.js M modules/ui/translationunits/mw.cx.ui.LinkTranslationUnit.js 7 files changed, 147 insertions(+), 13 deletions(-) Approvals: jenkins-bot: Verified Nikerabbit: Looks good to me, approved diff --git a/extension.json b/extension.json index d64de02..aca5ea6 100644 --- a/extension.json +++ b/extension.json @@ -1249,6 +1249,7 @@ "mw.cx.dm.ImageTranslationUnit", "mw.cx.dm.SentenceTranslationUnit", "mw.cx.dm.LinkTranslationUnit", + "mw.cx.dm.ExternalLinkTranslationUnit", "mw.cx.dm.PoemTranslationUnit", "mw.cx.dm.ReferenceTranslationUnit", "mw.cx.dm.TemplateTranslationUnit", @@ -1270,6 +1271,14 @@ ], "dependencies": [ "mw.cx.dm.SectionTranslationUnit" + ] + }, + "mw.cx.dm.ExternalLinkTranslationUnit": { + "scripts": [ + "dm/translationunits/mw.cx.dm.ExternalLinkTranslationUnit.js" + ], + "dependencies": [ + "mw.cx.dm.TranslationUnit" ] }, "mw.cx.dm.SentenceTranslationUnit": { @@ -1689,6 +1698,7 @@ "mw.cx.ui.PoemTranslationUnit", "mw.cx.ui.ReferenceTranslationUnit", "mw.cx.ui.LinkTranslationUnit", + "mw.cx.ui.ExternalLinkTranslationUnit", "mw.cx.ui.TemplateTranslationUnit", "mw.cx.ui.SentenceTranslationUnit" ] @@ -1717,6 +1727,14 @@ ], "styles":[ "ui/styles/translationunits/mw.cx.ui.LinkTranslationUnit.less" + ], + "dependencies": [ + "mw.cx.ui.TranslationUnit" + ] + }, + "mw.cx.ui.ExternalLinkTranslationUnit": { + "scripts": [ + "ui/translationunits/mw.cx.ui.ExternalLinkTranslationUnit.js" ], "dependencies": [ "mw.cx.ui.TranslationUnit" @@ -1783,6 +1801,7 @@ "mw.cx.tools": { "dependencies": [ "mw.cx.tools.DictionaryTool", + "mw.cx.tools.ExternalLinkTool", "mw.cx.tools.FormatterTool", "mw.cx.tools.InstructionsTool", "mw.cx.tools.LinkTool", @@ -1875,6 +1894,20 @@ "mw.cx.tools.TranslationTool" ] }, + "mw.cx.tools.ExternalLinkTool": { + "scripts": [ + "tools/mw.cx.tools.ExternalLinkTool.js" + ], + "styles": [ + "tools/styles/mw.cx.tools.ExternalLinkTool.less" + ], + "dependencies": [ + "mw.cx.tools.TranslationTool" + ], + "messages":[ + "cx-tools-link-hover-tooltip" + ] + }, "mw.cx.tools.FormatterTool": { "scripts": [ "tools/mw.cx.tools.FormatterTool.js" diff --git a/modules/dm/translationunits/mw.cx.dm.ExternalLinkTranslationUnit.js b/modules/dm/translationunits/mw.cx.dm.ExternalLinkTranslationUnit.js new file mode 100644 index 0000000..1ab985e --- /dev/null +++ b/modules/dm/translationunits/mw.cx.dm.ExternalLinkTranslationUnit.js @@ -0,0 +1,37 @@ +'use strict'; + +/** + * CX External Link TranslationUnit Data model class + * + * @constructor + * @param {Object} config + * @param {mw.cx.dm.Translation} translation The translation context + * @param {Element} sourceDocument + * @param {Element} targetDocument + */ +mw.cx.dm.ExternalLinkTranslationUnit = function ExternalLinkTranslationUnit( config, translation, sourceDocument, targetDocument ) { + mw.cx.dm.ExternalLinkTranslationUnit.super.call( this, config, translation, sourceDocument, targetDocument ); +}; + +/* Inheritance */ + +OO.inheritClass( mw.cx.dm.ExternalLinkTranslationUnit, mw.cx.dm.TranslationUnit ); + +mw.cx.dm.ExternalLinkTranslationUnit.static.name = 'extlink'; +mw.cx.dm.ExternalLinkTranslationUnit.static.matchTagNames = [ 'a' ]; +mw.cx.dm.ExternalLinkTranslationUnit.static.matchRdfaTypes = [ 'mw:ExtLink' ]; + +mw.cx.dm.ExternalLinkTranslationUnit.prototype.getTargetURL = function () { + return this.sourceDocument.href; +}; + +/** + * Get the id of the section + * @return {string} + */ +mw.cx.dm.TranslationUnit.prototype.getSectionId = function () { + // Make sure that there is an id for the unit even if id attribute is not present. + return this.sourceDocument.id || this.sourceDocument.dataset.linkid || OO.ui.generateElementId(); +}; + +mw.cx.dm.modelRegistry.register( mw.cx.dm.ExternalLinkTranslationUnit ); diff --git a/modules/dm/translationunits/mw.cx.dm.LinkTranslationUnit.js b/modules/dm/translationunits/mw.cx.dm.LinkTranslationUnit.js index 848e6e2..c914383 100644 --- a/modules/dm/translationunits/mw.cx.dm.LinkTranslationUnit.js +++ b/modules/dm/translationunits/mw.cx.dm.LinkTranslationUnit.js @@ -39,10 +39,6 @@ // We are not fetching any data before the parent translation unit's translation started. }; -mw.cx.dm.LinkTranslationUnit.prototype.isInternalLink = function () { - return true; -}; - mw.cx.dm.LinkTranslationUnit.prototype.getTargetTitle = function () { return this.targetDocument.title; }; diff --git a/modules/tools/mw.cx.tools.ExternalLinkTool.js b/modules/tools/mw.cx.tools.ExternalLinkTool.js new file mode 100644 index 0000000..13af29c --- /dev/null +++ b/modules/tools/mw.cx.tools.ExternalLinkTool.js @@ -0,0 +1,45 @@ +/** + * External link tool + * + * @class + * @extends mw.cx.tools.TranslationTool + * @constructor + * @param {mw.cx.dm.TranslationUnit} model + * @param {Object} config + */ +mw.cx.tools.ExternalLinkTool = function CXExternalLinkTool( model, config ) { + config.order = 50; + config.title = 'External link'; + mw.cx.tools.ExternalLinkTool.super.call( this, model, config ); +}; + +/* Inheritance */ +OO.inheritClass( mw.cx.tools.ExternalLinkTool, mw.cx.tools.TranslationTool ); + +mw.cx.tools.ExternalLinkTool.static.name = 'extlink'; + +/** + * @inheritDoc + */ +mw.cx.tools.ExternalLinkTool.prototype.getActions = function () { + return []; +}; + +mw.cx.tools.ExternalLinkTool.prototype.getContent = function () { + var $linkTitle, url; + + url = this.model.getTargetURL(); + $linkTitle = $( '<a>' ) + .text( url ) + .addClass( 'cx-tools-extlink' ) + .prop( { + target: '_blank', + rel: 'mw:ExtLink', + title: mw.msg( 'cx-tools-link-hover-tooltip' ), + href: url + } ); + return $linkTitle; +}; + +/* Register */ +mw.cx.tools.translationToolFactory.register( mw.cx.tools.ExternalLinkTool ); diff --git a/modules/tools/styles/mw.cx.tools.ExternalLinkTool.less b/modules/tools/styles/mw.cx.tools.ExternalLinkTool.less new file mode 100644 index 0000000..c06d287 --- /dev/null +++ b/modules/tools/styles/mw.cx.tools.ExternalLinkTool.less @@ -0,0 +1,5 @@ +.cx-card-extlink { + .cx-tools-extlink { + word-wrap: break-word; + } +} diff --git a/modules/ui/translationunits/mw.cx.ui.ExternalLinkTranslationUnit.js b/modules/ui/translationunits/mw.cx.ui.ExternalLinkTranslationUnit.js new file mode 100644 index 0000000..05e0397 --- /dev/null +++ b/modules/ui/translationunits/mw.cx.ui.ExternalLinkTranslationUnit.js @@ -0,0 +1,27 @@ +'use strict'; + +/** + * External Link translation unit + * + * @class + * @param {mw.cx.dm.TranslationUnit} model + * @param {mw.cx.tools.TranslationToolFactory} toolFactory + * @param {Object} config + */ +mw.cx.ui.ExternalLinkTranslationUnit = function MwCxUiExternalLinkTranslationUnit( model, toolFactory, config ) { + mw.cx.ui.ExternalLinkTranslationUnit.super.call( this, model, toolFactory, config ); +}; + +/* Setup */ +OO.inheritClass( mw.cx.ui.ExternalLinkTranslationUnit, mw.cx.ui.TranslationUnit ); + +mw.cx.ui.ExternalLinkTranslationUnit.static.name = 'extlink'; +mw.cx.ui.ExternalLinkTranslationUnit.static.matchTagNames = [ 'a' ]; +mw.cx.ui.ExternalLinkTranslationUnit.static.matchRdfaTypes = [ 'mw:ExtLink' ]; +mw.cx.ui.ExternalLinkTranslationUnit.static.highlightClass = 'cx-highlight--lightblue'; +mw.cx.ui.ExternalLinkTranslationUnit.static.tools = { + extlink: [ 'click', 'focus' ] +}; + +/* Register */ +mw.cx.ui.translationUnitFactory.register( mw.cx.ui.ExternalLinkTranslationUnit ); diff --git a/modules/ui/translationunits/mw.cx.ui.LinkTranslationUnit.js b/modules/ui/translationunits/mw.cx.ui.LinkTranslationUnit.js index b54d681..8d134c1 100644 --- a/modules/ui/translationunits/mw.cx.ui.LinkTranslationUnit.js +++ b/modules/ui/translationunits/mw.cx.ui.LinkTranslationUnit.js @@ -34,11 +34,6 @@ return !!node.id; }; -mw.cx.ui.LinkTranslationUnit.prototype.getPlaceholderSection = function () { - return $( '<section>' ) - .addClass( 'cx-link-placeholder' ); -}; - mw.cx.ui.LinkTranslationUnit.prototype.adapt = function () { var self = this; // Adapt in general will be asynchronous operation @@ -72,10 +67,6 @@ // Re attach event handlers this.listen(); this.emit( 'change' ); -}; - -mw.cx.ui.LinkTranslationUnit.prototype.removePlaceholder = function () { - this.$translationSection.removeClass( 'cx-link-placeholder' ); }; /** -- To view, visit https://gerrit.wikimedia.org/r/346727 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I8cf8e155144297073c1f067e408fe6faf4cf05c7 Gerrit-PatchSet: 4 Gerrit-Project: mediawiki/extensions/ContentTranslation Gerrit-Branch: master Gerrit-Owner: Santhosh <santhosh.thottin...@gmail.com> Gerrit-Reviewer: Nikerabbit <niklas.laxst...@gmail.com> Gerrit-Reviewer: Santhosh <santhosh.thottin...@gmail.com> Gerrit-Reviewer: jenkins-bot <> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits