From 9e952f28af91287f252e897769c91816898222b6 Mon Sep 17 00:00:00 2001 From: bwang Date: Tue, 7 Sep 2021 13:58:55 -0500 Subject: [PATCH] Add support for multiple ULS buttons - Update document click handler for loading ULS - Use data attributes to ensure ULS isnt loaded multiple times for an element Bug: T289815 Change-Id: Iba6cbbd6c6e48a1abfda342421822e3ff2715362 --- resources/js/ext.uls.interface.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/resources/js/ext.uls.interface.js b/resources/js/ext.uls.interface.js index 5b923253..3cc71849 100644 --- a/resources/js/ext.uls.interface.js +++ b/resources/js/ext.uls.interface.js @@ -442,6 +442,11 @@ var $target = $( ev.currentTarget ); ev.preventDefault(); + // Avoid reinitializing ULS multiple times for an element + if ( $target.attr( 'data-uls-loaded' ) ) { + return; + } + mw.loader.using( 'ext.uls.mediawiki' ).then( function () { var parent, languageNodes, standalone, uls; @@ -449,6 +454,8 @@ languageNodes = parent ? parent.querySelectorAll( '.interlanguage-link-target' ) : []; standalone = isUsingStandaloneLanguageButton(); + $target.attr( 'data-uls-loaded', true ); + // Setup click handler for ULS launchULS( $target, @@ -483,7 +490,8 @@ // if there are many languages. Warning: Both this module and ext.uls.compactlinks // module may run simultaneously. Using event delegation to avoid race conditions where // the trigger may be created after this code. - $( document ).one( 'click', '.mw-interlanguage-selector', loadContentLanguageSelector ); + $( document ).on( 'click', '.mw-interlanguage-selector', loadContentLanguageSelector ); + } }