MediaWiki:Editpage.js: различия между версиями

Материал из Emuverse
(Новая страница: «// Helper function for toolbar buttons function wgImg ( img ) { return '//upload.wikimedia.org/wikipedia/' + img; } function createFuncBtn ( id, func, img, tip…»)
 
(нет различий)

Текущая версия от 17:54, 21 декабря 2015

// Helper function for toolbar buttons

function wgImg ( img ) {
	return '//upload.wikimedia.org/wikipedia/' + img;
}

function createFuncBtn ( id, func, img, tip ) {
	$( '<img id="' + id + '" src="' + wgImg( img ) + '" style="cursor:pointer" ' +
		'title="' + tip + '" alt="' + tip.substr( 0, 3 ) + '" />' )
		.appendTo( '#gadget-toolbar' )
		.click( func );
}


// Toolbar section for gadgets

if ( mw.user.options.get( 'usebetatoolbar' ) ) {
	var gTlbLoc = '#wikiEditor-ui-toolbar';
	mw.util.addCSS( '#gadget-toolbar img { padding:2px; }' +
		'#gadget-toolbar { height:26px; margin:3px; }' );
	$.when(
		mw.loader.using( 'ext.wikiEditor.toolbar' ),
		$.ready
	).then( function() {
		$( '#wpTextbox1' ).wikiEditor( 'addToToolbar', {
			'section': 'main',
			'groups': {
				'gadgets': {}
			}
		} );
		var $groupGadgets = $( '#wikiEditor-section-main .group-gadgets' ),
			$groupFormat = $( '#wikiEditor-section-main .group-format' );
		if ( $groupGadgets.length && $groupFormat.length ) {
			$groupGadgets.insertBefore( $groupFormat );
		}
	} );
} else if ( document.getElementById( 'toolbar' ) ) {
	var gTlbLoc = '#toolbar';
	importMW( 'ToolbarOld' );
} else {
   var gTlbLoc = '#editform';
   importMW( 'ToolbarNone' );
}

function gToolbar() {
	if ( !document.getElementById( 'gadget-toolbar' ) ) {
		var $where = $( gTlbLoc );
		if ( !$where.length ) {
			return; //beta toolbar not ready yet
		}
		$( '<div id="gadget-toolbar" style="float:left" />' ).prependTo( $where );
	}
   
	for ( var id in mwCustomEditButtons ) {
		var b = mwCustomEditButtons[id];
		if ( !b.length ) {
			continue;
		}
		createFuncBtn( id, b[0], b[1], b[2] );
		delete mwCustomEditButtons[id];
	}
}

$( function() {
	gToolbar();
	setTimeout( gToolbar, 2000 );
	setTimeout( gToolbar, 6000 );
} );


// Summary buttons

function insertSummary ( txt ) {
	if ( typeof txt !== 'string' ) {
		txt = this.title;
	}
	var vv = $( '#wpSummary' ).val();
	if ( vv.indexOf( txt ) !== -1 ) {
		return;
	}
	if ( /[^,; \/]$/.test( vv ) ) {
		vv += ',';
	}
	if ( /[^ ]$/.test( vv ) ) {
		vv += ' ';
	}
	$( '#wpSummary' ).val( vv + txt );
}
 
function addSumButton ( btn, txt ) {
	$( '<a title="' + txt + '">' + btn + '</a>' )
		.appendTo( '#userSummaryButtonsA' )
		.click( insertSummary );
}

$( function() {
	var frm = document.getElementById( 'editform' );
	if ( !mw.config.get( 'wgArticleId' ) || !frm || $( frm.wpSection ).val() === 'new' ) {
		return;
	}
	mw.util.addCSS( '\
		input#wpSummary { margin-bottom: 0 }\
		#userSummaryButtonsA a { background:#cef; border:1px solid #adf; padding:0 2px;\
			margin:0 2px;cursor:pointer; font-size:86%; color:#666 }\
		#userSummaryButtonsA a:hover { background:#bdf; color:black; text-decoration:none }' );
	$( '<div id=userSummaryButtonsA />' ).insertAfter( '#wpSummary' );
	$.each(
		[
			'викиф|икация', 'оформл|ение', 'стил|евые правки', 'орфогр|афия',
			'пункт|уация', 'ответ', 'комм|ентарий', 'кат|егория', 'шаб|лон',
			'к удал|ению', 'иллюстрация', 'источ|ники', 'запр|ос источника',
			'доп|олнение', 'уточн|ение', 'обнов|ление данных', 'закр|ыто', 'итог'
		],
		function ( i, s ) {
			addSumButton( s.replace( /\|.*/, '' ), s.replace( /\|/, '' ) );
		}
	);
} );


// Wikificator
importMW( 'Wikificator' );


// Sig reminder
if ( mw.config.get( 'wgNamespaceNumber' ) % 2 ||
	mw.config.get( 'wgNamespaceNumber' ) === 4
) {
	$( function () {
		var cp = document.getElementById( 'editpage-copywarn' ),
			wpSave = document.getElementById( 'wpSave' );
		if ( !cp || !wpSave ) {
			return;
		}
		if ( mw.config.get( 'wgNamespaceNumber' ) === 4 &&
			( !mw.config.get( 'wgTitle' ).match( '^(Форум[/ ]|Голосования/|Опросы/|Обсуждение правил/|Заявки на .*|Запросы.|Кандидаты в .*/|К (удалению|объединению|переименованию|разделению|улучшению)/|Рецензирование/|Проверка участников/|Инкубатор/(Мини-рецензирование|Форум[/ ]))' ) ||
				mw.config.get( 'wgTitle' ).match( '/Архив' ) )
		) {
			return;
		}
		// FIXME: Use of "insertTags" is deprecated. Use mw.toolbar.insertTags instead.
		var ins = ' <a href=\'javascript:insertTags(" ~~\~~","","")\'>~~\~~</a>';
		cp.innerHTML += '&nbsp;&nbsp;Не забудьте добавить к вашему сообщению подпись с помощью' + ins;
		if ( $.inArray( 'autoconfirmed', mw.config.get( 'wgUserGroups' ) ) !== -1 && !window.sigWarning ) {
			return;
		}
		//unreg/new users only
		var warningDone = false;
		wpSave.onclick = function() {
			try {
				if ( warningDone || document.editform.wpTextbox1.value.indexOf( '~~\~~' ) !== -1 ) {
					return true;
				}
				warningDone = true;
				cp.innerHTML = 'Пожалуйста, <b>подпишитесь</b>, добавив в конце' +
					' своего сообщения' + ins + ' (<a href="' + 
					mw.config.get( 'wgArticlePath' ).replace( /\$1/, 'Википедия:Подписывайтесь' ) +
					'" title="(ссылка откроется в новом окне)" target=_blank>подробнее&nbsp;↗</a>)';
				cp.style.background = '#FFD080';
				cp.style.border = '1px solid orange';
				return false;
			} catch ( e ) {
				return true;
			}
		};
	} );
}


// Hack for Opera 11.6
if ( window.opera && /11\.6[01]/.test( window.opera.version() ) ) {
	$( '#wpTextbox1' )
		.mousedown( function() {
			this.sT = this.scrollTop;
		} )
		.click( function() {
			if ( this.scrollTop === 0 ) {
				this.scrollTop = this.sT;
			}
		} );
}