Merge branch 'tolag3' into advc

Conflicts:
	src/main/java/kcc/com/cmm/web/EgovFileMngController.java
	src/main/java/kcc/ve/instr/tngrVisitEdu/prcsInfo/service/VEPrcsDetailVO.java
This commit is contained in:
leejunho 2023-11-20 20:55:57 +09:00
commit 6be95f0766
15 changed files with 1905 additions and 303 deletions

View File

@ -420,6 +420,7 @@ public class EgovFileMngController {
}
/**
* ve_edu_aplct 첨부파일 목록 - 타입별로 첨부파일 삭제 데이터 null 처리를 위한
*
* @param fileVO
@ -475,4 +476,31 @@ public class EgovFileMngController {
}
return modelAndView;
}
/*
* 게시판 첨부파일에 대한 목록을 조회한다.
*
* @param fileVO
* @param commandMap
* @param model
* @return
* @throws Exception
*/
@RequestMapping("/cmm/fms/selectBBSFileInfsCustom.do")
public String selectBBSFileInfsCustom(@ModelAttribute("searchVO") FileVO fileVO, @RequestParam Map<String, Object> commandMap, ModelMap model) throws Exception {
String atchFileId = (String) commandMap.get("param_atchFileId");
String pdfView = (String) commandMap.get("pdf_view"); //'Y' 이면 pdf 직접 보여주기
fileVO.setAtchFileId(atchFileId);
List<FileVO> result = fileService.selectFileInfs(fileVO);
model.addAttribute("fileList", result);
model.addAttribute("updateFlag", "N");
model.addAttribute("fileListCnt", result.size());
model.addAttribute("atchFileId", atchFileId);
if("Y".equals(pdfView)){
model.addAttribute("pdfView", pdfView);
}
return "cmm/fms/EgovBBSFileListCustom";
}
}

View File

@ -299,6 +299,62 @@ public class CheckFileUtil {
, i_data_start_row
);
}
/**
* @param p_multiRequest - MultipartHttpServletRequest
* @param p_modelAndView - ModelAndView
* @param p_file_nm_prefix - 파일 저장명 prefix
* @param p_exts - 가능한 확장자
* @param p_i_file_size - 가능한 파일 용량 MB 단위
* @param p_i_file_count - 가능한 파일 수량
* @return
* @throws Exception
*/
public String fileValCheckNdbInsertCustom(
// MultipartHttpServletRequest p_multiRequest
Map<String, MultipartFile> files
, ModelAndView p_modelAndView
, String p_file_nm_prefix //파일 저장명 prefix
, String p_exts //가능한 확장자를 받는다. |
, int p_i_file_size //가능한 파일 용량 MB 단위
, int p_i_file_count //가능한 파일 수량
) throws Exception{
return this.p_fileValCheckNdbInsertCustom(files, p_modelAndView, p_file_nm_prefix, p_exts, p_i_file_size, p_i_file_count);
}
/**
* @param p_multiRequest - MultipartHttpServletRequest
* @param p_modelAndView - ModelAndView
* @param p_file_nm_prefix - 파일 저장명 prefix
* @param p_exts - 가능한 확장자
* @param p_i_file_size - 가능한 파일 용량 MB 단위
* @param p_i_file_count - 가능한 파일 수량
* @param p_atchFileId - 기존 파일 그룹명
* @return
* @throws Exception
*/
public String fileValCheckNdbUpdateCustom(
// MultipartHttpServletRequest p_multiRequest
Map<String, MultipartFile> files
, ModelAndView p_modelAndView
, String p_file_nm_prefix //파일 저장명 prefix
, String p_exts //가능한 확장자를 받는다. |
, int p_i_file_size //가능한 파일 용량 MB 단위
, int p_i_file_count //가능한 파일 수량
, String p_atchFileId
//, BoardMasterVO p_bmVO //게시판 형인 경우 사용
) throws Exception{
return this.p_fileValCheckNdbUpdateCustom(files, p_modelAndView, p_file_nm_prefix, p_exts, p_i_file_size, p_i_file_count, p_atchFileId);
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
//
@ -939,5 +995,126 @@ public class CheckFileUtil {
return p_atchFileId;
}
/**
* @param p_multiRequest - MultipartHttpServletRequest
* @param p_modelAndView - ModelAndView
* @param p_file_nm_prefix - 파일 저장명 prefix
* @param p_exts - 가능한 확장자
* @param p_i_file_size - 가능한 파일 용량 MB 단위
* @param p_i_file_count - 가능한 파일 수량
* @return
* @throws Exception
*/
private String p_fileValCheckNdbInsertCustom(
// MultipartHttpServletRequest p_multiRequest
Map<String, MultipartFile> files
, ModelAndView p_modelAndView
, String p_file_nm_prefix //파일 저장명 prefix
, String p_exts //가능한 확장자를 받는다. |
, int p_i_file_size //가능한 파일 용량 MB 단위
, int p_i_file_count //가능한 파일 수량
) throws Exception{
LOGGER.debug("CheckFileUtil.fileValCheckNdbInsertCustom()");
boolean in_bool = true;
List<FileVO> result = null;
String atchFileId = "";
String isThumbFile = "";
//String isThumbFile = "thumbFile"; //"thumbFile" - 썸네일을 생성한다.
// final Map<String, MultipartFile> files = p_multiRequest.getFileMap();
if (!files.isEmpty()) {
result = egovFileMngUtil.parseFileInf(files, p_file_nm_prefix, 0, "", "", isThumbFile);
//관리자에서 게시판 설정시 업로드 파일 사이즈와 수량 체크용
//사용자 설정용 업로드 파일 사이즈 & 파일 수량 & 확장자 체크용
if(!isPosblAtchFileMvWithUserSetting(result, p_modelAndView, p_exts, p_i_file_size, p_i_file_count, 0)) {
p_modelAndView.addObject("result", "fail");
in_bool = false;
}else {
atchFileId = fileMngService.insertFileInfs(result); //첨부 파일
}
}else {
System.out.println("isempty");
}
if (!in_bool) atchFileId = "ERROR";
return atchFileId;
}
//사용자 업로드 파일 처리 - 파일수량 상관없음 - 전자정부 게시판 경우에 대한 변형만 있음(파일수량은 1~ 처리 가능)
/**
* @param p_multiRequest - MultipartHttpServletRequest
* @param p_modelAndView - ModelAndView
* @param p_file_nm_prefix - 파일 저장명 prefix
* @param p_exts - 가능한 확장자
* @param p_i_file_size - 가능한 파일 용량 MB 단위
* @param p_i_file_count - 가능한 파일 수량
* @param p_atchFileId - 기존 파일 그룹명
* @return
* @throws Exception
*/
private String p_fileValCheckNdbUpdateCustom(
// MultipartHttpServletRequest p_multiRequest
Map<String, MultipartFile> files
, ModelAndView p_modelAndView
, String p_file_nm_prefix //파일 저장명 prefix
, String p_exts //가능한 확장자를 받는다. |
, int p_i_file_size //가능한 파일 용량 MB 단위
, int p_i_file_count //가능한 파일 수량
, String p_atchFileId
//, BoardMasterVO p_bmVO //게시판 형인 경우 사용
) throws Exception{
LOGGER.debug("CheckFileUtil.fileValCheckNdbUpdateCustom()");
boolean in_bool = true;
List<FileVO> result = null;
//String atchFileId = "";
String isThumbFile = "";
//String isThumbFile = "thumbFile"; //"thumbFile" - 썸네일을 생성한다.
// final Map<String, MultipartFile> files = p_multiRequest.getFileMap();
if (!files.isEmpty()) {
FileVO fvo = new FileVO();
fvo.setAtchFileId(p_atchFileId);
int cnt = fileMngService.getMaxFileSN(fvo);
//관리자에서 게시판 설정시 업로드 파일 사이즈와 수량 체크용
//사용자 설정용 업로드 파일 사이즈 & 파일 수량 & 확장자 체크용
if(!isPosblAtchFileMvWithUserSetting(result, p_modelAndView, p_exts, p_i_file_size, p_i_file_count, 0)) {
p_modelAndView.addObject("result", "fail");
in_bool = false;
}else {
//atchFileId = fileMngService.insertFileInfs(result); //첨부 파일
//result = egovFileMngUtil.parseFileInf(files, "CHGDATE_", cnt, p_atchFileId, "", isThumbFile);
result = egovFileMngUtil.parseFileInf(files, p_file_nm_prefix, cnt, p_atchFileId, "", isThumbFile);
fileMngService.updateFileInfs(result);
}
}else {
System.out.println("isempty");
}
if (!in_bool) p_atchFileId = "ERROR";
return p_atchFileId;
}
}

View File

@ -182,6 +182,20 @@ public class ExprnClsrmAplctController {
detailVO = vEPrcsAplctPrdService.selectDetailNewOne(detailVO);
model.addAttribute("detailVO", detailVO);
VEPrcsDetailVO vEPrcsDetailVO = new VEPrcsDetailVO();
VEPrcsDetailVO info = vEPrcsAplctPrdService.selectPagingList(vEPrcsDetailVO).get(0);
model.addAttribute("info", info);
//파일 정보 가져오기
FileVO fileVO_cn = new FileVO();
fileVO_cn.setAtchFileId(info.getCnAtchFileId());
List<FileVO> result_cn = fileService.selectFileInfs(fileVO_cn);
model.addAttribute("fileList", result_cn);
model.addAttribute("fileListCnt", result_cn.size());
return "/web/ve/aplct/cpyrgExprnClsrm/exprnClsrmInfo/exprnClsrmAplctGuide";
}

View File

@ -142,6 +142,9 @@ public class VEPrcsDetailVO extends ComDefaultVO implements Serializable {
private String chrctCn;
private String prcsAplctPrdEtcOrd;
private String dprtmNm;
private String cnAtchFileId;
private String prcsAplctPrdQnaOrd;
private String qnaRegist;
@ -693,6 +696,7 @@ public class VEPrcsDetailVO extends ComDefaultVO implements Serializable {
public void setPrcsAplctPrdEtcOrd(String prcsAplctPrdEtcOrd) {
this.prcsAplctPrdEtcOrd = prcsAplctPrdEtcOrd;
}
public String getPrcsAplctPrdQnaOrd() {
return prcsAplctPrdQnaOrd;
}
@ -723,6 +727,20 @@ public class VEPrcsDetailVO extends ComDefaultVO implements Serializable {
public void setQnaAnswerer(String qnaAnswerer) {
this.qnaAnswerer = qnaAnswerer;
}
public String getDprtmNm() {
return dprtmNm;
}
public void setDprtmNm(String dprtmNm) {
this.dprtmNm = dprtmNm;
}
public String getCnAtchFileId() {
return cnAtchFileId;
}
public void setCnAtchFileId(String cnAtchFileId) {
this.cnAtchFileId = cnAtchFileId;
}
}

View File

@ -44,8 +44,9 @@ public class VEPrcsAplctPrdServiceImpl implements VEPrcsAplctPrdService {
//U
public int update(VEPrcsDetailVO paramVO) throws Exception{
vEPrcsAplctPrdDAO.update(paramVO);
return vEPrcsDAO.update(paramVO);
// vEPrcsAplctPrdDAO.update(paramVO);
// return vEPrcsDAO.update(paramVO);
return vEPrcsAplctPrdDAO.update(paramVO);
}
//D

View File

@ -2,7 +2,9 @@ package kcc.ve.oprtn.cpyrgExprnClsrm.oprtnAplctMng.web;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
@ -13,6 +15,7 @@ import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.servlet.ModelAndView;
@ -97,6 +100,11 @@ public class OprtnAplctAnncmMngController {
@Resource(name = "vEPrcsMIXService")
private VEPrcsMIXService vEPrcsMIXService;
//교육과정순번
@Resource(name="prcsAplctPrdGnrService")
private EgovIdGnrService prcsAplctPrdGnrService;
/*
// 교육신청 서비스단
@ -230,6 +238,13 @@ public class OprtnAplctAnncmMngController {
List<FileVO> result = fileService.selectFileInfs(fileVO);
model.addAttribute("fileList", result);
model.addAttribute("fileListCnt", result.size());
//파일 정보 가져오기
FileVO fileVO_cn = new FileVO();
fileVO_cn.setAtchFileId(info.getCnAtchFileId());
List<FileVO> result_cn = fileService.selectFileInfs(fileVO_cn);
model.addAttribute("fileList", result_cn);
model.addAttribute("fileListCnt", result_cn.size());
return "oprtn/cpyrgExprnClsrm/oprtnAplctAnncmMngDetail";
@ -308,6 +323,11 @@ public class OprtnAplctAnncmMngController {
model.addAttribute("fileList", result);
model.addAttribute("fileListCnt", result.size());
FileVO fileVO_cn = new FileVO();
fileVO_cn.setAtchFileId(info.getCnAtchFileId());
List<FileVO> result_cn = fileService.selectFileInfs(fileVO_cn);
model.addAttribute("fileList_cn", result_cn);
model.addAttribute("fileListCnt_cn", result_cn.size());
return "oprtn/cpyrgExprnClsrm/oprtnAplctAnncmMngUpdate";
}
@ -347,6 +367,9 @@ public class OprtnAplctAnncmMngController {
//step2.첨부파일 체크 저장 하기
String s_scholSealAtchFileId = "";
s_scholSealAtchFileId = vEPrcsDetailVO.getAtchFileId();
String cnAtchFileId = "";
cnAtchFileId = vEPrcsDetailVO.getCnAtchFileId();
//DB에서 실제 첨부파일 존재 여부 확인
FileVO fileVO = new FileVO();
@ -356,6 +379,13 @@ public class OprtnAplctAnncmMngController {
s_scholSealAtchFileId = "";
}
FileVO cnFileVO = new FileVO();
cnFileVO.setAtchFileId(cnAtchFileId);
List<FileVO> cnResult = fileService.selectFileInfs(cnFileVO);
if (cnResult.size()<=0) {
cnAtchFileId = "";
}
//step3.파일 처리====================================
//파일 정상 처리 여부와 첨부 파일 정보
@ -364,13 +394,36 @@ public class OprtnAplctAnncmMngController {
int i_file_limit = checkFileUtil.getLimitCount(request); // file count
int i_limit_size = checkFileUtil.getLimitSize(request); // file MB
String s_file_exts = checkFileUtil.getS_exts(); // file exts
int i_file_limit_cn = 50; // file count
int i_limit_size_cn = 100; // file MB
String s_file_exts_cn = "pdf|txt"; // file exts
final Map<String, MultipartFile> files = multiRequest.getFileMap();
Map<String, MultipartFile> files_ori = new HashMap<String, MultipartFile>();
Map<String, MultipartFile> files_cn = new HashMap<String, MultipartFile>();
files.forEach((k,v) -> {
if( k.contains("file_cn") || k.contains("file_temp_cn")) {
files_cn.put(k, v);
}else {
files_ori.put(k, v);
}
});
//break point
// if(true) {
// return modelAndView;
// }
//기존 파일 존재 여부에 따라서 insert or update 처리
if ("".equals(s_scholSealAtchFileId)) {
//atchFileId = this.fileValCheckNdbInsert(multiRequest, modelAndView, checkFileUtil.getS_exts(), i_limit_size, i_file_limit); //EXT, MB size and ea
s_scholSealAtchFileId = checkFileUtil.fileValCheckNdbInsert(
multiRequest, modelAndView
//atchFileId = this.fileValCheckNdbInsert(multiRequest, modelAndView, checkFileUtil.getS_exts(), i_limit_size, i_file_limit); //EXT, MB size and ea
s_scholSealAtchFileId = checkFileUtil.fileValCheckNdbInsertCustom(
files_ori, modelAndView
, "ATCH_"
, s_file_exts
, i_limit_size
@ -379,8 +432,8 @@ public class OprtnAplctAnncmMngController {
vEPrcsDetailVO.setAtchFileId(s_scholSealAtchFileId);
}else {
//atchFileId = this.fileValCheckNdbUpdate(multiRequest, modelAndView, checkFileUtil.getS_exts(), i_limit_size, i_file_limit, atchFileId); //EXT, MB size and ea
s_scholSealAtchFileId = checkFileUtil.fileValCheckNdbUpdate(
multiRequest, modelAndView
s_scholSealAtchFileId = checkFileUtil.fileValCheckNdbUpdateCustom(
files_ori, modelAndView
, "ATCH_"
, s_file_exts
, i_limit_size
@ -391,6 +444,29 @@ public class OprtnAplctAnncmMngController {
if ("ERROR".equals(s_scholSealAtchFileId)) return modelAndView;
if ("".equals(cnAtchFileId)) {
cnAtchFileId = checkFileUtil.fileValCheckNdbInsertCustom(
files_cn, modelAndView
, "ATCH_"
, s_file_exts_cn
, i_limit_size_cn
, i_file_limit_cn
); //EXT, MB size and ea
vEPrcsDetailVO.setCnAtchFileId(cnAtchFileId);
}else {
cnAtchFileId = checkFileUtil.fileValCheckNdbUpdateCustom(
files_cn, modelAndView
, "ATCH_"
, s_file_exts_cn
, i_limit_size_cn
, i_file_limit_cn
, cnAtchFileId
); //EXT, MB size and ea
}
if ("ERROR".equals(cnAtchFileId)) return modelAndView;
//step3.파일 처리====================================
@ -459,23 +535,54 @@ public class OprtnAplctAnncmMngController {
int i_file_limit = checkFileUtil.getLimitCount(request); // file count
int i_limit_size = checkFileUtil.getLimitSize(request); // file MB
String s_file_exts = checkFileUtil.getS_exts(); // file exts
int i_file_limit_cn = 50; // file count
int i_limit_size_cn = 100; // file MB
String s_file_exts_cn = "pdf|txt"; // file exts
final Map<String, MultipartFile> files = multiRequest.getFileMap();
Map<String, MultipartFile> files_ori = new HashMap<String, MultipartFile>();
Map<String, MultipartFile> files_cn = new HashMap<String, MultipartFile>();
files.forEach((k,v) -> {
if( k.contains("file_cn") || k.contains("file_temp_cn")) {
files_cn.put(k, v);
}else {
files_ori.put(k, v);
}
});
String s_scholSealAtchFileId = checkFileUtil.fileValCheckNdbInsert(
multiRequest, modelAndView
String s_scholSealAtchFileId = checkFileUtil.fileValCheckNdbInsertCustom(
files_ori, modelAndView
, "ATCH_" //file_name_prefix
, s_file_exts
, i_limit_size
, i_file_limit
, s_file_exts_cn
, i_limit_size_cn
, i_file_limit_cn
); //EXT, MB size and ea
if ("ERROR".equals(s_scholSealAtchFileId)) return modelAndView;
String s_cnAtchFileId = checkFileUtil.fileValCheckNdbInsertCustom(
files_cn, modelAndView
, "ATCH_" //file_name_prefix
, s_file_exts_cn
, i_limit_size_cn
, i_file_limit_cn
); //EXT, MB size and ea
if ("ERROR".equals(s_cnAtchFileId)) return modelAndView;
//step2.파일 처리====================================
//번호 생성 디비 생성해주기
String prcsAplctPrdOrd = prcsGnrService.getNextStringId(); // 고유ID
// String prcsAplctPrdOrd = prcsGnrService.getNextStringId(); // 고유ID
// String prcsAplctPrdOrd = prcsAplctGnrService.getNextStringId(); // 고유ID
String prcsAplctPrdOrd = prcsAplctPrdGnrService.getNextStringId(); // 고유ID
vEPrcsDetailVO.setAtchFileId(s_scholSealAtchFileId); //학교장직인 첨부파일
vEPrcsDetailVO.setCnAtchFileId(s_cnAtchFileId); //안내 첨부파일
vEPrcsDetailVO.setPrcsAplctPrdOrd(prcsAplctPrdOrd);
System.out.println("vEPrcsDetailVO.getStrtPnttm()");

View File

@ -38,6 +38,8 @@
,edu_strt_pnttm
,edu_ddln_pnttm
,edu_place
,dprtm_nm
,cn_atch_file_id
</sql>
<!-- 조회용 공통 컬럼 명 -->
@ -73,7 +75,8 @@
,a.edu_strt_pnttm AS eduStrtPnttm
,a.edu_ddln_pnttm AS eduDdlnPnttm
,a.dprtm_nm AS dprtmNm
,a.cn_atch_file_id AS cnAtchFileId
</sql>
@ -109,7 +112,9 @@
,#ddlnCd#
,#eduStrtPnttm#
,#eduDdlnPnttm#
,#eduPlace#
,#eduPlace#
,#dprtmNm#
,#cnAtchFileId#
)
</insert>
@ -224,6 +229,12 @@
</isNotEmpty>
<isNotEmpty property="eduPlace">
, edu_place = #eduPlace#
</isNotEmpty>
<isNotEmpty property="dprtmNm">
, dprtm_nm = #dprtmNm#
</isNotEmpty>
<isNotEmpty property="cnAtchFileId">
, cn_atch_file_id = #cnAtchFileId#
</isNotEmpty>
WHERE

View File

@ -0,0 +1,139 @@
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%
/**
* @Class Name : EgovFileList.jsp
* @Description : 파일 목록화면
* @Modification Information
* @
* @ 수정일 수정자 수정내용
* @ ---------- ------ ---------------------------
* @ 2009.03.26 이삼섭 최초 생성
* @ 2011.07.20 옥찬우 <Input> Tag id속성 추가( Line : 68 )
*
* @author 공통서비스 개발팀 이삼섭
* @since 2009.03.26
* @version 1.0
* @see
*
*/
%>
<!-- link href="<c:url value='/css/egovframework/com/com.css' />" rel="stylesheet" type="text/css"-->
<script type="text/javascript">
function fn_egov_downFile(atchFileId, fileSn){
window.open("<c:url value='/cmm/fms/FileDown.do?atchFileId="+atchFileId+"&fileSn="+fileSn+"'/>");
}
function fn_egov_deleteFile(atchFileId, fileSn, delTrName) {
if(!confirm("<spring:message code="common.delete.msg" />")) return;
var forms;
var form;
forms = document.getElementsByTagName("form");
for (var i = 0; i < forms.length; i++) {
if (typeof(forms[i].atchFileId) != "undefined" &&
typeof(forms[i].fileSn) != "undefined" &&
typeof(forms[i].fileListCnt) != "undefined") {
form = forms[i];
}
}
var newForm = document.createElement( 'form' );
var newfileSn = document.createElement( 'input' );
var newAtchFileId = document.createElement( 'input' );
newfileSn.setAttribute("name","fileSn");
newAtchFileId.setAttribute("name","atchFileId");
document.body.appendChild(newForm);
newfileSn.setAttribute("type","hidden");
newAtchFileId.setAttribute("type","hidden");
newfileSn.setAttribute("value",fileSn);
newAtchFileId.setAttribute("value",atchFileId);
newForm.appendChild( newfileSn );
newForm.appendChild( newAtchFileId );
//form = document.forms[0];
//form.atchFileId.value = atchFileId;
//form.fileSn.value = fileSn;
newForm.method = "post";
newForm.action = "<c:url value='/cmm/fms/deleteFileInfs.do'/>";
newForm.target = "iframe_egov_file_delete"
newForm.submit();
//console.log('del submit!!');
var objDelTr = document.getElementById(delTrName);
objDelTr.parentNode.removeChild(objDelTr);
fn_egov_multi_selector_update_delete();
//console.log('egov_file_view_table delete!!');
// 글 수정 시에 파일삭제 시 기존 첨부파일 -1
if(document.board !=null){
if(document.board.atchFileCnt) {
document.board.atchFileCnt.value = document.board.atchFileCnt.value - 1;
}
}else if(document.writeForm !=null){
//if(document.writeForm.atchFileCnt) {
// document.writeForm.atchFileCnt.value = document.writeForm.atchFileCnt.value - 1;
//}
}
<c:if test="${isImgView}">
// img_view 삭제
var objDelTr = document.getElementById("tr_" + fileSn);
objDelTr.parentNode.removeChild(objDelTr);
</c:if>
}
function fn_egov_check_file(flag) {
if (flag=="Y") {
document.getElementById('file_upload_posbl').style.display = "block";
document.getElementById('file_upload_imposbl').style.display = "none";
} else {
document.getElementById('file_upload_posbl').style.display = "none";
document.getElementById('file_upload_imposbl').style.display = "block";
}
}
function fn_egov_pdfView(atchFileId, fileSn, atchFileType){
//window.open("<c:url value='/cmm/fms/pdfView.do?atchFileId="+atchFileId+"&fileSn="+fileSn+"&atchFileType="+atchFileType'/>");
window.open("<c:url value='/cmm/fms/attachFilePreview.do?atchFileId="+atchFileId+"&fileSn="+fileSn+"&atchFileType="+atchFileType+"'/>");
}
</script>
<input type="hidden" name="atchFileId" value="${atchFileId}">
<input type="hidden" name="fileSn" >
<input type="hidden" name="fileListCnt" id="fileListCnt" value="${fileListCnt}">
<c:set var="fileCount" value="${fn:length(fileList) }" />
<ul>
<c:forEach var="fileVO" items="${fileList}" varStatus="status">
<tr id="egov_file_view_table_tr_${status.count}" style="border-bottom: 0px;">
<li>
<a href="javascript:fn_egov_downFile('<c:out value="${fileVO.atchFileId}"/>','<c:out value="${fileVO.fileSn}"/>')" class="fileName" title="다운로드">
<c:out value="${fileVO.orignlFileNm}"/>&nbsp;<%-- [<c:out value="${fileVO.fileMg}"/>&nbsp;byte] --%>
</a>
<c:if test="${not empty fileVO.fileExtsn}"><!-- pdf미리보기 -->
<c:if test="${fileVO.fileExtsn eq 'jpg'
or fileVO.fileExtsn eq 'pdf'
}">
<%-- <a href="#" onclick="fn_egov_pdfView('<c:out value="${fileVO.atchFileId}"/>','<c:out value="${fileVO.fileSn}"/>' , '<c:out value="${fileVO.fileExtsn}"/>' )"> --%>
<!-- pdf 보기 -->
<!-- </a> -->
<button type="button" class="btnType06" onclick="fn_egov_pdfView('<c:out value="${fileVO.atchFileId}"/>','<c:out value="${fileVO.fileSn}"/>' , '<c:out value="${fileVO.fileExtsn}"/>' )" title="파일 다운로드">pdf 보기</button>
</c:if>
</c:if>
</li>
</tr>
</c:forEach>
<c:if test="${fn:length(fileList) == 0}">
</c:if>
</ul>

View File

@ -338,7 +338,26 @@
<c:param name="pdf_view" value="Y" />
</c:import>
</td>
</tr>
</tr>
<tr>
<th scope="row">
<p>작성자</p>
</th>
<td>
<c:out value="${info.dprtmNm}" />
</td>
</tr>
<tr>
<th scope="row">
<p>안내첨부파일</p>
</th>
<td>
<c:import url="/cmm/fms/selectBBSFileInfs.do" charEncoding="utf-8">
<c:param name="param_atchFileId" value="${info.cnAtchFileId}" />
<c:param name="pdf_view" value="Y" />
</c:import>
</td>
</tr>
<%-- <tr>
<th scope="row">
<p>안내내용</p>

View File

@ -9,6 +9,7 @@
<%@ taglib prefix="kc" uri="/WEB-INF/tlds/kcc_tld.tld"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %>
<%@ taglib prefix="ckeditor" uri="http://ckeditor.com"%>
<%
/**
* @Class Name : oprtnAplctAnncmMngReg.jsp
@ -32,9 +33,12 @@
<script type="text/javascript">
$(document).ready(function() {
//파일첨부관련 설정들===============================================
$(".btn_type01").on('click', function(){
$("#filebutton").on('click', function(){
$("#file_temp").click();
});
$("#filebutton_cn").on('click', function(){
$("#file_temp_cn").click();
});
//파일첨부관련 설정들===============================================
});
@ -141,6 +145,9 @@
}
function fncSave(){
//ckediter
CKEDITOR.instances.anncmCn.updateElement();
if($("#title").val() == ""){
alert("제목을 입력해주세요.");
@ -191,6 +198,10 @@
if (obj) data.append("file"+idx, obj.fileObj);
});
_fileForm2_cn.forEach(function(obj, idx) {
if (obj) data.append("file_cn"+idx, obj.fileObj);
});
if(confirm("저장하시겠습니까?")){
var url = "${pageContext.request.contextPath}/kccadr/oprtn/cpyrgExprnClsrm/oprtnAplctAnncmMngRegAjax.do";
@ -261,6 +272,7 @@
}
</script>
<script type="text/javascript" src="<c:url value='/js/web_common_custom.js'/>"></script>
</head>
<body>
@ -594,6 +606,105 @@
</select>
</td>
</tr>
<tr>
<th scope="row">
<p class="req_text"><span>필수입력 항목</span>*</p>
<p>담당부서</p>
</th>
<td>
<input type="text" name="dprtmNm" id="dprtmNm" value="">
</td>
</tr>
<tr>
<th scope="row">
<p class="req_text"><span>필수입력 항목</span>*</p>
<p>내용</p>
</th>
<td>
<textarea id="anncmCn" name="anncmCn" cols="500" rows="20">
</textarea>
<ckeditor:replace replace="anncmCn" basePath="${pageContext.request.contextPath}/html/egovframework/com/cmm/utl/ckeditor/" />
<form:errors path="anncmCn" />
</td>
</tr>
<!-- 안내첨부파일 start -->
<tr>
<th scope="row">
<p class="req_text"><span>필수입력 항목</span>*</p>
<p>안내첨부파일</p>
</th>
<td class="upload_area_cn">
<input type="file" id="file_temp_cn" name="file_temp_cn" class="uploadFile" style="display:none"/>
<button type="button" id="filebutton_cn" class="btn_type01">파일 첨부하기</button>
<div class="file_wrap file_upload_box_cn no_img_box_cn">
<table class="tbType02">
<caption>첨부파일 리스트 : 파일명, 종류, 크기, 삭제</caption>
<colgroup>
<col style="width: 60%;">
<col style="width: auto;">
<col style="width: 20%;">
<col style="width: 10%;">
</colgroup>
<thead>
<th scope="col">파일 명</th>
<th scope="col">종류</th>
<th scope="col">크기</th>
<th scope="col">삭제</th>
</thead>
<tbody class="tb_file_before">
<tr>
<td colspan="4">
<p>첨부하실 파일을 <span>마우스로 끌어서</span> 넣어주세요.</p>
</td>
</tr>
</tbody>
</table>
</div>
<div class="file_wrap fileAfter_cn file_list_div_cn">
<table class="tbType02">
<caption>첨부파일 리스트 : 파일명, 종류, 크기, 삭제</caption>
<colgroup>
<col style="width: 60%">
<col style="width: 10%">
<col style="width: 20%">
<col style="width: 10%">
</colgroup>
<thead>
<th scope="col">파일 명</th>
<th scope="col">종류</th>
<th scope="col">크기</th>
<th scope="col">삭제</th>
</thead>
<tbody id="tbody_fiielist_cn" class="tb_file_after">
<c:forEach var="fileList_cn" items="${fileList_cn}" varStatus="status">
<tr class="item_<c:out value='${fileList_cn.atchFileId}' />_<c:out value='${fileList_cn.fileSn}' />_cn uploaded_obj_cn">
<input type="hidden" name="fileSize_cn" class="item_file_size_cn" value="${fileList_cn.fileSize}">
<td class="td_filename_cn">
<span class="file_name_text_cn"><c:out value='${fileList_cn.orignlFileNm}' /></span>
</td>
<td class="td_filesort_cn">
<span class="file_filesort_text_cn" value="<c:out value="${fileList_cn.fileExtsn}"/>"><c:out value="${fileList_cn.fileExtsn}"/></span>
</td>
<td class="td_filesize_cn">
<span class="file_size_text_cn" value="<c:out value="${fileList_cn.fileMg}"/>"><c:out value="${fileList_cn.fileMg}"/></span>
</td>
<td>
<button type="button" class="btn_del" onclick="delAtchPhotoFile_cn('<c:out value='${fileList_cn.atchFileId}' />', '<c:out value='${fileList_cn.fileSn}' />'); return false;" title="파일삭제"><i></i></button>
</td>
</tr>
</c:forEach>
</tbody>
</table>
</div>
</td>
</tr>
<!-- 안내첨부파일 end -->
</tbody>

View File

@ -9,6 +9,7 @@
<%@ taglib prefix="kc" uri="/WEB-INF/tlds/kcc_tld.tld"%>
<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="ckeditor" uri="http://ckeditor.com"%>
<%
/**
* @Class Name : oprtnAplctAnncmMngUpdate.jsp
@ -32,11 +33,15 @@
<script type="text/javascript">
$(document).ready(function() {
//파일첨부관련 설정들===============================================
$(".btn_type01").on('click', function(){
$("#filebutton").on('click', function(){
$("#file_temp").click();
});
$("#filebutton_cn").on('click', function(){
$("#file_temp_cn").click();
});
//파일첨부관련 설정들===============================================
});
@ -113,6 +118,8 @@
}
function fncSave(){
//ckediter
CKEDITOR.instances.anncmCn.updateElement();
if($("#title").val() == ""){
alert("제목을 입력해주세요.");
@ -163,6 +170,10 @@
if (obj) data.append("file"+idx, obj.fileObj);
});
_fileForm2_cn.forEach(function(obj, idx) {
if (obj) data.append("file_cn"+idx, obj.fileObj);
});
if(confirm("저장하시겠습니까?")){
var url = "${pageContext.request.contextPath}/kccadr/oprtn/cpyrgExprnClsrm/oprtnAplctAnncmMngMdfyAjax.do";
@ -183,6 +194,8 @@
if(returnData.result == "success"){
alert("저장되었습니다.");
fncGoList();
}else{
alert(returnData.message);
}
},
error:function(request , status, error){
@ -233,6 +246,7 @@
}
</script>
<script type="text/javascript" src="<c:url value='/js/web_common_custom.js'/>"></script>
</head>
<body>
@ -250,6 +264,7 @@
<input type="hidden" name="lctrDivCd" value="30"/>
<input type="hidden" name="prcsAplctPrdOrd" value="<c:out value='${info.prcsAplctPrdOrd}' />" />
<input type="hidden" name="atchFileId" value="<c:out value='${info.atchFileId}' />" />
<input type="hidden" name="cnAtchFileId" value="<c:out value='${info.cnAtchFileId}' />" />
<input type="hidden" name="strtPnttm"/>
<input type="hidden" name="endPnttm"/>
@ -588,6 +603,114 @@
</select>
</td>
</tr>
<tr>
<th scope="row">
<p class="req_text"><span>필수입력 항목</span>*</p>
<p>담당부서</p>
</th>
<td>
<input type="text" name="dprtmNm" id="dprtmNm" value="<c:out value='${info.dprtmNm}'/>">
</td>
</tr>
<tr>
<th scope="row">
<p class="req_text"><span>필수입력 항목</span>*</p>
<p>내용</p>
</th>
<td>
<textarea id="anncmCn" name="anncmCn" cols="500" rows="20">
<c:out value="${info.anncmCn}" escapeXml="false" />
</textarea>
<ckeditor:replace replace="anncmCn" basePath="${pageContext.request.contextPath}/html/egovframework/com/cmm/utl/ckeditor/" />
<form:errors path="anncmCn" />
</td>
</tr>
<!-- 안내첨부파일 start -->
<tr>
<th scope="row">
<p class="req_text"><span>필수입력 항목</span>*</p>
<p>안내첨부파일</p>
</th>
<td class="upload_area_cn">
<input type="file" id="file_temp_cn" name="file_temp_cn" class="uploadFile" style="display:none"/>
<button type="button" id="filebutton_cn" class="btn_type01">파일 첨부하기</button>
<div class="file_wrap file_upload_box_cn no_img_box_cn">
<table class="tbType02">
<caption>첨부파일 리스트 : 파일명, 종류, 크기, 삭제</caption>
<colgroup>
<col style="width: 60%;">
<col style="width: auto;">
<col style="width: 20%;">
<col style="width: 10%;">
</colgroup>
<thead>
<th scope="col">파일 명</th>
<th scope="col">종류</th>
<th scope="col">크기</th>
<th scope="col">삭제</th>
</thead>
<tbody class="tb_file_before">
<tr>
<td colspan="4">
<p>첨부하실 파일을 <span>마우스로 끌어서</span> 넣어주세요.</p>
</td>
</tr>
</tbody>
</table>
</div>
<div class="file_wrap fileAfter_cn file_list_div_cn">
<table class="tbType02">
<caption>첨부파일 리스트 : 파일명, 종류, 크기, 삭제</caption>
<colgroup>
<col style="width: 60%">
<col style="width: 10%">
<col style="width: 20%">
<col style="width: 10%">
</colgroup>
<thead>
<th scope="col">파일 명</th>
<th scope="col">종류</th>
<th scope="col">크기</th>
<th scope="col">삭제</th>
</thead>
<tbody id="tbody_fiielist_cn" class="tb_file_after">
<c:forEach var="fileList_cn" items="${fileList_cn}" varStatus="status">
<tr class="item_<c:out value='${fileList_cn.atchFileId}' />_<c:out value='${fileList_cn.fileSn}' />_cn uploaded_obj_cn">
<input type="hidden" name="fileSize_cn" class="item_file_size_cn" value="${fileList_cn.fileSize}">
<td class="td_filename_cn">
<span class="file_name_text_cn"><c:out value='${fileList_cn.orignlFileNm}' /></span>
</td>
<td class="td_filesort_cn">
<span class="file_filesort_text_cn" value="<c:out value="${fileList_cn.fileExtsn}"/>"><c:out value="${fileList_cn.fileExtsn}"/></span>
</td>
<td class="td_filesize_cn">
<span class="file_size_text_cn" value="<c:out value="${fileList_cn.fileMg}"/>"><c:out value="${fileList_cn.fileMg}"/></span>
</td>
<td>
<button type="button" class="btn_del" onclick="delAtchPhotoFile_cn('<c:out value='${fileList_cn.atchFileId}' />', '<c:out value='${fileList_cn.fileSn}' />'); return false;" title="파일삭제"><i></i></button>
</td>
</tr>
</c:forEach>
</tbody>
</table>
</div>
</td>
</tr>
<!-- 안내첨부파일 end -->
</tbody>

View File

@ -5,6 +5,9 @@
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%pageContext.setAttribute("crlf", "\r\n"); %>
<%pageContext.setAttribute("crlt", "&lt;"); %>
<%pageContext.setAttribute("crgt", "&gt;"); %>
<title>운영신청 목록 > 저작권 체험교실 > 한국저작권위원회 저작권 교육 시스템</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
@ -81,316 +84,60 @@
<div class="cont_tit">
<h2>운영신청 안내</h2>
</div>
<div class="tb_tit01">
<div class="tb_tit01_left">
<p>사업개요</p>
<p>제목</p>
</div>
</div>
<div class="summary_list">
<dl>
<dt>· 사업내용</dt>
<dd>학교 현장의 교사가 초·중 ·고등학생을 대상으로 체험활동 중심의 저작권 교육을 실시하도록 지원함으로써 청소년의 저작권 인식 제고 도모</dd>
</dl>
<dl>
<dt>· 운영 지원 학급</dt>
<dd>
전국 초·중·고등학교 350개교
<ul>
<li>- 학교 교사가 직접 1학교당 1개 학급 이상 또는 동아리 등을 대상으로 저작권 체험교실을 운영할 수 있도록 지원</li>
</ul>
<div class="info">* 여러 명의 교사가 함께 체험교실 운영 불가</div>
</dd>
</dl>
<dl>
<dt>· 운영 시간</dt>
<dd>
총 6차시(교시, 차시 당 40~50분)
<ul>
<li>- 대상 학급 또는 동아리를 기준으로 6차시 이상 교육 실시함</li>
<li>- 담당교사의 재량으로 자율 편성(예 : 6차시씩 1일, 2차시씩 3일 등)하되, 1일 최대 2차시까지만 운영 가능</li>
</ul>
</dd>
</dl>
<dl>
<dt>· 교육 주체</dt>
<dd>
체험 교실 운영 대상으로 선정된 학교의 담당 교사 1인
<ul>
<li>- 운영교사에게는 저작권 교육내용 연구 및 교수학습법 적용에 대한 외부 강의료 지급</li>
</ul>
<div class="info">* 1차시 당 15만원(최대 6차시) 지급. 단, 결과보고서 제출자에 한함</div>
</dd>
</dl>
<dl>
<dt>· 교육 내용</dt>
<dd>
<ul>
<li>- 체험 활동 중심 저작권 교육 프로그램 활용을 통한 저작권 개념, 올바른 저작물 이용방법, 저작권 문제 해결 방법 등 교육</li>
<!-- <li>- 청소년 저작권 인식 및 의식 제고에 맞는 교육 가이드 제공(첨부 4)</li> -->
</ul>
<div class="info">* 원활한 교육 운영을 위해 교육 교재[첨부4]를 지원하오나, 교사 재량에 따라 저작권 교육 연구내용 및 창의적 체험 활동 등 자유롭게 구성 가능</div>
<c:out value="${info.title}"/>
</dd>
</dl>
</div>
<div class="tb_tit01">
<div class="tb_tit01_left">
<p>교육 신청</p>
<p>부서</p>
</div>
</div>
<div class="summary_list summary_list02">
<div class="summary_list">
<dl>
<dt>· 신청방법</dt>
<dd>신청서(첨부 1)를 작성하여 학교장 직인 날인 후 위원회 홈페이지(www.copyright.or.kr/offedu)에서 개별 접수</dd>
<dd>
<ul>
<li>- 신청기간 : 2023. 2. 27.(월) ~ 3. 6.(월), 9:00 ~ 18:00</li>
<div class="info">* 세부 신청 절차는 [첨부] 참조</div>
</ul>
</dd>
</dl>
<dl>
<dt>· 운영교사 인원</dt>
<dd>전국 초·중·고 교사 350명 선정</dd>
<dd>
<ul>
<li>
- 체험교실 운영 교사 선정 기준
<ul>
<li>· 지역균형 및 초·중등 학급 수 비율 고려</li>
<li>· 운영 교사 전체의 50% 수준으로 신규 운영교사 선정 고려</li>
<li>· 위원회 주관의 저작권 오프라인 교원연수 이수자 우선 고려</li>
<li><div class="info">* 2022.1.1. 이후 특수 분야 교원 연수(교원을 위한 저작권법 입문과정, 학교 교육을 위한 저작권법 실전과정) 이수자</div></li>
<li>· 위원회 공동 주관, KERIS 협업과정 오프라인 교원연수 이수자 우선 고려</li>
<li><div class="info">* 2021.8. 교육기관 저작권 전문가 양성 연수「기초과정」이수자, 2022.8. 교육기관 저작권 전문가 양성 연수「중급과정」이수자</div></li>
<li>· 교육 대상인원이 15명 미만인 경우 선정에서 제외하며, 도서벽지 또는 인구감소 지역의 경우에는 교육 대상인원과 관계없이 우선 선정 고려</li>
<li>· 전년도 포기 교사 및 불성실 운영 교사(기존 보고 내용 답습 등)는 당해연도 참여 제한</li>
<li>· 해당 학급 및 지역 경쟁률이 높을 경우 3년 연속 또는 5회 이상 운영 교사는 차순위로 배정될 수 있음</li>
</ul>
</li>
</ul>
<c:out value="${info.dprtmNm}"/>
</dd>
</dl>
</div>
<div class="tb_tit01">
<div class="tb_tit01_left">
<p>교육 운영</p>
<p>등록일</p>
</div>
</div>
<div class="summary_list summary_list02">
<div class="summary_list">
<dl>
<dt>· 사전 연수</dt>
<dd>
저작권 체험교실 선정 교사를 대상으로 저작권 기본 이론 및 프로그램 운영 전반에 대한 사전 안내 등 연수 실시
<ul>
<li>- 연수시간: 각 일자별 09:00~18:00(예정)</li>
</ul>
<table style="text-align: center; margin: 10px 0;">
<caption>저작권 체험교실 운영 교사 대상 사전 연수관련 구분, 필수교육, 교육 미이수시를 제공하는 표</caption>
<colgroup>
<col style="width:10%;">
<col style="width:20%;">
<col style="width:20%;">
<col style="width:20%;">
<col style="width:auto;">
</colgroup>
<thead>
<tr>
<th scope="col"><span>구분</span></th>
<th scope="col" style="border-radius: 0;"><span>3.25.(토)</span></th>
<th scope="col" style="border-radius: 0;"><span>4.1.(토)</span></th>
<th scope="col" style="border-radius: 0;"><span>4.8.(토)</span></th>
<th scope="col">참고</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row"><span>참여대상</span></th>
<td>(신규)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>초등 교사</td>
<td>(신규)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>중·고등 교사</td>
<td>(신규)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>초·중·고등 교사</td>
<td>참여 대상에 맞춰 교육 프로그램 설계<br/>단, 사전 협의시 일정 변경 가능&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
</tr>
</tbody>
</table>
</dd>
<dd>
<ul>
<li>- (방법) 비대면 온라인 교육</li>
<li>【 체험교실 운영 교사 필수 교육 안내 】</li>
</ul>
<table style="text-align: center; margin: 10px 0;">
<caption>저작권 체험교실 운영 교사 대상 사전 연수관련 구분, 필수교육, 교육 미이수시를 제공하는 표</caption>
<colgroup>
<col style="width:20%;">
<col style="width:50%;">
<col style="width:auto;">
</colgroup>
<thead>
<tr>
<th scope="col"><span>구분</span></th>
<th scope="col" style="border-radius: 0;">필수교육</th>
<th scope="col">비고</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row"><span>신규 교사</span></th>
<td style="text-align:left;">- 사전 연수(연수일)
<br/>- 온라인 교육(23년 3월~결과보고 제출일)
<br/>&nbsp;&nbsp;‣‘저작권 e-배움터’의 교원 대상 교육(15학점 또는 30학점)
</td>
<td>필수 교육 2개 모두 이수</td>
</tr>
<tr>
<th scope="row"><span>기존 교사</span></th>
<td style="text-align:left;">- 사전 연수(연수일)
<br/>- 온라인 교육(23년 3월~결과보고 제출일)
<br/>&nbsp;&nbsp;‣‘저작권 e-배움터’의 교원 대상 교육(15학점 또는 30학점)
</td>
<td>필수 교육 2개 중 하나 이수</td>
</tr>
</tbody>
</table>
<div class="info">* 필수교육 미이수시 선정 취소</div>
</dd>
</dl>
<dl>
<dt>· 저작권 체험교실 대상 지원</dt>
<dd>
<ul>
<li>- 저작권 체험교실 운영교사 대상 사전 연수 실시 (3회)</li>
<li>- 청소년 저작권 교육용 교재(초·중등 각 1종 및 교사용 지도서)</li>
<li>- 기타 청소년 저작권 교육·홍보 자료 수시 제공</li>
</ul>
</dd>
</dl>
<dl>
<dt>· 결과 제출</dt>
<dd>저작권 체험교실 운영 교사는 반드시 결과보고서를 제출해야 하며, 본 자료는 강의료 지급 근거이자 우수 운영 교사 선정을 위한 평가 대상으로 활용됨
<ul>
<li>- 2023. 10. 13.(금)까지 교육 결과보고서를 위원회로 제출</li>
</ul>
</dd>
</dl>
<dl>
<dt>· 우수 운영 교사 선정</dt>
<dd>저작권 체험교실 운영 교사가 제출한 결과보고서를 토대로 우수 운영 교사를 선정하여 포상 실시
<table style="text-align: center; margin: 10px 0;">
<caption>저작권 체험교실 운영 교사 대상 사전 연수관련 구분, 필수교육, 교육 미이수시를 제공하는 표</caption>
<colgroup>
<col style="width:10%;">
<col style="width:30%;">
<col style="width:45%;">
<col style="width:auto;">
</colgroup>
<thead>
<tr>
<th scope="col"><span>구분</span></th>
<th scope="col" style="border-radius: 0;"><span>대상자 및 인원</span></th>
<th scope="col" style="border-radius: 0;"><span>상세내역</span></th>
<th scope="col">총계(천원)</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row"><span>최우수</span></th>
<td>초‧중‧고 교사 중 1명</td>
<td style="text-align:left;">- (교사) 상장 및 상금 50만원
<br/>- (참여학생) 50만원 상당의 기념품</td>
<td>1,000</td>
</tr>
<tr>
<th scope="row"><span>우수상</span></th>
<td>초‧중‧고 교사 3명</td>
<td style="text-align:left;">- (교사) 상장 및 상금 30만원
<br/>- (참여학생) 50만원 상당의 기념품</td>
<td>2,400</td>
</tr>
<tr>
<th scope="row"><span>장려상</span></th>
<td>초‧중‧고 교사 5명</td>
<td style="text-align:left;">- (교사) 상장 및 상금 20만원
<br/>- (참여학생) 50만원 상당의 기념품</td>
<td>3,500</td>
</tr>
<tr>
<th scope="row" rowspan="2"><span>특별상</span></th>
<td>으뜸상 1명</td>
<td style="text-align:left;">- (교사) 상장 및 부상 50만원</td>
<td>500</td>
</tr>
<tr>
<td>버금상 2명</td>
<td style="text-align:left;">- (교사) 상장 및 부상 30만원</td>
<td>600</td>
</tr>
<thead>
<tr>
<th scope="col"><span>합계</span></th>
<th scope="col" style="border-radius: 0;"><span>총12명</span></th>
<th scope="col" style="border-radius: 0;"><span>-</span></th>
<th scope="col">8,000</th>
</tr>
</thead>
</tbody>
</table>
<div class="info">* 상기 포상 내역은 위원회 사정에 따라 변경될 수 있음
<br/>* 체험교실 운영 과정에서 본인만의 교육자료(교안, 교보재 등)를 만든 교사 중 우수 교육자료 제작‧활용 교사에게 특별상 수여</div>
</dd>
</dl>
<dl>
<dt>· 의견청취</dt>
<dd>* 체험교실 운영 학급 현장 방문 또는 의견 청취 회의 개최</dd>
</dl>
<dl>
<dt>· 추진일정</dt>
<dd>
<table>
<caption>추진일정관련 구분, 상세일정을 제공하는 표</caption>
<colgroup>
<col style="width:35%;">
<col style="width:auto;">
</colgroup>
<thead>
<tr>
<th scope="col"><span>구분</span></th>
<th scope="col">상세일정</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row"><span>체험교실 신청서 접수</span></th>
<td>2월 27일(월)~3월 6일(월), 7일간</td>
</tr>
<tr>
<th scope="row"><span>운영교사 선정 및 학교 통보</span></th>
<td>3월 17일(금), 예정</td>
</tr>
<tr>
<th scope="row"><span>운영교사 사전 연수<br><span style="font-size: 14px; text-align: left; display: inline-block;">* 신규운영 교사는 2개 그룹(초/중등)으로 나누어 진행</span></span></th>
<td>3월 25일(토): 신규 초등 교사 <br>4월 1일(토): 신규 중․고등 교사<br>4월 8일(토): 기존 교사 </td>
</tr>
<tr>
<th scope="row"><span>결과보고서 제출 마감</span></th>
<td>10월 13일(금)</td>
</tr>
<tr>
<th scope="row"><span>우수학급 선정 및 포상</span></th>
<td>11월~12월</td>
</tr>
</tbody>
</table>
<div class="info" style="margin-bottom: 10px;">* 상기 일정은 위원회 내부 사정에 따라 변경될 수 있음</div>
<c:out value="${info.frstRegistPnttm}"/>
</dd>
</dl>
</div>
<div class="tb_tit01">
<div class="tb_tit01_left">
<p>첨부파일</p>
</div>
</div>
<div class="summary_list">
<dl>
<dd>
<c:import url="/cmm/fms/selectBBSFileInfsCustom.do" charEncoding="utf-8">
<c:param name="param_atchFileId" value="${info.cnAtchFileId}" />
<c:param name="pdf_view" value="Y" />
</c:import>
</dd>
</dl>
</div>
<c:out value="${fn:replace(fn:replace(fn:replace(info.anncmCn, crlt , '<'), crgt , '>'), crlf , '<br/>')}" escapeXml="false"/>
<div class="btn_wrap btn_layout01">
<div class="btn_center" style="width: 100%;">
@ -403,5 +150,3 @@
</div>
<!--// content -->

View File

@ -0,0 +1,407 @@
<%@ page 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="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<title>운영신청 목록 > 저작권 체험교실 > 한국저작권위원회 저작권 교육 시스템</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<script type="text/javaScript" language="javascript">
function fncGoList(){
location.href= "<c:url value='/web/ve/aplct/cpyrgExprnClsrm/exprnClsrmInfo/exprnClsrmAplctList.do'/>";
}
function fncScholList(){
location.href= "<c:url value='/web/ve/aplct/cpyrgExprnClsrm/exprnClsrmInfo/exprnClsrmAplctList.do'/>";
}
function openPop(){
/* if(!checkAplctPsbl()) return; */
if(${detailVO == null}){
alert("신청기간이 아닙니다.");
return false;
}
commonPopLayeropen(
"${pageContext.request.contextPath}/web/ve/aplct/cpyrgExprnClsrm/exprnClsrmInfo/popup/cautionGuide.do"
, 730
, 677
, {}
, "Y"
, "cautionGuide"
);
}
function fn_egov_downFile(atchFileId, fileSn){
if(atchFileId ==''){
alert("신청기간이 아닙니다.");
return;
}
window.open("<c:url value='/cmm/fms/FileDown.do?atchFileId="+atchFileId+"&fileSn="+fileSn+"'/>");
}
function checkAplctPsbl() {
var flag = true;
$.ajax({
type:"POST",
url:"${pageContext.request.contextPath}/web/ve/aplct/cpyrgExprnClsrm/exprnClsrmInfo/eduAplctChkAjax.do",
data: {
"lctrDivCd":"30",
},
dataType:'json',
async: false,
success:function(returnData){
if(returnData.result == "fail"){
alert("운영신청기간이 아닙니다.");
flag = false;
return;
}
},
error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
if(!flag){
return false;
}
return true;
}
</script>
<!-- content -->
<div class="cont_wrap" id="sub">
<div class="cont_tit">
<h2>운영신청 안내</h2>
</div>
<div class="tb_tit01">
<div class="tb_tit01_left">
<p>사업개요</p>
</div>
</div>
<div class="summary_list">
<dl>
<dt>· 사업내용</dt>
<dd>학교 현장의 교사가 초·중 ·고등학생을 대상으로 체험활동 중심의 저작권 교육을 실시하도록 지원함으로써 청소년의 저작권 인식 제고 도모</dd>
</dl>
<dl>
<dt>· 운영 지원 학급</dt>
<dd>
전국 초·중·고등학교 350개교
<ul>
<li>- 학교 교사가 직접 1학교당 1개 학급 이상 또는 동아리 등을 대상으로 저작권 체험교실을 운영할 수 있도록 지원</li>
</ul>
<div class="info">* 여러 명의 교사가 함께 체험교실 운영 불가</div>
</dd>
</dl>
<dl>
<dt>· 운영 시간</dt>
<dd>
총 6차시(교시, 차시 당 40~50분)
<ul>
<li>- 대상 학급 또는 동아리를 기준으로 6차시 이상 교육 실시함</li>
<li>- 담당교사의 재량으로 자율 편성(예 : 6차시씩 1일, 2차시씩 3일 등)하되, 1일 최대 2차시까지만 운영 가능</li>
</ul>
</dd>
</dl>
<dl>
<dt>· 교육 주체</dt>
<dd>
체험 교실 운영 대상으로 선정된 학교의 담당 교사 1인
<ul>
<li>- 운영교사에게는 저작권 교육내용 연구 및 교수학습법 적용에 대한 외부 강의료 지급</li>
</ul>
<div class="info">* 1차시 당 15만원(최대 6차시) 지급. 단, 결과보고서 제출자에 한함</div>
</dd>
</dl>
<dl>
<dt>· 교육 내용</dt>
<dd>
<ul>
<li>- 체험 활동 중심 저작권 교육 프로그램 활용을 통한 저작권 개념, 올바른 저작물 이용방법, 저작권 문제 해결 방법 등 교육</li>
<!-- <li>- 청소년 저작권 인식 및 의식 제고에 맞는 교육 가이드 제공(첨부 4)</li> -->
</ul>
<div class="info">* 원활한 교육 운영을 위해 교육 교재[첨부4]를 지원하오나, 교사 재량에 따라 저작권 교육 연구내용 및 창의적 체험 활동 등 자유롭게 구성 가능</div>
</dd>
</dl>
</div>
<div class="tb_tit01">
<div class="tb_tit01_left">
<p>교육 신청</p>
</div>
</div>
<div class="summary_list summary_list02">
<dl>
<dt>· 신청방법</dt>
<dd>신청서(첨부 1)를 작성하여 학교장 직인 날인 후 위원회 홈페이지(www.copyright.or.kr/offedu)에서 개별 접수</dd>
<dd>
<ul>
<li>- 신청기간 : 2023. 2. 27.(월) ~ 3. 6.(월), 9:00 ~ 18:00</li>
<div class="info">* 세부 신청 절차는 [첨부] 참조</div>
</ul>
</dd>
</dl>
<dl>
<dt>· 운영교사 인원</dt>
<dd>전국 초·중·고 교사 350명 선정</dd>
<dd>
<ul>
<li>
- 체험교실 운영 교사 선정 기준
<ul>
<li>· 지역균형 및 초·중등 학급 수 비율 고려</li>
<li>· 운영 교사 전체의 50% 수준으로 신규 운영교사 선정 고려</li>
<li>· 위원회 주관의 저작권 오프라인 교원연수 이수자 우선 고려</li>
<li><div class="info">* 2022.1.1. 이후 특수 분야 교원 연수(교원을 위한 저작권법 입문과정, 학교 교육을 위한 저작권법 실전과정) 이수자</div></li>
<li>· 위원회 공동 주관, KERIS 협업과정 오프라인 교원연수 이수자 우선 고려</li>
<li><div class="info">* 2021.8. 교육기관 저작권 전문가 양성 연수「기초과정」이수자, 2022.8. 교육기관 저작권 전문가 양성 연수「중급과정」이수자</div></li>
<li>· 교육 대상인원이 15명 미만인 경우 선정에서 제외하며, 도서벽지 또는 인구감소 지역의 경우에는 교육 대상인원과 관계없이 우선 선정 고려</li>
<li>· 전년도 포기 교사 및 불성실 운영 교사(기존 보고 내용 답습 등)는 당해연도 참여 제한</li>
<li>· 해당 학급 및 지역 경쟁률이 높을 경우 3년 연속 또는 5회 이상 운영 교사는 차순위로 배정될 수 있음</li>
</ul>
</li>
</ul>
</dd>
</dl>
</div>
<div class="tb_tit01">
<div class="tb_tit01_left">
<p>교육 운영</p>
</div>
</div>
<div class="summary_list summary_list02">
<dl>
<dt>· 사전 연수</dt>
<dd>
저작권 체험교실 선정 교사를 대상으로 저작권 기본 이론 및 프로그램 운영 전반에 대한 사전 안내 등 연수 실시
<ul>
<li>- 연수시간: 각 일자별 09:00~18:00(예정)</li>
</ul>
<table style="text-align: center; margin: 10px 0;">
<caption>저작권 체험교실 운영 교사 대상 사전 연수관련 구분, 필수교육, 교육 미이수시를 제공하는 표</caption>
<colgroup>
<col style="width:10%;">
<col style="width:20%;">
<col style="width:20%;">
<col style="width:20%;">
<col style="width:auto;">
</colgroup>
<thead>
<tr>
<th scope="col"><span>구분</span></th>
<th scope="col" style="border-radius: 0;"><span>3.25.(토)</span></th>
<th scope="col" style="border-radius: 0;"><span>4.1.(토)</span></th>
<th scope="col" style="border-radius: 0;"><span>4.8.(토)</span></th>
<th scope="col">참고</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row"><span>참여대상</span></th>
<td>(신규)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>초등 교사</td>
<td>(신규)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>중·고등 교사</td>
<td>(신규)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>초·중·고등 교사</td>
<td>참여 대상에 맞춰 교육 프로그램 설계<br/>단, 사전 협의시 일정 변경 가능&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
</tr>
</tbody>
</table>
</dd>
<dd>
<ul>
<li>- (방법) 비대면 온라인 교육</li>
<li>【 체험교실 운영 교사 필수 교육 안내 】</li>
</ul>
<table style="text-align: center; margin: 10px 0;">
<caption>저작권 체험교실 운영 교사 대상 사전 연수관련 구분, 필수교육, 교육 미이수시를 제공하는 표</caption>
<colgroup>
<col style="width:20%;">
<col style="width:50%;">
<col style="width:auto;">
</colgroup>
<thead>
<tr>
<th scope="col"><span>구분</span></th>
<th scope="col" style="border-radius: 0;">필수교육</th>
<th scope="col">비고</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row"><span>신규 교사</span></th>
<td style="text-align:left;">- 사전 연수(연수일)
<br/>- 온라인 교육(23년 3월~결과보고 제출일)
<br/>&nbsp;&nbsp;‣‘저작권 e-배움터’의 교원 대상 교육(15학점 또는 30학점)
</td>
<td>필수 교육 2개 모두 이수</td>
</tr>
<tr>
<th scope="row"><span>기존 교사</span></th>
<td style="text-align:left;">- 사전 연수(연수일)
<br/>- 온라인 교육(23년 3월~결과보고 제출일)
<br/>&nbsp;&nbsp;‣‘저작권 e-배움터’의 교원 대상 교육(15학점 또는 30학점)
</td>
<td>필수 교육 2개 중 하나 이수</td>
</tr>
</tbody>
</table>
<div class="info">* 필수교육 미이수시 선정 취소</div>
</dd>
</dl>
<dl>
<dt>· 저작권 체험교실 대상 지원</dt>
<dd>
<ul>
<li>- 저작권 체험교실 운영교사 대상 사전 연수 실시 (3회)</li>
<li>- 청소년 저작권 교육용 교재(초·중등 각 1종 및 교사용 지도서)</li>
<li>- 기타 청소년 저작권 교육·홍보 자료 수시 제공</li>
</ul>
</dd>
</dl>
<dl>
<dt>· 결과 제출</dt>
<dd>저작권 체험교실 운영 교사는 반드시 결과보고서를 제출해야 하며, 본 자료는 강의료 지급 근거이자 우수 운영 교사 선정을 위한 평가 대상으로 활용됨
<ul>
<li>- 2023. 10. 13.(금)까지 교육 결과보고서를 위원회로 제출</li>
</ul>
</dd>
</dl>
<dl>
<dt>· 우수 운영 교사 선정</dt>
<dd>저작권 체험교실 운영 교사가 제출한 결과보고서를 토대로 우수 운영 교사를 선정하여 포상 실시
<table style="text-align: center; margin: 10px 0;">
<caption>저작권 체험교실 운영 교사 대상 사전 연수관련 구분, 필수교육, 교육 미이수시를 제공하는 표</caption>
<colgroup>
<col style="width:10%;">
<col style="width:30%;">
<col style="width:45%;">
<col style="width:auto;">
</colgroup>
<thead>
<tr>
<th scope="col"><span>구분</span></th>
<th scope="col" style="border-radius: 0;"><span>대상자 및 인원</span></th>
<th scope="col" style="border-radius: 0;"><span>상세내역</span></th>
<th scope="col">총계(천원)</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row"><span>최우수</span></th>
<td>초‧중‧고 교사 중 1명</td>
<td style="text-align:left;">- (교사) 상장 및 상금 50만원
<br/>- (참여학생) 50만원 상당의 기념품</td>
<td>1,000</td>
</tr>
<tr>
<th scope="row"><span>우수상</span></th>
<td>초‧중‧고 교사 3명</td>
<td style="text-align:left;">- (교사) 상장 및 상금 30만원
<br/>- (참여학생) 50만원 상당의 기념품</td>
<td>2,400</td>
</tr>
<tr>
<th scope="row"><span>장려상</span></th>
<td>초‧중‧고 교사 5명</td>
<td style="text-align:left;">- (교사) 상장 및 상금 20만원
<br/>- (참여학생) 50만원 상당의 기념품</td>
<td>3,500</td>
</tr>
<tr>
<th scope="row" rowspan="2"><span>특별상</span></th>
<td>으뜸상 1명</td>
<td style="text-align:left;">- (교사) 상장 및 부상 50만원</td>
<td>500</td>
</tr>
<tr>
<td>버금상 2명</td>
<td style="text-align:left;">- (교사) 상장 및 부상 30만원</td>
<td>600</td>
</tr>
<thead>
<tr>
<th scope="col"><span>합계</span></th>
<th scope="col" style="border-radius: 0;"><span>총12명</span></th>
<th scope="col" style="border-radius: 0;"><span>-</span></th>
<th scope="col">8,000</th>
</tr>
</thead>
</tbody>
</table>
<div class="info">* 상기 포상 내역은 위원회 사정에 따라 변경될 수 있음
<br/>* 체험교실 운영 과정에서 본인만의 교육자료(교안, 교보재 등)를 만든 교사 중 우수 교육자료 제작‧활용 교사에게 특별상 수여</div>
</dd>
</dl>
<dl>
<dt>· 의견청취</dt>
<dd>* 체험교실 운영 학급 현장 방문 또는 의견 청취 회의 개최</dd>
</dl>
<dl>
<dt>· 추진일정</dt>
<dd>
<table>
<caption>추진일정관련 구분, 상세일정을 제공하는 표</caption>
<colgroup>
<col style="width:35%;">
<col style="width:auto;">
</colgroup>
<thead>
<tr>
<th scope="col"><span>구분</span></th>
<th scope="col">상세일정</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row"><span>체험교실 신청서 접수</span></th>
<td>2월 27일(월)~3월 6일(월), 7일간</td>
</tr>
<tr>
<th scope="row"><span>운영교사 선정 및 학교 통보</span></th>
<td>3월 17일(금), 예정</td>
</tr>
<tr>
<th scope="row"><span>운영교사 사전 연수<br><span style="font-size: 14px; text-align: left; display: inline-block;">* 신규운영 교사는 2개 그룹(초/중등)으로 나누어 진행</span></span></th>
<td>3월 25일(토): 신규 초등 교사 <br>4월 1일(토): 신규 중․고등 교사<br>4월 8일(토): 기존 교사 </td>
</tr>
<tr>
<th scope="row"><span>결과보고서 제출 마감</span></th>
<td>10월 13일(금)</td>
</tr>
<tr>
<th scope="row"><span>우수학급 선정 및 포상</span></th>
<td>11월~12월</td>
</tr>
</tbody>
</table>
<div class="info" style="margin-bottom: 10px;">* 상기 일정은 위원회 내부 사정에 따라 변경될 수 있음</div>
</dd>
</dl>
</div>
<div class="btn_wrap btn_layout01">
<div class="btn_center" style="width: 100%;">
<button type="button" class="btnType04" onclick="openPop();" title="팝업 열림">신청서 작성</button>
<button type="button" class="btnType06" onclick="javascript:fn_egov_downFile('<c:out value="${detailVO.atchFileId}"/>','0')" title="파일 다운로드">안내문 다운로드</button>
<button type="button" class="btnType06" onclick="javascript:fn_egov_downFile('<c:out value="${detailVO.atchFileId}"/>','1')" title="파일 다운로드">운영신청서 다운로드</button>
<button type="button" class="btnType06" onclick="fncGoList();" >신청내용 조회</button>
</div>
</div>
</div>
<!--// content -->

View File

@ -337,6 +337,7 @@ function delete_item(obj, fileIdx){
});
$('.totalfileSize').text(getStrFileSize(totalfileSize)) ;
}
drawUploadArea();
}
function drawUploadArea(){

View File

@ -0,0 +1,701 @@
$(document).ready(function(){ //공통 js
/* 목록 정렬 항목 아이콘 표시 */
var searchSortCnd = $("[name='searchSortCnd']").val();
var searchSortOrd = $("[name='searchSortOrd']").val();
if (searchSortCnd != "" && searchSortOrd != "" && searchSortCnd != undefined && searchSortOrd != undefined) {
var $sort_div = $("#sort_"+ searchSortCnd);
var sortClass = 'sortBtnAsc' ;
if (searchSortOrd == "desc") sortClass = "sortBtnDesc";
$sort_div.replaceClass('btn_sort' , sortClass) ;
$sort_div.attr("btn_odr", searchSortOrd);
}
// 정렬 항목 이벤트
$(".sort").click(function(e) {
listSortOrd(this);
});
//파일업로드 드래그앤 드롭
var objDragAndDrop = $(".upload_area_cn");
$(document).on("dragenter",".upload_area_cn",function(e){
e.stopPropagation();
e.preventDefault();
//$(this).css('border', '2px solid #0B85A1');
});
$(document).on("dragover",".upload_area_cn",function(e){
e.stopPropagation();
e.preventDefault();
});
$(document).on("drop",".upload_area_cn",function(e){
//$(this).css('border', '2px dotted #0B85A1');
e.preventDefault();
var files = e.originalEvent.dataTransfer.files;
handleFileUpload_cn(files,objDragAndDrop); //파일업로드
});
$(document).on('dragenter', function (e){
e.stopPropagation();
e.preventDefault();
});
$(document).on('dragover', function (e){
e.stopPropagation();
e.preventDefault();
//objDragAndDrop.css('border', '2px dotted #0B85A1');
});
$(document).on('drop', function (e){
e.stopPropagation();
e.preventDefault();
});
drawUploadArea_cn();
$(function(){ //단일 파일업로드
$('#file_temp_cn').change(function(e){
var objUpload = $(".upload_area_cn");
var files = $('#file_temp_cn')[0].files;
handleFileUpload_cn(files,objUpload); //파일업로드
if($("#file_temp_cn").length > 0){
$("#file_temp_cn").val(""); //파일지우기
}
});
});
//최대 업로드 파일갯수 화면 노출 세팅
if($("[name='limitcount']").length>0){
if($('.limitcount_li').length > 0){
$('.limitcount_li').text($("[name='limitcount']").val());
}
}
//프린트 워커 마크
$('.printBtn').click(function(e){
if(!confirm("프린트 하시겠습니까?")){
return false;
}
var printPopup ;
printPopup= window.open("/offedu/tempPrint.html","print_open","width=760,height=750,top=0,left=0,noresizable,toolbar=no,status=no,scrollbars=yes,directory=n");
});
});
//목록 정렬 항목 클릭
function listSortOrd(obj){
var sortOrd = $(obj).attr("sortOrd");
var sortCnd = $(obj).attr("id");
$("[name='searchSortCnd']").val(sortCnd.substring(5)); // 구분자 제거
if (sortOrd == "desc") $("[name='searchSortOrd']").val("asc");
else $("[name='searchSortOrd']").val("desc");
linkPage('1'); //각 JSP마다 다를때 메소드 정의해 줘야됨
}
//인쇄 영역 공통
function printDiv(divName) {
var printContents = $("."+divName).html();
var originalContents = document.body.innerHTML;
document.body.innerHTML = printContents;
window.print();
document.body.innerHTML = originalContents;
//originalContents 다시 그려줘서 이전의 메소드 다시 재지정
$(".sort").click(function(e) {
listSortOrd(this);
});
}
function printDiv2(divName) {
var printContents = document.getElementById(divName).innerHTML;
var originalContents = document.body.innerHTML;
document.body.innerHTML = printContents;
window.print();
document.body.innerHTML = originalContents;
}
/* 파일사이즈 가져오기 */
function getStrFileSize(filesize){
var sizeStr="";
var sizeKB = filesize/1024;
if(parseInt(sizeKB) > 1024){
var sizeMB = sizeKB/1024;
sizeStr = sizeMB.toFixed(2)+" MB";
}else{
sizeStr = sizeKB.toFixed(2)+" KB";
}
return sizeStr;
}
/* 파일 이미지 가져오기 */
function getfile_img(file_name){
var img_type = file_name.split('.')[file_name.split('.').length-1].toLowerCase();
if(img_type == "xlsx"){
img_type = "xls";
}else if(img_type == "jpeg" || img_type == "png" || img_type == "bmp"){
img_type = "jpg";
}else if(img_type == "doc"){
img_type = "hwp";
}
var img_url = "";
switch (img_type) {
case "pdf" :
img_url = "/offedu/direct/img/enroll_pdf_file.png" ;
break;
case "xls" :
img_url = "/offedu/direct/img/enroll_exel_file.png" ;
break;
case "hwp" :
img_url = "/offedu/direct/img/enroll_hwp_file.png" ;
break;
case "jpg" :
img_url = "/offedu/direct/img/enroll_jpg_file.png" ;
break;
case "mp4" :
img_url = "/offedu/direct/img/enroll_mp4_file.png" ;
break;
case "ppt" :
img_url = "/offedu/direct/img/enroll_ppt_file.png" ;
break;
case "zip" :
img_url = "/offedu/direct/img/enroll_zip_file.png" ;
break;
default :
img_url = "/offedu/direct/img/enroll_jpg_file.png" ;
}
return img_url ;
}
/*등록 시간 가져오기 */
function getDate(){
var d = new Date();
var year = d.getFullYear();
var month = d.getMonth() + 1 ; month.toString().length < 2 ? month = "0"+month : month;
var date = d.getDate() ; date.toString().length < 2 ? date = "0"+date : date;
var currentDate = year+"-"+month+"-"+date+" ";
var hour = d.getHours(); hour.toString().length < 2 ? hour = "0"+hour : hour;
var minutes = d.getMinutes() ; minutes.toString().length < 2 ? minutes = "0"+minutes : minutes;
var seconds = d.getSeconds() ; seconds.toString().length < 2 ? seconds = "0"+seconds : hour;
currentTime = hour+"-"+minutes+"-"+seconds ;
return currentDate + currentTime ;
}
/*파일 드래그앤 드롭*/
/* 파일등록 */
var _fileIdx_cn = 0;
var _fileForm2_cn = new Array();
function handleFileUpload_cn(files,obj) //업로드 function
{
var limitsize = 50*1024*1024; //파일 제한 체크(50개, 50MB)
var limitcount = 999 ;
var allrowFileExtsn = $("input[name=allrowFileExtsn]").val();
if($('#tbody_fiielist_cn').find('tr').length + files.length > limitcount ){
alert("업로드 파일은 최대 "+limitcount+"개 입니다.");
return ;
}
for (var i = 0; i < files.length; i++){
if(files[i].size > limitsize){
alert(files[i].name+"파일 사이즈가"+getStrFileSize(files[i].size)+"로 50MB이하만 업로드 가능합니다.");
return ;
}
if(allrowFileExtsn != undefined && allrowFileExtsn != ""){
if(allrowFileExtsn.toLowerCase().indexOf(files[i].name.split(".")[1].toLowerCase()) < 0 ){
alert(allrowFileExtsn.toUpperCase() +" 파일 형식만 업로드 가능합니다.");
return ;
}
}
}
for (var i = 0; i < files.length; i++)
{
var fd = new FormData();
fd.append('file', files[i]);
var tmpObj = new Object();
tmpObj.name = "file_" + _fileIdx_cn;
tmpObj.fileObj = files[i];
_fileForm2_cn.push(tmpObj);
sendFileToServer_cn(fd, obj, files[i], _fileIdx_cn);
_fileIdx_cn++;
var totalfileSize = 0;
$('.totalfileCount').text($('.item_file_size_cn').length) ;
$('.item_file_size_cn').each(function(){
totalfileSize += $(this).val()*1 ;
});
$('.totalfileSize').text(getStrFileSize(totalfileSize)) ;
}
}
function sendFileToServer_cn(formData, obj , fileObj, _fileIdx_cn)
{
$('.no_img_box_cn').hide(); //list 박스 형식 변경
$('.file_list_div_cn').show();
var list_html = "";
var tt = "";
var fileNm = fileObj.name;
var fileExt = fileNm.split('.').pop().toLowerCase();
list_html += '<tr class="item_'+tt+' uploaded_obj">';
//list_html += '<td class="td_check"><input type="checkbox" class="delBtn" alt=""><label for=""></label></td>';
//list_html += '<td class="td_filename"><img src="'+getfile_img(fileObj.name)+'" alt=""><span class="file_name_text">'+fileObj.name+'</span></td>';
list_html += '<td class="td_filename_cn file_name"><img src="'+getfile_img(fileObj.name)+'" alt=""><span class="file_name_text">'+fileObj.name+'</span></td>';
list_html += '<td class="td_filesort_cn file_extension"><span class="file_filesort_text" value='+fileExt+'>.'+fileExt+'</span></td>';
list_html += '<td class="td_filesize_cn file_size"><span class="file_size_text" value='+fileObj.size+'>'+getStrFileSize(fileObj.size)+'</span></td>';
//list_html += '<td class="file_date">'+getDate()+'</td>';
list_html += '<td class="file_del"><button type="button" class="btn_del" onclick="delete_item_cn(this, '+_fileIdx_cn+')" title="';
list_html += fileObj.name;
list_html += ' 삭제"><i></i></button></td>';
list_html += '<input type="hidden" name="fileSize_cn" class="item_file_size_cn" value="'+fileObj.size+'">';
list_html += '<input type="hidden" name="atchFileIds_cn" class="imsi" value="'+tt+'">';
list_html += '</tr>';
$('#tbody_fiielist_cn').append(list_html);
}
function resetFileZone(){
$('.file_size').each(function(index, element){
$(this).text(getStrFileSize($(this).text())) ;
});
}
/* 등록되어 있는 파일 삭제버튼 클릭시 */
function delAtchFile_cn(itemId , fileSn){
if(!confirm("삭제하시겠습니까?")){
return false;
}
$.ajax({
type: "POST",
/*url: "/offedu/uss/ion/fms/fmsfileDeleteAjax.do",*/
url: "/offedu/web/fms/fmsfileDeleteAjax.do",
data:{ "atchFileId" : itemId , "fileSn" : fileSn},
dataType:'json',
cache: false,
async: false,
timeout: 600000,
success: function (returnData, status) {
if(status == 'success'){
if(returnData.result == 'fail'){
alert("삭제처리가 실패하였습니다.");
}else if(returnData.result == 'auth_fail'){
alert("세션이 종료되었습니다.");
}else if(returnData.result =='success'){
$('.item_'+returnData.fmsFileVO.atchFileId+"_"+returnData.fmsFileVO.fileSn).remove();
alert("삭제되었습니다.");
drawUploadArea_cn();
// $('.td_txt_exist > img').attr('src', '/images/no_img.jpg') ;
}
}else{
alert("삭제처리에 실패하였습니다.");
}
},
error: function (e) {
console.log("ERROR : ", e);
alert("삭제처리에 실패하였습니다.");
}
});
}
function autoDelAtchFile(data){
$.ajax({
type: "POST",
url: "/offedu/web/ve/aplct/cpyrgExprnClsrm/exprnClsrmInfo/fmsfileMultipleDeleteAjax.do",
data: JSON.stringify(data),
dataType:'json',
async: false,
processData: false,
contentType: "application/json",
cache: false,
success: function (returnData, status) {
if(status == 'success'){
console.log('파일이 삭제되었습니다.');
}else{
alert("파일 삭제처리에 실패하였습니다.");
}
},
error: function (e) { alert("저장에 실패하였습니다."); console.log("ERROR : ", e); }
});
}
/* 임시파일 삭제버튼 클릭시 */
function delete_item_cn(obj, fileIdx){
$(obj).closest("tr").remove();
_fileForm2_cn.forEach(function(fobj, idx) {
if (fobj.name == ("file_cn" + fileIdx)) _fileForm2_cn[idx] = "";
});
if($('.item_file_size_cn').length == 0){
$('.file_upload_box_cn ').show();
$('.upload_box_text').show();
$('.fileAfter_cn').hide();
}else{
var totalfileSize = 0;
$('.totalfileCount').text($('.item_file_size_cn').length) ;
$('.item_file_size_cn').each(function(){
totalfileSize += $(this).val()*1 ;
});
$('.totalfileSize').text(getStrFileSize(totalfileSize)) ;
}
}
function drawUploadArea_cn(){
$('.no_img_box_cn').hide(); //list 박스 형식 변경
$('.file_list_div_cn').show();
$('.file_name_text').each(function(index, item){
$(this).parent().find('img').attr('src', getfile_img($(this).text())) ; //이미지 변경
});
$('.file_size_text').each(function(index, item){
$(this).text(getStrFileSize($(this).attr('value')))
});
var totalfileSize = 0;
$('.totalfileCount').text($('.item_file_size_cn').length) ;
$('.item_file_size_cn').each(function(){
totalfileSize += $(this).val()*1 ;
});
$('.totalfileSize').text(getStrFileSize(totalfileSize)) ;
//if( $("#tbody_fiielist_cn > [class^=item]").length == 0 && $("#tbody_fiielist_cn > [class^=item]").length > 0 ){
if( $("#tbody_fiielist_cn > [class^=item]").length == 0){
$('.no_img_box_cn').show();
$('.file_list_div_cn ').hide();
}
if($('.fileTable').length > 0 ){
//$('.fileTable').remove();
}
}
/*강사 첨부파일 등록 시작 - 썸네일 추가 기능*/
//파일업로드 드래그앤 드롭
var photoDragAndDrop = $(".photo_upload_area");
$(document).on("dragenter",".photo_upload_area",function(e){
e.stopPropagation();
e.preventDefault();
//$(this).css('border', '2px solid #0B85A1');
});
$(document).on("dragover",".photo_upload_area",function(e){
e.stopPropagation();
e.preventDefault();
});
$(document).on("drop",".photo_upload_area",function(e){
//$(this).css('border', '2px dotted #0B85A1');
e.preventDefault();
var files = e.originalEvent.dataTransfer.files;
handlePhotoFileUpload(files,photoDragAndDrop); //파일업로드
});
$(function(){ //단일 파일업로드
$('#photo_file_temp').change(function(e){
var objUpload = $(".photo_upload_area");
var files = $('#photo_file_temp')[0].files;
handlePhotoFileUpload(files,objUpload); //파일업로드
if($("#photo_file_temp").length > 0){
$("#photo_file_temp").val(""); //파일지우기
}
});
});
/*파일 드래그앤 드롭*/
/* 파일등록 */
var _photoFileIdx = 0;
var _photoFileForm2 = new Array();
function handlePhotoFileUpload(files,obj) //업로드 function
{
var limitsize = 50*1024*1024; //파일 제한 체크(50개, 50MB)
var limitcount = $("input[name=limitcount]").val()*1 ;
if($('#tbody_fiielist_cn').find('tr').length + files.length > limitcount ){
alert("업로드 파일은 최대 "+limitcount+"개 입니다.");
return ;
}
for (var i = 0; i < files.length; i++){
if(files[i].size > limitsize){
alert(files[i].name+"파일 사이즈가"+getStrFileSize(files[i].size)+"로 50MB이하만 업로드 가능합니다.");
return ;
}
}
/*이미지 확장자 체크*/
for (var i = 0; i < files.length; i++){
var fileNm = files[i].name;
if (fileNm != "") {
var ext = fileNm.slice(fileNm.lastIndexOf(".") + 1).toLowerCase();
if (!(ext == "gif" || ext == "jpg" || ext == "png" || ext == "jpeg")) {
alert("이미지파일 (jpg, jpeg, png, gif ) 만 업로드 가능합니다.");
e.stopImmediatePropagation(); //js의 파일 업로드 막지
return false;
}
}
}
for (var i = 0; i < files.length; i++)
{
var fd = new FormData();
fd.append('file', files[i]);
var tmpObj = new Object();
tmpObj.name = "file_" + _photoFileIdx;
tmpObj.fileObj = files[i];
_photoFileForm2.push(tmpObj);
sendPhotoFileToServer(fd, obj, files[i], _photoFileIdx);
_photoFileIdx++;
/*사진 썸네일 등록*/
$(".put_photo_box").html("");
var reader = new FileReader();
reader.onload = function(e){
//이미지 형식
$('.put_photo_box').html('<img id="instrPhoto" src="'+e.target.result+'">');
//백그라운드 형식
/* $('.put_photo_in').css({'background':'url('+e.target.result+')',
'background-repeat': 'no-repeat',
'background-position':'center',
'background-size' : '100%'
});
*/ }
reader.readAsDataURL(files[i]);
}
}
function sendPhotoFileToServer(formData, obj , fileObj, _photoFileIdx)
{
$('.no_img_box_cn').hide(); //list 박스 형식 변경
$('.file_list_div_cn').show();
var list_html = "";
var tt = "";
var fileNm = fileObj.name;
var fileExt = fileNm.split('.').pop().toLowerCase();
list_html += '<tr class="item_'+tt+' photo_upload_area">';
//list_html += '<td class="td_filename"><img src="'+getfile_img(fileObj.name)+'" alt=""><span class="file_name_text">'+fileObj.name+'</span></td>';
list_html += '<td class="td_filename file_name"><img src="'+getfile_img(fileObj.name)+'" alt=""><span class="file_name_text">'+fileObj.name+'</span></td>';
list_html += '<td class="td_filesort file_extension"><span class="file_filesort_text" value='+fileExt+'>.'+fileExt+'</span></td>';
list_html += '<td class="td_filesize file_size"><span class="file_size_text" value='+fileObj.size+'>'+getStrFileSize(fileObj.size)+'</span></td>';
//list_html += '<td class="file_date">'+getDate()+'</td>';
list_html += '<td class="file_del"><button type="button" class="btn_del" alt="" onclick="delete_photo(this, '+_photoFileIdx+')" ><i></i></button></td>';
list_html += '<input type="hidden" name="fileSize" class="item_file_size_cn" value="'+fileObj.size+'">';
list_html += '<input type="hidden" name="atchFileIds" class="imsi" value="'+tt+'">';
list_html += '</tr>';
$('#tbody_fiielist_cn').append(list_html);
}
/* 등록되어 있는 파일 삭제버튼 클릭시 */
function delAtchPhotoFile_cn(itemId , fileSn){
if(!confirm("삭제하시겠습니까?")){
return false;
}
$.ajax({
type: "POST",
url: "/offedu/uss/ion/fms/fmsfileDeleteAjax.do",
data:{ "atchFileId" : itemId , "fileSn" : fileSn},
dataType:'json',
cache: false,
async: false,
timeout: 600000,
success: function (returnData, status) {
if(status == 'success'){
if(returnData.result == 'fail'){
alert("삭제처리가 실패하였습니다.");
}else if(returnData.result == 'auth_fail'){
alert("세션이 종료되었습니다.");
}else if(returnData.result =='success'){
$('.item_'+returnData.fmsFileVO.atchFileId+"_"+returnData.fmsFileVO.fileSn+"_cn").remove();
alert("삭제되었습니다.");
drawUploadArea_cn();
$('.put_photo_box').html('<img src="/offedu/visitEdu/usr/publish/images/content/img_add.png" alt="이미지를 넣어주세요">');
/*강사 디테일 첨부파일 ID 삭제*/
/*각각 jsp파일에 function존재*/
atchFileIdDelete();
}
}else{
alert("삭제처리에 실패하였습니다.");
}
},
error: function (e) {
console.log("ERROR : ", e);
alert("삭제처리에 실패하였습니다.");
}
});
deleteLodingBar();
}
/*function delAtchPhotoFile(itemId , fileSn){
if(!confirm("삭제하시겠습니까?")){
return false;
}
$.ajax({
type: "POST",
url: "/uss/ion/fms/fmsfileDeleteAjax.do",
data:{ "atchFileId" : itemId , "fileSn" : fileSn},
dataType:'json',
cache: false,
async: false,
timeout: 600000,
success: function (returnData, status) {
if(status == 'success'){
if(returnData.result == 'fail'){
alert("삭제처리가 실패하였습니다.");
}else if(returnData.result == 'auth_fail'){
alert("세션이 종료되었습니다.");
}else if(returnData.result =='success'){
$('.item_'+returnData.fmsFileVO.atchFileId+"_"+returnData.fmsFileVO.fileSn).remove();
alert("삭제되었습니다.");
drawUploadArea_cn();
$('.put_photo_box').html('<img src="/visitEdu/usr/publish/images/content/img_add.png" alt="이미지를 넣어주세요">');
강사 디테일 첨부파일 ID 삭제
각각 jsp파일에 function존재
atchFileIdDelete();
}
}else{
alert("삭제처리에 실패하였습니다.");
}
},
error: function (e) {
console.log("ERROR : ", e);
alert("삭제처리에 실패하였습니다.");
}
});
}
*/
/*function drawUploadArea_cn(){
$('.no_img_box_cn').hide(); //list 박스 형식 변경
$('.file_list_div_cn').show();
$('.file_name_text').each(function(index, item){
$(this).parent().find('img').attr('src', getfile_img($(this).text())) ; //이미지 변경
});
$('.file_size_text').each(function(index, item){
$(this).text(getStrFileSize($(this).attr('value')))
});
var totalfileSize = 0;
$('.totalfileCount').text($('.item_file_size_cn').length) ;
$('.item_file_size_cn').each(function(){
totalfileSize += $(this).val()*1 ;
});
$('.totalfileSize').text(getStrFileSize(totalfileSize)) ;
//if( $("#tbody_fiielist_cn > [class^=item]").length == 0 && $("#tbody_fiielist_cn > [class^=item]").length > 0 ){
if( $("#tbody_fiielist_cn > [class^=item]").length == 0){
$('.no_img_box_cn').show();
$('.file_list_div_cn ').hide();
}
if($('.fileTable').length > 0 ){
//$('.fileTable').remove();
}
}*/
/*임시파일 삭제버튼 클릭시*/
function delete_photo(obj, fileIdx){
$(obj).closest("tr").remove();
_photoFileForm2.forEach(function(fobj, idx) {
if (fobj.name == ("file_" + fileIdx)) _photoFileForm2[idx] = "";
});
if($('.item_file_size_cn').length == 0){
$('.file_upload_box_cn ').show();
$('.fileAfter_cn').hide();
//백그라운드 형식
/*$('.put_photo_in').css({'background':'',
'background-color': '#f5f5f5',
'width':'128px',
'height' : '165px',
'border' : '1px solid #d5d5d5',
'border-radius' : '5px',
'box-sizing' : 'border-box',
'position' : 'relative',
'height' : '165px',
'overflow' : 'hidden'
}); */
//이미지 형식
$('.put_photo_box').html('<img src="/offedu/visitEdu/usr/publish/images/content/img_add.png" alt="이미지를 넣어주세요"> <button type="button" class="btnType01" data-tooltip="sub26_pop02">사진등록</button>');
}
}
/*강사 첨부파일 등록 종료 - 썸네일 추가 기능*/
/* 게시판 글 저장 function */
function goWebSave(method_parm){ //method_parm :관리자로그 메소드에서 사용.(파일업로드 부분 공통으로 사용하여, 페이지 구분을 위해)
if(undefined !=$("input[name=limitcount]").val() && ""!=$("input[name=limitcount]").val() ){
if($('#atchFileNece').length > 0 ){
if("Y" == $('#atchFileNece').val()){ //추가 2021.04.14
if($('#tbody_fiielist_cn').find('tr').length == 0){
alert("첨부파일을 추가해 주십시오");
return false;
}
}
}
}
var msg;
msg = "해당 첨부파일을 수정하시겠습니까?";
var data = new FormData(document.writeForm == undefined ? document.board : document.writeForm);
_fileForm2_cn.forEach(function(obj, idx) {
if (obj) data.append("file"+idx, obj.fileObj);
});
var url = "";
if($("#pageType").val() == "insert"){//게시판저장
url = "/offedu/web/cop/bbs/insertBoardArticleAjax.do";
}else if($("#pageType").val() == "update"){ //게시판 답변
url = "/offedu/web/cop/bbs/updateBoardArticleAjax.do";
}/*else{
url = document.writeForm == undefined ? "/cop/bbs/updateBoardArticleAjax.do" : "/uss/ion/fms/FmsFileInsertAjax.do?logParam="+method_parm;
}*/
$.ajax({
type: "POST",
enctype: 'multipart/form-data',
url: url,
data: data,
dataType:'json',
async: false,
processData: false,
contentType: false,
cache: false,
//timeout: 600000,
success: function (returnData, status) {
if(status == 'success'){ // status 확인 필요한가. 석세스 안뜨면 에러 가지 않나
if("fail"==returnData.result){
alert(returnData.message);
return;
}
alert("저장 되었습니다.");
fn_egov_select_noticeList()
} else if(status== 'fail'){
alert("저장에 실패하였습니다. !!");
}
},
error: function (request,status,error) {
//alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
alert("저장에 실패하였습니다.");
console.log("ERROR : ", e);
}
});
}
(function ($) {
$.fn.replaceClass = function (pFromClass, pToClass) {
return this.removeClass(pFromClass).addClass(pToClass);
};
}(jQuery));