SPZSN00300_팝업공지입력.xfdl 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <FDL version="1.5">
  3. <TypeDefinition url="..\..\..\default_typedef.xml"/>
  4. <Form id="SPZSN00300_팝업공지입력" classname="SPZSN00300_팝업공지입력" inheritanceid="" position="absolute 0 0 922 922" titletext="팝업공지입력" oninit="SPZSN00300_oninit" onload="SPZSN00300_onload">
  5. <Layouts>
  6. <Layout>
  7. <Static id="caption6" text="로그인시 팝업 공지 입력" class="tit_1" position="absolute 0 0 175 25"/>
  8. <Div id="group" taborder="7" class="div_SA" position="absolute 0 25 922 85">
  9. <Layouts>
  10. <Layout>
  11. <Static id="caption2" text="게시일" class="search_name" position="absolute 13 8 72 28" anchor="default"/>
  12. <Static id="caption3" text="제목" class="search_name" position="absolute 14 34 57 55" anchor="default"/>
  13. <Calendar id="Calendar_fromdd" taborder="5" position="absolute 66 8 168 28" value="null" type="normal" dateformat="yyyy-MM-dd ddd" anchor="default"/>
  14. <Calendar id="Calendar_todd" taborder="6" position="absolute 194 8 296 28" value="null" dateformat="yyyy-MM-dd ddd" anchor="default"/>
  15. <Static id="Static00" text="~" position="absolute 173 8 188 28" style="align:center middle;" anchor="default"/>
  16. <Static id="caption00" text="화면 사이즈 가로" class="search_name" position="absolute 336 8 457 29" anchor="default"/>
  17. <MaskEdit id="ipt_height" taborder="8" mask="#" onkeydown="ipt_rtno_onkeydown" class="input_search" position="absolute 559 8 624 29" style="align:center middle;" anchor="default"/>
  18. <Static id="caption01" text="세로" class="search_name" position="absolute 521 8 558 29" anchor="default"/>
  19. <MaskEdit id="ipt_width" taborder="9" mask="#" onkeydown="ipt_rtno_onkeydown" class="input_search" position="absolute 459 8 524 29" style="align:center middle;" anchor="default"/>
  20. <Edit id="ipt_title" taborder="10" position="absolute 66 34 624 54" anchor="default"/>
  21. <Static id="caption04" text="활성화여부" class="search_name" position="absolute 658 8 736 29" anchor="default"/>
  22. <Static id="caption05" text="공지직종" class="search_name" position="absolute 658 34 736 55" anchor="default"/>
  23. <Radio id="Radio_histstat" taborder="11" columncount="2" rowcount="0" position="absolute 743 8 856 28" innerdataset="@ds_histstat" codecolumn="cdid" datacolumn="cdnm" anchor="default"/>
  24. <Radio id="Radio_jobkind" taborder="12" columncount="3" rowcount="0" position="absolute 743 34 913 54" innerdataset="@ds_jobkind" codecolumn="cdid" datacolumn="cdnm" index="-1" anchor="default"/>
  25. </Layout>
  26. </Layouts>
  27. </Div>
  28. <Tab id="tab_notice" taborder="11" scrollbars="autoboth" position="absolute 0 92 922 922" canchange="tab_notice_canchange">
  29. <Tabpages>
  30. <Tabpage id="tab_hwp" text="한글편집기">
  31. <Layouts>
  32. <Layout>
  33. <ActiveX id="pHwpCtrl" position="absolute 0 0 922 803" progid="{bd9c32de-3155-4691-8972-097d53b10052}" useautobitmapcache="1" anchor="default" taborder="0" windowed="true"/>
  34. </Layout>
  35. </Layouts>
  36. </Tabpage>
  37. <Tabpage id="tab_html" text="HTML">
  38. <Layouts>
  39. <Layout>
  40. <TextArea id="ta_contents" taborder="0" position="absolute 0 0 922 803" wordwrap="char"/>
  41. </Layout>
  42. </Layouts>
  43. </Tabpage>
  44. </Tabpages>
  45. </Tab>
  46. <Button id="Button00" taborder="12" text="미리보기" onclick="Button00_onclick" class="btn4" position="absolute 789 94 867 114"/>
  47. <Button id="Button_save" taborder="13" text="저장" onclick="Button_save_onclick" class="btn5" position="absolute 734 94 787 114"/>
  48. <Button id="Button_close" taborder="14" text="닫기" onclick="Button_close_onclick" class="btn3" position="absolute 869 94 922 114"/>
  49. <Button id="btn_imgupload" taborder="15" text="이미지업로드" position="absolute 640 94 728 114" class="btn2" onclick="btn_imgupload_onclick" visible="false"/>
  50. <Div id="div_upload" taborder="16" position="absolute 112 122 729 482" class="div_SA2" style="shadow:outer 3,3 3 gray;" visible="false">
  51. <Layouts>
  52. <Layout>
  53. <Grid id="grd_images" taborder="0" useinputpanel="false" position="absolute 8 29 609 351" binddataset="ds_images" anchor="default" autofittype="col" autoenter="select" oncellclick="div_upload_grd_images_oncellclick" selecttype="multirow" oncelldblclick="div_upload_grd_images_oncelldblclick">
  54. <Formats>
  55. <Format id="default">
  56. <Columns>
  57. <Column size="32"/>
  58. <Column size="446"/>
  59. <Column size="50"/>
  60. <Column size="20"/>
  61. <Column size="52"/>
  62. </Columns>
  63. <Rows>
  64. <Row size="24" band="head"/>
  65. <Row size="24"/>
  66. </Rows>
  67. <Band id="head">
  68. <Cell/>
  69. <Cell col="1" text="파일명"/>
  70. <Cell col="2" colspan="2" text="파일크기" taborder="undefined"/>
  71. <Cell col="4" text="파일선택"/>
  72. </Band>
  73. <Band id="body">
  74. <Cell/>
  75. <Cell col="1" displaytype="text" text="bind:filenm"/>
  76. <Cell col="2" displaytype="number" style="line:1 solid #b0b0b0ff,0 solid #b0b0b0ff,1 solid #b0b0b0ff,1 solid #b0b0b0ff;" text="bind:filesizedp"/>
  77. <Cell col="3" style="padding:0 0 0 0;" text="KB"/>
  78. <Cell col="4" displaytype="button" edittype="button" style="padding:2 10 2 10;" text="열기"/>
  79. </Band>
  80. </Format>
  81. </Formats>
  82. </Grid>
  83. <Static id="Static00" text="업로드 할 이미지를 선택하세요" position="absolute 8 8 260 28" class="tit_2" anchor="default"/>
  84. <Shape id="Shape00" position="absolute 8 21 609 33" class="line_10" anchor="default"/>
  85. <Button id="btn_upload" taborder="1" text="Upload" position="absolute 499 4 555 24" class="btn5" anchor="default" onclick="div_upload_btn_upload_onclick"/>
  86. <Button id="btn_close" taborder="2" text="닫기" position="absolute 557 4 609 24" class="btn3" onclick="div_upload_btn_close_onclick" anchor="default"/>
  87. <Button id="btn_add" taborder="3" text="행추가" position="absolute 386 4 438 24" class="btn2" anchor="default" onclick="div_upload_btn_add_onclick"/>
  88. <Button id="btn_del" taborder="4" text="행삭제" position="absolute 440 4 492 24" class="btn2" anchor="default" onclick="div_upload_btn_del_onclick"/>
  89. <Static id="Static01" text="이미지 업로드 기능은 개발 보류" position="absolute 67 155 552 221" style="color:red;font:Dotum,24,bold;"/>
  90. </Layout>
  91. </Layouts>
  92. </Div>
  93. <Static id="Static00" text="※ 이미지 수정은 HTML 탭에서 IMG src의 URL을 직접 수정해야 합니다." position="absolute 140 94 592 114" style="color:red;font:Dotum,9,bold;"/>
  94. </Layout>
  95. </Layouts>
  96. <Objects>
  97. <Dataset id="ds_req" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
  98. <ColumnInfo>
  99. <Column id="status" type="STRING" size="256"/>
  100. <Column id="genrdd" type="STRING" size="256"/>
  101. <Column id="genrno" type="STRING" size="256"/>
  102. <Column id="seqno" type="STRING" size="256"/>
  103. <Column id="histstat" type="STRING" size="256"/>
  104. <Column id="userinstcd" type="STRING" size="256"/>
  105. <Column id="jobkindcd" type="STRING" size="256"/>
  106. <Column id="ntcsubject" type="STRING" size="256"/>
  107. <Column id="ntccnts" type="STRING" size="256"/>
  108. <Column id="ntccnttype" type="STRING" size="256"/>
  109. <Column id="fromdd" type="STRING" size="256"/>
  110. <Column id="todd" type="STRING" size="256"/>
  111. <Column id="width" type="STRING" size="256"/>
  112. <Column id="height" type="STRING" size="256"/>
  113. </ColumnInfo>
  114. <Rows>
  115. <Row/>
  116. </Rows>
  117. </Dataset>
  118. <Dataset id="ds_histstat" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
  119. <ColumnInfo>
  120. <Column id="cdnm" type="STRING" size="256"/>
  121. <Column id="cdid" type="STRING" size="256"/>
  122. </ColumnInfo>
  123. <Rows>
  124. <Row>
  125. <Col id="cdnm">Y</Col>
  126. <Col id="cdid">Y</Col>
  127. </Row>
  128. <Row>
  129. <Col id="cdnm">N</Col>
  130. <Col id="cdid">N</Col>
  131. </Row>
  132. </Rows>
  133. </Dataset>
  134. <Dataset id="ds_jobkind" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
  135. <ColumnInfo>
  136. <Column id="cdid" type="STRING" size="256"/>
  137. <Column id="cdnm" type="STRING" size="256"/>
  138. </ColumnInfo>
  139. <Rows>
  140. <Row>
  141. <Col id="cdnm">전체</Col>
  142. <Col id="cdid"/>
  143. </Row>
  144. <Row>
  145. <Col id="cdid">0330</Col>
  146. <Col id="cdnm">의사</Col>
  147. </Row>
  148. <Row>
  149. <Col id="cdid">1140</Col>
  150. <Col id="cdnm">간호사</Col>
  151. </Row>
  152. </Rows>
  153. </Dataset>
  154. <Dataset id="ds_imagepath" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
  155. <ColumnInfo>
  156. <Column id="realpath" type="STRING" size="256"/>
  157. <Column id="temppath" type="STRING" size="256"/>
  158. </ColumnInfo>
  159. </Dataset>
  160. <Dataset id="ds_result" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
  161. <ColumnInfo>
  162. <Column id="genrno" type="STRING" size="256"/>
  163. </ColumnInfo>
  164. </Dataset>
  165. <Dataset id="ds_images" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
  166. <ColumnInfo>
  167. <Column id="filenm" type="STRING" size="256" sumtext="파일명"/>
  168. <Column id="filedata" type="BLOB" size="256" sumtext="파일데이터"/>
  169. <Column id="filesize" type="STRING" size="256" sumtext="파일크기"/>
  170. <Column id="filetype" type="STRING" size="256" sumtext="파일종류"/>
  171. <Column id="filesizedp" type="STRING" size="256" sumtext="파일크기표시용"/>
  172. <Column id="filepath" type="STRING" size="256" sumtext="파일경로"/>
  173. </ColumnInfo>
  174. </Dataset>
  175. </Objects>
  176. <Bind>
  177. <BindItem id="item2" compid="group.ipt_width" propid="displaynulltext" datasetid="ds_req" columnid="width"/>
  178. <BindItem id="item3" compid="group.ipt_height" propid="displaynulltext" datasetid="ds_req" columnid="height"/>
  179. <BindItem id="item4" compid="group.ipt_title" propid="displaynulltext" datasetid="ds_req" columnid="ntcsubject"/>
  180. <BindItem id="item5" compid="group.Radio_histstat" propid="value" datasetid="ds_req" columnid="histstat"/>
  181. <BindItem id="item6" compid="group.Radio_jobkind" propid="value" datasetid="ds_req" columnid="jobkindcd"/>
  182. <BindItem id="item0" compid="group.Calendar_fromdd" propid="value" datasetid="ds_req" columnid="fromdd"/>
  183. <BindItem id="item1" compid="group.Calendar_todd" propid="value" datasetid="ds_req" columnid="todd"/>
  184. <BindItem id="item7" compid="group.ipt_height" propid="value" datasetid="ds_req" columnid="height"/>
  185. <BindItem id="item8" compid="group.ipt_width" propid="value" datasetid="ds_req" columnid="width"/>
  186. <BindItem id="item9" compid="group.ipt_title" propid="value" datasetid="ds_req" columnid="ntcsubject"/>
  187. </Bind>
  188. <Script type="xscript4.0"><![CDATA[include "com_commonxp::comm_main.xjs"; // 전체공통 스크립트
  189. function SPZSN00300_oninit(obj:Form, e:InitEventInfo)
  190. {
  191. frmf_initForm(obj);
  192. }
  193. function SPZSN00300_onload(obj:Form, e:LoadEventInfo)
  194. {
  195. grdf_setRowTypeIcon(div_upload.grd_images, 0);
  196. tab_notice.tab_hwp.pHwpCtrl.ShowToolBar(true);
  197. tab_notice.tab_hwp.pHwpCtrl.ShowStatusBar(1);
  198. //글자 서식 툴만 show
  199. tab_notice.tab_hwp.pHwpCtrl.SetToolBar(-1, "TOOLBAR_FORMAT");
  200. tab_notice.tab_hwp.pHwpCtrl.SetToolBar(-1, "TOOLBAR_TABLE");
  201. //기존 데이터 수정
  202. if(plgv_new == false )
  203. {
  204. ds_req.setColumn(0, "status", "u");
  205. ds_req.setColumn(0, "genrdd", plgv_genrdd);
  206. ds_req.setColumn(0, "genrno", plgv_genrno);
  207. ds_req.setColumn(0, "histstat", plgv_histstat);
  208. ds_req.setColumn(0, "jobkindcd", plgv_jobkindcd);
  209. if(utlf_isNull(plgv_jobkindcd))
  210. {
  211. trace("jobkindcd is Null");
  212. group.Radio_jobkind.value = 0;
  213. ds_req.setColumn(0, "jobkindcd", "");
  214. }
  215. ds_req.setColumn(0, "ntcsubject", plgv_ntcsubject);
  216. ds_req.setColumn(0, "ntccnts", plgv_ntccnts);
  217. ds_req.setColumn(0, "fromdd", plgv_fromdd);
  218. ds_req.setColumn(0, "todd", plgv_todd);
  219. ds_req.setColumn(0, "width", plgv_width);
  220. ds_req.setColumn(0, "height", plgv_height);
  221. fHWPConvert(ds_req.getColumn(0, "ntccnts"));
  222. }
  223. //신규 입력
  224. else
  225. {
  226. ds_req.setColumn(0, "status", "i");
  227. ds_req.setColumn(0, "histstat", "Y");
  228. ds_req.setColumn(0, "jobkindcd", "");
  229. ds_req.setColumn(0, "ntcsubject", "");
  230. ds_req.setColumn(0, "ntccnts", "");
  231. ds_req.setColumn(0, "genrdd", utlf_getCurrentDate());
  232. ds_req.setColumn(0, "fromdd", utlf_getCurrentDate());
  233. ds_req.setColumn(0, "todd", utlf_getCurrentDate());
  234. ds_req.setColumn(0, "width", 520);
  235. ds_req.setColumn(0, "height", 430);
  236. }
  237. ds_req.setColumn(0, "ntccnttype", "HTML");
  238. }
  239. //미리보기
  240. function Button00_onclick(obj:Button, e:ClickEventInfo)
  241. {
  242. var varHTMLConvertResult = fGetContents(tab_notice.tabindex);
  243. fOpenNoticeDialog(varHTMLConvertResult);
  244. }
  245. // DB 또는 TextArea의 내용을 HWP OCX에 표시 하기 위한 함수
  246. function fHWPConvert(input) {
  247. if(ds_imagepath.rowcount <= 0) // 초기화 되어 있지 않다면 초기화
  248. fSetRealImagePath(ds_req.getColumn(0, "ntccnts"));
  249. fGetRealImagePath(input);
  250. tab_notice.tab_hwp.pHwpCtrl.SetTextFile(input, "HTML", "");
  251. }
  252. //한글에서 변환된 HTML 전체를 DB에 저장하기에는 양이 많으므로
  253. //불필요 부분 삭제
  254. function fHTMLConvert(input)
  255. {
  256. //1. HEAD 삭제
  257. var varStart = input.indexOf("<HEAD>");
  258. var varEnd = input.lastIndexOf("</HEAD>") + 7;
  259. var strText = input.slice(varStart, varEnd);
  260. var strResult = input.replace(strText, "");
  261. //2. CLASS=HStyle0 삭제
  262. var regExp = /\sCLASS=HStyle\d/g;
  263. strResult = strResult.replace(regExp, "");
  264. //3. 정렬을 div에 정렬로 변경
  265. strResult = strResult.replace("<P STYLE='text-align:center;'>", "<div align=\"center\">");
  266. strResult = strResult.replace("<P STYLE='text-align:left;'>", "<div align=\"left\">");
  267. strResult = strResult.replace("<P STYLE='text-align:right;'>", "<div align=\"right\">");
  268. //4. div 구분을 위하여 변경
  269. strResult = strResult.replace("<P>", "</div><div>");
  270. //5. div 구분으로 필요없는 </p> 삭제
  271. strResult = strResult.replace("</P>", "");
  272. //6. 밑줄의 경우 한글에서는 "underline"로 출력물이 나와 1.0에서 표시안됨
  273. strResult = strResult.replace("\"underline\"", "underline");
  274. //7. 취소선의 경우 한글에서는 "line-through"로 출력물이 나와 1.0에서 표시안됨, 따옴표는 \"
  275. strResult = strResult.replace("\"line-through\"", "line-through");
  276. return fSetRealImagePath(strResult); // 이미지 경로를 로컬이 아닌 웹 주소로 변경
  277. }
  278. //공지 다이얼로그에서 미리보기
  279. function fOpenNoticeDialog(varHTMLConvertResult)
  280. {
  281. var nMoniterIndex = system.getMonitorIndex(system.clientToScreenX(this.parent, this.parent.position.x), system.clientToScreenY(this.parent, this.parent.position.y)); //모니터번호
  282. var objScreenInfo = system.getScreenRect(nMoniterIndex);
  283. var nWidth = 710;
  284. var nHeight = 500;
  285. var nScreenLeft = objScreenInfo.left;
  286. var nScreenTop = objScreenInfo.top;
  287. var nScreenRight = objScreenInfo.right;
  288. var nScreenBottom = objScreenInfo.bottom;
  289. var nScreenWidth = nScreenRight - nScreenLeft;
  290. var nScreenHeight = nScreenBottom - nScreenTop;
  291. var objParam = new Object();
  292. objParam.plgv_parent = "SPZSN00300";
  293. objParam.plgv_ntcsubject = ds_req.getColumn(0,"ntcsubject");
  294. objParam.plgv_noticeContents = varHTMLConvertResult;
  295. objParam.plgv_noticeContentType = ds_req.getColumn(0,"ntccnttype");
  296. objParam.plgv_noticeDate = utlf_splitDateS(ds_req.getColumn(0,"genrdd"), "-");
  297. objParam.plgv_noticeFromdd = utlf_splitDateS(ds_req.getColumn(0,"fromdd"), "-");
  298. objParam.plgv_noticeTodd = utlf_splitDateS(ds_req.getColumn(0,"todd"), "-");
  299. var width = group.ipt_width.text;
  300. var height = group.ipt_height.text;
  301. if(!utlf_isNull(width)) nWidth = parseInt(width);
  302. if(!utlf_isNull(height)) nHeight = parseInt(height);
  303. if(nWidth < 480) nWidth = 480;
  304. if(nHeight < 250) nHeight = 250;
  305. objParam.plgv_width = nWidth;
  306. objParam.plgv_height = nHeight;
  307. var left = (nScreenLeft + (nScreenWidth / 2)) - (nWidth / 2);
  308. var top = (nScreenTop + (nScreenHeight / 2)) - (nHeight / 2);
  309. var xpt = left;
  310. var ypt = top;
  311. frmf_openInternal("form_login_noticeContents", "com_hismainxp::form_login_noticeContents.xfdl", objParam, false, null, xpt, ypt, nWidth, nHeight, "layered=true,resize=true,nocenter=true");
  312. }
  313. //저장
  314. function Button_save_onclick(obj:Button, e:ClickEventInfo)
  315. {
  316. var varHTMLConvertResult = fGetContents(tab_notice.tabindex);
  317. ds_req.setColumn(0, "ntccnts", varHTMLConvertResult);
  318. if(utlf_isNull(ds_req.getColumn(0, "ntcsubject")))
  319. {
  320. sysf_messageBox("제목을 ", "C001");
  321. return;
  322. }
  323. if(utlf_isNull(ds_req.getColumn(0, "fromdd")))
  324. {
  325. sysf_messageBox("시작 게시일을 ", "C001");
  326. return;
  327. }
  328. if(utlf_isNull(ds_req.getColumn(0, "todd")))
  329. {
  330. sysf_messageBox("종료 게시일을 ", "C001");
  331. return;
  332. }
  333. if(utlf_isNull(ds_req.getColumn(0, "width")))
  334. {
  335. sysf_messageBox("가로 화면사이즈를 ", "C001");
  336. return;
  337. }
  338. if(utlf_isNull(ds_req.getColumn(0, "height")))
  339. {
  340. sysf_messageBox("세로 화면사이즈를 ", "C001");
  341. return;
  342. }
  343. if(utlf_isNull(ds_req.getColumn(0, "histstat")))
  344. {
  345. sysf_messageBox("활성화 여부를 ", "C002");
  346. return;
  347. }
  348. var oParam = {};
  349. oParam.id = "SPZSN00002";
  350. oParam.service = "noticeinfoapp.noticeinfo";
  351. oParam.method = "SavePopupNotice";
  352. oParam.inds = "req=ds_req";
  353. oParam.outds = "ds_result=result";
  354. oParam.callback = "cf_SPZSN00002";
  355. oParam.async = false;
  356. tranf_submit(oParam);
  357. // 최초 insert 시에는 데이터 저장 후 genrno가 없다
  358. // 바로 다시 저장시 genrno가 없어서 저장이 안되기 때문에
  359. // insert 시 받아온 genrno를 사용하도록 함
  360. var genrno = ds_result.getColumn(0, "genrno");
  361. if(!utlf_isNull(genrno)) {
  362. ds_req.setColumn(0, "genrno", genrno);
  363. }
  364. }
  365. function cf_SPZSN00002(sSvcId, nErrorCode, sErrorMsg)
  366. {
  367. if(nErrorCode < 0) return;
  368. sysf_messageBox("저장되었습니다","I");
  369. // 저장이 완료되고난 후에는 update로 수정
  370. ds_req.setColumn(0, "status", "u");
  371. }
  372. function Button_close_onclick(obj:Button, e:ClickEventInfo)
  373. {
  374. opener.frmf_setParameter("SPZSN00300_popupendflag", "close");
  375. this.close();
  376. }
  377. function tab_notice_canchange(obj:Tab, e:TabIndexChangeEventInfo)
  378. {
  379. if(e.postindex == 1) {
  380. //btn_imgupload.visible = true;
  381. tab_notice.tab_html.ta_contents.value = fHTMLConvert(tab_notice.tab_hwp.pHwpCtrl.GetTextFile("HTML", ""));
  382. } else {
  383. //btn_imgupload.visible = false;
  384. fHWPConvert(tab_notice.tab_html.ta_contents.value);
  385. }
  386. }
  387. function fGetContents(tabindex) {
  388. var varHTMLConvertResult = "";
  389. if(tabindex == 1) {
  390. varHTMLConvertResult = tab_notice.tab_html.ta_contents.value;
  391. } else {
  392. varHTMLConvertResult = fHTMLConvert(tab_notice.tab_hwp.pHwpCtrl.GetTextFile("HTML", ""));
  393. }
  394. return varHTMLConvertResult;
  395. }
  396. function fSetRealImagePath(contents) {
  397. var datas = contents.split("<IMG src="); // 한글편집기 탭 내용
  398. var isInit = false;
  399. if(ds_imagepath.rowcount <= 0) { // 최초엔 무조건 초기화
  400. isInit = true;
  401. }
  402. if(isInit) {
  403. ds_imagepath.clearData();
  404. // 초기화 후 한글편집기 기준의 이미지 만큼 행 생성
  405. for(var i = 1; i < datas.length; i++)
  406. ds_imagepath.addRow();
  407. }
  408. var row = 0;
  409. for(var i = 1; i < datas.length; i++) { // 첫번째에는 src의 경로가 들어올 수 없음
  410. var data = datas[i];
  411. if(data.indexOf("file://") < 0) continue;
  412. var endIndex = data.indexOf("\"", 1);
  413. var path = data.substring(1, endIndex);
  414. if(isInit) {
  415. ds_imagepath.setColumn(row, "temppath", path);
  416. } else {
  417. var realpath = ds_imagepath.getColumn(row, "realpath");
  418. if(!utlf_isNull(realpath))
  419. contents = contents.replace(path, realpath);
  420. }
  421. row++;
  422. }
  423. return contents;
  424. }
  425. function fGetRealImagePath(contents) {
  426. var datas = contents.split("<IMG src=");
  427. if(datas.length > 1) {
  428. var row = 0;
  429. for(var i = 1; i < datas.length; i++) { // 첫번째에는 src의 경로가 들어올 수 없음
  430. var data = datas[i];
  431. if(data.indexOf("http://") < 0 && data.indexOf("https://") < 0) continue;
  432. var endIndex = data.indexOf("\"", 1);
  433. var path = data.substring(1, endIndex);
  434. ds_imagepath.setColumn(row, "realpath", path);
  435. row++;
  436. }
  437. }
  438. }
  439. function btn_imgupload_onclick(obj:Button, e:ClickEventInfo)
  440. {
  441. div_upload.visible = true;
  442. }
  443. function div_upload_btn_close_onclick(obj:Button, e:ClickEventInfo)
  444. {
  445. div_upload.visible = false;
  446. }
  447. function div_upload_btn_add_onclick(obj:Button, e:ClickEventInfo)
  448. {
  449. ds_images.addRow();
  450. }
  451. function div_upload_btn_del_onclick(obj:Button, e:ClickEventInfo)
  452. {
  453. var selectedRows = grdf_getSelectedRows(div_upload.grd_images);
  454. for(var i = selectedRows.length - 1; i >= 0; i--) {
  455. var row = selectedRows[i];
  456. var status = ds_images.getRowType(row);
  457. if(status == Dataset.ROWTYPE_INSERT){
  458. ds_images.deleteRow(row);
  459. }else{
  460. var arrPostion = new Array();
  461. arrPostion[0] = row;
  462. grdf_setStatus(div_upload.grd_images, "D", arrPostion);
  463. }
  464. }
  465. }
  466. function div_upload_grd_images_oncellclick(obj:Grid, e:GridClickEventInfo)
  467. {
  468. if(e.col == 4)
  469. fOpenFiles(e.row);
  470. }
  471. function div_upload_grd_images_oncelldblclick(obj:Grid, e:GridClickEventInfo)
  472. {
  473. fOpenFiles(e.row);
  474. }
  475. function fOpenFiles(row) {
  476. var fd = new FileDialog;
  477. var objVFileList = fd.open("첨부 할 이미지를 선택하여 주십시오.", FileDialog.MULTILOAD);
  478. if(!utlf_isNull(objVFileList)) {
  479. for(var i = 0; i < objVFileList.length; i++) {
  480. if(i > 0) {
  481. if(row < ds_images.rowcount - 1) {
  482. row = ds_images.insertRow(row + 1); // 아래행에 insert 하기 위해 1 더함
  483. } else {
  484. row = ds_images.addRow();
  485. }
  486. }
  487. var objFileinfo = dsf_writeFileToDs(objVFileList[i], ds_images, i, "filedata");
  488. ds_images.setColumn(row, "filenm", objFileinfo.filename);
  489. ds_images.setColumn(row, "filesize", objFileinfo.filesize);
  490. ds_images.setColumn(row, "filesizedp", Math.ceil(objFileinfo.filesize / 1024));
  491. ds_images.setColumn(row, "filetype", objFileinfo.filetype);
  492. //파일 크기가 너무 큰경우 메세지를 띄운다.
  493. if (!checkFileSize(objFileinfo.filesize)){
  494. sysf_messageBox(objFileinfo.filename + "\n파일 크기가 최대치(" + "10,240 " + "KB)를", "E003");
  495. ds_images.setColumn(row, "filenm", "");
  496. ds_images.setColumn(row, "filesize", "");
  497. ds_images.setColumn(row, "filesizedp", "");
  498. ds_images.setColumn(row, "filetype", "");
  499. ds_images.setColumn(row, "filedata", "");
  500. break;
  501. }
  502. }
  503. }
  504. }
  505. var gMaxSize = 10485760; //10,485,760
  506. function checkFileSize(fileSize)
  507. {
  508. if (fileSize <= gMaxSize)
  509. return true;
  510. else
  511. return false;
  512. }
  513. function div_upload_btn_upload_onclick(obj:Button, e:ClickEventInfo)
  514. {
  515. }
  516. ]]></Script>
  517. </Form>
  518. </FDL>