Μετά την αποθήκευση πρέπει να καθαρίσετε την κρυφή μνήμη (cache) του browser σας για να δείτε τις αλλαγές: Σε Chrome, Firefox, Safari, Internet Explorer και Edge: Κρατήστε πατημένο το Shift και κάντε κλικ στο κουμπί Ανανέωση στην μπάρα εργαλείων.

/*
 * @author: [[:pl:User:Dodek]] (idea and text)
 * @author: [[:pl:User:Adziura]] (idea and text)
 * @author: [[:pl:User:Nux]] (implementation)
 * @author: [[:pl:User:Saper]] (implementation)
 * @author: [[:pl:User:Beau]] (implementation)
 * @author: [[:pt:User:Helder.wiki]] (implementation)
 * @author: [[:el:User:Geraki]] (implementation)
 */

if(mw.config.get('wgNamespaceNumber')===0 && wgRevisionId===0){
$('#footer').prepend('<table style="border: 1px solid #a7d7f9; padding:5px; font-size:90%; background-color:#fff;"><tr>' + 
'<th colspan="2" style="text-align:left;">Βοηθήστε να βελτιωθεί το λήμμα</th></tr>' + 
'<tr><td style="font-size:90%;">Βρήκατε κάποιο σφάλμα ή παράλειψη;<br />' + 
'Μπορείτε να το αναφέρετε στη σελίδα συζήτησης για το λήμμα.</td><td>' + 
'<p><span id="n-bug_in_article" class="ui-button-text plainlinks"><a class="external text" ' + 
'href="https://el.wikipedia.org/w/index.php?title=' + mw.config.get('wgPageName') +
'&amp;preload=MediaWiki:ΈναρξηΑναφοράς&amp;editintro=MediaWiki:ΠροςΣυζήτηση&amp;action=edit&amp;section=new">' + 
'<span class="mw-ui-button mw-ui-progressive">Πρόταση για διόρθωση</span></a></span></p>' + 
'</td></tr><tr>' + 
'<td colspan="2"><small class="plainlinks">Αλλά να θυμάστε ότι μπορείτε να ' + 
'προχωρήσετε ο ίδιος στη διόρθωση των λαθών που βρήκατε, πατώντας "επεξεργασία" ' + 
'στην κορυφή της σελίδας (<a class="external text" ' + 
'href="https://el.wikipedia.org/w/index.php?title=' + mw.config.get('wgPageName') + '&tour=firsteditve">δείτε πως</a>).</small>' + 
'</td></tr></table>'
);
}

/* Translatable strings */
mw.messages.set( {
	'wikibugs-dialog-title': 'Πρόταση για διόρθωση',
	'wikibugs-open-form-button': 'Εμπρός στη φόρμα',
	'wikibugs-edit-page-button': 'Βελτίωσέ το ο ίδιος',
	'wikibugs-cancel-button': 'Άκυρο',
	'wikibugs-submit-report-button': 'Αποθήκευση',
	'wikibugs-ip-address-notice': '<b>Σημείωση:</b> Η διεύθυνση IP σας θα αποθηκευτεί στο ιστορικό της σελίδας.',
	'wikibugs-page-name-label': 'Όνομα σελίδας:<br/><small>(μαζί με το "Αρχείο:" αν αναφέρετε ένα σφάλμα σε αρχείο/εικόνα)</small>',
	'wikibugs-report-content-label': 'Περιεχόμενο αναφοράς:',
	'wikibugs-report-content-placeholder': 'Περιγράψτε το σφάλμα όσο το δυνατόν ακριβέστερα. Εάν μπορείτε, να δώστε την πηγή των πληροφοριών σας.',
	'wikibugs-signature-label': 'Υπογραφή (δημόσια):',
	'wikibugs-edit-error': '',
	'wikibugs-token-error': '',
	'wikibugs-unknown-token-error': '',
	'wikibugs-ajax-error': 'Παρουσιάστηκε σφάλμα κατά την αποστολή της αναφοράς. Παρακαλούμε δοκιμάστε ξανά.',
	'wikibugs-incomplete-information': 'Περιγράψτε με ακρίβεια το σφάλμα - η περιγραφή που εισάγατε είναι πολύ μικρή.',
	'wikibugs-invalid-page': 'Πληκτρολογήστε το όνομα.',
	'wikibugs-reported-by': ' Αναφορά: $1',
	'wikibugs-file-section-line': '<!--  -->',
	'wikibugs-page-section-line': '<!--  -->',
	'wikibugs-bad-reports-text': '<p>Αυτή η φόρμα <b>δεν εξυπηρετεί</b> στο να ' +
		'υποβάλλετε αιτήσεις για την ανάπτυξη ή τη δημιουργία νέων λημμάτων. Δείτε τη σελίδα:</p><ul>' +
		'<li><a href="' + mw.util.getUrl( 'Βικιπαίδεια:Προτεινόμενα λήμματα' ) + '">' +
		'Προτεινόμενα λήμματα</a></li></ul><p>Η Βικιπαίδεια δεν δίνει καμία συμβουλή κατόπιν αιτήματος. ' +
		'Αν έχετε ένα αίτημα για την παροχή συμβουλών, <b>μην το αναφέρετε εδώ</b>.</p>' +
		'<p>Πληροφορίες σχετικά με το πώς να επικοινωνήσετε με την Βικιπαίδεια, μπορούν να βρεθούν στην:</p>' +
		'<ul><li><a href="' + mw.util.getUrl( 'Βικιπαίδεια:Επικοινωνία' ) + '">Επικοινωνία</a></li></ul>',
	'wikibugs-article-intro': '<p style="margin-top:0px;">Ήρθατε εδώ για να αναφέρετε σφάλματα ' +
		'που βρέθηκαν σε ένα από τα λήμματα της Βικιπαίδειας. Αν είναι δυνατόν, προσθέστε ' +
		'μια πηγή των πληροφοριών στις οποίες διαπιστώνεται η ύπαρξη του σφάλματος ή παράλειψης.</p> ' +
		'<p>Έχουμε επίγνωση του γεγονότος ότι κάποιοι αναγνώστες της Βικιπαίδειας για ' +
		'μια σειρά από λόγους μπορεί να μην θέλουν να βελτιώσουν οι ίδιοι τα λήμματα, ' +
		'αλλά να θυμάστε ότι η Βικιπαίδεια είναι ένα ' +
		'<a href="' + mw.util.getUrl( 'Wiki' ) + '">wiki</a> ' +
		'και <a href="' + mw.util.getUrl( 'Βικιπαίδεια:Μη διστάζετε' ) + '">' +
		'δεν πρέπει να διστάζετε</a> να προχωρήσετε στη διόρθωση των λαθών που βρήκατε. ' +
		'</p><p><b>Αν μπορείτε να το ' +
		'διορθώσετε - μην το αναφέρετε εδώ.</b></p>',
	'wikibugs-image-intro': '<p style="margin-top:0px;">Εδώ μπορείτε να υποβάλλετε εικόνες που παραβιάζουν την άδεια χρήσης, ' +
		'έχουν καλύτερες αντίστοιχες στα Commons, έχουν λανθασμένη περιγραφή κλπ.</p>' +
		'<p><b>Αν μπορείτε να το διορθώσετε - μην το αναφέρετε εδώ.</b></p>',
	'wikibugs-already-reported-notice': '<p style="font-size:80%;"><b>Σημείωση:</b> Αν τοποθετήσατε μια αναφορά σφάλματος, ' +
		'και τώρα έχει φύγει, πιθανό να έχει ήδη διορθωθεί. <ul>' +
		'<li><a href="' + mw.util.getUrl( 'Συζήτηση:'+ mw.config.get('wgTitle') ) + '">' +
		'Δείτε τη σχετική σελίδα συζήτησης</a></li>' +
		'<li><a href="' + mw.util.getUrl( 'Συζήτηση:'+ mw.config.get('wgTitle') ) + '?action=history">' +
		'Ιστορικό των αλλαγών που έγιναν στη σελίδα συζήτησης.</a></li></ul>',
	'wikibugs-footer': '',
	'wikibugs-new-report': 'Νέο σχόλιο ή αναφορά προβλήματος'
} );

var currentTime = new Date();
var month = currentTime.getMonth() + 1 ;
var day = currentTime.getDate();
var year = currentTime.getFullYear();

window.wikiBugsGadget = {
	/**
	 * Version number of this gadget.
	 */
	version: 9,
	/**
	 * A name of a page where reports are saved.
	 */
	reportPage: 'Συζήτηση:'+ mw.config.get('wgTitle') ,
	/**
	 * Black list of pages which reports should not refer to.
	 */
	badPages: [
		'Βικιπαίδεια:Αναφορά σφαλμάτων',
		'Βικιπαίδεια:Επιμέλεια',
		'Βικιπαίδεια:Αναφορά αρχείων',
		'Βικιπαίδεια:Επικοινωνία',
		],
	/**
	 * Define pages where it's not needed or tends to encourage submission of large
	 * volumes of unrelated errors; instead, these load CSS which hides the "Report A Bug" link
	 */
	excludedPages: [
		'Πύλη:Κύρια',
		'Βικιπαίδεια:Πύλη κοινότητας'
		],
	/**
	 * Message shown on pages in the main namespace.
	 */
	articleIntro: '<div id="wbBadReports">' +
		mw.msg( 'wikibugs-bad-reports-text' ) + '</div>' +
		mw.msg( 'wikibugs-article-intro' ) +
		mw.msg( 'wikibugs-already-reported-notice' ) +
		mw.msg( 'wikibugs-footer' ),
	/**
	 * Message shown on pages in the file namespace.
	 */
	imageIntro: '<div id="wbBadReports">' +
		mw.msg( 'wikibugs-bad-reports-text' ) + '</div>' +
		mw.msg( 'wikibugs-image-intro' ) +
		mw.msg( 'wikibugs-already-reported-notice' ) +
		mw.msg( 'wikibugs-footer' ),

	/**
	 * Checks if a title of the page is valid for a report.
	 * @param title A title of the page.
	 */
	isValidPageName: function( title ) {
		// Empty title is not valid
		if ( title === '' ) {
			return false;
		}
		// Special pages are not valid too
		if ( this.getPageNamespaceNumber( title ) === -1 ) {
			return false;
		}
		// Test category
		if ( $.inArray('Αποσαφήνιση', mw.config.get('wgCategories')) > -1) {
			return false;
		}
		// Check black list
		title = this.getRefinedPageName( title );
		return jQuery.inArray( title, this.badPages ) === -1;
	},

	/**
	 * Returns a namespace number of a specifed page.
	 * @param title A title of the page.
	 */
	getPageNamespaceNumber: function( title ) {
		var matches = title.match( /^([^:]+)/ );
		if ( matches ) {
			var key = matches[1].toLowerCase();
			var namespaces = mw.config.get( 'wgNamespaceIds' );
			var result = namespaces[key];
			if ( result !== null ) {
				return result;
			}
		}
		return 0;
	},

	/**
	 * Returns a refined page title.
	 * @param title A title of the page.
	 */
	getRefinedPageName: function( title ) {
		return jQuery.trim( title.replace( /_/g, ' ' ) );
	},

	/**
	 * Sets up the gadget.
	 */
	init: function() {
		var that = this;
		var excluded = false;

		// Special pages and MediaWiki pages are excluded
		if ( jQuery.inArray( mw.config.get( 'wgNamespaceNumber' ), [-1, 8] ) > -1 ) {
			excluded = true;
		} else {
			var name = this.getRefinedPageName( mw.config.get( 'wgPageName' ) );
			excluded = jQuery.inArray( name, this.excludedPages ) !== -1;
		}

		// FIXME: This doesn't exists on "standard", "cologneblue" (no ids) and "nostalgia" (no sidebar)
		var $articleBugLink = jQuery( '#n-bug_in_article' );
		var $imageBugLink = jQuery( '#n-bad-image' );

		if ( excluded ) {
			// Hide the links
			$articleBugLink.hide();
			$imageBugLink.hide();
			return;
		}

		$articleBugLink.find( 'a' )
			.attr( 'href', '#' )
			.click( function( event ) {
				that.open( that.articleIntro );
				event.preventDefault();
			} );

		$imageBugLink.find( 'a' )
			.attr( 'href', '#' )
			.click( function( event ) {
				that.open( that.imageIntro );
				event.preventDefault();
			} );

		// Link on the report-an-error page itself
		jQuery( '#report-bug-link a' ).click( function( event ) {
			that.open( that.articleIntro );
			event.preventDefault();
		} );
	},

	/**
	 * Redirects to the edit page.
	 */
	goToEditPage: function() {
//		var $editLink = jQuery( '#ca-edit' ).find( 'a' );
		var $editLink = jQuery( '#ca-ve-edit' ).find( 'a' );
		window.location = $editLink.attr( 'href' ) || mw.util.getUrl( this.reportPage );
	},

	/**
	 * Shows the dialog window.
	 * @param infoHtml The message content.
	 */
	open: function( infoHtml ) {
		var that = this;

		var can_edit = document.getElementById( 'ca-edit' ) ? true : false;

		var $dialog = jQuery( '<div id="dialogContent"></div>' ).append( infoHtml );

		if ( mw.user.isAnon() ) {
			$dialog.append( '<p>' + mw.msg( 'wikibugs-ip-address-notice' ) + '</p>' );
		}

		var buttons = {};
		buttons[mw.msg( 'wikibugs-cancel-button' )] = function() {
			jQuery( this ).dialog( 'close' );
		};
		buttons[mw.msg( 'wikibugs-open-form-button' )] = function() {
			that.openForm( this );
		};
		if ( can_edit ) {
			buttons[mw.msg( 'wikibugs-edit-page-button' )] = function() {
				that.goToEditPage();
			};
		}

		$dialog.dialog( {
			width: 700,
			height: 500,
			modal: true,
			resizable: false,
			draggable: true,
			closeOnEscape: true,
			dialogClass: 'reportBugDialog',
			title: mw.msg( 'wikibugs-dialog-title' ),
			close: function() {
				jQuery( this ).dialog( 'destroy' ).remove();
			},
			buttons: buttons
		} );
		jQuery( 'div.reportBugDialog button:last' ).focus();
	},
	/**
	 * Shows the form in the dialog window.
	 */
	openForm: function( dialog ) {
		var that = this;

		jQuery( '#dialogContent' ).empty().append(
			'<form name="WikibugForm" enctype="multipart/form-data">' +
			'<fieldset>' +
			'<label for="wbPageTitle">' + mw.msg( 'wikibugs-page-name-label' ) + '</label>' +
			'<input id="wbPageTitle" type="text" name="wbPageTitle" class="text ui-widget-content ui-corner-all" />' +
			'<label for="wbText">' + mw.msg( 'wikibugs-report-content-label' ) + '</label>' +
			'<textarea id="wbText" name="wbText" rows="6" class="text ui-widget-content ui-corner-all">' +
			mw.msg( 'wikibugs-report-content-placeholder' ) + '</textarea>' +
			'<label for="wbAuthor">' + mw.msg( 'wikibugs-signature-label' ) + '</label>' +
			'<input id="wbAuthor" type="text" class="text ui-widget-content ui-corner-all"/>' +
			'</fieldset>' +
			'<img id="wikibugs-loading-icon" src="//upload.wikimedia.org/wikipedia/commons/4/49/Linux_Ubuntu_Loader.gif" style="display:none;"/>' +
			'</form>'
		);

		var buttons = {};
		buttons[mw.msg( 'wikibugs-cancel-button' )] = function() {
			jQuery( this ).dialog( 'close' );
		};
		buttons[mw.msg( 'wikibugs-submit-report-button' )] = function() {
			that.submitForm();
		};

		jQuery( dialog ).dialog( 'option', 'buttons', buttons );

		jQuery( '#wbText' ).focus( function() {
			if ( this.value === mw.msg( 'wikibugs-report-content-placeholder' ) ) {
				this.value = '';
			}
		} );

		if ( this.isValidPageName( mw.config.get( 'wgPageName' ) ) ) {
			jQuery( '#wbPageTitle' ).val( this.getRefinedPageName( mw.config.get( 'wgPageName' ) ) );
		}

		if ( !mw.user.isAnon() ) {
			var author = document.getElementById( 'wbAuthor' );
			author.value = '~~' + '~~';
			author.disabled = 'disabled';
		}
	},

	/**
	 * Indicates wheter submit should be ignored.
	 */
	suppressSubmit: false,

	/**
	 * Sends the contents of the form.
	 */
	submitForm: function() {
		if ( this.suppressSubmit ) {
		    return;
		}

		var form = document.forms.WikibugForm;
		var content = form.wbText.value;

		if ( content === mw.msg( 'wikibugs-report-content-placeholder' ) ||
		    content.length < 20 ||
		    !content.match( ' ' ) ) {
			// Description too short or unchanged
			alert( mw.msg( 'wikibugs-incomplete-information' ) );

			form.wbText.focus();
			return;
		}
		content = jQuery.trim( content );

		// Append a signature to the report
		if ( !mw.user.isAnon() ) {
			content += mw.msg( 'wikibugs-reported-by', '~~' + '~~' );
		} else {
			content += mw.msg( 'wikibugs-reported-by', form.wbAuthor.value + ' ~~' + '~~' );
		}

		var reportedPage = this.getRefinedPageName( form.wbPageTitle.value.replace( /[\[\]]/g, '' ) );
		var isFile = this.getPageNamespaceNumber( reportedPage ) === 6;

		if ( !this.isValidPageName( reportedPage ) ) {
			alert( mw.msg( 'wikibugs-invalid-page' ) );

			var refinedPageName = this.getRefinedPageName( mw.config.get( 'wgPageName' ) );
			if ( this.isValidPageName( refinedPageName ) ) {
				form.wbPageTitle.value = refinedPageName;
			} else {
				form.wbPageTitle.value = '';
				form.wbPageTitle.focus();
			}
			return;
		}

		this.suppressSubmit = true;
		var $loadingIcon = jQuery( '#wikibugs-loading-icon' );
		$loadingIcon.show();

//		var toInsert = '=== [[:' + reportedPage + ']] ===\n\n{{Αναφορά προβλήματος|νέο}}\n' + content;
		var toInsert = '== Σχόλιο '+ day +'-' + month + '-' + year + '==\n\n{{Αναφορά προβλήματος|νέο}}\n' + content;

		//initialise the API
		var api = JsMwApi( mw.util.wikiScript( 'api' ) );
		//get the page object
		var pageHandler = api.page( this.reportPage );

		var reportPage = this.reportPage.replace( / /g, '_' );

		//EDIT THE "REPORT AN ERROR" PAGE
		pageHandler.edit( function( text, save_function, res ) {
			//process the wikitext of the page
			var sectionLine;
			if ( isFile ) {
				sectionLine = mw.msg( 'wikibugs-file-section-line' );
			} else {
				sectionLine = mw.msg( 'wikibugs-page-section-line' );
			}

			var newText = text.replace( sectionLine, sectionLine + '\n\n' + toInsert );
			if ( text === newText ) {
				// Could not find the section line - simply append;
				newText = text + '\n\n' + toInsert;
			}

			//save the new content
			save_function(
				newText, {
//					summary: mw.msg( 'wikibugs-new-report', reportedPage ),
					summary: mw.msg( 'wikibugs-new-report' ),
					minor: false
				}, function( res ) {
					if ( res && res.edit && res.edit.result && res.edit.result === 'Success' ) {
						//saved successfully - go to the report page
						window.location = mw.util.getUrl(reportPage) + '#' + encodeURIComponent(
							encodeURI( reportedPage ).replace( /%/g, '.' ) )
							.replace( /%/g, '.' )
							.replace( /\.3A/g, ':' )
							.replace( /\.20/g, '_' )
							.replace( /\(/g, '.28' )
							.replace( /\)/g, '.29' );

						if ( mw.config.get( 'wgPageName' ) === reportPage ) {
							//we're already there
							window.location.reload();
						}
					} else {
						//handle the error
						alert( mw.msg( 'wikibugs-ajax-error' ) );
						this.suppressSubmit = false;
						$loadingIcon.hide();
					}
			} );
		} );
	}
};

jQuery( document ).ready( function() {
	wikiBugsGadget.init();
} );