משתמש:Mikey641/MoveToCommons.js

מתוך ויקיפדיה, האנציקלופדיה החופשית

הערה: לאחר הפרסום, ייתכן שיהיה צורך לנקות את זיכרון המטמון (cache) של הדפדפן כדי להבחין בשינויים.

  • פיירפוקס / ספארי: להחזיק את המקש Shift בעת לחיצה על טעינה מחדש (Reload) או ללחוץ על צירוף המקשים Ctrl-F5 או Ctrl-R (במחשב מק: ⌘-R).
  • גוגל כרום: ללחוץ על צירוף המקשים Ctrl-Shift-R (במחשב מק: ⌘-Shift-R).
  • אינטרנט אקספלורר / אדג': להחזיק את המקש Ctrl בעת לחיצה על רענן (Refresh) או ללחוץ על צירוף המקשים Ctrl-F5.
  • אופרה: ללחוץ על Ctrl-F5.
/* הסקריפט מוסיף לשוניות אפשרויות לטיפול בתמונות ו"העברה לוויקישיתוף"
 * נכתב על ידי [[משתמש:ערן]]  */
if ( mw.config.get('wgNamespaceNumber') === 6 ) $( function() {
	if($('#ca-history').length === 0) return;
	var commonsHelperUrl = '//tools.wmflabs.org/commonshelper/?language=he&interface='+mw.config.get('wgContentLanguage')+'&project=wikipedia&&image='+mw.config.get('wgTitle')+'&username='+mw.config.get('wgUserName');
	/*
	  Replace image uses with commons copy or similar file 
	*/
	function replaceFile(newName) {
		var rgxFrom = new RegExp(/.+?:(.+)/.exec(mw.config.get('wgPageName'))[1].replace(/_/g, '[ _]')),
			process = new $.Deferred(),
			api = new mw.Api(),
		 	requiredReplacements = $('.mw-imagepage-linkstoimage a').length;

		mw.notify('מחליף ל' + newName);
		process.progress(function(){
			requiredReplacements--; 
			if(requiredReplacements === 0) {
				mw.notify('כל השימושים בקובץ הוסרו');
				if ( mw.config.get('wgUserGroups').indexOf('sysop') > -1)
				{
					api.postWithToken('edit', { action: 'delete', title: mw.config.get('wgPageName'), reason: '[[וק:וש|הקובץ נמצא בוויקישיתוף]]: [[:File:' + newName + ']]' });
				}
				else
				{
					api.postWithToken('edit', {
						action: 'edit',
						title: 'משתמש:Mikey641/קבצים שהעברתי', 
						summary: '[[:' + mw.config.get('wgPageName') + ']] - [[וק:וש|הקובץ נמצא בוויקישיתוף]]: [[:File:' + newName + ']]' ,
						appendtext: '\n* {{בקשת מחיקה|' + mw.config.get('wgPageName') + '|קיים קובץ זהה בוויקישיתוף: [[:File:' + newName + ']]}} ~~'+'~~',
						tags: 'ניטור_תמונות'
					}).done(function(d) {
						if (d && d.edit && d.edit.result == 'Success') mw.notify('נוספה בקשה בדף המשנה "קבצים שהעברתי"');
					});
				}
			}
		});
		$('.mw-imagepage-linkstoimage a').each(function(){
			var page = $(this).attr('title');
			api.get({action:'parse', page: page, prop: 'wikitext'}).done(function(d){
				var oldText = d.parse.wikitext['*'];
				var newText = d.parse.wikitext['*'].replace(rgxFrom, newName);
				if(oldText!=newText) {
					api.postWithToken('edit', {action:'edit', summary: '[['+mw.config.get('wgPageName') + ']] => [[:קובץ:' + newName +']]', text: newText, title: page, tags: 'ניטור_תמונות' }).done(function(){
					mw.notify('הקובץ הוחלף ב'+page);
					process.notify();
					});
				} else {
					//process.notify();
					mw.notify('הקובץ לא הוחלף ב'+page);
				}
			});
		});
	}
	function RFDM(){
		api.postWithToken('edit', {
			action: 'edit',
			title: 'משתמש:Mikey641/קבצים שהעברתי', 
			summary: 'בקשה למחיקת הקובץ [[' + mw.config.get('wgPageName') + ']]' ,
			appendtext: '\n* {{בקשת מחיקה|' + mw.config.get('wgPageName') + '|' + prompt('אנא הזן סיבה') + '}} ~~'+'~~',
			tags: 'ניטור_תמונות'
		}).done(function(d) {
			if (d && d.edit && d.edit.result == 'Success') mw.notify('נוספה בקשה בדף המשנה "קבצים שהעברתי"');
		});
	}
	function safeReplaceFile(filename) {
		var api = new mw.Api();
		api.get({action: 'query', titles: 'File:' + filename, prop: 'imageinfo', indexpageids: 1}).done(function(d) {
			if ( d.query.pages["-1"] && d.query.pages["-1"].imagerepository === 'shared' ) {
				replaceFile(filename);
			} else if ( d.query.pageids.length === 1 && d.query.pageids[0] != -1) {
				mw.notify('קיים עותק מקומי של הקובץ');
			}
			else {
				mw.notify('הקובץ לא קיים. נא לבדוק ידנית.');
			}
		});
	}

	function replaceToCommons(){
		var api = new mw.Api(), newName;
		if ($('.mw-imagepage-duplicates a').length === 1 ) {
			newName = /.+?:(.+)/.exec($('.mw-imagepage-duplicates a').text())[1].replace('_', ' ');
			replaceFile(newName);
		} else {
			newName = prompt("שם התמונה להחלפה");
			newName = newName.replace(/File:|קובץ:|תמונה:/,'').replace('_', ' ');
			safeReplaceFile(newName);
		}
	}

	function addTemplateAndNotifyUser(reason, template)
	{
		var imgTemplate = '{' + '{ס:תמונה בעייתית|' + reason + '}}',
			user = $('#mw-imagepage-section-filehistory .mw-userlink');
		reason = prompt('סיבה', reason);
		if (!reason) return;
		if (user.length != 1) {
			user = prompt('שם מעלה התמונה', user.text());
			if (!user) return;
		}
		else {
			user = user.text();
		}
		if ( user.indexOf(wgFormattedNamespaces[2]) === -1 ) user = 'משתמש:' + user;

		var api = new mw.Api();
		api.postWithToken('edit', {
			action: 'edit',
			title: mw.config.get('wgPageName'), 
			summary: 'תמונה בעייתית - ' + reason ,
			appendtext: '\n' + imgTemplate,
			tags: 'ניטור_תמונות'
		}).done(function(d) {
			if (d && d.edit && d.edit.result != 'Success') mw.notify('אירעה שגיאה');
			else {
				api.postWithToken('edit', {
					action: 'edit',
					title: 'שיחת ' + user, 
					section: 'new',
					sectiontitle: '[[:' + mw.config.get('wgPageName') + ']]',
					text: '\n{{' + template + '}}\n~~' + '~~',
					tags: 'ניטור_תמונות'
				}).done(function(d) {
					window.location.reload(true);
				});
			}
		});
	}

	/* common messages for handling files*/
	function licenseMissing() { addTemplateAndNotifyUser('נדרשת תבניות רישיון', 'תמונה ללא רישיון'); }
	function otrsMissing() { addTemplateAndNotifyUser('נדרש אישור OTRS', 'אישור OTRS'); }
	function copyvio() { addTemplateAndNotifyUser('התמונה כבר קיימת ברשת/נראה שלא נוצרה על ידי מעלה הקובץ', 'תמונה מוגנת'); }
	function unfairuse() { addTemplateAndNotifyUser('נראה כי התמונה אינה בשימוש הוגן', 'תמונה חופשית'); }
	function unfreeuse() { 	addTemplateAndNotifyUser('נראה כי התמונה אינה תמונה חופשית', 'תמונה בשימוש הוגן'); }
	function sourceMissing() { addTemplateAndNotifyUser('חסר מקור', 'תמונה בשימוש הוגן ללא מקור'); }

	$(mw.util.addPortletLink('p-tb', '#', 'החלפה לתמונה מוויקישיתוף', 't-commons-replace', 'החלפה בתמונה מוויקישיתוף', null, '#t-whatlinkshere')).click(replaceToCommons);
	$(mw.util.addPortletLink('p-tb', '#', 'חסר אישור OTRS', 't-OTRS-missing', 'המשתמש העלה תמונה שמישהו אחר יצר', null, '#t-whatlinkshere')).click(otrsMissing);
	$(mw.util.addPortletLink('p-tb', '#', 'תמונה חסרת רישיון', 't-license-missing', 'לתמונה לא ניתן רישיון', null, '#t-whatlinkshere')).click(licenseMissing);	
	$(mw.util.addPortletLink('p-tb', '#', 'תמונה מוגנת', 't-copyvio', 'התמונה נמצאה במקור חיצוני ולא ברור שמעלה התמונה הוא הבעלים שלה', null, '#t-whatlinkshere')).click(copyvio);
	$(mw.util.addPortletLink('p-tb', '#', 'שימוש הוגן לא תקין', 't-unfairuse', 'הקובץ מוגדר כשימוש הוגן אך אינו שימוש הוגן', null, '#t-whatlinkshere')).click(unfairuse);
	$(mw.util.addPortletLink('p-tb', '#', 'שימוש חופשי שצריך הוגן', 't-unfreeuse', 'תמונה שהועלתה כשימוש חופשי אבל נראית כתמונת שימוש הוגן', null, '#t-whatlinkshere')).click(unfreeuse);
	$(mw.util.addPortletLink('p-tb', '#', 'שימוש הוגן ללא מקור', 't-source-missing', 'התמונה מוגדרת כשימוש הוגן אך חסר לה מקור', null, '#t-whatlinkshere')).click(sourceMissing);
	$(mw.util.addPortletLink('p-tb', '#', 'בקשה למחיקת הקובץ')).click(RFDM);
	mw.util.addPortletLink('p-cactions',commonsHelperUrl,'העברה לוויקישיתוף','#ca-js-moevToCommons');
});