ميدياويكي:Gadget-CatMaker.js
ملاحظة: بعد الحفظ، قد يلزمك إفراغ الكاش لرؤية التغييرات.
/*global mw, $, prompt, location*/
/*jslint indent: 2*/
/*!
* @author User:Ebraminio, User:Yamaha5
* Translated to Arabic by User:Elph
*/
$(function () {
//mw.notify('إصدار '+'۲.۰۲');
mw.loader.using(['jquery.ui'], function () {
var formFind = '<div id="catmaker" title="إنشاء تلقائي للتصنيفات"><form>';
formFind += '<p>تُستخدم هذه الأداة لإنشاء تصنيف أو عدة تصانيف معادلة للإنجليزية.</p>';
formFind += '<p>التصنيف الإنجليزي <input type="text" id="enlink1" size="30" value="Category:" dir="LTR"/> ';
formFind += ' التصنيف العربي <input type="text" id="falink1" size="30" value="تصنيف:"/></p>';
formFind += '<p>التصنيف الإنجليزي <input type="text" id="enlink2" size="30" value="Category:" dir="LTR"/> ';
formFind += ' التصنيف العربي <input type="text" id="falink2" size="30" value="تصنيف:"/></p>';
formFind += '<p>التصنيف الإنجليزي <input type="text" id="enlink3" size="30" value="Category:" dir="LTR"/> ';
formFind += ' التصنيف العربي <input type="text" id="falink3" size="30" value="تصنيف:"/></p>';
formFind += '<p>التصنيف الإنجليزي <input type="text" id="enlink4" size="30" value="Category:" dir="LTR"/> ';
formFind += ' التصنيف العربي <input type="text" id="falink4" size="30" value="تصنيف:"/></p>';
formFind += '<p>التصنيف الإنجليزي <input type="text" id="enlink5" size="30" value="Category:" dir="LTR"/> ';
formFind += ' التصنيف العربي <input type="text" id="falink5" size="30" value="تصنيف:"/></p>';
formFind += '</form></div>';
var messageFind = $(formFind).appendTo('#content');
messageFind.dialog({
autoOpen: false,
modal: true,
width: 660,
buttons: [{
id: 'catmaker-button-import',
text: 'إنشاء التصنيف',
click: function () {
var enlink1 = document.getElementById("enlink1").value.trim();
var falink1 = document.getElementById("falink1").value.trim();
var enlink2 = document.getElementById("enlink2").value.trim();
var falink2 = document.getElementById("falink2").value.trim();
var enlink3 = document.getElementById("enlink3").value.trim();
var falink3 = document.getElementById("falink3").value.trim();
var enlink4 = document.getElementById("enlink4").value.trim();
var falink4 = document.getElementById("falink4").value.trim();
var enlink5 = document.getElementById("enlink5").value.trim();
var falink5 = document.getElementById("falink5").value.trim();
var PurgePage=true;
if (falink2 !=='تصنيف:' ||falink3 !=='تصنيف:'||falink4 !=='تصنيف:'||falink5 !=='تصنيف:'){
PurgePage=false;
}
if (enlink1 !=='Category:' && falink1 !=='تصنيف:'){
mw.notify('بدء إنشاء '+falink1+' !');
StartCreating(falink1,enlink1,PurgePage);
}
setTimeout(function(){
if (enlink2 !=='Category:' && falink2 !=='تصنيف:'){
mw.notify('بدء إنشاء '+falink2+' !');
StartCreating(falink2,enlink2,PurgePage);
}
if (enlink3 !=='Category:' && falink3 !=='تصنيف:'){
mw.notify('بدء إنشاء '+falink3+' !');
StartCreating(falink3,enlink3,PurgePage);
}
if (enlink4 !=='Category:' && falink4 !=='تصنيف:'){
mw.notify('بدء إنشاء '+falink4+' !');
StartCreating(falink4,enlink4,PurgePage);
}
if (enlink5 !=='Category:' && falink5 !=='تصنيف:'){
mw.notify('بدء إنشاء '+falink5+' !');
StartCreating(falink5,enlink5,PurgePage);
}
},1000);
/*
setTimeout(function(){
if (PurgePage === false){
location.reload();
}},15000);*/
}
}]
});
var CatMakerLink = mw.util.addPortletLink('p-views', '#', 'منشئ \u200cالتصانيف', 'ca-catmaker', 'إنشاء تلقائي للتصنيفات');
$(CatMakerLink).click(show);
});
function show() {
$('div#catmaker').dialog('open');
}
function StartCreating(falink,enlink,PurgePage) {
if ((enlink=='Category:'||falink=='تصنيف:')&& PurgePage){
alert ('يرجى كتابة اسم التصنيفات!');
return;
}
catParents(enlink).done(function (x) {
$.when.apply(null, $.map(x, function (y) {
return faWikiName(y);
})).done(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');
savePage(falink,
CatText,
'إنشاء تصنيفات باستخدام منشئ \u200cالتصانيف',
function () {
mw.notify('تم إنشاء '+falink+' بنجاح. انتظر قليلا.',{ autoHide: false});
if (PurgePage){
window.location = mw.util.getUrl(falink) + '?action=purge';
}
}
);
});
});
}
function savePage(title, text, summary, callback) {
new mw.Api().create( title,
{ summary: summary },
text
).done(function (data) {
if (data.error && data.error.info) {
mw.notify(data.error.info);
} else {
callback();
}
}).fail(function (data) {
mw.notify(data);
});
}
function faWikiName(title) {
'use strict';
return $.ajax({
url: '//en.wikipedia.org/w/api.php',
data: {
action: 'query',
prop: 'langlinks',
titles: title,
redirects: 1,
format: 'json',
lllimit: 500
},
dataType: 'jsonp'
}).then(function (data) {
return $.grep($.map(data.query.pages, function (x) {
return x;
})[0].langlinks, function (x) {
return x.lang === 'ar';
})[0];
}).then(function (x) {
if (x){
return x['*'];
}
});
}
function catParents(title) {
'use strict';
return $.ajax({
url: '//en.wikipedia.org/w/api.php',
data: {
action: 'query',
prop: 'categories',
titles: title,
clshow: '!hidden',
cllimit: 500,
format: 'json'
},
dataType: 'jsonp'
}).then(function (data) {
return $.map($.map(data.query.pages, function (x) {
return x;
})[0].categories, function (x) {
return x.title;
});
});
}
}(jQuery, mediaWiki));