/* * * 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 = "" + placeholder + ""; theHTML += "

" + msg + "

"; theHTML += "
"; theHTML += "비밀번호: "; theHTML += " 
"; theHTML += " 
"; theHTML += ""; theHTML += ""; theHTML += ""; 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 = "

" + title + "


" + "
" + content + "

" + "
 " + "
[확인]"; if(linkUrl != null) { layerPopupHtml += "    [" + linkName + "]"; } layerPopupHtml += "
"; $(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 = '
' + '

지방문화원 소장자료

' + '

알림

' + '
' + '
' + '
' + '

아직 확인하지 않은
새로운 알림이 ' + newAlertNum + '건 있습니다.

' + '
' + '
' + ' ' + ' ' + '
' + ' ' + '
' + '
'; 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+='
'; html+='
'; html+='
'; html+='

서지정보 내보내기(Export)

'; html+='
'; html+='
'; html+='
'; html+='
'; html+='

서지정보 내보내기 안내

'; html+='
'; html+='

소장자료관은 콘텐츠 생산자 및 연구자들을 위해 서지정보 내보내기 기능을 제공하고 있습니다.

'; html+='

서지정보 내용
형식, 제목, 저자, 시리즈, 언어, URL, 태그

'; html+='

제공 포맷
RIS : Search Information System (*.ris)

'; html+='

RIS 지원 서지관리 프로그램
EndNote, Mendeley, Zotero) 외

'; html+='
'; html+='
'; html+='
'; html+='

서지관리 프로그램 안내

'; html+='
'; html+='

서지관리 프로그램은 문헌 및 온라인 콘텐츠 등 자료를 관리하고 공유하는데 사용됩니다.

'; html+='

- 해당 프로그램은 소속기관 또는 개인 가입이 필요할 수 있으며, 소장자료관은 링크만 제공하고 직접 서비스를 제공하지 않습니다.

'; html+='

Zotero (www.zotero.com) / 한글 메뉴 지원 (o), 300MB 용량 무료 (초과 유료)

'; html+='

EndNote (www.endnote.com) / 한글 메뉴 지원 (x) , 2G 용량 무료 (초과유료)

'; html+='

Mendeley (www.mendeley.com) / 한글 메뉴 지원 (x), 2G 용량 무료 (초과유료)

'; html+='
'; html+='
'; html+='
'; html+='
'; html+=' '; html+=' '; html+='
'; html+=' '; html+='
'; html+='
'; html+='
'; $("#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 += "\"즐겨찾기" html += "\"즐겨찾기"; $("#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 += "\"즐겨찾기" html += "\"즐겨찾기"; $("#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+="
  • 처음으로
  • " html+="
  • 이전
  • "; }else{ html+="
  • 처음으로
  • " html+="
  • 이전
  • "; } for(startPage; startPage <= endPage; startPage++ ) { if(startPage != pageIndex) { html+= "
  • " + startPage + "
  • " }else{ html+= "
  • "+ startPage +"
  • " } } if(pageIndex != lastPage){ html+="
  • 다음
  • " html+="
  • 맨끝으로
  • "; }else{ html+="
  • 다음
  • " html+="
  • 맨끝으로
  • "; } }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; }