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

/***
 * 서명 누락 경고 스크립트(개발판)
 * 
 * 지뢰주의.
 * 
 * 설명:
 *  정해진 문서에서 편집창에 서명(물결표 넷)이 입력되지 않았을 경우,
 *  변경사항 게시 버튼을 눌렀을 때 서명 누락을 사용자에게 경고
 * 
 * 사용자 설정:
 *  window.nsaIgnoreNoTime: boolean, 물결표 셋만 입력한 경우(=시간을 자동
 *    입력하지 않는 경우)에 경고하지 않음
 *  window.nsaNoAlertMinor: boolean, “사소한 편집”이 체크되면 경고하지 않음
 *  window.nsaCustom: object, 프로젝트 및 이름공간별로 동작할 문서를 사용자 지정
 * 
 *  window.nsaCustom 설정 예시:
 *   window.nsaCustom = {'en.wikipedia.org': {
 *     4: 'Village pump|Help desk', // Wikipedia:
 *     12: 'Books/Feedback' //Help
 *     },
 *     'meta.wikimedia.org': {
 *       0: 'Stewards/Elections \d{4}/Questions',
 *       4: 'Requests|' // Meta:
 *     }
 *   }
***/

function noSignAlert() {
	var project = document.location.hostname;
	var lang = mw.config.get( 'wgUserLanguage' );
	
	var msg = {
		'en': ['You don\'t have any new signature in your edit.', 'It seems that you don\'t have a timestamp with your signature.', ' Are you sure you want to proceed?'],
		'ko': ['서명이 입력되지 않았습니다.', '서명에 시간이 입력되지 않은 것 같습니다.', ' 계속하시겠습니까?']
	};
	
	//동작할 문서 지정
	//wgNamespaceNumber: RegExp
	//RegExp가 ''이면 해당 이름공간에서는 항상 동작
	var titleList = {
		'ko.wikipedia.org': {
			4: '사랑방 \\((일반|기술|정책)\\)/|삭제 토론/|' + 
			'문서 관리 요청/|문서 이동 요청/|사용자 관리 요청/|' + 
			'사용자 권한 신청/|계정 이름 변경 요청|봇/|봇 편집 요청/|' +
			'관리자 알림판|질문방/|방명록|함께 검토하기|' +
			'위키프로젝트/제안|중재 요청/|의견 요청/|편집 필터/오동작|' +
			'관리자 선거/|사무장 선거/|검사관 선거/|중재위원회 선거/|' +
			'관리자 권한 회수/|파일 업로드 요청|다중 계정 검사 요청|' +
			'알찬 글 후보/|좋은 글 후보/|알찬 목록 후보/',
			102: '위키백과 토막글/제안'
		}
	};
	
	var wgNamespaceNumber = mw.config.get('wgNamespaceNumber');
	var wgTitle = mw.config.get('wgTitle');
	var wpSave = document.getElementById('wpSave');
	
	if (!wpSave) return;
	
	//fallback
	if (typeof msg[lang] === 'undefined' ) {
		lang = 'en';
	}
	
	// 사용자 패턴 추가
	if (typeof window.nsaCustom === 'object') {
		for ( var id in window.nsaCustom[project] ) {
			if ( typeof titleList[project] === 'undefined' ) {
				titleList[project] = window.nsaCustom[project];
			}
			else {
				if (typeof titleList[project][id] === 'undefined') {
					titleList[project][id] = window.nsaCustom[project][id];
				}
				else if (window.nsaCustom[project][id] === '' ) {
					titleList[project][id] = '';
				}
				else {
					titleList[project][id] += '|' + window.nsaCustom[project][id];
				}
			}
		}
	}

	//토론 문서에서는 무조건 동작
	if (wgNamespaceNumber % 2 !== 1) {
		//토론이 아닌 경우
		//titleList[project][wgNamespaceNumber] === undefined 인 경우 항상
		// !wgTitle.match(titleList[project][wgNamespaceNumber]) === false
		if (typeof titleList[project][wgNamespaceNumber] === 'undefined' ||
			!wgTitle.match('^(' + titleList[project][wgNamespaceNumber] + ')')) return;
	}

	//서명 안 했을 때 경고
	wpSave.onclick = function(){
		var wpTextbox1val = document.editform.wpTextbox1.value;
		var minor = false;
		if ( typeof $('#wpMinoredit')[0] === 'object' ) {
			minor = $('#wpMinoredit')[0].checked;
		}
		if ( minor && window.nsaNoAlertMinor )
			return;
		else if (wpTextbox1val.indexOf('~~\~~') < 0 && wpTextbox1val.indexOf('~\~~') >= 0 && !window.nsaIgnoreNoTime )
			return confirm( msg[lang][1] + msg[lang][2] );
		else if (wpTextbox1val.indexOf('~\~~') < 0 )
			return confirm( msg[lang][0] + msg[lang][2] );
		else
			return;
	};
}

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