<%@ page contentType="text/html; charset=utf-8" %><%@ page import="java.net.URLEncoder" %><%@ include file="init.jsp" %><% //게시판권한 if(!board.accessible("read", bid, userKind) && !isBoardAdmin) { m.jsAlert("읽기권한이 없습니다."); m.jsReplace("/center/member/login.jsp?returl=" + m.urlencode(request.getRequestURL() + (!"".equals(m.qs()) ? "?" + m.qs() : ""))); return; } //수강생읽기권한 if(binfo.b("course_yn") && binfo.b("offline_yn") && "U".equals(userKind)) { if(!board.courseUserCheck(siteId, userId) && !board.offlineUserCheck(siteId, userId)) { m.jsError("온라인강의 또는 학원강의 수강생을 위한 서비스입니다."); return; } } else if(binfo.b("course_yn") && "U".equals(userKind)) { if(!board.courseUserCheck(siteId, userId)) { m.jsError("온라인수강생을 위한 서비스입니다."); return; } } else if(binfo.b("offline_yn") && "U".equals(userKind)) { if(!board.offlineUserCheck(siteId, userId)) { m.jsError("학원생을 위한 서비스입니다."); return; } } //객체 TutorDao tutor = new TutorDao(); //기본키 int id = m.ri("id"); String ek = m.rs("ek"); if(id == 0) { m.jsError("기본키는 반드시 지정해야 합니다."); return; } //정보 DataSet info = post.find("id = " + id + " AND status = 1" + ("event".equals(code) ? "" : " AND site_id = " + siteId)); if(!info.next()) { m.jsError("해당 게시물이 없습니다."); return; } //제한 if(info.b("secret_yn") && !"S".equals(userKind) && userId != info.i("user_id")) { m.jsError("비밀글입니다. 작성자만 조회할 수 있습니다."); return; } //합격수기 게시판 개편사항(26.06.10) boolean newPassBlock = (siteId == 39 || siteId == 40 || siteId == 41 || siteId == 34 || siteId == 44) && "pass".equals(code); if(newPassBlock) { f.addElement("pass_period", info.s("pass_period"), "hname:'준비기간'"); } //포맷팅 info.put("reg_date_conv", m.time("yyyy.MM.dd", info.s("reg_date"))); info.put("mod_date_block", !"".equals(info.s("mod_date"))); info.put("mod_date_conv", m.time("yyyy.MM.dd", info.s("mod_date"))); info.put("comment_conv", info.i("comm_cnt") > 0? "(" + info.i("comm_cnt") + ")" : "" ); info.put("file_block", info.i("file_cnt") > 0); info.put("hit_cnt_conv", m.nf(info.i("hit_cnt"))); info.put("new_block", m.diffDate("D", info.s("reg_date"), m.time("yyyyMMddHHmmss")) <= 3); info.put("subject", m.htt(info.s("subject"))); info.put("proc_status_conv", m.getItem(info.s("proc_status"), post.procStatusList)); info.put("proc_status_block", info.i("proc_status") == 1); info.put("reply_block", userId != 0 && binfo.b("reply_yn") && (binfo.s("auth_reply").indexOf(userKind) > -1 || ("studyqna".equals(code) && "Q".equals(userKind)))); info.put("subject", m.htt(info.s("subject"))); String categoryName = binfo.b("category_yn") ? category.getName(categories, info.s("category_id")) : "" ; if("02".equals(binfo.s("category_type"))) { DataSet cateinfo = boardSubCategory.find("id = " + info.i("category_id")); if(!cateinfo.next()) { } categoryName = !"".equals(cateinfo.s("category_nm")) ? m.getItem(cateinfo.s("module"), boardSubCategory.pamodules) + " > " + cateinfo.s("category_nm") : ""; if(info.i("tutor_id") != 0) { DataSet tinfo = tutor.find("id = " + info.i("tutor_id")); if(tinfo.next()) { } categoryName += !"".equals(tinfo.s("tutor_nm")) ? " > " + tinfo.s("tutor_nm") : ""; } } info.put("category_conv", !"".equals(categoryName) ? "[" + categoryName + "] " : ""); if(!"S".equals(userKind) && !"Q".equals(userKind) && !"A".equals(userKind) && !"T".equals(userKind) && ((siteId == 3 && ("studyqna".equals(binfo.s("code")) || "faq".equals(binfo.s("code")))) || "pass".equals(binfo.s("code")) || "community".equals(binfo.s("code")) || "moviepass".equals(binfo.s("code")))) { String writerConv = ""; for(int i=0; i" : ""); } DataSet newFiles = new DataSet(); if(info.i("id") < 0) { for(int i = 1; i<=3; i++) { if(!"".equals(info.s("filename" + i))) { newFiles.addRow(); newFiles.put("filename_block", !"".equals(info.s("filename" + i)) && info.i("id") < 0); newFiles.put("file_ext", file.getFileIcon(info.s("filename" + i))); newFiles.put("filename_url", webUrl + info.s("filename" + i)); newFiles.put("filename_conv", !"".equals(info.s("filename" + i)) && info.s("filename" + i).indexOf("/") > -1 ? info.s("filename" + i).split("\\/")[info.s("filename" + i).split("\\/").length -1] : ""); } } } //이전글/다음글 DataSet pinfo = new DataSet(); DataSet ninfo = new DataSet(); post.appendSearch("a.category_id", m.rs("s_category_id")); post.appendSearch("b.module", m.rs("s_module")); post.appendWhere("a.display_yn = 'Y'"); if(!"".equals(f.get("s_field"))) post.appendSearch(m.rs("s_field"), m.rs("s_keyword"), "LIKE"); else if("".equals(f.get("s_field")) && !"".equals(f.get("s_keyword"))) { Vector v = new Vector(); v.add("a.subject LIKE '%" + m.rs("s_keyword") + "%'"); v.add("a.content LIKE '%" + m.rs("s_keyword") + "%'"); v.add("a.writer LIKE '%" + m.rs("s_keyword") + "%'"); post.appendWhere("(" + m.join(" OR ", v.toArray()) + ")"); } //post.d(out); if(!isMultiList) { pinfo = post.getPrevPost(bid, info.i("thread"), info.s("depth")); ninfo = post.getNextPost(bid, info.i("thread"), info.s("depth")); } else { pinfo = post.getPrevPost(vecBoard.toArray(), info.i("thread"), info.s("depth")); ninfo = post.getNextPost(vecBoard.toArray(), info.i("thread"), info.s("depth")); } if(pinfo.next()) { pinfo.put("reg_date_conv", m.time("yyyy.MM.dd", pinfo.s("reg_date"))); pinfo.put("comment_conv", pinfo.i("comm_cnt") > 0? "(" + pinfo.i("comm_cnt") + ")" : "" ); pinfo.put("file_block", pinfo.i("file_cnt") > 0); pinfo.put("hit_cnt_conv", m.nf(pinfo.i("hit_cnt"))); pinfo.put("new_block", m.diffDate("D", pinfo.s("reg_date"), m.time("yyyyMMddHHmmss")) <= 3); pinfo.put("subject_conv", m.cutString(pinfo.s("subject"), 80)); pinfo.put("secret_block", "Y".equals(pinfo.s("secret_yn"))); categoryName = binfo.b("category_yn") ? category.getName(categories, pinfo.s("category_id")) : "" ; pinfo.put("category_conv", !"".equals(categoryName) ? "[" + categoryName + "]" : ""); } if(ninfo.next()) { ninfo.put("reg_date_conv", m.time("yyyy.MM.dd", ninfo.s("reg_date"))); ninfo.put("comment_conv", ninfo.i("comm_cnt") > 0? "(" + ninfo.i("comm_cnt") + ")" : "" ); ninfo.put("file_block", ninfo.i("file_cnt") > 0); ninfo.put("hit_cnt_conv", m.nf(ninfo.i("hit_cnt"))); ninfo.put("new_block", m.diffDate("D", ninfo.s("reg_date"), m.time("yyyyMMddHHmmss")) <= 3); ninfo.put("secret_block", "Y".equals(ninfo.s("secret_yn"))); ninfo.put("subject_conv", m.cutString(ninfo.s("subject"), 80)); categoryName = binfo.b("category_yn") ? category.getName(categories, ninfo.s("category_id")) : "" ; ninfo.put("category_conv", !"".equals(categoryName) ? "[" + categoryName + "]" : ""); } //답변 DataSet ainfo = new DataSet(); DataSet afiles = new DataSet(); if("qna".equals(btype)) { ainfo = post.find("thread = " + info.s("thread") + " AND depth = 'AA' AND status = 1", "*", "id DESC", 1); if(ainfo.next()) { ainfo.put("mod_date_conv", info.i("proc_status") == 1 ? m.time("yyyy.MM.dd HH:mm", ainfo.s("mod_date")) : "-"); ainfo.put("content_conv", m.htt(ainfo.s("content"))); ainfo.put("answer_block", ainfo.i("proc_status") == 1); ainfo.put("proc_status_conv", m.getItem(ainfo.s("proc_status"), post.procStatusList)); afiles = file.getFileList(ainfo.i("id"), "post"); while(afiles.next()) { afiles.put("file_ext", file.getFileExt(afiles.s("filename"))); afiles.put("filename_conv", m.urlencode(Base64.encode(afiles.s("filename")))); afiles.put("ext", file.getFileIcon(afiles.s("filename"))); afiles.put("ek", m.encrypt(afiles.s("id"))); afiles.put("sep", !afiles.b("__last") ? "
" : ""); } } else { ainfo.addRow(); ainfo.put("proc_status_conv", "답변대기"); } } if("event".equals(code)) { ch = "info"; p.setVar("p_name", "이벤트"); } //출력 p.setLayout(ch); p.setBody("board.read"); p.setVar("p_title", binfo.s("board_nm")); p.setVar("query", m.qs()); p.setVar("list_query", m.qs("id,ek")); p.setVar("page_query", m.qs("id,ek,page")); p.setVar("module_query", m.qs("id, s_module")); p.setVar("form_script", f.getScript()); p.setVar("board", binfo); p.setVar(info); p.setLoop("categories", categories); p.setLoop("files", files); p.setLoop("new_files", newFiles); p.setVar("file_block", files.size() > 0 || newFiles.size() > 0); p.setVar("prev", pinfo); p.setVar("next", ninfo); p.setVar("answer", ainfo); p.setLoop("afiles", afiles); p.setVar("board_modify_block", ((info.i("user_id") != 0 && info.i("user_id") == userId) || isBoardAdmin) && info.i("proc_status") == 0 && info.i("id") > 0); p.setVar("type_" + btype, true); p.setVar(code, "sub_on"); p.setVar("modify_block", info.i("id") > 0); p.setVar("returl", m.urlencode(request.getRequestURL() + (!"".equals(m.qs()) ? "?" + m.qs() : ""))); p.setLoop("pass_user_types", m.arr2loop(post.passUserTypes)); p.setLoop("pass_period_types", m.arr2loop(post.passPeriodTypes)); p.setVar("new_pass_block", newPassBlock); p.display(); %>