સભ્ય:Rangilo Gujarati/tagger.js

વિકિપીડિયામાંથી

નોંધ: પાનું પ્રકાશિત કર્યા પછી, તમારે તમારા બ્રાઉઝરની કૅશ બાયપાસ કરવાની આવશ્યકતા પડી શકે છે.

  • ફાયરફોક્સ / સફારી: શીફ્ટ દબાવેલી રાખીને રિલોડ પર ક્લિક કરો, અથવા તો Ctrl-F5 કે Ctrl-R દબાવો (મેક પર ⌘-R)
  • ગુગલ ક્રોમ: Ctrl-Shift-R દબાવો (મેક પર ⌘-Shift-R)
  • ઈન્ટરનેટ એક્સપ્લોરર/એજ: Ctrl દબાવેલી રાખીને રિફ્રેશ પર ક્લિક કરો, અથવા Ctrl-F5 દબાવો
  • Opera: Ctrl-F5 દબાવો
//<nowiki>
/*
* [[m:user:Hoo man]]; Version 2.0.16; 2011-10-23;
* This tool can tag pages with a few clicks (which is much faster than editing the whole page per Hand).
* Per default it is able to tag page for speedy deletion using {{delete}}, but it can be customized to use up to every template.
* Tested in IE and FF with vector and monobook, uses my (Hoo man) wiki tools (functions.js)
*
* DO NOT COPY AND PASTE, instead see http://meta.wikimedia.org/wiki/User:Hoo_man/Scripts/Tagger
*/
 
if(typeof(hoofr) == 'undefined') {
	mw.loader.load('//meta.wikimedia.org/w/index.php?title=User:Hoo_man/functions.js&action=raw&ctype=text/javascript');
}
 
//name must be the same as the name of the created object
function tagger(name, defaultConfig, userConfig) {
	this.name = name;
	var i;
	if(disable_tagger || !mw.config.get('wgIsArticle')) {
		return false;
	}
	if(typeof(hoofr) == 'undefined' || typeof(hoofr.objectDiff) == 'undefined') {
		//wait till the browser got hoofr
		var a = 'temp_' + Math.random().toString().replace('.', '');
		var b = 'temp_' + Math.random().toString().replace('.', '');
		window[a] = defaultConfig;
		window[b] = userConfig;
		command = 'window.' + this.name + ' = new tagger("' + this.name + '", ' + a + ', ' + b + ');';
		if(typeof(hoofr_callbacks) === 'undefined') {
			window.hoofr_callbacks = [ function() { eval(command); } ];
		}else{
			hoofr_callbacks = hoofr_callbacks.concat([ function() { eval(command); } ]);
		}
		return false;
	}
	if(userConfig.tags && userConfig.editSummary) {
		//remove the default config if the user set smth. else
		defaultConfig.tags = {};
		defaultConfig.editSummary = {};
	}
	this.config = hoofr.objectDiff(userConfig, defaultConfig);
	if(typeof(this.config.toolLinkMethod) == 'undefined') {
		this.config.toolLinkMethod = hoofrConfig.toolLinkMethod;
	}
	if(this.config.disable) {
		return false;
	}
	var canDelete = false;
	if(this.config.noDeleteOnly) {
		//Am I having the delete right?
		var links = document.getElementsByTagName("a");
		for(i = 0; i<links.length; i++) {
			if(links[i].parentNode.getAttribute('id') == 'ca-delete') {
				//yes
				canDelete = true;
				break;
			}
		}
	}
	if(!canDelete) {
		hoofr.addToolLink(this.config.lang.toolbarText, 'javascript: ' + this.name + '.openWindow(0);', '', this.config.toolLinkMethod);
		if(this.config.allowSectionTags) {
			var spans = document.getElementById('bodyContent').getElementsByTagName('span');
			var sections = [];
			var y = 0;
			for(i = 0; i<spans.length; i++) {
				if($(spans[i]).hasClass('mw-headline')) {
					sections[y] = spans[i];
					y++;
				}
			}
			for(i = 0; i<sections.length; i++) {
				sections[i].parentNode.firstChild.innerHTML += '[<a class="tagSection" onClick="' + this.name + '.openWindow(' + (i+1) + ');">' + this.config.lang.tagSection + '</a>]';
			}
		}
	}
	this.openWindow = function(section) {
		if(!document.getElementById(this.name + 'taggerWindow')) {
			layout[this.name + 'taggerWindow'] = hoofr.popup.init(this.name + 'taggerWindow', 540, 160, this.config.lang.windowTitle, this.config.lang.button, this.name + '.addTag()');
			var tmp = '<form name="' + this.name + 'taggerForm">';
			tmp += this.config.lang.tags + '<br /><select name="tag" style="width: 97%;" onChange="' + this.name + '.updateEditSummary()">';
			for(var i in this.config.tags) {
				if(typeof(this.config.tags[i]) == 'string') {		//to filter out stupid prototype functions
					tmp += '<option value="' + this.config.tags[i] + '"';
					if(i == 'other') {
						tmp += ' id="taggerUseCustomTemplate"';
					}
					tmp += '>' + this.config.tags[i] +'</option>';
				}
			}
			tmp += '</select><br /><br />';
			tmp += this.config.lang.customTag + '<br /><input name="otherTag" type="text" style="width: 97%;" value="' + this.config.customTagDefault + '" onClick="document.getElementById(\'taggerUseCustomTemplate\').selected = \'true\'"><br /><br />';
			tmp += this.config.lang.editSummary + '<br /><input name="editSummary" type="text" style="width: 97%;">';
			tmp += '<input name="section" type="hidden" value="' + section + '"></form>';
			layout[this.name + 'taggerWindow'].innerHTML = tmp;
			layout[this.name + 'taggerWindow'].style.display = '';
			this.updateEditSummary();
		}else{
			layout[this.name + 'taggerWindow'].parentNode.style.display = 'block';
		}
	};
	this.updateEditSummary = function() {
		if(document[this.name + 'taggerForm'].tag.value != this.config.tags.other) {
			document[this.name + 'taggerForm'].editSummary.value = this.config.editSummary[document[this.name + 'taggerForm'].tag.value];
		}
	};
	this.closeWindow = function() {
		layout[this.name + 'taggerWindow'].style.display = 'none';
	};
	this.addTag = function() {
		//which tag was selected?
		var tag = document[this.name + 'taggerForm'].tag.value;
		if(tag == this.config.tags.other) {
			tag = document[this.name + 'taggerForm'].otherTag.value;
		}
		//edit summary
		var editSummary;
		if(document[this.name + 'taggerForm'].editSummary.value) {
			editSummary = document[this.name + 'taggerForm'].editSummary.value;
		}else{
			editSummary = '';
		}
		//section to edit
		var section = document[this.name + 'taggerForm'].section.value;
		if(section == '0') {
			section = null;
		}
		hoofr.inProcess('start', this.config.ajax_load);
		var content;
		if(mw.config.get('wgCurRevisionId') !== 0) {
			content = hoofr.getPage(mw.config.get('wgPageName'), mw.config.get('wgCurRevisionId'), section);
		}else{
			content = false;
		}
		if(content === false && (!this.config.allowCreations || mw.config.get('wgCurRevisionId') !== 0)) {
			alert(this.config.lang.generalError);
			return;
		}
		var create = false;
		if(content === false) {
			content = '';
			create = true;
		}
		if(!section || content === '') {
			content = tag + '\n' + content;
		}else{
			content = content.replace(/^([=]{1,6}.*[=]{1,6})/i, '$1\n' + tag);
		}
		var data, result, curRevId;
		if(create) {
			data = hoofr.getEditToken(mw.config.get('wgPageName'), false);
			result = hoofr.editPage(mw.config.get('wgPageName'), content, editSummary, true, undefined, undefined, section);
		}else{
			data = hoofr.getEditToken(mw.config.get('wgPageName'), true);
			if(mw.util.getParamValue('oldid') !== null) {
				curRevId = mw.util.getParamValue('oldid');
			}else{
				curRevId = mw.config.get('wgCurRevisionId');
			}
			if(mw.config.get('wgCurRevisionId') != data.revid || curRevId != data.revid) {
				alert(this.config.lang.editConflict);
				return;
			}
			result = hoofr.editPage(mw.config.get('wgPageName'), content, editSummary, true, data.editToken, data.timestamp, section);
		}
		hoofr.inProcess('stop');
		if(result === true) {
			this.closeWindow();
			window.location.href = mw.config.get('wgServer') + mw.config.get('wgArticlePath').replace('$1', mw.config.get('wgPageName'));
		}else{
			alert('Error: ' + result);
		}
	};
}
 
//default config
if(typeof(taggerConfig) == 'undefined') taggerConfig = {};
if(typeof(taggerDefaultConfig) == 'undefined') taggerDefaultConfig = {};
 
if(typeof(disable_tagger) == 'undefined') {
	var disable_tagger = false;
}
 
//to change anything just add one of the following lines to your own .js and replace 'taggerDefaultConfig' with 'taggerConfig'
 
taggerDefaultConfig.disable = false;
taggerDefaultConfig.noDeleteOnly = false;
taggerDefaultConfig.allowCreations = true;
taggerDefaultConfig.allowSectionTags = false;
taggerDefaultConfig.customTagDefault = '{{';
 
//templates and edit summaries
taggerDefaultConfig.tags = {};
taggerDefaultConfig.editSummary = {};
taggerDefaultConfig.tags[1] = '{{delete|nonsense - ~~~~}}';
taggerDefaultConfig.editSummary[taggerDefaultConfig.tags[1]] = '+ delete';
taggerDefaultConfig.tags[2] = '{{delete|no article - ~~~~}}';
taggerDefaultConfig.editSummary[taggerDefaultConfig.tags[2]] = '+ delete';
taggerDefaultConfig.tags[3] = '{{delete|nonsense (local page for a commons file) - ~~~~}}';
taggerDefaultConfig.editSummary[taggerDefaultConfig.tags[3]] = '+ delete';
taggerDefaultConfig.tags[4] = '{{delete|Blanked by author - ~~~~}}';
taggerDefaultConfig.editSummary[taggerDefaultConfig.tags[4]] = '+ delete';
taggerDefaultConfig.tags.other = 'Other -> (Please give an edit summary as well)';
 
//lang
taggerDefaultConfig.lang = {};
taggerDefaultConfig.lang.toolbarText = 'Tag';
taggerDefaultConfig.lang.tagSection = 'Tag';
taggerDefaultConfig.lang.windowTitle = 'Page tagger';
taggerDefaultConfig.lang.tags = 'Tag:';
taggerDefaultConfig.lang.customTag = 'Custom tag:';
taggerDefaultConfig.lang.editSummary = 'Edit summary:';
taggerDefaultConfig.lang.button = 'Tag page';
taggerDefaultConfig.lang.generalError = 'Error: Reload the page (F5) and try it again';
taggerDefaultConfig.lang.editConflict = 'Edit conflict: Please reload the page (F5)';
 
taggerDefaultConfig.ajax_load = '<img src="//upload.wikimedia.org/wikipedia/commons/d/de/Ajax-loader.gif">';
 
$(document).ready(function() { window.FirstTagger = new tagger('FirstTagger', taggerDefaultConfig, taggerConfig); } );
//</nowiki>