מדיה ויקי:סקריפטים/98.js
הערה: לאחר הפרסום, ייתכן שיהיה צורך לנקות את זיכרון המטמון (cache) של הדפדפן כדי להבחין בשינויים.
- פיירפוקס / ספארי: להחזיק את המקש Shift בעת לחיצה על טעינה מחדש (Reload) או ללחוץ על צירוף המקשים Ctrl-F5 או Ctrl-R (במחשב מק: ⌘-R).
- גוגל כרום: ללחוץ על צירוף המקשים Ctrl-Shift-R (במחשב מק: ⌘-Shift-R).
- אדג': להחזיק את המקש Ctrl בעת לחיצה על רענן (Refresh) או ללחוץ על צירוף המקשים Ctrl-F5.
if (!mw.config.get('wgPageName').match(/יחסי\s/)) {
var strings = {
'saved': 'התיאור נשמר',
'change': 'עריכת התיאור',
'add': 'אין תיאור',
'failed': '.העדכון נכשל. אנא עדכנו את התיאור באתר ויקינתונים',
}
mw.loader.using(['mediawiki.util','oojs-ui-core','oojs-ui-windows']).done(function() {
function makeText(description, colon) {
return (description && colon && ' :' || '') +
(description && description.length > 40 ? description.substr(0, 30) + '...' : description || '');
}
function modifyWD(itemId, newDescription){
var wikidataApi = new mw.ForeignApi('https://www.wikidata.org/w/api.php')
wikidataApi.postWithToken('csrf',{
action: 'wbsetdescription', id:itemId, value:newDescription, language:'he', baseRevId:0,
}).done(function(d){
if (d.success) {
// mw.notify(strings['saved']);
$('#wd-description')
.text(newDescription)
.attr({title: newDescription})
.css('background-color', '');
}
}).fail(function() {
mw.notify(strings['failed']);
});
}
function askAndModify(q, d, item){
OO.ui.prompt( q, {size:'large', textInput: { value: d }})
.done( function ( result ) {
if ( result == null ) {
console.log( 'WIKIDATA_SCRIPT: canceled' );
} else {
modifyWD(item.id, result)
}
} );
}
var title = mw.config.get('wgPageName');
$.ajax({
url: '//www.wikidata.org/w/api.php',
data: {
'format': 'json',
'action': 'wbgetentities',
'sites': mw.config.get('wgDBname'),
'titles': title,
'props': 'descriptions',
'languages': mw.config.get('wgPageContentLanguage')
},
dataType: 'jsonp',
success: function(data) {
if (data.success) {
var lang = mw.config.get('wgPageContentLanguage');
if (Object.keys(data.entities).length == 0){
console.log('WIKIDATA_SCRIPT: entity not exists')
return
}
if (Object.keys(data.entities).length != 1){
console.log('WIKIDATA_SCRIPT: ambiguous entity') // more than one entity with this name on wikidata
return
}
var item = data.entities[Object.keys(data.entities)[0]];
if (!item.descriptions) {
console.log('WIKIDATA_SCRIPT: no wikidata item associated')
return;
}
if(item.descriptions[lang]){
var description = item.descriptions[lang].value
console.log('WIKIDATA_SCRIPT: description already exists in wikidata: ', description)
return $('.mw-indicators')
.prepend(
$('<div class="mw-indicator" id="wd-description" style="border:1px solid;padding:0 1em"></div>')
.text( makeText(description) )
.attr('title', description)
.click(function(){
askAndModify(strings['change'], $(this).attr('title'), item)
})
);
} else {
var firstSectionText = $('#mw-content-text p:first', mw.util.$content).text(); // $mw.util.$content includes sitenotice and such, which is confusing. it shouldn't
var match = / (?:הוא|היא|היה|הייתה) (.+?\ישראלית?)/.exec(firstSectionText);
var newDescription = match && match[1] || '';
console.log('newDescription', newDescription)
$('.mw-indicators').prepend(
$('<div class="mw-indicator" id="wd-description" style="border:1px solid;padding:0 1em"></div>')
.text(strings['add'] + makeText(newDescription, true))
.attr('title', newDescription)
.css('background-color', 'coral')
.click(function(){
askAndModify(strings['add'], $(this).attr('title'), item)
})
)
}
}
}
});
});
}