공지사항 : 퍼블 템플릿 적용작업
This commit is contained in:
parent
51a1e0054c
commit
618a73d36d
@ -18,12 +18,11 @@ import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
|
||||
import nlib.bbs.service.BoardService;
|
||||
import nlib.bbs.service.impl.AncmntServiceImpl;
|
||||
import nlib.bbs.service.ArticleVO;
|
||||
import nlib.bbs.service.BoardService;
|
||||
import nlib.cmm.NlibCommonController;
|
||||
import nlib.cmm.service.NlibProperty;
|
||||
import nlib.util.StringUtil;
|
||||
import nlib.cmm.service.PagingVO;
|
||||
|
||||
@Controller
|
||||
public class AncmntController extends NlibCommonController
|
||||
@ -87,6 +86,14 @@ public class AncmntController extends NlibCommonController
|
||||
retMap.put("data", list);
|
||||
retMap.put("itemsCount", totRecordCount);
|
||||
|
||||
PagingVO pageVO = new PagingVO();
|
||||
pageVO.setPagingVO(totRecordCount, searchArticleVO.getPageIndex(), searchArticleVO.getPageSize());
|
||||
retMap.put("pagingPageIndex" , pageVO.getPageIndex());
|
||||
retMap.put("pagingTotRecordCount", pageVO.getTotRecordCount());
|
||||
retMap.put("pagingStartPage" , pageVO.getStartPage());
|
||||
retMap.put("pagingEndPage" , pageVO.getEndPage());
|
||||
retMap.put("pagingLastPage" , pageVO.getLastPage());
|
||||
|
||||
return makeResponseEntityJson(retMap);
|
||||
}
|
||||
|
||||
|
||||
@ -30,7 +30,7 @@
|
||||
, A.MNG_ORG_CD
|
||||
, B.DEPT_NM AS MNG_ORG_NM
|
||||
, A.TITLE
|
||||
, A.NOTI_YN
|
||||
, IF(IFNULL(A.NOTI_YN, 'N') = '', 'N', A.NOTI_YN) AS NOTI_YN
|
||||
, A.OPEN_YN
|
||||
, A.POST_START_DATE
|
||||
, A.POST_END_DATE
|
||||
@ -38,14 +38,14 @@
|
||||
, CASE WHEN A.BD_ATTACH_FILE_ID IS NULL OR A.BD_ATTACH_FILE_ID = '' THEN 'N' ELSE 'Y' END AS ATTACH_YN
|
||||
, DATE_FORMAT(A.REG_DD, '%Y-%m-%d') AS REG_DD
|
||||
, A2.RNO
|
||||
, C.USER_NM AS REG_NM
|
||||
, IF(IFNULL(C.USER_NM,'') = '', '관리자', C.USER_NM) AS REG_NM
|
||||
FROM BD_NLIB_ANCMNT A
|
||||
INNER JOIN (
|
||||
SELECT ANCMNT_ID, RNO
|
||||
FROM (
|
||||
SELECT S.ANCMNT_ID
|
||||
, ROW_NUMBER() OVER(PARTITION BY 1 ORDER BY S.REG_DD, S.TITLE) AS RNO
|
||||
, ROW_NUMBER() OVER(PARTITION BY 1 ORDER BY S.REG_DD DESC, S.TITLE DESC) AS ONO
|
||||
, ROW_NUMBER() OVER(PARTITION BY 1 ORDER BY IF(IFNULL(S.NOTI_YN, 'N') = '', 'N', S.NOTI_YN), S.REG_DD, S.TITLE, S.ANCMNT_ID) AS RNO
|
||||
, ROW_NUMBER() OVER(PARTITION BY 1 ORDER BY IF(IFNULL(S.NOTI_YN, 'N') = '', 'N', S.NOTI_YN) DESC, S.REG_DD DESC, S.TITLE desc, S.ANCMNT_ID DESC) AS ONO
|
||||
<include refid="ancmnt_search_condition" />
|
||||
) S2
|
||||
WHERE ONO BETWEEN (#{pageStartRowNum} + 1) AND (#{pageStartRowNum} + #{pageSize})
|
||||
@ -72,7 +72,7 @@
|
||||
, B.DEPT_NM AS MNG_ORG_NM
|
||||
, A.TITLE
|
||||
, A.CONTENT
|
||||
, A.NOTI_YN
|
||||
, IF(IFNULL(A.NOTI_YN, 'N') = '', 'N', A.NOTI_YN) AS NOTI_YN
|
||||
, A.OPEN_YN
|
||||
, A.POST_START_DATE
|
||||
, A.POST_END_DATE
|
||||
@ -80,7 +80,7 @@
|
||||
, CASE WHEN A.BD_ATTACH_FILE_ID IS NULL OR A.BD_ATTACH_FILE_ID = '' THEN 'N' ELSE 'Y' END AS ATTACH_YN
|
||||
, A.BD_ATTACH_FILE_ID
|
||||
, DATE_FORMAT(A.REG_DD, '%Y-%m-%d') AS REG_DD
|
||||
, C.USER_NM AS REG_NM
|
||||
, IF(IFNULL(C.USER_NM,'') = '', '관리자', C.USER_NM) AS REG_NM
|
||||
FROM BD_NLIB_ANCMNT A
|
||||
JOIN SM_DEPT B
|
||||
ON B.ORG_CD = A.MNG_ORG_CD
|
||||
|
||||
@ -31,125 +31,25 @@
|
||||
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
|
||||
<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %>
|
||||
|
||||
<c:set var="pageTitle">공지사항(DB)</c:set>
|
||||
<c:set var="pageTitle">공지사항</c:set>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="ko">
|
||||
<head>
|
||||
<title>${pageTitle}</title>
|
||||
|
||||
<!-- GRID -->
|
||||
<link type="text/css" rel="stylesheet" href="${pageContext.request.contextPath}/js/jsgrid/nlib-jsgrid.css" />
|
||||
<link type="text/css" rel="stylesheet" href="${pageContext.request.contextPath}/js/jsgrid/nlib-jsgrid-theme.css" />
|
||||
<script src="${pageContext.request.contextPath}/js/jsgrid/nlib-jsgrid.js"></script>
|
||||
|
||||
<script type="text/javaScript" language="javascript">
|
||||
<script type="text/javaScript" language="javascript">
|
||||
|
||||
$( document ).ready(function() {
|
||||
|
||||
if('${message}' != "null" && '${message}' != "") {
|
||||
alert("${message}");
|
||||
}
|
||||
|
||||
//=======================================================
|
||||
// 그리드 생성 환경설정
|
||||
//=======================================================
|
||||
$("#jsGrid").jsGrid({
|
||||
pageSize : $("#pageSize").val(),
|
||||
scrollOffset:0,
|
||||
controller: {
|
||||
loadData: function (filter) { // 그리드에 데이터를 가져올 때 실팽되는 함수
|
||||
var data = $.Deferred();
|
||||
//======================================
|
||||
// 요청 정보 구성 : 시작 (각 요청에 맞게 조정)
|
||||
//======================================
|
||||
var reqUrl = "${pageContext.request.contextPath}/bbs/listAncmntsAjax.do";
|
||||
var pageIndex = ( filter && filter.pageIndex ? filter.pageIndex : $("#pageIndex").val());
|
||||
var pageSize = ( filter && filter.pageSize ? filter.pageSize : $("#pageSize").val());
|
||||
|
||||
var searchType = $("#searchType").val();
|
||||
var searchKeyword = $("#searchKeyword").val();
|
||||
|
||||
|
||||
$("#pageIndex").val(pageIndex);
|
||||
|
||||
|
||||
var inputData = {
|
||||
"pageIndex" : pageIndex
|
||||
, "pageSize" : pageSize
|
||||
, "searchType" : searchType
|
||||
, "searchKeyword" : searchKeyword
|
||||
};
|
||||
|
||||
|
||||
//--------------------------------------
|
||||
// 요청 처리
|
||||
//--------------------------------------
|
||||
$.ajax({
|
||||
type: "post",
|
||||
contentType: "application/json; charset=utf-8",
|
||||
url: reqUrl,
|
||||
dataType: "json",
|
||||
data: JSON.stringify(inputData),
|
||||
}).done(function(response){
|
||||
<%
|
||||
// 그리드 데이터 예시 :
|
||||
// (1) 페이징 클라이언트에서 수행하는 경우(pageloading = false) : [{ "articleNo": 1, "articleType": "01" }, { "articleNo": 2, "articleType": "02" }]
|
||||
// (2) 페이징 서버에서 수행하는 경우(pageloading = true) : {data: [{...}], itemsCount: 255}
|
||||
%>
|
||||
var jsonObj = JSON.parse(response);
|
||||
//$("#itemsCount").val(jsonOjb.itemsCount);
|
||||
console.log(jsonObj.itemsCount);
|
||||
|
||||
if(jsonObj.itemsCount == undefined) {
|
||||
$("#itemsCount").text("0");
|
||||
$("#searchItemsCount").text("0");
|
||||
}
|
||||
else {
|
||||
$("#itemsCount").text(jsonObj.itemsCount);
|
||||
$("#searchItemsCount").text(jsonObj.itemsCount);
|
||||
}
|
||||
|
||||
if($("#searchKeyword").val() != "") {
|
||||
$("#searchKeywordPrt").text($("#searchKeyword").val());
|
||||
$("#listResult").hide();
|
||||
$("#searchResult").show();
|
||||
}
|
||||
else {
|
||||
$("#listResult").show();
|
||||
$("#searchResult").hide();
|
||||
}
|
||||
|
||||
data.resolve(jsonObj);
|
||||
});
|
||||
return data.promise();
|
||||
} // loadData
|
||||
},
|
||||
|
||||
rowClick: function(args) { // 행 클릭 시, 실행되는 이벤트 함수
|
||||
|
||||
// 클릭된 행의 자료 객체
|
||||
var getData = args.item;
|
||||
|
||||
// 추출할 컬럼의 데이터 가져오기
|
||||
var articleId = getData["articleId"];
|
||||
|
||||
// 상세 내용 보기
|
||||
fn_viewDetail(articleId);
|
||||
},
|
||||
|
||||
//======================================
|
||||
// 그리드 컬럼 정의 (각 요청에 맞게 조정)
|
||||
//======================================
|
||||
fields: [
|
||||
{ title:"ID", name: "articleId" , type: "text", width: 200, align: "left" },
|
||||
{ title:"번호", name: "rno" , type: "text", width: 200, align: "center" },
|
||||
{ title:"제목", name: "title" , type: "text", width: 200, align: "left" },
|
||||
{ title:"등록자", name: "regNm" , type: "text", width: 100, align: "center"},
|
||||
{ title:"등록일", name: "regDd" , type: "text", width: 100, align: "center"},
|
||||
{ title:"첨부", name: "attachYn" , type: "text", width: 100, align: "center"}
|
||||
]
|
||||
});
|
||||
|
||||
// 검색 버튼 클릭
|
||||
$("#btnSearch").on("click", function(e) {
|
||||
fn_searchArticle($("#pageSize").val(), 1);
|
||||
fn_searchArticle(1);
|
||||
});
|
||||
$("#searchKeyword").on("keydown", function(e) {
|
||||
if(e.keyCode == 13) {
|
||||
fn_searchArticle(1);
|
||||
}
|
||||
});
|
||||
|
||||
//초기 자료 조회
|
||||
@ -166,55 +66,165 @@
|
||||
}
|
||||
|
||||
// 그리드 데이터 조회 호출
|
||||
function fn_searchArticle(pageSize, pageIndex) {
|
||||
$("#jsGrid").jsGrid("search"
|
||||
, {'pageSize' : (pageSize ? pageSize : fn_getIntValue("pageSize", ${searchArticle.pageSize}) ),
|
||||
'pageIndex' : (pageIndex ? pageIndex : fn_getIntValue("pageIndex", ${searchArticle.pageIndex}))
|
||||
}
|
||||
);
|
||||
function fn_searchArticle(pageIndex) {
|
||||
|
||||
if(fn_isEmpty(pageIndex)) pageIndex = $("#pageIndex").val();
|
||||
if(fn_isEmpty(pageIndex)) pageIndex = "1";
|
||||
$("#pageIndex").val(pageIndex);
|
||||
|
||||
var reqUrl = "${pageContext.request.contextPath}/bbs/listAncmntsAjax.do";
|
||||
|
||||
var inputData = {
|
||||
"pageIndex" : $("#pageIndex").val()
|
||||
, "pageSize" : $("#pageSize").val()
|
||||
, "searchType" : $("#searchType").val()
|
||||
, "searchKeyword" : $("#searchKeyword").val()
|
||||
};
|
||||
|
||||
|
||||
//--------------------------------------
|
||||
// 요청 처리
|
||||
//--------------------------------------
|
||||
$.ajax({
|
||||
type: "post",
|
||||
contentType: "application/json; charset=utf-8",
|
||||
url: reqUrl,
|
||||
dataType: "json",
|
||||
data: JSON.stringify(inputData),
|
||||
}).done(function(data){
|
||||
<%
|
||||
// 그리드 데이터 예시 :
|
||||
// (1) 페이징 클라이언트에서 수행하는 경우(pageloading = false) : [{ "articleNo": 1, "articleType": "01" }, { "articleNo": 2, "articleType": "02" }]
|
||||
// (2) 페이징 서버에서 수행하는 경우(pageloading = true) : {data: [{...}], itemsCount: 255}
|
||||
%>
|
||||
|
||||
var jsonObj = JSON.parse(data);
|
||||
//$("#itemsCount").val(jsonOjb.itemsCount);
|
||||
console.log(jsonObj.itemsCount);
|
||||
|
||||
// 건수
|
||||
if(jsonObj.itemsCount == undefined) {
|
||||
$("#itemsCount").text("0");
|
||||
$("#searchItemsCount").text("0");
|
||||
}
|
||||
else {
|
||||
$("#itemsCount").text(jsonObj.itemsCount);
|
||||
$("#searchItemsCount").text(jsonObj.itemsCount);
|
||||
}
|
||||
|
||||
// 검색결과
|
||||
if($("#searchKeyword").val() != "") {
|
||||
$("#searchKeywordPrt").text($("#searchKeyword").val());
|
||||
$("#searchResult").show();
|
||||
}
|
||||
else {
|
||||
$("#searchResult").hide();
|
||||
}
|
||||
|
||||
// 기존 데이터 CLEAR
|
||||
$( "ul.list-notice li").not('.t-tit-line').remove();
|
||||
|
||||
// 출력
|
||||
$.each(jsonObj.data,function(key,obj) {
|
||||
var li = $(document.createElement('li'));
|
||||
li.append($('<span />').attr('class', 't-num').html(obj.rno));
|
||||
li.append($('<span />').attr('class', 't-type').html((obj.notiYn == "Y" ? '<span>공지</span>' : '')));
|
||||
li.append($('<span />').attr('class', 't-tit').html("<a href=\"javascript:void(0)\" onclick=\"fn_viewDetail('" + obj.articleId + "')\">" + obj.title + "</a>"));
|
||||
li.append($('<span />').attr('class', 't-writer').html(obj.regNm));
|
||||
li.append($('<span />').attr('class', 't-date').html(obj.regDd));
|
||||
li.append($('<span />').attr('class', 't-file').html((obj.attachYn == "Y" ? '<img src="/images/icon/icon-file.png" alt="파일 아이콘">' : '')));
|
||||
|
||||
$( "ul.list-notice").append(li);
|
||||
|
||||
});
|
||||
|
||||
pageLoad("fn_searchArticle", jsonObj.pagingPageIndex, jsonObj.pagingTotRecordCount, jsonObj.pagingStartPage, jsonObj.pagingEndPage, jsonObj.pagingLastPage);
|
||||
|
||||
}).fail(function (jqXHR, textStatus, errorThrown) {
|
||||
alert("조회에 실패하였습니다. 관리자에게 문의 바랍니다.");
|
||||
});
|
||||
}
|
||||
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<h1>${pageTitle }</h1>
|
||||
|
||||
메시지 : ${message}
|
||||
|
||||
<div name="listResult" id="listResult">
|
||||
총 <span name="itemsCount" id="itemsCount"></span>건<br>
|
||||
</div>
|
||||
|
||||
<div style="display:none;" name="searchResult" id="searchResult">
|
||||
'<span name="searchKeywordPrt" id="searchKeywordPrt"></span>' 에 대한 검색결과는 총 <span name="searchItemsCount" id="searchItemsCount"></span>건 입니다.<br>
|
||||
</div>
|
||||
|
||||
<br/>
|
||||
<form name="articleForm" id="articleForm" method="post" action="${pageContext.request.contextPath}/bbs/selectAncmntArticle.do">
|
||||
|
||||
<!-- 검색조건 -->
|
||||
<input type="text" name="pageSize" id="pageSize" value="${searchArticle.pageSize }" />
|
||||
|
||||
<input type="text" name="pageIndex" id="pageIndex" title="페이지번호" value="${searchArticle.pageIndex }" size="5" maxlength="5" />
|
||||
|
||||
<select name="searchType" id="searchType">
|
||||
<option value="T" <c:if test='${searchArticle.searchType == "T" }'>selected</c:if> >제목</option>
|
||||
<option value="C" <c:if test='${searchArticle.searchType == "C" }'>selected</c:if> >내용</option>
|
||||
</select>
|
||||
<input type="text" name="searchKeyword" id="searchKeyword" title="검색어" value="${searchArticle.searchKeyword }" maxlength="20" />
|
||||
<input type="text" name="articleId" id="articleId" title="게시글번호" value="" readonly />
|
||||
<input type="button" name="btnSearch" id="btnSearch" title="검색" value="검색" />
|
||||
<br/>
|
||||
|
||||
<div id="jsGrid" name="jsGrid" style="height: 100%"></div>
|
||||
|
||||
|
||||
<input type="text" name="articleNo" id="articleNo" value="" title="선택글번호" readonly />
|
||||
|
||||
</form>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
<!-- 공지사항 섹션 -->
|
||||
<div class="location noti-data">
|
||||
<h2 class="blind">공지사항 섹션영역</h2>
|
||||
<div class="inner">
|
||||
<div class="row-top">
|
||||
<div class="location-box">
|
||||
<ul class="loc">
|
||||
<li>HOME</li>
|
||||
<li>고객지원</li>
|
||||
<li class="on">${pageTitle }</li>
|
||||
</ul>
|
||||
<ul class="tit">
|
||||
<li><span>${pageTitle }</span></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="arr"><img src="/images/icon/icon-join-arr2.png" alt="화살표 아이콘"></div>
|
||||
</div>
|
||||
<div class="contents row-bottom">
|
||||
|
||||
<div class="community notice">
|
||||
<div class="contents-frame inner-center">
|
||||
<div class="list-header">
|
||||
<!-- name="listForm" -->
|
||||
<form name="articleForm" id="articleForm" action="${pageContext.request.contextPath}/bbs/selectAncmntArticle.do" method="post" class="list-search">
|
||||
<fieldset>
|
||||
|
||||
<input type="text" name="pageSize" id="pageSize" value="${searchArticle.pageSize }" />
|
||||
<input type="text" name="pageIndex" id="pageIndex" title="페이지번호" value="${searchArticle.pageIndex }" />
|
||||
<input type="text" name="articleId" id="articleId" title="게시글번호" value="" />
|
||||
<input type="text" name="articleNo" id="articleNo" value="" title="선택글번호" />
|
||||
|
||||
<legend>공지 검색</legend>
|
||||
<div class="left">
|
||||
<div class="total-count"><span class="count">총 <em><span name="itemsCount" id="itemsCount">0</span></em>건</span></div>
|
||||
<div name="searchResult" id="searchResult" class="total-count" style="display: none;"><span class="count" name="searchKeywordPrt" id="searchKeywordPrt"><em>'안내'</em>에 대한 겸색결과는 총 <em><span name="searchItemsCount" id="searchItemsCount">0</span></em>건 입니다.</span></div>
|
||||
</div>
|
||||
<div class="right">
|
||||
<div class="list-select type">
|
||||
<label for="searchType">
|
||||
<!-- <select name="nttType" id="nttType" title="유형 선택"> -->
|
||||
<select name="searchType" id="searchType">
|
||||
<option value="T" <c:if test='${searchArticle.searchType == "T" }'>selected</c:if> >제목</option>
|
||||
<option value="C" <c:if test='${searchArticle.searchType == "C" }'>selected</c:if> >내용</option>
|
||||
</select>
|
||||
</label>
|
||||
</div>
|
||||
<div class="list-input">
|
||||
|
||||
<input type="text" id="searchKeyword" name="searchKeyword" placeholder="검색어를 입력하세요" title="검색어" value="${searchArticle.searchKeyword }" maxlength="20" >
|
||||
<label for="btnSearch">
|
||||
<button name="btnSearch" id="btnSearch" type="button" title="검색">검색</button>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div class="list-table-wrap">
|
||||
<ul class="list-notice">
|
||||
<li class="t-tit-line">
|
||||
<span class="t-num">NO</span>
|
||||
<span class="t-type"></span>
|
||||
<span class="t-tit">제목</span>
|
||||
<span class="t-writer">등록자</span>
|
||||
<span class="t-date">등록일</span>
|
||||
<span class="t-file">첨부</span>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<ul id="paging" class="paging"></ul>
|
||||
|
||||
</div>
|
||||
<!-- //contents-frame -->
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@ -33,13 +33,16 @@
|
||||
|
||||
<c:set var="pageTitle">공지사항 - 상세조회</c:set>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="ko">
|
||||
<head>
|
||||
<title>${pageTitle}</title>
|
||||
|
||||
<script type="text/javaScript" language="javascript">
|
||||
|
||||
$( document ).ready(function() {
|
||||
|
||||
if('${message}' != "null" && '${message}' != "") {
|
||||
alert("${message}");
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
// 목록으로 이동
|
||||
function fn_list() {
|
||||
$("#articleForm").submit();
|
||||
@ -67,74 +70,87 @@ function fn_downloadFile(attachFileId, fileSn) {
|
||||
}
|
||||
</script>
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<!-- 공지사항 보기 섹션 -->
|
||||
<div class="location noti-data">
|
||||
<h2 class="blind">공지사항 보기 섹션영역</h2>
|
||||
<div class="inner">
|
||||
<div class="row-top">
|
||||
<div class="location-box">
|
||||
<ul class="loc">
|
||||
<li>HOME</li>
|
||||
<li>고객지원</li>
|
||||
<li class="on">${pageTitle }</li>
|
||||
</ul>
|
||||
<ul class="tit">
|
||||
<li><span>${pageTitle }</span></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="arr"><img src="/images/icon/icon-join-arr2.png" alt="화살표 아이콘"></div>
|
||||
</div>
|
||||
<div class="contents row-bottom">
|
||||
|
||||
<div class="community notice">
|
||||
<div class="contents-frame inner-center">
|
||||
<div class="view-notice">
|
||||
<div class="view-tit">
|
||||
<h2><span class="type"><c:if test='${article.notiYn == "Y"}'><span>공지</span></c:if></span>${article.title}
|
||||
</h2>
|
||||
<span class="v-info">
|
||||
<em>${article.regNm }</em>
|
||||
<em>${article.regDd }</em>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
|
||||
<c:if test="${article.attachFileCnt > 0}">
|
||||
<div class="file-box">
|
||||
<%
|
||||
// 파일정보 : 저장파일ID=원파일명
|
||||
%>
|
||||
<c:forEach var="attachFile" items="${article.attachFiles }">
|
||||
<div class="file-list">
|
||||
<span><img src="/images/icon/icon-file.png" alt="파일 아이콘"></span>
|
||||
<span>${attachFile.orignlFileNm}, ${attachFile.fileSize} byte(s)</span>
|
||||
<span><button type="button" onclick="fn_downloadFile('${attachFile.attachFileId}', ${attachFile.fileSn})">다운로드</button></span>
|
||||
</div>
|
||||
</c:forEach>
|
||||
</div>
|
||||
</c:if>
|
||||
|
||||
<div class="view-body">
|
||||
<div class="view-con">
|
||||
<div class="view-txt">
|
||||
<p>
|
||||
${article.content}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<ul class="attachments">
|
||||
|
||||
<h1>${pageTitle }</h1>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="btn-box">
|
||||
<a href="javascript:void(0)" class="btn btn-black" onclick="fn_list()">목록보기</a>
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- //contents-frame -->
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
메시지 : <span style="color:red;">${message }</span>
|
||||
<br />
|
||||
|
||||
<form name="articleForm" id="articleForm"
|
||||
action="${pageContext.request.contextPath}/bbs/listAncmnts.do"
|
||||
method="post">
|
||||
|
||||
<!-- HIDDEN 영역 : 시작 -->
|
||||
<input type="text" name="pageIndex" id="pageIndex" title="페이지번호" value="${searchArticle.pageIndex}" readonly />
|
||||
<input type="text" name="pageSize" id="pageSize" title="목록에 보여줄 글개수" value="${searchArticle.pageSize}" readonly />
|
||||
<input type="text" name="searchType" id="searchType" title="검색구분" value="${searchArticle.searchType}" readonly />
|
||||
<input type="text" name="searchKeyword" id="searchKeyword" title="검색어" value="${searchArticle.searchKeyword}" readonly />
|
||||
<input type="text" name="articleId" id="articleId" title="선택글번호" value="${searchArticle.articleId}" readonly />
|
||||
<!-- HIDDEN 영역 : 종료 -->
|
||||
|
||||
<table class="table_content" style="width:100% !important; margin-top: 20px;">
|
||||
<tr>
|
||||
<th>유형</th>
|
||||
<td>
|
||||
<c:if test='${article.notiYn == "Y"}'>공지</c:if>
|
||||
<c:if test='${article.notiYn != "Y"}'>일반</c:if>
|
||||
|
||||
</td>
|
||||
<th>작성일</th>
|
||||
<td>${article.regDd }</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th rowspan="1">제목</th>
|
||||
<td colspan="3">${article.title}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th rowspan="1">질문내용</th>
|
||||
<td colspan="3">${article.content}</td>
|
||||
</tr>
|
||||
<c:if test="${article.attachFileCnt > 0}">
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
<%
|
||||
// 파일정보 : 저장파일ID=원파일명
|
||||
%>
|
||||
<c:forEach var="attachFile" items="${article.attachFiles }">
|
||||
<a href="javascript:void(0);" onclick="fn_downloadFile('${attachFile.attachFileId}', ${attachFile.fileSn})">${attachFile.orignlFileNm} (${attachFile.fileSize} byte(s))</a><br/>
|
||||
</c:forEach>
|
||||
</td>
|
||||
</tr>
|
||||
</c:if>
|
||||
<c:if test="${article.attachFileCnt < 1}">
|
||||
<td colspan="4">첨부파일 없음
|
||||
</td>
|
||||
</c:if>
|
||||
|
||||
</table>
|
||||
|
||||
<br/>
|
||||
|
||||
<!-- 관련 작업 버튼 -->
|
||||
<button type="button" name="btnList" id="btnList" class="float"
|
||||
onclick="fn_list()">목록</button>
|
||||
|
||||
</form>
|
||||
|
||||
<br />
|
||||
</form>
|
||||
|
||||
<!-- 첨부파일 다운로드용 폼 -->
|
||||
<form name="downloadFileForm" id="downloadFileForm"
|
||||
@ -146,7 +162,4 @@ function fn_downloadFile(attachFileId, fileSn) {
|
||||
<input type="text" name="fileSn" id="fileSn" value="" readonly />
|
||||
<input type="text" name="orignlFileNm" id="orignlFileNm" value="" readonly />
|
||||
|
||||
</form>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
</form>
|
||||
@ -25,6 +25,17 @@ function goSearch(){
|
||||
document.searchHeaderForm.submit();
|
||||
}
|
||||
|
||||
function fn_getMemberCard() {
|
||||
|
||||
// 클릭 시, 컨텐츠 로딩되도록 처리 (2021.10.20 DDDDDDDDDD 추가) : 시작
|
||||
$("#NLIB_LAYER_POPUP").addClass("pop-member");
|
||||
$("#NLIB_LAYER_POPUP").load("/userInfo/getMemberQrcode.do");
|
||||
// 클릭 시, 컨텐츠 로딩되도록 처리 (2021.10.20 DDDDDDDDDD 추가) : 종료
|
||||
|
||||
$('.pop-advanced-search').fadeIn();
|
||||
$('html,body').addClass('no-scroll');
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
@ -70,9 +81,9 @@ function goSearch(){
|
||||
title="${userId} - ${councilNm} (${councilCd})" class="login-btn">
|
||||
${userName}님 로그아웃</a>
|
||||
</li>
|
||||
<li><a href="javascript:void(0)" class="member-btn" onclick="fn_getMemberCard();">회원증</a></li>
|
||||
</sec:authorize>
|
||||
|
||||
<li><a href="javascript:void(0)" class="member-btn">회원증</a></li>
|
||||
<sec:authorize access="isAuthenticated()">
|
||||
<li><a href="javascript:void(0)" onclick="javascript:location.href='${pageContext.request.contextPath}/cmm/listNotifications.do';" class="noti-btn">알림(<span class="count">${unreadNotiCnt }</span>)</a></li>
|
||||
</sec:authorize>
|
||||
|
||||
@ -8,8 +8,9 @@
|
||||
|
||||
<script type="text/javascript">
|
||||
window.onload = function() {
|
||||
fn_myAlert(${unreadNotiCnt});
|
||||
fn_myAlert('${unreadNotiCnt}'');
|
||||
};
|
||||
|
||||
</script>
|
||||
|
||||
<!-- 섹션1 -->
|
||||
@ -22,25 +23,25 @@ window.onload = function() {
|
||||
</div>
|
||||
<div class="color-box">
|
||||
<div class="list">
|
||||
<a href="/"></a>
|
||||
<a href="javascript:void(0);" onclick="location.href = '/inform/selectNCultureOperationInfo.do';"></a>
|
||||
<div class="title">이용안내</div>
|
||||
<div class="icon"><img src="/images/icon/icon-sec1-01.png" alt="이용안내 아이콘"></div>
|
||||
<div class="open"><img src="/images/icon/icon-plus.png" alt="플러스 아이콘"></div>
|
||||
</div>
|
||||
<div class="list">
|
||||
<a href="/"></a>
|
||||
<a href="javascript:void(0);" onclick="location.href = '/inform/selectNCultureLocationInfo.do';"></a>
|
||||
<div class="title">찾아오시는 길</div>
|
||||
<div class="icon"><img src="/images/icon/icon-sec1-02.png" alt="지도 아이콘"></div>
|
||||
<div class="open"><img src="/images/icon/icon-plus.png" alt="플러스 아이콘"></div>
|
||||
</div>
|
||||
<div class="list">
|
||||
<a href="/"></a>
|
||||
<a href="javascript:void(0);" onclick="location.href = '/rent/listRentItems.do';"></a>
|
||||
<div class="title">대출관리</div>
|
||||
<div class="icon"><img src="/images/icon/icon-sec1-03.png" alt="대출 아이콘"></div>
|
||||
<div class="open"><img src="/images/icon/icon-plus.png" alt="플러스 아이콘"></div>
|
||||
</div>
|
||||
<div class="list">
|
||||
<a href="/"></a>
|
||||
<a href="javascript:void(0);" onclick="location.href = '/rent/listRequestsForViewingItem.do';"></a>
|
||||
<div class="title">열람관리</div>
|
||||
<div class="icon"><img src="/images/icon/icon-sec1-04.png" alt="열람 아이콘"></div>
|
||||
<div class="open"><img src="/images/icon/icon-plus.png" alt="플러스 아이콘"></div>
|
||||
@ -470,7 +471,7 @@ window.onload = function() {
|
||||
<h2 class="blind">커뮤니티 섹션영역</h2>
|
||||
<div class="inner">
|
||||
<div class="Fl notice">
|
||||
<div class="ti"><span>공지사항</span><a href="#"><span>더보기 <img src="/images/icon/icon-more.png" alt="더보기 아이콘"></span></a></div>
|
||||
<div class="ti"><span>공지사항</span><a href="javascript:void(0)" onclick="location.href='/bbs/listAncmnts.do';"><span>더보기 <img src="/images/icon/icon-more.png" alt="더보기 아이콘"></span></a></div>
|
||||
<div class="con">
|
||||
<div class="list">
|
||||
<a href="#">
|
||||
@ -499,7 +500,7 @@ window.onload = function() {
|
||||
</div>
|
||||
</div>
|
||||
<div class="Fl qna">
|
||||
<div class="ti"><span>Q&A</span><a href="#"><span>더보기 <img src="/images/icon/icon-more.png" alt="더보기 아이콘"></span></a></div>
|
||||
<div class="ti"><span>Q&A</span><a href="javascript:void(0)" onclick="location.href='/bbs/listQnas.do';"><span>더보기 <img src="/images/icon/icon-more.png" alt="더보기 아이콘"></span></a></div>
|
||||
<div class="con">
|
||||
<div class="list">
|
||||
<a href="#">
|
||||
|
||||
@ -88,7 +88,7 @@ window.onload = function() {
|
||||
url: reqUrl,
|
||||
dataType: "json",
|
||||
data: JSON.stringify(inputData),
|
||||
}).done(function(response){
|
||||
}).done(function(data){
|
||||
<%// 그리드 데이터 예시 :
|
||||
// (1) 페이징 클라이언트에서 수행하는 경우(pageloading = false) : [{ "articleNo": 1, "articleType": "01" }, { "articleNo": 2, "articleType": "02" }]
|
||||
// (2) 페이징 서버에서 수행하는 경우(pageloading = true) : {data: [{...}], itemsCount: 255}%>
|
||||
@ -98,8 +98,10 @@ window.onload = function() {
|
||||
retObj.data = [];
|
||||
}
|
||||
data.resolve(retObj);
|
||||
}).fail(function (jqXHR, textStatus, errorThrown) {
|
||||
alert("오류 : " + textStatus);
|
||||
});
|
||||
return data.promise();
|
||||
|
||||
} // loadData
|
||||
},
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user