// নথির জন্য :en:User:Mr.Z-man/closeAFD দেখুন /* The MIT License (MIT)  Copyright (c) 2013 Mr.Z-man  এটি বাংলা উইকির জন্য অনুবাদ করা হয়েছে। সেইসাথে বাংলা উইকির উপযোগী করতে স্ক্রিপ্টে সামান্য কিছু কোড পরিবর্তন করা হয়েছে। কখনো হালনাগাদের দরকার হলে সতর্কতা অবলম্বন করুন। ইংরেজি :en:User:Mr.Z-man/closeAFD2.js থেকে কপি-পেস্ট (অনুলিপি-প্রতিলেপন) করে হালনাগাদ করবেন না। সেই অংশ বা লাইন হালনাগাদ দরকার শুধু সেই অংশ বা লাইনটুকু হালনাগাদ করুন  ## সম্পূর্ণ কোড নয়## /  mw.loader.using( ['mediawiki.util', 'mediawiki.api', 'jquery.ui'], function () { 	if (mw.config.get('wgNamespaceNumber') == 4 &&  	mw.config.get('wgTitle').indexOf('নিবন্ধ অপসারণের প্রস্তাবনা/') == 0 &&  	mw.config.get('wgTitle').indexOf('উইকিপিডিয়া:নিবন্ধ অপসারণের প্রস্তাবনা/লগ/20' == -1) ) { 		$(document).ready( function () { 			mw.util.addPortletLink( 'p-cactions', '#', 'বন্ধকরণ', 'ca-closeAFD', 'অপসারণ প্রস্তাবনা বন্ধ করুন' ); 			mw.util.addPortletLink( 'p-cactions', '#', 'তালিকাভুক্তি', 'ca-relistAFD', 'অপসারণ প্রস্তাবনা পুনঃতালিকাভুক্ত করুন' );	 		} );	 		 		CloseAFD = { 			relisting: false, 			action: false, 			speedy: false, 			NAC: false, 			api: false, 			actionmap: { 				'delete':'অপসারণ করা হল', 				'keep':'রেখে দেয়া হল', 				'nocon':'ঐকমত্য হয়নি', 				'merge':, //বাক্য গঠন ঠিক রাখতে এটি খালি রাখা প্রয়োজন 				'redir':, //বাক্য গঠন ঠিক রাখতে এটি খালি রাখা প্রয়োজন 				'delandred': //বাক্য গঠন ঠিক রাখতে এটি খালি রাখা প্রয়োজন 			}, 			token: false, 			titles: [], 			wikitext: false, 			actionsStarted: { 				'notdoneyet':0, 				'afdpage':0, 				'delete':0, 				'edit':0, 				'edittalk':0, 				'redirects':0 			}, 			actionsFinished: { 				'notdoneyet':0, 				'afdpage':0, 				'delete':0, 				'edit':0, 				'edittalk':0, 				'redirects':0 			}, 			months: ["জানুয়ারি", "ফেব্রুয়ারি", "মার্চ", "এপ্রিল", "মে", "জুন", "জুলাই", "আগস্ট", "সেপ্টেম্বর", "অক্টোবর", "নভেম্বর", "ডিসেম্বর"], 			debate: mw.config.get('wgTitle').substr(mw.config.get('wgTitle').indexOf('/')+1), 			logs: {} 		}; 		 		if (jQuery.inArray( "sysop",  mw.config.get('wgUserGroups') ) == -1) { 			CloseAFD.NAC = true; 		} 		 		// Handler for the close link in the top bar 		CloseAFD.close = function() { 			$( "#closeAFD-dialog" ).show().dialog( { title: ""+mw.config.get('wgTitle')+ " বন্ধ করছেন", 				width:400, 				buttons: [ { text: "প্রস্তাবনা বন্ধ করুন", click: CloseAFD.startCloseAction },  				{ text: "বাতিল", click: function() { 					$( this ).dialog( "close" ) 				} }] 			} ); 			// We get the token now just to make the code less convoluted later 			CloseAFD.api = new mw.Api(); 			params = { 				'action':'query', 				'meta':'tokens', 				'type': 'csrf' 			} 			CloseAFD.api.get(params) 			.done ( function (data) { 				CloseAFD.token = data['query']['tokens']['csrftoken']; 			}) 			return false; 		}  		// Handler for the relist link in the top bar 		CloseAFD.relist = function() { 			CloseAFD.relisting = true 			$( "#closeAFD-relist-dialog" ).show().dialog( { title: ""+mw.config.get('wgTitle')+" পুনঃতালিকাভুক্তি", 				width:600, 				buttons: [ { text: "পুনঃতালিকাভুক্ত করুন", click: CloseAFD.startRelistAction },  				{ text: "বাতিল", click: function() { 					$( this ).dialog( "close" ) 				} }] 			} ); 			$('#closeAFD-relist-number').val( $('.xfd_relist').length + 1 ); 			$('#closeAFD-relist-logs').text("অপসারণ প্রস্তাবনার লগ আনা হচ্ছে..."); 			CloseAFD.api = new mw.Api(); 			params = { 				'action':'tokens', 				'type':'edit' 			} 			CloseAFD.api.get(params) 			.done ( function (data) { 				CloseAFD.token = data['tokens']['edittoken']; 			}) 			params = { 				'action':'query', 				'list':'embeddedin', 				'eifilterredir':'nonredirects', 				'einamespace':'4', 				'eilimit':'500', 				'eititle':mw.config.get('wgPageName') 			} 			CloseAFD.api.get(params) 			.done ( function (data) { 				var oldlogtitle = ; 				for (var i=0; i<data['query']['embeddedin'].length; i++) { 					if (data['query']['embeddedin'][i]['title'].indexOf('উইকিপিডিয়া:নিবন্ধ অপসারণের প্রস্তাবনা/') != -1) { 						oldlogtitle = data['query']['embeddedin'][i]['title']; 					} 				} 				function convert(str) { 				    var mystr = str.toString(); 				    var outj; //জাভাস্ক্রিপ্ট অব্যাহতি হেক্স  				   var outj1;  				   var be = new Array();  				   be['1'] = "১";   				   be['2'] = "২";   				   be['3'] = "৩";   				   be['4'] = "৪";   				   be['5'] = "৫";  				   be['6'] = "৬";  				   be['7'] = "৭";  				   be['8'] = "৮";  				   be['9'] = "৯";  				   be['0'] = "০";  				   outj1 = "";  				    for (var i = 0; i < mystr.length; i++) {  				       var ch = mystr.substr(i, 1);  				       outj = be[ch];  				       outj1 += outj;  				   }  				   return outj1;  				} 				var today = new Date(); 				var year = today.getUTCFullYear().toString(); 				var day = today.getUTCDate().toString(); 				var month = CloseAFD.months[today.getUTCMonth()]; 				var newlogtitle = 'উইকিপিডিয়া:নিবন্ধ অপসারণের প্রস্তাবনা/'+convert(year)+' '+month; 				var logs = $(''); 				var oldlog = $('').text("পুরনো লগ: ") 				var oll = $('').attr('href', mw.config.get('wgArticlePath').replace('$1', oldlogtitle.replace(/_/g, ' '))) 				.text(oldlogtitle) 				$(oldlog).append(oll) 				$(logs).append(oldlog); 				var newlog = $('').text("নতুন লগ: ") 				var nll = $('').attr('href', mw.config.get('wgArticlePath').replace('$1', newlogtitle.replace(/_/g, ' '))) 				.text(newlogtitle) 				$(newlog).append(nll) 				$(logs).append(newlog); 				$('#closeAFD-relist-logs').text(); 				$('#closeAFD-relist-logs').append(logs); 				CloseAFD.logs['old'] = oldlogtitle; 				CloseAFD.logs['new'] = newlogtitle; 			}) 			.fail( function (error) { 				$('#closeAFD-relist-logs').css('color', 'red').text("ত্রুটি: "+error); 			}) 			return false; 		} 		 		// Check if we're completely done 		CloseAFD.checkDone = function() { 			if (CloseAFD.actionsStarted['notdoneyet'] == CloseAFD.actionsFinished['notdoneyet'] && 			CloseAFD.actionsStarted['afdpage'] == CloseAFD.actionsFinished['afdpage'] && 			CloseAFD.actionsStarted['delete'] == CloseAFD.actionsFinished['delete'] && 			CloseAFD.actionsStarted['edit'] == CloseAFD.actionsFinished['edit'] && 			CloseAFD.actionsStarted['edittalk'] == CloseAFD.actionsFinished['edittalk'] && 			CloseAFD.actionsStarted['redirects'] == CloseAFD.actionsFinished['redirects']) { 				elem = $('#closeAFD-action5'); 				if (CloseAFD.relisting) { 					elem = $('#closeAFD-relist-done'); 				} 				$(elem).css('color', 'darkgreen').css('font-weight', 'bold').text("সম্পন্ন – "); 				link = $("").attr('href', "//bn.wikipedia.org/wiki/"+mw.config.get('wgPageName')+"?action=purge") 				.text("পাতা পুনঃলোড করুন").css('color', '#0645AD'); 				$(elem).append(link); 			}  		} 		 		// Edit a page 		// pageid/title - page to edit 		// newxtext - new text for page 		// summary - edit summary 		// callback - function to call on success 		// errorElem - element to put an error message in 		// incr - Variable to increment 		CloseAFD.edit = function(pageid, title, newtext, summary, callback, incr) { 			if (/^\s*$/.test(newtext)) { // making sure we don't accidentally blank the page 				if (CloseAFD.relisting) { 					$('#closeAFD-relist-error').css('color', 'red').text('"'+title+'" সম্পাদনা করার সময় ত্রুটি'); 				} else { 					$('#closeAFD-error').css('color', 'red').text('"'+title+'" সম্পাদনা করার সময় ত্রুটি') 				} 				CloseAFD.actionsFinished[incr]++; 				CloseAFD.checkDone(); 				return false; 			} 			CloseAFD.actionsStarted[incr]++; 			editparams = {'action':'edit', 				'watchlist':'nochange' 			}; 			if (pageid) { 				editparams['pageid'] = pageid; 			} else if (title) { 				editparams['title'] = title; 			} 			editparams['text'] = newtext; 			editparams['summary'] = summary; 			editparams['token'] = CloseAFD.token;			 			CloseAFD.api.post(editparams) 			.fail( function (error) { 				if (CloseAFD.relisting) { 					$('#closeAFD-relist-error').css('color', 'red').text("ত্রুটি: "+error); 				} else { 					$('#closeAFD-error').css('color', 'red').text("ত্রুটি: "+error); 				} 				CloseAFD.actionsFinished[incr]++; 				CloseAFD.checkDone(); 			}) 			.done(function() { 				CloseAFD.actionsFinished[incr]++; 				callback() 				CloseAFD.checkDone(); 			})			 		} 		 		// Parameters same as .edit 		CloseAFD.deletePage = function(pageid, title, summary, callback, incr) { 			CloseAFD.actionsStarted[incr]++; 			delparams = {'action':'delete', 				'reason':summary, 				'token':CloseAFD.token, 				'watchlist':'nochange' 			}; 			if (pageid) { 				delparams['pageid'] = pageid; 			} else if (title) { 				delparams['title'] = title; 			} 			CloseAFD.api.post(delparams) 			.fail( function (error) { 				$('#closeAFD-error').css('color', 'red').text("ত্রুটি: "+error); 				CloseAFD.actionsFinished[incr]++; 				CloseAFD.checkDone(); 			}) 			.done(function(data) { 				CloseAFD.actionsFinished[incr]++; 				callback(data) 				CloseAFD.checkDone(); 			}) 		} 		 		// This gets called when you click the Relist button 		CloseAFD.startRelistAction = function() { 			$('#closeAFD-relist-comment').prop('disabled', true); 			$('#closeAFD-relist-number').prop('disabled', true); 			$('#closeAFD-relist-old-status').text('লগ আনা হচ্ছে...'); 			$('#closeAFD-relist-afd-status').text('অপসারণের প্রস্তাবনার পাতা আনা হচ্ছে...'); 			params = { 				'action':'query', 				'prop':'revisions', 				'rvprop':'content', 				'titles':CloseAFD.logs['old']+'|'+CloseAFD.logs['new']+'|'+mw.config.get('wgPageName'), 				'indexpageids':'1' 			} 			CloseAFD.api.get(params) 			.done ( function (data) { 				var oldlogtext = ; 				var newlogtext = ; 				var afdtext = ; 				for (var i=0; i<data['query']['pageids'].length; i++) { 					pageid = data['query']['pageids'][i]; 					title = data['query']['pages'][pageid]['title']; 					if (title == CloseAFD.logs['old']) { 						oldlogtext = data['query']['pages'][pageid]['revisions'][0]['*']; 					} else if (title == CloseAFD.logs['new']) { 						newlogtext = data['query']['pages'][pageid]['revisions'][0]['*']; 					} else { 						afdtext = data['query']['pages'][pageid]['revisions'][0]['*']; 					} 				}	 				// Check the old log first because it's the easiest way to ensure no one already relisted it 				var t = RegExp.quote(mw.config.get('wgPageName').replace(/_/g, ' ')) 				var patt = new RegExp("", 'i' ); 				var res = patt.exec(oldlogtext) 				if (res) { 					$('#closeAFD-relist-old-status').css('color', 'red').text("অপসারণ প্রস্তাবনা ইতিমধ্যেই তালিকাভুক্ত করা হয়েছে!"); 					$('#closeAFD-relist-afd-status').text(); 					return false; 				} 				// Now we also need to check that the AfD isn't closed 				if (afdtext.indexOf('xfd-closed') != -1) { 					$('#closeAFD-relist-afd-status').css('color', 'red').text("অপসারণ প্রস্তাবনা ইতিমধ্যেই বন্ধ করা হয়েছে!"); 					$('#closeAFD-relist-old-status').text(); 					return false; 				} 				// Okay, now we can actually make the edits 				$('#closeAFD-relist-old-status').text('লগ সম্পাদিত হচ্ছে...'); 				$('#closeAFD-relist-afd-status').text('প্রস্তাবনার পাতা সম্পাদনা করা হচ্ছে...'); 				summary = ""+mw.config.get('wgPageName').replace(/_/g, ' ')+" পুনঃতালিকাভুক্তকরণ" 				// New log: 				var newlogreg = new RegExp("", "i"); 				newlogtext = newlogtext.replace(newlogreg, "\n{"+"{"+mw.config.get('wgPageName').replace(/_/g, ' ')+"}}"); 				// Old log: 				var oldlogreg = new RegExp("(\\{\\{"+t+"\\}\\})", 'i' ); 				oldlogtext = oldlogtext.replace(oldlogreg, ""); 				// Afd page: 				var relistcomment = false; 				if ($('#closeAFD-relist-comment').val().length != 0) { 					relistcomment = $('#closeAFD-relist-comment').val(); 				} 				var relistnumber = $('#closeAFD-relist-number').val().toString(); 				afdtext += '\n{'+'{subst:relist'; 				if (relistcomment) { 					if (relistcomment.indexOf('~~'+'~') == -1) { 						relistcomment += ' ~~'+'~~'; 					} 					afdtext += '|'+relistcomment+'|'+relistnumber; 				} else { 					afdtext += '|2='+relistnumber; 				} 				afdtext += '}}'; 				afdtext = afdtext.replace(/উইকিপিডিয়া:নিবন্ধ অপসারণের প্রস্তাবনা\/\d{4} \D{4,9}#/i, CloseAFD.logs['new']+"#"); 				CloseAFD.edit(, CloseAFD.logs['new'], newlogtext, summary, function(data) { 					$('#closeAFD-relist-new-status').css('color', 'darkgreen').text("নতুন লগ হালনাগাদ হয়েছে"); 				}, 'edit') 				CloseAFD.edit(, CloseAFD.logs['old'], oldlogtext, summary, function(data) { 					$('#closeAFD-relist-old-status').css('color', 'darkgreen').text("পুরান লগ হালনাগাদ হয়েছে"); 				}, 'edit')	 				CloseAFD.edit(, mw.config.get('wgPageName'), afdtext, summary, function(data) { 					$('#closeAFD-relist-afd-status').css('color', 'darkgreen').text("অপসারণ প্রস্তাবনার পাতা সম্পাদিত হয়েছে"); 				}, 'edit') 			}) 			.fail( function (error) { 				$('#closeAFD-relist-old-status').text(); 				$('#closeAFD-relist-afd-status').css('color', 'red').text("ত্রুটি: "+error); 			})			 		} 		 		// This gets called when you click the Close button 		CloseAFD.startCloseAction = function() { 			$( this ).dialog( "close" ); 			$( "#closeAFD-closestatus-dialog" ).show().dialog( { title: ""+mw.config.get('wgTitle')+" বন্ধকরণ", 				width:400, 				close: function( event, ui ) { CloseAFD.reset(); } 			} ); 			var selected = $('input[name="closeAFD-action"]:checked'); 			if (typeof $(selected).val() == "undefined") { 				$( "#closeAFD-closestatus-dialog" ).dialog( "close" ); 				return false; 			} 			var patt = /closeAFD-([a-z]+)/; 			CloseAFD.action = patt.exec($(selected).attr('id'))[1]; 			CloseAFD.speedy = $('#closeAFD-speedy').prop('checked'); 			// Get wikitext of AFD page 			$('#closeAFD-AFDpage').text("অপসারণের প্রস্তাবনার পাতা আনা হচ্ছে..."); 			var params = { 				'action':'query', 				'prop':'revisions', 				'titles':mw.config.get('wgPageName'), 				'rvprop':'timestamp|content' 			} 			CloseAFD.api.get(params) 			.fail( function (error) { 				$('#closeAFD-error').text("ত্রুটি: "+error); 			}) 			.done( function (data) { 				var pageid = mw.config.get('wgArticleId').toString(); 				CloseAFD.wikitext = data['query']['pages'][pageid]['revisions'][0]['*'] 				// Check to make sure it's not already closed 				if (CloseAFD.wikitext.indexOf('xfd-closed') != -1) { 					$('#closeAFD-AFDpage').css('color', 'red').text("অপসারণ প্রস্তাবনা ইতিমধ্যেই বন্ধ করা হয়েছে!"); 					return false; 				} 				// Get the articles involved 				var patt = /\{\{la\|([^\}]+)\}\}/gim 				var res = patt.exec(CloseAFD.wikitext); 				while (res != null) { 					CloseAFD.titles.push(res[1]); 					res = patt.exec(CloseAFD.wikitext) 				} 				// Can't find any templates? Use the subpage 				if (CloseAFD.titles.length == 0) { 					CloseAFD.titles.push(CloseAFD.debate.replace(/ \(\w+ মনোনয়ন\)/, )  ); 				} 				// More than 1 title, verify we want them all 				if (CloseAFD.titles.length > 1) { 					CloseAFD.checkMultipleTitles(); 				} else { 					CloseAFD.finishCloseAction(); 				} 			}) 		} 		 		// If we find multiple titles check that we want to apply the result to all of them 		CloseAFD.checkMultipleTitles = function() { 			$('#closeAFD-multititles').append($('<span>').css('color', '#ED4200') 			.html('টীকা: একাধিক নিবন্ধ মনোনীত করা হয়েছে বলে মনে হচ্ছে। যেটিতে আপনি বন্ধকরণ কর্ম প্রয়োগ করতে চান না সেটি থেকে টিকচিহ্ন তুলে নিন, এরপর "অব্যাহত" ক্লিক করুন')); 			for (var i=0; i<CloseAFD.titles.length; i++) { 				var c = ''+ 				'' 				$('#closeAFD-multititles').append(c); 				var href = mw.config.get('wgArticlePath').replace('$1', CloseAFD.titles[i].replace(/_/g, ' ')); 				$('#closeAFD-tlabel-'+i.toString()).append($('<a>').attr('href', href).text(CloseAFD.titles[i])); 			} 			$('#closeAFD-multititles').append($('')); 			$('#closeAFD-multititles').append($('<a>').css('color', 'darkblue').css('font-weight','bold').text('অব্যাহত').attr('id', 'closeAFD-multititles-ready').attr('href','#')); 			$('#closeAFD-multititles').slideDown(); 			$('#closeAFD-multititles-ready').on('click', function() { 				var num = 0; 				for (var i=0; i<CloseAFD.titles.length; i++)  { 					if (!$('#closeAFD-title-'+i.toString()).prop('checked') ) { 						CloseAFD.titles[i] = false; 					} else { 						num++ 					} 				} 				if (num == 0) { 					$( "#closeAFD-closestatus-dialog" ).dialog( "close" ); 					return false; 				} 				$('#closeAFD-multititles').slideUp(); 				CloseAFD.finishCloseAction(); 				return false; 			}) 		} 		 		// Now that we know what we want to do and where, actually do it 		CloseAFD.finishCloseAction = function() { 			// Assemble the closing statement 			var resultstr = "'''"; 			var summary = ; 			if (CloseAFD.speedy) { 				resultstr += 'দ্রুত '; 				summary += 'দ্রুত ' 			} 			if (CloseAFD.action != 'other') { 				resultstr += CloseAFD.actionmap[CloseAFD.action]; 				summary += CloseAFD.actionmap[CloseAFD.action]; 				if (CloseAFD.action == 'merge') { 					resultstr += ''+ $('#closeAFD-target').val() + '-এ একত্রীকরণ করা হল'; 					summary += ''+ $('#closeAFD-target').val() + '-এ একত্রীকরণ'; 				} else 				if (CloseAFD.action == 'redir') { 					resultstr += ''+ $('#closeAFD-target').val() + '-এ পুনর্নির্দেশ করা হল'; 					summary += ''+ $('#closeAFD-target').val() + '-এ পুনর্নির্দেশ'; 				} else 				if (CloseAFD.action == 'delandred') { 					resultstr += 'অপসারণ ও '+ $('#closeAFD-target').val() + '-এ পুনর্নির্দেশ করা হল'; 					summary += 'অপসারণ ও '+ $('#closeAFD-target').val() + '-এ পুনর্নির্দেশ'; 				}					 			} else { 				resultstr += $("#closeAFD-other-action").val(); 				summary += $("#closeAFD-other-action").val(); 			} 			var editsum = "প্রস্তাবনা বন্ধকরণ, ফলাফল হচ্ছে "+summary 			resultstr += "। "; 			resultstr += $('#closeAFD-rationale').val(); 			if (CloseAFD.NAC) { 				resultstr += ' {'+'{subst:nac}}'; 				editsum+= ' (অ-প্রশাসক কর্তৃক বন্ধকরণ)'; 			} 			resultstr += ' ~~'+'~~\n'; 			// Remove the template and add the closing templates 			var newtext = CloseAFD.wikitext.replace(/\{\{s*?এএফডি বন্ধ করার সময় এই টেমপ্লেটটি বাতিল করুন\s*?\|.*?\}\}/, ); 			newtext = '{'+'{subst:নিঅপ্র শীর্ষ}}'+resultstr+newtext+'\n{{subst:নিঅপ্র নিচ}'+'}' 			$('#closeAFD-AFDpage').text("সংরক্ষিত হচ্ছে "+mw.config.get('wgTitle')+'...'); 			CloseAFD.actionsStarted['notdoneyet'] = 1; 			CloseAFD.edit(mw.config.get('wgArticleId').toString(), , newtext, editsum, function (data) { 				$('#closeAFD-AFDpage').css('color', 'darkgreen').text(mw.config.get('wgTitle')+" বন্ধ করা হয়েছে।"); 			}, 'afdpage'); 			// Get the nomination date 			var params = { 				'action':'query', 				'prop':'revisions', 				'pageids':mw.config.get('wgArticleId'), 				'rvprop':'timestamp', 				'rvdir':'newer', 				'rvlimit':'1' 			} 			CloseAFD.api.get(params) 			.fail( function (error) { 				$('#closeAFD-error').text("ত্রুটি: "+error); 			}) 			.done( function (result) { 				timestamp = result['query']['pages'][mw.config.get('wgArticleId').toString()]['revisions'][0]['timestamp']; 				var d = new Date(timestamp); 				var nomdate = d.getUTCDate().toString()+' '+CloseAFD.months[d.getUTCMonth()]+' '+d.getUTCFullYear().toString(); 				var d2 = new Date(); 				var curdate = d2.getUTCDate().toString()+' '+CloseAFD.months[d2.getUTCMonth()]+' '+d2.getUTCFullYear().toString(); 				// Set edit summary 				var editsum = ''+mw.config.get('wgPageName').replace(/_/g, ' ')+'' 				// Figure out which pages/talk pages exist 				if (CloseAFD.action == 'delete' || CloseAFD.action == 'delandred') { 					$('#closeAFD-action2').text('অপসারণ করার জন্য পাতা খোঁজা হচ্ছে...'); 				} else { 					$('#closeAFD-action1').text('সম্পাদনা করার জন্য পাতা খোঁজা হচ্ছে...'); 				} 				var tlist = ; 				for (var i=0; i<CloseAFD.titles.length; i++) { 					if (CloseAFD.titles[i]) { 						p = CloseAFD.titles[i]; 						t = 'Talk:'+CloseAFD.titles[i]; 						tlist+=p+'|'+t 						if (i != (CloseAFD.titles.length-1)) { 							tlist+='|'; 						} 					} 				} 				params = { 					'action':'query', 					'titles':tlist, 					'indexpageids': '1', 					'prop':'revisions', 					'rvprop':'content', 					'redirects':'1' 				} 				CloseAFD.api.get(params) 				.fail( function (error) { 					$('#closeAFD-error').text("ত্রুটি: "+error); 				}) 				.done( function (data) { 					if (CloseAFD.action == 'delete' || CloseAFD.action == 'delandred') { 						$('#closeAFD-action2').text('পাতা অপসারিত হচ্ছে...'); 					} else { 						$('#closeAFD-action1').text('পাতা সম্পাদিত হচ্ছে...'); 						$('#closeAFD-action3').text('আলাপ পাতা ট্যাগ করা হচ্ছে...') 					} 				// Now figure out what to do with the article 					switch(CloseAFD.action) { 					case 'delete': 						// Delete the pages that exist 						for (var i=0; i<data['query']['pageids'].length; i++) { 							id = parseInt(data['query']['pageids'][i]); 							if (id > 0) { 								CloseAFD.deletePage(id, , editsum, function() { 									if (CloseAFD.actionsStarted['delete'] == CloseAFD.actionsFinished['delete']) { 										$('#closeAFD-action2').css('color', 'darkgreen').text("পাতা(গুলি) অপসারিত হয়েছে"); 									} 								}, 'delete'); 							} 						} 						break; 					case 'merge': 					case 'keep': 					case 'nocon': 					case 'other': 						var mtitles = [] 						for (var i=0; i<data['query']['pageids'].length; i++) { 							var id = parseInt(data['query']['pageids'][i]); 							var p = data['query']['pages'][id.toString()]; 							if (p['ns'] == 1) { 								var wikitext = 								if (parseInt(id) > 0) { 									wikitext = p['revisions'][0]['*']; 								} 								CloseAFD.oldafd(p['title'], editsum, summary, wikitext, nomdate); 							} else if (p['ns'] == 0 && id > 0) { 								var newtext = p['revisions'][0]['*'].replace(/\s*/m, ); 								if (CloseAFD.action == 'merge') { 									var target = $('#closeAFD-target').val() 									newtext = '{'+'{নিঅপ্র- এতে একত্রীকরণ|'+target+'|'+CloseAFD.debate+'|'+curdate+'}}\n' + newtext 									CloseAFD.edit(id, , newtext, editsum, function(data) { 										if (CloseAFD.actionsStarted['edit'] == CloseAFD.actionsFinished['edit']) { 											$('#closeAFD-action1').css('color', 'darkgreen').text("একত্রীকরণ ট্যাগ যোগ হয়েছে"); 										} 									}, 'edit') 									mtitles.push(p['title']) 								} else { 									CloseAFD.edit(id, , newtext, editsum, function(data) { 										if (CloseAFD.actionsStarted['edit'] == CloseAFD.actionsFinished['edit']) { 											$('#closeAFD-action1').css('color', 'darkgreen').text("অপসারণ প্রস্তাবনার ট্যাগ সরানো হয়েছে"); 										} 									}, 'edit') 								} 							}  						} 						if (CloseAFD.action == 'merge') { 							CloseAFD.mergefrom(mtitles, editsum, curdate) 						} 						break; 					case 'delandred': 						// Delete the non-talk pages 						for (var i=0; i<data['query']['pageids'].length; i++) { 							var id = parseInt(data['query']['pageids'][i]); 							var p = data['query']['pages'][id.toString()]; 							if (p['ns'] == 0 && id > 0) { 								CloseAFD.deletePage(id, , editsum, function(data) { 									var target = $('#closeAFD-target').val(); 									var text = '#পুনর্নির্দেশ '+target+' {'+'{একটি পুনর্নির্দেশ}'+'}' 									var title = data['delete']['title']; 									CloseAFD.edit(, title, text, editsum, function(d) { 										if (CloseAFD.actionsStarted['edit'] == CloseAFD.actionsFinished['edit']) { 											$('#closeAFD-action1').css('color', 'darkgreen').text("পাতা পুনর্নির্দেশিত"); 										} 									}, 'edit') 									if (CloseAFD.actionsStarted['delete'] == CloseAFD.actionsFinished['delete']) { 										$('#closeAFD-action2').css('color', 'darkgreen').text("পাতা অপসারিত"); 									} 								}, 'delete'); 							} else if (p['ns'] == 1) { 								var wikitext = 								if (p > 0) { 									wikitext = p['revisions'][0]['*']; 								} 								CloseAFD.oldafd(p['title'], editsum, summary, wikitext, nomdate); 							} 						} 						break; 					case 'redir': 						var target = $('#closeAFD-target').val(); 						var text = '#পুনর্নির্দেশ '+target+' {'+'{একটি পুনর্নির্দেশ}'+'}' 						for (var i=0; i<data['query']['pageids'].length; i++) { 							var id = parseInt(data['query']['pageids'][i]); 							var p = data['query']['pages'][id.toString()]; 							if (p['ns'] == 1) { 								var wikitext =  								if (id > 0) { 									wikitext = p['revisions'][0]['*']; 								} 								CloseAFD.oldafd(p['title'], editsum, summary, wikitext, nomdate); 							} else if (p['ns'] == 0) { 								CloseAFD.edit(, p['title'], text, editsum, function(data) { 									if (CloseAFD.actionsStarted['edit'] == CloseAFD.actionsFinished['edit']) { 										$('#closeAFD-action1').css('color', 'darkgreen').text("পাতা(গুলি) পুনর্নির্দেশিত"); 									} 								}, 'edit') 							}  						} 						break; 					} 					// Delete redirects 					if ($('#closeAFD-delredir').prop('checked')) { 						$('#closeAFD-action4').text('অপসারণের জন্য পুনর্নির্দেশ(গুলি) খোঁজা হচ্ছে...'); 						for (var i=0; i<data['query']['pageids'].length; i++) { 							id = data['query']['pageids'][i]; 							t = data['query']['pages'][id]['title'] 							var total = 0 							params = { 								'action':'query', 								'prop':'redirects', 								'titles':t, 								'rdlimit':'100', 								'indexpageids':'1' 							} 							CloseAFD.api.get(params) 							.fail( function (error) { 								$('#closeAFD-error').css('color', 'red').text("ত্রুটি: "+error); 							}) 							.done(function(res) { 								var pid = res['query']['pageids'][0]; 								if (res['query']['pages'][pid]['redirects']) { 									var redirs = res['query']['pages'][pid]['redirects'] 									for (var j=0; j<redirs.length; j++) { 										var pageid = redirs[j]['pageid']; 										CloseAFD.deletePage(pageid, , editsum, function() { 											if (CloseAFD.actionsStarted['redirects'] == CloseAFD.actionsFinished['redirects']) { 												$('#closeAFD-action4').css('color', 'darkgreen').text("পুনর্নির্দেশ(গুলি) অপসারিত হয়েছে"); 											} 										}, 'redirects'); 									} 									total+=redirs.length; 								} 								if (total == 0 && i == data['query']['pageids'].length) { 									$('#closeAFD-action4').css('color', 'darkgreen').text("অপসারণের জন্য কোন পুনর্নির্দেশ নেই"); 								} 							}) 						} 						CloseAFD.actionsFinished['notdoneyet'] = 1; 						CloseAFD.checkDone(); 					} else { 						CloseAFD.actionsFinished['notdoneyet'] = 1; 						CloseAFD.checkDone(); 					} 				}); 			}); 		}		  		// Add the Afd-merge-from template to the talk page of the target article 		CloseAFD.mergefrom = function(fromtitles, summary, date) { 			var target = $('#closeAFD-target').val() 			t = 'Talk:'+target; 			var prepend = ; 			for (var i=0; i<fromtitles.length; i++) { 				prepend+= '{'+'{নিঅপ্র- এ থেকে একত্রীকরণ|'+fromtitles[i]+'|'+CloseAFD.debate+'|'+date+'}}\n' 			} 			CloseAFD.actionsStarted['edittalk']++; 			editparams = {'action':'edit', 				'title': t, 				'summary': summary, 				'prependtext': prepend, 				'token': CloseAFD.token 			};		 			CloseAFD.api.post(editparams) 			.fail( function (error) { 				$('#closeAFD-error').css('color', 'red').text("ত্রুটি: "+error); 				CloseAFD.actionsFinished['edittalk']++; 				CloseAFD.checkDone(); 			}) 			.done(function() { 				CloseAFD.actionsFinished['edittalk']++; 				if (CloseAFD.actionsStarted['edittalk'] == CloseAFD.actionsFinished['edittalk']) { 					$('#closeAFD-action1').css('color', 'darkgreen').text("একত্রীকরণ ট্যাগ যোগ হয়েছে"); 				} 				CloseAFD.checkDone(); 			}) 		}  		// Add the oldafdmulti template to the talk page 		CloseAFD.oldafd = function(title, summary, action, wikitext, date) { 			var oldafdmulti = '{{পুরনো নিঅপ্র বহু'; 			// Try to find old AFD template 			var patt = /\n?\{\{(old|afd|পুরনো) ?(old|afd|নিঅপ্র) ?(multi|full|বহু)?((.|\n)*?)\}\}\n?/i 			old = patt.exec(wikitext); 			var count = 0 			if (old) { 				count = 1; 				var parts = old[4].split('|'); 				var params = {}; 				var numtest = /[A-z]+([0-9])/i 				for (var i=0; i<parts.length; i++) { 					if (!parts[i].trim()) { 						continue; 					} 					pieces = parts[i].split('='); 					params[pieces[0].trim()] = pieces[1].trim(); 					var num = numtest.exec(pieces[0].trim()); 					if (num) { 						res = parseInt(num[1]); 						if (res > count) { 							count = res 						} 					} 				} 				for (p in params) { 					oldafdmulti += ' | '+p+' = '+params[p] 				}	 			} 			count++; 			c = count.toString() 			if (count == 1) { 				c = ; 			} 			oldafdmulti += ' | তারিখ'+c+' = {'+'{subst:#invoke:ConvertDigit|main|'+date+'}} | ফলাফল'+c+" = "+action+"' | পাতা"+c+' = '+CloseAFD.debate 			oldafdmulti += '}}' 			if (old) { 				newtext = wikitext.replace(patt, '\n'+oldafdmulti+'\n');	 			} else { // উইকিপিডিয়া:Talk page layout is too complicated to automate, so I'm not even going to try 				newtext = oldafdmulti+'\n'+wikitext; 			} 			CloseAFD.edit(, title, newtext, summary, function(data) { 				if (CloseAFD.actionsStarted['edittalk'] == CloseAFD.actionsFinished['edittalk']) { 					$('#closeAFD-action3').css('color', 'darkgreen').text("আলাপ পাতা ট্যাগ করা হয়েছে"); 				} 			}, 'edittalk')			 		} 		 		$(document).on('click', '#ca-closeAFD', CloseAFD.close); 		$(document).on('click', '#ca-relistAFD', CloseAFD.relist); 	 		CloseAFD.reset = function() {		 			$('#closeAFD-AFDpage').empty(); 			$('#closeAFD-multititles').empty();	 			$('#closeAFD-action1').empty(); 			$('#closeAFD-action2').empty(); 			$('#closeAFD-action3').empty(); 			$('#closeAFD-action4').empty(); 			$('#closeAFD-action5').empty(); 			$('#closeAFD-error').empty(); 			CloseAFD.titles = []; 		} 		// HTML for closing dialog 		$('#bodyContent').before(''+ 			'দ্রুত:'+ 			''+ 			'অপসারণ'+ 			'রেখে দেয়া'+ 			'কোন ঐকমত্য হয়নি'+ 			'একত্রীকরণ'+ 			''+ 			'পুনর্নির্দেশ'+ 			'অপসারণ ও পুনর্নির্দেশ'+ 			'অন্যান্য:'+ 			''+ 			''+ 			'পুনর্নির্দেশগুলি অপসারণ'+ 			''+ 			'লক্ষ্য পাতা:'+ 			'অতিরিক্ত মন্তব্য (ঐচ্ছিক):'+ 			''+ 		''); 		$('#closeAFD-delrediropt').hide(); 		$('#closeAFD-targetopt').hide(); 		 		// HTML for closing status dialog 		$('#bodyContent').before(''+ 		''+ 		''+ 		''+ 		''+ 		''+ 		''+ 		''+ 		''+ 		''); 		 		// HTML for relist dialog 		$('#bodyContent').before(''+ 		''+ 		'ঐচ্ছিক মন্তব্য: '+ 		''+ 		'পুনঃতালিকাভুক্তির নং: '+ 		''+ 		''+ 		''+ 		''+ 		''+ 		''+ 		''); 		 		// Hide deletion options from non-admins 		if ( CloseAFD.NAC ) { 			$(".closeAFD-nac").hide(); 		} 		 		// Adjust visibility of delete redirects and target page options based on what close option is selected 		$('input[name="closeAFD-action"]').change(function() { 			if ((!CloseAFD.NAC) && ($('#closeAFD-delete').prop('checked') || $('#closeAFD-delandred').prop('checked') || $('#closeAFD-other').prop('checked'))) { 				$('#closeAFD-delrediropt').slideDown(); 				if ($('#closeAFD-delete').prop('checked') ) { 					$('#closeAFD-delredir').prop('checked', true); 				} else { 					$('#closeAFD-delredir').prop('checked', false); 				} 			} else { 				$('#closeAFD-delredir').prop('checked', false); 				$('#closeAFD-delrediropt').slideUp(); 			} 			if ($('#closeAFD-other').prop('checked') ) { 				$('#closeAFD-other-action').prop('disabled', false); 			} else { 				$('#closeAFD-other-action').prop('disabled', true); 			} 			if ($('#closeAFD-merge').prop('checked') || $('#closeAFD-delandred').prop('checked') || $('#closeAFD-redir').prop('checked')) { 				$('#closeAFD-targetopt').slideDown(); 			} else { 				$('#closeAFD-targetopt').slideUp(); 			} 		}); 	} 	 	RegExp.quote = function(str) { 		return (str+'').replace(/([.?*+^$[\]\\(){}|-])/g, "\\$1"); 	}; })