미디어위키:UploadForm.js

Senior9324 (토론 | 기여)님의 2015년 10월 8일 (목) 11:13 판

참고: 설정을 저장한 후에 바뀐 점을 확인하기 위해서는 브라우저의 캐시를 새로 고쳐야 합니다.

  • 파이어폭스 / 사파리: Shift 키를 누르면서 새로 고침을 클릭하거나, Ctrl-F5 또는 Ctrl-R을 입력 (Mac에서는 ⌘-R)
  • 구글 크롬: Ctrl-Shift-R키를 입력 (Mac에서는 ⌘-Shift-R)
  • 인터넷 익스플로러 / 엣지: Ctrl 키를 누르면서 새로 고침을 클릭하거나, Ctrl-F5를 입력.
  • 오페라: Ctrl-F5를 입력.
var maps = {};
maps.mainMap = {
	"own": "직접 만든 저작물입니다.",
	"other": "타인이 만든 저작물입니다."
};
maps.ownMap = {
	"cc-by-sa-3.0": "CC BY-SA 3.0으로 배포합니다",
	"cc-0": "CC0 1.0 퍼블릭 도메인으로 배포합니다.",
	"PD-self": "저작권을 포기하여 퍼블릭 도메인으로 배포합니다."
};
maps.otherMap = {
	"conditions": {
		"border1": "---비자유 저작물---",
		"퍼옴": "독점적 저작권이 있는 비자유 저작물을 가져왔습니다.",
		"border2": "---크리에이티브 커먼즈 라이선스---",
		"by": "저작자표시",
		"by-sa": "저작자표시-동일조건변경허락",
		"by-nd": "저작자표시-변경금지",
		"by-nc": "저작자표시-비영리",
		"by-nc-sa": "저작자표시-비영리-동일조건변경허락",
		"by-nc-nd": "저작자표시-비영리-변경금지",
		"border3": "---퍼블릭 도메인---",
		"cc-0": "CC0 1.0 퍼블릭 도메인",
		"PD-author": "타인에 의해 퍼블릭 도메인으로 배포됨",
		"PD-old": "저작권 보호기간이 만료되어 저작권이 소멸됨",
		"PD-ineligible": "보호에 부적격하므로 저작물이 아닙니다."
	},
	"versions": {
		"2.0": "2.0 일반",
		"2.0-kr": "2.0 대한민국",
		"2.5": "2.5 일반",
		"3.0": "3.0 Unported",
		"4.0": "4.0 국제"
	}
};

function makeDropdown(map) {
	var dropdown = $("<select>");
	dropdown.append('<option value="">기본값</option>');
	for (var i in map) {
		if (map.hasOwnProperty(i)) {
			if (i.indexOf("border") > -1) {
				dropdown.append($("<option>").prop("disabled", true).attr("value", "").css("color", "gray").text(map[i]));
			} else {
				dropdown.append($("<option>").attr("value", i).text(map[i]));
			}
		}
	}
	return dropdown;
}

function LicenseDropdown() {
	var licenseElem = $("<input>").attr("id", "wpLicense").attr("type", "hidden").attr("name", "wpLicense");
	$("#wpLicense").replaceWith(licenseElem);
	var firstLevelDropdown = makeDropdown(maps.mainMap);
	var licenseDropdown, versionDropdown, authorText;
	firstLevelDropdown.change(function() {
		switch (firstLevelDropdown.val()) {
			case "own":
				if (licenseDropdown) {
					licenseDropdown.remove();
					if (versionDropdown) {
						versionDropdown.remove();
					}
				}
				licenseDropdown = makeDropdown(maps.ownMap);
				licenseDropdown.change(function() {
					licenseElem.val("자작|" + $(this).val());
				});
				licenseDropdown.insertAfter(firstLevelDropdown);
				break;
			case "other":
				if (licenseDropdown) {
					licenseDropdown.remove();
					if (versionDropdown) {
						versionDropdown.remove();
					}
				}
				licenseDropdown = makeDropdown(maps.otherMap.conditions).css("width", "70%");
				versionDropdown = makeDropdown(maps.otherMap.versions).css("width", "30%").prop("disabled", true);
				licenseDropdown.change(function() {
					var condition = licenseDropdown.val();
					if (condition.indexOf("by") == 0) {
						versionDropdown.prop("disabled", false);
						if (!versionDropdown.val()) {
							licenseElem.val("");
							return;
						}
						
						licenseElem.val("cc-" + condition + "-" + versionDropdown.val());
					} else {
						versionDropdown.prop("disabled", true);
						licenseElem.val(condition);
					}
				});
				versionDropdown.change(function() {
					var condition = licenseDropdown.val();
					if (condition.indexOf("by") == 0) {
						versionDropdown.prop("disabled", false);
						if (!versionDropdown.val()) {
							licenseElem.val("");
							return;
						}
						
						licenseElem.val("cc-" + condition + "-" + versionDropdown.val());
					}
				});
				licenseDropdown.insertAfter(firstLevelDropdown);
				versionDropdown.insertAfter(licenseDropdown);
				break;
			default:
		}
	});
	firstLevelDropdown.insertAfter(licenseElem);
	
	$("#mw-upload-form").submit(function(e) {
		if (licenseElem.val() == "") {
			if (versionDropdown && !versionDropdown.prop("disabled") && !versionDropdown.val()) {
				alert("라이선스 버전을 선택해주세요.");
				e.preventDefault();
			} else {
				licenseElem.val("퍼옴");
			}
		}
	});
}

$(function() {
	if (document.location.href.indexOf("&wpForReUpload=1") > -1) return;
	
	LicenseDropdown();
});