Jsahleen has uploaded a new change for review.

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

Change subject: Link Adaptation: Adapt links if no corresponding link found
......................................................................

Link Adaptation: Adapt links if no corresponding link found

* Changes start method to look for adapted link if no corresponding link
* Changes adapt method to allow adaptation in both directions

Bug: T85989
Change-Id: I50c6289897f115dba752ec7c80910c9edd513259
---
M modules/tools/ext.cx.tools.link.js
1 file changed, 43 insertions(+), 15 deletions(-)


  git pull 
ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/ContentTranslation 
refs/changes/03/188703/1

diff --git a/modules/tools/ext.cx.tools.link.js 
b/modules/tools/ext.cx.tools.link.js
index f3e95c0..a1d9d22 100644
--- a/modules/tools/ext.cx.tools.link.js
+++ b/modules/tools/ext.cx.tools.link.js
@@ -203,13 +203,20 @@
         * @return {jQuery.Promise}
         */
        LinkCard.prototype.adapt = function ( titles, language ) {
-               var deferred = $.Deferred();
+               var apiLanguage,
+                       deferred = $.Deferred();
 
                if ( !$.isArray( titles ) ) {
                        titles = new Array( titles );
                }
 
-               this.siteMapper.getApi( mw.cx.sourceLanguage ).get( {
+               if ( language === mw.cx.sourceLanguage ) {
+                       apiLanguage = mw.cx.targetLanguage;
+               } else {
+                       apiLanguage = mw.cx.sourceLanguage;
+               }
+
+               this.siteMapper.getApi( apiLanguage ).get( {
                        action: 'query',
                        titles: titles.join( '|' ),
                        prop: 'langlinks',
@@ -605,7 +612,8 @@
         * @param {string} [language] The language where the link points to.
         */
        LinkCard.prototype.start = function ( link, language ) {
-               var selection, title, targetTitle, sourceTitle, $targetLink, 
$sourceLink;
+               var selection, title, targetTitle, sourceTitle, $targetLink, 
$sourceLink,
+                       self = this;
 
                // If language is not given, use target language
                language = language || mw.cx.targetLanguage;
@@ -634,7 +642,7 @@
                }
 
                this.highlightLink();
-               if ( this.$link && language === mw.cx.targetLanguage ) {
+               if ( language === mw.cx.targetLanguage ) {
                        targetTitle = title;
                } else {
                        sourceTitle = title;
@@ -642,21 +650,41 @@
 
                if ( !targetTitle ) {
                        $targetLink = this.getTargetLink();
-                       targetTitle = $targetLink && $targetLink.attr( 'href' ) 
|| title;
+                       if ( $targetLink ) {
+                               targetTitle = $targetLink.attr( 'href' );
+                               self.prepareSourceLinkCard( sourceTitle, 
mw.cx.sourceLanguage );
+                               self.prepareTargetLinkCard( targetTitle, 
mw.cx.targetLanguage );
+                       } else {
+                               this.adapt( sourceTitle, mw.cx.targetLanguage )
+                                       .done( function ( linkPairs ) {
+                                               console.log( linkPairs );
+                                               targetTitle = linkPairs[ 
sourceTitle ];
+                                               self.prepareSourceLinkCard( 
sourceTitle, mw.cx.sourceLanguage );
+                                               self.prepareTargetLinkCard( 
targetTitle, mw.cx.targetLanguage );
+                                               // If text is selected, and the 
link clicked is source language,
+                                               // create a new internal link 
in the translation section
+                                               if ( isValidSelection( 
selection ) && self.$link ) {
+                                                       
self.createInternalLink( selection.toString(), targetTitle, self.$link.data( 
'linkid') );
+                                               }
+                                       } );
+                       }
                }
 
                if ( !sourceTitle ) {
                        $sourceLink = this.getSourceLink();
-                       sourceTitle = $sourceLink && cleanupLinkHref( 
$sourceLink.attr( 'href' ) );
-               }
-
-               this.prepareSourceLinkCard( sourceTitle, mw.cx.sourceLanguage );
-               this.prepareTargetLinkCard( targetTitle, mw.cx.targetLanguage );
-
-               // If text is selected, and the link clicked is source 
language, create a new internal link
-               // in the translation section
-               if ( isValidSelection( selection ) && this.$link && language 
=== mw.cx.sourceLanguage ) {
-                       this.createInternalLink( selection.toString(), 
targetTitle, this.$link.data( 'linkid' ) );
+                       if ( $sourceLink ) {
+                               sourceTitle = cleanupLinkHref( 
$sourceLink.attr( 'href' ) );
+                               self.prepareSourceLinkCard( sourceTitle, 
mw.cx.sourceLanguage );
+                               self.prepareTargetLinkCard( targetTitle, 
mw.cx.targetLanguage );
+                       } else {
+                               this.adapt( targetTitle, mw.cx.sourceLanguage )
+                                       .done( function ( linkPairs ) {
+                                               console.log( linkPairs );
+                                               sourceTitle = linkPairs[ 
targetTitle ];
+                                               self.prepareSourceLinkCard( 
sourceTitle, mw.cx.sourceLanguage );
+                                               self.prepareTargetLinkCard( 
targetTitle, mw.cx.targetLanguage );
+                                       } );
+                       }
                }
        };
 

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I50c6289897f115dba752ec7c80910c9edd513259
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/ContentTranslation
Gerrit-Branch: master
Gerrit-Owner: Jsahleen <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to