미디어위키:UploadForm.js: 두 판 사이의 차이

편집 요약 없음
편집 요약 없음
1번째 줄: 1번째 줄:
(function() {
(function() {
var temp = {}, maps = {};
var temp = {}, maps = {
maps.mainMap = {
"own": "직접 만든 저작물입니다.",
"other": "타인이 만든 저작물입니다."
};
maps.ownMap = {
"cc-by-3.0": "CC BY 3.0으로 배포합니다.",
"cc-by-sa-3.0": "CC BY-SA 3.0으로 배포합니다",
"cc-0": "CC0 1.0 퍼블릭 도메인으로 배포합니다.",
"PD-self": "저작권을 포기하여 퍼블릭 도메인으로 배포합니다."
};
maps.otherMap = {
"conditions": {
"conditions": {
"border1": "---비자유 저작물---",
"border1": "---비자유 저작물---",
"퍼옴": "독점적 저작권이 있는 비자유 저작물을 가져왔습니다.",
"퍼옴": {value: "독점적 저작권이 있는 비자유 저작물을 가져왔습니다.", own: false},
"border2": "---크리에이티브 커먼즈 라이선스---",
"border2": "---크리에이티브 커먼즈 라이선스---",
"by": "저작자표시",
"by": {value: "저작자표시"},
"by-sa": "저작자표시-동일조건변경허락",
"by-sa": {value: "저작자표시-동일조건변경허락"},
"by-nd": "저작자표시-변경금지",
"by-nd": {value: "저작자표시-변경금지"},
"by-nc": "저작자표시-비영리",
"by-nc": {value: "저작자표시-비영리"},
"by-nc-sa": "저작자표시-비영리-동일조건변경허락",
"by-nc-sa": {value: "저작자표시-비영리-동일조건변경허락"},
"by-nc-nd": "저작자표시-비영리-변경금지",
"by-nc-nd": {value: "저작자표시-비영리-변경금지"},
"border3": "---기타 라이선스---",
"border3": "---기타 라이선스---",
"공공누리 제1유형": "공공누리 제1유형: 출처표시",
"공공누리 제1유형": {value: "공공누리 제1유형: 출처표시", own: false},
"정보공유라이선스 허용": "정보공유라이선스 2.0: 허용",
"정보공유라이선스 허용": {value: "정보공유라이선스 2.0: 허용"},
"GPL": "GNU 일반 공중 사용 허가서",
"GFDL": "GNU 자유 문서 사용 허가서",
"border4": "---퍼블릭 도메인---",
"border4": "---퍼블릭 도메인---",
"cc-0": "CC0 1.0 퍼블릭 도메인",
"cc-0": {value: "CC0 1.0 퍼블릭 도메인"},
"PD-author": "타인에 의해 퍼블릭 도메인으로 배포됨",
"PD-self": {value: "저작권을 포기하여 퍼블릭 도메인으로 배포합니다.", own: true},
"PD-old": "저작권 보호기간이 만료되어 저작권이 소멸됨",
"PD-author": {value: "타인에 의해 퍼블릭 도메인으로 배포됨", own: false},
"PD-ineligible": "창작성이 결여되어 보호에 부적격합니다.",
"PD-old": {value: "저작권 보호기간이 만료되어 저작권이 소멸됨", own: false},
"저작권법 제7조": "법령, 고시, 사실 전달에 불과한 시사보도입니다.",
"PD-ineligible": {value: "창작성이 결여되어 보호에 부적격합니다.", own: false},
"국가 상징": "어떤 국가의 상징물입니다."
"저작권법 제7조": {value: "법령, 고시, 사실 전달에 불과한 시사보도입니다.", own: false},
"국가 상징": {value: "어떤 국가의 상징물입니다.", own: false}
},
},
"versions": {
"versions": {
51번째 줄: 39번째 줄:
if (i.indexOf("border") > -1) {
if (i.indexOf("border") > -1) {
dropdown.append($("<option>").prop("disabled", true).attr("value", "").css("color", "gray").text(map[i]));
dropdown.append($("<option>").prop("disabled", true).attr("value", "").css("color", "gray").text(map[i]));
} else if (map[i].constructor === String) {
dropdown.append($("<option>").attr("value", i).text(map[i]));
} else {
} else {
dropdown.append($("<option>").attr("value", i).text(map[i]));
dropdown.append($("<option>").attr("data-own", map[i].own).attr("value", i).text(map[i].value));
}
}
}
}
61번째 줄: 51번째 줄:
function LicenseDropdown() {
function LicenseDropdown() {
var licenseElem = $("<input>").attr("id", "wpLicense").attr("type", "hidden").attr("name", "wpLicense");
var licenseElem = $("<input>").attr("id", "wpLicense").attr("type", "hidden").attr("name", "wpLicense");
var licenseDropdown, versionDropdown;
var ownCheckBox = $("<input>").attr("type", "checkbox").change(function() {
licenseDropdown.val("");
applyValue("");
if (ownCheckBox.is(":checked")) {
licenseDropdown.find("[data-own=true]").prop("disabled", false);
licenseDropdown.find("[data-own=false]").prop("disabled", true);
} else {
licenseDropdown.find("[data-own=true]").prop("disabled", true);
licenseDropdown.find("[data-own=false]").prop("disabled", false);
}
});
$("#wpLicense").replaceWith(licenseElem);
$("#wpLicense").replaceWith(licenseElem);
var firstLevelDropdown = makeDropdown(maps.mainMap);
licenseDropdown = makeDropdown(maps.conditions).css("width", "70%");
var licenseDropdown, versionDropdown, authorText;
versionDropdown = makeDropdown(maps.versions).css("width", "30%").prop("disabled", true);
firstLevelDropdown.change(function() {
var applyValue = function(value) {
switch (firstLevelDropdown.val()) {
if (ownCheckBox.is(":checked") && value !== "") {
case "own":
licenseElem.val("자작|" + value).trigger("change");
licenseElem.val("").trigger("change");
} else {
if (licenseDropdown) {
licenseElem.val(value).trigger("change");
licenseDropdown.remove();
}
if (versionDropdown) {
};
versionDropdown.remove();
licenseDropdown.change(function() {
}
var condition = licenseDropdown.val();
}
if (condition.indexOf("by") == 0) {
licenseDropdown = makeDropdown(maps.ownMap);
versionDropdown.prop("disabled", false);
licenseDropdown.change(function() {
if (!versionDropdown.val()) {
if (!licenseDropdown.val()) {
applyValue("");
licenseElem.val("").trigger("change");
return;
return;
}
}
licenseElem.val("자작|" + $(this).val()).trigger("change");
applyValue("cc-" + condition + "-" + versionDropdown.val());
});
} else {
licenseDropdown.insertAfter(firstLevelDropdown);
versionDropdown.prop("disabled", true);
break;
applyValue(condition);
case "other":
}
licenseElem.val("").trigger("change");
});
if (licenseDropdown) {
versionDropdown.change(function() {
licenseDropdown.remove();
var condition = licenseDropdown.val();
if (versionDropdown) {
if (condition.indexOf("by") == 0) {
versionDropdown.remove();
versionDropdown.prop("disabled", false);
}
if (!versionDropdown.val()) {
}
applyValue("");
licenseDropdown = makeDropdown(maps.otherMap.conditions).css("width", "70%");
return;
versionDropdown = makeDropdown(maps.otherMap.versions).css("width", "30%").prop("disabled", true);
}
licenseDropdown.change(function() {
var condition = licenseDropdown.val();
applyValue("cc-" + condition + "-" + versionDropdown.val());
if (condition.indexOf("by") == 0) {
versionDropdown.prop("disabled", false);
if (!versionDropdown.val()) {
licenseElem.val("").trigger("change");
return;
}
licenseElem.val("cc-" + condition + "-" + versionDropdown.val()).trigger("change");
} else {
versionDropdown.prop("disabled", true);
licenseElem.val(condition).trigger("change");
}
});
versionDropdown.change(function() {
var condition = licenseDropdown.val();
if (condition.indexOf("by") == 0) {
versionDropdown.prop("disabled", false);
if (!versionDropdown.val()) {
licenseElem.val("").trigger("change");
return;
}
licenseElem.val("cc-" + condition + "-" + versionDropdown.val()).trigger("change");
}
});
licenseDropdown.insertAfter(firstLevelDropdown);
versionDropdown.insertAfter(licenseDropdown);
break;
default:
licenseElem.val("").trigger("change");
}
}
});
});
firstLevelDropdown.insertAfter(licenseElem);
licenseDropdown.insertAfter(licenseElem);
versionDropdown.insertAfter(licenseDropdown);
$("<label>").append(ownCheckBox).append(document.createTextNode(" 자작")).insertAfter(versionDropdown);
licenseElem.change(function() {
licenseElem.change(function() {
var tempname = licenseElem.val();
var tempname = licenseElem.val();
161번째 줄: 136번째 줄:
if (versionDropdown && !versionDropdown.prop("disabled") && !versionDropdown.val()) {
if (versionDropdown && !versionDropdown.prop("disabled") && !versionDropdown.val()) {
alert("라이선스 버전을 선택해주세요.");
alert("라이선스 버전을 선택해주세요.");
e.preventDefault();
} else if (ownCheckBox.is(":checked")) {
alert("올바른 라이선스가 아닙니다.");
e.preventDefault();
e.preventDefault();
} else {
} else {

2015년 11월 13일 (금) 01:00 판

(function() {
var temp = {}, maps = {
	"conditions": {
		"border1": "---비자유 저작물---",
		"퍼옴": {value: "독점적 저작권이 있는 비자유 저작물을 가져왔습니다.", own: false},
		"border2": "---크리에이티브 커먼즈 라이선스---",
		"by": {value: "저작자표시"},
		"by-sa": {value: "저작자표시-동일조건변경허락"},
		"by-nd": {value: "저작자표시-변경금지"},
		"by-nc": {value: "저작자표시-비영리"},
		"by-nc-sa": {value: "저작자표시-비영리-동일조건변경허락"},
		"by-nc-nd": {value: "저작자표시-비영리-변경금지"},
		"border3": "---기타 라이선스---",
		"공공누리 제1유형": {value: "공공누리 제1유형: 출처표시", own: false},
		"정보공유라이선스 허용": {value: "정보공유라이선스 2.0: 허용"},
		"border4": "---퍼블릭 도메인---",
		"cc-0": {value: "CC0 1.0 퍼블릭 도메인"},
		"PD-self": {value: "저작권을 포기하여 퍼블릭 도메인으로 배포합니다.", own: true},
		"PD-author": {value: "타인에 의해 퍼블릭 도메인으로 배포됨", own: false},
		"PD-old": {value: "저작권 보호기간이 만료되어 저작권이 소멸됨", own: false},
		"PD-ineligible": {value: "창작성이 결여되어 보호에 부적격합니다.", own: false},
		"저작권법 제7조": {value: "법령, 고시, 사실 전달에 불과한 시사보도입니다.", own: false},
		"국가 상징": {value: "어떤 국가의 상징물입니다.", own: false}
	},
	"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 if (map[i].constructor === String) {
				dropdown.append($("<option>").attr("value", i).text(map[i]));
			} else {
				dropdown.append($("<option>").attr("data-own", map[i].own).attr("value", i).text(map[i].value));
			}
		}
	}
	return dropdown;
}

function LicenseDropdown() {
	var licenseElem = $("<input>").attr("id", "wpLicense").attr("type", "hidden").attr("name", "wpLicense");
	var licenseDropdown, versionDropdown;
	var ownCheckBox = $("<input>").attr("type", "checkbox").change(function() {
		licenseDropdown.val("");
		applyValue("");
		
		if (ownCheckBox.is(":checked")) {
			licenseDropdown.find("[data-own=true]").prop("disabled", false);
			licenseDropdown.find("[data-own=false]").prop("disabled", true);
		} else {
			licenseDropdown.find("[data-own=true]").prop("disabled", true);
			licenseDropdown.find("[data-own=false]").prop("disabled", false);
		}
	});
	$("#wpLicense").replaceWith(licenseElem);
	licenseDropdown = makeDropdown(maps.conditions).css("width", "70%");
	versionDropdown = makeDropdown(maps.versions).css("width", "30%").prop("disabled", true);
	var applyValue = function(value) {
		if (ownCheckBox.is(":checked") && value !== "") {
			licenseElem.val("자작|" + value).trigger("change");
		} else {
			licenseElem.val(value).trigger("change");
		}
	};
	licenseDropdown.change(function() {
		var condition = licenseDropdown.val();
		if (condition.indexOf("by") == 0) {
			versionDropdown.prop("disabled", false);
			if (!versionDropdown.val()) {
				applyValue("");
				return;
			}
			
			applyValue("cc-" + condition + "-" + versionDropdown.val());
		} else {
			versionDropdown.prop("disabled", true);
			applyValue(condition);
		}
	});
	versionDropdown.change(function() {
		var condition = licenseDropdown.val();
		if (condition.indexOf("by") == 0) {
			versionDropdown.prop("disabled", false);
			if (!versionDropdown.val()) {
				applyValue("");
				return;
			}
			
			applyValue("cc-" + condition + "-" + versionDropdown.val());
		}
	});
	licenseDropdown.insertAfter(licenseElem);
	versionDropdown.insertAfter(licenseDropdown);
	$("<label>").append(ownCheckBox).append(document.createTextNode(" 자작")).insertAfter(versionDropdown);
	licenseElem.change(function() {
		var tempname = licenseElem.val();
		if (!tempname) {
			$("#mw-license-preview").html("");
			return;
		}
		
		if (temp[tempname]) {
			$("#mw-license-preview").html(temp[tempname]);
		} else {
			$.ajax({
				type: "GET",
				url: mw.util.wikiScript("api"),
				data: {
					action: "parse",
					format: "json",
					text: "{{" + tempname + "}}",
					contentmodel: "wikitext",
					prop: "text"
				},
				success: function(resp) {
					temp[tempname] = resp.parse.text["*"];
					$("#mw-license-preview").html(temp[tempname]);
				}
			});
		}
	});
	
	$("#mw-upload-form").submit(function(e) {
		if (licenseElem.val() == "") {
			if (versionDropdown && !versionDropdown.prop("disabled") && !versionDropdown.val()) {
				alert("라이선스 버전을 선택해주세요.");
				e.preventDefault();
			} else if (ownCheckBox.is(":checked")) {
				alert("올바른 라이선스가 아닙니다.");
				e.preventDefault();
			} else {
				licenseElem.val("퍼옴");
			}
		}
	});
}

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