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

من كوبتيكبيديا
اذهب إلى التنقلاذهب الى البحث
لم تعد النسخة القابلة للطباعة مدعومة وقد تحتوي على أخطاء في العرض. يرجى تحديث علامات متصفحك المرجعية واستخدام وظيفة الطباعة الافتراضية في متصفحك بدلا منها.

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

  • فايرفوكس / سافاري: أمسك Shift أثناء ضغط Reload، أو اضغط على إما Ctrl-F5 أو Ctrl-R (⌘-R على ماك)
  • جوجل كروم: اضغط Ctrl-Shift-R (⌘-Shift-R على ماك)
  • إنترنت إكسبلورر/إيدج: أمسك Ctrl أثناء ضغط Refresh، أو اضغط Ctrl-F5
  • أوبرا: اضغط Ctrl-F5.
// A gadget from Polish Wikipedia, originally adapted for the Russian-language by [[u:Alex Smotrov]]
// Adjusted to the Arabic language by [[u:FShbib]]

function initSummaryButtons( mode ) {
	function insertSummary( txt ) {
		if ( typeof txt !== 'string' ) {
			txt = this.title;
		}
		if ( typeof summaryItemsSeparator === 'undefined' ) {
			window.summaryItemsSeparator = '،';
		}
		var val = $summary.val();
		var regExp = new RegExp( '(^|[,;.?!/]) ?' + mw.util.escapeRegExp( txt ) );
		if ( regExp.test( val ) ) {
			return;
		}
		if ( /[^,; \/]$/.test( val ) ) {
			val += summaryItemsSeparator;
		}
		if ( /[^ ]$/.test( val ) ) {
			val += ' ';
		}
		$summary.val( val + txt ).focus().change();
	}
	
	mode = mode || 'classic';
	
	if ( typeof summaryButtons === 'undefined' ) {
		window.summaryButtons = {
			hideDefaultButtons: false
		};
	}
	
	var veSaveDialog, $summaryWrapper, $summary;
	if ( mode === 'classic' ) {
		$summaryWrapper = $( '#wpSummaryWidget' );
		$summary = $( '#wpSummary' );
	} else {
		veSaveDialog = ve.init.target.saveDialog;
		$summaryWrapper = veSaveDialog.editSummaryInput.$element;
		$summary = veSaveDialog.editSummaryInput.$input;
	}
	
	var $summaryButtons = $( '<div>' )
		.addClass( 'summaryButtons' )
		.insertAfter( $summaryWrapper );
	var $groups = $( '<div>' )
		.addClass( 'summaryButtons-groups' )
		.appendTo( $summaryButtons );
	
	window.addSumButton = window.addSummaryButton = function ( label, text, group ) {
		group = group || 'custom';  // default is 'default'
		var $group = $( '.summaryButtons-group-' + group );
		if ( !$group.length ) {
			$group = $( '<div>' )
				.addClass( 'mw-ui-button-group summaryButtons-group summaryButtons-group-' + group )
				.appendTo( $groups );
		}
		
		$( '<a>' )
			.attr( 'role', 'button' )
			.attr( 'title', text )
			.addClass( 'mw-ui-button summaryButtons-button' )
			.html( label )
			.click( insertSummary )
			.appendTo( $group );
	};
	
	var buttons = mode !== 'visual' ?
		// Buttons for normal editing mode
		[
			'توسيع| المقالة', 'تنسيق| ويكي', 'تهذيب| المحتوى', 'تدقيق| لغوي وإملائي', 'تحديث| معلومات متقادمة', 
			'وصلات داخلية', 'وصلات خارجية', 'مراجع| (إضافة/إزالة)', 'تصنيفات| (إضافة/إزالة)', 
			'رجوع| عن محتوى [[ويكيبيديا:تخريب|تخريب]] أو إضافة مُخالفة', 'إزالة معلومات غير موثقة', 'إزالة وصلات سبام| حسب [[وب:وخ]]', 
			'رد', 'تعليق', 'اقتراح', 'أرشفة| نقاش'
		] :
		// Buttons for the visual editor - no buttons for discussions (visual editor not intended for use on talk pages)
		[
			'توسيع| المقالة', 'تنسيق| ويكي', 'تهذيب| المحتوى', 'تدقيق| لغوي وإملائي', 'تحديث| معلومات متقادمة', 
			'وصلات داخلية', 'وصلات خارجية', 'مراجع| (إضافة/إزالة)', 'تصنيفات| (إضافة/إزالة)', 
			'رجوع| عن محتوى [[ويكيبيديا:تخريب|تخريب]] أو إضافة مُخالفة', 'إزالة معلومات غير موثقة', 'إزالة وصلات سبام| حسب [[وب:وخ]]'
		];
	
	if ( !summaryButtons.hideDefaultButtons ) {
		$.each(
			buttons,
			function ( i, s ) {
				addSummaryButton( s.replace( /\|.*/, '' ), s.replace( /\|/, '' ), 'default' );
			}
		);
	}
	$( '<a>' )
		.attr( 'href', 'https://ar.wikipedia.org/wiki/ويكيبيديا:أزرار_ملخصات_التعديل' )
		.attr( 'target', '_blank' )
		.attr( 'title', 'معلومات حول أزرار ملخصات التعديل' )
		.attr( 'tabindex', '-1' )
		.addClass( 'mw-ui-button mw-ui-quiet summaryButtons-info-link' )
		.text( '؟' )
		.appendTo( $summaryButtons );
	
	// Эти стили находятся здесь, а не в отдельном CSS, потому что на страницах, где кнопок нет,
	// они вредны, а за тем, где запускается CSS, мы не можем проследить.
	mw.util.addCSS( '\
		.mw-editform #wpSummaryWidget {\
			margin-bottom: 0;\
		}\
		\
		.mw-editform .editCheckboxes {\
			margin-top: .85714em;\
		}\
	' );
	
	if ( mode !== 'classic' && !additionalCSS ) {
		additionalCSS = mw.util.addCSS( '\
			.ve-ui-mwSaveDialog-savePanel .summaryButtons {\
				margin-top: 2px;\
			}\
			\
			.ve-ui-mwSaveDialog-savePanel .ve-ui-mwSaveDialog-options {\
				border-top: 1px solid #c8ccd1;\
				border-radius: 2px;\
			}\
		' );
		veSaveDialog.updateSize();
	}
	
	mw.hook( 'summaryButtons' ).fire();
}

var additionalCSS;
if ( window.ve && ve.init && ve.init.target && ve.init.target.active || $( '.ve-loading' ).length ) {
	mw.hook( 've.saveDialog.stateChanged' ).add( function () {
		if ( !mw.config.get( 'wgArticleId' ) || $( '.summaryButtons' ).length ) return;
		initSummaryButtons( ve.init.target.getSurface().getMode() );
	} );
} else if ( [ 'edit', 'submit' ].indexOf( mw.config.get( 'wgAction' ) ) !== -1 ) {
	$( function () {
		var frm = document.getElementById( 'editform' );
		if ( !mw.config.get( 'wgArticleId' ) || !frm || $( frm.wpSection ).val() === 'new' ) return;
		initSummaryButtons( 'classic' );
	} );
}