מדיה ויקי:Gadget-Revert.js

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

  • פיירפוקס / ספארי: להחזיק את המקש Shift בעת לחיצה על טעינה מחדש (Reload) או ללחוץ על צירוף המקשים Ctrl-F5 או Ctrl-R (במחשב מק: ⌘-R).
  • גוגל כרום: ללחוץ על צירוף המקשים Ctrl-Shift-R (במחשב מק: ⌘-Shift-R).
  • אינטרנט אקספלורר / אדג': להחזיק את המקש Ctrl בעת לחיצה על רענן (Refresh) או ללחוץ על צירוף המקשים Ctrl-F5.
  • אופרה: ללחוץ על Ctrl-F5.
/* תקציר עריכה אוטומטי בעת עריכת גרסה ישנה של דף */
( function () {
	
	'use strict';
	
	var revId = mw.util.getParamValue( 'oldid' );
	
	if ( revId ) {
		$( addRevertSummary );
	}
	
	function addRevertSummary() {
		
		var pageId = mw.config.get( 'wgArticleId' );
		
		var apiParams = {
			prop: 'revisions',
			pageids: pageId,
			rvprop: 'user|timestamp',
			rvlimit: 1,
			rvstartid: revId,
			rvendid: revId
		};
		
		new mw.Api().get( apiParams ).then( function ( data ) {
			
			var revUser, revTimestamp;
			
			try {
				revUser = data.query.pages[ pageId ].revisions[ 0 ].user;
				revTimestamp = data.query.pages[ pageId ].revisions[ 0 ].timestamp;
			} catch ( e ) {
				return; // Safeguard against TypeError, just in case
			}
			
			var dateParams = {
				timeZone: 'Asia/Tel_Aviv',
				dateStyle: 'long',
				timeStyle: 'short',
				hourCycle: 'h23'
			};
			
			var revDateAndTime = new Date( revTimestamp )
				.toLocaleString( 'he-IL', dateParams )
				.split( ' בשעה ' );
			
			var revDate = revDateAndTime[ 0 ];
			
			var revTime = revDateAndTime[ 1 ];
			
			if ( revTime.split( ':' )[ 0 ].length === 1 ) {
				revTime = '0' + revTime;
			}
			
			revDateAndTime = revTime + ', ' + revDate;
			
			var revertSummary =
				'שחזור לגרסה [[Special:PermaLink/' + revId + '|' + revId + ']] ' +
				'מ־' +  revDateAndTime + ' מאת [[:User:' + revUser + '|' + revUser + ']]';
			
			var $summaryInput = $( '#wpSummary' );
			
			if ( mw.config.get( 'wgAction' ) === 'edit' && $summaryInput.length ) {
				$summaryInput.val( revertSummary );
			}
			
			mw.hook( 've.saveDialog.stateChanged' ).add( function () {
				ve.init.target.saveDialog.$body
				.find( '.ve-ui-mwSaveDialog-summary textarea' )
				.val( revertSummary );
			} );
			
		} );
		
	}
	
} )();