MediaWiki talk:Gadget-exlinks.js

Latest comment: 10 years ago by Edokter in topic Fix to support Parsoid external links

Update edit

Hi!

Could someone update this gadget to use jQuery and the recommended functions from MW 1.17? It would be something like this:

$( function() {
	var $alinks = mw.util.$content.find( 'a' );
	$alinks.each( function() {
		var $tablink = $( this );
		if ( $tablink.hasClass( 'external' ) && $tablink.attr( 'href' ).indexOf( mw.config.get( 'wgServer' ) ) !== 0 ) {
			$tablink.attr( 'target', '_blank' );
		}
	});
});

After the change, I think it will be possible to change the definition of this gadget to

* exlinks[ResourceLoader|dependencies=mediawiki.util]|exlinks.js

Helder 18:09, 27 July 2011 (UTC)Reply

Is that not required to be inside a document.ready ? —TheDJ (talkcontribs) 22:04, 31 July 2011 (UTC)Reply
Yep! And it is.   The code $(handler) is equivalent to $(document).ready(handler). Helder 23:22, 31 July 2011 (UTC)Reply
This does not work. mw.util.$content is null for me. (Is init'ed in a .ready() after mw.util is considered to be init'ed....... —TheDJ (talkcontribs) 21:39, 1 August 2011 (UTC)Reply
That is weird. On Portuguese Wikibooks it works fine. Besides, if I copy the following to the address bar (here, on English Wikipedia):
javascript:alert( mw.util.$content )
I get "[object Object]", and not null. Helder 12:31, 2 August 2011 (UTC)Reply
Just replace var $alinks = mw.util.$content.find( 'a' ); with var $alinks = $( '#content' ).find( 'a' );. Edokter (talk) — 20:01, 3 August 2011 (UTC)Reply
I'll ask Edokter to make this change himself, as he seems to know what this is all about. — Martin (MSGJ · talk) 13:53, 12 September 2011 (UTC)Reply
Changed the code above, but not making it live before it is tested. Edokter (talk) — 21:25, 12 September 2011 (UTC)Reply
If TheDJ is using Modern skin that would explain why mw.util.$content doesn't work for him, see mw:Talk:ResourceLoader/Default_modules#mw.util.$content undefined in Modern. — AlexSm 00:54, 13 September 2011 (UTC)Reply
Can this get deployed with MW 1.18? --Locos epraix ~ Beastepraix 15:10, 1 October 2011 (UTC)Reply
For the record, mw.util.$content seems to be working on modern skin on MW 1.18, because it is on wmf/1.18wmf1 branch. Helder 13:42, 5 October 2011 (UTC)Reply
  Done. Tested code in Modern and it works. Edokter (talk) — 14:06, 5 October 2011 (UTC)Reply

Update 2 edit

Could someone update this gadget to the current version of mw:Snippets/Open external links in new window? It is compatible with the live preview. Moreover, the new version doesn't use mw.util.$content, so the dependency "mediawiki.util" can be removed from Mediawiki:Gadgets-definition. Helder 17:13, 29 October 2013 (UTC)Reply

Would prefer you get this code checked by someone, but now   Done — Martin (MSGJ · talk) 10:50, 2 November 2013 (UTC)Reply

Fix to support Parsoid external links edit

Parsoid's HTML+RDFa output doesn't output <a class="external"> for links, it outputs <a rel="mw:ExtLink">.

That means this gadget doesn't work for links in posts on Flow boards, T67243. And as other MediaWiki code switches to use Parsoid to generate HTML, the gadget will not work in other areas.

From the bug, the fix is to change the gadget code's jQuery selector from $('a.external') to $('a.external, a[rel="mw:ExtLink"]').

https://en.wikipedia.org/w/index.php?title=Wikipedia_talk:Flow/Developer_test_page&workflow=rv6622xq0czv15cx is a test post. I confirmed this works with the modified gadget code in User:S Page (WMF)/common.js, and modified the JS of the original snippet on MW.

Cheers,

-- S Page (WMF) (talk) 00:01, 22 May 2014 (UTC)Reply

  Done. Edokter (talk) — 10:55, 22 May 2014 (UTC)Reply