Bikarhêner:Balyozxane/Gadget-CatMaker.js
Zanibe: Piştî weşandinê, ji bo dîtina guhartinan dibe ku hewce be "cache"ya geroka xwe paqij bikî.
- Firefox / Safari: Pê li Shift û Reload bike an jî Ctrl-F5 an Ctrl-R bike (ji bo Mac: ⌘-R)
- Google Chrome: Pê li Ctrl-Shift-R (ji bo Mac: ⌘-Shift-R) bike
- Internet Explorer / Edge: Pê li Ctrl û Refresh bike, an jî Ctrl-F5 bike
- Opera: Pê li Ctrl-F5 bike.
/*jslint browser: true, indent: 2*/
/*global mediaWiki, jQuery*/
/*!
* @author User:Ebraminio, User:Yamaha5
* imported from ckb.wiki
*/
(function ($, mw) {
'use strict';
//mw.notify('version '+'3');
function createPage(title, text, summary, callback) {
return new mw.Api().post({
action: 'edit',
title: title,
text: text,
summary: summary,
createonly: '',
minor: '',
token: mw.user.tokens.get('csrfToken')
}).then(
function (data) {
if (data.error && data.error.info) {
mw.notify(title + ' çênebû: ' + data.error.info);
} else {
callback();
}
return data;
},
function (data) {
mw.notify(title + ' çênebû: ' + data);
return data;
}
);
}
function faWikiName(title) {
return $.ajax({
url: '//en.wiktionary.org/w/api.php',
data: {
action: 'query',
prop: 'langlinks',
titles: title,
redirects: 1,
format: 'json',
lllimit: 500
},
dataType: 'jsonp'
}).then(function (data) {
try {
return $.grep($.map(data.query.pages, function (x) { return x; })[0].langlinks, function (x) {
return x.lang === 'ku';
})[0]['*'];
} catch (ignore) { }
});
}
function catParents(title) {
return $.ajax({
url: '//en.wiktionary.org/w/api.php',
data: {
action: 'query',
prop: 'categories',
titles: title,
clshow: '!hidden',
cllimit: 500,
format: 'json'
},
dataType: 'jsonp'
}).then(function (data) {
try {
return $.map($.map(data.query.pages, function (x) { return x; })[0].categories, function (x) {
return x.title;
});
} catch (ignore) { }
});
}
function getWikidataEntity(entitle) {
return new mw.Api({ ajax: { url: '//www.wikidata.org/w/api.php' } }).get({
action: 'wbgetentities',
format: 'json',
sites: 'enwikt',
titles: entitle,
normalize: 'true',
origin: window.location.protocol + '//' + window.location.hostname
}).then(function (x) { return $.map(x.entities, function (x) { return x; })[0]; });
}
function commonsCatFromEntity(entity) {
try {
return entity.claims.P373[0].mainsnak.datavalue.value;
} catch (ignore) { }
}
function startCat(falink, enlink) {
enlink=enlink.replace(/\_/g, ' ');
return faWikiName(enlink).then(function (x) {
if (x) {
mw.notify('Çênebû: rûpel berê jixwe hebû');
return;
}
return catParents(enlink).then(function (x) {
if (!x) {
mw.notify('rûpela "' + enlink + '"di en.wîkiyê de tine');
return;
}
return $.when.apply(null, $.map(x, function (y) {
return faWikiName(y);
})).then(function () {
var catText = $.map(arguments, function (x) {
return '[[' + x + ']]';
}).join('\n') + '\n[[en:' + enlink + ']]';
catText = catText.replace(/\[\[undefined\]\]/g, '');
catText = catText.replace(/\n\n/g, '\n');
catText=catText .trim();
catText= '\{\{katbike}}' + catText;
return createPage(
falink,
catText,
'bi [[Bikarhêner:Balyozxane/Gadget-CatMaker.js|CatMaker]]ê wekheva [[:en:' + enlink + ']] hat çêkirin',
function () {
mw.notify(falink + ': Hat çêkirin');
}
);
});
});
});
}
function init(e) {
e.preventDefault();
$('<div>' +
'<div style="width: 40em">Ne hewce ye di destpêkê de Kategorî: û Category: binivîsin. Tenê navê kategoriyê bes e. Divê di navbera kategoriyên cuda de rêzek hebe. Nimûne:<br>Kategorî1@Category1<br>Kategorî2@Category2<br>Kategorî3@Category3</div>' +
'<textarea style="width: 100%; background-color: white;" placeholder="Kategorî:1@Cateogry:1" id="catmakerinput" rows="7"></textarea>' +
'</div>'
).dialog({
modal: true,
width: 700,
buttons: [{
id: 'catmaker-button-import',
text: 'proceed',
click: function () {
var formInput = $('#catmakerinput').val();
if (formInput === '') { mw.notify('Xeletiyek di formê de heye'); return; }
$.when.apply(null, $.map(formInput.split('\n'), function (x) {
var req = x.split('@');
if (req.length !== 2) { return; }
return startCat('Kategorî:' + req[0], 'Category:' + req[1]);
})).then(function () {
mw.notify('Category creation finished, you can discuss it now.');
window.location = '/wiki/Special:Contributions/' + mw.config.get('wgUserName');
});
}
}]
});
}
mw.loader.using(['jquery.ui'], function () {
$(function () {
mw.util.addCSS('#t-catmaker { font-weight: normal; }');
$(mw.util.addPortletLink('p-tb', '#', 'Cat-creator', 't-catmaker', 'automatically create cats')).click(init);
});
});
}(jQuery, mediaWiki));