ميدياويكي:Gadget-Purgetab.js

من ويكي مصدر، المكتبة الحرة

ملاحظة: بعد النشر، أنت قد تحتاج إلى إفراغ الكاش الخاص بمتصفحك لرؤية التغييرات.

  • فايرفوكس / سافاري: أمسك Shift أثناء ضغط Reload، أو اضغط على إما Ctrl-F5 أو Ctrl-R (⌘-R على ماك)
  • جوجل كروم: اضغط Ctrl-Shift-R (⌘-Shift-R على ماك)
  • إنترنت إكسبلورر/إيدج: أمسك Ctrl أثناء ضغط Refresh، أو اضغط Ctrl-F5
  • أوبرا: اضغط Ctrl-F5.
/**
 * Add "Purge" content action link.
 *
 * Dependencies: mediawiki.util, mediawiki.api
 *
 * @source https://en.wikisource.org
 * 
 */

( function ( $, mw ) {

	$( function () {

		var link,

			strings = {
				long: {
					purge: 'إفراغ الاختزان',
					hpurge: 'إفراغ الاختزان الشديد',
					nulled: 'تعديل صفري'
				},
				short: {
					purge: '*',
					hpurge: '**',
					nulled: '***'
				},
				help: {
					purge: 'إفراغ اختزان هذه الصفحة',
					hpurge: 'إفراغ الاختزان مع فرض تحديث جدول الارتباطات المتعلقة',
					nulled: 'إجراء تعديل صفري على الصفحة'
				}
			},

			stringType = ( mw.user.options.get( 'skin' ) === 'vector' ) ? 'long' : 'short',

			errorLog = function ( msg ) {
				/* eslint-disable-next-line no-console */
				console.error( msg );
			},

			afterPurgeFunction = function () {
				location.reload();
			},

			httpErrorHandler = function ( code, details ) {
				var mesg;
				switch ( code ) {
					case 'http':
						mesg = 'HTTP error: ' + details.xhr.statusText;
						break;
					case 'ok-but-empty':
						mesg = 'تلقى استجابة فارغة.';
						break;
					default:
						mesg = details.error.info;
				}
				mw.util.jsMessage( '<b>فشل إفراغ الاختزان الشديد</b>: ' + mesg );
				errorLog( arguments );
			},

			doPurge = function ( hard ) {
				mw.loader.using( 'mediawiki.api' ).done( function () {
					var params = {
						action: 'purge',
						pageids: mw.config.get( 'wgArticleId' )
					};
					if ( hard ) {
						params.forcerecursivelinkupdate = 1;
						params.redirects = 1;
					}
					new mw.Api()
						.post( params )
						.then( afterPurgeFunction, httpErrorHandler );
				} );
			},

			doNullEdit = function () {
				mw.loader.using( 'mediawiki.api' ).done( function () {
					new mw.Api().post( {
						action: 'edit',
						pageid: mw.config.get( 'wgArticleId' ),
						appendtext: '',
						watchlist: 'nochange',
						nocreate: '1',
						token: mw.user.tokens.get( 'csrfToken' )
					} )
						.then( afterPurgeFunction, httpErrorHandler );
				} );
			};

		if ( !mw.config.get( 'wgArticleId' ) ) {
			return;
		}

		link = mw.util.addPortletLink(
			'p-cactions', '#', strings[ stringType ].purge,
			'ca-purge', strings.help.purge, '*'
		);

		if ( link ) {
			link.addEventListener( 'click', function ( ev ) {
				doPurge( false );
				ev.preventDefault();
			}, false );
		}
		link = mw.util.addPortletLink(
			'p-cactions', '#', strings[ stringType ].hpurge,
			'ca-purge-forcerecursivelinkupdate', strings.help.hpurge, ','
		);
		if ( link ) {
			link.addEventListener( 'click', function ( ev ) {
				doPurge( true );
				ev.preventDefault();
			}, false );
		}
		link = mw.util.addPortletLink(
			'p-cactions', '#', strings[ stringType ].nulled,
			'ca-nulledit', strings.help.nulled, '0'
		);
		if ( link ) {
			link.addEventListener( 'click', function ( ev ) {
				doNullEdit();
				ev.preventDefault();
			}, false );
		}

	} );

/* eslint-disable-next-line no-undef */
}( jQuery, mediaWiki ) );