misaungayay:Xiplus/js/quick-link-wikidata-szywp.js
azihen:izikuzay misuped kisu kanca palawpes saazihay-sakaluk kabilil-miala ngay maazih sabaluhay sumad.
- Firefox / Safari: pecec Shift sa sapecec miliyaw lisimeten , saca pecec Ctrl-F5 saca Ctrl-R (Mac sa ku ⌘-R)
- Google Chrome: pecec Ctrl-Shift-R (Mac sa ku ⌘-Shift-R)
- Internet Explorer: pecec Ctrl sa sapecec miliyaw lisimeten , saca pecec Ctrl-F5
- Opera: taayaw pili’ → setin (i Mac ku Opera → setin tu kanamuhan ) nazikuzan sa katukuh aca midimut kasikazan & kazahkezan → palawpes azih kalunasulitan → kabilil-miala tuway a zunga atu tangan
javascript:
(function() {
if (mw.config.get('wgArticleId') === 0) {
return;
}
if ($.inArray(mw.config.get('wgNamespaceNumber'), [0, 4, 10, 14, 828]) === -1) {
/* Enabled on main, wikipedia, template, category namespaces only. */
return;
}
if (mw.config.get('wgDiffOldId') !== null) {
/* When viewing diff, no wikibase link */
return;
}
if ($('#t-wikibase').length > 0) {
/* Disabled for linked pages */
return;
}
var wdsummary = 'via [[:w:szy:User:Xiplus/js/quick-link-wikidata-szywp|QLWszywp]]';
function LinkData(localurl, sitelang, sitecode) {
var defaultpagename = window.getSelection().toString();
if (defaultpagename === '') {
defaultpagename = mw.config.get('wgTitle');
}
var pagename = prompt('輸入頁面名稱', mw.config.get('wgCanonicalNamespace') + ':' + defaultpagename);
if (pagename === null) {
mw.notify('動作已取消');
return;
}
/* 取得對應條目的名字 */
var localapi = new mw.ForeignApi(localurl);
localapi.get({
action: 'query',
format: 'json',
prop: 'pageprops',
titles: pagename,
redirects: 'yes',
converttitles: 'yes',
}).done(function(data) {
var hasitem = false;
var hastitle = false;
var title;
var dataid;
if (data.query && data.query.pages) {
for (var pageid in data.query.pages) {
var item = data.query.pages[pageid];
if (item.missing === '') {
continue;
}
hastitle = true;
title = item.title;
if (item.pageprops && item.pageprops.wikibase_item) {
hasitem = true;
dataid = item.pageprops.wikibase_item;
}
}
}
if (!hastitle) {
mw.notify('找不到對應條目,可能是因為尚未建立或者名稱不一致。');
} else {
/* 加入連結 */
var api = new mw.ForeignApi('https://www.wikidata.org/w/api.php');
if (!hasitem) {
if (!confirm('對應項目沒有維基數據。是否添加?')) {
mw.notify('已取消建立項目。');
return;
}
var targetsite = sitecode;
api.postWithEditToken({
action: 'wbeditentity',
'new': 'item',
'data': JSON.stringify({
labels: [{
language: sitelang,
value: title,
}, {
language: 'szy',
value: mw.config.get('wgPageName').replace(/_/g, ' '),
}],
sitelinks: [{
site: targetsite,
title: title,
}, {
site: mw.config.get('wgDBname'),
title: mw.config.get('wgPageName'),
}],
}),
summary: wdsummary,
}).done(function() {
mw.notify('成功建立新的維基數據項目。');
location.reload();
}).fail(function() {
mw.notify('存取維基數據時發生錯誤。');
});
} else {
api.get({
'action': 'wbgetentities',
'format': 'json',
'ids': dataid,
'redirects': 'yes',
'props': 'sitelinks',
'sitefilter': 'szywiki'
}).done(function(data) {
if (data.entities[dataid].missing === '') {
mw.notify('該維基數據項目已被刪除,動作已取消');
return;
}
if (data.entities[dataid].sitelinks.hasOwnProperty('szywiki')) {
if (!confirm('該項目已連結到本維基的頁面「' + data.entities[dataid].sitelinks.szywiki.title + '」,您要改為連結到本頁面嗎?')) {
mw.notify('動作已取消');
return;
}
}
api.postWithEditToken({
action: 'wbsetsitelink',
id: dataid,
linksite: mw.config.get('wgDBname'),
linktitle: mw.config.get('wgPageName'),
summary: wdsummary,
}).done(function(data) {
if (data.success) {
mw.notify('成功連結至現有維基數據項目。');
location.reload();
} else {
mw.notify('存取維基數據時發生錯誤。');
}
}).fail(function() {
mw.notify('存取維基數據時發生錯誤。');
});
});
}
}
}).fail(function() {
mw.notify('取得條目名稱時發生錯誤。');
});
}
var wikis = [
{ text: '連結到中維', url: 'https://zh.wikipedia.org/w/api.php', lang: 'zh', sitecode: 'zhwiki' },
{ text: '英維', url: 'https://en.wikipedia.org/w/api.php', lang: 'en', sitecode: 'enwiki' },
];
wikis.forEach(wiki => {
var link = mw.util.addPortletLink('p-namespaces', '#', wiki.text);
$(link).on('click', function() {
LinkData(wiki.url, wiki.lang, wiki.sitecode);
})
});
}
)();