미디어위키 : Gadget-editsummary.js

위키百科, 우리 모두의 百科事典.

參考: 設定을 貯藏한 後에 바뀐 點을 確認하기 위해서는 브라우저의 캐시를 새로 고쳐야 합니다. 구글 크롬 , 파이어폭스 , 마이크로소프트 엣지 , 사파리 : ? Shift 키를 누른 채 "새로 고침" 버튼을 클릭하십시오. 더 仔細한 情報를 보려면 위키百科:캐시 無視하기 項目을 參考하십시오.

/***

 * 編輯要約 商用區

 * 

 * 說明:

 *  編輯 要約 入力欄 아래에, 클릭하면 要約에 定해진 文句를 入力하는 버튼을 追加

 * 

 * 環境設定龍 變數:

 *	window.esSummaries: object, 追加될 버튼 或은 텍스트

 ***/


// 週 函數: 페이지 로드 完了 時 버튼 生成 

function
 esEditSummary
()
 {

	var
 editform
 =
 document
.
getElementById
(
'editform'
);

	
	// 編輯 畵面(미리보기 包含)이면서 새 主題 덧붙이기가 아닌 境遇

	// (#wpSummary가 題目으로 使用되는 境遇)에만 動作

	// 要約창이 없는 境遇에는 美動作

	if
 ((
$
.
inArray
(
 mw
.
config
.
get
(
'wgAction'
),
 [
'edit'
,
 'submit'
])
 !==
 -
1
 &&
 editform
 &&
 editform
.
wpSection
)
 &&

		editform
.
wpSection
.
value
 !==
 'new'
 &&
 $
(
'#wpSummary'
).
length
 !==
 0
)
 {

		// esCanBeMinor: esInsSummary 函數에서 使用

		window
.
esCanBeMinor
 =
 1
;

		
		// 레거시

		if
 (
typeof
 window
.
esSummaries
 ===
 'undefined'
 &&
 typeof
 esEditSummaries
 ===
 'object'
)
 {

			window
.
esSummaries
 =
 esEditSummaries
;

		}

		
		// 컨테이너

		$
(
'#wpSummaryLabel'
).
after
(
$
(
'<div></div>'
).
attr
(
'id'
,
 'esBtns'
));

		
		// 레이블 追加

		var
 label
 =
 $
(
'<span></span>'
);

		label
.
addClass
(
'esLabel'
);

		label
.
text
(
'編輯要約 商用區: '
);

		$
(
"#esBtns"
).
prepend
(
label
);

		$
(
"#esBtns"
).
append
(
$
(
'<br>'
));

		
		// 要約 비우기 버튼 追加

		var
 clrBtn
 =
 $
(
"<span></span>"
).
attr
(
'title'
,
 '編輯 要約 비우기'
);

		clrBtn
.
addClass
(
'esClrBtn'
);

		clrBtn
.
text
(
'?'
);

		clrBtn
.
click
(
function
 ()
 {

			$
(
'#wpMinoredit'
).
prop
(
'checked'
,
 mw
.
user
.
options
.
get
(
'minordefault'
));

			$
(
'#wpSummary'
)[
0
].
value
 =
 ''
;

			window
.
esCanBeMinor
 =
 1
;

		});

		$
(
"#esBtns"
).
append
(
clrBtn
);

		
		// 설정 配列의 各 要素에 對해 버튼 追加 函數 實行

		for
 (
var
 id
 in
 window
.
esSummaries
)
 {

			esAppendBtn
(
id
);

		}

	}

}


// 버튼 追加 函數

function
 esAppendBtn
(
id
)
 {

	if
 (
typeof
 window
.
esSummaries
[
id
]
 ===
 'object'
)
 {

		var
 btn
 =
 $
(
"<span></span>"
).
attr
({

			'class'
:
 'esBtn'
,

			'title'
:
 window
.
esSummaries
[
id
][
2
]});

		btn
.
text
(
window
.
esSummaries
[
id
][
0
]);

		btn
.
click
(
function
 ()
 {
esInsSummary
(
window
.
esSummaries
[
id
][
1
],

			 window
.
esSummaries
[
id
][
3
],
 window
.
esSummaries
[
id
][
4
])});

		$
(
"#esBtns"
).
append
(
btn
);

	}

	// 줄바꿈 및 小題目

	else
 if
 (
typeof
 window
.
esSummaries
[
id
]
 ===
 'string'
)
 {

		if
 (
window
.
esSummaries
[
id
]
 ===
 'br'
)
 {

			$
(
'#esBtns'
).
append
(
$
(
'<br>'
));

		}

		else
 {

		var
 sTitle
 =
 $
(
"<span></span>"
).
attr
({

			'class'
:
 'esSTitle'
});

		sTitle
.
text
(
window
.
esSummaries
[
id
]);

		$
(
'#esBtns'
).
append
(
sTitle
);

		}

	}

}


// 編輯 要約 修正 函數: 버튼이 눌리면 動作

function
 esInsSummary
(
text
,
 isMinor
,
 clear
)
 {

	var
 wpSummary
 =
 $
(
'#wpSummary'
)[
0
];

	// 些少한 編輯 與否 체크박스 造作

	if
 (
typeof
 isMinor
 !==
 'undefined'
)
 {

		// 些少한 編輯이 明示的으로 아닌 要約이 한 番이라도 追加되면

		// 다른 要約 버튼에 依해 些少한 編輯이 체크되지 않음

		if
 (
isMinor
 ===
 0
 )
 window
.
esCanBeMinor
 =
 0
;

		$
(
'#wpMinoredit'
).
prop
(
'checked'
,
 (
window
.
esCanBeMinor
 &&
 isMinor
));

	}

	
	if
 (
typeof
 clear
 ===
 'undefined'
)
 clear
 =
 0
;

	
	// 要約 비우기

	if
 (
clear
)
 wpSummary
.
value
 =
 text
;

	// 要約 덧붙이기

	else
 if
 (
wpSummary
.
value
.
indexOf
(
text
)
 ===
 -
1
)
 {

		if
 (
wpSummary
.
value
.
match
(
/[^,; \/]$/
))
 wpSummary
.
value
 +=
 ', '
;

		wpSummary
.
value
 =
 wpSummary
.
value
.
replace
(
/\s+$/
,
 " "
)
 +
 text
;

	}

}


jQuery
(
 document
 ).
ready
(
esEditSummary
);