387 lines
16 KiB
JavaScript
387 lines
16 KiB
JavaScript
|
|
/*
|
|
*
|
|
* NLIB 공통 JavaScript
|
|
*
|
|
*
|
|
*/
|
|
|
|
var CONTEXT_PATH = "";
|
|
|
|
// 팝업으로 비밀번호를 입력받아서 콜백함수에 전달한다.
|
|
function fn_promptPassword(msg, placeholder, callbackFucName) {
|
|
var options = "top=200, left=200, width=300, height=200, status=no, menubar=no, toolbar=yes, resizable=no";
|
|
var thePrompt = window.open("", "_NLIB_POMPT_PASSWORD", options);
|
|
var theHTML = "<html><head><title>" + placeholder + "</title><style type='text/css'> body { background-color: #ffd; } button { margin: 10px; }</style></head><body>";
|
|
|
|
theHTML += "<p>" + msg + "</p>";
|
|
theHTML += "<br/>";
|
|
theHTML += "비밀번호: <input type='text' id='thePass' placeholder='" + placeholder + "'/>";
|
|
theHTML += " <br />";
|
|
theHTML += " <br />";
|
|
theHTML += "<button title='확인' id='thePromptOk' onclick='opener.parent." + callbackFucName + "("
|
|
+ "document.getElementById(\"thePass\").value); window.close();'>확인</button>";
|
|
theHTML += "<button title='취소' id='thePromptClose' onclick='window.close();'>취소</button>";
|
|
theHTML += "</body></html>";
|
|
|
|
thePrompt.document.body.innerHTML = theHTML;
|
|
}
|
|
|
|
/**
|
|
* ID를 name 으로 하는 객체의 값을 숫자(10진수)로 변환하여 리턴한다.
|
|
* 값이 적절하지 않은 경우, defaultValue를 리턴한다.
|
|
*
|
|
* @param name
|
|
* @param defaultValue
|
|
* @returns
|
|
*/
|
|
function fn_getIntValue(name, defaultValue) {
|
|
var val = $("#" + name).val();
|
|
try {
|
|
return parseInt(val, 10);
|
|
} catch(error) {
|
|
console.error(error);
|
|
return defaultValue;
|
|
}
|
|
}
|
|
|
|
|
|
const POPUP_DEFAULT_WIDTH = 600; // 팝업 기본 창 가로 크기
|
|
const POPUP_DEFAULT_HEIGHT = 600; // 팝업 기본 창 세로 크기
|
|
|
|
/**
|
|
* 팝업을 생성하고 해당 URL로 접속한다.
|
|
*
|
|
* @param url
|
|
* @param popName
|
|
* @param width 생략 시 POPUP_DEFAULT_WIDTH
|
|
* @param height 생략 시 POPUP_DEFAULT_HEIGHT
|
|
* @returns
|
|
*/
|
|
function openPopup(url, popName, width, height) {
|
|
var options = "top=10, left=10, width=" + (width?width:POPUP_DEFAULT_WIDTH) + ", height=" + (height?height:POPUP_DEFAULT_HEIGHT) + ", status=no, menubar=no, toolbar=yes, resizable=no";
|
|
window.open(url, popName, options);
|
|
}
|
|
|
|
function validEmail(email) {
|
|
if(!email) return false;
|
|
const re = /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
|
|
return re.test(String(email).toLowerCase());
|
|
}
|
|
|
|
function fn_openLayerPopup(title, content, linkName, linkUrl) {
|
|
|
|
var layerPopupHtml =
|
|
"<h2>" + title + "</h2><br/>" +
|
|
"<div>" + content + "</div><br/>" +
|
|
"<br/> " +
|
|
"<div style='text-align:center;'><a href='#' onclick='fn_closeLayerPopup()'>[확인]</a>";
|
|
|
|
if(linkUrl != null) {
|
|
layerPopupHtml += " <a href='" + linkUrl + "'>[" + linkName + "]</a>";
|
|
}
|
|
layerPopupHtml += "</div>";
|
|
$(layerPopupHtml).appendTo("#NLIB_LAYER_POPUP");
|
|
$("#NLIB_LAYER_POPUP").show();
|
|
console.log(layerPopupHtml);
|
|
}
|
|
|
|
function fn_closeLayerPopup() {
|
|
$("#NLIB_LAYER_POPUP").html("");
|
|
$("#NLIB_LAYER_POPUP").fadeOut();
|
|
$("#NLIB_LAYER_POPUP").removeClass();
|
|
$('html,body').removeClass('no-scroll');
|
|
}
|
|
|
|
function fn_myAlert(newAlertNum) {
|
|
|
|
if(newAlertNum == "undefined" || newAlertNum == null || newAlertNum < 1) {
|
|
return;
|
|
}
|
|
|
|
var notiHtml =
|
|
'<div class="row Title">' +
|
|
' <p>지방문화원 소장자료</p>' +
|
|
' <h3>알림</h3>' +
|
|
'</div>' +
|
|
'<div class="inner">' +
|
|
' <div class="row Text">' +
|
|
' <p>아직 확인하지 않은<br>새로운 알림이 <span>' + newAlertNum + '</span>건 있습니다.</p>' +
|
|
' </div>' +
|
|
' <div class="row btn-box">' +
|
|
' <button type="button" class="btn btn-color" onclick="fn_closeLayerPopup()">확인</button>' +
|
|
' <button type="submit" class="btn btn-green" onclick="location.href = \'/cmm/listNotifications.do\'; ">알림 목록으로</button>' +
|
|
' </div>' +
|
|
' <button type="button" class="notice-close" onclick="fn_closeLayerPopup()"></button>' +
|
|
'</div>' +
|
|
'<div class="Bg"></div>';
|
|
fn_layerPopWithHtml(notiHtml, "pop-notice");
|
|
}
|
|
|
|
function fn_layerPopWithHtml(cHtml, addClasses) {
|
|
$("#NLIB_LAYER_POPUP").removeClass();
|
|
$("#NLIB_LAYER_POPUP").addClass(addClasses);
|
|
$("#NLIB_LAYER_POPUP").html(cHtml);
|
|
$("#NLIB_LAYER_POPUP").show();
|
|
|
|
var classes = addClasses.split(" ");
|
|
|
|
$("." + classes[0]).fadeIn();
|
|
}
|
|
|
|
function fn_layerPopWithClass(url, addClasses) {
|
|
// 클릭 시, 로딩되도록 처리 (2021.10.20)
|
|
$("#NLIB_LAYER_POPUP").removeClass();
|
|
$("#NLIB_LAYER_POPUP").addClass(addClasses);
|
|
$("#NLIB_LAYER_POPUP").load(url);
|
|
|
|
var classes = addClasses.split(" ");
|
|
|
|
$("." + classes[0]).fadeIn();
|
|
|
|
$('html,body').addClass('no-scroll');
|
|
}
|
|
|
|
function fn_layerPop(url, classes) {
|
|
$("#NLIB_LAYER_POPUP").load(url);
|
|
$("#NLIB_LAYER_POPUP").show();
|
|
|
|
$('.pop-advanced-search').fadeIn();
|
|
$('html,body').addClass('no-scroll');
|
|
}
|
|
|
|
function fn_showLayerPop() {
|
|
$("#NLIB_LAYER_POPUP").show();
|
|
}
|
|
|
|
function fn_layerPopFormSubmit(formName, display) {
|
|
var dataList = $("#" + formName).serialize();
|
|
var url = $("#" + formName).attr('action');
|
|
|
|
if(display) $("#NLIB_LAYER_POPUP").show();
|
|
else $("#NLIB_LAYER_POPUP").hide();
|
|
|
|
$.ajax({
|
|
type: "post",
|
|
url: url,
|
|
data: dataList
|
|
}).done(function(response){
|
|
$("#NLIB_LAYER_POPUP").empty().append(response);
|
|
});
|
|
}
|
|
|
|
function fn_isEmpty(value) {
|
|
if(value == null) return true;
|
|
if(typeof value == "undefined") return true;
|
|
if(typeof value == "string" && value == "") return true;
|
|
if(value == "null") return true;
|
|
if(Array.isArray(value) && value.length < 1) return true;
|
|
|
|
return false;
|
|
}
|
|
|
|
function fn_unescapeHtml(escapedStr) {
|
|
var doc = new DOMParser().parseFromString(escapedStr, "text/html");
|
|
return doc.documentElement.textContent;
|
|
}
|
|
|
|
function fn_lengthBytes(s) {
|
|
if(s != undefined && s != "") {
|
|
for(b=i=0;c=s.charCodeAt(i++);b+=c>>11?3:c>>7?2:1);
|
|
return b;
|
|
} else {
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
function fn_extractContentText(html) {
|
|
return new DOMParser().parseFromString(html, "text/html").documentElement.textContent;
|
|
}
|
|
|
|
function risShow(risId){
|
|
var tag = document.createElement("div");
|
|
|
|
tag.class="popup pop-user-set pop-export";
|
|
tag.id = "export-data";
|
|
tag.style="style='display: none;'";
|
|
|
|
document.body.prepend(tag);
|
|
|
|
document.getElementById("export-data").className="popup pop-user-set pop-export";
|
|
|
|
var html="";
|
|
html+='<form name="risDownloadForm" id="risDownloadForm" method="post"><input type="hidden" id="risId" name="risId"></form>';
|
|
html+='<div class="pop-serge">';
|
|
html+='<div class="row Title">';
|
|
html+=' <h3>서지정보 내보내기<span>(Export)</span></h3>';
|
|
html+='</div>';
|
|
html+='<div class="inner">';
|
|
html+=' <div class="row Text">';
|
|
html+=' <div class="con-1">';
|
|
html+=' <p>서지정보 내보내기 안내</p>';
|
|
html+=' <div class="text-box">';
|
|
html+=' <p>소장자료관은 콘텐츠 생산자 및 연구자들을 위해 서지정보 내보내기 기능을 제공하고 있습니다.</p>';
|
|
html+=' <p><span>서지정보 내용</span><br>형식, 제목, 저자, 시리즈, 언어, URL, 태그</p>';
|
|
html+=' <p><span>제공 포맷</span><br>RIS : Search Information System (*.ris)</p>';
|
|
html+=' <p><span>RIS 지원 서지관리 프로그램</span><br>EndNote, Mendeley, Zotero) 외</p>';
|
|
html+=' </div>';
|
|
html+=' </div>';
|
|
html+=' <div class="con-2">';
|
|
html+=' <p>서지관리 프로그램 안내</p>';
|
|
html+=' <div class="text-box">';
|
|
html+=' <p>서지관리 프로그램은 문헌 및 온라인 콘텐츠 등 자료를 관리하고 공유하는데 사용됩니다.</p>';
|
|
html+=' <p>- 해당 프로그램은 소속기관 또는 개인 가입이 필요할 수 있으며, 소장자료관은 링크만 제공하고 직접 서비스를 제공하지 않습니다.</p>';
|
|
html+=' <p><span>Zotero (www.zotero.com) / 한글 메뉴 지원 (o), 300MB 용량 무료 (초과 유료)</span></p>';
|
|
html+=' <p><span>EndNote (www.endnote.com) / 한글 메뉴 지원 (x) , 2G 용량 무료 (초과유료)</span></p>';
|
|
html+=' <p><span>Mendeley (www.mendeley.com) / 한글 메뉴 지원 (x), 2G 용량 무료 (초과유료)</span></p>';
|
|
html+=' </div>';
|
|
html+=' </div>';
|
|
html+=' </div>';
|
|
html+=' <div class="row btn-box">';
|
|
html+=' <button type="button" class="btn btn-color" id="risExport" onclick="risDownload(\''+risId+'\');">내보내기</button>';
|
|
html+=' <button type="submit" class="btn btn-gray" onclick="risClose();">닫기</button>';
|
|
html+=' </div>';
|
|
html+=' <button type="button" class="serge-close" onclick="risClose();"></button>';
|
|
html+='</div>';
|
|
html+='<div class="Bg"></div>';
|
|
html+='</div>';
|
|
|
|
$("#export-data").append(html);
|
|
}
|
|
|
|
function risClose(){
|
|
$("#export-data").remove();
|
|
}
|
|
|
|
function forgetPassword(form)
|
|
{
|
|
$("#"+form).attr("action", "/member/initPasswordForm.do");
|
|
fn_layerPopFormSubmit(form,true);
|
|
}
|
|
|
|
function risDownload(risId){
|
|
$("#risId").val(risId);
|
|
|
|
document.risDownloadForm.action="/ris/risDownload.do";
|
|
document.risDownloadForm.submit();
|
|
}
|
|
|
|
|
|
function fn_changeInterest(masterId,onOff){
|
|
var html="";
|
|
|
|
if(onOff == "on")
|
|
{
|
|
$.ajax({
|
|
type: "POST",
|
|
url: "/interest/insertInterest.ajax",
|
|
async: false,
|
|
data: {"masterId" : masterId}
|
|
}).done(function(result){
|
|
alert(result);
|
|
if(result == "관심자료에 추가되었습니다.")
|
|
{
|
|
$("#favorites_"+masterId).removeAttr("onclick");
|
|
$("#favorites_"+masterId).attr("onclick","fn_changeInterest('" + masterId + "','off')");
|
|
$("#favorites_"+masterId).attr("title","관심자료에서 삭제합니다.");
|
|
html += "<img src=\"/images/icon/icon-cart-Favorites-on.png\" class=\"off\" alt=\"즐겨찾기 아이콘\">"
|
|
html += "<img src=\"/images/icon/icon-cart-Favorites.png\" class=\"on\" alt=\"즐겨찾기 아이콘\">";
|
|
$("#favorites_"+masterId).html(html);
|
|
}
|
|
});
|
|
}
|
|
if(onOff == "off")
|
|
{
|
|
var masterIdArray = [];
|
|
masterIdArray.push(masterId);
|
|
$.ajax({
|
|
url : "/interest/deleteInterests.ajax",
|
|
type : "POST",
|
|
async: false,
|
|
data : {"masterIdList" : masterIdArray},
|
|
success : function(){
|
|
alert("선택하신 관심자료가 삭제되었습니다.");
|
|
$("#favorites_"+masterId).removeAttr("onclick");
|
|
$("#favorites_"+masterId).attr("onclick","fn_changeInterest('" + masterId + "','on')");
|
|
$("#favorites_"+masterId).attr("title","관심자료로 등록합니다.");
|
|
html += "<img src=\"/images/icon/icon-cart-Favorites.png\" class=\"off\" alt=\"즐겨찾기 아이콘\">"
|
|
html += "<img src=\"/images/icon/icon-cart-Favorites-on.png\" class=\"on\" alt=\"즐겨찾기 아이콘\">";
|
|
$("#favorites_"+masterId).html(html);
|
|
},error : function(){
|
|
}
|
|
});
|
|
}
|
|
|
|
}
|
|
function insertInterest(masterId){
|
|
$.ajax({
|
|
type: "post",
|
|
url: "/interest/insertInterest.ajax",
|
|
data: {"masterId" : masterId}
|
|
}).done(function(result){
|
|
alert(result);
|
|
});
|
|
}
|
|
|
|
function pageLoad(fnName,pageIndex, totRecordCount, startPage, endPage, lastPage)
|
|
{
|
|
$("#paging *").remove();
|
|
|
|
var html="";
|
|
if(totRecordCount != 0)
|
|
{
|
|
|
|
if(pageIndex != 1 ){
|
|
html+="<li class=\"btn btn-first\"><a href=\"#\" onclick=\"" + fnName + "(1); return false;\" title=\"처음으로\">처음으로</a></li> "
|
|
html+="<li class=\"btn btn-prev\"><a href=\"#\" onclick=\"" + fnName + "("+ (pageIndex*1 -1) +"); return false;\" title=\"이전\">이전</a></li>";
|
|
}else{
|
|
html+="<li class=\"btn btn-first\"><a href=\"#\" title=\"처음으로\">처음으로</a></li> "
|
|
html+="<li class=\"btn btn-prev\"><a href=\"#\" title=\"이전\">이전</a></li>";
|
|
}
|
|
|
|
for(startPage; startPage <= endPage; startPage++ )
|
|
{
|
|
if(startPage != pageIndex)
|
|
{
|
|
html+= "<li><a href=\"#\" onclick=\"" + fnName + "("+ startPage +"); return false;\" title=\""+startPage+"페이지\">" + startPage + "</a></li>"
|
|
}else{
|
|
html+= "<li class=\"on\"><a href=\"#\" title=\"현재위치 페이지\">"+ startPage +"</a></li>"
|
|
}
|
|
}
|
|
|
|
if(pageIndex != lastPage){
|
|
html+="<li class=\"btn btn-next\"><a href=\"#\" onclick=\"" + fnName + "("+ (pageIndex*1 +1) +"); return false;\" title=\"다음\">다음</a></li>"
|
|
html+="<li class=\"btn btn-last\"><a href=\"#\" onclick=\"" + fnName + "("+ lastPage +"); return false;\" title=\"맨끝으로\">맨끝으로</a></li>";
|
|
}else{
|
|
html+="<li class=\"btn btn-next\"><a href=\"#\" title=\"다음\">다음</a></li>"
|
|
html+="<li class=\"btn btn-last\"><a href=\"#\" title=\"맨끝으로\">맨끝으로</a></li>";
|
|
}
|
|
}else{
|
|
html+= "자료가 없습니다.";
|
|
}
|
|
|
|
|
|
$("#paging").html(html);
|
|
}
|
|
|
|
|
|
// 자료 상세보기
|
|
function fn_viewItemDetailInfo(masterId){
|
|
$("#FRM_ITEM_DETAIL input[name=masterId]").val(masterId);
|
|
$("#FRM_ITEM_DETAIL").attr("action","/search/searchItemDetail.do");
|
|
$("#FRM_ITEM_DETAIL").submit();
|
|
}
|
|
|
|
function fn_formatDateStr(yyyymmdd, defVal) {
|
|
if(fn_isEmpty(yyyymmdd)) return defVal;
|
|
if(yyyymmdd.length == 8) {
|
|
return yyyymmdd.substr(0, 4) + "-" + yyyymmdd.substr(4,2) + "-" + yyyymmdd.substr(6);
|
|
} else if(yyyymmdd.length == 6) {
|
|
return yyyymmdd.substr(0, 4) + "-" + yyyymmdd.substr(4,2);
|
|
} else if(yyyymmdd.length == 4) {
|
|
return yyyymmdd;
|
|
}
|
|
|
|
return defVal;
|
|
}
|