مدیاویکی:Gadget-CatMaker.js
پرش به ناوبری
پرش به جستجو
نکته: پس از ذخیره کردن ممکن است برای دیدن تغییرات نیاز باشد که حافظهٔ نهانی مرورگر خود را پاک کنید.
- فایرفاکس / سافاری: کلید Shift را نگه دارید و روی دکمهٔ Reload کلیک کنید، یا کلیدهای Ctrl-F5 یا Ctrl-R را با هم فشار دهید (در رایانههای اپل مکینتاش کلیدهای ⌘-R)
- گوگل کروم: کلیدهای Ctrl+Shift+R را با هم فشار دهید (در رایانههای اپل مکینتاش کلیدهای ⌘-Shift-R)
- اینترنت اکسپلورر: کلید Ctrl را نگهدارید و روی دکمهٔ Refresh کلیک کنید، یا کلیدهای Ctrl-F5 را با هم فشار دهید
- اپرا: بروید به Menu → Settings (Opera → Preferences on a Mac) and then to Privacy & security → Clear browsing data → Cached images and files.
/*jslint browser: true, indent: 2*/ /*global mediaWiki, jQuery*/ /*! * @author User:Ebraminio, User:Yamaha5 */ (function ($, mw) { 'use strict'; //mw.notify('نسخهٔ '+'۳'); 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('editToken') }).then( function (data) { if (data.error && data.error.info) { mw.notify(title + ' انجام نشد: ' + data.error.info); } else { callback(); } return data; }, function (data) { mw.notify(title + ' انجام نشد: ' + data); return data; } ); } function faWikiName(title) { 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) { try { return $.grep($.map(data.query.pages, function (x) { return x; })[0].langlinks, function (x) { return x.lang === 'fa'; })[0]['*']; } catch (ignore) { } }); } function catParents(title) { 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) { 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: 'enwiki', 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) { return faWikiName(enlink).then(function (x) { if (x) { mw.notify('صفحهٔ معادل قبلاً وجود داشت'); return; } return catParents(enlink).then(function (x) { if (!x) { mw.notify('صفحهٔ "' + enlink + '" در ویکی مبدأ وجود ندارد یا دارای رده نیست'); 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'); return createPage( falink, catText, 'ایجاد ردهٔ همسنگ [[:en:' + enlink + ']] با ابزار رده\u200cساز', function () { mw.notify('ساخت ' + falink + ' با موفقیت انجام شد.'); } ); }); }); }); } function init(e) { e.preventDefault(); $('<div>' + '<div style="width: 40em">درخواست\u200cهای ساخت رده را در خطوط جداگانه مانند مثال زیر وارد کنید:<br>رده۱@Cateogry1<br>رده۲@Cateogry2<br>رده۳@Cateogry3</div><br><B>نکات مهم:</B><br>۱-ردهها باید شیوهنامه <a href="//fa.wikipedia.org/w/index.php?title=ویکیپدیا:ترجمه_ردهها" target="ویکیپدیا:ترجمه ردهها">ویکیپدیا:ترجمه_ردهها</a> را رعایت کنند.<br>۲-ردههایی که تازه ساخته میشوند نیازی به درونریزی ندارد و این ردهها پس از چند ساعت به صورت رباتیک به صفحههای مرتبط، اضافه میگردند.' + '<textarea style="width: 100%; background-color: white;" placeholder="رده۱@Cateogry1" id="catmakerinput" rows="7"></textarea>' + '</div>' ).dialog({ modal: true, width: 700, buttons: [{ id: 'catmaker-button-import', text: 'ساخت رده', click: function () { var formInput = $('#catmakerinput').val(); if (formInput === '') { mw.notify('لطفاً فرم درخواست را به درستی پر کنید'); return; } $.when.apply(null, $.map(formInput.split('\n'), function (x) { var req = x.replace(/رده:/, '').replace(/Category:/i, '').split('@'); if (req.length !== 2) { return; } return startCat('رده:' + req[0], 'Category:' + req[1]); })).then(function () { mw.notify('ساخت رده\u200cها به پایان رسید، لطفاً بررسی کنید.'); window.location = '/wiki/Special:Contributions/' + mw.config.get('wgUserName'); }); } }] }); } mw.loader.using(['jquery.ui.dialog'], function () { $(function () { mw.util.addCSS('#t-catmaker { font-weight: bold; }'); $(mw.util.addPortletLink('p-tb-label', '#', 'رده\u200cساز', 't-catmaker', 'ساخت رده به صورت خودکار')).click(init); }); }); }(jQuery, mediaWiki));