Gebruiker:Vandervalp/common.js
Uiterlijk
Opmerking: na het publiceren is het wellicht nodig uw browsercache te legen om de veranderingen te zien.
- Firefox / Safari: houd Shift ingedrukt terwijl u:je op Vernieuwen klikt of druk op Ctrl-F5 of Ctrl-R (⌘-Shift-R op een Mac)
- Google Chrome: druk op Ctrl-Shift-R (⌘-Shift-R op een Mac)
- Edge: houd Ctrl ingedrukt terwijl u:je op Vernieuwen klikt of druk op Ctrl-F5.
// <nowiki>
mw.loader.using( 'mediawiki.util' )
.then( function () {
mw.util.addCSS( '\
.wikidata-redirect-linker-in-progress {\
color: inherit !important;\
pointer-events: none;\
}\
.wikidata-redirect-linker-in-progress:after {\
content: " …";\
}\
.redirectMsg button {\
margin-left: 1em;\
}\
' );
function removeInterLanguageLinks( content, sitelinks ) {
var i, sitelink, prefix, reg;
for ( i in sitelinks ) {
sitelink = sitelinks[ i ];
prefix = sitelink.site.split( 'wiki' )[ 0 ].replace( /_/g, '-' );
reg = new RegExp(
'(^\\s*)?\\[\\[\\s*' +
mw.util.escapeRegExp( prefix ) + '\\s*:\\s*' + // interwiki prefix
sitelink.title.replace( /^([^:]*:)?(.+)$/, function( pg, ns, title ) { // page name
return ( ns ?
'(?:' + mw.util.escapeRegExp( ns ) + '|' + mw.util.escapeRegExp( mw.config.get( 'wgCanonicalNamespace' ) ) + ')' : // non-mainspace
'' // main namespace
) +
mw.util.escapeRegExp( title );
} ).replace( / /g, '[ _]+' ) +
'\\s*\\]\\]\\s*\\n?',
'ig' // case insensitive, multiple occurs
);
content = content.replace( reg, '' );
}
return content;
}
function setSiteLink( id, site, page ) {
return mw.loader.using( [
'jquery.wikibase.linkitem',
'mediawiki.api',
'mw.config.values.wbRepo'
] )
.then( function () {
var api, repoConfig, repoApiUrl, mwApiForRepo, repoApi, deferredTitle;
api = new mw.Api();
repoConfig = mw.config.get( 'wbRepo' );
repoApiUrl = repoConfig.url + repoConfig.scriptPath + '/api.php';
mwApiForRepo = wikibase.api.getLocationAgnosticMwApi( repoApiUrl );
repoApi = new wikibase.api.RepoApi( mwApiForRepo );
function getTitle() {
return api.get( {
formatversion: 2,
titles: page,
prop: 'pageprops'
} ).then( function ( data ) {
var title = page.replace( /_/g, ' ' ),
pageprops = data.query.pages[ 0 ].pageprops;
if ( pageprops && pageprops.displaytitle &&
pageprops.displaytitle.replace( /_/g, ' ' ).toLocaleLowerCase() === title.toLocaleLowerCase()
) {
return pageprops.displaytitle;
}
return title;
} );
}
deferredTitle = getTitle();
return deferredTitle.then( function ( title ) {
var lang = mw.config.get( 'wgPageContentLanguage' );
if ( id === 'new' ) {
var entityData = {
labels: {},
sitelinks: {}
};
entityData.labels[ lang ] = {
language: lang,
value: title
};
entityData.sitelinks[ site ] = {
site: site,
title: page,
badges: [ 'Q70894304' ]
};
return repoApi.createEntity( 'item', entityData );
}
return repoApi.setSitelink( id, 0, site, page, 'Q70894304' );
} )
.then( function ( data ) {
var lang = mw.config.get( 'wgPageContentLanguage' ),
id = data.entity.id;
return repoApi.getEntities( [ id ], [ 'labels', 'sitelinks' ], lang )
.then( function ( entities ) {
var deferredLabel, deferredEdit,
entity = entities.entities[ id ];
// Set label if empty
if ( !entity.labels[ lang ] ) {
// The entity has no label. Set the title as label.
deferredLabel = deferredTitle.then( function ( title ) {
return repoApi.setLabel( id, data.entity.lastrevid, title, lang );
} );
} else {
deferredLabel = $.Deferred().resolve();
}
deferredEdit = api.edit( page, function ( revision ) {
var content = removeInterLanguageLinks( revision.content, entity.sitelinks )
.replace( /__(STATICREDIRECT|PERMANENTE_WEITERLEITUNG)__ *\n*/g, '' )
.replace( /\{\{\s*[Ww]ikidata-doorverwijzing\s*(\|\s*Q\d+\s*)?\}\} *\n*/g, '' );
return {
text: content.replace(
/#(redirect|doorverwijzing)\s*:?\s*\[\[[_ ]*([^\]]*)[_ ]*\]\] *\n*/i,
'#DOORVERWIJZING [[$2]]\n{{Wikidata-doorverwijzing|' + id + '}}\n\n'
),
summary: '{{[[Sjabloon:Wikidata-doorverwijzing|Wikidata-doorverwijzing]]|[[d:' + id + '|' + id + ']]}} toegevoegd.'
};
} );
return $.when( deferredLabel, deferredEdit );
} );
} );
} );
}
function linkAndLoad( id, site, page ) {
return setSiteLink( id, site, page )
.done( function () {
location.href = mw.util.getUrl( page, { redirect: 'no' } );
} )
.fail( function ( error ) {
var title = page.replace( /_/g, ' ' );
mw.notify(
'Die Verküpfung von Datenobjekt ' + id + ' mit ' + title + ' ist fehlgeschlagen: ' + error,
{ type: 'error' }
);
} );
}
function init( $content ) {
$content.find( 'a[class="external text"][href^="https://www.wikidata.org/wiki/Special:NewItem?"]' )
.on( 'click', function ( e ) {
var href, site, page, $link = $( this );
href = $link.attr( 'href' );
site = mw.util.getParamValue( 'site', href );
page = mw.util.getParamValue( 'page', href );
// Input validation
if ( site !== mw.config.get( 'wgDBname' ) ||
page !== mw.config.get( 'wgPageName' )
) {
return;
}
e.preventDefault();
$link.addClass( 'wikidata-redirect-linker-in-progress' );
linkAndLoad( 'new', site, page )
.done( function () {
$link.remove();
} )
.fail( function () {
$link.removeClass( 'wikidata-redirect-linker-in-progress' );
} );
} );
$content.find( 'a[class="external text"][href^="https://www.wikidata.org/wiki/Special:SetSiteLink?"]' )
.on( 'click', function ( e ) {
var href, site, id, page, $link = $( this );
href = $link.attr( 'href' );
site = mw.util.getParamValue( 'site', href );
id = mw.util.getParamValue( 'id', href );
page = mw.util.getParamValue( 'page', href );
// Input validation
if ( site !== mw.config.get( 'wgDBname' ) ||
!/^Q\d+$/.test( id ) ||
page !== mw.config.get( 'wgPageName' )
) {
return;
}
e.preventDefault();
$link.addClass( 'wikidata-redirect-linker-in-progress' );
linkAndLoad( id, site, page )
.done( function () {
$link.remove();
} )
.fail( function () {
$link.removeClass( 'wikidata-redirect-linker-in-progress' );
} );
} );
if ( mw.config.get( 'wgIsRedirect' ) &&
mw.config.exists( 'wgWikibaseItemId' )
) {
$content.find( '.redirectMsg' )
.append(
$( '<button>' ).text( 'Sjabloon koppelen' ).on( 'click', function ( e ) {
e.target.disabled = true;
setSiteLink(
mw.config.get( 'wgWikibaseItemId' ),
mw.config.get( 'wgDBname' ),
mw.config.get( 'wgPageName' )
)
.done( function () {
e.target.remove();
} )
.fail( function ( error ) {
mw.notify(
'Das Eintragen der Vorlage ist fehlgeschlagen: ' + error,
{ type: 'error' }
);
e.target.disabled = false;
} );
} )
);
}
}
mw.hook( 'wikipage.content' ).add( init );
} );
// </nowiki>