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

нет описания правки
(Керла агӀо: «mw.hook( 'wikipage.content' ).add( function () { $.fn.highlight = function () { $( this ).addClass( 'highlighted' ); setTimeout( function () { $( '.highlighted' ).re...»)
 
Нет описания правки
 
Строка 1: Строка 1:
mw.hook( 'wikipage.content' ).add( function () {
mw.hook( 'wikipage.content' ).add( function () {


// Подсветка изменившихся элементов
$.fn.highlight = function () {
$.fn.highlight = function () {
$( this ).addClass( 'highlighted' );
$( this ).addClass( 'highlighted' );
Строка 8: Строка 9:
};
};


// Получить элемент ввода MediaWiki / установить его значение
function elem( name, value ) {
function elem( name, value ) {
var $el = $( '[name="wp' + name + '"]' );
var $el = $( '[name="wp' + name + '"]' );
if ( value !== undefined ) {
if ( value !== undefined ) {
// Устанавливаем значение
if ( $el.prop( 'tagName' ) === 'SELECT' ) {
if ( $el.prop( 'tagName' ) === 'SELECT' ) {
var $option = $el.find( 'option[value*="' + value + '"]' );
var $option = $el.find( 'option[value*="' + value + '"]' );
Строка 24: Строка 27:
} else {  // type = text
} else {  // type = text
if ( /-other$/.test( name ) ) {
if ( /-other$/.test( name ) ) {
//
// Устанавливаем значение «родительского» выпадающего списка — «other»
elem( name.replace( /-other$/ , ''), 'other' );
elem( name.replace( /-other$/ , ''), 'other' );
}
}
Строка 37: Строка 40:


elem( 'Reason' ).change( function () {
elem( 'Reason' ).change( function () {
if ( /Мегаш йоцу цIе/.test( this.value ) ) {
if ( /неприемлемое имя/.test( this.value ) ) {
elem( 'Expiry' , 'indefinite' );
elem( 'Expiry' , 'indefinite' );
if ( /гайтаршна|тилвелла/.test( this.value ) ) {
if ( /рекламное|заблуждение/.test( this.value ) ) {
elem( 'CreateAccount', false );
elem( 'CreateAccount', false );
elem( 'DisableEmail', false );
elem( 'DisableEmail', false );
elem( 'AutoBlock', false );
elem( 'AutoBlock', false );
}
}
} else if ( /къайла воккху сервер/.test( this.value ) ) {
} else if ( /анонимизирующий сервер/.test( this.value ) ) {
// Нагахьсанна башхо хоттийна яцахь
// Если значение не установлено
if ( elem( 'Expiry' ).val() === 'other' && !elem( 'Expiry-other' ).val() ) {
if ( elem( 'Expiry' ).val() === 'other' && !elem( 'Expiry-other' ).val() ) {
elem( 'Expiry-other', '5 years' );
elem( 'Expiry-other', '5 years' );
Строка 52: Строка 55:
elem( 'DisableEmail', true );
elem( 'DisableEmail', true );
elem( 'HardBlock', true );
elem( 'HardBlock', true );
} else if ( /керла дIекъашхо ву хьашт боцу яззамашца/.test( this.value )
} else if ( /новый участник с провокационным вкладом/.test( this.value )
|| /«массо а» дIавазвелла агIо/i.test( this.value )
|| /«общая» учётная запись/i.test( this.value )
) {
) {
elem( 'Expiry', 'indefinite' );
elem( 'Expiry', 'indefinite' );
Строка 60: Строка 63:


// https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver
// https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver
//
// Если изменение состояния эмуляции селекта в OOjs UI будет само инициировать событие change
//
// на настоящем селекте, кусок до runAsEarlyAsPossible включительно можно будет удалить.
var observe = function () {
var observe = function () {
var label = $( '#mw-input-wpReason-select .oo-ui-dropdownWidget-handle .oo-ui-labelElement-label' )[ 0 ];
var label = $( '#mw-input-wpReason-select .oo-ui-dropdownWidget-handle .oo-ui-labelElement-label' )[ 0 ];