מדיה ויקי:Gadget-WikidataBtn.js
הערה: לאחר הפרסום, ייתכן שיהיה צורך לנקות את זיכרון המטמון (cache) של הדפדפן כדי להבחין בשינויים.
- פיירפוקס / ספארי: להחזיק את המקש Shift בעת לחיצה על טעינה מחדש (Reload) או ללחוץ על צירוף המקשים Ctrl-F5 או Ctrl-R (במחשב מק: ⌘-R).
- גוגל כרום: ללחוץ על צירוף המקשים Ctrl-Shift-R (במחשב מק: ⌘-Shift-R).
- אינטרנט אקספלורר / אדג': להחזיק את המקש Ctrl בעת לחיצה על רענן (Refresh) או ללחוץ על צירוף המקשים Ctrl-F5.
- אופרה: ללחוץ על Ctrl-F5.
/*
Written by [[User:ערן]]
Adds a button to toolbar for searching/link to wikidata entity.
*/
'use strict';
mw.messages.set( 'wikidata-name', 'ויקינתונים' );
mw.messages.set( 'wikidata-entity-title', 'שם בוויקי אחרת' );
mw.messages.set( 'wikidata-entity-lang', 'שם הוויקי' );
mw.messages.set( 'wikidata-search', 'חיפוש בוויקינתונים' );
mw.messages.set( 'wikidata-entity-doesnt-exist', 'חיפוש הישות בוויקינתונים עלה בתוהו ;(' );
mw.messages.set( 'wikidata-entity-exist', 'הישות נמצאה בוויקינתונים ומקושרת לדף: $1' );
mw.messages.set( 'wikidata-toolbar-title', 'קישור לוויקינתונים' );
function searchWikidata( entityTitle, entityLang ){
var site = mw.config.get( 'wgDBname' );
$.getJSON( '//www.wikidata.org/w/api.php?callback=?', {
action: 'wbgetentities',
sites: entityLang,
titles: entityTitle,
props: 'sitelinks',
format: 'json'
},
function ( data ) {
$.each( data.entities, function ( entityId, entity ) {
if( entityId === '-1' ){
mw.notify( mw.msg('wikidata-entity-doesnt-exist') );
return false;
}
if ( entity.sitelinks.hasOwnProperty( site ) ) {
mw.notify( mw.msg('wikidata-entity-exist', entity.sitelinks[ site ].title ) );
}
else {
$( '<div style="text-align:center;"><iframe src="//www.wikidata.org/wiki/' + entityId + '?printable=yes" style="width:90%;height:450px;overflow-x:hidden;"></iframe></div>' ).dialog( {
bgiframe: true,
title: mw.msg( 'wikidata-name' ),
width: '650px',
show: 'bounce'
} );
}
} );
} );
}
function wikidataSearchDialog() {
var enName = $('#wpTextbox1').val().match(/\[\[en:(.*?)\]\]/);
enName = enName ? enName[1] : '';
var wikidataForm = '<div><label for="wikidata-entity-title" rel="wikidata-entity-title">' + mw.msg('wikidata-entity-title') + ':</label><br>';
wikidataForm += '<input id="wikidata-entity-title" value="' + enName + '"><p>';
wikidataForm += '<label for="wikidata-entity-lang" rel="wikidata-entity-lang">' + mw.msg('wikidata-entity-lang') + ': </label><br>';
wikidataForm += '<input id="wikidata-entity-lang" dir="ltr" value="enwiki"></div>';
var dialogConfig = {
title: mw.msg( 'wikidata-search' ),
buttons: {}
};
dialogConfig.buttons[ mw.msg( 'wikidata-search' ) ] = function () {
searchWikidata( $( '#wikidata-entity-title' ).val(), $( '#wikidata-entity-lang' ).val() );
$( this ).dialog( 'close' ).remove();
};
$( wikidataForm ).dialog( dialogConfig );
}
if ( ( $.inArray( mw.config.get( 'wgAction' ), [ 'edit', 'submit' ] ) + 1 ) ) {
if ( mw.user.options.get( 'usebetatoolbar' ) ) {
var wikidatacheck = {
label: mw.msg( 'wikidata-toolbar-title' ),
type: 'button',
icon: '//upload.wikimedia.org/wikipedia/commons/thumb/8/83/Wikidata-check.svg/22px-Wikidata-check.svg.png',
action: {
type: 'callback',
execute: wikidataSearchDialog
}
};
if ( $( '.wikiEditor-ui-toolbar .section-main' ).length ) {
$( '#wpTextbox1' )
.wikiEditor( 'addToToolbar', {
section: 'main',
group: 'insert',
tools: {
wikidatacheck: wikidatacheck
}
} );
} else {
$( '#wpTextbox1' ).on( 'wikiEditor-toolbar-buildSection-main', function( event, section ) {
section.groups.insert.tools.wikidatacheck = wikidatacheck;
} );
}
} else {
$( 'div #toolbar' ).append( // "old style"
$( '<img>', {
src: '//upload.wikimedia.org/wikipedia/commons/thumb/8/83/Wikidata-check.svg/22px-Wikidata-check.svg.png',
title: mw.msg( 'wikidata-toolbar-title' ),
'class': 'mw-toolbar-editbutton'
} )
.css( { cursor: 'pointer' } )
.click( wikidataSearchDialog )
);
}
}