「MediaWiki:Common.js」の版間の差分
表示
ページの作成:「→RTA Wiki: 管理者以外には既存ページの編集導線を表示しない: mw.loader.using( 'mediawiki.util' ).then( function () { if ( mw.config.get( 'wgUserGroups' ).includes( 'sysop' ) ) { return; } document.querySelectorAll( '#ca-edit, #ca-ve-edit, #ca-formedit, [id^="ca-formedit"], a[href*="action=formedit"]' ).forEach( function ( element ) { ( element.closest( 'li' ) || element ).remove(); } ); } );」 |
編集の要約なし |
||
| 1行目: | 1行目: | ||
/* RTA Wiki: 管理者以外には既存ページの編集導線を表示しない */ | /* RTA Wiki: 管理者以外には既存ページの編集導線を表示しない */ | ||
mw.loader.using( 'mediawiki.util' ).then( function () { | mw.loader.using( 'mediawiki.util' ).then( function () { | ||
if ( mw.config.get( 'wgUserGroups' ).includes( 'sysop' ) ) { | function hideEditLinks() { | ||
if ( mw.config.get( 'wgUserGroups' ).includes( 'sysop' ) ) { | |||
return; | |||
} | |||
document.querySelectorAll( | |||
'#ca-edit, #ca-ve-edit, #ca-formedit, [id^="ca-formedit"], a[href*="action=formedit"]' | |||
).forEach( function ( element ) { | |||
( element.closest( 'li' ) || element ).remove(); | |||
} ); | |||
} | } | ||
document. | if ( document.readyState === 'loading' ) { | ||
'# | document.addEventListener( 'DOMContentLoaded', hideEditLinks ); | ||
} else { | |||
( | hideEditLinks(); | ||
} ); | } | ||
} ); | |||
/* RTA Wiki: 記録時間から記録秒を自動計算する */ | |||
mw.loader.using( 'mediawiki.util' ).then( function () { | |||
function setUpRecordSeconds() { | |||
var timeInput = document.querySelector( | |||
'input[name="RTA記録[記録時間]"], input[name$="[記録時間]"]' | |||
); | |||
var secondsInput = document.querySelector( | |||
'input[name="RTA記録[記録秒]"], input[name$="[記録秒]"]' | |||
); | |||
if ( !timeInput || !secondsInput || secondsInput.dataset.rtaAutoSeconds === '1' ) { | |||
return; | |||
} | |||
secondsInput.dataset.rtaAutoSeconds = '1'; | |||
secondsInput.readOnly = true; | |||
secondsInput.placeholder = '記録時間から自動計算されます'; | |||
var message = document.createElement( 'small' ); | |||
message.style.display = 'block'; | |||
message.style.marginTop = '4px'; | |||
message.style.color = '#54595d'; | |||
secondsInput.insertAdjacentElement( 'afterend', message ); | |||
function updateSeconds() { | |||
var value = timeInput.value.trim(); | |||
var match = value.match( /^(\d+):([0-5]\d):([0-5]\d)$/ ); | |||
var hours, minutes, seconds; | |||
if ( match ) { | |||
hours = Number( match[1] ); | |||
minutes = Number( match[2] ); | |||
seconds = Number( match[3] ); | |||
} else { | |||
match = value.match( /^([0-5]?\d):([0-5]\d)$/ ); | |||
if ( match ) { | |||
hours = 0; | |||
minutes = Number( match[1] ); | |||
seconds = Number( match[2] ); | |||
} else { | |||
secondsInput.value = ''; | |||
message.textContent = value ? | |||
'「時:分:秒」または「分:秒」の形式で入力してください。' : | |||
'記録時間を入力すると自動計算されます。'; | |||
return; | |||
} | |||
} | |||
secondsInput.value = String( hours * 3600 + minutes * 60 + seconds ); | |||
message.textContent = '自動計算: ' + secondsInput.value + ' 秒'; | |||
} | |||
timeInput.addEventListener( 'input', updateSeconds ); | |||
timeInput.addEventListener( 'change', updateSeconds ); | |||
timeInput.addEventListener( 'blur', updateSeconds ); | |||
if ( timeInput.value ) { | |||
updateSeconds(); | |||
} | |||
} | |||
function start() { | |||
setUpRecordSeconds(); | |||
mw.hook( 'wikipage.content' ).add( setUpRecordSeconds ); | |||
} | |||
if ( document.readyState === 'loading' ) { | |||
document.addEventListener( 'DOMContentLoaded', start ); | |||
} else { | |||
start(); | |||
} | |||
} ); | } ); | ||
2026年9月25日 (金) 17:36時点における版
/* RTA Wiki: 管理者以外には既存ページの編集導線を表示しない */
mw.loader.using( 'mediawiki.util' ).then( function () {
function hideEditLinks() {
if ( mw.config.get( 'wgUserGroups' ).includes( 'sysop' ) ) {
return;
}
document.querySelectorAll(
'#ca-edit, #ca-ve-edit, #ca-formedit, [id^="ca-formedit"], a[href*="action=formedit"]'
).forEach( function ( element ) {
( element.closest( 'li' ) || element ).remove();
} );
}
if ( document.readyState === 'loading' ) {
document.addEventListener( 'DOMContentLoaded', hideEditLinks );
} else {
hideEditLinks();
}
} );
/* RTA Wiki: 記録時間から記録秒を自動計算する */
mw.loader.using( 'mediawiki.util' ).then( function () {
function setUpRecordSeconds() {
var timeInput = document.querySelector(
'input[name="RTA記録[記録時間]"], input[name$="[記録時間]"]'
);
var secondsInput = document.querySelector(
'input[name="RTA記録[記録秒]"], input[name$="[記録秒]"]'
);
if ( !timeInput || !secondsInput || secondsInput.dataset.rtaAutoSeconds === '1' ) {
return;
}
secondsInput.dataset.rtaAutoSeconds = '1';
secondsInput.readOnly = true;
secondsInput.placeholder = '記録時間から自動計算されます';
var message = document.createElement( 'small' );
message.style.display = 'block';
message.style.marginTop = '4px';
message.style.color = '#54595d';
secondsInput.insertAdjacentElement( 'afterend', message );
function updateSeconds() {
var value = timeInput.value.trim();
var match = value.match( /^(\d+):([0-5]\d):([0-5]\d)$/ );
var hours, minutes, seconds;
if ( match ) {
hours = Number( match[1] );
minutes = Number( match[2] );
seconds = Number( match[3] );
} else {
match = value.match( /^([0-5]?\d):([0-5]\d)$/ );
if ( match ) {
hours = 0;
minutes = Number( match[1] );
seconds = Number( match[2] );
} else {
secondsInput.value = '';
message.textContent = value ?
'「時:分:秒」または「分:秒」の形式で入力してください。' :
'記録時間を入力すると自動計算されます。';
return;
}
}
secondsInput.value = String( hours * 3600 + minutes * 60 + seconds );
message.textContent = '自動計算: ' + secondsInput.value + ' 秒';
}
timeInput.addEventListener( 'input', updateSeconds );
timeInput.addEventListener( 'change', updateSeconds );
timeInput.addEventListener( 'blur', updateSeconds );
if ( timeInput.value ) {
updateSeconds();
}
}
function start() {
setUpRecordSeconds();
mw.hook( 'wikipage.content' ).add( setUpRecordSeconds );
}
if ( document.readyState === 'loading' ) {
document.addEventListener( 'DOMContentLoaded', start );
} else {
start();
}
} );