User:Epìdosis/UseAsRef try.js
Note: After publishing, you may have to bypass your browser's cache to see the changes.
- Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
- Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
- Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5.
/* *******************************************************************
_ _ ___ ______ __
| | | | / _ \ | ___ \ / _|
| | | |___ ___/ /_\ \___ | |_/ /___| |_
| | | / __|/ _ \ _ / __|| // _ \ _|
| |_| \__ \ __/ | | \__ \| |\ \ __/ |
\___/|___/\___\_| |_/___/\_| \_\___|_| 2.0.2
use an external ID or other selected claims
as a reference for statements
gadget written by User:Epìdosis and User:Bargioni - Oct 2021
******************************************************************* */
mw.loader.using('wikibase.Site').then(function () {
( function ( mw, wb, $ ) {
// -------- object Claim
function Claim(property, claim) {
this.property = property;
this.claim = claim;
this.is_id = check_id;
this.is_excluded_id = check_excluded_id;
this.append_icon = append_icon;
}
function check_id() {
// check if this.property is an external id
var extid = this.claim[0].mainsnak.datatype == 'external-id'; // only check the first value
return extid;
}
function check_excluded_id() {
// check if this.property is an excluded id
var excluded_ids = mw.UAR.config.excluded_ids; // ['P212', 'P213', 'P214', 'P236', 'P646', 'P2671', 'P791', 'P957', 'P2333', 'P7859'];
return (excluded_ids.indexOf(this.property) > -1);
}
function append_icon(icon_type) {
// a claim is always an array of one or more statements
var order = 0;
this.claim.forEach(statement => {
var id = statement.id;
id = '#' + id.replace(/\$/,'\\$'); // escape $, required by jQuery
var icon = new Icon(icon_type, this.property, order);
// $(id).find('.wikibase-statementview-mainsnak .wikibase-snakview-body').append(icon.html);
$(id).find('.wikibase-statementview-mainsnak .wikibase-snakview-body').prepend(icon.html);
order++;
});
}
// -------- object Property
function Property(property, claim) { // claim forse inutile
this.property = property;
this.claim = claim;
this.is_valid_for_copy = check_valid_for_copy;
// this.is_valid_for_paste = check_valid_for_paste;
}
function check_valid_for_copy() {
// return true if this property is not an external id
var included_statements = get_included_statements_from_config(); // ['P1343', 'P856', 'P1581', 'P8214', 'P7014', 'P7101', 'P973', 'P5715', 'P953', 'P2888', 'P8768', 'P1442', 'P1801'];
return included_statements.indexOf(this.property) > -1;
}
// -------- object Icon
function Icon(icon_type, prop, order) {
// order is the occurrence # TODO
var icon_copy = mw.UAR.config.icon_copy;
var icon_paste = mw.UAR.config.icon_paste;
this.type = icon_type;
this.src = icon_copy;
if (icon_type == 'paste') this.src = icon_paste;
this.title = 'copy this as ref';
if (icon_type == 'paste') this.title = 'paste copied ref';
// this.style = "cursor:pointer; float:right; width:16px; border:3px solid yellow";
this.style = "cursor:pointer; float:right; width:16px; user-select: none";
if (this.type == 'paste') this.style += "; pointer-events:none";
this.html = `<img src="${this.src}"
style="${this.style}"
title="${this.title}"
data-prop="${prop}"
data-order="${order}"
class="UAR_icon UAR_icon_${this.type}">`;
}
// -------- object Item
function Item(json, qid) {
this.json = json;
this.Qid = qid;
this.append_icons = append_icons;
}
function append_icons() {
var claims = this.json.entities[this.Qid].claims;
for (const [p, c] of Object.entries(claims)) {
// append to external IDs and to included_statements
var claim = new Claim(p, c);
var prop = new Property(p, c);
if ( (claim.is_id() && !claim.is_excluded_id()) || prop.is_valid_for_copy() ) {
claim.append_icon('copy');
}
else {
if (!claim.is_excluded_id())
claim.append_icon('paste');
}
}
$('.UAR_icon_paste').css('opacity','0.5');
var ic = $('.UAR_icon_copy').length;
var ip = $('.UAR_icon_paste').length;
// console.log(`UAR: added ${ic} copy icons and ${ip} paste icons`); // test
}
// -------- object Clipboard
function Clipboard (config, dpr, dor, statement) {
this.dpr = dpr;
this.dor = dor;
this.statement = statement;
this.value = clipboard_value(this,config.value);
this.property_value = config.property_value;
this.named_as = config.named_as ? qualifier_value(this,config.named_as) : '';
this.pub_date = config.pub_date ? qualifier_value(this,config.pub_date) : '';
this.archive_url = config.archive_url ? qualifier_value(this,config.archive_url) : '';
this.archive_date = config.archive_date ? qualifier_value(this,config.archive_date) : '';
this.language = config.language ? qualifier_value(this,config.language) : '';
this.volume = config.volume ? qualifier_value(this,config.volume) : '';
this.page = config.page ? qualifier_value(this,config.page) : '';
this.section = config.section ? qualifier_value(this,config.section) : '';
this.ref_type = clipboard_ref_type(this,config.ref_type);
this.source = clipboard_source(this,config.source);
mw.UAR.clipboard = this; // pass the new ref to the system clipboard
}
function clipboard_value(t,V) {
if ( typeof(t.statement.mainsnak.datavalue.value) == 'object' ) t.statement.mainsnak.datavalue.value = t.statement.mainsnak.datavalue.value.id;
if (!Array.isArray(V)) V = [V]; // cast V to array
for (var i=0; i < V.length; i++) {
var vv = V[i]; // Pnnn or 'value'
if (vv != 'value' && t.statement.qualifiers && t.statement.qualifiers[vv])
return t.statement.qualifiers[vv][0].datavalue.value.id;
if (vv == 'value') return t.statement.mainsnak.datavalue.value;
}
return null;
}
function qualifier_value(t,P) {
return t.statement.qualifiers && t.statement.qualifiers[P] ? t.statement.qualifiers[P][0].datavalue.value : null;
}
function clipboard_ref_type(t,RT) {
if (RT == '') return null;
if (RT.substr(0,1) == 'P') {
if (t.statement.qualifiers && t.statement.qualifiers[RT])
return t.statement.qualifiers[RT][0].datavalue.value;
else return null;
}
else return RT; // Qnnn
}
function clipboard_source(t,S) {
if (!S) return null;
if (S.substr(0,1) == 'Q') return S;
var sparql = `select ?P9073 ?P1629 where { optional { wd:${t.dpr} wdt:P9073 ?P9073 . } optional { wd:${t.dpr} wdt:P1629 ?P1629 . } }`;
var cb = clipboard_source_cb.bind(t);
makeSPARQLQuery('https://query.wikidata.org/sparql', sparql, cb);
}
function clipboard_source_cb(R) {
var P1629;
try {
this.source = R.results.bindings[0].P9073.value.replace(/.+\//,'');
}
catch(e) {
this.source = '';
// mostrare messaggio di errore: non esiste P9073 per this.dpr
mw.notify (`Error: ${this.dpr} doesn\'t have property P9073. Please, add it.`,
{
title: 'UseAsRef - Error',
autoHide: false,
type: 'error'
}
);
}
try { P1629 = R.results.bindings[0].P1629.value.replace(/.+\//,''); }
catch(e) {
mw.notify (`Warning: ${this.dpr} doesn\'t have property P1629. Please, add it.`,
{
title: 'UseAsRef - Warning',
autoHide: true,
type: 'warn'
}
);
}
mw.UAR.clipboard = this;
}
function Reference() {
this.init = init_reference;
this.save = save_reference;
}
function init_reference() {
var now = '+'+(new Date()).toISOString().substr(0,10)+'T00:00:00Z'; // WD doesn't handle hhmmss
var source_qid = mw.UAR.clipboard.source ? mw.UAR.clipboard.source.substr(1) : ''; // the numeric part of Qnnnn
if (source_qid) this.P248 = [
{
"snaktype": "value",
"property": "P248", // source of info
"datavalue": {
"value": {
"entity-type": "item",
"numeric-id": source_qid
},
"type": "wikibase-entityid"
}
}
];
this.P813 = [
{
"snaktype": "value",
"property": "P813", // stated on
"datatype": "time",
"datavalue": {
"value": {
"after": 0,
"before": 0,
"calendarmodel": "http://www.wikidata.org/entity/Q1985727",
"precision": 11,
"time": now,
"timezone": 0
},
"type": "time"
}
}
];
if (mw.UAR.clipboard.property_value == 'original') {
this[mw.UAR.clipboard.dpr] = [
{
"snaktype": "value",
"property": mw.UAR.clipboard.dpr,
"datavalue": {
"value": mw.UAR.clipboard.value,
"type": "string"
},
"datatype": "external-id"
}
];
}
else {
this[mw.UAR.clipboard.property_value] = [
{
"snaktype": "value",
"property": mw.UAR.clipboard.property_value,
"datavalue": mw.UAR.clipboard.value.indexOf('Q') == 0 ?
{
"value": {
"entity-type": "item",
"numeric-id": mw.UAR.clipboard.value.replace(/Q/,'')
},
"type": "wikibase-entityid"
}
:
{
"value": mw.UAR.clipboard.value,
"type": "string"
},
"datatype": mw.UAR.clipboard.value.indexOf('Q') == 0 ? "wikibase-item" : "url"
}
];
}
if (mw.UAR.clipboard.named_as) {
this.P1810 = [
{
"snaktype": "value",
"property": "P1810", // named as
"datatype": "string",
"datavalue": {
"value": mw.UAR.clipboard.named_as,
"type": "string"
},
"datatype": "string"
}
];
}
if (mw.UAR.clipboard.pub_date) {
this.P577 = [
{
"snaktype": "value",
"property": "P577", // pub date
"datavalue": {
"value": mw.UAR.clipboard.pub_date,
"type": "time"
},
"datatype": "time"
}
];
}
if (mw.UAR.clipboard.archive_url) {
this.P1065 = [
{
"snaktype": "value",
"property": "P1065", // archive url
"datavalue": {
"value": mw.UAR.clipboard.archive_url,
"type": "string"
},
"datatype": "url"
}
];
}
if (mw.UAR.clipboard.archive_date) {
this.P2960 = [
{
"snaktype": "value",
"property": "P2960", // archive date
"datavalue": {
"value": mw.UAR.clipboard.archive_date,
"type": "time"
},
"datatype": "time"
}
];
}
if (mw.UAR.clipboard.ref_type) {
this.P3865 = [
{
"snaktype": "value",
"property": "P3865", // ref type
"datavalue": {
"value": {
"entity-type": "item",
"numeric-id": typeof mw.UAR.clipboard.ref_type == 'object' ?
(mw.UAR.clipboard.ref_type['numeric-id'] ? mw.UAR.clipboard.ref_type['numeric-id'] : 0)
: mw.UAR.clipboard.ref_type.replace(/Q/,'')
},
"type": "wikibase-entityid"
},
}
];
}
if (mw.UAR.clipboard.language) {
this.P478 = [
{
"snaktype": "value",
"property": "P407", // language
"datavalue": {
"value": {
"entity-type": "item",
"numeric-id": typeof mw.UAR.clipboard.language == 'object' ?
(mw.UAR.clipboard.language['numeric-id'] ? mw.UAR.clipboard.language['numeric-id'] : 0)
: mw.UAR.clipboard.language.replace(/Q/,'')
},
"type": "wikibase-entityid"
},
}
];
}
if (mw.UAR.clipboard.volume) {
this.P478 = [
{
"snaktype": "value",
"property": "P478", // volume
"datavalue": {
"value": mw.UAR.clipboard.volume,
"type": "string"
},
"datatype": "string"
}
];
}
if (mw.UAR.clipboard.page) {
this.P304 = [
{
"snaktype": "value",
"property": "P304", // page
"datavalue": {
"value": mw.UAR.clipboard.page,
"type": "string"
},
"datatype": "string"
}
];
}
if (mw.UAR.clipboard.section) {
this.P958 = [
{
"snaktype": "value",
"property": "P958", // section
"datavalue": {
"value": mw.UAR.clipboard.section,
"type": "string"
},
"datatype": "string"
}
];
}
}
function save_reference(paste_icon) {
// disable paste icon, without changing its visibility
// perform only after a successfull save? FIXME
$(paste_icon)
.css({
'border':'3px solid red',
'padding':'2px'
});
$(paste_icon).parents('.pasteref-container').css('pointer-events','none');
var so = ["P248", "P3865", mw.UAR.clipboard.dpr, "P10253", "P854", "P958", "P478", "P304", "P1810", "P577", "P1065", "P2960", "P813"];
var claim_guid = $(paste_icon).parents('div[class~="wikibase-statementview"]').attr('id');
// save new reference
var api = new mw.Api();
var token = mw.user.tokens.values.csrfToken;
api.post({
'action' : 'wbsetreference',
'summary' : 'Added with [[User:Bargioni/UseAsRef|UseAsRef2.0]]',
'statement' : claim_guid,
'snaks-order': JSON.stringify(so),
'snaks' : JSON.stringify(this),
'format' : 'json',
'token' : token
})
.then( function(aw) {
if ( aw.success == 1 ) {
var ps = aw.reference['snaks-order'].toString();
mw.notify ('Reference successfully added using '+ps+'.\nTo see the changes, please reload the page.',
{
title: 'UseAsRef - Info',
autoHide: true,
type: 'info'
}
);
}
else {
console.log('error',aw);
mw.notify (aw.error,
{
title: 'UseAsRef - Error',
autoHide: false,
type: 'error'
}
);
}
} )
.catch( function(e) {
console.log('error',e);
mw.notify (e,
{
title: 'UseAsRef - Error',
autoHide: false,
type: 'error'
}
);
} );
}
function makeSPARQLQuery( endpointUrl, sparqlQuery, doneCallback ) {
var settings = {
headers: { Accept: 'application/sparql-results+json' },
data: { query: sparqlQuery }
};
return $.ajax( endpointUrl, settings ).then( doneCallback );
}
// --------
function get_included_statements_from_config() {
var included_statements = mw.UAR.config.included_statements;
var names = Object.entries(included_statements).map(function(p){return p[0]});
return names;
}
function copy_ref(e) {
mw.UAR.clipboard = {};
var dpr = $(e.target).attr('data-prop');
var dor = $(e.target).attr('data-order');
var qid = mw.config.get( 'wbEntityId' );
var statement = mw.UAR.Qjson.entities[qid].claims[dpr][dor];
// decide quale parte di UAR_config usare
var clipboard_config;
if (statement.mainsnak.datatype == 'external-id')
clipboard_config = mw.UAR.config.included_statements['external-id'];
else
clipboard_config = mw.UAR.config.included_statements[dpr];
$('.UAR_icon_copy').css({'border':'', 'padding':''}); // un-highlight previous copied source - Stefano Bargioni 2022-02-07
// building a clipboard
var clipboard = new Clipboard( clipboard_config, dpr, dor, statement );
// $('.UAR_icon_copy, .UAR_icon_paste').css({'width':'16px', 'border':'3px solid yellow'});
$('.UAR_icon_copy, .UAR_icon_paste').css({'width':'16px'});
$(e.target)
.css({
'border':'3px solid green',
'padding':'2px'
});
// notify user
mw.notify( 'Reference copied: ' + dpr + ' ' + clipboard.value, {
title: 'UseAsRef - Info',
type: 'info'
});
// enable paste icons
$('.UAR_icon_paste').css({'pointer-events':'', 'opacity':'1.0'});
}
function paste_ref(e) {
/* reference will include following properties, when available from clipboard:
current date source named_as pub_date archive_url archive_date ref_type
P813 P248 P1810 P577 P1065 P2960 P3865
*/
var ref = new Reference();
ref.init();
// console.log('ref',ref);
ref.save(e.target);
}
function build_up_dialog () {
$( '<div>' )
.attr( 'id', 'UAR_dialog' )
.append(
$( '<p>' )
.attr( 'id', 'UAR_dialog_msg' )
.html('qui messaggio')
)
.dialog( {
dialogClass: 'UAR_dialog',
title: 'UseAsRef' + ' <img class="UAR_icon" src="'+mw.UAR.config.icon_copy+'">'+' <img class="UAR_icon" src="'+mw.UAR.config.icon_paste+'">',
autoOpen: false,
modal: true,
width: 500,
buttons: [ {
id: 'UAR_dialog-button-close',
text: 'Close',
click: function ( event ) {
event.preventDefault();
$( '#UAR_dialog' ).dialog( 'close' );
}
} ]
} );
}
function UAR_config() {
// console.log('UAR_config');
// set up mw.UAR object
// object to paste
mw.UAR.clipboard = {};
// set up UAR config
mw.UAR.config = {};
// icons
mw.UAR.config.icon_warning = 'https://upload.wikimedia.org/wikipedia/commons/d/d9/Warning_sign_font_awesome-red.svg';
mw.UAR.config.icon_ok = 'https://upload.wikimedia.org/wikipedia/commons/0/05/Font_Awesome_5_solid_check-circle.svg';
mw.UAR.config.icon_copy = 'https://upload.wikimedia.org/wikipedia/commons/1/15/Font_Awesome_5_solid_copy.svg';
mw.UAR.config.icon_paste = 'https://upload.wikimedia.org/wikipedia/commons/4/4d/Font_Awesome_5_solid_file-import.svg';
mw.UAR.config.icon_help = '?';
build_up_dialog();
var today = new Date;
if ( today < new Date('2021-10-29') ) {
mw.notify ('This is UseAsRef 2.0.\nPlease visit [[User:Bargioni/UseAsRef]] to discover new features.',
{
title: 'UseAsRef - Info',
autoHide: true,
type: 'info'
}
);
}
var section_for_info;
section_for_info = $( '#identifiers' ).length ? $( '#identifiers' ) : $( '#claims' );
section_for_info.after(' \
<img class="UAR_info" src="'+mw.UAR.config.icon_paste+'"> \
<img class="UAR_info" src="'+mw.UAR.config.icon_copy+'">');
$( '.UAR_info' )
.attr('title','UseAsRef Gadget - Info')
.css({'position':'relative', 'float':'right', 'width':'16px', 'cursor':'pointer'})
.click(function(){
$( '#UAR_dialog_msg' ).html(`<div>
<p>UseAsRef version 2.0 (2021-10-29)</p>
<p><a target="_blank" href="/wiki/User:Bargioni/UseAsRef">More info</a></p>
<p id="UAR_toggle_icons" style="cursor:pointer; color:darkblue; float:right">Hide / Show UseAsRef icons</p>
</div>`);
$( '#UAR_dialog' ).dialog( 'open' );
$('#UAR_toggle_icons').click(function(){ $('.UAR_icon').toggle() });
});
// $('.UAR_info, .UAR_icon').css({'width':'16px', 'border':'3px solid yellow'});
$('.UAR_info, .UAR_icon').css({'width':'16px'});
mw.UAR.config.excluded_ids = ['P212', 'P213', 'P214', 'P236', 'P646', 'P2671', 'P791', 'P957', 'P2333', 'P7859'];
mw.UAR.config.included_statements = {
'P1343' : { // described by source; descritto nella fonte
'value' : ['P805', 'value'], // P805 || value
'property_value' : 'P248',
'named_as' : 'P1810',
'pub_date' : 'P577',
'archive_url' : '',
'archive_date' : '',
'language' : 'P407',
'volume' : 'P478',
'page' : 'P304',
'section' : 'P958',
'ref_type' : '',
'source' : ''
},
'P856' : { // official web site; sito web ufficiale
'value' : 'value',
'property_value' : 'P854',
'named_as' : '',
'pub_date' : 'P577',
'archive_url' : 'P1065',
'archive_date' : 'P2960',
'language' : 'P407',
'volume' : '',
'page' : '',
'section' : '',
'ref_type' : 'Q22137024',
'source' : ''
},
'P1581' : { // official blog; blog ufficiale
'value' : 'value',
'property_value' : 'P854',
'named_as' : '',
'pub_date' : 'P577',
'archive_url' : 'P1065',
'archive_date' : 'P2960',
'language' : 'P407',
'volume' : '',
'page' : '',
'section' : '',
'ref_type' : 'Q41557148',
'source' : ''
},
'P8214' : { // curriculum vitae; curriculum vitae
'value' : 'value',
'property_value' : 'P854',
'named_as' : '',
'pub_date' : 'P577',
'archive_url' : 'P1065',
'archive_date' : 'P2960',
'language' : 'P407',
'volume' : '',
'page' : '',
'section' : '',
'ref_type' : 'Q186649',
'source' : ''
},
'P7014' : { // terms of service URL; URL dei termini di servizio
'value' : 'value',
'property_value' : 'P854',
'named_as' : '',
'pub_date' : 'P577',
'archive_url' : 'P1065',
'archive_date' : 'P2960',
'language' : 'P407',
'volume' : '',
'page' : '',
'section' : '',
'ref_type' : 'Q7214489',
'source' : ''
},
'P7101' : { // privacy policy URL; URL della privacy policy
'value' : 'value',
'property_value' : 'P854',
'named_as' : '',
'pub_date' : 'P577',
'archive_url' : 'P1065',
'archive_date' : 'P2960',
'language' : 'P407',
'volume' : '',
'page' : '',
'section' : '',
'ref_type' : 'Q1999831',
'source' : ''
},
'P973' : { // described at URL; descritto nell'URL
'value' : 'value',
'property_value' : 'P854',
'named_as' : '',
'pub_date' : 'P577',
'archive_url' : 'P1065',
'archive_date' : 'P2960',
'language' : 'P407',
'volume' : '',
'page' : '',
'section' : '',
'ref_type' : 'P3831',
'source' : ''
},
'P5715' : { // Academia.edu profile URL; URL del profilo Academia.edu
'value' : 'value',
'property_value' : 'P854',
'named_as' : '',
'pub_date' : '',
'archive_url' : 'P1065',
'archive_date' : 'P2960',
'language' : 'P407',
'volume' : '',
'page' : '',
'section' : '',
'ref_type' : '',
'source' : 'Q2777905'
},
'P953' : { // full work available at URL; testo completo disponibile all'indirizzo
'value' : 'value',
'property_value' : 'P854',
'named_as' : '',
'pub_date' : '',
'archive_url' : 'P1065',
'archive_date' : 'P2960',
'language' : 'P407',
'volume' : '',
'page' : '',
'section' : '',
'ref_type' : '',
'source' : ''
},
'P2888' : { // exact match; corrisponde esattamente
'value' : 'value',
'property_value' : 'P854',
'named_as' : '',
'pub_date' : '',
'archive_url' : 'P1065',
'archive_date' : 'P2960',
'language' : 'P407',
'volume' : '',
'page' : '',
'section' : '',
'ref_type' : '',
'source' : ''
},
'P8768' : { // online catalog; catalogo online
'value' : 'value',
'property_value' : 'P854',
'named_as' : '',
'pub_date' : '',
'archive_url' : 'P1065',
'archive_date' : 'P2960',
'language' : 'P407',
'volume' : '',
'page' : '',
'section' : '',
'ref_type' : '',
'source' : ''
},
'P1442' : { // image of grave; immagine della sepoltura
'value' : 'value',
'property_value' : 'P10253',
'named_as' : 'P1810',
'pub_date' : '',
'archive_url' : '',
'archive_date' : '',
'language' : '',
'volume' : '',
'page' : '',
'section' : '',
'ref_type' : 'Q203443',
'source' : ''
},
'P1801' : { // commemorative plaque image; immagine di una targa commemorativa
'value' : 'value',
'property_value' : 'P10253',
'named_as' : 'P1810',
'pub_date' : '',
'archive_url' : '',
'archive_date' : '',
'language' : '',
'volume' : '',
'page' : '',
'section' : '',
'ref_type' : 'Q721747',
'source' : ''
},
'external-id' : {
'value' : 'value',
'property_value' : 'original',
'named_as' : 'P1810', // if available
'pub_date' : 'P577',
'archive_url' : '',
'archive_date' : '',
'language' : '',
'volume' : '',
'page' : '',
'section' : '',
'ref_type' : '',
'source' : '???'
}
};
}
function UAR_init() {
// console.log('UAR_init'); // test
var ids = $('.wikibase-statementgrouplistview>div').get(2); // the block containing identifiers
var div_ids = $(ids).find('>div'); // the divs of each identifier; inside each div, more identifiers can exist: .find('a.external')
// get the item in JSON format
var qid = mw.config.get( 'wbEntityId' ); // Qnnn
$.getJSON(`https://www.wikidata.org/wiki/Special:EntityData/${qid}.json`, function(J){
mw.UAR.Qjson = J;
});
// wait for identifiers and item in JSON
var flag = 0;
if ( div_ids.length == 0 || typeof mw.UAR.Qjson == "undefined" && !flag ) {
mw.UAR.UAR_retries++;
if (mw.UAR.UAR_retries >= mw.UAR.UAR_max_retries) {
if (div_ids.length == 0 && typeof mw.UAR.Qjson == "object")
flag = 1; // apply UAR to included statements only
else {
console.error('Unable to activate UAR, too many retries');
return; // stop trying
}
}
if (flag == 0) {
setTimeout(function(){ UAR_init(); }, 200);
return;
}
}
console.log('UseAsRef 2.0: gadget loaded'); // this is not a test :-)
UAR_config();
var item = new Item(mw.UAR.Qjson, qid);
item.append_icons();
$('.UAR_icon_copy').click( function(e) { copy_ref(e) });
$('.UAR_icon_paste').click( function(e) { paste_ref(e) });
}
// ===============
// do not always apply UAR to a Wikidata page
if (document.location.href.indexOf('Property:P') > -1) return;
if (!mw.config.exists('wbEntityId')) return;
mw.UAR = {};
$.when(
mw.loader.using( [
'jquery.spinner', 'jquery.ui', 'mediawiki.api',
'mediawiki.util', 'wikibase.api.RepoApi', 'mediawiki.jqueryMsg'
] )
.then( function () {
mw.UAR.UAR_retries = 0;
mw.UAR.UAR_max_retries = 25;
} ),
$.ready
)
.then( UAR_init );
} ( mediaWiki, wikibase, jQuery ) );
});