# MediaWiki:Gadget-BotTools.js

From faraghaib
Jump to navigation Jump to search

Note: After publishing, you may have to bypass your browser's cache to see the changes.

- Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
- Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
- Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5.

    $(function() {
    	function loadPage(title, callback) {
    		new mw.Api().get({
    			action: 'query',
    			prop: 'revisions',
    			titles: title,
    			rvprop: 'content',
    			format: 'json'
    		}).then(function(data) {
    			try {
    				callback($.map(data.query.pages, function(value) {
    					return value;
    				})[0].revisions[0]['*']);
    			} catch (exception) {
    				callback('');
    			}
    		}).catch(function(data) {
    			callback($.map(data.query.pages, function(value) {
    				return value;
    			})[0].revisions[0]);
    		});
    	}

    	function savePage(title, text, summary, callback) {
    		return new mw.Api().post({
    			action: 'edit',
    			title: title,
    			text: text,
    			summary: summary,
    			minor: '',
    			token: mw.user.tokens.get('csrfToken')
    		}).then(function(data) {
    			if (data.error && data.error.info) {
    				mw.notify(data.error.info);
    			} else {
    				callback();
    			}
    		}).catch(function(data) {
    			mw.notify(data);
    		});
    	}

    	function CloseTalkPage(text) {
    		text = text.replace("<!-- ↓ پایین این خط - جدید در بالا ↓ -->", "<!-- ↓ پایین این خط - جدید در بالا ↓ -->\n{{ویکی‌پدیا:گزیدن نگاره برگزیده/" + mw.config.get('wgTitle') + "}}");
    		mw.notify('الگو پیشنهاد برگزیدگی به صفحه افزوده شد!');
    		return text;
    	}

    	function loadSavePageRefresh(page, replaceCallback, summary) {
    		loadPage(page, function(text) {
    			savePage(page, replaceCallback(text), summary, function() {
    				//window.location = mw.util.getUrl(page) + '?action=purge';
    			});
    		});
    	}

    	function addBotLink2(botName, id, tooltip, note, botUrl, imageUrl) {
    		$(mw.util.addPortletLink(
    			'p-cactions',
    			'#',
    			botName,
    			id,
    			tooltip
    		)).click(function(e) {
    			e.preventDefault();
    			mw.notify(note, {
    				autoHide: false
    			});
    			$.get(new mw.Uri(botUrl).extend({
    				enwiki: mw.config.get('wgTitle'),
    			}).toString()).then(function(result) {
    				mw.notify(result.msg, {
    					autoHide: false
    				});
    				loadSavePageRefresh("ویکی‌پدیا:گزیدن نگاره برگزیده",
    					function(text) {
    						return CloseTalkPage(text)
    					}, '/' + '*افزودن نظرخواهی جدید*' + '/');
    				var uri = new mw.Uri();
    				uri.query = {
    					title: "ویکی‌پدیا:گزیدن نگاره برگزیده/" + mw.config.get('wgTitle'),
    					action: 'edit',
    					redlink: 1,
    					withJS: 'MediaWiki:AHK2.js',
    					summary: 'ایجاد صفحه نظرخواهی بر اساس ابزار',
    					text: result.page_content,
    				};
    				uri.path = mw.config.get('wgScriptPath') + '/index.php';
    				window.location = uri.toString();
    			})
    		}).find('a').prepend(imageUrl ? [$('<img>', {
    			src: imageUrl,
    			height: 20,
    			width: 20
    		}), ' '] : '');
    	}

    	function addBotLink(botName, id, tooltip, note, botUrl, imageUrl) {
    		$(mw.util.addPortletLink(
    			'p-cactions', '#', botName, id, tooltip
    		)).click(function(e) {
    			e.preventDefault();
    			mw.notify(note, { autoHide: false });
    			var pageTitle=mw.config.get('wgTitle')
    			if (id === 'ca-r-replace') {//اگر ابزار جایگزینی پیوند بود
    				alert('ویرایش صرفاً به قصد جایگزینی [[تغییرمسیر]] > [[صفحهٔ هدف]]، عمل پسندیده‌ای نیست. لطفاً از این ابزار فقط در جهت اصلاح پیوندهای نادرست به درست استفاده کنید.')
    				var link1 = prompt("برای [[پیوند۱]] > [[پیوند۲]] عنوان پیوند مبدأ یا پیوند۱ چیست؟");
    				var link2 = prompt("برای [[پیوند۱]] > [[پیوند۲]] عنوان پیوند مقصد یا پیوند۲ چیست؟");
    				if (link1.length > 1 && link2.length > 1){
    					var reResion = prompt("چرا می‌خواهید [["+link1+"]] > [["+link2+"]] جایگزین شود؟");
    					if (reResion.length <= 1){
    						alert('دلیل جایگزینی را مشخص نکردید!')
    						var reResion = prompt("چرا می‌خواهید [["+link1+"]] > [["+link2+"]] جایگزین شود؟");
    						if (reResion.length <= 1){return;}
    					}
    					pageTitle=link1+'---'+link2+'---'+reResion
    				}else{
    					alert('پیوند۱ یا پیوند۲ تعریف مشخص نشده‌اند در نتیجه عمل جایگزینی انجام نمی‌شود!')
    				}
    			}
    			$.get(new mw.Uri(botUrl).extend({
    				title: pageTitle,
    				fawiki: mw.config.get('wgTitle').replace(/ /g,'_'),
    				user: 'کاربر:' + mw.config.get('wgUserName'),
    				namespace: mw.config.get('wgNamespaceNumber')
    			}).toString()).then(function(result) {
    				mw.notify(result.msg, {
    					autoHide: false
    				});
    				var resultmsg = result.msg;

    				var uri = new mw.Uri(),
    					pageTitle;
    				if (id === 'ca-eval' && mw.config.get('wgNamespaceNumber') === 0) {
    					pageTitle = 'بحث:' + mw.config.get('wgPageName')
    				} else if (id === 'ca-articleneeded') {
    					pageTitle = resultmsg;
    				} else {
    					pageTitle = mw.config.get('wgPageName')
    				}
    				uri.query = {
    					'title': pageTitle,
    					'diff': 'cur',
    					'oldid': 'prev'
    				};
    				uri.path = mw.config.get('wgScriptPath') + '/index.php';
    				if (id !== 'ca-articlefilling' && id !== 'ca-filling'&& id !== 'ca-navebox' && id !== 'ca-pipe'){
    					window.location = uri.toString();
    				}else if (id !== 'ca-r-replace'){
    					mw.notify('ربات شروع به کار کرد.');
    				}else{
    					setTimeout(function() {
    						var uri = new mw.Uri()
    						uri.query = {
    							'title': pageTitle
    						};
    						uri.path = mw.config.get('wgScriptPath') + '/index.php';
    						window.location = uri.toString();
    					}, 8000);//تاخیر در به‌روز کردن صفحه تا ربات در این مدت تعدادی صفحه به رده افزوده باشد.
    				}
    			});
    		}).find('a').prepend(imageUrl ? [$('<img>', {
    			src: imageUrl,
    			height: 20,
    			width: 20
    		}), ' '] : '');
    	}

    	// If the user is blocked don't show these tools
    	var TheQuery='//fa.wikipedia.org/w/api.php?format=json&action=query&list=users&usprop=blockinfo&ususers='+mw.config.get('wgUserName')
    	var blocked;

    	$.getJSON(TheQuery).then(function (query) {
    		if (!query || !query.query) { return; }
    		query = query.query;
    		var user = query.users[0];
    		try {
    			blocked = typeof user.blockedby != "undefined";
    		} catch(e) {
    			return;
    		}
    	}).then(function() {
    		if (blocked) {
    			// alert( 'Yes')
    			return;
    		}
    	});

    	if (mw.config.get('wgNamespaceNumber') === 0 &&
    		$('[class=new][title^="پرونده:"]').length !== 0 &&
    		$('#catlinks a[href="/wiki/%D8%B1%D8%AF%D9%87:%D8%B5%D9%81%D8%AD%D9%87%E2%80%8C%D9%87%D8%A7%DB%8C_%D8%AF%D8%A7%D8%B1%D8%A7%DB%8C_%D9%BE%DB%8C%D9%88%D9%86%D8%AF_%D8%AE%D8%B1%D8%A7%D8%A8_%D8%A8%D9%87_%D9%BE%D8%B1%D9%88%D9%86%D8%AF%D9%87"]').length !== 0) {
    		// رده:صفحه‌های_دارای_پیوند_خراب_به_پرونده
    		$.get('//rezabot.toolforge.org/uploadfairuse.php', { title: mw.config.get('wgPageName') });
    		//mw.notify('درخواست بارگذاری تصویر منصفانهٔ ناموجود داده شد.', { autoHide: false })
    	};

    	if (mw.config.get('wgNamespaceNumber') === 14) {
    		// ابزار افزودن | به اعضای رده‌ها
    		addBotLink(
    			' پیش‌فرض رده',
    			'ca-pipe',
    			'افزودن پیش‌فرض به اعضای رده برای نمایش بهتر آنها در رده',
    			'افزودن پیش‌فرض‌رده به رده‌ها آغاز شد، لطفاً کمی صبر کنید.',
    			'//rezabot.toolforge.org/piping.php',
    			'//upload.wikimedia.org/wikipedia/commons/8/80/Ic_flip_48px.svg'
    		);
    		addBotLink(
    			'پرکردن رده (با ربات رده‌همسنگ)',
    			'ca-filling',
    			'افزودن صفحه به رده به کمک ربات رده همسنگ',
    			'ربات رده همسنگ شروع به کار کرد',
    			'//rezabot.toolforge.org/fillcat.php',
    			'//upload.wikimedia.org/wikipedia/commons/f/fb/Ic_archive_48px.svg'
    		);
    		addBotLink(
    			'فهرست صفحات مورد نیاز',
    			'ca-articleneeded',
    			'تهیه فهرست صفحاتی که در این رده موجودند و در ویکی‌فا وجود ندارند',
    			'ربات در حال تهیه فهرست صفحات در زیرصفحهٔ کاربری شماست.',
    			'//rezabot.toolforge.org/neededarticle.php',
    			'//upload.wikimedia.org/wikipedia/commons/f/fc/Ic_assignment_48px.svg'
    		);
    		if (mw.config.get('wgUserGroups').indexOf('autopatrolled') > -1 || mw.config.get('wgUserGroups').indexOf('sysop') > -1) {
    			// ابزار انتقال رده فقط برای مدیران و گشت‌زن‌ها فعال شود
    			importScript('MediaWiki:Gadget-CategoryMove.js');
    		}
    	}
    	if (mw.config.get('wgNamespaceNumber') === 10) {
    		// ابزار افزودن ناوباکس
    		addBotLink(
    			' افزودن ناوباکس',
    			'ca-navebox',
    			'افزودن الگوی ناوباکس به مقالات',
    			'افزودن ناوباکس به مقالات آغاز شد، لطفاً کمی صبر کنید.',
    			'//rezabot.toolforge.org/addnavbox.php',
    			'//upload.wikimedia.org/wikipedia/commons/3/3f/Ic_add_circle_48px.svg'
    		);
    	}
    	if (mw.config.get('wgNamespaceNumber') === 0) {
    		// ابزار افزودن جعبه همسنگ
    		// ابزار درجه‌بندی مقالات در بحث مقاله وپ:آفلاین
    		addBotLink(
    			' جعبه و نگارخانه',
    			'ca-box',
    			'افزودن جعبه اطلاعات و نگارخانه از ویکی‌پدیای انگلیسی',
    			'شروع دریافت جعبه و نگارخانه، لطفاً کمی صبر کنید.',
    			'//rezabot.toolforge.org/getbox.php',
    			'//upload.wikimedia.org/wikipedia/commons/c/c9/Ic_crop_original_48px.svg'
    		);
    	   //ابزار رده همسنگ
    		addBotLink(
    			'رده همسنگ',
    			'ca-articlefilling',
    			'افزودن صفحه به رده به کمک ربات رده همسنگ',
    			'ربات رده همسنگ شروع به کار کرد',
    			'//rezabot.toolforge.org/fillcatArticle.php',
    			'//upload.wikimedia.org/wikipedia/commons/f/fb/Ic_archive_48px.svg'
    		);
    	   //افزودن خصوصیت به آیتم ویکی‌داده
    		addBotLink(
    			'به‌روز کردن آیتم ویکی‌داده',
    			'ca-wikidataitem',
    			'افزودن خصوصیت به آیتم ویکی‌داده و رده مقاله ویکی‌فا (فقط برای مقاله انسان)',
    			'ربات به‌روز کردن آیتم ویکی‌داده شروع به کار کرد',
    			'//rezabot.toolforge.org/wikidataitem.php',
    			'//upload.wikimedia.org/wikipedia/commons/0/0d/Ic_recent_actors_48px.svg'
    		);
    		// ویکی‌سازی
    		addBotLink(
    			' ویکی‌سازی',
    			'ca-wikify',
    			'ابزاری رباتیک برای ویکی‌سازی متن مقاله‌ها بر پایهٔ عنوان مقالات موجود',
    			'ربات ویکی‌سازی شروع به کار کرد لطفاً کمی صبر کنید.',
    			'//rezabot.toolforge.org/wikifyer.php',
    			'//upload.wikimedia.org/wikipedia/commons/a/a5/Ic_fullscreen_36px.svg'
    		);
    		// ابزار اصلاح منابع ناموجود
    		if ($('#catlinks a[href="/wiki/%D8%B1%D8%AF%D9%87:%D8%B5%D9%81%D8%AD%D9%87%E2%80%8C%D9%87%D8%A7%DB%8C_%D8%A8%D8%A7_%DB%8C%D8%A7%D8%AF%DA%A9%D8%B1%D8%AF_%D8%AE%D8%B1%D8%A7%D8%A8_(%D9%81%D9%82%D8%AF%D8%A7%D9%86_%D9%85%D9%86%D8%A8%D8%B9)"]').length !== 0) {
    			//فقط برای مقاله‌های عضو رده:صفحه‌های با یادکرد خراب (فقدان منبع)
    			addBotLink(
    				'منبع ناموجود',
    				'ca-citaion',
    				'ابزاری برای اصلاح منبع ناموجود بر پایهٔ ویکی‌پدیای انگلیسی',
    				'اصلاح منبع ناموجود شروع شد، لطفاً کمی صبر کنید.',
    				'//rezabot.toolforge.org/missedref.php',
    				'//upload.wikimedia.org/wikipedia/commons/c/c7/Ic_comment_48px.svg'
    			);
    		}
    		// ابزار گروه‌بندی ارجاع‌ها
    		addBotLink(
    			' گروه‌بندی ارجاع',
    			'ca-ref-group',
    			'گروه‌بندی ارجاع‌ها',
    			'کد گروه‌بندی ارجاع‌ها شروع شد، لطفاً کمی صبر کنید.',
    			'//rezabot.toolforge.org/groupingRef.php',
    			'//upload.wikimedia.org/wikipedia/commons/c/ca/Ic_games_48px.svg'
    		);
    		// ابزار ربات زیباسازی
    		/*
    		addBotLink(
    			' زیباسازی',
    			'ca-cosmetic',
    			'زیباسازی و ابرابزار',
    			'زیباسازی و اعمال کد ابرابزار شروع شد، لطفاً کمی صبر کنید.',
    			'//rezabot.toolforge.org/cosmetic.php'
    		);*/
    	}
    	if (mw.config.get('wgNamespaceNumber') === 0 || mw.config.get('wgNamespaceNumber') === 1) {
    		// ابزار درجه‌بندی مقالات در بحث مقاله وپ:آفلاین
    		addBotLink(
    			' ارزشیابی',
    			'ca-eval',
    			'ابزار ارزشیابی مقاله‌ها توسط ربات در بحث مقاله (وپ:آفلاین)',
    			'شروع ارزشیابی، لطفاً کمی صبر کنید.',
    			'//rezabot.toolforge.org/ranking.php',
    			'//upload.wikimedia.org/wikipedia/commons/2/22/Ic_iso_48px.svg'
    		);

    		//ابزار رفع ابهام پیوند از صفحات
    		mw.util.addPortletLink('p-cactions', 'https://dispenser.info.tm/~dispenser/cgi-bin/dablinks.py?page=' + encodeURI(mw.config.get('wgPageName'))+'&lang=fa', 'رفع ابهام پیوندها','P-disambig', 'رفع ابهام پیوندها', '');
    	}
    	// ابزار حذف پیوند به بیرون اسپم

    	if ((mw.config.get('wgUserGroups').indexOf('autopatrolled') > -1 || mw.config.get('wgUserGroups').indexOf('sysop') > -1) && mw.config.get('wgNamespaceNumber') > -1) {
    		// شرط برای کاربری که گشت خودکار دارد
    		// ابزار حذف الگوهای ناموجود
    		addBotLink(
    			' الگوهای حذف‌شده',
    			'ca-r-temp',
    			'برداشتن الگوهای حذف‌شده از مقاله',
    			'شروع حذف الگو از مقاله، لطفاً کمی صبر کنید.',
    			'ptbot.toolforge.org/api/q_remove_templates.php',
    			'//upload.wikimedia.org/wikipedia/commons/d/d2/Ic_remove_circle_48px.svg'
    		);
    		/*
    		// ابزار جایگزینی پیوند
    		addBotLink(
    			'جایگزینی پیوند',
    			'ca-r-replace',
    			'جایگزینی پیوند۱ با پیوند۲',
    			'شروع جایگزینی پیوند، لطفاً کمی صبر کنید.',
    			'rezabot.toolforge.org/replacelink.php',
    			'//upload.wikimedia.org/wikipedia/commons/8/8f/Replace_icon.px.svg'
    		);*/
    	}
    	if (mw.config.get('wgNamespaceNumber') === 6) {
    		// ابزار نامزد کردن تصاویر برگزیده
    		addBotLink2(
    			'برگزیدن نگاره',
    			'ca-eval',
    			'ابزار نامزد کردن نگاره‌ها در وپ:گنب',
    			'شروع نامزد کردن، لطفاً کمی صبر کنید.',
    			'//dexbot.toolforge.org/anab.php',
    			'//upload.wikimedia.org/wikipedia/commons/2/29/Ic_folder_special_48px.svg'
    		);
    	}
    	// Permanent link
    	if (mw.config.get('wgNamespaceNumber') > -1) {
    		// Do not turn this into <a> element, it will break Visual Editor
    		$('#t-permalink').append(' ', $('<span>', {
    			style: "font-size:12px;color:#36c",
    			html: "&#10012;"
    		}).click(function (e) {
    			prompt('پیوند پایدار', '[[Special:PermaLink/' + mw.config.get('wgRevisionId') + ']]');
    		})).hover(function() {
    			$(this).css('cursor', 'pointer');
    			$(this).css('cursor', 'auto');
    		});
    	}
    });

Retrieved from "https://en.faraghaib.ir/w/index.php?title=MediaWiki:Gadget-BotTools.js&oldid=70"