MediaWiki:Gadget-SiteIdToInterwiki.js: Difference between revisions
Jump to navigation
Jump to search
Content deleted Content added
Update |
Ricordisamoa (talk | contribs) Before /wiki[a-z]*$/ must be at least one character to replace "wikidatawiki" to "wikidata" instead of "". (phab:T106970) |
||
Line 89: | Line 89: | ||
*/ |
*/ |
||
_getCode: function( site ) { |
_getCode: function( site ) { |
||
return site.getId().replace( /wiki[a-z]*$/, '' ); |
return site.getId().replace( /(.)wiki[a-z]*$/, '$1' ); |
||
} |
} |
||
} ); |
} ); |
Revision as of 17:28, 26 July 2015
/**
* Replaces Wikibase site id with interwiki code.
* Examples: "enwiki" -> "en", "enwikiquote" -> "en", "commonswiki" -> "commons"
*
* @uses jQuery.wikibase.sitelinklistview
* @uses jQuery.wikibase.sitelinkview
*/
( function( $ ) {
'use strict';
/**
* Replaces the site id with the interwiki code.
*
* @param {jQuery} $siteId
*/
function replaceSiteId( $siteId ) {
$siteId.text( $siteId.text().replace( /(.)wiki[a-z]*$/, '$1' ) );
}
/**
* Overwrites native `jQuery.wikibase.sitelinkview` implementation.
*
* @constructor
*/
$.widget( 'wikibase.sitelinkview', $.wikibase.sitelinkview, {
/**
* @see jQuery.wikibase.sitelinkview._create
*/
__nativeCreate: $.wikibase.sitelinkview.prototype._create,
/**
* @inheritdoc
*/
_create: function() {
this.__nativeCreate.call( this );
replaceSiteId( this.$siteId );
}
} );
/**
* Overwrites native `jQuery.wikibase.siteselector` implementation.
*
* @constructor
*/
$.widget( 'wikibase.siteselector', $.wikibase.siteselector, {
/**
* @inheritdoc
*/
_createItemLabel: function( site, requestTerm ) {
return util.highlightSubstring( requestTerm, site.getShortName() )
+ ' (' + util.highlightSubstring( requestTerm, this._getCode( site ) ) + ')';
},
/**
* @inheritdoc
*/
_considerSuggestion: function( site ) {
var code = this._getCode( site );
var check = [
code,
site.getShortName(),
site.getName(),
site.getShortName() + ' (' + code + ')'
];
for( var i = 0; i < check.length; i++ ) {
if( check[i].toLowerCase().indexOf( this._term.toLowerCase() ) === 0 ) {
return true;
}
}
return false;
},
/**
* @inheritdoc
*/
_createItemValue: function( site ) {
return this._getCode( site );
},
/**
* Returns the interwiki code of a specified site.
* @private
*
* @param {wikibase.Site} site
* @return {string}
*/
_getCode: function( site ) {
return site.getId().replace( /(.)wiki[a-z]*$/, '$1' );
}
} );
// Replace site ids in rendered HTML:
$( '.wikibase-sitelinkview .wikibase-sitelinkview-siteid' ).each( function() {
replaceSiteId( $( this ) );
} );
// Adjust sitelinklistview widgets that have been initialized already to use the overwritten
// sitelinkview widget:
if( $.expr[':']['wikibase-sitelinklistview'] ) {
$( ':wikibase-sitelinklistview' ).each( function() {
var sitelinklistview = $( this ).data( 'sitelinklistview' );
sitelinklistview.$listview.data( 'listview' ).listItemAdapter()._liWidget
= $.wikibase.sitelinkview;
} );
}
}( jQuery ) );