미디어위키:Gadget-CreatePageUw.js: 두 판 사이의 차이

식물 vs 좀비 위키
편집 요약 없음
편집 요약 없음
9번째 줄: 9번째 줄:
}
}


function setSubmitButtonLabel( button ) {
function createNativeInput( originalInput ) {
var label;
var fieldLayout;
var widget;
var fieldContainer;
var nativeInput;


if ( !button ) {
if (
return;
originalInput.classList.contains(
'pvz-createpage-input'
)
) {
originalInput.placeholder =
'새로 재배할 문서의 제목을 입력하세요';
 
return originalInput;
}
}


button.classList.add(
fieldLayout = originalInput.closest(
'pvz-createpage-submit-button'
'.oo-ui-fieldLayout'
);
);


button.removeAttribute( 'style' );
fieldContainer = originalInput.closest(
button.setAttribute( 'aria-label', '만들기' );
'.oo-ui-fieldLayout-field'
);
 
if ( !fieldContainer ) {
return originalInput;
}
 
/*
* 기존 input의 이름·ID·필수값·최대 길이 등은 유지하되,
* OOUI 클래스와 인라인 디자인은 모두 제거한다.
*/
nativeInput = originalInput.cloneNode( false );


if (
nativeInput.value = originalInput.value;
button.tagName.toLowerCase() ===
nativeInput.className =
'input'
'pvz-createpage-input';
) {
 
button.value = '만들기';
nativeInput.removeAttribute( 'style' );
} else {
nativeInput.removeAttribute( 'role' );
label = button.querySelector(
nativeInput.removeAttribute( 'aria-invalid' );
'.oo-ui-labelElement-label'
 
);
nativeInput.placeholder =
'새로 재배할 문서의 제목을 입력하세요';


if ( label ) {
nativeInput.setAttribute(
label.textContent = '만들기';
'aria-label',
} else {
'새로 재배할 문서의 제목을 입력하세요'
button.textContent = '만들기';
);
}
}


widget = button.closest(
/*
'.oo-ui-buttonInputWidget, ' +
* OOUI 입력창 래퍼 전체를 삭제하고
'.oo-ui-buttonWidget'
* 일반 입력창 하나만 남긴다.
*/
fieldContainer.replaceChildren(
nativeInput
);
);


if ( widget ) {
if ( fieldLayout ) {
widget.classList.add(
fieldLayout.classList.add(
'pvz-createpage-submit-widget'
'pvz-createpage-input-layout'
);
);
}


widget.classList.remove(
return nativeInput;
'oo-ui-flaggedElement-progressive'
}
 
function createNativeSubmitButton(
form,
originalButton
) {
var fieldLayout;
var fieldContainer;
var nativeButton;
var attributes;
 
if ( !originalButton ) {
return;
}
 
if (
originalButton.classList.contains(
'pvz-createpage-submit-button'
)
) {
originalButton.textContent = '제출';
originalButton.setAttribute(
'aria-label',
'제출'
);
);


widget.removeAttribute( 'style' );
return;
}
}
}


function initializeCreatePageUw() {
fieldLayout = originalButton.closest(
var input;
'.oo-ui-fieldLayout'
var inputWidget;
);
var fieldLayout;
var insertionTarget;
var imageBox;
var image;
var form;
var submitButton;


input = document.getElementById(
fieldContainer = originalButton.closest(
'mw-input-wptitle'
'.oo-ui-fieldLayout-field'
);
);


if ( !input ) {
if ( !fieldContainer ) {
return;
return;
}
}


input.placeholder =
nativeButton =
'새로 재배할 문서의 제목을 입력하세요';
document.createElement( 'button' );
 
nativeButton.type = 'submit';
nativeButton.className =
'pvz-createpage-submit-button';


input.setAttribute(
nativeButton.textContent = '제출';
nativeButton.setAttribute(
'aria-label',
'aria-label',
'새로 재배할 문서의 제목을 입력하세요'
'제출'
);
);


input.classList.add(
/*
'pvz-createpage-input'
* 기존 버튼의 제출 관련 속성을 유지한다.
);
*/
attributes = [
'id',
'name',
'value',
'title',
'formaction',
'formmethod',
'formenctype',
'formtarget'
];
 
attributes.forEach( function ( attribute ) {
if (
originalButton.hasAttribute(
attribute
)
) {
nativeButton.setAttribute(
attribute,
originalButton.getAttribute(
attribute
)
);
}
} );
 
if ( originalButton.disabled ) {
nativeButton.disabled = true;
}


input.removeAttribute( 'style' );
if (
originalButton.hasAttribute(
'formnovalidate'
)
) {
nativeButton.setAttribute(
'formnovalidate',
''
);
}


inputWidget = input.closest(
/*
'.oo-ui-textInputWidget'
* OOUI 버튼 래퍼 전체를 삭제하고
* 일반 제출 버튼 하나만 남긴다.
*/
fieldContainer.replaceChildren(
nativeButton
);
);


if ( inputWidget ) {
if ( fieldLayout ) {
inputWidget.classList.add(
fieldLayout.classList.add(
'pvz-createpage-input-widget'
'pvz-createpage-submit-layout'
);
);
inputWidget.removeAttribute( 'style' );
}
}
}


fieldLayout = input.closest(
function insertSproutImage(
'.oo-ui-fieldLayout'
input,
);
fieldLayout
) {
var imageBox;
var image;
var insertionTarget;


if (
if (
!document.querySelector(
document.querySelector(
'.pvz-createpage-sprout'
'.pvz-createpage-sprout'
)
)
) {
) {
imageBox =
return;
document.createElement( 'div' );
}
 
imageBox =
document.createElement( 'div' );
 
imageBox.className =
'pvz-createpage-sprout';
 
image =
document.createElement( 'img' );
 
image.src = mw.util.getUrl(
'Special:Redirect/file/' +
'Sprout_PvZ2.png'
);


imageBox.className =
image.alt = '';
'pvz-createpage-sprout';
image.className =
'pvz-design-critical';


image =
imageBox.appendChild( image );
document.createElement( 'img' );


image.src = mw.util.getUrl(
insertionTarget =
'Special:Redirect/file/' +
fieldLayout ||
'Sprout_PvZ2.png'
input.parentElement;
 
if (
insertionTarget &&
insertionTarget.parentNode
) {
insertionTarget.parentNode.insertBefore(
imageBox,
insertionTarget
);
);
}
}
function initializeCreatePageUw() {
var originalInput;
var inputFieldLayout;
var input;
var form;
var originalButton;
originalInput = document.getElementById(
'mw-input-wptitle'
);


image.alt = '';
if ( !originalInput ) {
image.className =
return;
'pvz-design-critical';
}


imageBox.appendChild( image );
inputFieldLayout = originalInput.closest(
'.oo-ui-fieldLayout'
);


insertionTarget =
input = createNativeInput(
fieldLayout ||
originalInput
inputWidget ||
);
input.parentElement;


if (
insertSproutImage(
insertionTarget &&
input,
insertionTarget.parentNode
inputFieldLayout
) {
);
insertionTarget.parentNode
.insertBefore(
imageBox,
insertionTarget
);
}
}


form = input.closest( 'form' );
form = input.closest( 'form' );
155번째 줄: 272번째 줄:
}
}


submitButton = form.querySelector(
originalButton = form.querySelector(
'.pvz-createpage-submit-button, ' +
'button[type="submit"], ' +
'button[type="submit"], ' +
'input[type="submit"], ' +
'input[type="submit"], ' +
162번째 줄: 280번째 줄:
);
);


setSubmitButtonLabel( submitButton );
createNativeSubmitButton(
form,
originalButton
);
}
}