편집 요약 없음 |
편집 요약 없음 |
||
| 1번째 줄: | 1번째 줄: | ||
/* | /** | ||
$( function () { | * 이 스크립트는 위키백과 전체에 적용됩니다. 고칠 때는 주의해주세요. | ||
* [[위키백과:위키프로젝트 시스템]] 참고 | |||
* | |||
* 스크립트를 넣을 때는 충분한 설명, 출처를 넣어주세요! 이후 관리가 어려워집니다. | |||
**/ | |||
mw.loader.using( ['mediawiki.util', 'mediawiki.notify', 'jquery.client'], function () { | |||
/* Begin of mw.loader.using callback */ | |||
/** | |||
* Map addPortletLink to mw.util | |||
* | |||
* @deprecated: Use mw.util.addPortletLink instead. | |||
*/ | |||
mw.log.deprecate( | |||
window, | |||
'addPortletLink', | |||
mw.util.addPortletLink, | |||
'Use mw.util.addPortletLink instead' | |||
); | |||
/** | |||
* Extract a URL parameter from the current URL | |||
* | |||
* @deprecated: Use mw.util.getParamValue with proper escaping | |||
*/ | |||
mw.log.deprecate( | |||
window, | |||
'getURLParamValue', | |||
mw.util.getParamValue, | |||
'Use mw.util.getParamValue instead' | |||
); | |||
/** | |||
* Test if an element has a certain class | |||
* | |||
* @deprecated: Use $(element).hasClass() instead. | |||
*/ | |||
mw.log.deprecate( | |||
window, | |||
'hasClass', | |||
function ( element, className ) { | |||
return $( element ).hasClass( className ); | |||
}, | |||
'Use jQuery.hasClass() instead' | |||
); | |||
/** | |||
* @source www.mediawiki.org/wiki/Snippets/Load_JS_and_CSS_by_URL | |||
* @rev 5 | |||
*/ | |||
// CSS | |||
var extraCSS = mw.util.getParamValue( 'withCSS' ); | |||
if ( extraCSS ) { | |||
if ( extraCSS.match( /^MediaWiki:[^&<>=%#]*\.css$/ ) ) { | |||
importStylesheet( extraCSS ); | |||
} else { | |||
mw.notify( | |||
'Only pages from the MediaWiki namespace are allowed.', | |||
{ | |||
title: 'Invalid withCSS value' | |||
} | |||
); | |||
} | |||
} | |||
// JS | |||
var extraJS = mw.util.getParamValue( 'withJS' ); | |||
if ( extraJS ) { | |||
if ( extraJS.match( /^MediaWiki:[^&<>=%#]*\.js$/ ) ) { | |||
importScript( extraJS ); | |||
} else { | |||
mw.notify( | |||
'Only pages from the MediaWiki namespace are allowed.', | |||
{ | |||
title: 'Invalid withJS value' | |||
} | |||
); | |||
} | |||
} | |||
/** | |||
* Import more specific scripts if necessary | |||
*/ | |||
if ( mw.config.get( 'wgNamespaceNumber' ) === 6 ) { | |||
/* file description page scripts */ | |||
importScript( 'MediaWiki:Common.js/file.js' ); | |||
} | |||
/* ([[위키백과:관리자 요청/2007년 5월#스크립트 추가 요청]]) */ | |||
/** Collapsible tables ******************************************************* | |||
* | |||
* Description: Allows tables to be collapsed, showing only the header. See | |||
* [[:en:Wikipedia:NavFrame]]. | |||
* Maintainers: [[:en:User:R. Koot]] | |||
*/ | |||
var autoCollapse = 2; | |||
var collapseCaption = '숨기기'; | |||
var expandCaption = '보이기'; | |||
window.collapseTable = function ( tableIndex ) { | |||
var Button = document.getElementById( | |||
'collapseButton' + tableIndex | |||
); | |||
var Table = document.getElementById( | |||
'collapsibleTable' + tableIndex | |||
); | |||
if ( !Table || !Button ) { | |||
return false; | |||
} | |||
var Rows = Table.rows; | |||
var i; | |||
if ( Button.firstChild.data === collapseCaption ) { | |||
for ( i = 1; i < Rows.length; i++ ) { | |||
Rows[ i ].style.display = 'none'; | |||
} | |||
Button.firstChild.data = expandCaption; | |||
} else { | |||
for ( i = 1; i < Rows.length; i++ ) { | |||
Rows[ i ].style.display = | |||
Rows[ 0 ].style.display; | |||
} | |||
Button.firstChild.data = collapseCaption; | |||
} | |||
}; | |||
function createCollapseButtons() { | |||
var tableIndex = 0; | |||
var NavigationBoxes = {}; | |||
var Tables = document.getElementsByTagName( 'table' ); | |||
var i; | |||
function handleButtonLink( index, e ) { | |||
window.collapseTable( index ); | |||
e.preventDefault(); | |||
} | |||
for ( i = 0; i < Tables.length; i++ ) { | |||
if ( $( Tables[ i ] ).hasClass( 'collapsible' ) ) { | |||
/* | |||
* only add button and increment count | |||
* if there is a header row to work with | |||
*/ | |||
var HeaderRow = | |||
Tables[ i ].getElementsByTagName( 'tr' )[ 0 ]; | |||
if ( !HeaderRow ) { | |||
continue; | |||
} | |||
var Header = | |||
HeaderRow.getElementsByTagName( 'th' )[ 0 ]; | |||
if ( !Header ) { | |||
continue; | |||
} | |||
NavigationBoxes[ tableIndex ] = Tables[ i ]; | |||
Tables[ i ].setAttribute( | |||
'id', | |||
'collapsibleTable' + tableIndex | |||
); | |||
var Button = | |||
document.createElement( 'span' ); | |||
var ButtonLink = | |||
document.createElement( 'a' ); | |||
var ButtonText = | |||
document.createTextNode( | |||
collapseCaption | |||
); | |||
/* | |||
* Styles are declared in Common.css | |||
*/ | |||
Button.className = 'collapseButton'; | |||
ButtonLink.style.color = | |||
Header.style.color; | |||
ButtonLink.setAttribute( | |||
'id', | |||
'collapseButton' + tableIndex | |||
); | |||
ButtonLink.setAttribute( | |||
'href', | |||
'#' | |||
); | |||
$( ButtonLink ).on( | |||
'click', | |||
$.proxy( | |||
handleButtonLink, | |||
ButtonLink, | |||
tableIndex | |||
) | |||
); | |||
ButtonLink.appendChild( | |||
ButtonText | |||
); | |||
Button.appendChild( | |||
document.createTextNode( '[' ) | |||
); | |||
Button.appendChild( | |||
ButtonLink | |||
); | |||
Button.appendChild( | |||
document.createTextNode( ']' ) | |||
); | |||
Header.insertBefore( | |||
Button, | |||
Header.firstChild | |||
); | |||
tableIndex++; | |||
} | |||
} | |||
for ( i = 0; i < tableIndex; i++ ) { | |||
if ( | |||
$( NavigationBoxes[ i ] ).hasClass( 'collapsed' ) || | |||
( | |||
tableIndex >= autoCollapse && | |||
$( NavigationBoxes[ i ] ).hasClass( 'autocollapse' ) | |||
) | |||
) { | |||
window.collapseTable( i ); | |||
} else if ( | |||
$( NavigationBoxes[ i ] ).hasClass( 'innercollapse' ) | |||
) { | |||
var element = | |||
NavigationBoxes[ i ]; | |||
while ( | |||
( element = element.parentNode ) | |||
) { | |||
if ( | |||
$( element ).hasClass( 'outercollapse' ) | |||
) { | |||
window.collapseTable( i ); | |||
break; | |||
} | |||
} | |||
} | |||
} | |||
} | |||
mw.hook( 'wikipage.content' ).add( | |||
createCollapseButtons | |||
); | |||
/* ([[위키백과:관리자 요청/2007년 5월#스크립트 추가 요청]]) */ | |||
/** Dynamic Navigation Bars (experimental) ********************************** | |||
* | |||
* Description: See [[:en:Wikipedia:NavFrame]]. | |||
* Maintainers: UNMAINTAINED | |||
*/ | |||
/* set up the words in your language */ | |||
var NavigationBarHide = | |||
'[' + collapseCaption + ']'; | |||
var NavigationBarShow = | |||
'[' + expandCaption + ']'; | |||
/** | |||
* Shows and hides content and picture | |||
* (if available) of navigation bars | |||
* | |||
* Parameters: | |||
* indexNavigationBar: | |||
* the index of navigation bar to be toggled | |||
*/ | |||
window.toggleNavigationBar = | |||
function ( indexNavigationBar, event ) { | |||
var NavToggle = | |||
document.getElementById( | |||
'NavToggle' + indexNavigationBar | |||
); | |||
var NavFrame = | |||
document.getElementById( | |||
'NavFrame' + indexNavigationBar | |||
); | |||
var | var NavChild; | ||
if ( ! | if ( !NavFrame || !NavToggle ) { | ||
return; | return false; | ||
} | } | ||
/* | |||
* if shown now | |||
*/ | |||
if ( | |||
NavToggle.firstChild.data === | |||
NavigationBarHide | |||
) { | |||
for ( | |||
NavChild = NavFrame.firstChild; | |||
NavChild !== null; | |||
NavChild = NavChild.nextSibling | |||
) { | |||
if ( | |||
$( NavChild ).hasClass( 'NavContent' ) || | |||
$( NavChild ).hasClass( 'NavPic' ) | |||
) { | |||
if ( !$ | NavChild.style.display = | ||
'none'; | |||
} | |||
} | |||
NavToggle.firstChild.data = | |||
NavigationBarShow; | |||
/* | |||
* if hidden now | |||
*/ | |||
} else if ( | |||
NavToggle.firstChild.data === | |||
NavigationBarShow | |||
) { | |||
for ( | |||
NavChild = NavFrame.firstChild; | |||
NavChild !== null; | |||
NavChild = NavChild.nextSibling | |||
) { | |||
if ( | |||
$( NavChild ).hasClass( 'NavContent' ) || | |||
$( NavChild ).hasClass( 'NavPic' ) | |||
) { | |||
NavChild.style.display = | |||
'block'; | |||
} | |||
} | |||
NavToggle.firstChild.data = | |||
NavigationBarHide; | |||
} | } | ||
event.preventDefault(); | |||
}; | |||
/* | |||
* adds show/hide-button | |||
* to navigation bars | |||
*/ | |||
function createNavigationBarToggleButton() { | |||
var indexNavigationBar = 0; | |||
var NavFrame; | |||
var NavChild; | |||
/* | |||
* iterate over all div-elements | |||
*/ | |||
var divs = | |||
document.getElementsByTagName( 'div' ); | |||
for ( | |||
var i = 0; | |||
( NavFrame = divs[ i ] ); | |||
i++ | |||
) { | |||
/* | /* | ||
* | * if found a navigation bar | ||
*/ | */ | ||
$ | if ( | ||
$( NavFrame ).hasClass( 'NavFrame' ) | |||
) { | |||
indexNavigationBar++; | |||
var NavToggle = | |||
document.createElement( 'a' ); | |||
NavToggle.className = | |||
'NavToggle'; | |||
/* | NavToggle.setAttribute( | ||
* | 'id', | ||
* | 'NavToggle' + indexNavigationBar | ||
); | |||
NavToggle.setAttribute( | |||
'href', | |||
'#' | |||
); | |||
$( NavToggle ).on( | |||
'click', | |||
$.proxy( | |||
window.toggleNavigationBar, | |||
window, | |||
indexNavigationBar | |||
) | |||
); | |||
var isCollapsed = | |||
$( NavFrame ).hasClass( | |||
'collapsed' | |||
); | |||
/** | |||
* Check if any children are already hidden. | |||
* This loop is here for backwards compatibility. | |||
*/ | */ | ||
for ( | |||
NavChild = NavFrame.firstChild; | |||
NavChild != null && | |||
!isCollapsed; | |||
NavChild = NavChild.nextSibling | |||
) { | |||
if ( | |||
$( NavChild ).hasClass( 'NavPic' ) || | |||
$( NavChild ).hasClass( 'NavContent' ) | |||
) { | |||
if ( | |||
NavChild.style.display === | |||
'none' | |||
) { | |||
isCollapsed = true; | |||
} | |||
} | |||
} | |||
if ( isCollapsed ) { | |||
for ( | |||
NavChild = NavFrame.firstChild; | |||
NavChild != null; | |||
NavChild = | |||
NavChild.nextSibling | |||
) { | |||
if ( | |||
$( NavChild ).hasClass( 'NavPic' ) || | |||
$( NavChild ).hasClass( 'NavContent' ) | |||
) { | |||
$ | |||
NavChild.style.display = | |||
'none'; | |||
} | } | ||
} | } | ||
} | |||
var NavToggleText = | |||
document.createTextNode( | |||
isCollapsed ? | |||
NavigationBarShow : | |||
NavigationBarHide | |||
); | ); | ||
} | NavToggle.appendChild( | ||
NavToggleText | |||
); | |||
/* | |||
* Find the NavHead and | |||
* attach the toggle link | |||
*/ | |||
for ( | |||
var j = 0; | |||
j < NavFrame.childNodes.length; | |||
j++ | |||
) { | |||
if ( | |||
$( NavFrame.childNodes[ j ] ) | |||
.hasClass( 'NavHead' ) | |||
) { | |||
NavToggle.style.color = | |||
NavFrame | |||
.childNodes[ j ] | |||
.style.color; | |||
NavFrame | |||
.childNodes[ j ] | |||
.appendChild( | |||
NavToggle | |||
); | |||
} | |||
} | |||
NavFrame.setAttribute( | |||
'id', | |||
'NavFrame' + | |||
indexNavigationBar | |||
); | |||
} | |||
} | |||
} | |||
mw.hook( 'wikipage.content' ).add( | |||
createNavigationBarToggleButton | |||
); | |||
/***** 그림 정보 틀을 자동으로 불러옴 ******** | |||
* Adds a link to subpages of current page | |||
* from commons.wikimedia.org | |||
* Maintainers: [[User:Yonidebest]], [[User:Dschwen]] | |||
* [[사용자:Kwj2772]]가 수정 | |||
* JSconfig items: bool 'loadAutoInformationTemplate' | |||
* (true=enabled (default), false=disabled) | |||
* JSConfig를 사용하지 않도록 수정함. | |||
* --[[사용자:Klutzy|Klutzy]] | |||
********************************************/ | |||
if ( | |||
mw.config.get( | |||
'wgCanonicalSpecialPageName' | |||
) == 'Upload' | |||
) { | |||
importScript( | |||
'MediaWiki:Upload.js' | |||
); | |||
} | |||
/* | |||
* 인터랙티브 지도. | |||
* 영어 위키백과에서 가져옴. | |||
*/ | |||
/** | |||
* WikiMiniAtlas | |||
* | |||
* Description: | |||
* WikiMiniAtlas is a popup click and drag | |||
* world map. | |||
* | |||
* Maintainers: [[User:Dschwen]] | |||
*/ | |||
( function () { | |||
var require_wikiminiatlas = false; | |||
var coord_filter = /geohack/; | |||
$( function () { | |||
$( 'a.external.text' ).each( | |||
function ( key, link ) { | |||
if ( | |||
link.href && | |||
coord_filter.exec( | |||
link.href | |||
) | |||
) { | |||
require_wikiminiatlas = | |||
true; | |||
return false; | |||
} | |||
} | |||
); | |||
if ( | |||
$( 'div.kmldata' ).length | |||
) { | |||
require_wikiminiatlas = | |||
true; | |||
} | |||
if ( require_wikiminiatlas ) { | |||
mw.loader.load( | |||
'//meta.wikimedia.org/w/index.php?title=MediaWiki:Wikiminiatlas.js&action=raw&ctype=text/javascript' | |||
); | |||
} | |||
} ); | |||
}() ); | |||
/** | |||
* Fix for Windows XP Unicode font rendering | |||
*/ | |||
if ( | |||
navigator.appVersion.search( | |||
/windows nt 5/i | |||
) !== -1 | |||
) { | |||
mw.util.addCSS( | |||
'.IPA {' + | |||
'font-family:' + | |||
'"Lucida Sans Unicode",' + | |||
'"Arial Unicode MS";' + | |||
'} ' + | |||
'.Unicode {' + | |||
'font-family:' + | |||
'"Arial Unicode MS",' + | |||
'"Lucida Sans Unicode";' + | |||
'} ' | |||
); | |||
} | |||
/** | |||
* 편집 안내 | |||
* | |||
* 생존 인물에 대한 편집 안내. | |||
* 영어 위키백과에서 가져옴 | |||
*/ | |||
function addEditIntro( name ) { | |||
$( '.mw-editsection, #ca-edit' ) | |||
.find( 'a' ) | |||
.each( | |||
function () { | |||
this.href = | |||
$( this ).attr( | |||
'href' | |||
) + | |||
'&editintro=' + | |||
name; | |||
} | |||
); | |||
} | |||
if ( | |||
mw.config.get( | |||
'wgNamespaceNumber' | |||
) === 0 | |||
) { | |||
$( function () { | |||
var cats = | |||
mw.config.get( | |||
'wgCategories' | |||
); | |||
if ( !cats ) { | |||
return; | |||
} | |||
if ( | |||
$.inArray( | |||
'살아있는 사람', | |||
cats | |||
) !== -1 || | |||
$.inArray( | |||
'생사 불명', | |||
cats | |||
) !== -1 | |||
) { | |||
addEditIntro( | |||
'틀:BLP_편집_안내' | |||
); | |||
} | |||
} ); | |||
} | |||
/* ========================================================= | |||
* 사용자 정의 펼치기 · 접기 | |||
* | |||
* 예: | |||
* | |||
* id="toggleCompany" | |||
* ↓ | |||
* id="collapsibleCompany" | |||
* | |||
* 선택적으로: | |||
* id="toggleTextCompany" | |||
* | |||
* 투명도 효과 없이 높이만 300ms 동안 애니메이션 | |||
* ========================================================= | |||
*/ | |||
function initializeCustomToggle( $root ) { | |||
$root.find( '.toggleBtn' ) | |||
.addBack( '.toggleBtn' ) | |||
.each( function () { | |||
var $toggle = | |||
$( this ); | |||
/* | |||
* 동일 요소 중복 초기화 방지 | |||
*/ | |||
if ( | |||
$toggle.data( | |||
'custom-toggle-initialized' | |||
) | |||
) { | |||
return; | |||
} | |||
var toggleId = | |||
$toggle.attr( 'id' ); | |||
$ | |||
if ( !toggleId ) { | |||
return; | |||
} | |||
/* | |||
* toggleXXX | |||
* → collapsibleXXX | |||
*/ | |||
var contentId = | |||
toggleId.replace( | |||
'toggle', | |||
'collapsible' | |||
); | |||
/* | |||
' | * toggleXXX | ||
' | * → toggleTextXXX | ||
*/ | |||
var textId = | |||
toggleId.replace( | |||
'toggle', | |||
'toggleText' | |||
); | ); | ||
var $content = | |||
$( '#' + contentId ); | |||
var $text = | |||
$( '#' + textId ); | |||
if ( !$content.length ) { | |||
return; | |||
} | } | ||
$toggle.data( | |||
$ | 'custom-toggle-initialized', | ||
' | true | ||
); | |||
/* | |||
* 최초 상태는 접힘 | |||
*/ | |||
$content.hide(); | |||
$toggle.attr( { | |||
'aria-expanded': | |||
'false', | |||
'tabindex': | |||
$toggle.attr( | |||
'tabindex' | |||
) || '0' | |||
} ); | |||
/* | |||
* 펼치기/접기 실행 | |||
*/ | |||
function toggleContent() { | |||
/* | |||
* 진행 중인 애니메이션의 | |||
* 끝 상태로 강제 이동하지 않고 | |||
* 현재 상태에서 정리 | |||
*/ | |||
$content.stop( | |||
true, | |||
false | |||
); | ); | ||
if ( | |||
$content.is( | |||
':visible' | |||
) | |||
) { | |||
/* | |||
* 접기 | |||
*/ | |||
$toggle.attr( | |||
'aria-expanded', | |||
'false' | |||
); | |||
$content.slideUp( | |||
300, | |||
function () { | |||
/* | |||
* jQuery가 애니메이션 과정에서 | |||
* 넣은 높이 관련 스타일 정리. | |||
* | |||
* display:none은 slideUp이 유지. | |||
*/ | |||
$content.css( { | |||
height: '', | |||
paddingTop: '', | |||
paddingBottom: '', | |||
marginTop: '', | |||
marginBottom: '', | |||
overflow: '' | |||
} ); | |||
} | |||
); | |||
} else { | |||
/* | |||
* 펼치기 | |||
*/ | |||
$toggle.attr( | |||
'aria-expanded', | |||
'true' | |||
); | |||
$content.slideDown( | |||
300, | |||
function () { | |||
/* | |||
* 펼친 뒤에는 원래 CSS가 | |||
* 크기와 여백을 다시 결정. | |||
*/ | |||
$content.css( { | |||
height: '', | |||
paddingTop: '', | |||
paddingBottom: '', | |||
marginTop: '', | |||
marginBottom: '', | |||
overflow: '', | |||
display: '' | |||
} ); | |||
} | |||
); | |||
} | |||
/* | |||
* 토글 문구가 따로 있는 경우 | |||
*/ | |||
if ( $text.length ) { | |||
$text.text( | |||
'[ 펼치기 · 접기 ]' | |||
); | |||
} | |||
} | } | ||
/* | |||
* 마우스 클릭 | |||
*/ | |||
$toggle.on( | |||
'click.customToggle', | |||
function ( event ) { | |||
event.preventDefault(); | |||
toggleContent(); | |||
} | |||
); | |||
/* | |||
* 키보드 | |||
* Enter / Space | |||
*/ | |||
$toggle.on( | |||
'keydown.customToggle', | |||
function ( event ) { | |||
if ( | |||
event.key === 'Enter' || | |||
event.key === ' ' | |||
) { | |||
event.preventDefault(); | |||
toggleContent(); | |||
} | |||
} | |||
); | |||
} ); | } ); | ||
} | |||
/* | |||
* 일반 문서 최초 로딩 | |||
*/ | |||
$( function () { | |||
initializeCustomToggle( | |||
$( document ) | |||
); | |||
} ); | |||
/* | |||
* AJAX / VisualEditor / 동적 콘텐츠 등으로 | |||
* 문서 내용이 다시 삽입되는 경우에도 초기화 | |||
*/ | |||
mw.hook( 'wikipage.content' ).add( | |||
function ( $content ) { | |||
initializeCustomToggle( | |||
$content | |||
); | |||
} | |||
); | |||
/* End of mw.loader.using callback */ | |||
} ); | } ); | ||
/* DO NOT ADD CODE BELOW THIS LINE */ | |||
2026년 8월 20일 (목) 13:45 판
/**
* 이 스크립트는 위키백과 전체에 적용됩니다. 고칠 때는 주의해주세요.
* [[위키백과:위키프로젝트 시스템]] 참고
*
* 스크립트를 넣을 때는 충분한 설명, 출처를 넣어주세요! 이후 관리가 어려워집니다.
**/
mw.loader.using( ['mediawiki.util', 'mediawiki.notify', 'jquery.client'], function () {
/* Begin of mw.loader.using callback */
/**
* Map addPortletLink to mw.util
*
* @deprecated: Use mw.util.addPortletLink instead.
*/
mw.log.deprecate(
window,
'addPortletLink',
mw.util.addPortletLink,
'Use mw.util.addPortletLink instead'
);
/**
* Extract a URL parameter from the current URL
*
* @deprecated: Use mw.util.getParamValue with proper escaping
*/
mw.log.deprecate(
window,
'getURLParamValue',
mw.util.getParamValue,
'Use mw.util.getParamValue instead'
);
/**
* Test if an element has a certain class
*
* @deprecated: Use $(element).hasClass() instead.
*/
mw.log.deprecate(
window,
'hasClass',
function ( element, className ) {
return $( element ).hasClass( className );
},
'Use jQuery.hasClass() instead'
);
/**
* @source www.mediawiki.org/wiki/Snippets/Load_JS_and_CSS_by_URL
* @rev 5
*/
// CSS
var extraCSS = mw.util.getParamValue( 'withCSS' );
if ( extraCSS ) {
if ( extraCSS.match( /^MediaWiki:[^&<>=%#]*\.css$/ ) ) {
importStylesheet( extraCSS );
} else {
mw.notify(
'Only pages from the MediaWiki namespace are allowed.',
{
title: 'Invalid withCSS value'
}
);
}
}
// JS
var extraJS = mw.util.getParamValue( 'withJS' );
if ( extraJS ) {
if ( extraJS.match( /^MediaWiki:[^&<>=%#]*\.js$/ ) ) {
importScript( extraJS );
} else {
mw.notify(
'Only pages from the MediaWiki namespace are allowed.',
{
title: 'Invalid withJS value'
}
);
}
}
/**
* Import more specific scripts if necessary
*/
if ( mw.config.get( 'wgNamespaceNumber' ) === 6 ) {
/* file description page scripts */
importScript( 'MediaWiki:Common.js/file.js' );
}
/* ([[위키백과:관리자 요청/2007년 5월#스크립트 추가 요청]]) */
/** Collapsible tables *******************************************************
*
* Description: Allows tables to be collapsed, showing only the header. See
* [[:en:Wikipedia:NavFrame]].
* Maintainers: [[:en:User:R. Koot]]
*/
var autoCollapse = 2;
var collapseCaption = '숨기기';
var expandCaption = '보이기';
window.collapseTable = function ( tableIndex ) {
var Button = document.getElementById(
'collapseButton' + tableIndex
);
var Table = document.getElementById(
'collapsibleTable' + tableIndex
);
if ( !Table || !Button ) {
return false;
}
var Rows = Table.rows;
var i;
if ( Button.firstChild.data === collapseCaption ) {
for ( i = 1; i < Rows.length; i++ ) {
Rows[ i ].style.display = 'none';
}
Button.firstChild.data = expandCaption;
} else {
for ( i = 1; i < Rows.length; i++ ) {
Rows[ i ].style.display =
Rows[ 0 ].style.display;
}
Button.firstChild.data = collapseCaption;
}
};
function createCollapseButtons() {
var tableIndex = 0;
var NavigationBoxes = {};
var Tables = document.getElementsByTagName( 'table' );
var i;
function handleButtonLink( index, e ) {
window.collapseTable( index );
e.preventDefault();
}
for ( i = 0; i < Tables.length; i++ ) {
if ( $( Tables[ i ] ).hasClass( 'collapsible' ) ) {
/*
* only add button and increment count
* if there is a header row to work with
*/
var HeaderRow =
Tables[ i ].getElementsByTagName( 'tr' )[ 0 ];
if ( !HeaderRow ) {
continue;
}
var Header =
HeaderRow.getElementsByTagName( 'th' )[ 0 ];
if ( !Header ) {
continue;
}
NavigationBoxes[ tableIndex ] = Tables[ i ];
Tables[ i ].setAttribute(
'id',
'collapsibleTable' + tableIndex
);
var Button =
document.createElement( 'span' );
var ButtonLink =
document.createElement( 'a' );
var ButtonText =
document.createTextNode(
collapseCaption
);
/*
* Styles are declared in Common.css
*/
Button.className = 'collapseButton';
ButtonLink.style.color =
Header.style.color;
ButtonLink.setAttribute(
'id',
'collapseButton' + tableIndex
);
ButtonLink.setAttribute(
'href',
'#'
);
$( ButtonLink ).on(
'click',
$.proxy(
handleButtonLink,
ButtonLink,
tableIndex
)
);
ButtonLink.appendChild(
ButtonText
);
Button.appendChild(
document.createTextNode( '[' )
);
Button.appendChild(
ButtonLink
);
Button.appendChild(
document.createTextNode( ']' )
);
Header.insertBefore(
Button,
Header.firstChild
);
tableIndex++;
}
}
for ( i = 0; i < tableIndex; i++ ) {
if (
$( NavigationBoxes[ i ] ).hasClass( 'collapsed' ) ||
(
tableIndex >= autoCollapse &&
$( NavigationBoxes[ i ] ).hasClass( 'autocollapse' )
)
) {
window.collapseTable( i );
} else if (
$( NavigationBoxes[ i ] ).hasClass( 'innercollapse' )
) {
var element =
NavigationBoxes[ i ];
while (
( element = element.parentNode )
) {
if (
$( element ).hasClass( 'outercollapse' )
) {
window.collapseTable( i );
break;
}
}
}
}
}
mw.hook( 'wikipage.content' ).add(
createCollapseButtons
);
/* ([[위키백과:관리자 요청/2007년 5월#스크립트 추가 요청]]) */
/** Dynamic Navigation Bars (experimental) **********************************
*
* Description: See [[:en:Wikipedia:NavFrame]].
* Maintainers: UNMAINTAINED
*/
/* set up the words in your language */
var NavigationBarHide =
'[' + collapseCaption + ']';
var NavigationBarShow =
'[' + expandCaption + ']';
/**
* Shows and hides content and picture
* (if available) of navigation bars
*
* Parameters:
* indexNavigationBar:
* the index of navigation bar to be toggled
*/
window.toggleNavigationBar =
function ( indexNavigationBar, event ) {
var NavToggle =
document.getElementById(
'NavToggle' + indexNavigationBar
);
var NavFrame =
document.getElementById(
'NavFrame' + indexNavigationBar
);
var NavChild;
if ( !NavFrame || !NavToggle ) {
return false;
}
/*
* if shown now
*/
if (
NavToggle.firstChild.data ===
NavigationBarHide
) {
for (
NavChild = NavFrame.firstChild;
NavChild !== null;
NavChild = NavChild.nextSibling
) {
if (
$( NavChild ).hasClass( 'NavContent' ) ||
$( NavChild ).hasClass( 'NavPic' )
) {
NavChild.style.display =
'none';
}
}
NavToggle.firstChild.data =
NavigationBarShow;
/*
* if hidden now
*/
} else if (
NavToggle.firstChild.data ===
NavigationBarShow
) {
for (
NavChild = NavFrame.firstChild;
NavChild !== null;
NavChild = NavChild.nextSibling
) {
if (
$( NavChild ).hasClass( 'NavContent' ) ||
$( NavChild ).hasClass( 'NavPic' )
) {
NavChild.style.display =
'block';
}
}
NavToggle.firstChild.data =
NavigationBarHide;
}
event.preventDefault();
};
/*
* adds show/hide-button
* to navigation bars
*/
function createNavigationBarToggleButton() {
var indexNavigationBar = 0;
var NavFrame;
var NavChild;
/*
* iterate over all div-elements
*/
var divs =
document.getElementsByTagName( 'div' );
for (
var i = 0;
( NavFrame = divs[ i ] );
i++
) {
/*
* if found a navigation bar
*/
if (
$( NavFrame ).hasClass( 'NavFrame' )
) {
indexNavigationBar++;
var NavToggle =
document.createElement( 'a' );
NavToggle.className =
'NavToggle';
NavToggle.setAttribute(
'id',
'NavToggle' + indexNavigationBar
);
NavToggle.setAttribute(
'href',
'#'
);
$( NavToggle ).on(
'click',
$.proxy(
window.toggleNavigationBar,
window,
indexNavigationBar
)
);
var isCollapsed =
$( NavFrame ).hasClass(
'collapsed'
);
/**
* Check if any children are already hidden.
* This loop is here for backwards compatibility.
*/
for (
NavChild = NavFrame.firstChild;
NavChild != null &&
!isCollapsed;
NavChild = NavChild.nextSibling
) {
if (
$( NavChild ).hasClass( 'NavPic' ) ||
$( NavChild ).hasClass( 'NavContent' )
) {
if (
NavChild.style.display ===
'none'
) {
isCollapsed = true;
}
}
}
if ( isCollapsed ) {
for (
NavChild = NavFrame.firstChild;
NavChild != null;
NavChild =
NavChild.nextSibling
) {
if (
$( NavChild ).hasClass( 'NavPic' ) ||
$( NavChild ).hasClass( 'NavContent' )
) {
NavChild.style.display =
'none';
}
}
}
var NavToggleText =
document.createTextNode(
isCollapsed ?
NavigationBarShow :
NavigationBarHide
);
NavToggle.appendChild(
NavToggleText
);
/*
* Find the NavHead and
* attach the toggle link
*/
for (
var j = 0;
j < NavFrame.childNodes.length;
j++
) {
if (
$( NavFrame.childNodes[ j ] )
.hasClass( 'NavHead' )
) {
NavToggle.style.color =
NavFrame
.childNodes[ j ]
.style.color;
NavFrame
.childNodes[ j ]
.appendChild(
NavToggle
);
}
}
NavFrame.setAttribute(
'id',
'NavFrame' +
indexNavigationBar
);
}
}
}
mw.hook( 'wikipage.content' ).add(
createNavigationBarToggleButton
);
/***** 그림 정보 틀을 자동으로 불러옴 ********
* Adds a link to subpages of current page
* from commons.wikimedia.org
* Maintainers: [[User:Yonidebest]], [[User:Dschwen]]
* [[사용자:Kwj2772]]가 수정
* JSconfig items: bool 'loadAutoInformationTemplate'
* (true=enabled (default), false=disabled)
* JSConfig를 사용하지 않도록 수정함.
* --[[사용자:Klutzy|Klutzy]]
********************************************/
if (
mw.config.get(
'wgCanonicalSpecialPageName'
) == 'Upload'
) {
importScript(
'MediaWiki:Upload.js'
);
}
/*
* 인터랙티브 지도.
* 영어 위키백과에서 가져옴.
*/
/**
* WikiMiniAtlas
*
* Description:
* WikiMiniAtlas is a popup click and drag
* world map.
*
* Maintainers: [[User:Dschwen]]
*/
( function () {
var require_wikiminiatlas = false;
var coord_filter = /geohack/;
$( function () {
$( 'a.external.text' ).each(
function ( key, link ) {
if (
link.href &&
coord_filter.exec(
link.href
)
) {
require_wikiminiatlas =
true;
return false;
}
}
);
if (
$( 'div.kmldata' ).length
) {
require_wikiminiatlas =
true;
}
if ( require_wikiminiatlas ) {
mw.loader.load(
'//meta.wikimedia.org/w/index.php?title=MediaWiki:Wikiminiatlas.js&action=raw&ctype=text/javascript'
);
}
} );
}() );
/**
* Fix for Windows XP Unicode font rendering
*/
if (
navigator.appVersion.search(
/windows nt 5/i
) !== -1
) {
mw.util.addCSS(
'.IPA {' +
'font-family:' +
'"Lucida Sans Unicode",' +
'"Arial Unicode MS";' +
'} ' +
'.Unicode {' +
'font-family:' +
'"Arial Unicode MS",' +
'"Lucida Sans Unicode";' +
'} '
);
}
/**
* 편집 안내
*
* 생존 인물에 대한 편집 안내.
* 영어 위키백과에서 가져옴
*/
function addEditIntro( name ) {
$( '.mw-editsection, #ca-edit' )
.find( 'a' )
.each(
function () {
this.href =
$( this ).attr(
'href'
) +
'&editintro=' +
name;
}
);
}
if (
mw.config.get(
'wgNamespaceNumber'
) === 0
) {
$( function () {
var cats =
mw.config.get(
'wgCategories'
);
if ( !cats ) {
return;
}
if (
$.inArray(
'살아있는 사람',
cats
) !== -1 ||
$.inArray(
'생사 불명',
cats
) !== -1
) {
addEditIntro(
'틀:BLP_편집_안내'
);
}
} );
}
/* =========================================================
* 사용자 정의 펼치기 · 접기
*
* 예:
*
* id="toggleCompany"
* ↓
* id="collapsibleCompany"
*
* 선택적으로:
* id="toggleTextCompany"
*
* 투명도 효과 없이 높이만 300ms 동안 애니메이션
* =========================================================
*/
function initializeCustomToggle( $root ) {
$root.find( '.toggleBtn' )
.addBack( '.toggleBtn' )
.each( function () {
var $toggle =
$( this );
/*
* 동일 요소 중복 초기화 방지
*/
if (
$toggle.data(
'custom-toggle-initialized'
)
) {
return;
}
var toggleId =
$toggle.attr( 'id' );
if ( !toggleId ) {
return;
}
/*
* toggleXXX
* → collapsibleXXX
*/
var contentId =
toggleId.replace(
'toggle',
'collapsible'
);
/*
* toggleXXX
* → toggleTextXXX
*/
var textId =
toggleId.replace(
'toggle',
'toggleText'
);
var $content =
$( '#' + contentId );
var $text =
$( '#' + textId );
if ( !$content.length ) {
return;
}
$toggle.data(
'custom-toggle-initialized',
true
);
/*
* 최초 상태는 접힘
*/
$content.hide();
$toggle.attr( {
'aria-expanded':
'false',
'tabindex':
$toggle.attr(
'tabindex'
) || '0'
} );
/*
* 펼치기/접기 실행
*/
function toggleContent() {
/*
* 진행 중인 애니메이션의
* 끝 상태로 강제 이동하지 않고
* 현재 상태에서 정리
*/
$content.stop(
true,
false
);
if (
$content.is(
':visible'
)
) {
/*
* 접기
*/
$toggle.attr(
'aria-expanded',
'false'
);
$content.slideUp(
300,
function () {
/*
* jQuery가 애니메이션 과정에서
* 넣은 높이 관련 스타일 정리.
*
* display:none은 slideUp이 유지.
*/
$content.css( {
height: '',
paddingTop: '',
paddingBottom: '',
marginTop: '',
marginBottom: '',
overflow: ''
} );
}
);
} else {
/*
* 펼치기
*/
$toggle.attr(
'aria-expanded',
'true'
);
$content.slideDown(
300,
function () {
/*
* 펼친 뒤에는 원래 CSS가
* 크기와 여백을 다시 결정.
*/
$content.css( {
height: '',
paddingTop: '',
paddingBottom: '',
marginTop: '',
marginBottom: '',
overflow: '',
display: ''
} );
}
);
}
/*
* 토글 문구가 따로 있는 경우
*/
if ( $text.length ) {
$text.text(
'[ 펼치기 · 접기 ]'
);
}
}
/*
* 마우스 클릭
*/
$toggle.on(
'click.customToggle',
function ( event ) {
event.preventDefault();
toggleContent();
}
);
/*
* 키보드
* Enter / Space
*/
$toggle.on(
'keydown.customToggle',
function ( event ) {
if (
event.key === 'Enter' ||
event.key === ' '
) {
event.preventDefault();
toggleContent();
}
}
);
} );
}
/*
* 일반 문서 최초 로딩
*/
$( function () {
initializeCustomToggle(
$( document )
);
} );
/*
* AJAX / VisualEditor / 동적 콘텐츠 등으로
* 문서 내용이 다시 삽입되는 경우에도 초기화
*/
mw.hook( 'wikipage.content' ).add(
function ( $content ) {
initializeCustomToggle(
$content
);
}
);
/* End of mw.loader.using callback */
} );
/* DO NOT ADD CODE BELOW THIS LINE */