SMMNN03000.js 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535
  1. /**
  2. * @desc : 게시판 화면 초기화
  3. * @
  4. * @param :
  5. * @return :
  6. * @author :
  7. * @---------------------------------------------------
  8. */
  9. function fInitialize(){
  10. //조회된 조건 초기화
  11. ipt_title.value = "";
  12. ipt_content.value = "";
  13. ipt_attfilenm.value = "";
  14. //조회날짜 받아옴
  15. var fromdd = ((getCurrentDate().toDate()).getAddDate(-30)).getDateFormat();
  16. var todd = getCurrentDate();
  17. var sRecflag = model.getValue("/root/main/cond/trnsinfo/recflag");
  18. //model.makeValue("/root/send2/reqdata/cdgrupid", "'T85'");
  19. //model.makeValue("/root/send2/reqdata/srchdd", getCurrentDate());
  20. //submit("TRMNW00001", false);
  21. //한달을 기준으로 한달안에 보내진 게시판만 보여줌
  22. model.makeValue("/root/main_bbs/cond/fromdd",fromdd);
  23. model.makeValue("/root/main_bbs/cond/todd",todd);
  24. model.makeValue("/root/main_bbs/cond/scrhgubun","T");
  25. model.makeValue("/root/main_bbs/cond/scrhvalue","");
  26. model.makeValue("/root/main_bbs/cond/recflag", sRecflag);
  27. // 공통코드 스크립트 호출
  28. zbcfGetCodeList( new Array("M0636"), new Array("/root/init/M0636"));
  29. //model.setValue("/root/main_bbs/cond/bbscls","P");
  30. //combo2.refresh();
  31. // 게시판 리스트를 조회
  32. fgetBbsList();
  33. }
  34. /**
  35. * @desc : 게시판 조회
  36. * @
  37. * @param :
  38. * @return :
  39. * @author :
  40. * @---------------------------------------------------
  41. */
  42. function fgetBbsList(){
  43. //조회시에 수정및 삭제를 할수 없음
  44. btn_new.disabled = false;
  45. btn_mod.disabled = true;
  46. btn_cancel.visible = false;
  47. btn_save.disabled = true;
  48. btn_del.disabled = true;
  49. btn_addcomt.disabled = true;
  50. btn_addcomtsave.disabled = true;
  51. btn_addcomtdel.disabled = true;
  52. btn_fileadd.visible = false;
  53. btn_filedel.visible = false;
  54. btn_down.visible = false;fNewBbs
  55. btn_preview.visible = false;
  56. ipt_title.disabled = true;
  57. cmb_bbscls.disabled = true;
  58. ipt_attfilenm.disabled = true;
  59. model.makeValue("/root/main_bbs/iteminfo/status","e");
  60. // 조회 조건을 셋팅 한다.
  61. var bbscls = model.getValue("/root/main_bbs/cond/bbscls");
  62. var fromdd = model.getValue("/root/main_bbs/cond/fromdd");
  63. var todd = model.getValue("/root/main_bbs/cond/todd");
  64. var scrhgubun = model.getValue("/root/main_bbs/cond/scrhgubun");
  65. var scrhvalue = model.getValue("/root/main_bbs/cond/scrhvalue");
  66. var sRecflag = model.getValue("/root/main_bbs/cond/recflag");
  67. //alert("fgetBbsList_Recflag : " + sRecflag);
  68. model.setValue("/root/send2/bbscls", bbscls);
  69. model.setValue("/root/send2/fromdd", fromdd);
  70. model.setValue("/root/send2/todd", todd);
  71. model.setValue("/root/send2/scrhgubun", scrhgubun);
  72. model.setValue("/root/send2/scrhvalue", scrhvalue);
  73. model.setValue("/root/send2/gubn", "A");
  74. model.setValue("/root/send2/recflag", sRecflag);
  75. model.removeNodeset("/root/main_bbs/bbsinfo/bbslist");
  76. model.resetInstanceNode("/root/main_bbs/iteminfo");
  77. // 게시판 리스트를 조회
  78. submit("TRMNN03101");
  79. }
  80. /**
  81. * @desc : 게시판 상세조회 (조회모드)
  82. * @
  83. * @param : 행번호
  84. * @return :
  85. * @author :
  86. * @---------------------------------------------------
  87. */
  88. function fgetBbsDetail(row){
  89. // 행번호가 없다면 바로 리턴 (버튼클릭하여 공지차을 띄운경우)
  90. if (row == "" || row > grd_bbs.rows) return;
  91. // 이미 신규작성되거나 수정된 게시판이 존재하면 메시지 창 띄우면서 리턴
  92. var status = model.getValue("/root/main_bbs/iteminfo/status");
  93. if (status == "i" || status == "u"){
  94. messageBox("작성한 글이 저장되지 않았습니다. 저장버튼이나 작성취소 버튼을 눌러주세요.", "I999");
  95. return;
  96. }
  97. // 해당 게시글을 뿌려줌
  98. model.copyNode("/root/main_bbs/iteminfo", "/root/main_bbs/bbsinfo/bbslist["+ row + "]");
  99. // 조회수 증가
  100. var bbscls = model.getValue("/root/main_bbs/iteminfo/bbscls");
  101. var bbsno = model.getValue("/root/main_bbs/iteminfo/bbsno");
  102. var recflag = model.getValue("/root/main_bbs/iteminfo/recflag");
  103. //alert("fgetBbsDetail(row)_recflag : " + recflag);
  104. if (bbscls == "" || bbsno == "" || recflag == ""){
  105. return;
  106. }
  107. model.setValue("/root/send2/bbscls", bbscls);
  108. model.setValue("/root/send2/bbsno", bbsno);
  109. model.setValue("/root/send2/gubn", "A");
  110. model.setValue("/root/send2/recflag", recflag);
  111. submit("TXMNN03102", false);
  112. //setTree( gridObj, levelcol, targetcol, collapsed, outlinebar )
  113. //setTree(grd_reslist, grd_reslist.colRef("depth"), grd_reslist.colRef("resfact"));
  114. submit("TRMNN03104");
  115. grd_bbs.valueMatrix(row, grd_bbs.colRef("cnfmyn")) = "Y";
  116. // 사용자정보를 가지고와서 글작성자가 아니면 수정/삭제할수 없도록 함
  117. var userid = getUserId();
  118. var writerid = model.getValue("/root/main_bbs/iteminfo/fstrgstrid");
  119. var authuser = model.getValue("/root/codeinfo/codelist[cdid='" + userid + "']/cdid");
  120. if (userid == writerid) {
  121. btn_mod.disabled = false;
  122. btn_del.disabled = false;
  123. ipt_content.attribute("editable")= true;
  124. ipt_content.refresh();
  125. }else{
  126. if(authuser == "" || authuser == null) {
  127. btn_mod.disabled = true;
  128. btn_del.disabled = true;
  129. ipt_content.attribute("editable")= false;
  130. ipt_content.refresh();
  131. } else {
  132. btn_mod.disabled = false;
  133. btn_del.disabled = false;
  134. ipt_content.attribute("editable")= true;
  135. ipt_content.refresh();
  136. }
  137. }
  138. // 각종 컨트롤 보여주기 설정
  139. ipt_title.disabled = true;
  140. //ipt_content.attribute("editable") = false;
  141. btn_fileadd.visible = false;
  142. btn_filedel.visible = false;
  143. btn_down.visible = true;
  144. if (fCheckFileExt())
  145. btn_preview.visible = true;
  146. else
  147. btn_preview.visible = false;
  148. btn_addcomt.disabled = false;
  149. btn_addcomtsave.disabled = false;
  150. btn_addcomtdel.disabled = false;
  151. model.refresh();
  152. }
  153. /**
  154. * @desc : 파일 다운로드 버튼 클릭시 이벤트
  155. * @
  156. * @param :
  157. * @return :
  158. * @author :
  159. * @---------------------------------------------------
  160. */
  161. function fFileDown() {
  162. //파일명를 받아옴
  163. var getfilenm = model.getValue("/root/main_bbs/iteminfo/attfilenm");
  164. //파일명이 있는 경우 다운로드
  165. if(getfilenm != ""){
  166. //파일명을 받아옴
  167. var filenm = model.getValue("/root/main_bbs/iteminfo/attfilenm");
  168. //파일명의 확장자만 받아옴
  169. var fileext = filenm.lastIndexOf(".");
  170. var ext = filenm.substring(fileext +1);
  171. //파일을 다운로드 하기 위해 저장할 창을 띄움
  172. var filesave = window.fileDialog("save","|",false,filenm,ext,"All Files(*.*)|*.*");
  173. //키값을 받아옴
  174. var bbscls = model.getValue("/root/main_bbs/iteminfo/bbscls");
  175. var bbsno = model.getValue("/root/main_bbs/iteminfo/bbsno");
  176. var recflag = model.getValue("/root/main_bbs/iteminfo/recflag");
  177. //키값을 가지고 DB에 저장된 데이타를 조회하러 간다
  178. if (filesave != "") {
  179. model.download(getActionURL("TRMNN03102")+"&bbscls="+bbscls+"&bbsno="+bbsno+"&recflag="+recflag ,filesave);
  180. }
  181. }
  182. }
  183. /**
  184. * @desc : 파일 미리보기 버튼 클릭시 이벤트
  185. * @
  186. * @param :
  187. * @return :
  188. * @author :
  189. * @---------------------------------------------------
  190. */
  191. function fFilePreview() {
  192. var fso, folder;
  193. var temp_path = "C:\\temp2";
  194. FSO = new ActiveXObject("Scripting.FileSystemObject");
  195. // 객체 생성 실패하면 리턴
  196. if (FSO == null){
  197. return;
  198. }
  199. // 시스템 드라이브가 없다면..
  200. if (FSO.DriveExists("C") == false){
  201. return;
  202. }
  203. // 임시디렉토리가 없으면 생성
  204. if (FSO.FolderExists(temp_path) == false){
  205. folder = FSO.CreateFolder(temp_path);
  206. }
  207. //파일명를 받아옴
  208. var getfilenm = model.getValue("/root/main_bbs/iteminfo/attfilenm");
  209. //파일명이 있는 경우 다운로드
  210. if(getfilenm == ""){
  211. return;
  212. }
  213. //파일명을 받아옴
  214. var filenm = model.getValue("/root/main_bbs/iteminfo/attfilenm");
  215. //키값을 받아옴
  216. var bbscls = model.getValue("/root/main_bbs/iteminfo/bbscls");
  217. var bbsno = model.getValue("/root/main_bbs/iteminfo/bbsno");
  218. var recflag = model.getValue("/root/main_bbs/iteminfo/recflag");
  219. //키값을 가지고 DB에 저장된 데이타를 조회하러 간다
  220. model.download(getActionURL("TRMNN03102")+"&bbscls="+bbscls+"&bbsno="+bbsno+"&recflag="+recflag ,temp_path+"\\"+filenm, false);
  221. window.exec(temp_path+"\\"+filenm, "");
  222. }
  223. function ManipFiles()
  224. {
  225. var fso, f1, f2, s;
  226. fso = new ActiveXObject("Scripting.FileSystemObject");
  227. f1 = fso.CreateTextFile("c:\\testfile.txt", true);
  228. Response.Write("파일 쓰는 중 <br>");
  229. // 줄을 씁니다.
  230. f1.Write("텍스트입니다.");
  231. // 파일을 닫습니다.
  232. f1.Close();
  233. Response.Write("파일을 c:\\tmp로 이동하는 중 <br>");
  234. // C:\ 루트에 있는 파일에 대한 핸들을 가져옵니다.
  235. f2 = fso.GetFile("c:\\testfile.txt");
  236. // 파일을 \tmp 디렉터리로 옮깁니다.
  237. f2.Move ("c:\\tmp\\testfile.txt");
  238. Response.Write("파일을 c:\\temp로 복사하는 중 <br>");
  239. // 파일을 \temp로 복사합니다.
  240. f2.Copy ("c:\\temp\\testfile.txt");
  241. Response.Write("파일 삭제 중 <br>");
  242. // 파일의 현재 위치에 대한 핸들을 가져옵니다.
  243. f2 = fso.GetFile("c:\\tmp\\testfile.txt");
  244. f3 = fso.GetFile("c:\\temp\\testfile.txt");
  245. // 파일을 삭제합니다.
  246. f2.Delete();
  247. f3.Delete();
  248. Response.Write("완료되었습니다!");
  249. }
  250. /**
  251. * @desc : 파일첨부버튼 클릭시 이벤트
  252. * @
  253. * @param :
  254. * @return :
  255. * @author :
  256. * @---------------------------------------------------
  257. */
  258. function fFileAdd() {
  259. //******파일을 첨부하기 위해 파일열기가 open 되게 한다.
  260. //파일의 크기를 측정한다.
  261. var maxsize = upload1.attribute("filesize");
  262. var name = model.getValue("/root/main_bbs/iteminfo/attfilenm");
  263. if(name != '' || name == '-'){
  264. var fileupdata = messageBox(name + " 파일 수정을" , "S001");
  265. if(fileupdata == '6'){
  266. //파일 삭제
  267. //input박스에 나타난 명을 제거
  268. ipt_attfilenm.value = "";
  269. //파일 저장
  270. //파일을 받아오기 위해 파일열기 팝업창을 띄운다.
  271. var fileopen = window.fileDialog("open","|","false");
  272. //파일 경로가 아닌 이름만 input박스에 넣기 위한 처리
  273. model.makeValue("/root/main_bbs/iteminfo/attfilenm", fileopen);
  274. var name = model.getValue("/root/main_bbs/iteminfo/attfilenm");
  275. //lastIndexOf함수는 \\이것을 뒤어세 검색하여 나오면 앞에 것은 지운다.
  276. var filename = name.lastIndexOf("\\");
  277. //open 파일명를 input박스에 넣는다.
  278. ipt_attfilenm.value = fileopen.substring(filename + 1);
  279. //선택한 파일이 저장버튼을 눌렀을때 저장이 되게 하기 위해 파일 저장 인스턴스에 파일주소를 저장해 둔다.
  280. model.makeValue("/root/send2/file/filename", name);
  281. model.refresh();
  282. //파일 크기가 너무 큰경우 메세지를 띄운다.
  283. if (!checkFileSize(upload1)){
  284. ipt_attfilenm.value = "";
  285. messageBox("파일 크기가 최대치("+maxsize+"Byte)를", "E003");
  286. model.resetInstanceNode("/root/send2/file");
  287. }
  288. model.makeValue("/root/main_bbs/iteminfo/fileyn", 'Y');
  289. }else if(fileupdata == '7'){
  290. messageBox(name + " 파일 수정을 하지", "E007");
  291. model.makeValue("/root/main_bbs/iteminfo/fileyn", 'N');
  292. }else{
  293. }
  294. }else{
  295. //파일을 받아오기 위해 파일열기 팝업창을 띄운다.
  296. var fileopen = window.fileDialog("open","|","false");
  297. //파일 경로가 아닌 이름만 input박스에 넣기 위한 처리
  298. model.makeValue("/root/main_bbs/iteminfo/attfilenm", fileopen);
  299. var name = model.getValue("/root/main_bbs/iteminfo/attfilenm");
  300. //lastIndexOf함수는 \\이것을 뒤어세 검색하여 나오면 앞에 것은 지운다.
  301. var filename = name.lastIndexOf("\\");
  302. //open 파일명를 input박스에 넣는다.
  303. ipt_attfilenm.value = fileopen.substring(filename + 1);
  304. //선택한 파일이 저장버튼을 눌렀을때 저장이 되게 하기 위해 파일 저장 인스턴스에 파일주소를 저장해 둔다.
  305. model.makeValue("/root/send2/file/filename", name);
  306. model.refresh();
  307. //파일 크기가 너무 큰경우 메세지를 띄운다.
  308. if (!checkFileSize(upload1)){
  309. ipt_attfilenm.value = "";
  310. messageBox("파일 크기가 최대치("+maxsize+"Byte)를", "E003");
  311. model.resetInstanceNode("/root/send2/file");
  312. }
  313. model.makeValue("/root/main_bbs/iteminfo/fileyn", 'Y');
  314. }
  315. }
  316. /**
  317. * @desc : 삭제시 발생하는 이벤트
  318. * @
  319. * @param :
  320. * @return :
  321. * @author :
  322. * @---------------------------------------------------
  323. */
  324. function fFileDel() {
  325. var name = model.getValue("/root/main_bbs/iteminfo/attfilenm");
  326. if((name != '')){
  327. var fileupdata = messageBox(name + " 파일 삭제를" , "S001");
  328. if(fileupdata == '6'){
  329. //파일 삭제
  330. ipt_attfilenm.value = "";
  331. model.resetInstanceNode("/root/send2/file");
  332. }
  333. }
  334. model.refresh();
  335. }
  336. /**
  337. * @desc : 게시판 내용 삭제
  338. * @
  339. * @param :
  340. * @return :
  341. * @author :
  342. * @---------------------------------------------------
  343. */
  344. function fNoticeDel() {
  345. var bbscls = model.getValue("/root/main_bbs/iteminfo/bbscls");
  346. var bbsno = model.getValue("/root/main_bbs/iteminfo/bbsno");
  347. if (bbscls == "" || bbsno == ""){
  348. return;
  349. }
  350. // 사용자정보를 가지고와서 글작성자가 아니면 삭제할 수 없도록 함
  351. var userid = getUserId();
  352. var writerid = model.getValue("/root/main_bbs/iteminfo/fstrgstrid");
  353. var authuser = model.getValue("/root/codeinfo/codelist[cdid='" + userid + "']/cdid");
  354. if(authuser == "" || authuser == null) {
  355. btn_mod.disabled = true;
  356. btn_del.disabled = true;
  357. ipt_content.attribute("editable")= false;
  358. ipt_content.refresh();
  359. } else {
  360. btn_mod.disabled = false;
  361. btn_del.disabled = false;
  362. ipt_content.attribute("editable")= true;
  363. ipt_content.refresh();
  364. }
  365. if (userid == writerid) {
  366. model.makeValue("/root/main_bbs/iteminfo/status","d"); // 삭제표시
  367. fExeSave(); // 저장
  368. } else {
  369. if(authuser == "" || authuser == null) {
  370. messageBox("작성자만 삭제 ","I006");
  371. } else {
  372. model.makeValue("/root/main_bbs/iteminfo/status","d"); // 삭제표시
  373. fExeSave(); // 저장
  374. }
  375. }
  376. }
  377. /**
  378. * @desc : 게시판 신규 /수정 후 저장
  379. * @
  380. * @param :
  381. * @return :
  382. * @author :
  383. * @---------------------------------------------------
  384. */
  385. function fExeSave() {
  386. //debugger;
  387. var status = model.getValue("/root/main_bbs/iteminfo/status");
  388. // 게시판 마스터
  389. var nodes_iteminfo = instance1.selectNodes("/root/main_bbs/iteminfo");
  390. var getData_iteminfo = getNodeListCSV(nodes_iteminfo);
  391. model.setValue("/root/send2/savedata", getData_iteminfo);
  392. // 서브밋한다.
  393. var retvalue = submit("TXMNN03101");
  394. // 저장시 에러난 경우 목록을 재로딩함
  395. if(retvalue == false)
  396. {
  397. if (status == "i"){
  398. messageBox("새 게시글 작성에", "E009");
  399. }else if (status == "u"){
  400. messageBox("새 게시글 수정에", "E009");
  401. }else{
  402. messageBox("새 게시글 삭제에", "E009");
  403. }
  404. }else{
  405. if (status == "i"){
  406. messageBox("새 게시글이 작성이", "I001");
  407. }else if (status == "u"){
  408. messageBox("게시글이 수정이", "I001");
  409. }else{
  410. messageBox("게시글이 삭제", "I001");
  411. }
  412. fgetBbsList(); // 재조회
  413. }
  414. }
  415. function fCheckFileExt() {
  416. retvalue = false;
  417. var filename = model.getValue("/root/main_bbs/iteminfo/attfilenm");
  418. var IMG_FORMAT = "\\.(bmp|gif|jpg|jpeg|png|doc|xls|cvs|txt|ppt|hwp|pptx)$";
  419. if( (new RegExp(IMG_FORMAT, "i")).test(filename)){
  420. retvalue = true;
  421. }else{
  422. retvalue = false;
  423. }
  424. return retvalue;
  425. }
  426. function fNewBbs() {
  427. //**********초기화
  428. //제목, 첨부, 내용에 data 제거
  429. ipt_title.value = "";
  430. ipt_content.value = "";
  431. ipt_attfilenm.value = "";
  432. var bbscls = model.getValue("/root/main_bbs/cond/bbscls");
  433. var recflag = model.getValue("/root/main_bbs/cond/recflag");
  434. model.setValue("/root/main_bbs/iteminfo/bbscls", bbscls);
  435. model.setValue("/root/main_bbs/iteminfo/gubn", 'A');
  436. model.setValue("/root/main_bbs/iteminfo/recflag", recflag);
  437. // 첨부파일 초기화
  438. model.resetInstanceNode("/root/send2/file");
  439. model.refresh();
  440. }
  441. function fPrtBbs() {
  442. model.makeNode("/root/temp/bbsinfo/bbslist");
  443. copyNodesetType("/root/temp/bbsinfo/bbslist", grd_bbs.nodeset+ "[chkyn='Y']");
  444. exeReportPreview("RPMNP00500", "XMLSTR");
  445. }