Utilizator:Firilacroco/twinklewarn.js

De la Wikipedia, enciclopedia liberă

Notă: După salvare, trebuie să treceți peste cache-ul browser-ului pentru a vedea modificările.

  • Mozilla, Google Chrome, Safari, Konqueror: țineți apăsat Shift în timp ce apăsați butonul Reload (sau apăsați Ctrl-Shift-R).
  • Internet Explorer: apăsați Ctrl-F5.
  • Opera: apăsați F5.
// If TwinkleConfig aint exist.
if( typeof( TwinkleConfig ) == 'undefined' ) {
	TwinkleConfig = {};
}

/**
 TwinkleConfig.defaultGroup (int)
 if true, watch the page which has been dispatched an warning or notice, if false, default applies
 */
if( typeof( TwinkleConfig.defaultWarningGroup ) == 'undefined' ) {
	TwinkleConfig.defaultWarningGroup = 1;
}

/**
 TwinkleConfig.showSharedIPNotice may take arguments:
 true: to show shared ip notice if an IP address
 false: to not print the notice
 */
if( typeof( TwinkleConfig.showSharedIPNotice ) == 'undefined' ) {
	TwinkleConfig.showSharedIPNotice = true;
}

/**
 TwinkleConfig.watchWarnings (boolean)
 if true, watch the page which has been dispatched an warning or notice, if false, default applies
 */
if( typeof( TwinkleConfig.watchWarnings ) == 'undefined' ) {
	TwinkleConfig.watchWarnings = true;
}

/**
 TwinkleConfig.blankTalkpageOnIndefBlock (boolean)
 if true, blank the talk page when issuing an indef block notice (per [[WP:UW#Indefinitely blocked users]])
 */
if( typeof( TwinkleConfig.blankTalkpageOnIndefBlock ) == 'undefined' ) {
	TwinkleConfig.blankTalkpageOnIndefBlock = false;
}

/**
 TwinkleConfig.summaryAd (string)
 If ad should be added or not to summary, default [[WP:TWINKLE|TWINKLE]]
 */
if( typeof( TwinkleConfig.summaryAd ) == 'undefined' ) {
	TwinkleConfig.summaryAd = " folosind [[WP:TW|TW]]";
}

function twinklewarn() {
	if( wgNamespaceNumber == 3 ) {
		twAddPortletLink( (twinkleConfigExists ? "javascript:twinklewarn.callback()" : 'javascript:alert("Contul dvs este prea nou pentru a folosi Twinkle.");'), "Avert", "tw-warn", "Avertizare/Notificare utilizator", ""); 
	}
}
window.TwinkleInit = (window.TwinkleInit || []).concat( twinklewarn); //schedule initializer

twinklewarn.callback = function twinklewarnCallback() {
	var Window = new SimpleWindow( 600, 400 );
	Window.setTitle( "Avertizare/Notificare utilizator" );
	var form = new QuickForm( twinklewarn.callback.evaluate );

	var main_select = form.append( {
			type:'field',
			label:'Alegeți tipul de avertisment/notificare pentru problemă', 
			tooltip:'Mai întâi alegeți un grup principal de avertizare, apoi mesajul pe care îl doriți.' 
		} );

	var main_group = main_select.append( {
			type:'select',
			name:'main_group',
			event:twinklewarn.callback.change_category
		} );

	main_group.append( { type:'option', label:'Notă generală (1)', value:'level1', selected: ( TwinkleConfig.defaultWarningGroup == 1 || TwinkleConfig.defaultWarningGroup < 1 || ( userIsInGroup( 'sysop' ) ? TwinkleConfig.defaultWarningGroup > 8 : TwinkleConfig.defaultWarningGroup > 7 ) ) } );
	main_group.append( { type:'option', label:'Atenționare (2)', value:'level2', selected: ( TwinkleConfig.defaultWarningGroup == 2 ) } );
	main_group.append( { type:'option', label:'Avertizare (3)', value:'level3', selected: ( TwinkleConfig.defaultWarningGroup == 3 ) } );
	main_group.append( { type:'option', label:'Ultimul avertisment (4)', value:'level4', selected: ( TwinkleConfig.defaultWarningGroup == 4 ) } );
	main_group.append( { type:'option', label:'Singurul avertisment (4im)', value:'level4im', selected: ( TwinkleConfig.defaultWarningGroup == 5 ) } );
	main_group.append( { type:'option', label:'Notificare simplă', value:'singlenotice', selected: ( TwinkleConfig.defaultWarningGroup == 6 ) } );
	main_group.append( { type:'option', label:'Avertisment simplu', value:'singlewarn', selected: ( TwinkleConfig.defaultWarningGroup == 7 ) } );
	if( userIsInGroup( 'sysop' ) ) {
		main_group.append( { type:'option', label:'Blocare', value:'block', selected: ( TwinkleConfig.defaultWarningGroup == 8 ) } );
	}

	main_select.append( { type:'select', name:'sub_group', event:twinklewarn.callback.change_subcategory } ); //Will be empty to begin with.

	form.append( {
			type:'input',
			name:'article',
			label:'Articol',
			value:( QueryString.exists( 'vanarticle' ) ? QueryString.get( 'vanarticle' ) : '' ),
			tooltip:'Un articol ar putea fi inclus în notificare ca o revenire în articolul în discuție care a necesitat această notificare. Lăsați necompletat dacă nu doriți această funcție' 
		} );


	var more = form.append( { type:'field', label:'Introduceți un motiv suplimentar și apăsați \"Trimite\"' } );
	more.append( { type:'textarea', label:'Mai mult:', name:'reason', tooltip:'Poate un motiv, sau o notificare mai detaliată este necesară' } );
	more.append( { type:'submit', label:'Trimite' } );
	var result = form.render();
	Window.setContent( result );
	Window.display();
	result.main_group.root = result;

	// We must init the first choice (General Note);
	var evt = document.createEvent( "Event" );
	evt.initEvent( 'change', true, true );
	result.main_group.dispatchEvent( evt );

}

// This is all the messages that might be dispatched by the code
twinklewarn.messages = {
	level1: {
		"au-vandalism1": {
			label:"Vandalism",
			summary:"Notă generală: Modificare neconstructivă"
		},
		"au-test1": {
			label:"Modificări de test", 
			summary:"Notă generală: Modificări de test" 
		},
		"au-ștergeri1": { 
			label:"Ștergerea conținutului paginilor", 
			summary:"Notă generală: Ștergerea conținutului paginilor" 
		},
		"au-tdel1": { 
			label:"Ștergerea formatelor de întreținere", 
			summary:"Notă generală: Ștergerea formatelor de întreținere" 
		},
		"au-glumă1": { 
			label:"Glume nepotrivite", 
			summary:"Notă generală: Glume nepotrivite" 
		},
		"au-pg-nouă1": { 
			label:"Crearea unor pagini nepotrivite", 
			summary:"Notă generală: Crearea unor pagini nepotrivite" 
		},
		"au-spam1": { 
			label:"Adăugarea unor legături spam", 
			summary:"Notă generală: Adăugarea unor legături spam" 
		},
		"au-surse1": { 
			label:"Adăugarea unor materiale fără sursă și fără note de subsol", 
			summary:"Notă generală: Adăugarea unor materiale fără sursă și fără note de subsol" 
		},
		"au-biog1": { 
			label:"Adăugarea unor informații controversate fără note despre personalități în viață", 
			summary:"Notă generală: Adăugarea unor informații controversate fără note despre personalități în viață" 
		},
		"au-mos1": { 
			label:"Manualul de stil", 
			summary:"Notă generală: Formatare, dată, limbă, etc. (Manualul de stil)" 
		},
		"au-afd1": { 
			label:"Ștergerea formatului \{\{Șterge\}\}", 
			summary:"Notă generală: Ștergerea formatului \{\{Șterge\}\}" 
		},
		"au-pdvn1": { 
			label:"Lipsă de neutralitate", 
			summary:"Notă generală: Lipsă de neutralitate" 
		},
		"au-trad1": { 
			label:"Traducere automată", 
			summary:"Notă generală: Traduceri automate" 
		},
		"au-vpd1": { 
			label:"Modificare mesajelor altora în paginile de discuții", 
			summary:"Notă generală: Modificare mesajelor altora în paginile de discuții" 
		},
		"au-discuții1": { 
			label:"Utilizarea Wikipediei ca pe un forum", 
			summary:"Notă generală: Utilizarea Wikipediei ca pe un forum" 
		},
	},
	level2: {
		"au-vandalism2": { 
			label:"Vandalism", 
			summary:"Atenționare: Vandalism" 
		},
		"au-test2": { 
			label:"Modificări de test", 
			summary:"Atenționare: Modificări de test" 
		},
		"au-ștergeri2": { 
			label:"Ștergerea conținutului paginilor", 
			summary:"Atenționare: Ștergerea conținutului paginilor" 
		},
		"au-tdel2": { 
			label:"Ștergerea formatelor de întreținere", 
			summary:"Atenționare: Ștergerea formatelor de întreținere" 
		},
		"au-glumă2": { 
			label:"Glume nepotrivite", 
			summary:"Atenționare: Glume nepotrivite" 
		},
		"au-pg-nouă2": { 
			label:"Crearea unor pagini nepotrivite", 
			summary:"Atenționare: Crearea unor pagini nepotrivite" 
		},
		"au-spam2": { 
			label:"Adăugarea unor legături spam", 
			summary:"Atenționare: Adăugarea unor legături spam" 
		},
		"au-surse2": { 
			label:"Adăugarea unor materiale fără sursă și fără note de subsol", 
			summary:"Atenționare: Adăugarea unor materiale fără sursă și fără note de subsol" 
		},
		"au-biog2": { 
			label:"Adăugarea unor informații controversate fără note despre personalități în viață", 
			summary:"Atenționare: Adăugarea unor informații controversate fără note despre personalități în viață" 
		},
		"au-mos2": { 
			label:"Manualul de stil", 
			summary:"Atenționare: Formatare, dată, limbă, etc. (Manualul de stil)" 
		},
		"au-afd2": { 
			label:"Ștergerea formatului \{\{Șterge\}\}", 
			summary:"Atenționare: Ștergerea formatului \{\{Șterge\}\}" 
		},
		"au-pdvn2": { 
			label:"Lipsă de neutralitate", 
			summary:"Atenționare: Lipsă de neutralitate" 
		},
		"au-trad2": { 
			label:"Traducere automată", 
			summary:"Atenționare: Traduceri automate" 
		},
		"au-vpd2": { 
			label:"Modificare mesajelor altora în paginile de discuții", 
			summary:"Atenționare: Modificare mesajelor altora în paginile de discuții" 
		},
		"au-discuții2": { 
			label:"Utilizarea Wikipediei ca pe un forum", 
			summary:"Atenționare: Utilizarea Wikipediei ca pe un forum" 
		},
	},
	level3: {
		"au-vandalism3": { 
			label:"Vandalism", 
			summary:"Avertizare: Vandalism" 
		},
		"au-test3": { 
			label:"Modificări de test", 
			summary:"Avertizare: Modificări de test" 
		},
		"au-ștergeri3": { 
			label:"Ștergerea conținutului paginilor", 
			summary:"Avertizare: Ștergerea conținutului paginilor" 
		},
		"au-tdel3": { 
			label:"Ștergerea formatelor de întreținere", 
			summary:"Avertizare: Ștergerea formatelor de întreținere" 
		},
		"au-glumă3": { 
			label:"Glume nepotrivite", 
			summary:"Avertizare: Glume nepotrivite" 
		},
		"au-pg-nouă3": { 
			label:"Crearea unor pagini nepotrivite", 
			summary:"Avertizare: Crearea unor pagini nepotrivite" 
		},
		"au-spam3": { 
			label:"Adăugarea unor legături spam", 
			summary:"Avertizare: Adăugarea unor legături spam" 
		},
		"au-surse3": { 
			label:"Adăugarea unor materiale fără sursă și fără note de subsol", 
			summary:"Avertizare: Adăugarea unor materiale fără sursă și fără note de subsol" 
		},
		"au-biog3": { 
			label:"Adăugarea unor informații controversate fără note despre personalități în viață", 
			summary:"Avertizare: Adăugarea unor informații controversate fără note despre personalități în viață" 
		},
		"au-mos3": { 
			label:"Manualul de stil", 
			summary:"Avertizare: Formatare, dată, limbă, etc. (Manualul de stil)" 
		},
		"au-afd3": { 
			label:"Ștergerea formatului \{\{Șterge\}\}", 
			summary:"Avertizare: Ștergerea formatului \{\{Șterge\}\}" 
		},
		"au-pdvn3": { 
			label:"Lipsă de neutralitate", 
			summary:"Avertizare: Lipsă de neutralitate" 
		},
		"au-trad3": { 
			label:"Traducere automată", 
			summary:"Avertizare: Traduceri automate" 
		},
		"au-vpd3": { 
			label:"Modificare mesajelor altora în paginile de discuții", 
			summary:"Avertizare: Modificare mesajelor altora în paginile de discuții" 
		},
		"au-discuții3": { 
			label:"Utilizarea Wikipediei ca pe un forum", 
			summary:"Avertizare: Utilizarea Wikipediei ca pe un forum" 
		},
	},
	level4: {
		"au-vandalism4": { 
			label:"Vandalism", 
			summary:"Ultimul avertisment: Vandalism" 
		},
		"au-test4": { 
			label:"Modificări de test", 
			summary:"Ultimul avertisment: Modificări de test" 
		},
		"au-ștergeri4": { 
			label:"Ștergerea conținutului paginilor", 
			summary:"Ultimul avertisment: Ștergerea conținutului paginilor" 
		},
		"au-tdel4": { 
			label:"Ștergerea formatelor de întreținere", 
			summary:"Ultimul avertisment: Ștergerea formatelor de întreținere" 
		},
		"au-glumă4": { 
			label:"Glume nepotrivite", 
			summary:"Ultimul avertisment: Glume nepotrivite" 
		},
		"au-pg-nouă4": { 
			label:"Crearea unor pagini nepotrivite", 
			summary:"Ultimul avertisment: Crearea unor pagini nepotrivite" 
		},
		"au-spam4": { 
			label:"Adăugarea unor legături spam", 
			summary:"Ultimul avertisment: Adăugarea unor legături spam" 
		},
		"au-surse4": { 
			label:"Adăugarea unor materiale fără sursă și fără note de subsol", 
			summary:"Ultimul avertisment: Adăugarea unor materiale fără sursă și fără note de subsol" 
		},
		"au-biog4": { 
			label:"Adăugarea unor informații controversate fără note despre personalități în viață", 
			summary:"Ultimul avertisment: Adăugarea unor informații controversate fără note despre personalități în viață" 
		},
		"au-pdvn4": { 
			label:"Lipsă de neutralitate", 
			summary:"Ultimul avertisment: ALipsă de neutralitate" 
		},
		"au-trad4": { 
			label:"Traducere automată", 
			summary:"Ultimul avertisment: Traduceri automate" 
		},
		"au-discuții4": { 
			label:"Utilizarea Wikipediei ca pe un forum", 
			summary:"Ultimul avertisment: Utilizarea Wikipediei ca pe un forum" 
		},
	},
	level4im: {
		"au-vandalism4im": { 
			label:"Vandalism", 
			summary:"Singurul avertisment: Vandalism" 
		},
		"au-ștergeri4im": { 
			label:"Ștergerea conținutului paginilor", 
			summary:"Singurul avertisment: Ștergerea conținutului paginilor" 
		},
		"au-pg-nouă4im": { 
			label:"Crearea unor pagini nepotrivite", 
			summary:"Singurul avertisment: Crearea unor pagini nepotrivite" 
		},
	},
	singlenotice: {
		"au-talkinarticle": { 
			label:"Discuții în articol", 
			summary:"Notificare: Discuții în articol" 
		},
		"nu-commons": { 
			label:"Utilizați Commons", 
			summary:"Notificare: Utilizați Commons" 
		},
		"folosiți diacritice": { 
			label:"Scrieți cu diacritice", 
			summary:"Notificare: Scrieți cu diacritice" 
		},
	},
	singlewarn: {
		"au-copyright": { 
			label:"Încălcarea drepturilor de autor", 
			summary:"Avertizare: Încălcarea drepturilor de autor" 
		},
	},
	block: {
		"blocat": {
			'label':"Blocare",
			'summary':"Blocare"
		},
	}
};

// Set to true if the template is always for an indef block
twinklewarn.indefBlockHash = {
	'blocat': false
};

// Set to true if the template supports the page parameter
twinklewarn.pageHash = {
	'blocat': false
};

// Set to true if the template supports the reason parameter and isn't the same as its super-template when a reason is provided
twinklewarn.reasonHash = {
	'au-block': true
};

twinklewarn.prev_block_timer = null;
twinklewarn.prev_article = null;
twinklewarn.prev_reason = null;

twinklewarn.callback.change_category = function twinklewarnCallbackChangeCategory(e) {
	var value = e.target.value;
	var sub_group = e.target.root.sub_group;
	var messages = twinklewarn.messages[ value ];
	sub_group.main_group = value;
	var old_subvalue = sub_group.value;
	if( old_subvalue ) {
		old_subvalue = old_subvalue.replace(/\d*(im)?$/, '' );
		var old_subvalue_re = new RegExp( RegExp.escape( old_subvalue ) + "(\\d*(?:im)?)$" );
	}

	while( sub_group.hasChildNodes() ){
		sub_group.removeChild( sub_group.firstChild );
	}

	for( var i in messages ) {
		var selected = false;
		if( old_subvalue && old_subvalue_re.test( i ) ) {
			selected = true;
		}
		var elem = new QuickForm.element( { type:'option', label:"[" + i + "]: " + messages[i].label, value:i, selected: selected } );
		
		sub_group.appendChild( elem.render() );
	}

	if( value == 'block' ) {
		var more = new QuickForm.element( {
				type: 'input',
				name: 'block_timer',
				label: 'Perioada de blocare: ',
				tooltip: 'Perioada de blocare este de, de exemplu 24 de ore, 2 săptămâni, nelimitat etc...'
			} );
		e.target.root.insertBefore( more.render(), e.target.root.lastChild );
		if(!(twinklewarn.prev_block_timer === null)) {
			e.target.root.block_timer.value = twinklewarn.prev_block_timer;
			twinklewarn.prev_block_timer = null;
		}		
		if(twinklewarn.prev_article === null) {
			twinklewarn.prev_article = e.target.root.article.value;
		}
		e.target.root.article.disabled = true;
		e.target.root.article.value = '';
	} else if( e.target.root.block_timer ) {
		if(!e.target.root.block_timer.disabled && twinklewarn.prev_block_timer === null) {
			twinklewarn.prev_block_timer = e.target.root.block_timer.value;
		}
		e.target.root.removeChild( e.target.root.block_timer.parentNode );
		if(e.target.root.article.disabled && !(twinklewarn.prev_article === null)) {
			e.target.root.article.value = twinklewarn.prev_article;
			twinklewarn.prev_article = null;
		}
		e.target.root.article.disabled = false;
		if(e.target.root.reason.disabled && !(twinklewarn.prev_reason === null)) {
			e.target.root.reason.value = twinklewarn.prev_reason;
			twinklewarn.prev_reason = null;
		}
		e.target.root.reason.disabled = false;
	}
}

twinklewarn.callback.change_subcategory = function twinklewarnCallbackChangeSubcategory(e) {
	var main_group = e.target.main_group;
	var value = e.target.value;

	if( main_group == 'singlewarn' ) {
		if( value == 'au-username' ) {
			if(twinklewarn.prev_article === null) {
				twinklewarn.prev_article = e.target.form.article.value;
			}
			e.target.form.article.disabled = true;
			e.target.form.article.value = '';
		} else if( e.target.form.article.disabled ) {
			if(!(twinklewarn.prev_article === null)) {
				e.target.form.article.value = twinklewarn.prev_article;
				twinklewarn.prev_article = null;
			}
			e.target.form.article.disabled = false;
		}
	} else if( main_group == 'block' ) {
		if( twinklewarn.indefBlockHash[ value ] ) {
			if(twinklewarn.prev_block_timer === null) {
				twinklewarn.prev_block_timer = e.target.form.block_timer.value;
			}
			e.target.form.block_timer.disabled = true;
			e.target.form.block_timer.value = 'indef';
		} else if( e.target.form.block_timer.disabled ) {
			if(!(twinklewarn.prev_block_timer === null)) {
				e.target.form.block_timer.value = twinklewarn.prev_block_timer;
				twinklewarn.prev_block_timer = null;
			}
			e.target.form.block_timer.disabled = false;
		}

		if( twinklewarn.pageHash[ value ] ) {
			if(!(twinklewarn.prev_article === null)) {
				e.target.form.article.value = twinklewarn.prev_article;
				twinklewarn.prev_article = null;
			}
			e.target.form.article.disabled = false;
		} else if( !e.target.form.article.disabled ) {
			if(twinklewarn.prev_article === null) {
				twinklewarn.prev_article = e.target.form.article.value;
			}
			e.target.form.article.disabled = true;
			e.target.form.article.value = '';
		}

		if( twinklewarn.reasonHash[ value ] ) {
			if(!(twinklewarn.prev_reason === null)) {
				e.target.form.reason.value = twinklewarn.prev_reason;
				twinklewarn.prev_reason = null;
			}
			e.target.form.reason.disabled = false;
		} else if( !e.target.form.reason.disabled ) {
			if(twinklewarn.prev_reason === null) {
				twinklewarn.prev_reason = e.target.form.reason.value;
			}
			e.target.form.reason.disabled = true;
			e.target.form.reason.value = '';
		}
	}
}

twinklewarn.callbacks = {
	main: function( self ) {
		var form = self.responseXML.getElementById( 'editform' );
		var text = form.wpTextbox1.value;

		var history_re = /\<\!\-\-\ Template\:(au\-.*?)\ \-\-\>.*?(\d{1,2}:\d{1,2}, \d{1,2} \w+ \d{4}) \(UTC\)/g;
		var history = {};
		var latest = { date:new Date( 0 ), type:'' };
		var current;

		while( ( current = history_re.exec( text ) ) != undefined ) {
			var current_date = new Date( current[2] + ' UTC' );
			if( !( current[1] in history ) ||  history[ current[1] ] < current_date ) {
				history[ current[1] ] = current_date;
			}
			if( current_date > latest.date ) {
				latest.date = current_date;
				latest.type = current[1];
			}
		}

		var date = new Date();

		if( self.params.sub_group in history ) {
			var temp_time = new Date( history[ self.params.sub_group ] );
			temp_time.setUTCHours( temp_time.getUTCHours() + 24 );

			if( temp_time > date ) {
				Status.info( 'Info', "o avertizare " + self.params.sub_group + " identică a fost dată în ultimele 24 de ore" );
				if( !confirm( "Doriți să adăugați avertizarea/notificarea?" ) ) {
					self.statelem.info( 'revocat la cerere' );
					return;
				}
			}
		}

		latest.date.setUTCMinutes( latest.date.getUTCMinutes() + 1 ); // after long debate, one minute is max

		if( latest.date > date ) {
			Status.info('Info', "o avertizare " + latest.type + " a fost dată în ultimul minut" );
				if( !confirm( "Doriți să adăugați avertizarea/notificarea?" ) ) {
					self.statelem.info( 'revocat la cerere' );
					return;
				}
		}
		
		var mainheaderRe = /==+\\s*Avertizări\\s*==+/;
		var headerRe = new RegExp( "^==+\\s*(?:" + date.getUTCMonthName() + '|' + date.getUTCMonthNameAbbrev() +  ")\\s+" + date.getUTCFullYear() + "\\s*==+", 'm' );

		if( text.length > 0 ) {
			text += "\n";
		}

		if( self.params.main_group == 'block' ) {
			var article = '', reason = '', time = null;
			
			if( TwinkleConfig.blankTalkpageOnIndefBlock && self.params.sub_group != 'au-lblock' && ( twinklewarn.indefBlockHash[ self.params.sub_group ] || /indef|\*|max/.exec( self.params.block_timer ) ) ) {
				/*Status.info( 'Info', 'Blanking talk page per preferences and createing a new level 2 heading for the date' );
				/*text = "== " + date.getUTCMonthName() + " " + date.getUTCFullYear() + " ==\n";*/
			} else if( !headerRe.exec( text ) ) {
				/*Status.info( 'Info', 'Will create a new level 2 heading for the date, as none was found for this month' );*/
				/*text += "== " + date.getUTCMonthName() + " " + date.getUTCFullYear() + " ==\n";*/
			}
			
			if( self.params.article && twinklewarn.pageHash[ self.params.sub_group ] ) {
				article = '|page=' + self.params.article;
			}
			
			if( self.params.reason && twinklewarn.reasonHash[ self.params.sub_group ] ) {
				reason = '|2=' + self.params.reason;
			}
			
			if( /te?mp|^\s*$|min/.exec( self.params.block_timer ) || twinklewarn.indefBlockHash[ self.params.sub_group ] ) {
				time = '';
			} else if( /indef|\*|max/.exec( self.params.block_timer ) ) {
				time = '|indef=yes';
			} else {
				time = '|time=' + self.params.block_timer;
			}

			text += "\{\{subst:" + self.params.sub_group + article + time + reason + "|sig=true|subst=subst:\}\}";
		} else {
			if( !headerRe.exec( text ) ) {
				/*Status.info( 'Info', 'Will create a new level 2 heading for the date, as none was found for this month' );
				text += "== " + date.getUTCMonthName() + " " + date.getUTCFullYear() + " ==\n";*/
			}

			if( self.params.sub_group == 'au-username' ) {
				text += "\{\{subst:" + self.params.sub_group + ( self.params.reason ? '|1=' + self.params.reason : '' ) + "|subst=subst:\}\} \~\~\~\~";
			} else {
				text += "\{\{subst:" + self.params.sub_group + ( self.params.article ? '|1=' + self.params.article : '' ) + "|subst=subst:\}\}" + (self.params.reason ? " ''" + self.params.reason + "'' ": ' ' ) + "\~\~\~\~";
			}
		}
		
		if ( TwinkleConfig.showSharedIPNotice && isIPAddress( wgTitle ) ) {
			Status.info( 'Info', 'Adăugare notificare ip partajat' );
			switch( QueryString.get( 'type' ) ) {
			case 'vand':
				text +=  "\n:''Dacă această [[adresă IP]] este partajată, și dvs nu ați făcut [[Wikipedia:Vandalism|modificări neconstructive]], vă puteți [[Special:Autentificare|crea un cont de utilizator]] al dumneavoastră pentru a ocoli eventuale avertizări irelevante.'' ";
				break;
			default:
				text +=  "\n:''Dacă această [[adresă IP]] este partajată, și nu ați efectuat dvs modificarea, vă puteți [[Special:Autentificare|crea un cont de utilizator]] al dumneavoastră pentru a ocoli eventuale avertizări irelevante.'' ";
				break;
			}
		}
		var postData = {
			'wpMinoredit': form.wpMinoredit.checked ? 1 : undefined,
			'wpWatchthis': (form.wpWatchthis.checked || TwinkleConfig.watchWarnings) ? 1 : undefined,
			'wpStarttime': form.wpStarttime.value,
			'wpEdittime': form.wpEdittime.value,
			'wpAutoSummary': form.wpAutoSummary.value,
			'wpEditToken': form.wpEditToken.value,
			'wpSection': '',
			'wpSummary': twinklewarn.messages[self.params.main_group][self.params.sub_group].summary + ( self.params.article ? ' la [[' + self.params.article + ']]'  : '' ) + '.' + TwinkleConfig.summaryAd,
			'wpTextbox1': text
		};

		self.post( postData );
	}
}

twinklewarn.callback.evaluate = function twinklewarnCallbackEvaluate(e) {

	// First, check to make sure a reason was filled in if au-username was selected
	
	if(e.target.sub_group.value == 'au-username' && e.target.reason.value.trim() == '') {
		alert("Trebuie să introduceți un motiv pentru formatul {{au-username}}");
		return;
	}

	// Then, grab all the values provided by the form
	
	var params = {
		reason: e.target.reason.value,
		main_group: e.target.main_group.value,
		sub_group: e.target.sub_group.value,
		article: e.target.article.value.replace( /^(Imagine|Categorie):/i, ':$1:' ),
		block_timer: e.target.block_timer ? e.target.block_timer.value : null
	}

	Status.init( e.target );

	var query = { 
		'title': wgPageName, 
		'action': 'submit'
	};
	Wikipedia.actionCompleted.redirect = wgPageName;
	Wikipedia.actionCompleted.notice = "Avertizare efectuată cu succes, reîncarc pagina de discuții în câteva secunde";
	var wikipedia_wiki = new Wikipedia.wiki( 'Modificarea paginii de utilizator', query, twinklewarn.callbacks.main );
	wikipedia_wiki.params = params;
	wikipedia_wiki.followRedirect = true;
	wikipedia_wiki.get();
}