Senior9324 (토론 | 기여) 편집 요약 없음 |
Senior9324 (토론 | 기여) 편집 요약 없음 |
||
64번째 줄: | 64번째 줄: | ||
} | } | ||
} | } | ||
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: "타인에 의해 퍼블릭 도메인으로 배포됨"}, | |||
"PD-old": {value: "저작권 보호기간이 만료되어 저작권이 소멸됨", own: false}, | |||
"PD-ineligible": {value: "창작성이 결여되어 보호에 부적격합니다.", own: false}, | |||
"저작권법 제7조": {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(); | |||
}); |
2015년 11월 13일 (금) 00:53 판
importScript("User:Senior9324/Gadget-ReferenceDrawerDev.js");
importStylesheet("User:Senior9324/Gadget-ReferenceDrawerDev.css");
/*
* written By. LiteHell
* Warning : This script uses localStorage of your browser so BREADCUMB WILL BE DELETED IF YOU CLEAR STORAGE DATA FROM YOUR BROWSER.
*/
if (mw.config.exists("wgIsArticle") && mw.config.exists("wgPageName") && mw.config.exists("wgArticlePath") && mw.config.exists("wgNamespaceNumber")) {
var conf = mw.config.get(["wgIsArticle", "wgPageName", "wgArticlePath", "wgNamespaceNumber"]);
if (conf.wgIsArticle) {
var itemName = "pageBreadcumbs";
function initStorageIfRequired() {
if (localStorage.getItem(itemName) == null)
localStorage.setItem(itemName, "[]");
}
function setStorage(value) {
initStorageIfRequired();
localStorage.setItem(itemName, JSON.stringify(value.slice(-20)));
}
function getStorage() {
initStorageIfRequired();
return JSON.parse(localStorage.getItem(itemName));
}
function makeBreadBar(arr, active) {
var ol = document.createElement("ol");
ol.className = "breadcrumb";
ol.innerHTML = '<li id="cleanBreads"><a href="javascript:(function(){})();" style="color: red;"><span class="glyphicon glyphicon-trash"></span></a></li>';
ol.querySelector('li#cleanBreads > a').addEventListener("click", function() {
if (confirm("진짜로 빵가루를 전부다 청소할까요?")) {
localStorage.setItem(itemName, "[]");
alert('강제 새로고침하면 지워져 있을겁니다. :)');
}
});
for (var i = 0; i < arr.length; i++) {
var now = arr[i];
var li = document.createElement("li");
if (now == active) {
li.className = "active";
li.textContent = now;
} else {
var anchor = document.createElement("a");
anchor.href = conf.wgArticlePath.replace('$1', now);
anchor.title = now;
anchor.textContent = now;
li.appendChild(anchor);
}
ol.appendChild(li);
}
return ol;
}
var articles = getStorage(), discuss = (conf.wgNamespaceNumber % 2) || (conf.wgNamespaceNumber == 2600);
if(!(articles.length == 0) || !discuss) {
if((articles.length == 0 || (articles.length != 0 && articles[articles.length - 1] != conf.wgPageName)) && !discuss) articles.push(conf.wgPageName);
setStorage(articles, conf.wgPageName);
var breadbar = makeBreadBar(articles, conf.wgPageName);
var contentButtons = document.querySelector(".libre_content_tools");
contentButtons.parentNode.insertBefore(breadbar, contentButtons);
}
}
}
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: "타인에 의해 퍼블릭 도메인으로 배포됨"},
"PD-old": {value: "저작권 보호기간이 만료되어 저작권이 소멸됨", own: false},
"PD-ineligible": {value: "창작성이 결여되어 보호에 부적격합니다.", own: false},
"저작권법 제7조": {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();
});