%@ 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();
%>