diff --git a/src/main/java/kcc/com/cmm/web/EgovFileMngController.java b/src/main/java/kcc/com/cmm/web/EgovFileMngController.java index 54c0740c..46776e97 100644 --- a/src/main/java/kcc/com/cmm/web/EgovFileMngController.java +++ b/src/main/java/kcc/com/cmm/web/EgovFileMngController.java @@ -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 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 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"; + + } } diff --git a/src/main/java/kcc/com/utl/user/service/CheckFileUtil.java b/src/main/java/kcc/com/utl/user/service/CheckFileUtil.java index a80a6db9..a9aea0c1 100644 --- a/src/main/java/kcc/com/utl/user/service/CheckFileUtil.java +++ b/src/main/java/kcc/com/utl/user/service/CheckFileUtil.java @@ -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 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 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 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 result = null; + String atchFileId = ""; + String isThumbFile = ""; + //String isThumbFile = "thumbFile"; //"thumbFile" - 썸네일을 생성한다. + +// final Map 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 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 result = null; + //String atchFileId = ""; + String isThumbFile = ""; + //String isThumbFile = "thumbFile"; //"thumbFile" - 썸네일을 생성한다. + +// final Map 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; + } } \ No newline at end of file diff --git a/src/main/java/kcc/ve/aplct/cpyrgExprnClsrm/exprnClsrmAplct/web/ExprnClsrmAplctController.java b/src/main/java/kcc/ve/aplct/cpyrgExprnClsrm/exprnClsrmAplct/web/ExprnClsrmAplctController.java index 8f95cbab..4ecec0a3 100644 --- a/src/main/java/kcc/ve/aplct/cpyrgExprnClsrm/exprnClsrmAplct/web/ExprnClsrmAplctController.java +++ b/src/main/java/kcc/ve/aplct/cpyrgExprnClsrm/exprnClsrmAplct/web/ExprnClsrmAplctController.java @@ -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 result_cn = fileService.selectFileInfs(fileVO_cn); + model.addAttribute("fileList", result_cn); + model.addAttribute("fileListCnt", result_cn.size()); + + + return "/web/ve/aplct/cpyrgExprnClsrm/exprnClsrmInfo/exprnClsrmAplctGuide"; } diff --git a/src/main/java/kcc/ve/instr/tngrVisitEdu/prcsInfo/service/VEPrcsDetailVO.java b/src/main/java/kcc/ve/instr/tngrVisitEdu/prcsInfo/service/VEPrcsDetailVO.java index 0f284399..c66c27bc 100644 --- a/src/main/java/kcc/ve/instr/tngrVisitEdu/prcsInfo/service/VEPrcsDetailVO.java +++ b/src/main/java/kcc/ve/instr/tngrVisitEdu/prcsInfo/service/VEPrcsDetailVO.java @@ -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; + } + } diff --git a/src/main/java/kcc/ve/instr/tngrVisitEdu/prcsInfo/service/impl/VEPrcsAplctPrdServiceImpl.java b/src/main/java/kcc/ve/instr/tngrVisitEdu/prcsInfo/service/impl/VEPrcsAplctPrdServiceImpl.java index 29f8d8e6..fba89adc 100644 --- a/src/main/java/kcc/ve/instr/tngrVisitEdu/prcsInfo/service/impl/VEPrcsAplctPrdServiceImpl.java +++ b/src/main/java/kcc/ve/instr/tngrVisitEdu/prcsInfo/service/impl/VEPrcsAplctPrdServiceImpl.java @@ -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 diff --git a/src/main/java/kcc/ve/oprtn/cpyrgExprnClsrm/oprtnAplctMng/web/OprtnAplctAnncmMngController.java b/src/main/java/kcc/ve/oprtn/cpyrgExprnClsrm/oprtnAplctMng/web/OprtnAplctAnncmMngController.java index 07e63813..c4ef1d92 100644 --- a/src/main/java/kcc/ve/oprtn/cpyrgExprnClsrm/oprtnAplctMng/web/OprtnAplctAnncmMngController.java +++ b/src/main/java/kcc/ve/oprtn/cpyrgExprnClsrm/oprtnAplctMng/web/OprtnAplctAnncmMngController.java @@ -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 result = fileService.selectFileInfs(fileVO); model.addAttribute("fileList", result); model.addAttribute("fileListCnt", result.size()); + + //파일 정보 가져오기 + FileVO fileVO_cn = new FileVO(); + fileVO_cn.setAtchFileId(info.getCnAtchFileId()); + List 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 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 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 files = multiRequest.getFileMap(); + + Map files_ori = new HashMap(); + Map files_cn = new HashMap(); + + + 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 files = multiRequest.getFileMap(); + + Map files_ori = new HashMap(); + Map files_cn = new HashMap(); + + 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()"); diff --git a/src/main/resources/egovframework/sqlmap/ve/prcs/VEPrcsAplctPrd_SQL_Tibero.xml b/src/main/resources/egovframework/sqlmap/ve/prcs/VEPrcsAplctPrd_SQL_Tibero.xml index 697df2ef..3edcb61e 100644 --- a/src/main/resources/egovframework/sqlmap/ve/prcs/VEPrcsAplctPrd_SQL_Tibero.xml +++ b/src/main/resources/egovframework/sqlmap/ve/prcs/VEPrcsAplctPrd_SQL_Tibero.xml @@ -38,6 +38,8 @@ ,edu_strt_pnttm ,edu_ddln_pnttm ,edu_place + ,dprtm_nm + ,cn_atch_file_id @@ -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 @@ -109,7 +112,9 @@ ,#ddlnCd# ,#eduStrtPnttm# ,#eduDdlnPnttm# - ,#eduPlace# + ,#eduPlace# + ,#dprtmNm# + ,#cnAtchFileId# ) @@ -224,6 +229,12 @@ , edu_place = #eduPlace# + + + , dprtm_nm = #dprtmNm# + + + , cn_atch_file_id = #cnAtchFileId# WHERE diff --git a/src/main/webapp/WEB-INF/jsp/cmm/fms/EgovBBSFileListCustom.jsp b/src/main/webapp/WEB-INF/jsp/cmm/fms/EgovBBSFileListCustom.jsp new file mode 100644 index 00000000..a411993d --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/cmm/fms/EgovBBSFileListCustom.jsp @@ -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 옥찬우 Tag id속성 추가( Line : 68 ) + * + * @author 공통서비스 개발팀 이삼섭 + * @since 2009.03.26 + * @version 1.0 + * @see + * + */ +%> + + + + + + + diff --git a/src/main/webapp/WEB-INF/jsp/oprtn/cpyrgExprnClsrm/oprtnAplctAnncmMngDetail.jsp b/src/main/webapp/WEB-INF/jsp/oprtn/cpyrgExprnClsrm/oprtnAplctAnncmMngDetail.jsp index 7540d084..acb17dbd 100644 --- a/src/main/webapp/WEB-INF/jsp/oprtn/cpyrgExprnClsrm/oprtnAplctAnncmMngDetail.jsp +++ b/src/main/webapp/WEB-INF/jsp/oprtn/cpyrgExprnClsrm/oprtnAplctAnncmMngDetail.jsp @@ -338,7 +338,26 @@ - + + + +

작성자

+ + + + + + + +

안내첨부파일

+ + + + + + + + <%--

안내내용

diff --git a/src/main/webapp/WEB-INF/jsp/oprtn/cpyrgExprnClsrm/oprtnAplctAnncmMngReg.jsp b/src/main/webapp/WEB-INF/jsp/oprtn/cpyrgExprnClsrm/oprtnAplctAnncmMngReg.jsp index b966cd5e..38f1278b 100644 --- a/src/main/webapp/WEB-INF/jsp/oprtn/cpyrgExprnClsrm/oprtnAplctAnncmMngReg.jsp +++ b/src/main/webapp/WEB-INF/jsp/oprtn/cpyrgExprnClsrm/oprtnAplctAnncmMngReg.jsp @@ -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 @@ + @@ -594,6 +606,105 @@ + + +

필수입력 항목*

+

담당부서

+ + + + + + + +

필수입력 항목*

+

내용

+ + + + + + + + + + + + + +

필수입력 항목*

+

안내첨부파일

+ + + + +
+ + + + + + + + + + + + + + + + + + + +
첨부파일 리스트 : 파일명, 종류, 크기, 삭제
파일 명종류크기삭제
+

첨부하실 파일을 마우스로 끌어서 넣어주세요.

+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
첨부파일 리스트 : 파일명, 종류, 크기, 삭제
파일 명종류크기삭제
+ + + "> + + "> + + +
+
+ + + + + + diff --git a/src/main/webapp/WEB-INF/jsp/oprtn/cpyrgExprnClsrm/oprtnAplctAnncmMngUpdate.jsp b/src/main/webapp/WEB-INF/jsp/oprtn/cpyrgExprnClsrm/oprtnAplctAnncmMngUpdate.jsp index 9ff43a4f..5444b41a 100644 --- a/src/main/webapp/WEB-INF/jsp/oprtn/cpyrgExprnClsrm/oprtnAplctAnncmMngUpdate.jsp +++ b/src/main/webapp/WEB-INF/jsp/oprtn/cpyrgExprnClsrm/oprtnAplctAnncmMngUpdate.jsp @@ -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 @@ + @@ -250,6 +264,7 @@ + @@ -588,6 +603,114 @@ + + +

필수입력 항목*

+

담당부서

+ + + + + + + +

필수입력 항목*

+

내용

+ + + + + + + + + + + + + + + +

필수입력 항목*

+

안내첨부파일

+ + + + +
+ + + + + + + + + + + + + + + + + + + +
첨부파일 리스트 : 파일명, 종류, 크기, 삭제
파일 명종류크기삭제
+

첨부하실 파일을 마우스로 끌어서 넣어주세요.

+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
첨부파일 리스트 : 파일명, 종류, 크기, 삭제
파일 명종류크기삭제
+ + + "> + + "> + + +
+
+ + + + + + + + + + + + diff --git a/src/main/webapp/WEB-INF/jsp/web/ve/aplct/cpyrgExprnClsrm/exprnClsrmInfo/exprnClsrmAplctGuide.jsp b/src/main/webapp/WEB-INF/jsp/web/ve/aplct/cpyrgExprnClsrm/exprnClsrmInfo/exprnClsrmAplctGuide.jsp index f8248a2b..c561a4ab 100644 --- a/src/main/webapp/WEB-INF/jsp/web/ve/aplct/cpyrgExprnClsrm/exprnClsrmInfo/exprnClsrmAplctGuide.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/ve/aplct/cpyrgExprnClsrm/exprnClsrmInfo/exprnClsrmAplctGuide.jsp @@ -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", "<"); %> +<%pageContext.setAttribute("crgt", ">"); %> 운영신청 목록 > 저작권 체험교실 > 한국저작권위원회 저작권 교육 시스템 @@ -81,316 +84,60 @@

운영신청 안내

+
-

사업개요

+

제목

-
-
· 사업내용
-
학교 현장의 교사가 초·중 ·고등학생을 대상으로 체험활동 중심의 저작권 교육을 실시하도록 지원함으로써 청소년의 저작권 인식 제고 도모
-
-
-
· 운영 지원 학급
- 전국 초·중·고등학교 350개교 -
    -
  • - 학교 교사가 직접 1학교당 1개 학급 이상 또는 동아리 등을 대상으로 저작권 체험교실을 운영할 수 있도록 지원
  • -
-
* 여러 명의 교사가 함께 체험교실 운영 불가
-
-
-
-
· 운영 시간
-
- 총 6차시(교시, 차시 당 40~50분) -
    -
  • - 대상 학급 또는 동아리를 기준으로 6차시 이상 교육 실시함
  • -
  • - 담당교사의 재량으로 자율 편성(예 : 6차시씩 1일, 2차시씩 3일 등)하되, 1일 최대 2차시까지만 운영 가능
  • -
-
-
-
-
· 교육 주체
-
- 체험 교실 운영 대상으로 선정된 학교의 담당 교사 1인 -
    -
  • - 운영교사에게는 저작권 교육내용 연구 및 교수학습법 적용에 대한 외부 강의료 지급
  • -
-
* 1차시 당 15만원(최대 6차시) 지급. 단, 결과보고서 제출자에 한함
-
-
-
-
· 교육 내용
-
-
    -
  • - 체험 활동 중심 저작권 교육 프로그램 활용을 통한 저작권 개념, 올바른 저작물 이용방법, 저작권 문제 해결 방법 등 교육
  • - -
-
* 원활한 교육 운영을 위해 교육 교재[첨부4]를 지원하오나, 교사 재량에 따라 저작권 교육 연구내용 및 창의적 체험 활동 등 자유롭게 구성 가능
+
-
-

교육 신청

+

부서

- -
+
-
· 신청방법
-
신청서(첨부 1)를 작성하여 학교장 직인 날인 후 위원회 홈페이지(www.copyright.or.kr/offedu)에서 개별 접수
-
    -
  • - 신청기간 : 2023. 2. 27.(월) ~ 3. 6.(월), 9:00 ~ 18:00
  • -
    * 세부 신청 절차는 [첨부] 참조
    -
-
-
-
-
· 운영교사 인원
-
전국 초·중·고 교사 350명 선정
-
-
    -
  • - - 체험교실 운영 교사 선정 기준 -
      -
    • · 지역균형 및 초·중등 학급 수 비율 고려
    • -
    • · 운영 교사 전체의 50% 수준으로 신규 운영교사 선정 고려
    • -
    • · 위원회 주관의 저작권 오프라인 교원연수 이수자 우선 고려
    • -
    • * 2022.1.1. 이후 특수 분야 교원 연수(교원을 위한 저작권법 입문과정, 학교 교육을 위한 저작권법 실전과정) 이수자
    • -
    • · 위원회 공동 주관, KERIS 협업과정 오프라인 교원연수 이수자 우선 고려
    • -
    • * 2021.8. 교육기관 저작권 전문가 양성 연수「기초과정」이수자, 2022.8. 교육기관 저작권 전문가 양성 연수「중급과정」이수자
    • -
    • · 교육 대상인원이 15명 미만인 경우 선정에서 제외하며, 도서벽지 또는 인구감소 지역의 경우에는 교육 대상인원과 관계없이 우선 선정 고려
    • -
    • · 전년도 포기 교사 및 불성실 운영 교사(기존 보고 내용 답습 등)는 당해연도 참여 제한
    • -
    • · 해당 학급 및 지역 경쟁률이 높을 경우 3년 연속 또는 5회 이상 운영 교사는 차순위로 배정될 수 있음
    • -
    -
  • -
+
-
-

교육 운영

+

등록일

- -
+
-
· 사전 연수
- 저작권 체험교실 선정 교사를 대상으로 저작권 기본 이론 및 프로그램 운영 전반에 대한 사전 안내 등 연수 실시 -
    -
  • - 연수시간: 각 일자별 09:00~18:00(예정)
  • -
- - - - - - - - - - - - - - - - - - - - - - - - - - - -
저작권 체험교실 운영 교사 대상 사전 연수관련 구분, 필수교육, 교육 미이수시를 제공하는 표
구분3.25.(토)4.1.(토)4.8.(토)참고
참여대상(신규)      
초등 교사
(신규)           
중·고등 교사
(신규)               
초·중·고등 교사
참여 대상에 맞춰 교육 프로그램 설계
단, 사전 협의시 일정 변경 가능         
-
-
-
    -
  • - (방법) 비대면 온라인 교육
  • -
  • 【 체험교실 운영 교사 필수 교육 안내 】
  • -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
저작권 체험교실 운영 교사 대상 사전 연수관련 구분, 필수교육, 교육 미이수시를 제공하는 표
구분필수교육비고
신규 교사- 사전 연수(연수일) -
- 온라인 교육(23년 3월~결과보고 제출일) -
  ‣‘저작권 e-배움터’의 교원 대상 교육(15학점 또는 30학점) -
필수 교육 2개 모두 이수
기존 교사- 사전 연수(연수일) -
- 온라인 교육(23년 3월~결과보고 제출일) -
  ‣‘저작권 e-배움터’의 교원 대상 교육(15학점 또는 30학점) -
필수 교육 2개 중 하나 이수
-
* 필수교육 미이수시 선정 취소
-
- -
-
-
· 저작권 체험교실 대상 지원
-
-
    -
  • - 저작권 체험교실 운영교사 대상 사전 연수 실시 (3회)
  • -
  • - 청소년 저작권 교육용 교재(초·중등 각 1종 및 교사용 지도서)
  • -
  • - 기타 청소년 저작권 교육·홍보 자료 수시 제공
  • -
-
-
-
-
· 결과 제출
-
저작권 체험교실 운영 교사는 반드시 결과보고서를 제출해야 하며, 본 자료는 강의료 지급 근거이자 우수 운영 교사 선정을 위한 평가 대상으로 활용됨 -
    -
  • - 2023. 10. 13.(금)까지 교육 결과보고서를 위원회로 제출
  • -
-
-
-
-
· 우수 운영 교사 선정
-
저작권 체험교실 운영 교사가 제출한 결과보고서를 토대로 우수 운영 교사를 선정하여 포상 실시 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
저작권 체험교실 운영 교사 대상 사전 연수관련 구분, 필수교육, 교육 미이수시를 제공하는 표
구분대상자 및 인원상세내역총계(천원)
최우수초‧중‧고 교사 중 1명- (교사) 상장 및 상금 50만원 -
- (참여학생) 50만원 상당의 기념품
1,000
우수상초‧중‧고 교사 3명- (교사) 상장 및 상금 30만원 -
- (참여학생) 50만원 상당의 기념품
2,400
장려상초‧중‧고 교사 5명- (교사) 상장 및 상금 20만원 -
- (참여학생) 50만원 상당의 기념품
3,500
특별상으뜸상 1명- (교사) 상장 및 부상 50만원500
버금상 2명- (교사) 상장 및 부상 30만원600
합계총12명-8,000
-
* 상기 포상 내역은 위원회 사정에 따라 변경될 수 있음 -
* 체험교실 운영 과정에서 본인만의 교육자료(교안, 교보재 등)를 만든 교사 중 우수 교육자료 제작‧활용 교사에게 특별상 수여
-
-
-
-
· 의견청취
-
* 체험교실 운영 학급 현장 방문 또는 의견 청취 회의 개최
-
-
-
· 추진일정
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
추진일정관련 구분, 상세일정을 제공하는 표
구분상세일정
체험교실 신청서 접수2월 27일(월)~3월 6일(월), 7일간
운영교사 선정 및 학교 통보3월 17일(금), 예정
운영교사 사전 연수
* 신규운영 교사는 2개 그룹(초/중등)으로 나누어 진행
3월 25일(토): 신규 초등 교사
4월 1일(토): 신규 중․고등 교사
4월 8일(토): 기존 교사
결과보고서 제출 마감10월 13일(금)
우수학급 선정 및 포상11월~12월
-
* 상기 일정은 위원회 내부 사정에 따라 변경될 수 있음
+
+
+
+

첨부파일

+
+
+
+
+
+ + + + +
+
+
+ +
@@ -403,5 +150,3 @@
- - diff --git a/src/main/webapp/WEB-INF/jsp/web/ve/aplct/cpyrgExprnClsrm/exprnClsrmInfo/exprnClsrmAplctGuide_back_231120.jsp b/src/main/webapp/WEB-INF/jsp/web/ve/aplct/cpyrgExprnClsrm/exprnClsrmInfo/exprnClsrmAplctGuide_back_231120.jsp new file mode 100644 index 00000000..f8248a2b --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/web/ve/aplct/cpyrgExprnClsrm/exprnClsrmInfo/exprnClsrmAplctGuide_back_231120.jsp @@ -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"%> + +운영신청 목록 > 저작권 체험교실 > 한국저작권위원회 저작권 교육 시스템 + + + +
+
+

운영신청 안내

+
+
+
+

사업개요

+
+
+ +
+
+
· 사업내용
+
학교 현장의 교사가 초·중 ·고등학생을 대상으로 체험활동 중심의 저작권 교육을 실시하도록 지원함으로써 청소년의 저작권 인식 제고 도모
+
+
+
· 운영 지원 학급
+
+ 전국 초·중·고등학교 350개교 +
    +
  • - 학교 교사가 직접 1학교당 1개 학급 이상 또는 동아리 등을 대상으로 저작권 체험교실을 운영할 수 있도록 지원
  • +
+
* 여러 명의 교사가 함께 체험교실 운영 불가
+
+
+
+
· 운영 시간
+
+ 총 6차시(교시, 차시 당 40~50분) +
    +
  • - 대상 학급 또는 동아리를 기준으로 6차시 이상 교육 실시함
  • +
  • - 담당교사의 재량으로 자율 편성(예 : 6차시씩 1일, 2차시씩 3일 등)하되, 1일 최대 2차시까지만 운영 가능
  • +
+
+
+
+
· 교육 주체
+
+ 체험 교실 운영 대상으로 선정된 학교의 담당 교사 1인 +
    +
  • - 운영교사에게는 저작권 교육내용 연구 및 교수학습법 적용에 대한 외부 강의료 지급
  • +
+
* 1차시 당 15만원(최대 6차시) 지급. 단, 결과보고서 제출자에 한함
+
+
+
+
· 교육 내용
+
+
    +
  • - 체험 활동 중심 저작권 교육 프로그램 활용을 통한 저작권 개념, 올바른 저작물 이용방법, 저작권 문제 해결 방법 등 교육
  • + +
+
* 원활한 교육 운영을 위해 교육 교재[첨부4]를 지원하오나, 교사 재량에 따라 저작권 교육 연구내용 및 창의적 체험 활동 등 자유롭게 구성 가능
+
+
+
+ +
+
+

교육 신청

+
+
+ +
+
+
· 신청방법
+
신청서(첨부 1)를 작성하여 학교장 직인 날인 후 위원회 홈페이지(www.copyright.or.kr/offedu)에서 개별 접수
+
+
    +
  • - 신청기간 : 2023. 2. 27.(월) ~ 3. 6.(월), 9:00 ~ 18:00
  • +
    * 세부 신청 절차는 [첨부] 참조
    +
+
+
+
+
· 운영교사 인원
+
전국 초·중·고 교사 350명 선정
+
+
    +
  • + - 체험교실 운영 교사 선정 기준 +
      +
    • · 지역균형 및 초·중등 학급 수 비율 고려
    • +
    • · 운영 교사 전체의 50% 수준으로 신규 운영교사 선정 고려
    • +
    • · 위원회 주관의 저작권 오프라인 교원연수 이수자 우선 고려
    • +
    • * 2022.1.1. 이후 특수 분야 교원 연수(교원을 위한 저작권법 입문과정, 학교 교육을 위한 저작권법 실전과정) 이수자
    • +
    • · 위원회 공동 주관, KERIS 협업과정 오프라인 교원연수 이수자 우선 고려
    • +
    • * 2021.8. 교육기관 저작권 전문가 양성 연수「기초과정」이수자, 2022.8. 교육기관 저작권 전문가 양성 연수「중급과정」이수자
    • +
    • · 교육 대상인원이 15명 미만인 경우 선정에서 제외하며, 도서벽지 또는 인구감소 지역의 경우에는 교육 대상인원과 관계없이 우선 선정 고려
    • +
    • · 전년도 포기 교사 및 불성실 운영 교사(기존 보고 내용 답습 등)는 당해연도 참여 제한
    • +
    • · 해당 학급 및 지역 경쟁률이 높을 경우 3년 연속 또는 5회 이상 운영 교사는 차순위로 배정될 수 있음
    • +
    +
  • +
+
+
+
+ +
+
+

교육 운영

+
+
+ +
+
+
· 사전 연수
+
+ 저작권 체험교실 선정 교사를 대상으로 저작권 기본 이론 및 프로그램 운영 전반에 대한 사전 안내 등 연수 실시 +
    +
  • - 연수시간: 각 일자별 09:00~18:00(예정)
  • +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
저작권 체험교실 운영 교사 대상 사전 연수관련 구분, 필수교육, 교육 미이수시를 제공하는 표
구분3.25.(토)4.1.(토)4.8.(토)참고
참여대상(신규)      
초등 교사
(신규)           
중·고등 교사
(신규)               
초·중·고등 교사
참여 대상에 맞춰 교육 프로그램 설계
단, 사전 협의시 일정 변경 가능         
+
+
+
    +
  • - (방법) 비대면 온라인 교육
  • +
  • 【 체험교실 운영 교사 필수 교육 안내 】
  • +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
저작권 체험교실 운영 교사 대상 사전 연수관련 구분, 필수교육, 교육 미이수시를 제공하는 표
구분필수교육비고
신규 교사- 사전 연수(연수일) +
- 온라인 교육(23년 3월~결과보고 제출일) +
  ‣‘저작권 e-배움터’의 교원 대상 교육(15학점 또는 30학점) +
필수 교육 2개 모두 이수
기존 교사- 사전 연수(연수일) +
- 온라인 교육(23년 3월~결과보고 제출일) +
  ‣‘저작권 e-배움터’의 교원 대상 교육(15학점 또는 30학점) +
필수 교육 2개 중 하나 이수
+
* 필수교육 미이수시 선정 취소
+
+ +
+
+
· 저작권 체험교실 대상 지원
+
+
    +
  • - 저작권 체험교실 운영교사 대상 사전 연수 실시 (3회)
  • +
  • - 청소년 저작권 교육용 교재(초·중등 각 1종 및 교사용 지도서)
  • +
  • - 기타 청소년 저작권 교육·홍보 자료 수시 제공
  • +
+
+
+
+
· 결과 제출
+
저작권 체험교실 운영 교사는 반드시 결과보고서를 제출해야 하며, 본 자료는 강의료 지급 근거이자 우수 운영 교사 선정을 위한 평가 대상으로 활용됨 +
    +
  • - 2023. 10. 13.(금)까지 교육 결과보고서를 위원회로 제출
  • +
+
+
+
+
· 우수 운영 교사 선정
+
저작권 체험교실 운영 교사가 제출한 결과보고서를 토대로 우수 운영 교사를 선정하여 포상 실시 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
저작권 체험교실 운영 교사 대상 사전 연수관련 구분, 필수교육, 교육 미이수시를 제공하는 표
구분대상자 및 인원상세내역총계(천원)
최우수초‧중‧고 교사 중 1명- (교사) 상장 및 상금 50만원 +
- (참여학생) 50만원 상당의 기념품
1,000
우수상초‧중‧고 교사 3명- (교사) 상장 및 상금 30만원 +
- (참여학생) 50만원 상당의 기념품
2,400
장려상초‧중‧고 교사 5명- (교사) 상장 및 상금 20만원 +
- (참여학생) 50만원 상당의 기념품
3,500
특별상으뜸상 1명- (교사) 상장 및 부상 50만원500
버금상 2명- (교사) 상장 및 부상 30만원600
합계총12명-8,000
+
* 상기 포상 내역은 위원회 사정에 따라 변경될 수 있음 +
* 체험교실 운영 과정에서 본인만의 교육자료(교안, 교보재 등)를 만든 교사 중 우수 교육자료 제작‧활용 교사에게 특별상 수여
+
+
+
+
· 의견청취
+
* 체험교실 운영 학급 현장 방문 또는 의견 청취 회의 개최
+
+
+
· 추진일정
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
추진일정관련 구분, 상세일정을 제공하는 표
구분상세일정
체험교실 신청서 접수2월 27일(월)~3월 6일(월), 7일간
운영교사 선정 및 학교 통보3월 17일(금), 예정
운영교사 사전 연수
* 신규운영 교사는 2개 그룹(초/중등)으로 나누어 진행
3월 25일(토): 신규 초등 교사
4월 1일(토): 신규 중․고등 교사
4월 8일(토): 기존 교사
결과보고서 제출 마감10월 13일(금)
우수학급 선정 및 포상11월~12월
+
* 상기 일정은 위원회 내부 사정에 따라 변경될 수 있음
+
+
+
+ +
+
+ + + + +
+
+
+ + + + diff --git a/src/main/webapp/js/ncms_common.js b/src/main/webapp/js/ncms_common.js index 6fb81b2a..aad1fc7b 100644 --- a/src/main/webapp/js/ncms_common.js +++ b/src/main/webapp/js/ncms_common.js @@ -337,6 +337,7 @@ function delete_item(obj, fileIdx){ }); $('.totalfileSize').text(getStrFileSize(totalfileSize)) ; } + drawUploadArea(); } function drawUploadArea(){ diff --git a/src/main/webapp/js/web_common_custom.js b/src/main/webapp/js/web_common_custom.js new file mode 100644 index 00000000..89892ee5 --- /dev/null +++ b/src/main/webapp/js/web_common_custom.js @@ -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 += ''; + + //list_html += ''; + //list_html += ''+fileObj.name+''; + list_html += ''+fileObj.name+''; + list_html += '.'+fileExt+''; + list_html += ''+getStrFileSize(fileObj.size)+''; + //list_html += ''+getDate()+''; + list_html += ''; + list_html += ''; + list_html += ''; + list_html += ''; + $('#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(''); + //백그라운드 형식 +/* $('.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 += ''; + + //list_html += ''+fileObj.name+''; + list_html += ''+fileObj.name+''; + list_html += '.'+fileExt+''; + list_html += ''+getStrFileSize(fileObj.size)+''; + //list_html += ''+getDate()+''; + list_html += ''; + list_html += ''; + list_html += ''; + list_html += ''; + $('#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('이미지를 넣어주세요'); + /*강사 디테일 첨부파일 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('이미지를 넣어주세요'); + 강사 디테일 첨부파일 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('이미지를 넣어주세요 '); + } +} +/*강사 첨부파일 등록 종료 - 썸네일 추가 기능*/ + +/* 게시판 글 저장 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));