Utilizator:Firilacroco/friendlytag.js

Tema lui Utilizator:Firilacroco/friendlytag.js este o temă care a fost prezentă de-a lungul istoriei omenirii. Din cele mai vechi timpuri, Utilizator:Firilacroco/friendlytag.js a fost o sursă de studiu, discuție și reflecție. Importanța sa transcende barierele culturale, generaționale și geografice, acoperind aspecte la fel de diverse precum filosofia, știința, politica, arta și viața de zi cu zi. De-a lungul secolelor, Utilizator:Firilacroco/friendlytag.js a fost supusă unor interpretări multiple și a căpătat semnificații diferite în funcție de contextul în care este încadrat. În acest articol, ne vom adânci în universul fascinant al lui Utilizator:Firilacroco/friendlytag.js, explorând diversele sale fațete și relevanța sa astăzi.
// If FriendlyConfig aint exist.
if( typeof( FriendlyConfig ) == 'undefined' ) {
	FriendlyConfig = {};
}

/**
 FriendlyConfig.summaryAd ( string )
 If ad should be added or not to summary, default ]
 */
if( typeof( FriendlyConfig.summaryAd ) == 'undefined' ) {
	FriendlyConfig.summaryAd = " folosind ]";
}

/**
 FriendlyConfig.groupByDefault ( boolean )
 */
if( typeof( FriendlyConfig.groupByDefault ) == 'undefined' ) {
	FriendlyConfig.groupByDefault = true;
}

/**
 FriendlyConfig.watchTaggedPages ( boolean )
 */
if( typeof( FriendlyConfig.watchTaggedPages ) == 'undefined' ) {
	FriendlyConfig.watchTaggedPages = false;
}

/**
 FriendlyConfig.markTaggedPagesAsMinor ( boolean )
 */
if( typeof( FriendlyConfig.markTaggedPagesAsMinor ) == 'undefined' ) {
	FriendlyConfig.markTaggedPagesAsMinor = true;
}

/**
 FriendlyConfig.markTaggedPagesAsPatrolled ( boolean )
 */
if( typeof( FriendlyConfig.markTaggedPagesAsPatrolled ) == 'undefined' ) {
	FriendlyConfig.markTaggedPagesAsPatrolled = true;
}

var isRedirect = false;

function friendlytag() {
	if( QueryString.exists( 'redirect' ) && QueryString.get( 'redirect' ) == 'no' && !QueryString.exists( 'rcid' ) ) {
		isRedirect = true;
		mw.util.addPortletLink( 'p-cactions', "javascript:friendlytag.callback()", "Etichetează", "friendly-tag", "Etichetează pagina de redirecționare", "");
	} else if( wgNamespaceNumber != 0 || wgCurRevisionId == false ) {
		return;
	} else {
		mw.util.addPortletLink( 'p-cactions', "javascript:friendlytag.callback()", "Etichetează", "etichetă-friendly", "Etichetează această pagină", "");
	}
}

$(friendlytag);

friendlytag.callback = function friendlytagCallback( uid ) {
var Window = new SimpleWindow( 630, 400 );
	Window.setScriptName( "Twinkle" );
	// anyone got a good policy/guideline/info page/instructional page link??
	Window.addFooterLink( "Twinkle help", ":en:WP:TW/DOC#tag" );
 
	var form = new QuickForm( Twinkle.tag.callback.evaluate );
 
	switch( Twinkle.tag.mode ) {
		case 'article':
			Window.setTitle( "Aplicarea de formate de întreţinere" );
 
			form.append( {
					type: 'checkbox',
					list: [
						{
							label: 'Grupează în {{probleme}} dacă e posibil',
							value: 'group',
							name: 'group',
							tooltip: 'Dacă aplicaţi mai mult de două etichete suportate de {{probleme}} şi această casetă este bifată, toate etichetele suportate vor fi grupate într-un singur format {{probleme}}.',
							checked: FriendlyConfig.groupByDefault
						}
					]
				}
			);
 

			form.append( { type:'header', label:'Formate de întreținere' } );
			form.append( { type:'checkbox', name: 'maintenance', list: friendlytag.maintenanceList } );
			form.append( { type:'header', label:'Formate probleme' } );
			form.append( { type:'checkbox', name: 'problem', list: friendlytag.problemList } );
			form.append( { type:'header', label:'Formate avertizare' } );
			form.append( { type:'checkbox', name: 'notice', list: friendlytag.noticeList } );
 
			if( Twinkle.getFriendlyPref('customTagList').length ) {
				form.append( { type:'header', label:'Formate definite de utilizator' } );
				form.append( { type: 'checkbox', name: 'custom', list: Twinkle.getFriendlyPref('customTagList') } );
			}
			break;
 
		case 'file':
			Window.setTitle( "Etichetare fişiere" );
 
			// TODO: perhaps add custom tags TO list of checkboxes
 
			form.append({ type: 'header', label: 'Probleme de licenţiere şi provenienţă' });
			form.append({ type: 'checkbox', name: 'imageTags', list: friendlytag.licenseList } );
 
			form.append({ type: 'header', label: 'Etichete de curăţenie' } );
			form.append({ type: 'checkbox', name: 'imageTags', list: friendlytag.cleanupList } );
 
			form.append({ type: 'header', label: 'Etichete de calitate' } );
			form.append({ type: 'checkbox', name: 'imageTags', list: friendlytag.qualityList } );
 
			form.append({ type: 'header', label: 'Etichete legate de Wikimedia Commons' });
			form.append({ type: 'checkbox', name: 'imageTags', list: friendlytag.commonsList } );
 
			form.append({ type: 'header', label: 'Etichete de înlocuire' });
			form.append({ type: 'checkbox', name: 'imageTags', list: friendlytag.replacementList } );
			break;
 
		case 'redirect':
			Window.setTitle( "Etichetarea redirecţionărilor" );
 
			form.append({ type: 'header', label:'Formate de ortografie, gramatică şi majuscule' });
			form.append({ type: 'checkbox', name: 'spelling', list: friendlytag.spellingList });
 
			form.append({ type: 'header', label:'Formate referitoare la nume alternative' });
			form.append({ type: 'checkbox', name: 'alternative', list: friendlytag.alternativeList });
 
			form.append({ type: 'header', label:'Diverse formate administratice' });
			form.append({ type: 'checkbox', name: 'administrative', list: friendlytag.administrativeList });
			break;
 
		default:
			alert("Twinkle.tag: Mod necunoscut: " + Twinkle.tag.mode);
			break;
	}
 
	form.append( { type:'submit' } );
 
	var result = form.render();
	Window.setContent( result );
	Window.display();
}

isRedirect = false;

friendlytag.maintenanceList = [
	{
		label: '\{\{ajutor\}\}: articolul are nevoie de ajutor',
		value: 'ajutor'
	},
	{
		label: '\{\{curățenie\}\}: articolul are nevoie de curățenie',
		value: 'curățenie'
	},
	{
		label: '\{\{wikizare\}\}: articolul trebuie pus în formatul standard',
		value: 'wikizare'
	},
	{
		label: '\{\{necategorizate\}\}: articolul este inclus în nicio categorie sau în foarte puține',
		value: 'necategorizate'
	},
	{
		label: '\{\{extinde-secțiune\}\}: această secțiune trebuie extinsă',
		value: 'extinde-secțiune'
	},
	{
		label: '\{\{popcat\}\}: această categorie trebuie populată',
		value: 'popcat'
	},
	{
		label: '\{\{punct de vedere mondial\}\}: articolul nu exprimă punctul de vedere mondial asupra subiectului',
		value: 'punct de vedere mondial' 
	},
	{
		label: '\{\{articol neverificat\}\}: acest articol trebuie verificat de către un editor',
		value: 'articol neverificat'
	},
	{
		label: '\{\{verificare\}\}: acest articol necesită o verificare',
		value: 'verificare'
	},
	{
		label: '\{\{divide\}\}: acest articol trebuie divizat în două sau mai multe articole',
		value: 'divide'
	},
	{
		label: '\{\{orfan\}\}: sunt foarte puține articole (sau chiar niciunul) care se leagă de acesta',
		value: 'orfan'
	},
	{
		label: '\{\{fără introducere\}\}: acest articol nu are introducere cu explicația scurtă a subiectului',
		value: 'fără introducere'
	},
	{
		label: '\{\{interlingual\}\}: acest articol are nevoie de adăugarea unor legături interlinguale',
		value: 'interlingual'
	},
	{
		label: '\{\{note de subsol\}\}: sursele articolului sunt neclare deoarece îi lipsesc notele de subsol.',
		value: 'note de subsol'
	},
	{
		label: '\{\{ton nepotrivit\}\}: tonul acestui articol sau al acestei secțiuni este nepotrivit pentru o enciclopedie',
		value: 'ton nepotrivit' 
	},
	{
		label: '\{\{diacritice\}\}: acest articol este scris parțial sau în întregime fără diacritice',
		value: 'diacritice' 
	},
	{
		label: '\{\{ortografie\}\}: acest articol conține greșeli de ortografie și/sau de punctuație.',
		value: 'ortografie' 
	},
	{
		label: '\{\{de corectat\}\}: acest articol conține erori de ortografie, folosește o exprimare alambicată sau stâlcește limba română',
		value: 'de corectat' 
	},
	{
		label: '\{\{ghilimele\}\}: acest articol conține ghilimele englezești, ce trebuiesc înlocuite cu cele românești',
		value: 'ghilimele' 
	},
	{
		label: '\{\{listă\}\}: acest articol este scris sub formă de listă şi trebuie reformulat sub formă de fraze cursive',
		value: 'listă' 
	},
	{
		label: '\{\{citate în exces\}\}: acest articol abuzează de citate, care trebuie utilizate doar în condiţiile comentariului relevant',
		value: 'citate în exces' 
	},
	{
		label: '\{\{de tradus în alte limbi\}\}: acest articol este scris în limba română și trebuie tradus în alte limbi',
		value: 'de tradus în alte limbi' 
	}
];


friendlytag.problemList = [
	{
		label: '\{\{acuratețe\}\}: acuratețea acestui articol sau a acestei secțiuni este disputată',
		value: 'acuratețe'
	},
	{
		label: '\{\{copyvio|url=\}\}: această pagină este suspectă de violarea drepturilor de autor',
		value: 'copyvio'
	},
	{
		label: '\{\{referințe\}\}: acest articol sau această secțiune are bibliografia incompletă sau inexistentă',
		value: 'referințe'
	},
	{
		label: '\{\{legături externe\}\}: cel puțin o parte din aceste legături externe nu îndeplinesc condițiile de includere',
		value: 'legături externe'
	},
	{
		label: '\{\{original\}\}: acest articol pare să conțină cercetare originală',
		value: 'original'
	},
	{
		label: '\{\{PDVN\}\}: punctul de vedere neutru al acestui articol este disputat',
		value: 'PDVN'
	},
	{
		label: '\{\{notabilitate\}\}: din textul acestui articol nu rezultă caracterul notabil al subiectului',
		value: 'notabilitate'
	},
	{
		label: '\{\{neenciclopedic\}\}: conținutul sau subiectul acestui articol este privit de unii editori ca fiind neenciclopedic',
		value: 'neenciclopedic',
	},
	{
		label: '\{\{toponimie\}\}: acest articol se confruntă cu probleme de toponimie pe bază lingvistică',
		value: 'toponimie'
	},
	{
		label: '\{\{conținut\}\}: relevanța unor informații din acest articol este disputată',
		value: 'conținut'
	}
];

friendlytag.noticeList = [
	{
		label: '\{\{dezvoltare\}\}: la această pagină sau secțiune se lucrează în prezent',
		value: 'dezvoltare',
	},
	{
		label: '\{\{modific acum\}\}: la acest articol se lucrează în acest moment, posibil cu o aplicație externă',
		value: 'modific acum',
	},
	{
		label: '\{\{expert\}\}: acest articol are nevoie de atenția unui expert în domeniu',
		value: 'expert' },
	{
		label: '\{\{în desfășurare\}\}: acest articol sau secțiune este de actualitate',
		value: 'în desfășurare',
	},
	{
		label: '\{\{titluincorect|Titlul corect\}\}: forma corectă a titlului nu apare din cauza unor restricții tehnice',
		value: 'titluincorect',
	},
	{
		label: '\{\{inițialămică\}\}: titlul corect al acestui articol este cu inițială mică dar nu apare din cauza unor restricții tehnice',
		value: 'inițialămică',
	},
	{
		label: '\{\{șterge|Motiv\}\}: această pagină a fost propusă pentru ștergere',
		value: 'șterge' },
	{
		label: '\{\{ștergere rapidă\}\}: această pagină a fost propusă pentru ștergere rapidă',
		value: 'ștergere rapidă',
	},
	{
		label: '\{\{eveniment sportiv viitor\}\}: acest articol este despre un eveniment sportiv viitor',
		value: 'eveniment sportiv viitor' },
	{
		label: '\{\{eveniment sportiv curent\}\}: acest articol este despre un eveniment sportiv curent',
		value: 'eveniment sportiv curent',
	}
];

/*
friendlytag.spellingList = [
	{
		label: '\{\{ton nepotrivit\}\}: tonul acestui articol sau al acestei secțiuni este nepotrivit pentru o enciclopedie',
		value: 'ton nepotrivit' 
	},
	{
		label: '\{\{diacritice\}\}: acest articol este scris parțial sau în întregime fără diacritice',
		value: 'diacritice' 
	},
	{
		label: '\{\{ortografie\}\}: acest articol conține greșeli de ortografie și/sau de punctuație.',
		value: 'ortografie' 
	},
	{
		label: '\{\{de corectat\}\}: acest articol conține erori de ortografie, folosește o exprimare alambicată sau stâlcește limba română',
		value: 'de corectat' 
	},
	{
		label: '\{\{ghilimele\}\}: acest articol conține ghilimele englezești, ce trebuiesc inlocuite cu cele românești',
		value: 'ghilimele' 
	},
	{
		label: '\{\{de tradus în alte limbi\}\}: acest articol este scris în limba română și trebuie tradus în alte limbi',
		value: 'de tradus în alte limbi' 
	}
];

friendlytag.alternativeList = [
	{
		label: '\{\{dezambiguizare\}\}: pagină de dezambiguizare',
		value: 'dezambiguizare' 
	},
	{
		label: '\{\{dezambiguizare notă|conținut=|cuvânt=\}\}: acest articol se referă la {{{conținut}}}; pentru alte sensuri vedeți {{{cuvânt}}}',
		value: 'dezambiguizare notă' 
	},
	{
		label: '\{\{dezambiguizare notă alternativă|conținut=|cuvânt=\}\}: acest articol se referă la {{{conținut}}}; pentru alte întrebuințări ale termenului vedeți {{{cuvânt}}}',
		value: 'dezambiguizare notă alternativă' 
	},
	{
		label: '\{\{dezambiguizare generic|conținut=|explicație=\}\}: acest articol se referă la {{{conținut}}}; {{{explicație}}}',
		value: 'dezambiguizare generic' 
	},
	{
		label: '\{\{confuzie|cuvânt 1|semnificație|cuvânt 2\}\}: acest articol se referă la cuvânt 1; pentru semnificație vedeți cuvânt 2',
		value: 'confuzie' 
	},
	{
		label: '\{\{legătură|pagina|alte sensuri|pagina de dezambiguizare\}\}: pagina {{{1}}} trimite aici. Pentru alte sensuri vedeți {{{3}}}',
		value: 'legătură' 
	}
];

friendlytag.administrativeList = [
	{
		label: '\{\{redirect categorie|categoria\}\}: aceasta este o pagină de redirecționare către categoria ...',
		value: 'redirect categorie' 
	}
];
*/
// Set to true if template can be grouped into {{problemearticol}}
friendlytag.groupHash = {
	'ajutor': true,
	'curățenie': true,
	'wikizare': true,
	'necategorizate': true,
	'extinde-secțiune': true,
	'popcat': false,
	'punct de vedere mondial': false,
	'articol neverificat': true,
	'verificare': true,
	'divide': false,
	'orfan': true,
	'fără introducere': true,
	'interlingual': true,
	'note de subsol': true,
	'acuratețe': true,
	'copyvio': false,
	'referințe': true,
	'legături externe': true,
	'original': true,
	'PDVN': true,
	'notabilitate': true,
	'neenciclopedic': true,
	'toponimie': true,
	'conținut': true,
	'dezvoltare': false,
	'modific acum': false,
	'expert': false,
	'în desfășurare': false,
	'titluincorect': false,
	'inițialămică': false,
	'șterge': false,
	'ștergere rapidă': false,
	'eveniment sportiv viitor': false,
	'eveniment sportiv curent': false,
	'ton nepotrivit': true,
	'diacritice': true,
	'ortografie': true,
	'de corectat': true,
	'ghilimele': true,
	'de tradus în alte limbi': true,
	'listă': true,
};

friendlytag.callbacks = {
	main: function( self ) {
		var form = self.responseXML.getElementById( 'editform' );
		var tagRe, text = '', summaryText = 'Adăugat';
		var tags = new Array(), groupableTags = new Array();
 
		if( !isRedirect ) {
			// Check for preexisting tags and separate tags into groupable and non-groupable arrays
			Status.info( 'Notificare', 'Verific dacă există etichete în articol' );
			for( var i = 0; i < self.params.tags.length; i++ ) {
				tagRe = new RegExp( '(\\{\\{' + self.params.tags + '(\\||\\}\\}))', 'im' );
				if( !tagRe.exec( form.wpTextbox1.value ) ) {
					if( friendlytag.groupHash ] ) {
						groupableTags = groupableTags.concat( self.params.tags );
					} else {
						tags = tags.concat( self.params.tags );
					}
				} else {
					Status.info( 'Notificare', 'Am găsit eticheta \{\{' + self.params.tags
						+ '\}\} în articol deja... trec peste' );
				}
			}
 
			if( self.params.group && groupableTags.length >= 3 ) {
				Status.info( 'Notificare', 'Grupez formatele suportate în \{\{problemearticol\}\}' );
 
				groupableTags.sort();
				text += '\{\{problemearticol';
				summaryText += ' \{\{]\}\} cu parametrii';
				for( var i = 0; i < groupableTags.length; i++ ) {
					text += '|' + groupableTags
					+ '=\{\{subst:CURRENTMONTHNAME\}\} \{\{subst:CURRENTYEAR\}\}';
 
					if( i == (groupableTags.length - 1) ) {
						summaryText += ' și';
					} else if ( i < (groupableTags.length - 1) && i != 0 ) {
						summaryText += ',';
					}
					summaryText += ' ' + groupableTags;
				}
				text += '\}\}\n';
			} else {
				tags = tags.concat( groupableTags );
			}
		} else {
			// Check for preexisting tags
			Status.info( 'Info', 'Checking for preexisting tags on the redirect' );
			for( var i = 0; i < self.params.tags.length; i++ ) {
				tagRe = new RegExp( '(\\{\\{' + self.params.tags + '(\\||\\}\\}))', 'im' );
				if( !tagRe.exec( form.wpTextbox1.value ) ) {
					tags = tags.concat( self.params.tags );
				} else {
					Status.info( 'Notificare', 'Am găsit eticheta \{\{' + self.params.tags
						+ '\}\} în redirecționare deja...trec peste' );
				}
			}
		}
 
		tags.sort();
		for( var i = 0; i < tags.length; i++ ) {
			if( tags == 'necategorizate' || tags == 'popcat' ) {
				form.wpTextbox1.value += '\n\n\{\{' + tags
				+ '|date=\{\{subst:CURRENTMONTHNAME\}\} \{\{subst:CURRENTYEAR\}\}\}\}';
			} else {
				if( tags == 'punct de vedere mondial' ) {
					text += '\{\{' + self.params.globalizeSubcategory;
				} else if( tags == 'current' ) {
					text += '\{\{' + self.params.currentSubcategory;
				} else if( tags == 'future' ) {
					text += '\{\{' + self.params.futureSubcategory;
				} else {
					text += ( isRedirect ? '\n' : '' ) + '\{\{' + tags;
				}
 
				if( tags == 'notabilitate' && self.params.notabilitySubcategory != 'none' ) {
					text += '|' + self.params.notabilitySubcategory;
				}
 
				if( tags == 'do-attempt' ) {
					text += '|att=\{\{subst:CURRENTMONTHNAME\}\} \{\{subst:CURRENTYEAR\}\}\}\}\n';
				} else {
					text += isRedirect ? '\}\}' : '|date=\{\{subst:CURRENTMONTHNAME\}\} \{\{subst:CURRENTYEAR\}\}\}\}\n';
				}
			}
 
			if( i == (tags.length - 1) && ( i > 0 || groupableTags.length > 3 ) ) {
				summaryText += ' și';
			} else if ( i < (tags.length - 1) && ( i != 0 || groupableTags.length > 3 ) ) {
				summaryText += ',';
			}
 
			summaryText += ' \{\{[[Template:';
			if( tags == 'punct de vedere mondial' ) {
				summaryText += self.params.globalizeSubcategory + '|' + self.params.globalizeSubcategory;			
			} else if( tags == 'current' ) {
				summaryText += self.params.currentSubcategory + '|' + self.params.currentSubcategory;
			} else if( tags == 'future' ) {
				summaryText += self.params.futureSubcategory + '|' + self.params.futureSubcategory;
			} else {
				summaryText += tags + '|' + tags;
			}
			summaryText += ']]\}\}';
		}
 
		if( !isRedirect ) {
			text += form.wpTextbox1.value;
		} else {
			text = form.wpTextbox1.value + text;
		}
		summaryText += ' în ' + ( isRedirect ? 'pagina de redirecționare' : 'articol' ) + FriendlyConfig.summaryAd;
 
		var postData = {
			'wpMinoredit': FriendlyConfig.markTaggedPagesAsMinor ? 1 : undefined,
			'wpWatchthis': form.wpWatchthis.checked ? 1 : (FriendlyConfig.watchTaggedPages ? 1 : undefined),
			'wpStarttime': form.wpStarttime.value,
			'wpEdittime': form.wpEdittime.value,
			'wpAutoSummary': form.wpAutoSummary.value,
			'wpEditToken': form.wpEditToken.value,
			'wpSummary': summaryText,
			'wpTextbox1': text
		};
 
		self.post( postData );
 
		if( FriendlyConfig.markTaggedPagesAsPatrolled && self.params.rcid != '' ) {
			var query = {
				'title': wgPageName,
				'action': 'markpatrolled',
				'rcid': self.params.rcid
			};
 
			var wikipedia_wiki = new Wikipedia.wiki( 'Marchez pagina ca patrulată', query );
			wikipedia_wiki.post();
		}
	}
}
 
friendlytag.callback.evaluate = function friendlytagCallbackEvaluate(e) {
	var form = e.target;
	if( isRedirect ) {
		var tags = form.getChecked( 'administrative' ).concat( form.getChecked( 'alternative' ) ).concat( form.getChecked( 'spelling' ) );
	} else {
		if( typeof( FriendlyConfig.customTagList ) == 'object' ) {
			var tags = form.getChecked( 'notice' ).concat( form.getChecked( 'problem' ) ).concat( form.getChecked( 'maintenance' ) ).concat( form.getChecked( 'custom' ) );
		} else {
			var tags = form.getChecked( 'notice' ).concat( form.getChecked( 'problem' ) ).concat( form.getChecked( 'maintenance' ) );
		}
		var globalizeSubcategory = form.getChecked( 'problem.globalize' );
		var notabilitySubcategory = form.getChecked( 'problem.notability' );
		var currentSubcategory = form.getChecked( 'notice.current' );
		var futureSubcategory = form.getChecked( 'notice.future' );
	}
	var params;
 
	if( tags.length == 0 ) {
		alert( 'Trebuie să selectați măcar o etichetă!' );
		return;
	}
	if( !isRedirect ) {
		params = {
			tags: tags,
			group: form.group.checked,
			globalizeSubcategory: globalizeSubcategory ? globalizeSubcategory : null,
			notabilitySubcategory: notabilitySubcategory ? notabilitySubcategory : null,
			currentSubcategory: currentSubcategory ? currentSubcategory : null,
			futureSubcategory: futureSubcategory ? futureSubcategory : null,
			rcid: QueryString.exists( 'rcid' ) ? QueryString.get( 'rcid' ) : ''
		}
	} else {
		params = {
			tags: tags,
			rcid: QueryString.exists( 'rcid' ) ? QueryString.get( 'rcid' ) : ''
		}
	}
 
	Status.init( form );
 
	var query = { 
		'title': wgPageName, 
		'action': 'submit'
	};
	Wikipedia.actionCompleted.redirect = wgPageName;
	Wikipedia.actionCompleted.notice = "Etichetare terminată, reîmprospătez pagina în câteva secunde";
	var wikipedia_wiki = new Wikipedia.wiki( 'Modific articolul', query, friendlytag.callbacks.main );
	wikipedia_wiki.params = params;
	wikipedia_wiki.get();
}
// </nowiki>