સભ્ય: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>