사용자:IRTC1015/copyReasonLink.js

위키백과, 우리 모두의 백과사전.

참고: 설정을 저장한 후에 바뀐 점을 확인하기 위해서는 브라우저의 캐시를 새로 고쳐야 합니다. 구글 크롬, 파이어폭스, 마이크로소프트 엣지, 사파리: ⇧ Shift 키를 누른 채 "새로 고침" 버튼을 클릭하십시오. 더 자세한 정보를 보려면 위키백과:캐시 무시하기 항목을 참고하십시오.

// 편집 요약 위에, 현재 편집 중인 문단으로 가는 위키링크(현재판 또는 고유 링크) 생성
// 링크를 클릭하면 나오는 입력창의 내용을 수동으로 클립보드에 복사해서 사용

window.crlL10n = {
	en: ['Special:Permalink', 'Ctrl+C to copy text', 'Create link to this section', '(Permalink)'],
	ko: ['특:고유링크', 'Ctrl+C를 눌러 글을 복사하세요', '이 문단으로 가는 링크 생성', '(고유링크)']
};

function copyReasonLink(permalink) {
	var wgPageName = mw.config.get('wgPageName').replace(/_/g, ' ');
	var text;

	if (permalink === true) {
		text = '[\[' + ( window.crlL10n[mw.config.get( 'wgUserLanguage' )][0] || window.crlL10n.en[0] ) + '/'
			+ mw.config.get('wgCurRevisionId') + window.crlSmry + '|' + wgPageName + window.crlSmry + ']]';
	}
	else {
		text = '[\[' + wgPageName + window.crlSmry + ']]';
	}

	window.prompt( ( window.crlL10n[mw.config.get( 'wgUserLanguage' )][1] || window.crlL10n.en[1] ), text);
}

function appendCrlBtn() {
	if (!wpSummary || (wpSummary.form.wpSection && 
		wpSummary.form.wpSection.value == 'new')) return;
	window.crlSmry = document.getElementById('wpSummary').value
		.slice(3, document.getElementById('wpSummary').value.lastIndexOf('*/')-1);
	if (window.crlSmry !== '') {
		window.crlSmry = '#' + window.crlSmry;
	}
	crlButtons = document.createElement('div');
	crlButtons.id = 'crlButtons';
	crlButtons.style.fontSize = 'x-small';
	wpSummary.parentNode.insertBefore(crlButtons, wpSummary.nextSibling);

	var btn1 = document.createElement('span');
	var btn2 = document.createElement('span');
	btn1.onclick = function() {copyReasonLink(false);};
	btn2.onclick = function() {copyReasonLink(true);};
	btn1.appendChild(document.createTextNode( ( window.crlL10n[mw.config.get( 'wgUserLanguage' )][2] || window.crlL10n.en[2] ) ) );
	btn2.appendChild(document.createTextNode( ( window.crlL10n[mw.config.get( 'wgUserLanguage' )][3] || window.crlL10n.en[3] ) ) );
	btn1.style.cursor = 'pointer';
	btn2.style.cursor = 'pointer';
	crlButtons.appendChild(btn1);
	crlButtons.appendChild(document.createTextNode(' '));
	crlButtons.appendChild(btn2);
}

jQuery( document ).ready( function( $ ) {
	if ($.inArray( mw.config.get('wgAction'), ['edit', 'submit']) !== -1) {
		appendCrlBtn();
	}
});