FAQ DB 연동 및 화면설계서 변경에 따른 반영작업, 공지사항 보완/수정
This commit is contained in:
parent
78dc5c3229
commit
5eefce1852
@ -21,6 +21,13 @@ public class ArticleVO extends PagingVO {
|
|||||||
private String postStartDate; /* 게시시작일자 */
|
private String postStartDate; /* 게시시작일자 */
|
||||||
private String postEndDate; /* 게시종료일자 */
|
private String postEndDate; /* 게시종료일자 */
|
||||||
|
|
||||||
|
// FAQ, QNA관련
|
||||||
|
private String answer; /* 답변 */
|
||||||
|
private String answerYn; /* 답변여부 */
|
||||||
|
private String useYn; /* 사용여부 */
|
||||||
|
private String questionType; /* 질문유형 */
|
||||||
|
private String questionTypeName; /* 질문유형명 */
|
||||||
|
|
||||||
private int viewCnt; /* 조회수 */
|
private int viewCnt; /* 조회수 */
|
||||||
private String bdAttachFileId; /* 첨부파일아이디 */
|
private String bdAttachFileId; /* 첨부파일아이디 */
|
||||||
private String attachYn; /* 첨부파일존재여부 */
|
private String attachYn; /* 첨부파일존재여부 */
|
||||||
@ -36,10 +43,15 @@ public class ArticleVO extends PagingVO {
|
|||||||
// 검색관련
|
// 검색관련
|
||||||
private String searchType; /* 검색대상구분 */
|
private String searchType; /* 검색대상구분 */
|
||||||
private String searchKeyword; /* 검색어 */
|
private String searchKeyword; /* 검색어 */
|
||||||
|
private String searchQuestionType; /* 검색FAQ유형 */
|
||||||
|
|
||||||
// 첨부파일
|
// 첨부파일
|
||||||
private List<AttachFileVO> attachFiles = null; /* 첨부파일목록 */
|
private List<AttachFileVO> attachFiles = null; /* 첨부파일목록 */
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// SETTER & GETTER
|
||||||
|
|
||||||
public int getAttachFileCnt() {
|
public int getAttachFileCnt() {
|
||||||
if(attachFiles == null) return 0;
|
if(attachFiles == null) return 0;
|
||||||
return attachFiles.size();
|
return attachFiles.size();
|
||||||
@ -187,5 +199,52 @@ public class ArticleVO extends PagingVO {
|
|||||||
this.attachFiles = attachFiles;
|
this.attachFiles = attachFiles;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getAnswerYn() {
|
||||||
|
return answerYn;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAnswerYn(String answerYn) {
|
||||||
|
this.answerYn = answerYn;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getUseYn() {
|
||||||
|
return useYn;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setUseYn(String useYn) {
|
||||||
|
this.useYn = useYn;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getQuestionType() {
|
||||||
|
return questionType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setQuestionType(String questionType) {
|
||||||
|
this.questionType = questionType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getQuestionTypeName() {
|
||||||
|
return questionTypeName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setQuestionTypeName(String questionTypeName) {
|
||||||
|
this.questionTypeName = questionTypeName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getAnswer() {
|
||||||
|
return answer;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAnswer(String answer) {
|
||||||
|
this.answer = answer;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getSearchQuestionType() {
|
||||||
|
return searchQuestionType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSearchQuestionType(String searchQuestionType) {
|
||||||
|
this.searchQuestionType = searchQuestionType;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,13 +2,11 @@ package nlib.bbs.service.impl;
|
|||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
|
||||||
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
|
|
||||||
import nlib.bbs.service.ArticleVO;
|
import nlib.bbs.service.ArticleVO;
|
||||||
|
import nlib.bbs.service.AttachFileVO;
|
||||||
import nlib.bbs.service.BoardService;
|
import nlib.bbs.service.BoardService;
|
||||||
import nlib.util.StringUtil;
|
import nlib.util.StringUtil;
|
||||||
|
|
||||||
@ -55,10 +53,16 @@ public abstract class BoardServiceImpl implements BoardService
|
|||||||
*/
|
*/
|
||||||
public ArticleVO selectArticle(ArticleVO articleVO) throws Exception {
|
public ArticleVO selectArticle(ArticleVO articleVO) throws Exception {
|
||||||
|
|
||||||
|
if(StringUtil.isEmpty(articleVO.getArticleId())) return null;
|
||||||
|
|
||||||
// 게시글 조회
|
// 게시글 조회
|
||||||
ArticleVO retVO = getBoardDAO().selectArticle(articleVO);
|
ArticleVO retVO = getBoardDAO().selectArticle(articleVO);
|
||||||
// 첨부파일 조회
|
// 첨부파일 조회
|
||||||
if(StringUtil.isNotEmpty(retVO.getBdAttachFileId())) retVO.setAttachFiles(getBoardDAO().listAttachFiles(retVO.getBdAttachFileId()));
|
if(StringUtil.isNotEmpty(retVO.getBdAttachFileId())) {
|
||||||
|
String attachFileId = retVO.getBdAttachFileId();
|
||||||
|
List<AttachFileVO> listFile = getBoardDAO().listAttachFiles(attachFileId);
|
||||||
|
retVO.setAttachFiles(listFile);
|
||||||
|
}
|
||||||
// 조회수 증가
|
// 조회수 증가
|
||||||
updateRead(articleVO);
|
updateRead(articleVO);
|
||||||
|
|
||||||
|
|||||||
12
src/main/java/nlib/bbs/service/impl/FaqDAO.java
Normal file
12
src/main/java/nlib/bbs/service/impl/FaqDAO.java
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
package nlib.bbs.service.impl;
|
||||||
|
|
||||||
|
import egovframework.rte.psl.dataaccess.mapper.Mapper;
|
||||||
|
|
||||||
|
@Mapper("faqDAO")
|
||||||
|
public interface FaqDAO extends BoardDAO {
|
||||||
|
|
||||||
|
/*
|
||||||
|
* BoardDAO 상속 내용과 동일
|
||||||
|
*/
|
||||||
|
|
||||||
|
}
|
||||||
28
src/main/java/nlib/bbs/service/impl/FaqServiceImpl.java
Normal file
28
src/main/java/nlib/bbs/service/impl/FaqServiceImpl.java
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
package nlib.bbs.service.impl;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import nlib.bbs.service.ArticleVO;
|
||||||
|
import nlib.bbs.service.BoardService;
|
||||||
|
import nlib.util.StringUtil;
|
||||||
|
|
||||||
|
@Service("faqService")
|
||||||
|
public class FaqServiceImpl extends BoardServiceImpl
|
||||||
|
{
|
||||||
|
static Logger log = LoggerFactory.getLogger(FaqServiceImpl.class);
|
||||||
|
|
||||||
|
@Resource(name="faqDAO")
|
||||||
|
FaqDAO faqDAO;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public BoardDAO getBoardDAO() {
|
||||||
|
return faqDAO;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
12
src/main/java/nlib/bbs/service/impl/QnaDAO.java
Normal file
12
src/main/java/nlib/bbs/service/impl/QnaDAO.java
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
package nlib.bbs.service.impl;
|
||||||
|
|
||||||
|
import egovframework.rte.psl.dataaccess.mapper.Mapper;
|
||||||
|
|
||||||
|
@Mapper("qnaDAO")
|
||||||
|
public interface QnaDAO extends BoardDAO {
|
||||||
|
|
||||||
|
/*
|
||||||
|
* BoardDAO 상속 내용과 동일
|
||||||
|
*/
|
||||||
|
|
||||||
|
}
|
||||||
21
src/main/java/nlib/bbs/service/impl/QnaServiceImpl.java
Normal file
21
src/main/java/nlib/bbs/service/impl/QnaServiceImpl.java
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
package nlib.bbs.service.impl;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
@Service("qnaService")
|
||||||
|
public class QnaServiceImpl extends BoardServiceImpl
|
||||||
|
{
|
||||||
|
static Logger log = LoggerFactory.getLogger(QnaServiceImpl.class);
|
||||||
|
|
||||||
|
@Resource(name="qnaDAO")
|
||||||
|
QnaDAO qnaDAO;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public BoardDAO getBoardDAO() {
|
||||||
|
return qnaDAO;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -34,9 +34,9 @@ import nlib.user.service.NlibLoginVO;
|
|||||||
import nlib.util.StringUtil;
|
import nlib.util.StringUtil;
|
||||||
|
|
||||||
@Controller
|
@Controller
|
||||||
public class BoardController extends NlibCommonController
|
public class BoardControllerApi extends NlibCommonController
|
||||||
{
|
{
|
||||||
private static final Logger log = LoggerFactory.getLogger(BoardController.class);
|
private static final Logger log = LoggerFactory.getLogger(BoardControllerApi.class);
|
||||||
|
|
||||||
static final String DEFUALT_PAGE_SIZE = NlibProperty.getProperty("list.paging.page.size");
|
static final String DEFUALT_PAGE_SIZE = NlibProperty.getProperty("list.paging.page.size");
|
||||||
|
|
||||||
@ -22,12 +22,15 @@ import org.springframework.web.bind.annotation.RequestParam;
|
|||||||
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
|
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
|
||||||
import org.springframework.web.servlet.support.RequestContextUtils;
|
import org.springframework.web.servlet.support.RequestContextUtils;
|
||||||
|
|
||||||
|
import nlib.bbs.service.ArticleVO;
|
||||||
|
import nlib.bbs.service.BoardService;
|
||||||
import nlib.bbs.service.BoardServiceApi;
|
import nlib.bbs.service.BoardServiceApi;
|
||||||
import nlib.cmm.NlibCommonController;
|
import nlib.cmm.NlibCommonController;
|
||||||
import nlib.cmm.crypto.AriaCrypto;
|
import nlib.cmm.crypto.AriaCrypto;
|
||||||
import nlib.cmm.crypto.NlibPasswordEncoder;
|
import nlib.cmm.crypto.NlibPasswordEncoder;
|
||||||
import nlib.cmm.service.CodeService;
|
import nlib.cmm.service.CodeService;
|
||||||
import nlib.cmm.service.NlibProperty;
|
import nlib.cmm.service.NlibProperty;
|
||||||
|
import nlib.cmm.service.NotificationVO;
|
||||||
import nlib.restful.service.DataApiReqVO;
|
import nlib.restful.service.DataApiReqVO;
|
||||||
import nlib.restful.service.DataApiResVO;
|
import nlib.restful.service.DataApiResVO;
|
||||||
import nlib.user.service.NlibLoginVO;
|
import nlib.user.service.NlibLoginVO;
|
||||||
@ -36,150 +39,94 @@ import nlib.util.StringUtil;
|
|||||||
@Controller
|
@Controller
|
||||||
public class FaqController extends NlibCommonController {
|
public class FaqController extends NlibCommonController {
|
||||||
|
|
||||||
// private static final Logger log = LoggerFactory.getLogger(FaqController.class);
|
private static final Logger log = LoggerFactory.getLogger(FaqController.class);
|
||||||
//
|
|
||||||
// static final String DEFUALT_PAGE_SIZE = NlibProperty.getProperty("list.paging.page.size");
|
|
||||||
//
|
|
||||||
// @Resource(name = "boardService")
|
|
||||||
// private BoardService boardService;
|
|
||||||
//
|
|
||||||
// @Resource(name = "nlibPasswordEncoder")
|
|
||||||
// private NlibPasswordEncoder nlibPasswordEncoder;
|
|
||||||
//
|
|
||||||
// @Resource(name = "ariaCrypto")
|
|
||||||
// private AriaCrypto ariaCrypto;
|
|
||||||
//
|
|
||||||
// @Resource(name = "codeService")
|
|
||||||
// private CodeService codeService;
|
|
||||||
//
|
|
||||||
//
|
|
||||||
// @Autowired
|
|
||||||
// private AuthenticationManager authenticationManager;
|
|
||||||
//
|
|
||||||
// /**
|
|
||||||
// * FAQ 목록 화면을 표출한다.
|
|
||||||
// *
|
|
||||||
// * @param req
|
|
||||||
// * @return
|
|
||||||
// */
|
|
||||||
// @RequestMapping("/board/listFAQs.do")
|
|
||||||
// public String listFAQs(HttpServletRequest req, Authentication authentication, @RequestParam Map<String, String> paramMap, ModelMap model) throws Exception {
|
|
||||||
//
|
|
||||||
// String searchKeyword = paramMap.get("searchKeyword");
|
|
||||||
// String pageIndex = StringUtil.getString(paramMap.get("pageIndex"), "1");
|
|
||||||
// String pageSize = StringUtil.getString(paramMap.get("pageSize") , DEFUALT_PAGE_SIZE);
|
|
||||||
// String message = paramMap.get("message");
|
|
||||||
// String faqType = paramMap.get("faqType");
|
|
||||||
//
|
|
||||||
// log.debug("listFAQs > pageIndex = " + pageIndex);
|
|
||||||
// log.debug("listFAQs > pageSize = " + pageSize);
|
|
||||||
// log.debug("listFAQs > searchKeyword = " + searchKeyword);
|
|
||||||
// log.debug("listFAQs > message = " + message);
|
|
||||||
// log.debug("listFAQs > faqType = " + faqType);
|
|
||||||
//
|
|
||||||
// DataApiReqVO reqVOforCode = new DataApiReqVO();
|
|
||||||
// reqVOforCode.setPageIndex(0);
|
|
||||||
// reqVOforCode.setPageSize(0);
|
|
||||||
//
|
|
||||||
//
|
|
||||||
// // 페이징 사이즈 코드 목록 조회
|
|
||||||
// List<HashMap<String,String>> pageSizeCodes = codeService.listCodes("PAGE_SIZE_OPTION");
|
|
||||||
//
|
|
||||||
// // 유형 코드 목록 조회
|
|
||||||
// List<HashMap<String,String>> articleTypeCodes = codeService.listCodes("FAQ_TYPE");
|
|
||||||
//
|
|
||||||
// // 반환 정보
|
|
||||||
// model.addAttribute("pageIndex" , pageIndex);
|
|
||||||
// model.addAttribute("pageSize" , pageSize);
|
|
||||||
// model.addAttribute("searchKeyword", searchKeyword);
|
|
||||||
// model.addAttribute("pageSizeCodes", pageSizeCodes);
|
|
||||||
// model.addAttribute("faqTypeCodes" , articleTypeCodes);
|
|
||||||
// model.addAttribute("message" , message);
|
|
||||||
// model.addAttribute("faqType" , faqType);
|
|
||||||
// model.addAttribute("faqType" , faqType);
|
|
||||||
//
|
|
||||||
// return "nlib/board/listFAQs";
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
//
|
|
||||||
// /**
|
|
||||||
// * FAQ 목록 조회한다.
|
|
||||||
// *
|
|
||||||
// * @param req
|
|
||||||
// * @return
|
|
||||||
// */
|
|
||||||
// @RequestMapping(value="/board/listFAQsAjax.do")
|
|
||||||
// public ResponseEntity<String> listFAQsAjax(HttpServletRequest req,
|
|
||||||
// Authentication authentication, @RequestBody Map<String, String> paramMap) throws Exception {
|
|
||||||
//
|
|
||||||
// String searchKeyword = paramMap.get("searchKeyword");
|
|
||||||
// String pageIndex = StringUtil.getString(paramMap.get("pageIndex"), "1");
|
|
||||||
// String pageSize = StringUtil.getString(paramMap.get("pageSize") , DEFUALT_PAGE_SIZE);
|
|
||||||
// String faqType = paramMap.get("faqType");
|
|
||||||
//
|
|
||||||
// log.debug("listFAQsAjax > pageIndex = " + pageIndex);
|
|
||||||
// log.debug("listFAQsAjax > pageSize = " + pageSize);
|
|
||||||
// log.debug("listFAQsAjax > searchKeyword = " + searchKeyword);
|
|
||||||
// log.debug("listFAQsAjax > faqType = " + faqType);
|
|
||||||
//
|
|
||||||
// //-------------------------------
|
|
||||||
// // REQ VO 구성
|
|
||||||
// //-------------------------------
|
|
||||||
// DataApiReqVO reqVO = new DataApiReqVO();
|
|
||||||
// reqVO.setPageIndex(pageIndex);
|
|
||||||
// reqVO.setPageSize(pageSize);
|
|
||||||
// reqVO.addInfoItem("searchKeyword", searchKeyword);
|
|
||||||
// reqVO.addInfoItem("faqType", faqType);
|
|
||||||
//
|
|
||||||
// // 요청
|
|
||||||
// DataApiResVO resVO = boardService.listFAQs(reqVO);
|
|
||||||
//
|
|
||||||
// //-------------------------------
|
|
||||||
// // JSON변환 응답 처리
|
|
||||||
// //-------------------------------
|
|
||||||
// // JS-GRID 페이징 처리를 포함한 응답값 처리
|
|
||||||
// // {data: [{...}],
|
|
||||||
// // itemsCount: 255
|
|
||||||
// // }
|
|
||||||
// HashMap<String, Object> retMap = new HashMap<String, Object>();
|
|
||||||
// retMap.put("data", resVO.getList());
|
|
||||||
// retMap.put("itemsCount", resVO.getRecordTotCount());
|
|
||||||
//
|
|
||||||
// return makeResponseEntityJson(retMap);
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
//
|
|
||||||
// /**
|
|
||||||
// * 묻고답하기 상세 내용 조회한다.
|
|
||||||
// *
|
|
||||||
// * @param req
|
|
||||||
// * @return
|
|
||||||
// */
|
|
||||||
// @RequestMapping("/board/selectFAQAjax.do")
|
|
||||||
// public ResponseEntity<String> selectFAQAjax(HttpServletRequest req, Authentication authentication, @RequestBody Map<String, String> paramMap) throws Exception {
|
|
||||||
//
|
|
||||||
// // 게시물 번호
|
|
||||||
// String articleNo = paramMap.get("articleNo");
|
|
||||||
//
|
|
||||||
// log.debug("selectQnA > articleNo = " + articleNo);
|
|
||||||
//
|
|
||||||
// //-------------------------------
|
|
||||||
// // REQ VO 구성
|
|
||||||
// //-------------------------------
|
|
||||||
// DataApiReqVO reqVO = new DataApiReqVO();
|
|
||||||
// reqVO.addInfoItem("boardNo", "FAQ"); // 게시판ID
|
|
||||||
// reqVO.addInfoItem("articleNo", articleNo); // 게시물번호
|
|
||||||
//
|
|
||||||
// // 요청
|
|
||||||
// DataApiResVO resVO = boardService.selectFAQ(reqVO);
|
|
||||||
//
|
|
||||||
// // 반환 정보
|
|
||||||
// return makeResponseEntityJson(resVO.getInfo());
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// @RequestMapping("/board/verifyWriter.do")
|
|
||||||
// public String verifyWriter(HttpServletRequest req) throws Exception {
|
|
||||||
// return "nlib/board/verifyWriter";
|
|
||||||
// }
|
|
||||||
|
|
||||||
|
static final int DEFUALT_PAGE_SIZE = NlibProperty.getInt("list.paging.page.size", 10);
|
||||||
|
|
||||||
|
@Resource(name = "faqService")
|
||||||
|
private BoardService faqService;
|
||||||
|
|
||||||
|
@Resource(name="codeService")
|
||||||
|
private CodeService codeService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 목록 화면을 표시한다.
|
||||||
|
*
|
||||||
|
* @param req
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@RequestMapping("/bbs/listFaqs.do")
|
||||||
|
public String listFaqs(
|
||||||
|
HttpServletRequest req,
|
||||||
|
@RequestParam Map<String, String> paramMap,
|
||||||
|
ArticleVO searchArticleVO,
|
||||||
|
ModelMap model
|
||||||
|
) throws Exception {
|
||||||
|
|
||||||
|
|
||||||
|
List<HashMap<String, String>> questionTypeList = codeService.listCodes("FAQ_TYPE_CD");
|
||||||
|
model.addAttribute("questionTypeList", questionTypeList);
|
||||||
|
model.addAttribute("searchArticle", searchArticleVO);
|
||||||
|
|
||||||
|
return "nlib/bbs/listFaqs";
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 목록 조회한다.
|
||||||
|
*
|
||||||
|
* @param req
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@RequestMapping(value="/bbs/listFaqsAjax.do")
|
||||||
|
public ResponseEntity<String> listFaqsAjax(
|
||||||
|
HttpServletRequest req,
|
||||||
|
Authentication authentication,
|
||||||
|
@RequestBody ArticleVO searchArticleVO) throws Exception {
|
||||||
|
|
||||||
|
if(searchArticleVO.getPageIndex() < 1) searchArticleVO.setPageIndex(1);
|
||||||
|
if(searchArticleVO.getPageSize() < 1) searchArticleVO.setPageSize(DEFUALT_PAGE_SIZE);
|
||||||
|
|
||||||
|
List<ArticleVO> list = faqService.listArticles(searchArticleVO);
|
||||||
|
|
||||||
|
int totRecordCount = faqService.countArticles(searchArticleVO);
|
||||||
|
|
||||||
|
//-------------------------------
|
||||||
|
// JSON변환 응답 처리
|
||||||
|
//-------------------------------
|
||||||
|
// JS-GRID 페이징 처리를 포함한 응답값 처리
|
||||||
|
// {data: [{...}],
|
||||||
|
// itemsCount: 255
|
||||||
|
// }
|
||||||
|
HashMap<String, Object> retMap = new HashMap<String, Object>();
|
||||||
|
retMap.put("data", list);
|
||||||
|
retMap.put("itemsCount", totRecordCount);
|
||||||
|
|
||||||
|
return makeResponseEntityJson(retMap);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 알림 상세 내용 조회한다.
|
||||||
|
*
|
||||||
|
* @param req
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@RequestMapping("/bbs/selectFaqArticleAjax.do")
|
||||||
|
public ResponseEntity<String> selectFaqArticleAjax(HttpServletRequest req, Authentication authentication, @RequestBody ArticleVO searchArticleVO) throws Exception {
|
||||||
|
|
||||||
|
// 읽음처리 및 상세내용 조회
|
||||||
|
ArticleVO articleVO = faqService.selectArticle(searchArticleVO);
|
||||||
|
|
||||||
|
//-------------------------------
|
||||||
|
// JSON변환 응답 처리
|
||||||
|
//-------------------------------
|
||||||
|
// JS-GRID 페이징 처리를 포함한 응답값 처리
|
||||||
|
// {data: [{...}],
|
||||||
|
// itemsCount: 255
|
||||||
|
// }
|
||||||
|
HashMap<String, Object> retMap = new HashMap<String, Object>();
|
||||||
|
retMap.put("data", articleVO);
|
||||||
|
|
||||||
|
return makeResponseEntityJson(retMap);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@ -22,6 +22,8 @@ import org.springframework.web.bind.annotation.RequestParam;
|
|||||||
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
|
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
|
||||||
import org.springframework.web.servlet.support.RequestContextUtils;
|
import org.springframework.web.servlet.support.RequestContextUtils;
|
||||||
|
|
||||||
|
import nlib.bbs.service.ArticleVO;
|
||||||
|
import nlib.bbs.service.BoardService;
|
||||||
import nlib.bbs.service.BoardServiceApi;
|
import nlib.bbs.service.BoardServiceApi;
|
||||||
import nlib.cmm.NlibCommonController;
|
import nlib.cmm.NlibCommonController;
|
||||||
import nlib.cmm.crypto.AriaCrypto;
|
import nlib.cmm.crypto.AriaCrypto;
|
||||||
@ -36,150 +38,81 @@ import nlib.util.StringUtil;
|
|||||||
@Controller
|
@Controller
|
||||||
public class QnaController extends NlibCommonController
|
public class QnaController extends NlibCommonController
|
||||||
{
|
{
|
||||||
// private static final Logger log = LoggerFactory.getLogger(QnaController.class);
|
private static final Logger log = LoggerFactory.getLogger(QnaController.class);
|
||||||
//
|
|
||||||
// static final String DEFUALT_PAGE_SIZE = NlibProperty.getProperty("list.paging.page.size");
|
|
||||||
//
|
|
||||||
// @Resource(name = "boardService")
|
|
||||||
// private BoardService boardService;
|
|
||||||
//
|
|
||||||
// @Resource(name = "nlibPasswordEncoder")
|
|
||||||
// private NlibPasswordEncoder nlibPasswordEncoder;
|
|
||||||
//
|
|
||||||
// @Resource(name = "ariaCrypto")
|
|
||||||
// private AriaCrypto ariaCrypto;
|
|
||||||
//
|
|
||||||
// @Resource(name = "codeService")
|
|
||||||
// private CodeService codeService;
|
|
||||||
//
|
|
||||||
//
|
|
||||||
// @Autowired
|
|
||||||
// private AuthenticationManager authenticationManager;
|
|
||||||
//
|
|
||||||
// /**
|
|
||||||
// * FAQ 목록 화면을 표출한다.
|
|
||||||
// *
|
|
||||||
// * @param req
|
|
||||||
// * @return
|
|
||||||
// */
|
|
||||||
// @RequestMapping("/board/listFAQs.do")
|
|
||||||
// public String listFAQs(HttpServletRequest req, Authentication authentication, @RequestParam Map<String, String> paramMap, ModelMap model) throws Exception {
|
|
||||||
//
|
|
||||||
// String searchKeyword = paramMap.get("searchKeyword");
|
|
||||||
// String pageIndex = StringUtil.getString(paramMap.get("pageIndex"), "1");
|
|
||||||
// String pageSize = StringUtil.getString(paramMap.get("pageSize") , DEFUALT_PAGE_SIZE);
|
|
||||||
// String message = paramMap.get("message");
|
|
||||||
// String faqType = paramMap.get("faqType");
|
|
||||||
//
|
|
||||||
// log.debug("listFAQs > pageIndex = " + pageIndex);
|
|
||||||
// log.debug("listFAQs > pageSize = " + pageSize);
|
|
||||||
// log.debug("listFAQs > searchKeyword = " + searchKeyword);
|
|
||||||
// log.debug("listFAQs > message = " + message);
|
|
||||||
// log.debug("listFAQs > faqType = " + faqType);
|
|
||||||
//
|
|
||||||
// DataApiReqVO reqVOforCode = new DataApiReqVO();
|
|
||||||
// reqVOforCode.setPageIndex(0);
|
|
||||||
// reqVOforCode.setPageSize(0);
|
|
||||||
//
|
|
||||||
//
|
|
||||||
// // 페이징 사이즈 코드 목록 조회
|
|
||||||
// List<HashMap<String,String>> pageSizeCodes = codeService.listCodes("PAGE_SIZE_OPTION");
|
|
||||||
//
|
|
||||||
// // 유형 코드 목록 조회
|
|
||||||
// List<HashMap<String,String>> articleTypeCodes = codeService.listCodes("FAQ_TYPE");
|
|
||||||
//
|
|
||||||
// // 반환 정보
|
|
||||||
// model.addAttribute("pageIndex" , pageIndex);
|
|
||||||
// model.addAttribute("pageSize" , pageSize);
|
|
||||||
// model.addAttribute("searchKeyword", searchKeyword);
|
|
||||||
// model.addAttribute("pageSizeCodes", pageSizeCodes);
|
|
||||||
// model.addAttribute("faqTypeCodes" , articleTypeCodes);
|
|
||||||
// model.addAttribute("message" , message);
|
|
||||||
// model.addAttribute("faqType" , faqType);
|
|
||||||
// model.addAttribute("faqType" , faqType);
|
|
||||||
//
|
|
||||||
// return "nlib/board/listFAQs";
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
//
|
|
||||||
// /**
|
|
||||||
// * FAQ 목록 조회한다.
|
|
||||||
// *
|
|
||||||
// * @param req
|
|
||||||
// * @return
|
|
||||||
// */
|
|
||||||
// @RequestMapping(value="/board/listFAQsAjax.do")
|
|
||||||
// public ResponseEntity<String> listFAQsAjax(HttpServletRequest req,
|
|
||||||
// Authentication authentication, @RequestBody Map<String, String> paramMap) throws Exception {
|
|
||||||
//
|
|
||||||
// String searchKeyword = paramMap.get("searchKeyword");
|
|
||||||
// String pageIndex = StringUtil.getString(paramMap.get("pageIndex"), "1");
|
|
||||||
// String pageSize = StringUtil.getString(paramMap.get("pageSize") , DEFUALT_PAGE_SIZE);
|
|
||||||
// String faqType = paramMap.get("faqType");
|
|
||||||
//
|
|
||||||
// log.debug("listFAQsAjax > pageIndex = " + pageIndex);
|
|
||||||
// log.debug("listFAQsAjax > pageSize = " + pageSize);
|
|
||||||
// log.debug("listFAQsAjax > searchKeyword = " + searchKeyword);
|
|
||||||
// log.debug("listFAQsAjax > faqType = " + faqType);
|
|
||||||
//
|
|
||||||
// //-------------------------------
|
|
||||||
// // REQ VO 구성
|
|
||||||
// //-------------------------------
|
|
||||||
// DataApiReqVO reqVO = new DataApiReqVO();
|
|
||||||
// reqVO.setPageIndex(pageIndex);
|
|
||||||
// reqVO.setPageSize(pageSize);
|
|
||||||
// reqVO.addInfoItem("searchKeyword", searchKeyword);
|
|
||||||
// reqVO.addInfoItem("faqType", faqType);
|
|
||||||
//
|
|
||||||
// // 요청
|
|
||||||
// DataApiResVO resVO = boardService.listFAQs(reqVO);
|
|
||||||
//
|
|
||||||
// //-------------------------------
|
|
||||||
// // JSON변환 응답 처리
|
|
||||||
// //-------------------------------
|
|
||||||
// // JS-GRID 페이징 처리를 포함한 응답값 처리
|
|
||||||
// // {data: [{...}],
|
|
||||||
// // itemsCount: 255
|
|
||||||
// // }
|
|
||||||
// HashMap<String, Object> retMap = new HashMap<String, Object>();
|
|
||||||
// retMap.put("data", resVO.getList());
|
|
||||||
// retMap.put("itemsCount", resVO.getRecordTotCount());
|
|
||||||
//
|
|
||||||
// return makeResponseEntityJson(retMap);
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
//
|
|
||||||
// /**
|
|
||||||
// * 묻고답하기 상세 내용 조회한다.
|
|
||||||
// *
|
|
||||||
// * @param req
|
|
||||||
// * @return
|
|
||||||
// */
|
|
||||||
// @RequestMapping("/board/selectFAQAjax.do")
|
|
||||||
// public ResponseEntity<String> selectFAQAjax(HttpServletRequest req, Authentication authentication, @RequestBody Map<String, String> paramMap) throws Exception {
|
|
||||||
//
|
|
||||||
// // 게시물 번호
|
|
||||||
// String articleNo = paramMap.get("articleNo");
|
|
||||||
//
|
|
||||||
// log.debug("selectQnA > articleNo = " + articleNo);
|
|
||||||
//
|
|
||||||
// //-------------------------------
|
|
||||||
// // REQ VO 구성
|
|
||||||
// //-------------------------------
|
|
||||||
// DataApiReqVO reqVO = new DataApiReqVO();
|
|
||||||
// reqVO.addInfoItem("boardNo", "FAQ"); // 게시판ID
|
|
||||||
// reqVO.addInfoItem("articleNo", articleNo); // 게시물번호
|
|
||||||
//
|
|
||||||
// // 요청
|
|
||||||
// DataApiResVO resVO = boardService.selectFAQ(reqVO);
|
|
||||||
//
|
|
||||||
// // 반환 정보
|
|
||||||
// return makeResponseEntityJson(resVO.getInfo());
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// @RequestMapping("/board/verifyWriter.do")
|
|
||||||
// public String verifyWriter(HttpServletRequest req) throws Exception {
|
|
||||||
// return "nlib/board/verifyWriter";
|
|
||||||
// }
|
|
||||||
|
|
||||||
|
static final int DEFUALT_PAGE_SIZE = NlibProperty.getInt("list.paging.page.size", 10);
|
||||||
|
|
||||||
|
@Resource(name = "qnaService")
|
||||||
|
private BoardService qnaService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 목록 화면을 표시한다.
|
||||||
|
*
|
||||||
|
* @param req
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@RequestMapping("/bbs/listQnas.do")
|
||||||
|
public String listQnas(
|
||||||
|
HttpServletRequest req,
|
||||||
|
@RequestParam Map<String, String> paramMap,
|
||||||
|
ArticleVO searchArticleVO,
|
||||||
|
ModelMap model
|
||||||
|
) throws Exception {
|
||||||
|
|
||||||
|
model.addAttribute("searchArticle", searchArticleVO);
|
||||||
|
|
||||||
|
return "nlib/bbs/listQnas";
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 목록 조회한다.
|
||||||
|
*
|
||||||
|
* @param req
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@RequestMapping(value="/bbs/listQnasAjax.do")
|
||||||
|
public ResponseEntity<String> listQnasAjax(
|
||||||
|
HttpServletRequest req,
|
||||||
|
Authentication authentication,
|
||||||
|
@RequestBody ArticleVO searchArticleVO) throws Exception {
|
||||||
|
|
||||||
|
if(searchArticleVO.getPageIndex() < 1) searchArticleVO.setPageIndex(1);
|
||||||
|
if(searchArticleVO.getPageSize() < 1) searchArticleVO.setPageSize(DEFUALT_PAGE_SIZE);
|
||||||
|
|
||||||
|
List<ArticleVO> list = qnaService.listArticles(searchArticleVO);
|
||||||
|
|
||||||
|
int totRecordCount = qnaService.countArticles(searchArticleVO);
|
||||||
|
|
||||||
|
//-------------------------------
|
||||||
|
// JSON변환 응답 처리
|
||||||
|
//-------------------------------
|
||||||
|
// JS-GRID 페이징 처리를 포함한 응답값 처리
|
||||||
|
// {data: [{...}],
|
||||||
|
// itemsCount: 255
|
||||||
|
// }
|
||||||
|
HashMap<String, Object> retMap = new HashMap<String, Object>();
|
||||||
|
retMap.put("data", list);
|
||||||
|
retMap.put("itemsCount", totRecordCount);
|
||||||
|
|
||||||
|
return makeResponseEntityJson(retMap);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 알림 상세 내용 조회한다.
|
||||||
|
*
|
||||||
|
* @param req
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@RequestMapping("/bbs/selectQnaArticle.do")
|
||||||
|
public String selectQnaArticle(HttpServletRequest req, Authentication authentication, ArticleVO searchArticleVO, ModelMap model) throws Exception {
|
||||||
|
|
||||||
|
// 읽음처리 및 상세내용 조회
|
||||||
|
ArticleVO articleVO = qnaService.selectArticle(searchArticleVO);
|
||||||
|
|
||||||
|
model.addAttribute("searchArticle", searchArticleVO);
|
||||||
|
model.addAttribute("article", articleVO);
|
||||||
|
|
||||||
|
return "nlib/bbs/selectQnaArticle";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@ -34,24 +34,27 @@
|
|||||||
, A.POST_START_DATE
|
, A.POST_START_DATE
|
||||||
, A.POST_END_DATE
|
, A.POST_END_DATE
|
||||||
, A.VIEW_CNT
|
, A.VIEW_CNT
|
||||||
, CASE WHEN A.BD_ATTACH_FILE_ID IS NOT NULL OR A.BD_ATTACH_FILE_ID != '' THEN 'N' ELSE 'Y' END AS ATTACH_YN
|
, 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
|
, DATE_FORMAT(A.REG_DD, '%Y-%m-%d') AS REG_DD
|
||||||
, A2.RNO
|
, A2.RNO
|
||||||
, C.USER_NM AS REG_NM
|
, C.USER_NM AS REG_NM
|
||||||
FROM BD_NLIB_ANCMNT A
|
FROM BD_NLIB_ANCMNT A
|
||||||
INNER JOIN (
|
INNER JOIN (
|
||||||
SELECT S.ANCMNT_ID
|
SELECT ANCMNT_ID, RNO
|
||||||
, ROW_NUMBER() OVER() AS RNO
|
FROM (
|
||||||
<include refid="search_condition" />
|
SELECT S.ANCMNT_ID
|
||||||
ORDER BY S.REG_DD DESC
|
, ROW_NUMBER() OVER(PARTITION BY 1 ORDER BY S.REG_DD, S.TITLE) AS RNO
|
||||||
LIMIT #{pageStartRowNum}, #{pageSize}
|
, ROW_NUMBER() OVER(PARTITION BY 1 ORDER BY S.REG_DD DESC, S.TITLE DESC) AS ONO
|
||||||
|
<include refid="search_condition" />
|
||||||
|
) S2
|
||||||
|
WHERE ONO BETWEEN (#{pageStartRowNum} + 1) AND (#{pageStartRowNum} + #{pageSize})
|
||||||
) AS A2
|
) AS A2
|
||||||
USING(ANCMNT_ID)
|
USING(ANCMNT_ID)
|
||||||
JOIN SM_DEPT B
|
JOIN SM_DEPT B
|
||||||
ON B.ORG_CD = A.MNG_ORG_CD
|
ON B.ORG_CD = A.MNG_ORG_CD
|
||||||
LEFT OUTER JOIN SM_USER C
|
LEFT OUTER JOIN SM_USER C
|
||||||
ON A.REG_ID = C.USER_ID
|
ON A.REG_ID = C.USER_ID
|
||||||
ORDER BY A.REG_DD DESC
|
ORDER BY RNO DESC
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="countArticles" parameterType="ArticleVO" resultType="Integer">
|
<select id="countArticles" parameterType="ArticleVO" resultType="Integer">
|
||||||
@ -72,7 +75,7 @@
|
|||||||
, A.POST_START_DATE
|
, A.POST_START_DATE
|
||||||
, A.POST_END_DATE
|
, A.POST_END_DATE
|
||||||
, A.VIEW_CNT
|
, A.VIEW_CNT
|
||||||
, CASE WHEN A.BD_ATTACH_FILE_ID IS NOT NULL OR A.BD_ATTACH_FILE_ID != '' THEN 'N' ELSE 'Y' END AS ATTACH_YN
|
, 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
|
, A.BD_ATTACH_FILE_ID
|
||||||
, DATE_FORMAT(A.REG_DD, '%Y-%m-%d') AS REG_DD
|
, DATE_FORMAT(A.REG_DD, '%Y-%m-%d') AS REG_DD
|
||||||
, C.USER_NM AS REG_NM
|
, C.USER_NM AS REG_NM
|
||||||
|
|||||||
135
src/main/resources/egovframework/mapper/nlib/bbs/FaqDAO_SQL.xml
Normal file
135
src/main/resources/egovframework/mapper/nlib/bbs/FaqDAO_SQL.xml
Normal file
@ -0,0 +1,135 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?><!--Converted at: Wed May 11 15:49:38 KST 2016-->
|
||||||
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
|
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
|
<mapper namespace="nlib.bbs.service.impl.FaqDAO">
|
||||||
|
|
||||||
|
<sql id="search_condition">
|
||||||
|
<![CDATA[
|
||||||
|
FROM BD_QNA S
|
||||||
|
WHERE S.USE_YN = 'Y'
|
||||||
|
AND S.ANSWER_YN = 'Y'
|
||||||
|
AND S.BD_TYPE = 'FAQ'
|
||||||
|
]]>
|
||||||
|
|
||||||
|
<if test='searchType != null and searchType.equals("T")'>
|
||||||
|
<if test="searchKeyword != null and !searchKeyword.equals('')">
|
||||||
|
AND S.TITLE LIKE CONCAT('%', #{escapeSearchKeyword}, '%')
|
||||||
|
</if>
|
||||||
|
</if>
|
||||||
|
<if test='searchType != null and searchType.equals("C")'>
|
||||||
|
<if test="searchKeyword != null and !searchKeyword.equals('')">
|
||||||
|
AND CONCAT(S.CONTENT, S.ANSWER) LIKE CONCAT('%', #{escapeSearchKeyword}, '%')
|
||||||
|
</if>
|
||||||
|
</if>
|
||||||
|
<if test='searchQuestionType != null and !searchQuestionType.equals("")'>
|
||||||
|
AND S.QUESTION_TYPE = #{searchQuestionType}
|
||||||
|
</if>
|
||||||
|
|
||||||
|
</sql>
|
||||||
|
|
||||||
|
<select id="listArticles" parameterType="ArticleVO" resultType="ArticleVO">
|
||||||
|
SELECT
|
||||||
|
A.QNA_ID AS ARTICLE_ID
|
||||||
|
, A.MNG_ORG_CD
|
||||||
|
, B.DEPT_NM AS MNG_ORG_NM
|
||||||
|
, A.QUESTION_TYPE
|
||||||
|
, D.S_CODE_NM AS QUESTION_TYPE_NAME
|
||||||
|
, A.TITLE
|
||||||
|
, A.ANSWER_YN
|
||||||
|
, A.USE_YN
|
||||||
|
, A.VIEW_CNT
|
||||||
|
, 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
|
||||||
|
FROM BD_QNA A
|
||||||
|
INNER JOIN (
|
||||||
|
SELECT QNA_ID, RNO
|
||||||
|
FROM (
|
||||||
|
SELECT S.QNA_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
|
||||||
|
<include refid="search_condition" />
|
||||||
|
) S2
|
||||||
|
WHERE ONO BETWEEN (#{pageStartRowNum} + 1) AND (#{pageStartRowNum} + #{pageSize})
|
||||||
|
) AS A2
|
||||||
|
USING(QNA_ID)
|
||||||
|
JOIN SM_DEPT B
|
||||||
|
ON B.ORG_CD = A.MNG_ORG_CD
|
||||||
|
LEFT OUTER JOIN SM_USER C
|
||||||
|
ON A.REG_ID = C.USER_ID
|
||||||
|
LEFT OUTER JOIN SM_CODE_S D
|
||||||
|
ON A.QUESTION_TYPE = D.S_CODE_ID
|
||||||
|
WHERE D.L_CODE_ID = 'FAQ_TYPE_CD'
|
||||||
|
AND D.USE_YN = 'Y'
|
||||||
|
ORDER BY RNO DESC
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<select id="countArticles" parameterType="ArticleVO" resultType="Integer">
|
||||||
|
SELECT COUNT(1)
|
||||||
|
<include refid="search_condition" />
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<select id="selectArticle" parameterType="ArticleVO" resultType="ArticleVO">
|
||||||
|
<![CDATA[
|
||||||
|
SELECT
|
||||||
|
A.QNA_ID AS ARTICLE_ID
|
||||||
|
, A.MNG_ORG_CD
|
||||||
|
, B.DEPT_NM AS MNG_ORG_NM
|
||||||
|
, A.QUESTION_TYPE
|
||||||
|
, D.S_CODE_NM AS QUESTION_TYPE_NAME
|
||||||
|
, A.TITLE
|
||||||
|
, A.CONTENT
|
||||||
|
, A.ANSWER_YN
|
||||||
|
, A.ANSWER
|
||||||
|
, A.USE_YN
|
||||||
|
, A.VIEW_CNT
|
||||||
|
, A.BD_ATTACH_FILE_ID
|
||||||
|
, 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
|
||||||
|
, C.USER_NM AS REG_NM
|
||||||
|
FROM BD_QNA A
|
||||||
|
LEFT OUTER JOIN SM_DEPT B
|
||||||
|
ON B.ORG_CD = A.MNG_ORG_CD
|
||||||
|
LEFT OUTER JOIN SM_USER C
|
||||||
|
ON A.REG_ID = C.USER_ID
|
||||||
|
LEFT OUTER JOIN SM_CODE_S D
|
||||||
|
ON A.QUESTION_TYPE = D.S_CODE_ID
|
||||||
|
WHERE A.QNA_ID = #{articleId}
|
||||||
|
AND D.L_CODE_ID = 'FAQ_TYPE_CD'
|
||||||
|
AND D.USE_YN = 'Y'
|
||||||
|
ORDER BY A.REG_DD DESC
|
||||||
|
]]>
|
||||||
|
</select>
|
||||||
|
|
||||||
|
|
||||||
|
<select id="listAttachFiles" parameterType="String" resultType="AttachFileVO">
|
||||||
|
SELECT
|
||||||
|
A.FILE_MASK
|
||||||
|
, A.FILE_ID
|
||||||
|
, A.FILE_SEQ
|
||||||
|
, A.FILE_NAME
|
||||||
|
, A.FILE_SIZE
|
||||||
|
, A.FILE_TYPE_CD
|
||||||
|
, A.DOWNLOAD_COUNT
|
||||||
|
, A.DOWNLOAD_EXPIRE_DATE
|
||||||
|
, A.DOWNLOAD_LIMIT_COUNT
|
||||||
|
, DATE_FORMAT(A.REG_DATE, '%Y-%m-%d') AS REG_DD
|
||||||
|
, A.DELETE_YN
|
||||||
|
, A.STREAMING_URL
|
||||||
|
, A.CONTENT
|
||||||
|
, A.ATCH_TYPE_CD
|
||||||
|
FROM J_ATTACHFILE A
|
||||||
|
WHERE A.FILE_ID = #{attachFileId}
|
||||||
|
ORDER BY A.FILE_SEQ
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<update id="updateRead" parameterType="ArticleVO">
|
||||||
|
<![CDATA[
|
||||||
|
UPDATE BD_QNA
|
||||||
|
SET VIEW_CNT = VIEW_CNT + 1
|
||||||
|
WHERE QNA_ID = #{articleId}
|
||||||
|
]]>
|
||||||
|
</update>
|
||||||
|
|
||||||
|
</mapper>
|
||||||
@ -7,7 +7,7 @@
|
|||||||
SELECT B.S_CODE_ID
|
SELECT B.S_CODE_ID
|
||||||
, B.S_CODE_NM
|
, B.S_CODE_NM
|
||||||
FROM SM_CODE_M A,
|
FROM SM_CODE_M A,
|
||||||
SM_CODE_S B
|
SM_CODE_S B
|
||||||
WHERE A.L_CODE_ID = #{lCodeId}
|
WHERE A.L_CODE_ID = #{lCodeId}
|
||||||
AND A.L_CODE_ID = B.L_CODE_ID
|
AND A.L_CODE_ID = B.L_CODE_ID
|
||||||
AND A.USE_YN = 'Y'
|
AND A.USE_YN = 'Y'
|
||||||
|
|||||||
@ -31,7 +31,7 @@
|
|||||||
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
|
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
|
||||||
<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %>
|
<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %>
|
||||||
|
|
||||||
<c:set var="pageTitle">공지사항</c:set>
|
<c:set var="pageTitle">공지사항(DB)</c:set>
|
||||||
|
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="ko">
|
<html lang="ko">
|
||||||
@ -97,8 +97,24 @@
|
|||||||
//$("#itemsCount").val(jsonOjb.itemsCount);
|
//$("#itemsCount").val(jsonOjb.itemsCount);
|
||||||
console.log(jsonObj.itemsCount);
|
console.log(jsonObj.itemsCount);
|
||||||
|
|
||||||
if(jsonObj.itemsCount == undefined) $("#itemsCount").val("0");
|
if(jsonObj.itemsCount == undefined) {
|
||||||
else $("#itemsCount").val(jsonObj.itemsCount);
|
$("#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);
|
data.resolve(jsonObj);
|
||||||
});
|
});
|
||||||
@ -113,10 +129,9 @@
|
|||||||
|
|
||||||
// 추출할 컬럼의 데이터 가져오기
|
// 추출할 컬럼의 데이터 가져오기
|
||||||
var articleId = getData["articleId"];
|
var articleId = getData["articleId"];
|
||||||
var selectedRow = $("#jsGrid").find('table tr.jsgrid-selected-row');
|
|
||||||
|
|
||||||
// 상세 내용 보기
|
// 상세 내용 보기
|
||||||
fn_viewDetail(articleId, selectedRow);
|
fn_viewDetail(articleId);
|
||||||
},
|
},
|
||||||
|
|
||||||
//======================================
|
//======================================
|
||||||
@ -128,7 +143,7 @@
|
|||||||
{ title:"제목", name: "title" , type: "text", width: 200, align: "left" },
|
{ title:"제목", name: "title" , type: "text", width: 200, align: "left" },
|
||||||
{ title:"등록자", name: "regNm" , type: "text", width: 100, align: "center"},
|
{ title:"등록자", name: "regNm" , type: "text", width: 100, align: "center"},
|
||||||
{ title:"등록일", name: "regDd" , type: "text", width: 100, align: "center"},
|
{ title:"등록일", name: "regDd" , type: "text", width: 100, align: "center"},
|
||||||
{ title:"첨부", name: "bdAttachFileId" , type: "text", width: 100, align: "center"}
|
{ title:"첨부", name: "attachYn" , type: "text", width: 100, align: "center"}
|
||||||
]
|
]
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -168,13 +183,19 @@
|
|||||||
|
|
||||||
메시지 : ${message}
|
메시지 : ${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/>
|
<br/>
|
||||||
<form name="articleForm" id="articleForm" method="post" action="${pageContext.request.contextPath}/bbs/selectAncmntArticle.do">
|
<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="pageSize" id="pageSize" value="${searchArticle.pageSize }" />
|
||||||
<input type="text" name="itemsCount" id="itemsCount" value="0" />
|
|
||||||
|
|
||||||
<input type="text" name="pageIndex" id="pageIndex" title="페이지번호" value="${searchArticle.pageIndex }" size="5" maxlength="5" />
|
<input type="text" name="pageIndex" id="pageIndex" title="페이지번호" value="${searchArticle.pageIndex }" size="5" maxlength="5" />
|
||||||
|
|
||||||
|
|||||||
314
src/main/webapp/WEB-INF/jsp/nlib/bbs/listFaqs.jsp
Normal file
314
src/main/webapp/WEB-INF/jsp/nlib/bbs/listFaqs.jsp
Normal file
@ -0,0 +1,314 @@
|
|||||||
|
<%
|
||||||
|
/**
|
||||||
|
* <pre>
|
||||||
|
* @Class Name : listFaqs.jsp
|
||||||
|
*
|
||||||
|
* @Description : 자주하는질문 목록 화면을 표출한다.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
|
||||||
|
*
|
||||||
|
* </pre>
|
||||||
|
*
|
||||||
|
* @ ------------ -------- ---------------------------
|
||||||
|
* @ 수정일 수정자 수정내용
|
||||||
|
* @ ------------ -------- ---------------------------
|
||||||
|
* @ 2021. 9. 15. KNKIM 최초 생성
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* @author 이씨플라자 * DIGITALSHIP KNKIM
|
||||||
|
* @since 2021. 9. 15.
|
||||||
|
* @version 1.0
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
%>
|
||||||
|
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
|
||||||
|
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
|
||||||
|
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui" %>
|
||||||
|
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
|
||||||
|
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
|
||||||
|
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
|
||||||
|
<%@ 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>
|
||||||
|
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="ko">
|
||||||
|
<head>
|
||||||
|
<title>${pageTitle}</title>
|
||||||
|
|
||||||
|
<!-- GRID -->
|
||||||
|
<link type="text/css" rel="stylesheet" href="/nlib/js/jsgrid/nlib-jsgrid.css" />
|
||||||
|
<link type="text/css" rel="stylesheet" href="/nlib/js/jsgrid/nlib-jsgrid-theme.css" />
|
||||||
|
<script src="/nlib/js/jsgrid/nlib-jsgrid.js"></script>
|
||||||
|
|
||||||
|
<script type="text/javaScript" language="javascript">
|
||||||
|
|
||||||
|
$( document ).ready(function() {
|
||||||
|
|
||||||
|
//=======================================================
|
||||||
|
// 그리드 생성 환경설정
|
||||||
|
//=======================================================
|
||||||
|
$("#jsGrid").jsGrid({
|
||||||
|
pageSize : $("#pageSize").val(),
|
||||||
|
scrollOffset:0,
|
||||||
|
controller: {
|
||||||
|
loadData: function (filter) { // 그리드에 데이터를 가져올 때 실팽되는 함수
|
||||||
|
var data = $.Deferred();
|
||||||
|
//======================================
|
||||||
|
// 요청 정보 구성 : 시작 (각 요청에 맞게 조정)
|
||||||
|
//======================================
|
||||||
|
var reqUrl = "${pageContext.request.contextPath}/bbs/listFaqsAjax.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();
|
||||||
|
var searchQuestionType = $("#searchQuestionType").val();
|
||||||
|
|
||||||
|
|
||||||
|
$("#pageIndex").val(pageIndex);
|
||||||
|
|
||||||
|
|
||||||
|
var inputData = {
|
||||||
|
"pageIndex" : pageIndex
|
||||||
|
, "pageSize" : pageSize
|
||||||
|
, "searchType" : searchType
|
||||||
|
, "searchKeyword" : searchKeyword
|
||||||
|
, "searchQuestionType" : searchQuestionType
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
//--------------------------------------
|
||||||
|
// 요청 처리
|
||||||
|
//--------------------------------------
|
||||||
|
$.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"];
|
||||||
|
var selectedRow = $("#jsGrid").find('table tr.jsgrid-selected-row');
|
||||||
|
|
||||||
|
// 상세 내용 보기
|
||||||
|
fn_viewDetail(articleId, selectedRow);
|
||||||
|
},
|
||||||
|
|
||||||
|
//======================================
|
||||||
|
// 그리드 컬럼 정의 (각 요청에 맞게 조정)
|
||||||
|
//======================================
|
||||||
|
fields: [
|
||||||
|
{ title:"TYPE", name: "faqType" , type: "text", width: 30, align: "left", itemTemplate: function(value, item) {return "Q";}},
|
||||||
|
{ title:"ID", name: "articleId" , type: "text", width: 160, align: "left" },
|
||||||
|
{ title:"유형", name: "questionTypeName" , type: "text", width: 100, align: "left" },
|
||||||
|
{ title:"제목", name: "title" , type: "text", width: 200, align: "left" },
|
||||||
|
{ title:"첨부", name: "attachYn" , type: "text", width: 100, align: "center"}
|
||||||
|
]
|
||||||
|
});
|
||||||
|
|
||||||
|
// 검색 버튼 클릭
|
||||||
|
$("#btnSearch").on("click", function(e) {
|
||||||
|
fn_searchArticle($("#pageSize").val(), 1);
|
||||||
|
});
|
||||||
|
|
||||||
|
//초기 자료 조회
|
||||||
|
fn_searchArticle();
|
||||||
|
|
||||||
|
}); // document ready
|
||||||
|
|
||||||
|
|
||||||
|
// 선택한 글 상세 보기로 이동
|
||||||
|
function fn_viewDetail(articleId, selectedRow) {
|
||||||
|
|
||||||
|
var $selectedRow = $(selectedRow);
|
||||||
|
var reqUrl = "${pageContext.request.contextPath}/bbs/selectFaqArticleAjax.do";
|
||||||
|
var inputData = { "articleId" : articleId };
|
||||||
|
|
||||||
|
//--------------------------------------
|
||||||
|
// 요청 처리
|
||||||
|
//--------------------------------------
|
||||||
|
$.ajax({
|
||||||
|
type: "post",
|
||||||
|
contentType: "application/json; charset=utf-8",
|
||||||
|
url: reqUrl,
|
||||||
|
dataType: "json",
|
||||||
|
data: JSON.stringify(inputData),
|
||||||
|
}).done(function(response){
|
||||||
|
var jsonObj = JSON.parse(response);
|
||||||
|
$("#jsGrid").find('table tr.answer').remove();
|
||||||
|
|
||||||
|
var answerHtml = "<tr class='answer'><td>A</td><td colspan='4'>" +
|
||||||
|
+ "<br/>" + jsonObj.data.answer;
|
||||||
|
if(jsonObj.data.attachFileCnt > 0) {
|
||||||
|
answerHtml += "<br/>[첨부파일]<br/>";
|
||||||
|
for(var i=0; i<jsonObj.data.attachFileCnt; i++) {
|
||||||
|
answerHtml += "<a href=\"javascript:void(0);\" onclick=\"fn_downloadFile('" +
|
||||||
|
jsonObj.data.attachFiles[i].fileId + "', " +
|
||||||
|
jsonObj.data.attachFiles[i].fileSeq + ", '" +
|
||||||
|
jsonObj.data.attachFiles[i].fileName + "')\">" +
|
||||||
|
jsonObj.data.attachFiles[i].fileName + " (" +
|
||||||
|
jsonObj.data.attachFiles[i].fileSize + " byte(s))</a><br/>";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
answerHtml += "</td></tr>";
|
||||||
|
|
||||||
|
$selectedRow.after(answerHtml);
|
||||||
|
});
|
||||||
|
|
||||||
|
$("#jsGrid").closest('.ui-jqgrid-bdiv').width($("#jsGrid").closest('.ui-jqgrid-bdiv').width() + 1);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// 그리드 데이터 조회 호출
|
||||||
|
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_downloadFile(fileId, fileSeq, fileName) {
|
||||||
|
|
||||||
|
if(fileId == null || fileId.trim().length < 1) {
|
||||||
|
alert("파일정보를 확인해 주시기 바랍니다.[1]");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(fileSeq < 1) {
|
||||||
|
alert("파일정보를 확인해 주시기 바랍니다.[2]");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(fileName == null || fileName.trim().length < 1) {
|
||||||
|
alert("파일정보를 확인해 주시기 바랍니다.[3]");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$("#fileId").val(fileId);
|
||||||
|
$("#fileSeq").val(fileSeq);
|
||||||
|
$("#fileName").val(fileName);
|
||||||
|
$("#downloadFileForm").submit();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function fn_changeQuestionType(searchQuestionType) {
|
||||||
|
$("#searchQuestionType").val(searchQuestionType);
|
||||||
|
fn_searchArticle($("#pageSize").val(), 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
</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/>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- 유형선택 -->
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td><a href="javascript:void(0);" onclick="fn_changeQuestionType('')">전체</a></td>
|
||||||
|
<c:forEach var="qTypeItem" items="${questionTypeList }">
|
||||||
|
<td><a href="javascript:void(0);" onclick="fn_changeQuestionType('${qTypeItem.sCodeId}')">${qTypeItem.sCodeNm}</a></td>
|
||||||
|
</c:forEach>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<form name="articleForm" id="articleForm" method="post" action="${pageContext.request.contextPath}/bbs/selectFaqArticle.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="searchQuestionType" id="searchQuestionType" value="" title="유형코드" readonly />
|
||||||
|
<input type="text" name="articleNo" id="articleNo" value="" title="선택글번호" readonly />
|
||||||
|
|
||||||
|
</form>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- 첨부파일 다운로드용 폼 -->
|
||||||
|
<form name="downloadFileForm" id="downloadFileForm"
|
||||||
|
action="${pageContext.request.contextPath}/fileupload/downloadAttachFile.do"
|
||||||
|
method="post">
|
||||||
|
<input type="text" name="subPathKey" id="subPathKey" value="fileupload.bbs.ancmnt.subpath" readonly />
|
||||||
|
<input type="text" name="fileId" id="fileId" value="" readonly />
|
||||||
|
<input type="text" name="fileSeq" id="fileSeq" value="" readonly />
|
||||||
|
<input type="text" name="fileName" id="fileName" value="" readonly />
|
||||||
|
</form>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
||||||
@ -42,32 +42,31 @@
|
|||||||
|
|
||||||
// 목록으로 이동
|
// 목록으로 이동
|
||||||
function fn_list() {
|
function fn_list() {
|
||||||
$("#articleForm").attr("action", "${pageContext.request.contextPath}/bbs/listAncmnts.do");
|
|
||||||
$("#articleForm").submit();
|
$("#articleForm").submit();
|
||||||
}
|
}
|
||||||
|
|
||||||
// 파일 다운로드
|
// 파일 다운로드
|
||||||
function fn_downloadFile(fileId, fileSeq, fileName) {
|
function fn_downloadFile(fileId, fileSeq, fileName) {
|
||||||
|
|
||||||
if(fileId == null || fileId.trim().length < 1) {
|
if(fileId == null || fileId.trim().length < 1) {
|
||||||
alert("파일정보를 확인해 주시기 바랍니다.[1]");
|
alert("파일정보를 확인해 주시기 바랍니다.[1]");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(fileSeq < 1) {
|
if(fileSeq < 1) {
|
||||||
alert("파일정보를 확인해 주시기 바랍니다.[2]");
|
alert("파일정보를 확인해 주시기 바랍니다.[2]");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(fileName == null || fileName.trim().length < 1) {
|
if(fileName == null || fileName.trim().length < 1) {
|
||||||
alert("파일정보를 확인해 주시기 바랍니다.[3]");
|
alert("파일정보를 확인해 주시기 바랍니다.[3]");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
$("#fileId").val(fileId);
|
$("#fileId").val(fileId);
|
||||||
$("#fileSeq").val(fileSeq);
|
$("#fileSeq").val(fileSeq);
|
||||||
$("#fileName").val(fileName);
|
$("#fileName").val(fileName);
|
||||||
$("#downloadFileForm").submit();
|
$("#downloadFileForm").submit();
|
||||||
|
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
@ -82,13 +81,13 @@ function fn_downloadFile(fileId, fileSeq, fileName) {
|
|||||||
<br />
|
<br />
|
||||||
|
|
||||||
<form name="articleForm" id="articleForm"
|
<form name="articleForm" id="articleForm"
|
||||||
action="${pageContext.request.contextPath}/board/listNotices.do"
|
action="${pageContext.request.contextPath}/bbs/listAncmnts.do"
|
||||||
method="post">
|
method="post">
|
||||||
|
|
||||||
<!-- HIDDEN 영역 : 시작 -->
|
<!-- HIDDEN 영역 : 시작 -->
|
||||||
<input type="text" name="pageIndex" id="pageIndex" title="페이지번호" value="${searchArticle.pageIndex}" readonly />
|
<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="pageSize" id="pageSize" title="목록에 보여줄 글개수" value="${searchArticle.pageSize}" readonly />
|
||||||
<input type="text" name="searchType" id="searchType" title="검색구분" value="${searchArticle.searchType}" 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="searchKeyword" id="searchKeyword" title="검색어" value="${searchArticle.searchKeyword}" readonly />
|
||||||
<input type="text" name="articleId" id="articleId" title="선택글번호" value="${searchArticle.articleId}" readonly />
|
<input type="text" name="articleId" id="articleId" title="선택글번호" value="${searchArticle.articleId}" readonly />
|
||||||
<!-- HIDDEN 영역 : 종료 -->
|
<!-- HIDDEN 영역 : 종료 -->
|
||||||
|
|||||||
@ -44,6 +44,9 @@
|
|||||||
<script src="/nlib/js/jsgrid/nlib-jsgrid.js"></script>
|
<script src="/nlib/js/jsgrid/nlib-jsgrid.js"></script>
|
||||||
|
|
||||||
<script type="text/javaScript" language="javascript">
|
<script type="text/javaScript" language="javascript">
|
||||||
|
$(function() {
|
||||||
|
alert("ok");
|
||||||
|
});
|
||||||
|
|
||||||
$( document ).ready(function() {
|
$( document ).ready(function() {
|
||||||
|
|
||||||
|
|||||||
@ -39,6 +39,9 @@
|
|||||||
<title>${pageTitle}</title>
|
<title>${pageTitle}</title>
|
||||||
|
|
||||||
<script type="text/javaScript" language="javascript">
|
<script type="text/javaScript" language="javascript">
|
||||||
|
$(function() {
|
||||||
|
alert("ok");
|
||||||
|
});
|
||||||
|
|
||||||
// 이전글/다음글 상세 보기로 이동
|
// 이전글/다음글 상세 보기로 이동
|
||||||
function fn_view_detail(articleNo) {
|
function fn_view_detail(articleNo) {
|
||||||
|
|||||||
@ -8,6 +8,7 @@
|
|||||||
<li><a href="#" onclick="javascript:location.href='${pageContext.request.contextPath}/board/listNotices.do';">공지사항</a></li>
|
<li><a href="#" onclick="javascript:location.href='${pageContext.request.contextPath}/board/listNotices.do';">공지사항</a></li>
|
||||||
<li><a href="#" onclick="javascript:location.href='${pageContext.request.contextPath}/bbs/listAncmnts.do';">공지사항(DB)</a></li>
|
<li><a href="#" onclick="javascript:location.href='${pageContext.request.contextPath}/bbs/listAncmnts.do';">공지사항(DB)</a></li>
|
||||||
<li><a href="#" onclick="javascript:location.href='${pageContext.request.contextPath}/board/listFAQs.do';">자주하는질문</a></li>
|
<li><a href="#" onclick="javascript:location.href='${pageContext.request.contextPath}/board/listFAQs.do';">자주하는질문</a></li>
|
||||||
|
<li><a href="#" onclick="javascript:location.href='${pageContext.request.contextPath}/bbs/listFaqs.do';">자주하는질문(DB)</a></li>
|
||||||
<li><a href="#" onclick="javascript:location.href='${pageContext.request.contextPath}/bbs/listQnAs.do';">묻고답하기</a></li>
|
<li><a href="#" onclick="javascript:location.href='${pageContext.request.contextPath}/bbs/listQnAs.do';">묻고답하기</a></li>
|
||||||
<li><a href="#" onclick="javascript:location.href='${pageContext.request.contextPath}/inform/selectNCultureLocationInfo.do';">찾아오시는길</a></li>
|
<li><a href="#" onclick="javascript:location.href='${pageContext.request.contextPath}/inform/selectNCultureLocationInfo.do';">찾아오시는길</a></li>
|
||||||
|
|
||||||
|
|||||||
@ -11,7 +11,8 @@
|
|||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
|
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
|
||||||
<link rel="shortcut icon" href="#">
|
<!-- <link rel="shortcut icon" href=""> -->
|
||||||
|
|
||||||
<link href="${pageContext.request.contextPath}/css/nlib.css" rel="stylesheet" type="text/css" />
|
<link href="${pageContext.request.contextPath}/css/nlib.css" rel="stylesheet" type="text/css" />
|
||||||
<script src="${pageContext.request.contextPath}/js/jquery/jquery.min.js"></script>
|
<script src="${pageContext.request.contextPath}/js/jquery/jquery.min.js"></script>
|
||||||
<script src="${pageContext.request.contextPath}/js/nlib.js"></script>
|
<script src="${pageContext.request.contextPath}/js/nlib.js"></script>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user