MediaWiki:Upload.js

From Wikimedia Commons, the free media repository
Jump to navigation Jump to search
Note: After saving, you have to bypass your browser's cache to see the changes. Internet Explorer: press Ctrl-F5, Mozilla: hold down Shift while clicking Reload (or press Ctrl-Shift-R), Opera/Konqueror: press F5, Safari: hold down Shift + Alt while clicking Reload, Chrome: hold down Shift while clicking Reload.
/** 
 * LicenseChecker 
 *
 * checks whether the selected license on 
 * [[Special:Upload]] is valid and provides feedback
 *
 * JSHint-validation before saving, please!
 *
 * @author Rillke, 2013
 * @author Bryan, 2007
 * @author Lupo, 2007 - 2011
 * @author DieBuche, 2010
 * @author Dschwen, before 2017
 */
/*global jQuery, mediaWiki, i18n, UFUI*/
/*jshint sub:true, smarttabs:true*/
// <nowiki>
(function($, mw) {
	'use strict';
	var userLang = mw.config.get('wgUserLanguage'),
		userName = mw.config.get('wgUserName'),
		licenseChecker;

	licenseChecker = window.licenseChecker = {
		//
		// List of invalid licenses
		//
		invalid: ["subst:nld", "subst:template 2|cc-by-nc-sa-2.0|flickrreview", "subst:template 2|flickrreview|subst:nld"],

		//
		// Translations of the warning message
		//
		i18n: {
			'de': 'Die ausgewählte <b>Lizenz ist nicht akzeptabel für Wikimedia Commons</b>. Dein <b>Upload wird gelöscht</b> werden!',
			'en': 'The selected licensing is <b>unacceptable on Wikimedia Commons</b> and will lead to the <b>deletion</b> of your upload!',
			'hr': 'Odabrana licencija je <b>neprihvatljiva za Zajednički poslužitelj</b> i vjerojatno će biti <b>obrisana</b> nakon postavljanja!',
			'mk': 'Избраната лиценца е <b>неприфатлива за Ризницата</b>, што значи дека подигнатото ќе биде <b>избришано</b>!',
			'ru': 'Выбранная лицензия <b>не разрешена на Викискладе</b> и приведёт к <b>удалению</b> загруженного файла!',
			'sl': 'Izbrana licenca <b>ni sprejemljiva za Wikimedijino zbirko</b>, zato bo vaša naložena datoteka <b>izbrisana</b>!'
		},

		// Event handler for the license selector
		check: function() {

			this.$warnbanner.empty();
			for (var i = 0; i < this.invalid.length; i++) {
				if (this.$licensemenu.val() === this.invalid[i]) {
					this.$warnbanner.append(this.message);
					return;
				}
			}

		},

		install: function() {
			if (window.UFUI && window.i18n && typeof i18n[UFUI.userLanguage] === 'string') {
				// From UploadForm.js, wgUserLanguage with uselang-hacks removed
				this.message = i18n[UFUI.userLanguage];
			} else {
				this.message = (this.i18n[userLang] || this.i18n.en);
			}

			this.$uploadtext = $('#uploadtext');
			this.$licensemenu = $('#wpLicense');

			// Some forms may not have a license selector (e.g. "fromwikimedia", or reupload forms)
			if (!this.$licensemenu.length) return;

			this.$warnbanner = $('<div class="center"></div>').css({
					color: 'red',
					background: '#eeeeee'
				});

			this.$uploadtext.append(this.$warnbanner);
			$(this.$licensemenu).change(function() {
				licenseChecker.check();
			});
		}

	};

	/***** loadAutoInformationTemplate ********
	 * Adds a link to subpages of current page
	 *
	 *  Maintainers: [[User:Yonidebest]], [[User:Dschwen]]
	 ****/

	function loadAutoInformationTemplate() {
		// Don't use the template for edit summary of reuploading/overwrite action
		if (mw.util.getParamValue('wpDestFile') !== null) return;

		// If user provided a custom value, keep that as-is
		if (mw.util.getParamValue('wpUploadDescription') !== null) return;

		// Honor user configuration
		if (window.JSconfig && window.JSconfig.keys && typeof(window.JSconfig.keys['loadAutoInformationTemplate']) !== 'undefined' && !
			window.JSconfig.keys['loadAutoInformationTemplate']) {
			return;
		}

		var uploadDescription = document.getElementById('wpUploadDescription');

		// ignore fromflickr, as people should use flinfo tool
		// ignore fromwikimedia, as people should use commons helper tool
		if (uploadDescription !== null && !/^(fromflickr|fromwikimedia)$/.test(userLang)) {
			switch (userLang) {
				case "ownwork":
				case "deownwork":
				case "elownwork":
				case "esownwork":
				case "faownwork":
				case "frownwork":
				case "itownwork":
				case "mkownwork":
				case "nlownwork":
				case "noownwork":
				case "plownwork":
				case "ruownwork":
				case "svownwork":
					uploadDescription.value = '{{Information\n|Description=\n|Source={{own}}\n|Date=\n|Author= [[User:' + userName + '|' + userName +
						']]\n|Permission=\n|other_versions=\n}}\n';
					break;
				case "fromgov":
					uploadDescription.value = '{{Information\n|Description=\n|Source=\n|Date=\n|Author=\n|Permission=\n|other_versions=\n}}\n';
					break;
				case "icommons":
					uploadDescription.value =
						'{{Information\n|Description=\n|Source=\n|Date=\n|Author=\n|Permission=\n|other_versions=\n}} \n[[category:iCommons iHeritage]]\n [[category:South Africa]]\n';
					break;
			}

			/// Hide copy & paste template information, if we just prefilled it automatically
			$('#Uploadtext-template-box').hide();
		}
	}
	
	$(document).ready(function() {
		licenseChecker.install();
		loadAutoInformationTemplate();
	
		/* 
		 * Hide on the list of allowed types in the upload form that PDFs can be uploaded. 
		 * Most pdfs shouldn't have been uploaded. Written at the wiki on the best case.
		 * Discourage its use by hiding that it can be uploaded.
		 */
		$("#mw-upload-permitted p").contents().eq(1).each(function() {
			this.data = this.data && this.data.replace(/pdf[,،、] /, "");
		});
		
		/*
		 * Hide "Try UpWiz-Button" when attempting to re-upload
		 */
		if (mw.util.getParamValue('wpForReUpload')) {
			$('#commons-upwiz-advertising-button').hide();
			$('#com-upload-newfile').hide();
			$('#com-upload-overwrite').show();
			var uprup = document.getElementById( 'com-upload-overwrite' );
    	/*
		 * If re-upload warning does not exist, append.
		 */
			if ( !uprup ) {
				$('#uploadtext').append('<br><div align="center" style="color:red" id="com-upload-overwrite">Please mind <b><a href="https://commons.wikimedia.org/wiki/Special:MyLanguage/Commons:Overwriting_existing_files">our guidelines on overwriting existing files</a></b>. You agree to publish your upload under the same <b>license</b> as stated on the file description page.</div><hr>');
			}
		}
	});
}(jQuery, mediaWiki));
//</nowiki>