浏览代码

Merge branch 'develop' of http://112.172.147.34:4936/style24/STYLE24.git into develop

gagamel 5 年之前
父节点
当前提交
fa3d8bac29
共有 54 个文件被更改,包括 324 次插入2633 次删除
  1. 1 1
      style24.admin/.gitignore
  2. 7 9
      style24.admin/src/main/java/com/style24/admin/biz/service/TsaGoodsService.java
  3. 186 78
      style24.admin/src/main/java/com/style24/admin/biz/web/TsaGoodsController.java
  4. 1 0
      style24.admin/src/main/java/com/style24/persistence/domain/CodiGoods.java
  5. 17 14
      style24.admin/src/main/java/com/style24/persistence/mybatis/shop/TsaGoods.xml
  6. 85 71
      style24.admin/src/main/webapp/WEB-INF/views/goods/GoodsDetailForm.html
  7. 1 1
      style24.admin/src/main/webapp/WEB-INF/views/goods/GoodsPopupListForm.html
  8. 2 2
      style24.admin/src/main/webapp/WEB-INF/views/system/PopupPasswordChangeForm.html
  9. 2 2
      style24.admin/src/main/webapp/WEB-INF/views/system/UserListForm.html
  10. 2 2
      style24.admin/src/main/webapp/WEB-INF/views/system/UserMenuForm.html
  11. 二进制
      style24.admin/src/main/webapp/image/no.gif
  12. 0 480
      style24.admin/src/main/webapp/smartEditor/SEditorSkin.html
  13. 0 334
      style24.admin/src/main/webapp/smartEditor/css/default.css
  14. 0 30
      style24.admin/src/main/webapp/smartEditor/css/style.css
  15. 二进制
      style24.admin/src/main/webapp/smartEditor/img/XPButtonUploadText_61x22.png
  16. 二进制
      style24.admin/src/main/webapp/smartEditor/img/bg_qmark.gif
  17. 二进制
      style24.admin/src/main/webapp/smartEditor/img/bg_tool.gif
  18. 二进制
      style24.admin/src/main/webapp/smartEditor/img/btn_confirm.gif
  19. 二进制
      style24.admin/src/main/webapp/smartEditor/img/btn_expand.gif
  20. 二进制
      style24.admin/src/main/webapp/smartEditor/img/btn_html.gif
  21. 二进制
      style24.admin/src/main/webapp/smartEditor/img/btn_layer_cancel.gif
  22. 二进制
      style24.admin/src/main/webapp/smartEditor/img/btn_layer_cell_adjust.gif
  23. 二进制
      style24.admin/src/main/webapp/smartEditor/img/btn_layer_close.gif
  24. 二进制
      style24.admin/src/main/webapp/smartEditor/img/btn_layer_confirm.gif
  25. 二进制
      style24.admin/src/main/webapp/smartEditor/img/btn_layer_find_next.gif
  26. 二进制
      style24.admin/src/main/webapp/smartEditor/img/btn_layer_find_next_strong.gif
  27. 二进制
      style24.admin/src/main/webapp/smartEditor/img/btn_layer_img.gif
  28. 二进制
      style24.admin/src/main/webapp/smartEditor/img/btn_layer_replace.gif
  29. 二进制
      style24.admin/src/main/webapp/smartEditor/img/btn_layer_replace_all.gif
  30. 二进制
      style24.admin/src/main/webapp/smartEditor/img/btn_layer_tab.gif
  31. 二进制
      style24.admin/src/main/webapp/smartEditor/img/btn_qmark.gif
  32. 二进制
      style24.admin/src/main/webapp/smartEditor/img/btn_search.gif
  33. 二进制
      style24.admin/src/main/webapp/smartEditor/img/btn_set.gif
  34. 二进制
      style24.admin/src/main/webapp/smartEditor/img/btn_set_blank.gif
  35. 二进制
      style24.admin/src/main/webapp/smartEditor/img/btn_set_original.gif
  36. 二进制
      style24.admin/src/main/webapp/smartEditor/img/bx_character.gif
  37. 二进制
      style24.admin/src/main/webapp/smartEditor/img/bx_find.gif
  38. 二进制
      style24.admin/src/main/webapp/smartEditor/img/bx_table.gif
  39. 二进制
      style24.admin/src/main/webapp/smartEditor/img/bx_url.gif
  40. 二进制
      style24.admin/src/main/webapp/smartEditor/img/vr_layer_character.gif
  41. 0 109
      style24.admin/src/main/webapp/smartEditor/js/Husky.SE_Basic.js
  42. 0 126
      style24.admin/src/main/webapp/smartEditor/js/HuskyEZCreator.js
  43. 0 80
      style24.admin/src/main/webapp/smartEditor/js/SE_CustomPlugins.js
  44. 0 172
      style24.admin/src/main/webapp/smartEditor/js/jindo.min.js
  45. 0 10
      style24.admin/src/main/webapp/smartEditor/se_blank.html
  46. 二进制
      style24.admin/src/main/webapp/smartEditor/swfupload/img/my_img.gif
  47. 0 49
      style24.admin/src/main/webapp/smartEditor/swfupload/js/handlers.js
  48. 0 980
      style24.admin/src/main/webapp/smartEditor/swfupload/js/swfupload.js
  49. 二进制
      style24.admin/src/main/webapp/smartEditor/swfupload/swf/swfupload.swf
  50. 0 41
      style24.admin/src/main/webapp/smartEditor/swfupload/swfupload_proc.jsp
  51. 0 34
      style24.admin/src/main/webapp/smartEditor/write.html
  52. 8 8
      style24.admin/src/main/webapp/ux/js/admin.popup.js
  53. 6 0
      style24.core/.gitignore
  54. 6 0
      style24.scm/.gitignore

+ 1 - 1
style24.admin/.gitignore

@@ -1 +1 @@
-/target/
+/target/

+ 7 - 9
style24.admin/src/main/java/com/style24/admin/biz/service/TsaGoodsService.java

@@ -759,6 +759,7 @@ public class TsaGoodsService {
 			goods.setGoodsSnm(goodsSnm);
 		}
 
+		goods.setFormalGb(goods.getFormalGb());
 		// 브랜드 확인
 		if (!"G056_N".equals(goods.getGoodsType())) {
 			if (!goods.getFormalGb().equals(goods.getFormalGbOrg())) {
@@ -781,12 +782,6 @@ public class TsaGoodsService {
 					goods.setPntMrate(pntMrate); // 포인트적립율(MOBILE)
 				}
 			}
-		} else {
-			if ("N".equals(goods.getSelfGoodsYn())) {
-				goods.setFormalGb(goods.getFormalGb());
-			} else {
-				goods.setFormalGb(goods.getFormalGbOrg());
-			}
 		}
 
 		// 기본정보 변경
@@ -852,6 +847,11 @@ public class TsaGoodsService {
 		goodsDesc.setUpdNo(goods.getUpdNo());
 
 		// PC 상단
+		goodsDesc.setDescGb("10");
+		goodsDesc.setGoodsDesc(goods.getGoodsPcTopDesc());
+		this.saveGoodsDesc(goodsDesc);
+
+		// PC 하단
 		goodsDesc.setDescGb("20");
 		goodsDesc.setGoodsDesc(goods.getGoodsPcTopDesc());
 		this.saveGoodsDesc(goodsDesc);
@@ -867,9 +867,7 @@ public class TsaGoodsService {
 		this.saveGoodsDesc(goodsDesc);
 
 		//		// 상품상세 저장
-		//		goodsDesc.setDescGb("10");
-		//		goodsDesc.setGoodsDesc(this.setGoodsDescSb(goods).toString());
-		//		this.saveGoodsDesc(goodsDesc);
+
 		//
 		//		// 세트상품의 구서상품으로 있을경우 처리
 		//		this.saveGoodsSetDesc(goodsDesc);

+ 186 - 78
style24.admin/src/main/java/com/style24/admin/biz/web/TsaGoodsController.java

@@ -392,7 +392,7 @@ public class TsaGoodsController extends TsaBaseController {
 	@PostMapping("/state/update")
 	@ResponseBody
 	public GagaMap updateGoodsState(@RequestBody Goods goods) {
-		log.info("updateGoodsState goods={}", goods);
+
 		GagaMap result = new GagaMap();
 		result.set("status", GagaResponseStatus.SUCCESS.getCode()); // 200
 		result.set("procJob", goods.getProcJob());
@@ -536,8 +536,8 @@ public class TsaGoodsController extends TsaBaseController {
 		// 공급업체
 		mav.addObject("supplyCompList", rendererService.getSupplyCompanyList(supplyCompCd));
 
-		String[] exceptCds = {"G008_00"};
-		mav.addObject("goodsStatList", rendererService.getCommonCodeList("G008", "Y", exceptCds));
+		String[] goodsStatExceptCds = {"G008_00"};
+		mav.addObject("goodsStatList", rendererService.getCommonCodeList("G008", "Y", goodsStatExceptCds));
 
 		// 정상이월
 		mav.addObject("formalGbList", rendererService.getAvailCommonCodeList("G009"));
@@ -557,6 +557,11 @@ public class TsaGoodsController extends TsaBaseController {
 		mav.addObject("goodsTypeList", rendererService.getAvailCommonCodeList("G056"));
 		// 상품구분
 		mav.addObject("goodsGbList", rendererService.getAvailCommonCodeList("G073"));
+		// 유통구분
+		String[] distributionGbExceptCds = {"G065_20"};
+		mav.addObject("distributionGbList", rendererService.getCommonCodeList("G065", "Y", distributionGbExceptCds));
+		// 상품연령대
+		mav.addObject("ageGrpCdList", rendererService.getAvailCommonCodeList("G023"));
 		// 색상
 		Color color = new Color();
 		mav.addObject("colorList", rendererService.getColorList(color));
@@ -685,6 +690,184 @@ public class TsaGoodsController extends TsaBaseController {
 		return super.ok(message.getMessage("SUCC_0001"));
 	}
 
+	/**
+	 * 상품 상세 저장
+	 *
+	 * @param goods
+	 * @return
+	 * @author eskim
+	 * @since 2020. 10. 27
+	 */
+	@PostMapping("/detail/save")
+	@ResponseBody
+	public GagaResponse saveGoodsDetail(@RequestBody Goods goods) {
+
+		// 상품상태에 따른 이미지 정보 확인 - 상품상태가 승인대기나 승인 완료일 경우
+		if ("G008_40".equals(goods.getGoodsStat()) || "G008_90".equals(goods.getGoodsStat())) {
+			Collection<Goods> goodsList = goodsService.getGoodsImgsYn(goods);
+			String goodsImageYn = "N";
+			for (Goods tmpGoods : goodsList) {
+				goodsImageYn = tmpGoods.getGoodsImageYn();
+			}
+			if ("N".equals(goodsImageYn)) {
+				throw new IllegalStateException("필수 이미지나 고시정보가 등록되지 않은 상품은 <br/>'승인대기'나 '승인완료' 상태로 변경할 수 없습니다.");
+			}
+		}
+
+		Collection<GoodsNotiInfo> notiList = null;
+		Collection<GoodsCompose> goodComposeList = null;
+		Collection<CodiGoods> codiGoodList = null;
+		ObjectMapper mapper = new ObjectMapper();
+		try {
+			if (goods.getNotiList() != null) {
+				notiList = mapper.readValue(goods.getNotiList(), new TypeReference<Collection<GoodsNotiInfo>>() {
+				});
+			}
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+		try {
+			if (goods.getCodiGoodsList() != null) {
+				codiGoodList = mapper.readValue(goods.getCodiGoodsList(), new TypeReference<Collection<CodiGoods>>() {
+				});
+			}
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+		try {
+			if (goods.getGoodsComposeList() != null) {
+				goodComposeList = mapper.readValue(goods.getGoodsComposeList(), new TypeReference<Collection<GoodsCompose>>() {
+				});
+			}
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+
+		goods.setNotiListNew(notiList);
+		goods.setGoodsComposeListNew(goodComposeList);
+		goods.setCodiGoodsListNew(codiGoodList);
+
+		goodsService.saveGoodsDetail(goods);
+		return super.ok(message.getMessage("SUCC_0001"));
+	}
+
+	/**
+	 * 코디상품 삭제
+	 *
+	 * @param codiGoodsList
+	 * @author eskim
+	 * @since 2020. 10. 28
+	 */
+	@PostMapping("/codi/delete")
+	@ResponseBody
+	public GagaResponse deleteCodiGoods(@RequestBody Collection<CodiGoods> codiGoodsList) {
+
+		goodsService.deleteCodiGoods(codiGoodsList);
+		return super.ok(message.getMessage("SUCC_0003"));
+	}
+
+	/**
+	 * 세트상품구성 화면
+	 *
+	 * @param
+	 * @return
+	 * @author eskim
+	 * @since 2020. 05. 26
+	 */
+	@GetMapping("/set/form")
+	@ResponseBody
+	public ModelAndView setForm(Goods goods) {
+		ModelAndView mav = new ModelAndView();
+
+		// 사용여부
+		mav.addObject("useYnList", rendererService.getAvailCommonCodeList("G002"));
+		// 정상이월
+		mav.addObject("formalGbList", rendererService.getAvailCommonCodeList("G009"));
+		// 성별
+		mav.addObject("sexGbList", rendererService.getAvailCommonCodeList("G007"));
+		// 시즌
+		mav.addObject("seasonList", rendererService.getAvailCommonCodeList("G006"));
+		// 스타일년도
+		mav.addObject("styleYearList", rendererService.getAvailCommonCodeList("G023"));
+		// 매입유형
+		mav.addObject("buyingTypeList", rendererService.getAvailCommonCodeList("G035"));
+		// 상품상태
+		// mav.addObject("goodsStatList",
+		// rendererService.getAvailCommonCodeList("G008"));
+		String[] exceptCds = {"00"};
+		mav.addObject("goodsStatList", rendererService.getCommonCodeList("G008", "Y", exceptCds));
+
+		mav.addObject("params", goods);
+		mav.setViewName("goods/GoodsSetForm");
+		return mav;
+	}
+
+//	/**
+//	 * 세트 상품 등록
+//	 *
+//	 * @param goods
+//	 * @return
+//	 * @author eskim
+//	 * @since 2020. 06. 12
+//	 */
+//	@PostMapping("/set/save")
+//	@ResponseBody
+//	public GagaResponse saveGoodsSet(@RequestBody Goods goods) {
+//		goodsService.saveGoodsSet(goods);
+//		return super.ok(message.getMessage("SUCC_0001"));
+//	}
+
+	/**
+	 * 딜상품구성 화면
+	 *
+	 * @param
+	 * @return
+	 * @author eskim
+	 * @since 2020. 05. 26
+	 */
+	@GetMapping("/deal/form")
+	@ResponseBody
+	public ModelAndView dealForm(Goods goods) {
+		ModelAndView mav = new ModelAndView();
+
+		// 사용여부
+		mav.addObject("useYnList", rendererService.getAvailCommonCodeList("G002"));
+		// 정상이월
+		mav.addObject("formalGbList", rendererService.getAvailCommonCodeList("G009"));
+		// 성별
+		mav.addObject("sexGbList", rendererService.getAvailCommonCodeList("G007"));
+		// 시즌
+		mav.addObject("seasonList", rendererService.getAvailCommonCodeList("G006"));
+		// 스타일년도
+		mav.addObject("styleYearList", rendererService.getAvailCommonCodeList("G023"));
+		// 매입유형
+		mav.addObject("buyingTypeList", rendererService.getAvailCommonCodeList("G035"));
+		// 상품상태
+		// mav.addObject("goodsStatList",
+		// rendererService.getAvailCommonCodeList("G008"));
+		String[] exceptCds = {"00"};
+		mav.addObject("goodsStatList", rendererService.getCommonCodeList("G008", "Y", exceptCds));
+
+		mav.addObject("params", goods);
+		mav.setViewName("goods/GoodsDealForm");
+		return mav;
+	}
+
+//	/**
+//	 * 딜 상품 등록
+//	 *
+//	 * @param goods
+//	 * @return
+//	 * @author eskim
+//	 * @since 2020. 06. 14
+//	 */
+//	@PostMapping("/deal/save")
+//	@ResponseBody
+//	public GagaResponse saveGoodsDeal(@RequestBody Goods goods) {
+//		goodsService.saveGoodsDeal(goods);
+//		return super.ok(message.getMessage("SUCC_0001"));
+//	}
+
 	/**
 	 * 상품 대량 등록 화면
 	 *
@@ -927,80 +1110,5 @@ public class TsaGoodsController extends TsaBaseController {
 		return result;
 	}
 
-	/**
-	 * 상품 상세 저장
-	 *
-	 * @param goods
-	 * @return
-	 * @author eskim
-	 * @since 2020. 10. 27
-	 */
-	@PostMapping("/detail/save")
-	@ResponseBody
-	public GagaResponse saveGoodsDetail(@RequestBody Goods goods) {
-
-		// 상품상태에 따른 이미지 정보 확인 - 상품상태가 승인대기나 승인 완료일 경우
-		if ("G008_40".equals(goods.getGoodsStat()) || "G008_90".equals(goods.getGoodsStat())) {
-			Collection<Goods> goodsList = goodsService.getGoodsImgsYn(goods);
-			String goodsImageYn = "N";
-			for (Goods tmpGoods : goodsList) {
-				goodsImageYn = tmpGoods.getGoodsImageYn();
-			}
-			if ("N".equals(goodsImageYn)) {
-				throw new IllegalStateException("필수 이미지나 고시정보가 등록되지 않은 상품은 <br/>'승인대기'나 '승인완료' 상태로 변경할 수 없습니다.");
-			}
-		}
 
-		Collection<GoodsNotiInfo> notiList = null;
-		Collection<GoodsCompose> goodComposeList = null;
-		Collection<CodiGoods> codiGoodList = null;
-		ObjectMapper mapper = new ObjectMapper();
-		try {
-			if (goods.getNotiList() != null) {
-				notiList = mapper.readValue(goods.getNotiList(), new TypeReference<Collection<GoodsNotiInfo>>() {
-				});
-			}
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-		try {
-			if (goods.getCodiGoodsList() != null) {
-				codiGoodList = mapper.readValue(goods.getCodiGoodsList(), new TypeReference<Collection<CodiGoods>>() {
-				});
-			}
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-		try {
-			if (goods.getGoodsComposeList() != null) {
-				goodComposeList = mapper.readValue(goods.getGoodsComposeList(), new TypeReference<Collection<GoodsCompose>>() {
-				});
-			}
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-
-
-		goods.setNotiListNew(notiList);
-		goods.setGoodsComposeListNew(goodComposeList);
-		goods.setCodiGoodsListNew(codiGoodList);
-		log.info("[saveGoodsDetail] goods = {}", goods);
-		goodsService.saveGoodsDetail(goods);
-		return super.ok(message.getMessage("SUCC_0001"));
-	}
-
-	/**
-	 * 코드상품 삭제
-	 *
-	 * @param codiGoodsList
-	 * @author eskim
-	 * @since 2020. 10. 28
-	 */
-	@PostMapping("/codi/delete")
-	@ResponseBody
-	public GagaResponse deleteCodiGoods(@RequestBody Collection<CodiGoods> codiGoodsList) {
-		log.info("codiGoodsList = {}", codiGoodsList);
-		goodsService.deleteCodiGoods(codiGoodsList);
-		return super.ok(message.getMessage("SUCC_0003"));
-	}
 }

+ 1 - 0
style24.admin/src/main/java/com/style24/persistence/domain/CodiGoods.java

@@ -25,6 +25,7 @@ public class CodiGoods extends TscBaseDomain {
 	private String imgType;
 	private String imgPath1;
 	private String imgPath6;
+	private String crud;
 
 }
 

+ 17 - 14
style24.admin/src/main/java/com/style24/persistence/mybatis/shop/TsaGoods.xml

@@ -1062,8 +1062,8 @@
 	<update id="updateGoodsSnm" parameterType="Goods">
 		/* TsaGoods.updateGoodsSnm */
 		UPDATE TB_GOODS A
-		SET UPD_ID = #{updId}
-		  , UPD_DT = SYSDATE
+		SET UPD_NO = #{updNo}
+		  , UPD_DT = NOW()
 		  , GOODS_SNM = #{goodsSnm} 
 		WHERE GOODS_CD = #{goodsCd}
 	</update>
@@ -1076,12 +1076,6 @@
 		     , NVL(C.NI_CONTENT, D.NI_CONTENT) AS NI_CONTENT
 		     , D.DISP_ORD
 		FROM (
-		       SELECT NI_ITEM_CD
-		            , NI_CONTENT 
-		       FROM TB_GOODS_NOTI_INFO
-		       WHERE GOODS_CD = #{goodsCd}
-		   ) C
-		   , (
 		       SELECT A.NI_CLSF_CD
 		          , A.NI_ITEM_CD
 		          , A.NI_CONTENT
@@ -1091,8 +1085,16 @@
 		       WHERE A.NI_CLSF_CD = B.NI_CLSF_CD
 		       AND A.SUPPLY_COMP_CD = #{supplyCompCd}
 		       AND B.ITEMKIND_CD = #{itemkindCd}
-		   ) D
-		WHERE D.NI_ITEM_CD = C.NI_ITEM_CD (+)
+		     ) D
+		    LEFT OUTER JOIN (
+		       SELECT NI_ITEM_CD
+		            , NI_CONTENT 
+		       FROM TB_GOODS_NOTI_INFO
+		       WHERE GOODS_CD = #{goodsCd}
+		     ) C
+		     ON (
+		       C.NI_ITEM_CD = D.NI_ITEM_CD
+		     )
 		ORDER BY D.DISP_ORD
 	</select>
 	
@@ -1175,7 +1177,7 @@
 		SELECT #{goodsCd} AS GOODS_CD
 		     , A.GOODS_CD AS COMPS_GOODS_CD
 		     , A.OPT_CD
-		     , CONCAT(A.OPT_NM1,  NVL2(A.OPT_NM2, CONCAT('/', A.OPT_NM2), '')) AS OPT_NM 
+		     , CONCAT(A.OPT_NM1,  NVL2(A.OPT_NM2, '', CONCAT('/', A.OPT_NM2))) AS OPT_NM 
 		     , A.OPT_NM1
 		     , A.OPT_NM2
 		     , A.BASE_STOCK_QTY
@@ -1271,6 +1273,8 @@
 		                                          ELSE FRST_CFRM_DT END)
 		  , PRE_PPNT_USABLE_YN = #{prePpntUsableYn}
 		  , PRE_MPNT_USABLE_YN = #{preMpntUsableYn}
+		  , DISTRIBUTION_GB = #{distributionGb}
+		  , AGE_GRP_CD = #{ageGrpCd}
 		  , UPD_NO = #{updNo}
 		  , UPD_DT = NOW()
 		WHERE GOODS_CD = #{goodsCd}
@@ -1279,7 +1283,7 @@
 	<!-- 상품 상세정보 삭제 -->
 	<delete id="deleteGoodsDesc" parameterType="GoodsDesc">
 		/* TsaGoods.deleteGoodsDesc */
-		DELETE TB_GOODS_DESC
+		DELETE FROM TB_GOODS_DESC
 		WHERE GOODS_CD = #{goodsCd}
 		AND DESC_GB = #{descGb}
 	</delete>
@@ -1299,7 +1303,7 @@
 		    #{goodsCd}
 		  , #{descGb}
 		  , #{seq}
-		  , REPLACE(#{goodsDesc},'char(13)', CONCAT(char(13),char(10))
+		  , REPLACE(#{goodsDesc},char(13), CONCAT(char(13),char(10)))
 		  , #{regNo}
 		  , NOW()
 		)
@@ -1478,5 +1482,4 @@
 		WHERE GOODS_CD = #{goodsCd}
 		AND CODI_GOODS_CD = #{codiGoodsCd}
 	</delete>
-	
 </mapper>

+ 85 - 71
style24.admin/src/main/webapp/WEB-INF/views/goods/GoodsDetailForm.html

@@ -6,7 +6,7 @@
  * @source  : GoodsDetailForm.html
  * @desc    : 상품 상세 팝업
  *============================================================================
- * SISUN
+ * SISUNChDataYn
  * Copyright(C) 2020 TSIT, All rights reserved.
  *============================================================================
  * VER  DATE         AUTHOR      DESCRIPTION
@@ -158,7 +158,7 @@
 										</td>
 									</tr>
 									<tr>
-										<td rowspan="10">&nbsp;</td>
+										<td rowspan="11">&nbsp;</td>
 										<th>시즌<em class="required" title="필수"></em></th>
 										<td >
 											<select  name="seasonCd" id="seasonCd">
@@ -190,6 +190,23 @@
 											</select>
 											<input type="hidden" id="goodsGbOrg" name="goodsGbOrg"/>
 										</td>
+										<th>유통구분<em class="required" title="필수"></em></th>
+										<td><select  name="distributionGb" id="distributionGb">
+												<option value="">[선택]</option>
+												<option th:if="${distributionGbList}" th:each="oneData, status : ${distributionGbList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
+											</select>
+											<input type="hidden" id="distributionGbOrg" name="distributionGbOrg"/>
+										</td>
+									</tr>
+									<tr id="erplinkarea">
+										<th>상품연령대</th>
+										<td>
+											<select  name="ageGrpCd" id="ageGrpCd">
+												<option value="">[선택]</option>
+												<option th:if="${ageGrpCdList}" th:each="oneData, status : ${ageGrpCdList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
+											</select>
+											<input type="hidden" id="ageGrpCdOrg" name="ageGrpCdOrg"/>
+										</td>
 										<th>가격변경일</th>
 										<td colspan="3"><span id="priceUpdDtTxt"></span></td>
 									</tr>
@@ -315,28 +332,28 @@
 											<tr>
 												<th>상위(PC)</th>
 												<td><div class="tabJrContArea">
-													<textarea name="goodsPcTopDesc" id="goodsPcTopDesc" rows="5" cols="50" style="width:1050px; height: 150px;"></textarea>
+													<textarea class="textareaR4 summernote" name="goodsPcTopDesc" id="goodsPcTopDesc"></textarea>
 													</div>
 												</td>
 											</tr>
 											<tr>
 												<th>상위(MOBILE)</th>
 												<td><div class="tabJrContArea">
-													<textarea name="goodsMobileTopDesc" id="goodsMobileTopDesc" rows="5" cols="50" style="width:1050px; height: 150px;"></textarea>
+													<textarea class="textareaR4 summernote" name="goodsMobileTopDesc" id="goodsMobileTopDesc"></textarea>
 													</div>
 												</td>
 											</tr>
 											<tr>
 												<th>하위(PC)</th>
 												<td><div class="tabJrContArea">
-													<textarea name="goodsPcDownDesc" id="goodsPcDownDesc" rows="5" cols="50" class="w100p" style="width:1050px; height: 150px;"></textarea>
+													<textarea class="textareaR4 summernote" name="goodsPcDownDesc" id="goodsPcDownDesc"></textarea>
 													</div>
 												</td>
 											</tr>
 											<tr>
 												<th>하위(MOBILE)</th>
 												<td><div class="tabJrContArea">
-													<textarea name="goodsMobileDownDesc" id="goodsMobileDownDesc" rows="5" cols="50" style="width:1050px; height: 150px;"></textarea>
+													<textarea class="textareaR4 summernote" name="goodsMobileDownDesc" id="goodsMobileDownDesc"></textarea>
 													</div>
 												</td>
 											</tr>
@@ -451,8 +468,7 @@
 			</div>	<!--  class=panelContent -->
 		</div>	<!--  class=panelStyle -->
 	</div> <!--  class=modalPopup -->
-<script type="text/javascript" src="/smartEditor/js/HuskyEZCreator.js?v=2019122801" charset="utf-8"></script>
-<script type="text/javascript" src="/ux/plugins/gaga/gaga.smarteditor.js?v=2019122801"></script>
+<script type="text/javascript" src="/ux/plugins/summernote/summernote.js"></script>
 <script th:inline="javascript">
 /*<![CDATA[*/
 
@@ -465,7 +481,7 @@
 	var goodsTypeList = gagajf.convertToArray([[${goodsTypeList}]]);
 	var uploadGoodsUrl = [[${@environment.getProperty('upload.goods.view')}]];
 	// Get a SmartEditor options
-	var seOptions = gagaSe.getEditorOptions();
+	//var seOptions = gagaSe.getEditorOptions();
 	
 	// specify the columns - 상품변경이력
 	var columnGoodsHstoryDefs = [
@@ -518,19 +534,19 @@
 		//{headerName: 'No', width: 60, cellClass: 'text-center', valueGetter: function(params) { return params.node.rowIndex + 1 }},
 		{headerName: "이미지", field: "imgPath1", width: 100, height: 60, cellClass: 'text-center'
 			,cellRenderer: function(params) {
-				if (params.data.imgType == "A"){
+				if (params.data.imgType == "G030_A"){
 					if(!gagajf.isNull(params.data.imgPath6)){
-						return '<img width="60" src="'+ uploadGoodsUrl+params.data.imgPath6 + '" alt=""  onerror="this.src=\'/image/no.gif\';"/>';
+						return '<img width="60" src="'+ params.data.imgPath1 + '" alt="" onerror="this.src=\'/image/no.gif\';"/>';
 					}else{
-						return '<img width="60" src="'+ uploadGoodsUrl+params.value + '" alt=""  onerror="this.src=\'/image/no.gif\';"/>';
+						return '<img width="60" src="'+ params.value + '" alt="" onerror="this.src=\'/image/no.gif\';"/>';
 					}	
+						
 				}else{
 					if(!gagajf.isNull(params.data.imgPath6)){
-						return '<img width="60" src="'+ params.data.imgPath1 + '" alt="" onerror="this.src=\'/image/no.gif\';"/>';
+						return '<img width="60" src="'+ uploadGoodsUrl+params.data.imgPath6 + '" alt=""  onerror="this.src=\'/image/no.gif\';"/>';
 					}else{
-						return '<img width="60" src="'+ params.value + '" alt="" onerror="this.src=\'/image/no.gif\';"/>';
+						return '<img width="60" src="'+ uploadGoodsUrl+params.value + '" alt=""  onerror="this.src=\'/image/no.gif\';"/>';
 					}
-					
 				}
 			}
 		},
@@ -539,8 +555,8 @@
 			valueFormatter: function (params) { return gagaAgGrid.lookupValue(goodsTypeList, params.value); },
 			valueParser: function (params) { return gagaAgGrid.lookupKey(goodsTypeList, params.newValue); }
 		},
-		{headerName: "구성상품코드", field: "extendGoodsCd" , width: 130, cellClass: 'text-center'},
-		{headerName: "구성상품코드명", field: "extendGoodsCdNm" , width: 200, cellClass: 'text-left'},
+		{headerName: "구성상품코드", field: "compsGoodsCd" , width: 130, cellClass: 'text-center'},
+		{headerName: "구성상품코드명", field: "compsGoodsCdNm" , width: 200, cellClass: 'text-left'},
 		//{headerName: "순서", field: "dispOrd" , width: 80, cellClass: 'text-right',editable: true, required: true},
 		{headerName: "수량", field: "qty" , width: 100, cellClass: 'text-right'
 			,valueFormatter: function(params) { return Number(params.value).addComma();}
@@ -558,7 +574,7 @@
 			valueFormatter: function (params) { return gagaAgGrid.lookupValue(useYnList, params.value); },
 			valueParser: function (params) { return gagaAgGrid.lookupKey(useYnList, params.newValue); }
 		},
-		{headerName: "옵션명(딜상품용)", field: "extendGoodsOptNm" , width: 200, cellClass: 'text-left',editable: true, required: true},
+		{headerName: "옵션명(딜상품용)", field: "compsGoodsOptNm" , width: 200, cellClass: 'text-left',editable: true, required: true},
 		{headerName: "상품상태", field: "goodsStat" , width: 100, cellClass: 'text-center',
 			cellEditorParams: { values: gagaAgGrid.extractValues(goodsStatList) },
 			valueFormatter: function (params) { return gagaAgGrid.lookupValue(goodsStatList, params.value); },
@@ -586,19 +602,19 @@
 		//{headerName: 'No', width: 60, cellClass: 'text-center', valueGetter: function(params) { return params.node.rowIndex + 1 }},
 		{headerName: "이미지", field: "imgPath1", width: 100, height: 60, cellClass: 'text-center'
 			,cellRenderer: function(params) {
-				if (params.data.imgType == "A"){
+				if (params.data.imgType == "G030_A"){
 					if(!gagajf.isNull(params.data.imgPath6)){
-						return '<img width="60" src="'+ uploadGoodsUrl+params.data.imgPath6 + '" alt=""  onerror="this.src=\'/image/no.gif\';"/>';
+						return '<img width="60" src="'+ params.data.imgPath6 + '" alt="" onerror="this.src=\'/image/no.gif\';"/>';
 					}else{
-						return '<img width="60" src="'+ uploadGoodsUrl+params.value + '" alt=""  onerror="this.src=\'/image/no.gif\';"/>';
-					}	
+						return '<img width="60" src="'+ params.value + '" alt="" onerror="this.src=\'/image/no.gif\';"/>';
+					}
+						
 				}else{
 					if(!gagajf.isNull(params.data.imgPath6)){
-						return '<img width="60" src="'+ params.data.imgPath1 + '" alt="" onerror="this.src=\'/image/no.gif\';"/>';
+						return '<img width="60" src="'+ uploadGoodsUrl+params.data.imgPath6 + '" alt=""  onerror="this.src=\'/image/no.gif\';"/>';
 					}else{
-						return '<img width="60" src="'+ params.value + '" alt="" onerror="this.src=\'/image/no.gif\';"/>';
+						return '<img width="60" src="'+ uploadGoodsUrl+params.value + '" alt=""  onerror="this.src=\'/image/no.gif\';"/>';
 					}
-					
 				}
 			}
 		},
@@ -650,7 +666,7 @@
 	// 상품상세 조회
 	var fnGoodsDeailSearch = function() {
 
-		$('#goodsDetailForm').find('.tabs .tabsNav li a').attr("style", "color:#888;");
+		$('#goodsDetailForm').find('.tabs .tabsNav li a').attr("style", "color:#888;");  //탭색 초기화
 
 		var params = new Object();
 		params.mode = $('#goodsDetailForm input[name=mode]').val();
@@ -720,6 +736,11 @@
 			$('#goodsDetailForm').find('#priceUpdDtTxt').html(!gagajf.isNull(result.priceUpdDt) ? result.priceUpdDt.toDate("YYYYMMDDHHmmss").format("YYYY-MM-DD") : '');
 			$('#goodsDetailForm').find('#frstCfrmDtTxt').html(!gagajf.isNull(result.frstCfrmDt) ? result.frstCfrmDt.toDate("YYYYMMDDHHmmss").format("YYYY-MM-DD") : '');
 
+			$('#goodsDetailForm select[name=distributionGb]').val(result.distributionGb);
+			$("#goodsDetailForm input[name=distributionGbOrg]").val(result.distributionGb);
+			$('#goodsDetailForm select[name=ageGrpCd]').val(result.ageGrpCd);
+			$("#goodsDetailForm input[name=ageGrpCdOrg]").val(result.ageGrpCd);
+			
 			$("#goodsDetailForm input[type=radio]").parent().removeClass("checked");
 			$("#goodsDetailForm input[type=radio]").removeAttr('checked');
 			
@@ -762,6 +783,7 @@
 			$("#goodsDetailForm input[name=prePpntUsableYnOrg]").val(result.prePpntUsableYn);
 			$("#goodsDetailForm input[name=preMpntUsableYnOrg]").val(result.preMpntUsableYn);
 			$("#goodsDetailForm input[name=changeableYnOrg]").val(result.changeableYn);
+			
 
 			$("#goodsDetailForm input[type=radio][checked]").addClass("checked");
 			//$("#goodsDetailForm input[type=radio][checked]").parent("label").addClass("checked");
@@ -791,10 +813,10 @@
 			$("#goodsDetailForm").find("#goodsTypeNm").html(result.goodsTypeNm);
 			
 			//상품상세
-			gagaSe.setContents('goodsPcTopDesc', result.goodsPcTopDesc);
-			gagaSe.setContents('goodsMobileTopDesc', result.goodsMobileTopDesc);
-			gagaSe.setContents('goodsPcDownDesc', result.goodsPcDownDesc);
-			gagaSe.setContents('goodsMobileDownDesc', result.goodsMobileDownDesc);
+			$('#goodsDetailForm textarea[name=goodsPcTopDesc]').summernote('code', result.goodsPcTopDesc);
+			$('#goodsDetailForm textarea[name=goodsMobileTopDesc]').summernote('code', result.goodsMobileTopDesc);
+			$('#goodsDetailForm textarea[name=goodsPcDownDesc]').summernote('code', result.goodsPcDownDesc);
+			$('#goodsDetailForm textarea[name=goodsMobileDownDesc]').summernote('code', result.goodsMobileDownDesc);
 
 			if (!gagajf.isNull(result.niClsfNm)){
 				$('#goodsDetailForm').find('#itemkindNoti').html('품목기준 고시분류 : ' + result.niClsfNm);
@@ -886,6 +908,11 @@
 			fnGoodsDetailHstSearch();
 
 		}
+		
+		//기본정보탭 변경여부
+		$('#goodsDetailForm').find('#goodstab1').find("input, select, textarea").on('change', function() {
+			$('#goodsDetailForm').find('.tabs .tabsNav li:eq(0) a').attr("style", "color:red;");
+		});
 	}
 
 	//옵셥 재고
@@ -903,12 +930,12 @@
 		if ("G056_S" == params.goodsType){	//세트
 			gagaAgGrid.showOrHideColumn(gridGoodsComposeOptions, 'currPrice', false);
 			gagaAgGrid.showOrHideColumn(gridGoodsComposeOptions, 'useYn', false);
-			gagaAgGrid.showOrHideColumn(gridGoodsComposeOptions, 'extendGoodsOptNm', false);
+			gagaAgGrid.showOrHideColumn(gridGoodsComposeOptions, 'compsGoodsOptNm', false);
 			
 			$('#GoodsComposeBtnArea').addClass("off");
 		}else{	//딜
 			gagaAgGrid.showOrHideColumn(gridGoodsComposeOptions, 'qty', false);
-			gagaAgGrid.showOrHideColumn(gridGoodsComposeOptions, 'extendcompsCurrPrice', false);
+			gagaAgGrid.showOrHideColumn(gridGoodsComposeOptions, 'compsCurrPrice', false);
 		}
 		gagaAgGrid.fetch("/goods/detail/compose/list?goodsCd=" + params.goodsCd , gridGoodsComposeOptions);
 	}	
@@ -977,8 +1004,7 @@
 
 		var listPrice = $("#goodsDetailForm input[name=listPrice]").val().removeComma();
 		var currPrice = $("#goodsDetailForm input[name=currPrice]").val().removeComma();
-		//dcRate = Math.round(100 - Math.floor((Number(currPrice) / Number(listPrice) * 100)*100)/100);
-		dcRate = 100 - (Number((Number(currPrice) / Number(listPrice)).toFixed(2)) *100)
+		dcRate =  100 - Math.floor(Number(currPrice) / Number(listPrice) * 100);	//절사
 
 		$("#goodsDetailForm").find("#dcRateTxt").html(dcRate);
 		$("#goodsDetailForm input[name=dcRate]").val(dcRate);
@@ -992,7 +1018,8 @@
 		var listPrice = $("#goodsDetailForm input[name=listPrice]").val().removeComma();
 		var currPrice = $("#goodsDetailForm input[name=currPrice]").val().removeComma();
 		//dcRate = Math.round(100 - Math.floor((Number(currPrice) / Number(listPrice) * 100)*100)/100);
-		dcRate = 100 - (Number((Number(currPrice) / Number(listPrice)).toFixed(2)) *100)
+		//dcRate = 100 - (Number((Number(currPrice) / Number(listPrice)).toFixed(2)) *100);
+		dcRate =  100 - Math.floor(Number(currPrice) / Number(listPrice) * 100);
 
 		if (dcRate < 0){
 			mcxDialog.alert('할인율이 0보다 작습니다.\n판매가를 확인해주세요.', function(){
@@ -1081,7 +1108,7 @@
 	}
 
 	//상품저장 버튼 클릭 시
-	$('#btnGoodsDetailSave').click(function() {
+	$('#btnGoodsDetailSave').click(function() {debugger;
 
 		var optCheck = false;
 		var idx = 0;
@@ -1487,14 +1514,15 @@
 				}
 			});
 			return false;
-		}else if (dcRate >= 90){
+		}else if (dcRate >= 90){debugger;
 			mcxDialog.confirmC("할인율이 90%이상입니다. 계속하시겠습니까?", {
 				btn: ["아니요","예"],
 				btnClick: function(index){
 					if (index == 1){
 						optCheck = true;
 					} else {
-						fnNoticheck();
+						if (!fnGoodsComposeCheck()) return false;
+						fnSaveCheck();
 					}
 				}
 			});
@@ -1502,16 +1530,15 @@
 		}else{
 			$("#goodsDetailForm").find("#dcRateTxt").html(dcRate);
 			$("#goodsDetailForm input[name=dcRate]").val(dcRate);
-			
+			fnSaveCheck();
 		}
-
 		
 		if (optCheck) return false;
 		
-		if (!fnGoodsComposeCheck()) return false;
-		
-		//fnNoticheck();
-
+	});
+	
+	//저장 관련 체크
+	var fnSaveCheck = function(idx){
 		if($("#goodsDetailForm input:checkbox[name=chkDescKeep]").is(':checked')){
 			mcxDialog.confirmC("'정보유지' 체크박스가 선택되어 있어 '상품상세설명' 항목이 저장되지 않습니다.<br/>저장을 원하시면 체크를 해제하세요. 계속하시겠습니까?", {
 				btn: ["아니요","예"],
@@ -1526,11 +1553,7 @@
 		}else{
 			fnGoodsSave();
 		}
-		
-		if (optCheck) return false;
-		
-		
-	});
+	}
 
 	// 구성 정보 관련 체크
 	var fnGoodsComposeCheck = function(){
@@ -1596,11 +1619,6 @@
 			cancelBtnText: "취소",
 			sureBtnText: "확인",
 			sureBtnClick: function(){
-				//gagaSe.getContents('goodsDesc');
-				gagaSe.getContents('goodsPcTopDesc');
-				gagaSe.getContents('goodsMobileTopDesc');
-				gagaSe.getContents('goodsPcDownDesc');
-				gagaSe.getContents('goodsMobileDownDesc');
 
 				fnGoodsDeailNotiSave();
 
@@ -1641,7 +1659,7 @@
 	
 	//창종료
 	var fnGoodsDetailClose = function(){
-		uiPopupClose('popupGoodsDetail');
+		uifnPopupClose('popupGoodsDetail');
 	}
 
 	//저장후 callback
@@ -1694,7 +1712,7 @@
 			return true;
 		}
 		//상품구분
-		if ($("#goodsDetailForm input[name=goodsGbOrg]").val() != $("input:radio[name=goodsGb]:checked").val()){
+		if ($("#goodsDetailForm input[name=goodsGbOrg]").val() != $("#goodsDetailForm select[name=goodsGb]").val()){
 			return true;
 		}
 		//상품상태
@@ -1757,6 +1775,14 @@
 		if ($("#goodsDetailForm input[name=minOrdAmtOrg]").val() != $("#goodsDetailForm input[name=minOrdAmt]").val().removeComma()){
 			return true;
 		}
+		//유통구분
+		if ($("#goodsDetailForm input[name=distributionGbOrg]").val() != $("#goodsDetailForm select[name=distributionGb]").val()){
+			return true;
+		}
+		//상품연령대
+		if ($("#goodsDetailForm input[name=ageGrpCdOrg]").val() != $("#goodsDetailForm select[name=ageGrpCd]").val()){
+			return true;
+		}
 
 		return false;
 	}
@@ -1866,7 +1892,7 @@
 				gridGoodsComposeOptions.api.updateRowData({add: [data], addIndex: idx});
 				
 				idx++;
-			
+				$('#goodsDetailForm').find('.tabs .tabsNav li:eq(5) a').attr("style", "color:red;");
 			}
 		});
 		gridGoodsComposeOptions.api.refreshCells();
@@ -1918,6 +1944,7 @@
 				gridCodiGoodsOptions.api.updateRowData({add: [data], addIndex: idx});
 				
 				idx++;
+				$('#goodsDetailForm').find('.tabs .tabsNav li:eq(4) a').attr("style", "color:red;");
 			
 			}
 		});
@@ -1933,8 +1960,6 @@
 		}
 
 		//화면에서 삭제
-		//var removedData_1 = gagaAgGrid.removeRowData(gridCodiGoodsOptions, false);
-
 		var removedData = gagaAgGrid.removeRowData(gridCodiGoodsOptions, false);
 		
 		if (removedData.length > 0) {
@@ -1983,23 +2008,12 @@
 	
 	$(document).ready(function() {
 
-		/* gagaSe.createSmartEditor(seOptions, 'goodsDesc'); */
-		gagaSe.createSmartEditor(seOptions, 'goodsPcTopDesc');
-		gagaSe.createSmartEditor(seOptions, 'goodsMobileTopDesc');
-		gagaSe.createSmartEditor(seOptions, 'goodsPcDownDesc');
-		gagaSe.createSmartEditor(seOptions, 'goodsMobileDownDesc');
-
 		gagaAgGrid.createGrid('gridGoodsHstoryList', gridGoodsHstoryOptions);
 		gagaAgGrid.createGrid('gridGoodsCodiList', gridCodiGoodsOptions);
 		gagaAgGrid.createGrid('gridGoodsComposeList', gridGoodsComposeOptions);
 
 		fnGoodsDeailSearch();
-
-		//기본정보탭 변경여부
-		$('#goodsDetailForm').find('#goodstab1').find("input, select, textarea").on('change', function() {
-			$('#goodsDetailForm').find('.tabs .tabsNav li:eq(0) a').attr("style", "color:red;");
-		});
-
+		
 	});
 	
 /*]]>*/

+ 1 - 1
style24.admin/src/main/webapp/WEB-INF/views/goods/GoodsPopupListForm.html

@@ -19,7 +19,7 @@
 		<!-- TITLE -->
 		<div class="panelTitle">
 			<h2>상품조회</h2>
-			<button type="button" class="close" onclick="uiPopupClose('popupGoods')"><i class="fa fa-times"></i></button>
+			<button type="button" class="close" onclick="uifnPopupClose('popupGoods')"><i class="fa fa-times"></i></button>
 		</div>
 		<!-- //TITLE -->
 		<form id="goodsPopupForm" name="goodsPopupForm" action="#" th:action="@{'/goods/popup/list'}">

+ 2 - 2
style24.admin/src/main/webapp/WEB-INF/views/system/PopupPasswordChangeForm.html

@@ -17,7 +17,7 @@
 	<ul class="popup modal" data-width="500" >
 		<li class="mdPopTitle">
 			<strong>비밀번호 변경</strong>
-			<button type="button" class="close" onclick="uifnPopClose('popupPassword')"><i class="fa fa-times"></i></button>
+			<button type="button" class="close" onclick="uifnPopupClose('popupPassword')"><i class="fa fa-times"></i></button>
 		</li>
 		<li class="mdPopContent">
 			<form name="popupPasswordForm" id="popupPasswordForm" action="#" th:action="@{'/system/user/password/change'}" th:method="post">
@@ -76,7 +76,7 @@
 			sureBtnText: "확인",
 			sureBtnClick: function() {
 				gagajf.ajaxFormSubmit($(formId).prop('action'), formId, function() {
-					uifnPopClose('popupPassword');
+					uifnPopupClose('popupPassword');
 				});
 			}
 		});

+ 2 - 2
style24.admin/src/main/webapp/WEB-INF/views/system/UserListForm.html

@@ -17,7 +17,7 @@
 <ul class="popup modal" data-width="600" data-height="670">
 	<li class="mdPopTitle">
 		<strong>관리자 신청자</strong>
-		<button type="button" class="close" onclick="uifnPopClose('popupUserList');"><em class="fa fa-times"></em></button>
+		<button type="button" class="close" onclick="uifnPopupClose('popupUserList');"><em class="fa fa-times"></em></button>
 	</li>
 	
 	<li class="mdPopContent">
@@ -156,7 +156,7 @@
 					else eval( callback(jsonData) );
 				}
 			}
-			uifnPopClose('popupUserList');
+			uifnPopupClose('popupUserList');
 		}
 	}
 	

+ 2 - 2
style24.admin/src/main/webapp/WEB-INF/views/system/UserMenuForm.html

@@ -17,7 +17,7 @@
 <ul class="popup modeless ui-widget-content" data-width="600" data-height="670">
 	<li class="mdPopTitle">
 		<strong>사용자 메뉴</strong>
-		<button type="button" class="close" onclick="uifnPopClose('popupUserMenu');"><em class="fa fa-times"></em></button>
+		<button type="button" class="close" onclick="uifnPopupClose('popupUserMenu');"><em class="fa fa-times"></em></button>
 	</li>
 	
 	<li class="mdPopContent">
@@ -116,7 +116,7 @@
 			sureBtnClick: function() {
 				var jsonData = JSON.stringify(changedData);
 				gagajf.ajaxJsonSubmit($('#userMenuForm').prop('action'), jsonData, function() {
-					uifnPopClose('popupUserMenu');
+					uifnPopupClose('popupUserMenu');
 				});
 			}
 		});

二进制
style24.admin/src/main/webapp/image/no.gif


+ 0 - 480
style24.admin/src/main/webapp/smartEditor/SEditorSkin.html

@@ -1,480 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<title>Smart Editor&#8482;</title>
-<link href="/smartEditor/css/default.css" rel="stylesheet" type="text/css" />
-<script type="text/javascript" src="/smartEditor/js/jindo.min.js" charset="utf-8"></script>
-<script type="text/javascript" src="/smartEditor/js/Husky.SE_Basic.js" charset="utf-8"></script>
-<script type="text/javascript" src="/smartEditor/js/SE_CustomPlugins.js" charset="utf-8"></script>
-</head>
-<body>
-<div id="smart_editor" class="smart_editor">
-	<div id="smart_content"> <a href="#husky_iframe" class="skip">&raquo; 편집 도구모음 건너뛰기</a>
-		<div class="tool">
-			<ul class="type">
-				<li class="husky_seditor_ui_fontName">
-					<select class="husky_seditor_ui_fontName_select">
-						<option value="">글꼴</option>
-						<option value="dotum" style="font-family:Dotum">돋움</option>
-						<option value="gulim" style="font-family:Gulim">굴림</option>
-						<option value="batang" style="font-family:Batang">바탕</option>
-						<option value="arial" style="font-family:Arial">Arial</option>
-						<option value="arial black" style="font-family:'Arial Black'">Arial Black</option>
-						<option value="tahoma" style="font-family:Tahoma">Tahoma</option>
-						<option value="verdana" style="font-family:Verdana">Verdana</option>
-						<option value="sans-serif" style="font-family:Sans-serif">Sans-serif</option>
-						<option value="serif" style="font-family:Serif">Serif</option>
-						<option value="monospace" style="font-family:Monospace">Monospace</option>
-						<option value="cursive" style="font-family:Cursive">Cursive</option>
-						<option value="fantasy" style="font-family:Fantasy">Fantasy</option>
-					</select>
-				</li>
-				<li class="husky_seditor_ui_fontSize">
-					<select class="husky_seditor_ui_fontSize_select">
-						<option value="">크기</option>
-						<option value="9px" style="font-size:9px">9px</option>
-						<option value="10px" style="font-size:10px">10px</option>
-						<option value="11px" style="font-size:11px">11px</option>
-						<option value="12px" style="font-size:12px">12px</option>
-						<option value="13px" style="font-size:13px">13px</option>
-						<option value="14px" style="font-size:14px">14px</option>
-						<option value="16px" style="font-size:16px">16px</option>
-						<option value="18px" style="font-size:18px">18px</option>
-						<option value="24px" style="font-size:24px">24px</option>
-						<option value="32px" style="font-size:32px">32px</option>
-					</select>
-				</li>
-				<li class="husky_seditor_ui_lineHeight">
-					<select class="husky_seditor_ui_lineHeight_select">
-						<option value="">줄간격</option>
-						<option value="1">100%</option>
-						<option value="1.2">120%</option>
-						<option value="1.4">140%</option>
-						<option value="1.6">160%</option>
-						<option value="1.8">180%</option>
-						<option value="2">200%</option>
-					</select>
-				</li>
-			</ul>
-			<ul class="style">
-				<li class="bold husky_seditor_ui_bold">
-					<button type="button" title="굵은글꼴[Ctrl+B]"><span>굵은글꼴</span></button>
-				</li>
-				<li class="underline husky_seditor_ui_underline">
-					<button type="button" title="밑줄[Ctrl+U]"><span>밑줄</span></button>
-				</li>
-				<li class="italic husky_seditor_ui_italic">
-					<button type="button" title="기울임글꼴[Ctrl+I]"><span>기울임글꼴</span></button>
-				</li>
-				<li class="del husky_seditor_ui_lineThrough">
-					<button type="button" title="취소선[Ctrl+D]"><span>취소선</span></button>
-				</li>
-				<li class="fcolor husky_seditor_ui_fontColor">
-					<button type="button" title="글자색"><span>글자색</span></button>
-					<!-- 팔레트 레이어 -->
-					<div class="layer husky_seditor_fontcolor_layer" style="display:none;">
-						<ul class="palette husky_seditor_color_palette">
-							<li><button type="button" title="#ff0000" style="background:#ff0000"><span>#ff0000</span></button></li>
-							<li><button type="button" title="#ff6c00" style="background:#ff6c00"><span>#ff6c00</span></button></li>
-							<li><button type="button" title="#ffaa00" style="background:#ffaa00"><span>#ffaa00</span></button></li>
-							<li><button type="button" title="#ffef00" style="background:#ffef00"><span>#ffef00</span></button></li>
-							<li><button type="button" title="#a6cf00" style="background:#a6cf00"><span>#a6cf00</span></button></li>
-							<li><button type="button" title="#009e25" style="background:#009e25"><span>#009e25</span></button></li>
-							<li><button type="button" title="#00b0a2" style="background:#00b0a2"><span>#00b0a2</span></button></li>
-							<li><button type="button" title="#0075c8" style="background:#0075c8"><span>#0075c8</span></button></li>
-							<li><button type="button" title="#3a32c3" style="background:#3a32c3"><span>#3a32c3</span></button></li>
-							<li><button type="button" title="#7820b9" style="background:#7820b9"><span>#7820b9</span></button></li>
-							<li><button type="button" title="#ef007c" style="background:#ef007c"><span>#ef007c</span></button></li>
-							<li><button type="button" title="#000000" style="background:#000000"><span>#000000</span></button></li>
-							<li><button type="button" title="#252525" style="background:#252525"><span>#252525</span></button></li>
-							<li><button type="button" title="#464646" style="background:#464646"><span>#464646</span></button></li>
-							<li><button type="button" title="#636363" style="background:#636363"><span>#636363</span></button></li>
-							<li><button type="button" title="#7d7d7d" style="background:#7d7d7d"><span>#7d7d7d</span></button></li>
-							<li><button type="button" title="#9a9a9a" style="background:#9a9a9a"><span>#9a9a9a</span></button></li>
-							<li><button type="button" title="#ffe8e8" style="background:#ffe8e8"><span>#ffe8e8</span></button></li>
-							<li><button type="button" title="#f7e2d2" style="background:#f7e2d2"><span>#f7e2d2</span></button></li>
-							<li><button type="button" title="#f5eddc" style="background:#f5eddc"><span>#f5eddc</span></button></li>
-							<li><button type="button" title="#f5f4e0" style="background:#f5f4e0"><span>#f5f4e0</span></button></li>
-							<li><button type="button" title="#edf2c2" style="background:#edf2c2"><span>#edf2c2</span></button></li>
-							<li><button type="button" title="#def7e5" style="background:#def7e5"><span>#def7e5</span></button></li>
-							<li><button type="button" title="#d9eeec" style="background:#d9eeec"><span>#d9eeec</span></button></li>
-							<li><button type="button" title="#c9e0f0" style="background:#c9e0f0"><span>#c9e0f0</span></button></li>
-							<li><button type="button" title="#d6d4eb" style="background:#d6d4eb"><span>#d6d4eb</span></button></li>
-							<li><button type="button" title="#e7dbed" style="background:#e7dbed"><span>#e7dbed</span></button></li>
-							<li><button type="button" title="#f1e2ea" style="background:#f1e2ea"><span>#f1e2ea</span></button></li>
-							<li><button type="button" title="#acacac" style="background:#acacac"><span>#acacac</span></button></li>
-							<li><button type="button" title="#c2c2c2" style="background:#c2c2c2"><span>#c2c2c2</span></button></li>
-							<li><button type="button" title="#cccccc" style="background:#cccccc"><span>#cccccc</span></button></li>
-							<li><button type="button" title="#e1e1e1" style="background:#e1e1e1"><span>#e1e1e1</span></button></li>
-							<li><button type="button" title="#ebebeb" style="background:#ebebeb"><span>#ebebeb</span></button></li>
-							<li><button type="button" title="#ffffff" style="background:#ffffff"><span>#ffffff</span></button></li>
-							<li><button type="button" title="#e97d81" style="background:#e97d81"><span>#e97d81</span></button></li>
-							<li><button type="button" title="#e19b73" style="background:#e19b73"><span>#e19b73</span></button></li>
-							<li><button type="button" title="#d1b274" style="background:#d1b274"><span>#d1b274</span></button></li>
-							<li><button type="button" title="#cfcca2" style="background:#cfcca2"><span>#cfcca2</span></button></li>
-							<li><button type="button" title="#cfcca2" style="background:#cfcca2"><span>#cfcca2</span></button></li>
-							<li><button type="button" title="#61b977" style="background:#61b977"><span>#61b977</span></button></li>
-							<li><button type="button" title="#53aea8" style="background:#53aea8"><span>#53aea8</span></button></li>
-							<li><button type="button" title="#518fbb" style="background:#518fbb"><span>#518fbb</span></button></li>
-							<li><button type="button" title="#6a65bb" style="background:#6a65bb"><span>#6a65bb</span></button></li>
-							<li><button type="button" title="#9a54ce" style="background:#9a54ce"><span>#9a54ce</span></button></li>
-							<li><button type="button" title="#e573ae" style="background:#e573ae"><span>#e573ae</span></button></li>
-							<li><button type="button" title="#5a504b" style="background:#5a504b"><span>#5a504b</span></button></li>
-							<li><button type="button" title="#767b86" style="background:#767b86"><span>#767b86</span></button></li>
-							<li><button type="button" title="#00ffff" style="background:#00ffff"><span>#00ffff</span></button></li>
-							<li><button type="button" title="#00ff00" style="background:#00ff00"><span>#00ff00</span></button></li>
-							<li><button type="button" title="#a0f000" style="background:#a0f000"><span>#a0f000</span></button></li>
-							<li><button type="button" title="#ffff00" style="background:#ffff00"><span>#ffff00</span></button></li>
-							<li><button type="button" title="#951015" style="background:#951015"><span>#951015</span></button></li>
-							<li><button type="button" title="#6e391a" style="background:#6e391a"><span>#6e391a</span></button></li>
-							<li><button type="button" title="#785c25" style="background:#785c25"><span>#785c25</span></button></li>
-							<li><button type="button" title="#5f5b25" style="background:#5f5b25"><span>#5f5b25</span></button></li>
-							<li><button type="button" title="#4c511f" style="background:#4c511f"><span>#4c511f</span></button></li>
-							<li><button type="button" title="#1c4827" style="background:#1c4827"><span>#1c4827</span></button></li>
-							<li><button type="button" title="#0d514c" style="background:#0d514c"><span>#0d514c</span></button></li>
-							<li><button type="button" title="#1b496a" style="background:#1b496a"><span>#1b496a</span></button></li>
-							<li><button type="button" title="#2b285f" style="background:#2b285f"><span>#2b285f</span></button></li>
-							<li><button type="button" title="#45245b" style="background:#45245b"><span>#45245b</span></button></li>
-							<li><button type="button" title="#721947" style="background:#721947"><span>#721947</span></button></li>
-							<li><button type="button" title="#352e2c" style="background:#352e2c"><span>#352e2c</span></button></li>
-							<li><button type="button" title="#3c3f45" style="background:#3c3f45"><span>#3c3f45</span></button></li>
-							<li><button type="button" title="#00aaff" style="background:#00aaff"><span>#00aaff</span></button></li>
-							<li><button type="button" title="#0000ff" style="background:#0000ff"><span>#0000ff</span></button></li>
-							<li><button type="button" title="#a800ff" style="background:#a800ff"><span>#a800ff</span></button></li>
-							<li><button type="button" title="#ff00ff" style="background:#ff00ff"><span>#ff00ff</span></button></li>
-						</ul>
-					</div>
-					<!-- /팔레트 레이어 -->
-				</li>
-				<li class="bcolor husky_seditor_ui_bgColor">
-					<button type="button" title="배경색"><span>배경색</span></button>
-					<!-- 배경색 + 팔레트 레이어 -->
-					<div class="layer husky_seditor_bgcolor_layer" style="display:none;">
-						<ul class="background">
-							<li><button type="button" title="#000000" style="background:#000000; color:#ffffff"><span>가나다</span></button></li>
-							<li><button type="button" title="#9334d8" style="background:#9334d8; color:#ffffff"><span>가나다</span></button></li>
-							<li><button type="button" title="#ff0000" style="background:#ff0000; color:#ffffff"><span>가나다</span></button></li>
-							<li><button type="button" title="#333333" style="background:#333333; color:#ffff00"><span>가나다</span></button></li>
-							<li><button type="button" title="#0000ff" style="background:#0000ff; color:#ffffff"><span>가나다</span></button></li>
-							<li><button type="button" title="#ff6600" style="background:#ff6600; color:#ffffff"><span>가나다</span></button></li>
-							<li><button type="button" title="#8e8e8e" style="background:#8e8e8e; color:#ffffff"><span>가나다</span></button></li>
-							<li><button type="button" title="#009999" style="background:#009999; color:#ffffff"><span>가나다</span></button></li>
-							<li><button type="button" title="#ffa700" style="background:#ffa700; color:#ffffff"><span>가나다</span></button></li>
-							<li><button type="button" title="#ffdaed" style="background:#ffdaed; color:#000000"><span>가나다</span></button></li>
-							<li><button type="button" title="#e4ff75" style="background:#e4ff75; color:#000000"><span>가나다</span></button></li>
-							<li><button type="button" title="#cc9900" style="background:#cc9900; color:#ffffff"><span>가나다</span></button></li>
-							<li><button type="button" title="#99dcff" style="background:#99dcff; color:#000000"><span>가나다</span></button></li>
-							<li><button type="button" title="#a6ff4d" style="background:#a6ff4d; color:#000000"><span>가나다</span></button></li>
-							<li><button type="button" title="#ffffff" style="background:#ffffff; color:#000000"><span>가나다</span></button></li>
-						</ul>
-					</div>
-					<!-- /배경색 + 팔레트 레이어 -->
-				</li>
-				<li class="sup husky_seditor_ui_superscript">
-					<button type="button" title="윗첨자"><span>윗첨자</span></button>
-				</li>
-				<li class="sub husky_seditor_ui_subscript">
-					<button type="button" title="아래첨자"><span>아래첨자</span></button>
-				</li>
-			</ul>
-			<ul class="paragraph">
-				<li class="left husky_seditor_ui_justifyleft">
-					<button type="button" title="왼쪽정렬"><span>왼쪽정렬</span></button>
-				</li>
-				<li class="center husky_seditor_ui_justifycenter">
-					<button type="button" title="가운데정렬"><span>가운데정렬</span></button>
-				</li>
-				<li class="right husky_seditor_ui_justifyright">
-					<button type="button" title="오른쪽정렬"><span>오른쪽정렬</span></button>
-				</li>
-				<li class="justify husky_seditor_ui_justifyfull">
-					<button type="button" title="양쪽정렬"><span>양쪽정렬</span></button>
-				</li>
-				<li class="ol husky_seditor_ui_orderedlist">
-					<button type="button" title="순차목록"><span>순차목록</span></button>
-				</li>
-				<li class="ul husky_seditor_ui_unorderedlist">
-					<button type="button" title="비순차목록"><span>비순차목록</span></button>
-				</li>
-				<li class="outdent husky_seditor_ui_outdent">
-					<button type="button" title="내어쓰기[Shift+Tab]"><span>내어쓰기</span></button>
-				</li>
-				<li class="indent husky_seditor_ui_indent">
-					<button type="button" title="들여쓰기[Tab]"><span>들여쓰기</span></button>
-				</li>
-			</ul>
-			<ul class="extra">
-				<li class="blockquote husky_seditor_ui_quote" style="display:none;">
-					<button type="button" title="인용"><span>인용</span></button>
-					<!-- 인용 레이어 -->
-					<div class="layer husky_seditor_blockquote_layer" style="display:none">
-						<ul>
-							<li class="q1"><button type="button"><span>왼쪽 실선</span></button></li>
-							<li class="q2"><button type="button"><span>인용 부호</span></button></li>
-							<li class="q3"><button type="button"><span>실선</span></button></li>
-							<li class="q4"><button type="button"><span>실선 + 배경</span></button></li>
-							<li class="q5"><button type="button"><span>굵은 실선</span></button></li>
-							<li class="q6"><button type="button"><span>점선</span></button></li>
-							<li class="q7"><button type="button"><span>점선 + 배경</span></button></li>
-							<li class="q8"><button type="button"><span>적용 취소</span></button></li>
-						</ul>
-					</div>
-					<!-- /인용 레이어 -->
-				</li>
-				<li class="url husky_seditor_ui_hyperlink">
-					<button type="button" title="링크"><span>URL</span></button>
-					<!-- URL 레이어 -->
-					<div class="layer husky_seditor_hyperlink_layer" style="display:none;">
-						<fieldset>
-							<h3>하이퍼링크</h3>
-							<input name="" class="link" type="text" value="http://" title="URL" />
-							<p><input name="" id="target" type="checkbox" value="" /><label for="target">새창으로</label></p>
-						</fieldset>
-						<div class="btn_area">
-							<button type="button" class="confirm" title="확인"><span>확인</span></button>
-							<button type="button" class="cancel" title="취소"><span>취소</span></button>
-
-						</div>
-
-					</div>
-					<!-- /URL 레이어 -->
-				</li>
-				<li class="table husky_seditor_ui_table" >
-					<button type="button" title="표"><span>표</span></button>
-					<!-- 표 레이어 -->
-					<div class="layer husky_seditor_table_layer" style="display:none;">
-						<fieldset class="num">
-							<h3>칸 수 지정</h3>
-							<dl>
-								<dt>
-									<label for="row">행</label>
-								</dt>
-								<dd>
-									<input id="row" name="" type="text" maxlength="2" value="4" />
-									<button type="button" class="add"><span>1행추가</span></button>
-									<button type="button" class="del"><span>1행삭제</span></button>
-								</dd>
-								<dt>
-									<label for="col">열</label>
-								</dt>
-								<dd>
-									<input id="col" name="" type="text" maxlength="2" value="4" />
-									<button type="button" class="add"><span>1행추가</span></button>
-									<button type="button" class="del"><span>1행삭제</span></button>
-								</dd>
-							</dl>
-							<table border="1">
-								<tr>
-									<td>&nbsp;</td>
-									<td>&nbsp;</td>
-									<td>&nbsp;</td>
-									<td>&nbsp;</td>
-								</tr>
-								<tr>
-									<td>&nbsp;</td>
-									<td>&nbsp;</td>
-									<td>&nbsp;</td>
-									<td>&nbsp;</td>
-								</tr>
-								<tr>
-									<td>&nbsp;</td>
-									<td>&nbsp;</td>
-									<td>&nbsp;</td>
-									<td>&nbsp;</td>
-								</tr>
-								<tr>
-									<td>&nbsp;</td>
-									<td>&nbsp;</td>
-									<td>&nbsp;</td>
-									<td>&nbsp;</td>
-								</tr>
-							</table>
-						</fieldset>
-						<fieldset class="color">
-							<h3>표 속성 지정</h3>
-							<dl>
-								<dt>
-									<label for="table_border_width">테두리 굵기</label>
-								</dt>
-								<dd>
-									<input id="table_border_width" name="" type="text" maxlength="2" value="1" />
-									<button type="button" class="add"><span>1px 더하기</span></button>
-									<button type="button" class="del"><span>1px 빼기</span></button>
-								</dd>
-								<dt>
-									<label for="table_border_color">테두리 색</label>
-								</dt>
-								<dd>
-									<span class="preview_palette"><button type="button" style="background:#cccccc;">색상찾기</button></span>
-									<input id="table_border_color" name="" type="text" maxlength="7" value="#CCCCCC" />
-									<button type="button" class="find_palette"><span>색상찾기</span></button>
-								</dd>
-								<dt>
-									<label for="table_bg_color">표 배경색</label>
-								</dt>
-								<dd>
-									<span class="preview_palette"><button type="button" style="background:#000000;">색상찾기</button></span>
-									<input id="table_bg_color" name="" type="text" maxlength="7" value="#000000" />
-									<button type="button" class="find_palette"><span>색상찾기</span></button>
-								</dd>
-							</dl>
-						</fieldset>
-						<div class="btn_area">
-							<button type="button" class="confirm" title="확인"><span>확인</span></button>
-							<button type="button" class="cancel" title="취소"><span>취소</span></button>
-						</div>
-					</div>
-					<!-- /표 레이어 -->
-				</li>
-				<li class="character husky_seditor_ui_sCharacter">
-					<button type="button" title="특수문자"><span>특수문자</span></button>
-					<!-- 특수문자 레이어 -->
-					<div class="layer husky_seditor_sCharacter_layer" style="display:none">
-						<h3>특수문자 삽입</h3>
-						<button type="button" class="close" title="특수문자 레이어 닫기"><span>특수문자 레이어 닫기</span></button>
-						<ul class="nav">
-							<li><a href="#character1" class="on">일반기호</a></li>
-							<li><a href="#character2">숫자와 단위</a></li>
-							<li><a href="#character3">원,괄호</a></li>
-							<li><a href="#character4">한글</a></li>
-							<li><a href="#character5">그리스,라틴어</a></li>
-							<li><a href="#character6">일본어</a></li>
-						</ul>
-						<ul style="display: block;" id="character1" class="list"></ul>
-						<ul style="display: none;" id="character2" class="list"></ul>
-						<ul style="display: none;" id="character3" class="list"></ul>
-						<ul style="display: none;" id="character4" class="list"></ul>
-						<ul style="display: none;" id="character5" class="list"></ul>
-						<ul style="display: none;" id="character6" class="list"></ul>
-						<p>
-							<label for="preview">선택한 기호</label>
-							<input id="preview" name="" type="text" />
-							<button type="button" title="확인"><span>확인</span></button>
-						</p>
-						<button type="button" class="close" title="특수문자 레이어 닫기"><span>특수문자 레이어 닫기</span></button>
-					</div>
-					<!-- /특수문자 레이어 -->
-				</li>
-				<li class="find husky_seditor_ui_findAndReplace" >
-					<button type="button" title="찾기"><span>찾기</span></button>
-					<!-- 찾기 바꾸기 레이어 -->
-					<div class="layer find husky_seditor_findAndReplace_layer" style="display:none">
-					<!-- class="layer find" | class="layer replace"-->
-						<h3>찾기/바꾸기</h3>
-						<button type="button" class="close" title="찾기/바꾸기 레이어 닫기"><span>찾기/바꾸기 레이어 닫기</span></button>
-						<div class="menu_tab">
-							<ul class="layer_tab">
-								<li class="tab1"><a href="#find" onclick="return false">찾기</a></li>
-								<li class="tab2"><a href="#replace" onclick="return false">바꾸기</a></li>
-							</ul>
-						</div>
-						<div class="container">
-							<div class="bx" id="find">
-								<fieldset>
-									<label for="keyword1">찾을단어</label>
-									<input id="keyword1" name="" type="text" />
-								</fieldset>
-								<span class="cap"></span> </div>
-							<div class="bx" id="replace">
-								<fieldset>
-									<label for="keyword2">찾을단어</label>
-									<input id="keyword2" name="" type="text" />
-									<br />
-									<label for="keyword3">바꿀단어</label>
-									<input id="keyword3" name="" type="text" />
-								</fieldset>
-							</div>
-						</div>
-						<div class="btn_area">
-							<button type="button" class="find_next" title="다음찾기"><span>다음찾기</span></button>
-							<button type="button" class="replace" title="바꾸기"><span>바꾸기</span></button>
-							<button type="button" class="replace_all" title="모두바꾸기"><span>모두바꾸기</span></button>
-							<button type="button" class="cancel" title="취소"><span>취소</span></button>
-						</div>
-						<button type="button" class="close" title="찾기/바꾸기 레이어 닫기"><span>찾기/바꾸기 레이어 닫기</span></button>
-					</div>
-					<!-- /찾기 바꾸기 레이어 -->
-				</li>
-			</ul>
-			<ul class="img_tool" >
-				<li class="img_ins husky_seditor_ui_ImgInsert">
-					<button type="button" title="그림 삽입" ><span>그림 삽입</span></button>
-					<div class="layer husky_seditor_ImgInsert_layer" style="display:none">
-						<h3>그림 삽입</h3>
-						<button type="button" class="close" title="그림 삽입 닫기"><span>그림 삽입 닫기</span></button>
-						<div class="container">
-							<div class="bx">
-								<fieldset>
-									<label for="img_url">경로</label>
-									<input id="img_url" name="img_url" type="text" value="" />
-									<br />
-									<label for="img_alt">설명</label>
-									<input id="img_alt" name="img_alt" type="text" value="" />
-								</fieldset>
-							</div>
-						</div>
-						<div class="btn_area">
-							<button type="button" class="confirm" title="확인"><span>확인</span></button>
-							<form style="display:inline;margin:0;padding:0;"><span id="spanButtonPlaceholder"></span></form>
-							<button type="button" class="cancel" title="취소"><span>취소</span></button>
-						</div>
-					</div>
-				</li>
-			</ul>
-			<button type="button" class="html husky_seditor_mode_toggle_button" title="HTML 편집기" style="width:45px"><span>HTML</span></button>
-		</div>
-		<hr />
-		<!-- 입력 -->
-		<div class="input_area husky_seditor_editing_area_container" style="min-height:400px;">
-			<iframe src="/smartEditor/se_blank.html" id="husky_iframe" name="husky_iframe" class="input_wysiwyg" frameborder="0" scrolling="yes" title="리치 에디터 - 편집기에서 빠져 나오시려면 ESC키를 누르세요" style="display:block;min-width:1078px;min-height:400px;"></iframe>
-			<textarea name="" rows="10" cols="20" title="HTML 편집 모드" class="input_syntax" style="display:none;">&lt;p&gt;&lt;/p&gt;</textarea>
-			<textarea name="" cols="" rows="" class="blind" title="데이터 전송을 위한 숨은 콘트롤" style="display:none;"></textarea>
-		</div>
-		<button type="button" class="input_control husky_seditor_editingArea_verticalResizer" title="입력창 크기 조절"><span>입력창 크기 조절</span></button>
-	</div>
-</div>
-
-<script type="text/javascript">
-//<![CDATA[
-function paste(url) {
-	$("img_url").value = url;
-}
-//]]>
-</script>
-<script type="text/javascript" src="/smartEditor/swfupload/js/swfupload.js" charset="utf-8"></script>
-<script type="text/javascript" src="/smartEditor/swfupload/js/handlers.js" charset="utf-8"></script>
-<script type="text/javascript">
-//<![CDATA[
-	var swfu;
-	window.onload = function() {
-		var settings = {
-			flash_url : "/smartEditor/swfupload/swf/swfupload.swf",
-			upload_url: "/swfupload_proc.jsp",
-			file_post_name : "Filedata",
-			file_size_limit : "5 MB",
-			file_types : "*.jpg;*.gif;*.jpeg;*.png;*.bmp",
-			file_types_description : "Web Image Files",
-			file_upload_limit : 0,
-			file_queue_limit : 1,
-			debug: false,
-
-			file_queue_error_handler : fileQueueError,
-			file_dialog_complete_handler : fileDialogComplete,
-			upload_error_handler : uploadError,
-			upload_success_handler : uploadSuccess,
-
-			button_image_url : "/smartEditor/swfupload/img/my_img.gif",
-			button_placeholder_id : "spanButtonPlaceholder",
-			button_width: 53,
-			button_height: 21,
-			button_window_mode: SWFUpload.WINDOW_MODE.TRANSPARENT,
-			button_cursor: SWFUpload.CURSOR.HAND
-		};
-
-		swfu = new SWFUpload(settings);
-	};
-//]]>
-</script>
-</body>
-</html>

+ 0 - 334
style24.admin/src/main/webapp/smartEditor/css/default.css

@@ -1,334 +0,0 @@
-@charset "utf-8";
-/* NHN > UIT Center > Open UI Technology Team > Jeong Chan Myeong(dece24@nhncorp.com) 200812 */
-
-/* Type Selector */
-#smart_editor *{margin:0; padding:0; font-style:normal; font-size:12px; font-family: Dotum, Gulim, AppleGothic, Sans-serif;}
-#smart_editor img,
-#smart_editor fieldset,
-#smart_editor button{ border:0;}
-#smart_editor button{ background:none; background-repeat:no-repeat; cursor:pointer; _cursor /**/:hand;}
-#smart_editor button *{ visibility:hidden;}
-#smart_editor legend{ position:absolute; width:0; height:0; font-size:0; line-height:0; overflow:hidden; visibility:hidden;}
-#smart_editor label{ cursor:pointer; _cursor /**/:hand;}
-#smart_editor hr{ display:none;}
-#smart_editor li{list-style:none;}
-
-/* Layout Selector */
-#smart_editor{ position:relative; background:#fff;}
-#smart_editor #smart_content{ position:relative; clear:both; margin:0 0 10px 0; border:1px solid #c2c2c2; *zoom:1;}
-#smart_editor #smart_footer{ position:relative; text-align:center; padding:10px 0;}
-
-/* Footer */
-#smart_editor #smart_footer *{ vertical-align:top;}
-#smart_editor #smart_footer button{ position:relative; width:67px; height:25px; margin:0 5px 0 0;}
-#smart_editor #smart_footer button.save_temp{ background:url(../img/btn_save_temp.gif) no-repeat;}
-#smart_editor #smart_footer button.preview{ background:url(../img/btn_preview.gif) no-repeat;}
-#smart_editor #smart_footer input{ margin:0;}
-#smart_editor #smart_footer input.reset{ width:67px; height:25px; border:0; background:url(../img/btn_cancel.gif) no-repeat; cursor:pointer; margin-left:5px;}
-
-/* Content > Input Area */
-#smart_editor a.skip{ position:relative; display:block; top:0; right:0; width:0; height:0; overflow:hidden; clear:both; zoom:1}
-#smart_editor a.skip:hover,
-#smart_editor a.skip:active,
-#smart_editor a.skip:focus{ position:relative; display:block; padding:5px; right:0; z-index:60; width:auto; height:auto; text-align:right; white-space:nowrap; color:#000; text-decoration:none; letter-spacing:-1px; _zoom:1;}
-
-#smart_editor .input_area{ position:relative; margin:10px; z-index:30; *zoom:1; height:400px;}
-#smart_editor .input_area iframe,
-#smart_editor .input_area textarea{ display:block; width:100%; position:relative; height:100%; border:0; overflow:auto;}
-#smart_editor .input_area iframe{}
-#smart_editor .input_area textarea{ *margin:0 -10px; _margin-bottom:-2px;}
-#smart_editor .input_area textarea.blind{ display:none;}
-#smart_editor .input_control{ position:relative; display:block; width:100%; clear:both; text-align:center; background:#fbfbfb url(../img/btn_expand.gif) no-repeat center center; cursor:n-resize;}
-#smart_editor .input_control span{ display:block; height:10px; border-top:1px solid #dfdfdf; visibility:visible; font-size:0; line-height:200%; white-space:nowrap; color:#fff;}
-
-#smart_editor .tool{ position:relative; overflow:visible; padding:5px 0 6px 0; *padding:5px 0 8px 0; z-index:40; clear:both; background:#f8f8f8 url(../img/bg_tool.gif) repeat-x left bottom; border:0; *zoom:1;}
-#smart_editor .tool:after{ content:""; display:block; clear:both;}
-#smart_editor .tool ul{ position:relative; overflow:visible; float:left; margin:0 5px 2px 0; z-index:2;}
-#smart_editor .tool ul.action{ width:43px;}
-#smart_editor .tool ul.type{ width:auto; white-space:nowrap;}
-#smart_editor .tool ul.style{ width:169px; z-index:3;}
-#smart_editor .tool ul.paragraph{ width:169px; z-index:2;}
-#smart_editor .tool ul.extra{ width:91px; z-index:1;}
-#smart_editor .tool ul.img_tool{ width:19px; z-index:1;}/*image button add*/
-#smart_editor .tool li{ position:relative; float:left; left:4px;}
-#smart_editor .tool li button{ width:21px; height:21px; background:url(../img/btn_set.gif) no-repeat 0 0; vertical-align:top;}
-#smart_editor .tool li button span{ position:absolute; top:0; left:0; width:0; height:0; overflow:hidden; visibility:hidden;}
-
-#smart_editor .tool li.style button span{ position:relative; display:block; width:auto; height:auto; padding:3px 0 0 5px; visibility:visible; text-align:left; letter-spacing:-1px;}
-#smart_editor .tool .type li{ float:none; display:inline; *top:1px;}
-#smart_editor .tool .type li select{ height:21px; width:62px;}
-#smart_editor .tool .html{ position:relative; right:7px; float:right; width:44px; height:23px; margin:-1px 0; background:url(../img/btn_html.gif) no-repeat 0 0;}
-#smart_editor .tool .html span{ position:absolute; top:0; left:0; width:0; height:0; overflow:hidden; visibility:hidden;}
-
-/* Content > Tool > Button Default */
-#smart_editor .tool li.undo button{ width:22px; background-position:0 0;}
-#smart_editor .tool li.redo button{ background-position:-22px 0;}
-#smart_editor .tool li.bold button{ width:22px; background-position:-43px 0;}
-#smart_editor .tool li.underline button{ background-position:-65px 0;}
-#smart_editor .tool li.italic button{ background-position:-86px 0;}
-#smart_editor .tool li.del button{ background-position:-107px 0;}
-#smart_editor .tool li.fcolor button{ background-position:-128px 0;}
-#smart_editor .tool li.bcolor button{ background-position:-149px 0;}
-#smart_editor .tool li.sup button{ background-position:-170px 0;}
-#smart_editor .tool li.sub button{ background-position:-191px 0;}
-#smart_editor .tool li.left button{ width:22px; background-position:-212px 0;}
-#smart_editor .tool li.center button{ background-position:-234px 0;}
-#smart_editor .tool li.right button{ background-position:-255px 0;}
-#smart_editor .tool li.justify button{ background-position:-276px 0;}
-#smart_editor .tool li.ol button{ background-position:-297px 0;}
-#smart_editor .tool li.ul button{ background-position:-318px 0;}
-#smart_editor .tool li.outdent button{ background-position:-339px 0;}
-#smart_editor .tool li.indent button{ background-position:-360px 0;}
-#smart_editor .tool li.blockquote button{ width:22px; background-position:-381px 0;}
-#smart_editor .tool li.url button{ width:26px; background-position:-403px 0;}
-#smart_editor .tool li.table button{ background-position:-429px 0;}
-#smart_editor .tool li.character button{ background-position:-450px 0;}
-#smart_editor .tool li.find button{ background-position:-471px 0;}
-#smart_editor .tool li.img_ins button{ background-position:-492px 0;}/*image button add*/
-#smart_editor .tool .html{ background-position:0 0;}
-
-/* Content > Tool > Button Hover */
-#smart_editor .tool li.undo button.hover{ width:22px; background-position:0 -21px;}
-#smart_editor .tool li.redo button.hover{ background-position:-22px -21px;}
-#smart_editor .tool li.bold button.hover{ width:22px; background-position:-43px -21px;}
-#smart_editor .tool li.underline button.hover{ background-position:-65px -21px;}
-#smart_editor .tool li.italic button.hover{ background-position:-86px -21px;}
-#smart_editor .tool li.del button.hover{ background-position:-107px -21px;}
-#smart_editor .tool li.fcolor button.hover{ background-position:-128px -21px;}
-#smart_editor .tool li.bcolor button.hover{ background-position:-149px -21px;}
-#smart_editor .tool li.sup button.hover{ background-position:-170px -21px;}
-#smart_editor .tool li.sub button.hover{ background-position:-191px -21px;}
-#smart_editor .tool li.left button.hover{ width:22px; background-position:-212px -21px;}
-#smart_editor .tool li.center button.hover{ background-position:-234px -21px;}
-#smart_editor .tool li.right button.hover{ background-position:-255px -21px;}
-#smart_editor .tool li.justify button.hover{ background-position:-276px -21px;}
-#smart_editor .tool li.ol button.hover{ background-position:-297px -21px;}
-#smart_editor .tool li.ul button.hover{ background-position:-318px -21px;}
-#smart_editor .tool li.outdent button.hover{ background-position:-339px -21px;}
-#smart_editor .tool li.indent button.hover{ background-position:-360px -21px;}
-#smart_editor .tool li.blockquote button.hover{ width:22px; background-position:-381px -21px;}
-#smart_editor .tool li.url button.hover{ width:26px; background-position:-403px -21px;}
-#smart_editor .tool li.table button.hover{ background-position:-429px -21px;}
-#smart_editor .tool li.character button.hover{ background-position:-450px -21px;}
-#smart_editor .tool li.find button.hover{ background-position:-471px -21px;}
-#smart_editor .tool li.img_ins button.hover{ background-position:-492px -21px;}/*image button add*/
-#smart_editor .tool .html.hover{ background-position:0 -23px;}
-
-/* Content > Tool > Button Active */
-#smart_editor .tool li.undo button.active{ width:22px; background-position:0 -42px;}
-#smart_editor .tool li.redo button.active{ background-position:-22px -42px;}
-#smart_editor .tool li.bold button.active{ width:22px; background-position:-43px -42px;}
-#smart_editor .tool li.underline button.active{ background-position:-65px -42px;}
-#smart_editor .tool li.italic button.active{ background-position:-86px -42px;}
-#smart_editor .tool li.del button.active{ background-position:-107px -42px;}
-#smart_editor .tool li.fcolor button.active{ background-position:-128px -42px;}
-#smart_editor .tool li.bcolor button.active{ background-position:-149px -42px;}
-#smart_editor .tool li.sup button.active{ background-position:-170px -42px;}
-#smart_editor .tool li.sub button.active{ background-position:-191px -42px;}
-#smart_editor .tool li.left button.active{ width:22px; background-position:-212px -42px;}
-#smart_editor .tool li.center button.active{ background-position:-234px -42px;}
-#smart_editor .tool li.right button.active{ background-position:-255px -42px;}
-#smart_editor .tool li.justify button.active{ background-position:-276px -42px;}
-#smart_editor .tool li.ol button.active{ background-position:-297px -42px;}
-#smart_editor .tool li.ul button.active{ background-position:-318px -42px;}
-#smart_editor .tool li.outdent button.active{ background-position:-339px -42px;}
-#smart_editor .tool li.indent button.active{ background-position:-360px -42px;}
-#smart_editor .tool li.blockquote button.active{ width:22px; background-position:-381px -42px;}
-#smart_editor .tool li.url button.active{ width:26px; background-position:-403px -42px;}
-#smart_editor .tool li.table button.active{ background-position:-429px -42px;}
-#smart_editor .tool li.character button.active{ background-position:-450px -42px;}
-#smart_editor .tool li.find button.active{ background-position:-471px -42px;}
-#smart_editor .tool li.img_ins button.active{ background-position:-492px -42px;}/*image button add*/
-#smart_editor .tool .html.active{ background-position:0 -46px;}
-
-/* Content > Tool > Button Off */
-#smart_editor .tool.off li.undo button,
-#smart_editor .tool li.undo button.off{ width:22px; background-position:0 -63px;}
-#smart_editor .tool.off li.redo button,
-#smart_editor .tool li.redo button.off{ background-position:-22px -63px;}
-#smart_editor .tool.off li.bold button{ width:22px; background-position:-43px -63px;}
-#smart_editor .tool.off li.underline button{ background-position:-65px -63px;}
-#smart_editor .tool.off li.italic button{ background-position:-86px -63px;}
-#smart_editor .tool.off li.del button{ background-position:-107px -63px;}
-#smart_editor .tool.off li.fcolor button{ background-position:-128px -63px;}
-#smart_editor .tool.off li.bcolor button{ background-position:-149px -63px;}
-#smart_editor .tool.off li.sup button{ background-position:-170px -63px;}
-#smart_editor .tool.off li.sub button{ background-position:-191px -63px;}
-#smart_editor .tool.off li.left button{ width:22px; background-position:-212px -63px;}
-#smart_editor .tool.off li.center button{ background-position:-234px -63px;}
-#smart_editor .tool.off li.right button{ background-position:-255px -63px;}
-#smart_editor .tool.off li.justify button{ background-position:-276px -63px;}
-#smart_editor .tool.off li.ol button{ background-position:-297px -63px;}
-#smart_editor .tool.off li.ul button{ background-position:-318px -63px;}
-#smart_editor .tool.off li.outdent button{ background-position:-339px -63px;}
-#smart_editor .tool.off li.indent button{ background-position:-360px -63px;}
-#smart_editor .tool.off li.blockquote button{ width:22px; background-position:-381px -63px;}
-#smart_editor .tool.off li.url button{ width:26px; background-position:-403px -63px;}
-#smart_editor .tool.off li.table button{ background-position:-429px -63px;}
-#smart_editor .tool.off li.character button{ background-position:-450px -63px;}
-#smart_editor .tool.off li.find button{ background-position:-471px -63px;}
-#smart_editor .tool.off li.img_ins button{ background-position:-492px -63px;}/*image button add*/
-#smart_editor .tool.off li button{ cursor:default;}
-#smart_editor .tool.off .html{ background-position:0 -46px;}
-
-/* Content > Tool > Layer */
-#smart_editor .tool .layer{ display:none; position:absolute; left:0; top:20px; background-color:#fbfbfb; border:1px solid #c5c5c5; border-right:1px solid #9f9f9f; border-bottom:1px solid #9f9f9f;}
-#smart_editor .tool .layer li{ float:none; left:0;}
-#smart_editor .tool .layer button{ margin:0 !important; width:auto; height:auto; background:none;}
-#smart_editor .tool .layer button span{ position:absolute; width:0; height:0; font-size:0; line-height:0; overflow:hidden; visibility:hidden;}
-#smart_editor .tool .btn_area{ position:relative; clear:both; text-align:center !important; padding:7px 0 12px 0; width:100%; white-space:nowrap; *zoom:1;}
-#smart_editor .tool .btn_area *{ vertical-align:top;}
-#smart_editor .tool button.close{ position:absolute; top:4px; right:3px; width:21px; height:20px; background:url(../img/btn_layer_close.gif) no-repeat center center !important;}
-#smart_editor .tool button.close span{ position:absolute; width:0; height:0; overflow:hidden; visibility:hidden;}
-#smart_editor .tool .layer .btn_area button{ *margin:0 2px !important;}
-#smart_editor .tool .layer .btn_area button.confirm{ width:38px; height:21px; background:url(../img/btn_layer_confirm.gif) no-repeat;}
-#smart_editor .tool .layer .btn_area button.cancel{ width:38px; height:21px; background:url(../img/btn_layer_cancel.gif) no-repeat;}
-
-#smart_editor .tool li.fcolor .layer{ width:218px !important; height:auto !important; background-image:none !important; overflow:hidden;}
-#smart_editor .tool .layer .palette{ width:210px; position:relative; left:7px; padding:8px 0 7px 0; margin:0;}
-#smart_editor .tool .layer .palette li{ float:left; margin:0 1px 1px 0; font-size:0; line-height:0;}
-#smart_editor .tool .layer .palette button{ position:relative; overflow:hidden; width:11px; height:11px;}
-
-#smart_editor .tool li.bcolor .layer { width:218px; overflow:hidden;}
-#smart_editor .tool .layer .background{ width:210px; position:relative; left:7px; margin:0 0 -2px 0; padding:8px 0 0 0; *padding-bottom:8px; _padding-bottom:4px;}
-#smart_editor .tool .layer .background li{ float:left; margin:0 5px 2px 0;}
-#smart_editor .tool .layer .background button{ position:relative; overflow:hidden; width:65px; height:19px; text-align:left; padding:4px;}
-#smart_editor .tool .layer .background button span{ position:relative; visibility:visible; font-size:12px; line-height:normal; width:auto; height:auto;}
-
-#smart_editor .tool li.style .layer{ padding:4px 2px; _overflow:hidden; filter:progid:DXImageTransform.Microsoft.Shadow(color=#dddddd,direction=135,strength=2);}
-#smart_editor .tool li.style .layer li{ position:relative; background:#fbfbfb;}
-#smart_editor .tool li.style .layer li button{ display:block; width:134px; position:relative;}
-#smart_editor .tool li.style .layer li button span{ display:block; width:130px; text-align:left; letter-spacing:normal;}
-#smart_editor .tool li.style .layer li.h3 button span{ padding:3px 0 1px 4px; height:15px; _height /**/:19px; font-size:16px; font-weight:bold;}
-#smart_editor .tool li.style .layer li.h4 button span{ padding:3px 0 2px 4px; height:13px; _height /**/:18px; font-size:14px; font-weight:bold;}
-#smart_editor .tool li.style .layer li.h5 button span{ padding:3px 0 1px 4px; height:11px; _height /**/:15px; font-size:12px; font-weight:bold;}
-#smart_editor .tool li.style .layer li.h6 button span{ padding:3px 0 1px 4px; height:11px; _height /**/:15px; font-size:12px;}
-#smart_editor .tool li.style .layer li.p button span{ padding:3px 0 1px 4px; height:11px; _height /**/:15px; font-size:12px; color:#5d5d5d;}
-#smart_editor .tool li.style .layer li button.hover{ background:#c1f471; *height:1%;}
-
-#smart_editor .tool li.blockquote .layer{ padding:6px 5px 6px 7px; left:0; width:288px;}
-#smart_editor .tool li.blockquote .layer ul{ *zoom:1; margin:0;}
-#smart_editor .tool li.blockquote .layer ul:after{ content:""; display:block; clear:both;}
-#smart_editor .tool li.blockquote .layer li{ position:relative; float:left; overflow:hidden; width:32px; height:34px; margin:0 2px 0 0; border:1px solid #cdcecc; background-image:url(../img/btn_qmark.gif); background-repeat:no-repeat;}
-#smart_editor .tool li.blockquote .layer li.q1{ background-position:0 0;}
-#smart_editor .tool li.blockquote .layer li.q2{ background-position:-32px 0;}
-#smart_editor .tool li.blockquote .layer li.q3{ background-position:-64px 0;}
-#smart_editor .tool li.blockquote .layer li.q4{ background-position:-96px 0;}
-#smart_editor .tool li.blockquote .layer li.q5{ background-position:-128px 0;}
-#smart_editor .tool li.blockquote .layer li.q6{ background-position:-160px 0;}
-#smart_editor .tool li.blockquote .layer li.q7{ background-position:-192px 0;}
-#smart_editor .tool li.blockquote .layer li.q8{ background-position:-224px 0;}
-#smart_editor .tool li.blockquote .layer li button{ width:32px; height:34px;}
-
-#smart_editor .tool li.url .layer{ width:231px; height:125px; background-image:url(../img/bx_url.gif); background-repeat:no-repeat; background-position:10px 14px;}
-#smart_editor .tool li.url .layer fieldset{ position:absolute; width:212px; left:10px; top:14px;}
-#smart_editor .tool li.url .layer fieldset h3{ position:absolute; top:-4px; left:15px; color:#404040; visibility:visible; font-size:12px; line-height:normal; width:auto; height:auto; background:none; margin:0; padding:0; font-weight:normal;}
-#smart_editor .tool li.url .layer fieldset input.link{ position:absolute; left:12px; top:19px; width:179px; padding:2px 0 1px 6px; *margin:-1px 0; font-size:11px; height:13px; border:1px solid #818181; border-right:1px solid #dadada; border-bottom:1px solid #dadada;}
-#smart_editor .tool li.url .layer fieldset p{ position:absolute; left:12px; top:44px;}
-#smart_editor .tool li.url .layer fieldset p input{ width:13px; height:13px; vertical-align:middle; margin-right:3px;}
-#smart_editor .tool li.url .layer .btn_area{ position:absolute; bottom:12px; padding:0;}
-
-#smart_editor .tool li.table .layer{ width:242px; height:239px; background-image:url(../img/bx_table.gif); background-repeat:no-repeat; background-position:10px 14px;}
-#smart_editor .tool li.table .layer fieldset{ position:absolute; width:222px; left:10px;}
-#smart_editor .tool li.table .layer fieldset h3{ position:absolute; top:-4px; left:15px; color:#404040; visibility:visible; font-size:12px; line-height:normal; width:auto; height:auto; background:none; margin:0; padding:0; font-weight:normal;}
-
-#smart_editor .tool li.table .layer fieldset dl{ position:absolute; left:10px;}
-#smart_editor .tool li.table .layer fieldset dt{ float:left; padding:3px 0 0 0; height:20px; white-space:nowrap; letter-spacing:-1px;}
-#smart_editor .tool li.table .layer fieldset dd{ float:right; position:relative;}
-#smart_editor .tool li.table .layer fieldset dd button.add,
-#smart_editor .tool li.table .layer fieldset dd button.del{ position:absolute; left:27px; width:15px; height:8px; background:url(../img/btn_layer_cell_adjust.gif) no-repeat;}
-#smart_editor .tool li.table .layer fieldset dd button.add{ top:1px;}
-#smart_editor .tool li.table .layer fieldset dd button.del{ top:9px; background-position:0 -8px;}
-#smart_editor .tool li.table .layer fieldset dd .preview_palette{ display:block; float:left; margin:0 3px 0 0; padding:2px; position:relative; border:1px solid #c8c9c6; width:14px; height:14px; overflow:hidden;}
-#smart_editor .tool li.table .layer fieldset dd .preview_palette button{ width:14px; height:14px; font-size:500px; line-height:0;}
-#smart_editor .tool li.table .layer fieldset dd .find_palette{ width:33px; height:20px; background:url(../img/btn_search.gif) no-repeat;}
-
-#smart_editor .tool li.table .layer fieldset.num{ top:14px;}
-#smart_editor .tool li.table .layer fieldset.num dl{ top:18px; width:60px;}
-#smart_editor .tool li.table .layer fieldset.num dt{ height:20px;}
-#smart_editor .tool li.table .layer fieldset.num dd{ height:23px;}
-#smart_editor .tool li.table .layer fieldset.num dt label{ font-size:11px; color:#333;}
-#smart_editor .tool li.table .layer fieldset.num dd input{ padding:3px 0 0 6px; *margin:-1px 0; width:35px; height:13px; font-size:11px; border:1px solid #818181; border-right:1px solid #dadada; border-bottom:1px solid #dadada;}
-
-#smart_editor .tool li.table .layer fieldset.color{ top:96px;}
-#smart_editor .tool li.table .layer fieldset.color dl{ top:18px; width:210px;}
-#smart_editor .tool li.table .layer fieldset.color dt{ height:23px;}
-#smart_editor .tool li.table .layer fieldset.color dd{ height:26px; width:146px;}
-#smart_editor .tool li.table .layer fieldset.color dt label{ font-size:11px; color:#333;}
-#smart_editor .tool li.table .layer fieldset.color dd input{ padding:3px 0 0 6px; *margin:-1px 0; font-size:11px; border:1px solid #818181; border-right:1px solid #dadada; border-bottom:1px solid #dadada;}
-#smart_editor .tool li.table .layer fieldset.color dd input#table_border_width{ width:35px; height:13px;}
-#smart_editor .tool li.table .layer fieldset.color dd input#table_border_color,
-#smart_editor .tool li.table .layer fieldset.color dd input#table_bg_color{ width:70px; height:15px; *margin-right:3px;}
-
-#smart_editor .tool li.table .layer table{ position:absolute; top:18px; left:75px; width:137px; height:40px; table-layout:fixed;}
-#smart_editor .tool li.table .layer table *{ font-size:0; line-height:0;}
-#smart_editor .tool li.table .layer table th,
-#smart_editor .tool li.table .layer table td{ text-align:center;}
-#smart_editor .tool li.table .layer .btn_area{ position:absolute; bottom:12px; padding:0; z-index:1;}
-
-#smart_editor .tool li.table .layer .palette{ display:none; position:absolute; z-index:2; left:11px; width:204px; padding:8px 7px 7px 7px; _padding-right:6px; background-color:#fbfbfb; border:1px solid #c5c5c5; border-right:1px solid #9f9f9f; border-bottom:1px solid #9f9f9f;}
-#smart_editor .tool li.table .layer.p1 .palette{ display:block; top:163px;}
-#smart_editor .tool li.table .layer.p2 .palette{ display:block; top:189px;}
-
-#smart_editor .tool li.character .layer{ width:433px; height:242px; overflow:hidden;}
-#smart_editor .tool li.character .layer ul{ margin:0;}
-#smart_editor .tool li.character .layer h3{position:absolute; width:0; height:0; overflow:hidden; visibility:hidden;}
-#smart_editor .tool li.character .layer .nav{ position:absolute; top:11px; left:-1px; overflow:hidden; white-space:nowrap;}
-#smart_editor .tool li.character .layer .nav li{ display:inline; margin:0 -4px 0 0; padding:0 8px; background:url(../img/vr_layer_character.gif) no-repeat 0 0;}
-#smart_editor .tool li.character .layer .nav li a{ color:#444; text-decoration:none; letter-spacing:-1px;}
-#smart_editor .tool li.character .layer .nav li a:hover,
-#smart_editor .tool li.character .layer .nav li a:active,
-#smart_editor .tool li.character .layer .nav li a:focus{ text-decoration:underline;}
-#smart_editor .tool li.character .layer .nav li a.on{ font-weight:bold; color:#004790; display:inline;}
-#smart_editor .tool li.character .layer .list{ position:absolute; left:7px; top:30px; width:421px; height:172px; background:url(../img/bx_character.gif) no-repeat;}
-#smart_editor .tool li.character .layer .list li{ position:relative; top:1px; left:1px; float:left; width:20px; height:18px; margin:0 1px 1px 0;}
-#smart_editor .tool li.character .layer .list li button{ width:20px; height:18px;}
-#smart_editor .tool li.character .layer .list li button.hover{ border:2px solid #27c11a;}
-#smart_editor .tool li.character .layer .list li button span{ overflow:visible; font-size:12px; width:auto; height:auto; position:relative; visibility:visible; line-height:normal;}
-#smart_editor .tool li.character .layer p{ position:absolute; top:212px; left:7px;}
-#smart_editor .tool li.character .layer p *{ vertical-align:top;}
-#smart_editor .tool li.character .layer p label{ position:relative; top:4px; margin:0 7px 0 0; color:#333; letter-spacing:-1px;}
-#smart_editor .tool li.character .layer p input{ padding:3px 0 0 4px; margin:0 4px 0 0; width:300px; _width /**/:306px; height:16px; _height /**/:20px; border:1px solid #acacac; border-right:1px solid #dadada; border-bottom:1px solid #dadada;}
-#smart_editor .tool li.character .layer p button{ position:relative; *top:1px; width:38px; height:21px; background:url(../img/btn_layer_confirm.gif) no-repeat;}
-#smart_editor .tool li.character .layer p button span{ position:absolute; width:0; height:0; overflow:hidden; visibility:hidden;}
-
-#smart_editor .tool li.find .layer{ width:242px;}
-#smart_editor .tool li.find .layer h3{ background:#f2f2f2; color:#333; height:21px; margin:0 0 11px 0; padding:7px 0 0 5px;}
-#smart_editor .tool li.find .layer .menu_tab{ position:relative; z-index:20; width:100%; *zoom:1;}
-#smart_editor .tool li.find .layer .menu_tab:after{ content:""; display:block; clear:both;}
-#smart_editor .tool li.find .layer .layer_tab{ position:relative; left:10px; padding:0; margin:0; clear:both;}
-#smart_editor .tool li.find .layer .layer_tab li{ position:relative; z-index:1; float:left; margin-right:1px; background:url(../img/btn_layer_tab.gif) no-repeat 0 0;}
-#smart_editor .tool li.find .layer .layer_tab li a{ position:relative; display:block; float:left; left:2px; height:15px; padding:4px 9px 0 5px; color:#404040; text-decoration:none; background:url(../img/btn_layer_tab.gif) no-repeat right 0;}
-#smart_editor .tool li.find .layer.find .layer_tab li.tab1,
-#smart_editor .tool li.find .layer.replace .layer_tab li.tab2{ top:-1px; margin-bottom:-1px;}
-#smart_editor .tool li.find .layer.find .layer_tab li.tab1 a,
-#smart_editor .tool li.find .layer.replace .layer_tab li.tab2 a{ height:18px;}
-#smart_editor .tool li.find .layer .container{ position:relative; z-index:1; clear:both; top:-2px;}
-#smart_editor .tool li.find .layer .container .bx{ display:none; position:relative; width:222px; left:10px; clear:both; z-index:1; background:url(../img/bx_find.gif) no-repeat;}
-#smart_editor .tool li.find .layer.find .container #find,
-#smart_editor .tool li.find .layer.replace .container #replace{ display:block;}
-
-#smart_editor .tool li.find .layer .bx fieldset{ position:relative; padding:13px 0 17px 11px;}
-#smart_editor .tool li.find .layer .bx fieldset *{ vertical-align:top;}
-#smart_editor .tool li.find .layer .bx label{ position:relative; top:4px; margin:0 7px 0 0; font-size:11px; letter-spacing:-1px; color:#333;}
-#smart_editor .tool li.find .layer .bx input{ padding:3px 0 0 4px; width:144px; _width /**/:150px; height:14px; _height /**/:19px; border:1px solid #acacac; border-right:1px solid #dadada; border-bottom:1px solid #dadada;}
-#smart_editor .tool li.find .layer .bx .cap{ position:absolute; left:0; bottom:0; display:block; width:222px; height:2px; _margin:0 0 -1px 0; overflow:hidden; background:#fff url(../img/bx_find.gif) no-repeat left bottom; font-size:0; line-height:0;}
-#smart_editor .tool li.find .layer .bx#replace fieldset{ height:45px; _height /**/:75px;}
-#smart_editor .tool li.find .layer .bx#replace fieldset #keyword2{ margin-bottom:6px;}
-#smart_editor .tool li.find .layer .btn_area button{ display:none; *margin:0 2px !important;}
-#smart_editor .tool li.find .layer.find .btn_area .find_next{ display:inline; width:62px; height:21px; background:url(../img/btn_layer_find_next_strong.gif) no-repeat;}
-#smart_editor .tool li.find .layer.replace .btn_area .find_next{ display:inline; width:55px; height:21px; background:url(../img/btn_layer_find_next.gif) no-repeat;}
-#smart_editor .tool li.find .layer.replace .btn_area .replace{ display:inline; width:48px; height:21px; background:url(../img/btn_layer_replace.gif) no-repeat;}
-#smart_editor .tool li.find .layer.replace .btn_area .replace_all{ display:inline; width:69px; height:21px; background:url(../img/btn_layer_replace_all.gif) no-repeat;}
-#smart_editor .tool li.find .layer .btn_area .cancel{ display:inline;}
-
-/*image button add*/
-#smart_editor .tool li.img_ins .layer{ width:242px;}
-#smart_editor .tool li.img_ins .layer h3{ background:#f2f2f2; color:#333; height:21px; margin:0 0 11px 0; padding:7px 0 0 5px;}
-#smart_editor .tool li.img_ins .layer .bx fieldset{ position:relative; padding:13px 0 17px 11px;}
-#smart_editor .tool li.img_ins .layer .bx fieldset *{ vertical-align:top;}
-#smart_editor .tool li.img_ins .layer .bx label{ position:relative; top:4px; margin:0 7px 0 0; font-size:11px; letter-spacing:-1px; color:#333;}
-#smart_editor .tool li.img_ins .layer .bx input{ padding:3px 0 0 4px; width:184px; _width /**/:190px; height:14px; _height /**/:19px; border:1px solid #acacac; border-right:1px solid #dadada; border-bottom:1px solid #dadada;}
-#smart_editor .tool li.img_ins .layer .bx fieldset{ height:45px; _height /**/:75px;}
-#smart_editor .tool li.img_ins .layer .bx fieldset #img_url{ margin-bottom:6px;}
-#smart_editor .tool li.img_ins .layer .btn_area .my_img_upload{ display:inline; width:53px; height:21px; background:url(../img/btn_layer_img.gif) no-repeat;}

+ 0 - 30
style24.admin/src/main/webapp/smartEditor/css/style.css

@@ -1,30 +0,0 @@
-@charset "utf-8";
-/* NHN > UIT Center > Open UI Technology Team > Jeong Chan Myeong(dece24@nhncorp.com) 200812 */
-
-html,
-body{ height:100%;}
-
-#smartInput{ margin:0 10px 0 0;}
-.smartOutput{ font-size:12px; line-height:1.6; font-family:Dotum, AppleGothic, Sans-serif;} /* 스마트 에디터의 풍부한 표현이 정상적으로 출력되도록 하려면 콘텐츠가 출력되는 곳에 이 클래스를 적용하여야 한다. 예를 들면 게시물 읽기 페이지의 본문이 이에 해당된다. */
-
-.smartOutput p{ margin-top:7px; margin-bottom:7px;}
-
-.smartOutput blockquote.q1,
-.smartOutput blockquote.q2,
-.smartOutput blockquote.q3,
-.smartOutput blockquote.q4,
-.smartOutput blockquote.q5,
-.smartOutput blockquote.q6,
-.smartOutput blockquote.q7{ padding:10px; margin-left:15px; margin-right:15px;}
-
-.smartOutput blockquote.q1{ padding:0 10px; border-left:2px solid #ccc;}
-.smartOutput blockquote.q2{ padding:0 10px; background:url(../img/bg_qmark.gif) no-repeat;}
-.smartOutput blockquote.q3{ border:1px solid #d9d9d9;}
-.smartOutput blockquote.q4{ border:1px solid #d9d9d9; background:#fbfbfb;}
-.smartOutput blockquote.q5{ border:2px solid #707070;}
-.smartOutput blockquote.q6{ border:1px dashed #707070;}
-.smartOutput blockquote.q7{ border:1px dashed #707070; background:#fbfbfb;}
-
-.smartOutput sup{ font:10px Tahoma;}
-.smartOutput sub{ font:10px Tahoma;}
-.smartOutput table td{ padding:4px;}

二进制
style24.admin/src/main/webapp/smartEditor/img/XPButtonUploadText_61x22.png


二进制
style24.admin/src/main/webapp/smartEditor/img/bg_qmark.gif


二进制
style24.admin/src/main/webapp/smartEditor/img/bg_tool.gif


二进制
style24.admin/src/main/webapp/smartEditor/img/btn_confirm.gif


二进制
style24.admin/src/main/webapp/smartEditor/img/btn_expand.gif


二进制
style24.admin/src/main/webapp/smartEditor/img/btn_html.gif


二进制
style24.admin/src/main/webapp/smartEditor/img/btn_layer_cancel.gif


二进制
style24.admin/src/main/webapp/smartEditor/img/btn_layer_cell_adjust.gif


二进制
style24.admin/src/main/webapp/smartEditor/img/btn_layer_close.gif


二进制
style24.admin/src/main/webapp/smartEditor/img/btn_layer_confirm.gif


二进制
style24.admin/src/main/webapp/smartEditor/img/btn_layer_find_next.gif


二进制
style24.admin/src/main/webapp/smartEditor/img/btn_layer_find_next_strong.gif


二进制
style24.admin/src/main/webapp/smartEditor/img/btn_layer_img.gif


二进制
style24.admin/src/main/webapp/smartEditor/img/btn_layer_replace.gif


二进制
style24.admin/src/main/webapp/smartEditor/img/btn_layer_replace_all.gif


二进制
style24.admin/src/main/webapp/smartEditor/img/btn_layer_tab.gif


二进制
style24.admin/src/main/webapp/smartEditor/img/btn_qmark.gif


二进制
style24.admin/src/main/webapp/smartEditor/img/btn_search.gif


二进制
style24.admin/src/main/webapp/smartEditor/img/btn_set.gif


二进制
style24.admin/src/main/webapp/smartEditor/img/btn_set_blank.gif


二进制
style24.admin/src/main/webapp/smartEditor/img/btn_set_original.gif


二进制
style24.admin/src/main/webapp/smartEditor/img/bx_character.gif


二进制
style24.admin/src/main/webapp/smartEditor/img/bx_find.gif


二进制
style24.admin/src/main/webapp/smartEditor/img/bx_table.gif


二进制
style24.admin/src/main/webapp/smartEditor/img/bx_url.gif


二进制
style24.admin/src/main/webapp/smartEditor/img/vr_layer_character.gif


文件差异内容过多而无法显示
+ 0 - 109
style24.admin/src/main/webapp/smartEditor/js/Husky.SE_Basic.js


+ 0 - 126
style24.admin/src/main/webapp/smartEditor/js/HuskyEZCreator.js

@@ -1,126 +0,0 @@
-if(typeof window.nhn=='undefined') window.nhn = {};
-if (!nhn.husky) nhn.husky = {};
-
-/**
- * @fileOverview This file contains application creation helper function, which would load up an HTML(Skin) file and then execute a specified create function.
- * @name HuskyEZCreator.js
- */
-nhn.husky.EZCreator = new (function(){
-	this.nBlockerCount = 0;
-
-	this.createInIFrame = function(htOptions){
-		if(arguments.length == 1){
-			var oAppRef = htOptions.oAppRef;
-			var elPlaceHolder = htOptions.elPlaceHolder;
-			var sSkinURI = htOptions.sSkinURI;
-			var fCreator = htOptions.fCreator;
-			var fOnAppLoad = htOptions.fOnAppLoad;
-			var bUseBlocker = htOptions.bUseBlocker;
-			var htParams = htOptions.htParams;
-		}else{
-			// for backward compatibility only
-			var oAppRef = arguments[0];
-			var elPlaceHolder = arguments[1];
-			var sSkinURI = arguments[2];
-			var fCreator = arguments[3];
-			var fOnAppLoad = arguments[4];
-			var bUseBlocker = arguments[5];
-			var htParams = arguments[6];
-		}
-
-		if(bUseBlocker) nhn.husky.EZCreator.showBlocker();
-
-		var attachEvent = function(elNode, sEvent, fHandler){
-			if(elNode.addEventListener){
-				elNode.addEventListener(sEvent, fHandler, false);
-			}else{
-				elNode.attachEvent("on"+sEvent, fHandler);
-			}
-		}
-
-		if(!elPlaceHolder){
-			alert("Placeholder is required!");
-			return;
-		}
-
-		if(typeof(elPlaceHolder) != "object")
-			elPlaceHolder = document.getElementById(elPlaceHolder);
-
-		var elIFrame;
-		try{
-			elIFrame = document.createElement("<IFRAME id='the_iframe' frameborder=0 scrolling=no'>");
-		}catch(e){
-			elIFrame = document.createElement("IFRAME");
-			elIFrame.setAttribute("id", "the_iframe");
-//			elIFrame.setAttribute("onload", "calcHeight()");
-			elIFrame.setAttribute("frameborder", "0");
-			elIFrame.setAttribute("scrolling", "no");
-		}
-		elIFrame.style.width = "1px";
-		elIFrame.style.height = "1px";
-		elIFrame.style.minHeight = "467px";
-
-		elPlaceHolder.parentNode.insertBefore(elIFrame, elPlaceHolder.nextSibling);
-
-		attachEvent(elIFrame, "load", function(){
-			fCreator = elIFrame.contentWindow[fCreator] || elIFrame.contentWindow.createSEditorInIFrame;
-
-			try{
-				elIFrame.contentWindow.document.body.style.margin = "0";
-				elIFrame.contentWindow.document.body.style.padding = "1";
-			}catch(e){
-				nhn.husky.EZCreator.hideBlocker(true);
-				elIFrame.style.border = "5px solid red";
-				elIFrame.style.width = "500px";
-				elIFrame.style.height = "500px";
-				alert("Failed to access "+sSkinURI);
-				return;
-			}
-
-			var oApp = fCreator(elIFrame, elPlaceHolder, htParams);
-			oApp.elPlaceHolder = elPlaceHolder;
-
-			oAppRef[oAppRef.length] = oApp;
-			if(!oAppRef.getById) oAppRef.getById = {};
-
-			if(elPlaceHolder.id){
-				oApp.sAppId = elPlaceHolder.id;
-				oAppRef.getById[elPlaceHolder.id] = oApp;
-			}
-			oApp.run({fnOnAppReady:fOnAppLoad});
-
-			nhn.husky.EZCreator.hideBlocker();
-		});
-
-		elIFrame.src = sSkinURI;
-	};
-
-	this.showBlocker = function(){
-		if(this.nBlockerCount<1){
-			var elBlocker = document.createElement("DIV");
-			elBlocker.style.position = "absolute";
-			elBlocker.style.top = 0;
-			elBlocker.style.left = 0;
-			elBlocker.style.backgroundColor = "#FFFFFF";
-			elBlocker.style.width = "100%";
-
-			document.body.appendChild(elBlocker);
-
-			nhn.husky.EZCreator.elBlocker = elBlocker;
-		}
-
-		nhn.husky.EZCreator.elBlocker.style.height = Math.max(document.body.scrollHeight, document.body.clientHeight)+"px";
-
-		this.nBlockerCount++;
-	};
-
-	this.hideBlocker = function(bForce){
-		if(!bForce){
-			if(--this.nBlockerCount > 0) return;
-		}
-
-		this.nBlockerCount = 0;
-
-		if(nhn.husky.EZCreator.elBlocker) nhn.husky.EZCreator.elBlocker.style.display = "none";
-	}
-})();

+ 0 - 80
style24.admin/src/main/webapp/smartEditor/js/SE_CustomPlugins.js

@@ -1,80 +0,0 @@
-function SE_RegisterCustomPlugins(oEditor, elAppContainer){
-//	oEditor.registerPlugin(new nhn.husky.SE_ToolbarToggler(elAppContainer));
-	oEditor.registerPlugin(new nhn.husky.SE_ImgInsert(elAppContainer));
-}
-
-// Sample plugin. Use CTRL+T to toggle the toolbar
-nhn.husky.SE_ToolbarToggler = $Class({
-	name : "SE_ToolbarToggler",
-
-	$init : function(oAppContainer){
-		this._assignHTMLObjects(oAppContainer);
-	},
-
-	_assignHTMLObjects : function(oAppContainer){
-		oAppContainer = $(oAppContainer) || document;
-		this.toolbarArea = cssquery.getSingle(".tool", oAppContainer);
-	},
-
-	$ON_MSG_APP_READY : function(){
-		this.oApp.exec("SE_TOGGLE_TOOLBAR", []);
-		this.oApp.exec("REGISTER_HOTKEY", ["ctrl+t", "SE_TOGGLE_TOOLBAR", []]);
-	},
-
-	$ON_SE_TOGGLE_TOOLBAR : function(){
-		this.toolbarArea.style.display = (this.toolbarArea.style.display == "none")?"block":"none";
-		this.oApp.exec("MSG_EDITING_AREA_SIZE_CHANGED", []);
-	}
-});
-
-//image insertion plugin (by gojeong)
-nhn.husky.SE_ImgInsert = $Class({
-	name : "SE_ImgInsert",
-
-	$init : function(elAppContainer){
-		this._assignHTMLObjects(elAppContainer);
-	},
-
-	_assignHTMLObjects : function(elAppContainer){
-		this.oImageInsertLayer = cssquery.getSingle("DIV.husky_seditor_ImgInsert_layer", elAppContainer);
-		this.oBtnConfirm = cssquery.getSingle("BUTTON.confirm", this.oImageInsertLayer);
-		this.oBtnCancel = cssquery.getSingle("BUTTON.cancel", this.oImageInsertLayer);
-		this.oBtnClose = cssquery.getSingle("BUTTON.close", this.oImageInsertLayer);
-
-		var oTmp = cssquery("INPUT", this.oImageInsertLayer);
-		this.oUrlInput = oTmp[0];
-		this.oAltInput = oTmp[1];
-	},
-
-	$ON_MSG_APP_READY : function(){
-		this.oApp.exec("REGISTER_UI_EVENT", ["ImgInsert", "click", "SE_TOGGLE_IMGINSERT_LAYER"]);
-		this.oApp.registerBrowserEvent(this.oBtnConfirm, "mousedown", "SE_APPLY_IMAGEINSERT");
-		this.oApp.registerBrowserEvent(this.oBtnCancel, "mousedown", "SE_CLOSE_IMAGEINSERT");
-		this.oApp.registerBrowserEvent(this.oBtnClose, "mousedown", "SE_CLOSE_IMAGEINSERT");
-	},
-
-	$ON_SE_APPLY_IMAGEINSERT : function() {
-		var sURL = this.oUrlInput.value;
-		this.oSelection = this.oApp.getSelection();
-		if (sURL != "") {
-			var str = "<img src='" + sURL + "' alt='" + this.oAltInput.value + "' />";
-			this.oSelection.pasteHTML(str);
-			this.oUrlInput.value = "";
-			this.oAltInput.value = "";
-			this.oApp.exec("HIDE_ACTIVE_LAYER");
-		} else {
-			alert("input file path!");
-			this.oUrlInput.focus();
-		}
-	},
-
-	$ON_SE_CLOSE_IMAGEINSERT : function() {
-		this.oUrlInput.value = "";
-		this.oAltInput.value = "";
-		this.oApp.exec("HIDE_ACTIVE_LAYER");
-	},
-
-	$ON_SE_TOGGLE_IMGINSERT_LAYER : function(){
-		this.oApp.exec("TOGGLE_TOOLBAR_ACTIVE_LAYER", [this.oImageInsertLayer]);
-	}
-});

文件差异内容过多而无法显示
+ 0 - 172
style24.admin/src/main/webapp/smartEditor/js/jindo.min.js


+ 0 - 10
style24.admin/src/main/webapp/smartEditor/se_blank.html

@@ -1,10 +0,0 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<title>Smart Editor&#8482; WYSIWYG Mode [반드시 필요한 에디터의 빈 페이지 파일 입니다]</title>
-<link href="/smartEditor/css/style.css" rel="stylesheet" type="text/css" />
-<!-- <link rel="stylesheet" type="text/css" href="/ux/css/sisunfront/css_ko.css"/> -->
-</head>
-<body id="smartInput" class="smartOutput">
-</body>
-</html>

二进制
style24.admin/src/main/webapp/smartEditor/swfupload/img/my_img.gif


+ 0 - 49
style24.admin/src/main/webapp/smartEditor/swfupload/js/handlers.js

@@ -1,49 +0,0 @@
-function fileDialogComplete(numFilesSelected, numFilesQueued) {
-	try {
-		if (numFilesQueued > 0) {
-			this.startUpload();
-		}
-	} catch (ex) {
-		this.debug(ex);
-	}
-}
-
-function uploadSuccess(file, serverData) {
-	try {
-		if (serverData.substring(0, 7) === "FILENM:") {
-			paste(serverData.substring(7));
-		} else {
-			alert(serverData);
-		}
-	} catch (ex) {
-		this.debug(ex);
-	}
-}
-
-function fileQueueError(file, errorCode, message) {
-	try {
-		if (errorCode == SWFUpload.QUEUE_ERROR.QUEUE_LIMIT_EXCEEDED) {
-			alert("한 번에 최대 " + swfu.getSetting("file_queue_limit") + "개 파일을 올릴 수 있습니다.");
-		} else if (errorCode == SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE) {
-			alert("파일 크기가 0입니다.");
-		} else if (errorCode == SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT) {
-			alert("파일 크기는 최대 " + swfu.getSetting("file_size_limit") + "를 넘을 수 없습니다.");
-		} else if (errorCode == SWFUpload.QUEUE_ERROR.INVALID_FILETYPE) {
-			alert("허용되지 않는 파일 형식입니다.");
-		} 
-	} catch (ex) {
-		this.debug(ex);
-	}
-}
-
-function uploadError(file, errorCode, message) {
-	try {
-		if (errorCode == SWFUpload.QUEUE_ERROR.UPLOAD_LIMIT_EXCEEDED) {
-			alert("총 최대 " + swfu.getSetting("file_upload_limit") + "개 파일만 올릴 수 있습니다.");
-		} else {
-			alert("업로드에 실패했습니다.");
-		} 
-	} catch (ex) {
-		this.debug(ex);
-	}
-}

+ 0 - 980
style24.admin/src/main/webapp/smartEditor/swfupload/js/swfupload.js

@@ -1,980 +0,0 @@
-/**
- * SWFUpload: http://www.swfupload.org, http://swfupload.googlecode.com
- *
- * mmSWFUpload 1.0: Flash upload dialog - http://profandesign.se/swfupload/,  http://www.vinterwebb.se/
- *
- * SWFUpload is (c) 2006-2007 Lars Huring, Olov Nilz�n and Mammon Media and is released under the MIT License:
- * http://www.opensource.org/licenses/mit-license.php
- *
- * SWFUpload 2 is (c) 2007-2008 Jake Roberts and is released under the MIT License:
- * http://www.opensource.org/licenses/mit-license.php
- *
- */
-
-
-/* ******************* */
-/* Constructor & Init  */
-/* ******************* */
-var SWFUpload;
-
-if (SWFUpload == undefined) {
-	SWFUpload = function (settings) {
-		this.initSWFUpload(settings);
-	};
-}
-
-SWFUpload.prototype.initSWFUpload = function (settings) {
-	try {
-		this.customSettings = {};	// A container where developers can place their own settings associated with this instance.
-		this.settings = settings;
-		this.eventQueue = [];
-		this.movieName = "SWFUpload_" + SWFUpload.movieCount++;
-		this.movieElement = null;
-
-
-		// Setup global control tracking
-		SWFUpload.instances[this.movieName] = this;
-
-		// Load the settings.  Load the Flash movie.
-		this.initSettings();
-		this.loadFlash();
-		this.displayDebugInfo();
-	} catch (ex) {
-		delete SWFUpload.instances[this.movieName];
-		throw ex;
-	}
-};
-
-/* *************** */
-/* Static Members  */
-/* *************** */
-SWFUpload.instances = {};
-SWFUpload.movieCount = 0;
-SWFUpload.version = "2.2.0 2009-03-25";
-SWFUpload.QUEUE_ERROR = {
-	QUEUE_LIMIT_EXCEEDED	  		: -100,
-	FILE_EXCEEDS_SIZE_LIMIT  		: -110,
-	ZERO_BYTE_FILE			  		: -120,
-	INVALID_FILETYPE		  		: -130
-};
-SWFUpload.UPLOAD_ERROR = {
-	HTTP_ERROR				  		: -200,
-	MISSING_UPLOAD_URL	      		: -210,
-	IO_ERROR				  		: -220,
-	SECURITY_ERROR			  		: -230,
-	UPLOAD_LIMIT_EXCEEDED	  		: -240,
-	UPLOAD_FAILED			  		: -250,
-	SPECIFIED_FILE_ID_NOT_FOUND		: -260,
-	FILE_VALIDATION_FAILED	  		: -270,
-	FILE_CANCELLED			  		: -280,
-	UPLOAD_STOPPED					: -290
-};
-SWFUpload.FILE_STATUS = {
-	QUEUED		 : -1,
-	IN_PROGRESS	 : -2,
-	ERROR		 : -3,
-	COMPLETE	 : -4,
-	CANCELLED	 : -5
-};
-SWFUpload.BUTTON_ACTION = {
-	SELECT_FILE  : -100,
-	SELECT_FILES : -110,
-	START_UPLOAD : -120
-};
-SWFUpload.CURSOR = {
-	ARROW : -1,
-	HAND : -2
-};
-SWFUpload.WINDOW_MODE = {
-	WINDOW : "window",
-	TRANSPARENT : "transparent",
-	OPAQUE : "opaque"
-};
-
-// Private: takes a URL, determines if it is relative and converts to an absolute URL
-// using the current site. Only processes the URL if it can, otherwise returns the URL untouched
-SWFUpload.completeURL = function(url) {
-	if (typeof(url) !== "string" || url.match(/^https?:\/\//i) || url.match(/^\//)) {
-		return url;
-	}
-	
-	var currentURL = window.location.protocol + "//" + window.location.hostname + (window.location.port ? ":" + window.location.port : "");
-	
-	var indexSlash = window.location.pathname.lastIndexOf("/");
-	if (indexSlash <= 0) {
-		path = "/";
-	} else {
-		path = window.location.pathname.substr(0, indexSlash) + "/";
-	}
-	
-	return /*currentURL +*/ path + url;
-	
-};
-
-
-/* ******************** */
-/* Instance Members  */
-/* ******************** */
-
-// Private: initSettings ensures that all the
-// settings are set, getting a default value if one was not assigned.
-SWFUpload.prototype.initSettings = function () {
-	this.ensureDefault = function (settingName, defaultValue) {
-		this.settings[settingName] = (this.settings[settingName] == undefined) ? defaultValue : this.settings[settingName];
-	};
-	
-	// Upload backend settings
-	this.ensureDefault("upload_url", "");
-	this.ensureDefault("preserve_relative_urls", false);
-	this.ensureDefault("file_post_name", "Filedata");
-	this.ensureDefault("post_params", {});
-	this.ensureDefault("use_query_string", false);
-	this.ensureDefault("requeue_on_error", false);
-	this.ensureDefault("http_success", []);
-	this.ensureDefault("assume_success_timeout", 0);
-	
-	// File Settings
-	this.ensureDefault("file_types", "*.*");
-	this.ensureDefault("file_types_description", "All Files");
-	this.ensureDefault("file_size_limit", 0);	// Default zero means "unlimited"
-	this.ensureDefault("file_upload_limit", 0);
-	this.ensureDefault("file_queue_limit", 0);
-
-	// Flash Settings
-	this.ensureDefault("flash_url", "swfupload.swf");
-	this.ensureDefault("prevent_swf_caching", true);
-	
-	// Button Settings
-	this.ensureDefault("button_image_url", "");
-	this.ensureDefault("button_width", 1);
-	this.ensureDefault("button_height", 1);
-	this.ensureDefault("button_text", "");
-	this.ensureDefault("button_text_style", "color: #000000; font-size: 16pt;");
-	this.ensureDefault("button_text_top_padding", 0);
-	this.ensureDefault("button_text_left_padding", 0);
-	this.ensureDefault("button_action", SWFUpload.BUTTON_ACTION.SELECT_FILES);
-	this.ensureDefault("button_disabled", false);
-	this.ensureDefault("button_placeholder_id", "");
-	this.ensureDefault("button_placeholder", null);
-	this.ensureDefault("button_cursor", SWFUpload.CURSOR.ARROW);
-	this.ensureDefault("button_window_mode", SWFUpload.WINDOW_MODE.WINDOW);
-	
-	// Debug Settings
-	this.ensureDefault("debug", false);
-	this.settings.debug_enabled = this.settings.debug;	// Here to maintain v2 API
-	
-	// Event Handlers
-	this.settings.return_upload_start_handler = this.returnUploadStart;
-	this.ensureDefault("swfupload_loaded_handler", null);
-	this.ensureDefault("file_dialog_start_handler", null);
-	this.ensureDefault("file_queued_handler", null);
-	this.ensureDefault("file_queue_error_handler", null);
-	this.ensureDefault("file_dialog_complete_handler", null);
-	
-	this.ensureDefault("upload_start_handler", null);
-	this.ensureDefault("upload_progress_handler", null);
-	this.ensureDefault("upload_error_handler", null);
-	this.ensureDefault("upload_success_handler", null);
-	this.ensureDefault("upload_complete_handler", null);
-	
-	this.ensureDefault("debug_handler", this.debugMessage);
-
-	this.ensureDefault("custom_settings", {});
-
-	// Other settings
-	this.customSettings = this.settings.custom_settings;
-	
-	// Update the flash url if needed
-	if (!!this.settings.prevent_swf_caching) {
-		this.settings.flash_url = this.settings.flash_url + (this.settings.flash_url.indexOf("?") < 0 ? "?" : "&") + "preventswfcaching=" + new Date().getTime();
-	}
-	
-	if (!this.settings.preserve_relative_urls) {
-		//this.settings.flash_url = SWFUpload.completeURL(this.settings.flash_url);	// Don't need to do this one since flash doesn't look at it
-		this.settings.upload_url = SWFUpload.completeURL(this.settings.upload_url);
-		this.settings.button_image_url = SWFUpload.completeURL(this.settings.button_image_url);
-	}
-	
-	delete this.ensureDefault;
-};
-
-// Private: loadFlash replaces the button_placeholder element with the flash movie.
-SWFUpload.prototype.loadFlash = function () {
-	var targetElement, tempParent;
-
-	// Make sure an element with the ID we are going to use doesn't already exist
-	if (document.getElementById(this.movieName) !== null) {
-		throw "ID " + this.movieName + " is already in use. The Flash Object could not be added";
-	}
-
-	// Get the element where we will be placing the flash movie
-	targetElement = document.getElementById(this.settings.button_placeholder_id) || this.settings.button_placeholder;
-
-	if (targetElement == undefined) {
-		throw "Could not find the placeholder element: " + this.settings.button_placeholder_id;
-	}
-
-	// Append the container and load the flash
-	tempParent = document.createElement("div");
-	tempParent.innerHTML = this.getFlashHTML();	// Using innerHTML is non-standard but the only sensible way to dynamically add Flash in IE (and maybe other browsers)
-	targetElement.parentNode.replaceChild(tempParent.firstChild, targetElement);
-
-	// Fix IE Flash/Form bug
-	if (window[this.movieName] == undefined) {
-		window[this.movieName] = this.getMovieElement();
-	}
-	
-};
-
-// Private: getFlashHTML generates the object tag needed to embed the flash in to the document
-SWFUpload.prototype.getFlashHTML = function () {
-	// Flash Satay object syntax: http://www.alistapart.com/articles/flashsatay
-	return ['<object id="', this.movieName, '" type="application/x-shockwave-flash" data="', this.settings.flash_url, '" width="', this.settings.button_width, '" height="', this.settings.button_height, '" class="swfupload">',
-				'<param name="wmode" value="', this.settings.button_window_mode, '" />',
-				'<param name="movie" value="', this.settings.flash_url, '" />',
-				'<param name="quality" value="high" />',
-				'<param name="menu" value="false" />',
-				'<param name="allowScriptAccess" value="always" />',
-				'<param name="flashvars" value="' + this.getFlashVars() + '" />',
-				'</object>'].join("");
-};
-
-// Private: getFlashVars builds the parameter string that will be passed
-// to flash in the flashvars param.
-SWFUpload.prototype.getFlashVars = function () {
-	// Build a string from the post param object
-	var paramString = this.buildParamString();
-	var httpSuccessString = this.settings.http_success.join(",");
-	
-	// Build the parameter string
-	return ["movieName=", encodeURIComponent(this.movieName),
-			"&amp;uploadURL=", encodeURIComponent(this.settings.upload_url),
-			"&amp;useQueryString=", encodeURIComponent(this.settings.use_query_string),
-			"&amp;requeueOnError=", encodeURIComponent(this.settings.requeue_on_error),
-			"&amp;httpSuccess=", encodeURIComponent(httpSuccessString),
-			"&amp;assumeSuccessTimeout=", encodeURIComponent(this.settings.assume_success_timeout),
-			"&amp;params=", encodeURIComponent(paramString),
-			"&amp;filePostName=", encodeURIComponent(this.settings.file_post_name),
-			"&amp;fileTypes=", encodeURIComponent(this.settings.file_types),
-			"&amp;fileTypesDescription=", encodeURIComponent(this.settings.file_types_description),
-			"&amp;fileSizeLimit=", encodeURIComponent(this.settings.file_size_limit),
-			"&amp;fileUploadLimit=", encodeURIComponent(this.settings.file_upload_limit),
-			"&amp;fileQueueLimit=", encodeURIComponent(this.settings.file_queue_limit),
-			"&amp;debugEnabled=", encodeURIComponent(this.settings.debug_enabled),
-			"&amp;buttonImageURL=", encodeURIComponent(this.settings.button_image_url),
-			"&amp;buttonWidth=", encodeURIComponent(this.settings.button_width),
-			"&amp;buttonHeight=", encodeURIComponent(this.settings.button_height),
-			"&amp;buttonText=", encodeURIComponent(this.settings.button_text),
-			"&amp;buttonTextTopPadding=", encodeURIComponent(this.settings.button_text_top_padding),
-			"&amp;buttonTextLeftPadding=", encodeURIComponent(this.settings.button_text_left_padding),
-			"&amp;buttonTextStyle=", encodeURIComponent(this.settings.button_text_style),
-			"&amp;buttonAction=", encodeURIComponent(this.settings.button_action),
-			"&amp;buttonDisabled=", encodeURIComponent(this.settings.button_disabled),
-			"&amp;buttonCursor=", encodeURIComponent(this.settings.button_cursor)
-		].join("");
-};
-
-// Public: getMovieElement retrieves the DOM reference to the Flash element added by SWFUpload
-// The element is cached after the first lookup
-SWFUpload.prototype.getMovieElement = function () {
-	if (this.movieElement == undefined) {
-		this.movieElement = document.getElementById(this.movieName);
-	}
-
-	if (this.movieElement === null) {
-		throw "Could not find Flash element";
-	}
-	
-	return this.movieElement;
-};
-
-// Private: buildParamString takes the name/value pairs in the post_params setting object
-// and joins them up in to a string formatted "name=value&amp;name=value"
-SWFUpload.prototype.buildParamString = function () {
-	var postParams = this.settings.post_params; 
-	var paramStringPairs = [];
-
-	if (typeof(postParams) === "object") {
-		for (var name in postParams) {
-			if (postParams.hasOwnProperty(name)) {
-				paramStringPairs.push(encodeURIComponent(name.toString()) + "=" + encodeURIComponent(postParams[name].toString()));
-			}
-		}
-	}
-
-	return paramStringPairs.join("&amp;");
-};
-
-// Public: Used to remove a SWFUpload instance from the page. This method strives to remove
-// all references to the SWF, and other objects so memory is properly freed.
-// Returns true if everything was destroyed. Returns a false if a failure occurs leaving SWFUpload in an inconsistant state.
-// Credits: Major improvements provided by steffen
-SWFUpload.prototype.destroy = function () {
-	try {
-		// Make sure Flash is done before we try to remove it
-		this.cancelUpload(null, false);
-		
-
-		// Remove the SWFUpload DOM nodes
-		var movieElement = null;
-		movieElement = this.getMovieElement();
-		
-		if (movieElement && typeof(movieElement.CallFunction) === "unknown") { // We only want to do this in IE
-			// Loop through all the movie's properties and remove all function references (DOM/JS IE 6/7 memory leak workaround)
-			for (var i in movieElement) {
-				try {
-					if (typeof(movieElement[i]) === "function") {
-						movieElement[i] = null;
-					}
-				} catch (ex1) {}
-			}
-
-			// Remove the Movie Element from the page
-			try {
-				movieElement.parentNode.removeChild(movieElement);
-			} catch (ex) {}
-		}
-		
-		// Remove IE form fix reference
-		window[this.movieName] = null;
-
-		// Destroy other references
-		SWFUpload.instances[this.movieName] = null;
-		delete SWFUpload.instances[this.movieName];
-
-		this.movieElement = null;
-		this.settings = null;
-		this.customSettings = null;
-		this.eventQueue = null;
-		this.movieName = null;
-		
-		
-		return true;
-	} catch (ex2) {
-		return false;
-	}
-};
-
-
-// Public: displayDebugInfo prints out settings and configuration
-// information about this SWFUpload instance.
-// This function (and any references to it) can be deleted when placing
-// SWFUpload in production.
-SWFUpload.prototype.displayDebugInfo = function () {
-	this.debug(
-		[
-			"---SWFUpload Instance Info---\n",
-			"Version: ", SWFUpload.version, "\n",
-			"Movie Name: ", this.movieName, "\n",
-			"Settings:\n",
-			"\t", "upload_url:               ", this.settings.upload_url, "\n",
-			"\t", "flash_url:                ", this.settings.flash_url, "\n",
-			"\t", "use_query_string:         ", this.settings.use_query_string.toString(), "\n",
-			"\t", "requeue_on_error:         ", this.settings.requeue_on_error.toString(), "\n",
-			"\t", "http_success:             ", this.settings.http_success.join(", "), "\n",
-			"\t", "assume_success_timeout:   ", this.settings.assume_success_timeout, "\n",
-			"\t", "file_post_name:           ", this.settings.file_post_name, "\n",
-			"\t", "post_params:              ", this.settings.post_params.toString(), "\n",
-			"\t", "file_types:               ", this.settings.file_types, "\n",
-			"\t", "file_types_description:   ", this.settings.file_types_description, "\n",
-			"\t", "file_size_limit:          ", this.settings.file_size_limit, "\n",
-			"\t", "file_upload_limit:        ", this.settings.file_upload_limit, "\n",
-			"\t", "file_queue_limit:         ", this.settings.file_queue_limit, "\n",
-			"\t", "debug:                    ", this.settings.debug.toString(), "\n",
-
-			"\t", "prevent_swf_caching:      ", this.settings.prevent_swf_caching.toString(), "\n",
-
-			"\t", "button_placeholder_id:    ", this.settings.button_placeholder_id.toString(), "\n",
-			"\t", "button_placeholder:       ", (this.settings.button_placeholder ? "Set" : "Not Set"), "\n",
-			"\t", "button_image_url:         ", this.settings.button_image_url.toString(), "\n",
-			"\t", "button_width:             ", this.settings.button_width.toString(), "\n",
-			"\t", "button_height:            ", this.settings.button_height.toString(), "\n",
-			"\t", "button_text:              ", this.settings.button_text.toString(), "\n",
-			"\t", "button_text_style:        ", this.settings.button_text_style.toString(), "\n",
-			"\t", "button_text_top_padding:  ", this.settings.button_text_top_padding.toString(), "\n",
-			"\t", "button_text_left_padding: ", this.settings.button_text_left_padding.toString(), "\n",
-			"\t", "button_action:            ", this.settings.button_action.toString(), "\n",
-			"\t", "button_disabled:          ", this.settings.button_disabled.toString(), "\n",
-
-			"\t", "custom_settings:          ", this.settings.custom_settings.toString(), "\n",
-			"Event Handlers:\n",
-			"\t", "swfupload_loaded_handler assigned:  ", (typeof this.settings.swfupload_loaded_handler === "function").toString(), "\n",
-			"\t", "file_dialog_start_handler assigned: ", (typeof this.settings.file_dialog_start_handler === "function").toString(), "\n",
-			"\t", "file_queued_handler assigned:       ", (typeof this.settings.file_queued_handler === "function").toString(), "\n",
-			"\t", "file_queue_error_handler assigned:  ", (typeof this.settings.file_queue_error_handler === "function").toString(), "\n",
-			"\t", "upload_start_handler assigned:      ", (typeof this.settings.upload_start_handler === "function").toString(), "\n",
-			"\t", "upload_progress_handler assigned:   ", (typeof this.settings.upload_progress_handler === "function").toString(), "\n",
-			"\t", "upload_error_handler assigned:      ", (typeof this.settings.upload_error_handler === "function").toString(), "\n",
-			"\t", "upload_success_handler assigned:    ", (typeof this.settings.upload_success_handler === "function").toString(), "\n",
-			"\t", "upload_complete_handler assigned:   ", (typeof this.settings.upload_complete_handler === "function").toString(), "\n",
-			"\t", "debug_handler assigned:             ", (typeof this.settings.debug_handler === "function").toString(), "\n"
-		].join("")
-	);
-};
-
-/* Note: addSetting and getSetting are no longer used by SWFUpload but are included
-	the maintain v2 API compatibility
-*/
-// Public: (Deprecated) addSetting adds a setting value. If the value given is undefined or null then the default_value is used.
-SWFUpload.prototype.addSetting = function (name, value, default_value) {
-    if (value == undefined) {
-        return (this.settings[name] = default_value);
-    } else {
-        return (this.settings[name] = value);
-	}
-};
-
-// Public: (Deprecated) getSetting gets a setting. Returns an empty string if the setting was not found.
-SWFUpload.prototype.getSetting = function (name) {
-    if (this.settings[name] != undefined) {
-        return this.settings[name];
-	}
-
-    return "";
-};
-
-
-
-// Private: callFlash handles function calls made to the Flash element.
-// Calls are made with a setTimeout for some functions to work around
-// bugs in the ExternalInterface library.
-SWFUpload.prototype.callFlash = function (functionName, argumentArray) {
-	argumentArray = argumentArray || [];
-	
-	var movieElement = this.getMovieElement();
-	var returnValue, returnString;
-
-	// Flash's method if calling ExternalInterface methods (code adapted from MooTools).
-	try {
-		returnString = movieElement.CallFunction('<invoke name="' + functionName + '" returntype="javascript">' + __flash__argumentsToXML(argumentArray, 0) + '</invoke>');
-		returnValue = eval(returnString);
-	} catch (ex) {
-		throw "Call to " + functionName + " failed";
-	}
-	
-	// Unescape file post param values
-	if (returnValue != undefined && typeof returnValue.post === "object") {
-		returnValue = this.unescapeFilePostParams(returnValue);
-	}
-
-	return returnValue;
-};
-
-/* *****************************
-	-- Flash control methods --
-	Your UI should use these
-	to operate SWFUpload
-   ***************************** */
-
-// WARNING: this function does not work in Flash Player 10
-// Public: selectFile causes a File Selection Dialog window to appear.  This
-// dialog only allows 1 file to be selected.
-SWFUpload.prototype.selectFile = function () {
-	this.callFlash("SelectFile");
-};
-
-// WARNING: this function does not work in Flash Player 10
-// Public: selectFiles causes a File Selection Dialog window to appear/ This
-// dialog allows the user to select any number of files
-// Flash Bug Warning: Flash limits the number of selectable files based on the combined length of the file names.
-// If the selection name length is too long the dialog will fail in an unpredictable manner.  There is no work-around
-// for this bug.
-SWFUpload.prototype.selectFiles = function () {
-	this.callFlash("SelectFiles");
-};
-
-
-// Public: startUpload starts uploading the first file in the queue unless
-// the optional parameter 'fileID' specifies the ID 
-SWFUpload.prototype.startUpload = function (fileID) {
-	this.callFlash("StartUpload", [fileID]);
-};
-
-// Public: cancelUpload cancels any queued file.  The fileID parameter may be the file ID or index.
-// If you do not specify a fileID the current uploading file or first file in the queue is cancelled.
-// If you do not want the uploadError event to trigger you can specify false for the triggerErrorEvent parameter.
-SWFUpload.prototype.cancelUpload = function (fileID, triggerErrorEvent) {
-	if (triggerErrorEvent !== false) {
-		triggerErrorEvent = true;
-	}
-	this.callFlash("CancelUpload", [fileID, triggerErrorEvent]);
-};
-
-// Public: stopUpload stops the current upload and requeues the file at the beginning of the queue.
-// If nothing is currently uploading then nothing happens.
-SWFUpload.prototype.stopUpload = function () {
-	this.callFlash("StopUpload");
-};
-
-/* ************************
- * Settings methods
- *   These methods change the SWFUpload settings.
- *   SWFUpload settings should not be changed directly on the settings object
- *   since many of the settings need to be passed to Flash in order to take
- *   effect.
- * *********************** */
-
-// Public: getStats gets the file statistics object.
-SWFUpload.prototype.getStats = function () {
-	return this.callFlash("GetStats");
-};
-
-// Public: setStats changes the SWFUpload statistics.  You shouldn't need to 
-// change the statistics but you can.  Changing the statistics does not
-// affect SWFUpload accept for the successful_uploads count which is used
-// by the upload_limit setting to determine how many files the user may upload.
-SWFUpload.prototype.setStats = function (statsObject) {
-	this.callFlash("SetStats", [statsObject]);
-};
-
-// Public: getFile retrieves a File object by ID or Index.  If the file is
-// not found then 'null' is returned.
-SWFUpload.prototype.getFile = function (fileID) {
-	if (typeof(fileID) === "number") {
-		return this.callFlash("GetFileByIndex", [fileID]);
-	} else {
-		return this.callFlash("GetFile", [fileID]);
-	}
-};
-
-// Public: addFileParam sets a name/value pair that will be posted with the
-// file specified by the Files ID.  If the name already exists then the
-// exiting value will be overwritten.
-SWFUpload.prototype.addFileParam = function (fileID, name, value) {
-	return this.callFlash("AddFileParam", [fileID, name, value]);
-};
-
-// Public: removeFileParam removes a previously set (by addFileParam) name/value
-// pair from the specified file.
-SWFUpload.prototype.removeFileParam = function (fileID, name) {
-	this.callFlash("RemoveFileParam", [fileID, name]);
-};
-
-// Public: setUploadUrl changes the upload_url setting.
-SWFUpload.prototype.setUploadURL = function (url) {
-	this.settings.upload_url = url.toString();
-	this.callFlash("SetUploadURL", [url]);
-};
-
-// Public: setPostParams changes the post_params setting
-SWFUpload.prototype.setPostParams = function (paramsObject) {
-	this.settings.post_params = paramsObject;
-	this.callFlash("SetPostParams", [paramsObject]);
-};
-
-// Public: addPostParam adds post name/value pair.  Each name can have only one value.
-SWFUpload.prototype.addPostParam = function (name, value) {
-	this.settings.post_params[name] = value;
-	this.callFlash("SetPostParams", [this.settings.post_params]);
-};
-
-// Public: removePostParam deletes post name/value pair.
-SWFUpload.prototype.removePostParam = function (name) {
-	delete this.settings.post_params[name];
-	this.callFlash("SetPostParams", [this.settings.post_params]);
-};
-
-// Public: setFileTypes changes the file_types setting and the file_types_description setting
-SWFUpload.prototype.setFileTypes = function (types, description) {
-	this.settings.file_types = types;
-	this.settings.file_types_description = description;
-	this.callFlash("SetFileTypes", [types, description]);
-};
-
-// Public: setFileSizeLimit changes the file_size_limit setting
-SWFUpload.prototype.setFileSizeLimit = function (fileSizeLimit) {
-	this.settings.file_size_limit = fileSizeLimit;
-	this.callFlash("SetFileSizeLimit", [fileSizeLimit]);
-};
-
-// Public: setFileUploadLimit changes the file_upload_limit setting
-SWFUpload.prototype.setFileUploadLimit = function (fileUploadLimit) {
-	this.settings.file_upload_limit = fileUploadLimit;
-	this.callFlash("SetFileUploadLimit", [fileUploadLimit]);
-};
-
-// Public: setFileQueueLimit changes the file_queue_limit setting
-SWFUpload.prototype.setFileQueueLimit = function (fileQueueLimit) {
-	this.settings.file_queue_limit = fileQueueLimit;
-	this.callFlash("SetFileQueueLimit", [fileQueueLimit]);
-};
-
-// Public: setFilePostName changes the file_post_name setting
-SWFUpload.prototype.setFilePostName = function (filePostName) {
-	this.settings.file_post_name = filePostName;
-	this.callFlash("SetFilePostName", [filePostName]);
-};
-
-// Public: setUseQueryString changes the use_query_string setting
-SWFUpload.prototype.setUseQueryString = function (useQueryString) {
-	this.settings.use_query_string = useQueryString;
-	this.callFlash("SetUseQueryString", [useQueryString]);
-};
-
-// Public: setRequeueOnError changes the requeue_on_error setting
-SWFUpload.prototype.setRequeueOnError = function (requeueOnError) {
-	this.settings.requeue_on_error = requeueOnError;
-	this.callFlash("SetRequeueOnError", [requeueOnError]);
-};
-
-// Public: setHTTPSuccess changes the http_success setting
-SWFUpload.prototype.setHTTPSuccess = function (http_status_codes) {
-	if (typeof http_status_codes === "string") {
-		http_status_codes = http_status_codes.replace(" ", "").split(",");
-	}
-	
-	this.settings.http_success = http_status_codes;
-	this.callFlash("SetHTTPSuccess", [http_status_codes]);
-};
-
-// Public: setHTTPSuccess changes the http_success setting
-SWFUpload.prototype.setAssumeSuccessTimeout = function (timeout_seconds) {
-	this.settings.assume_success_timeout = timeout_seconds;
-	this.callFlash("SetAssumeSuccessTimeout", [timeout_seconds]);
-};
-
-// Public: setDebugEnabled changes the debug_enabled setting
-SWFUpload.prototype.setDebugEnabled = function (debugEnabled) {
-	this.settings.debug_enabled = debugEnabled;
-	this.callFlash("SetDebugEnabled", [debugEnabled]);
-};
-
-// Public: setButtonImageURL loads a button image sprite
-SWFUpload.prototype.setButtonImageURL = function (buttonImageURL) {
-	if (buttonImageURL == undefined) {
-		buttonImageURL = "";
-	}
-	
-	this.settings.button_image_url = buttonImageURL;
-	this.callFlash("SetButtonImageURL", [buttonImageURL]);
-};
-
-// Public: setButtonDimensions resizes the Flash Movie and button
-SWFUpload.prototype.setButtonDimensions = function (width, height) {
-	this.settings.button_width = width;
-	this.settings.button_height = height;
-	
-	var movie = this.getMovieElement();
-	if (movie != undefined) {
-		movie.style.width = width + "px";
-		movie.style.height = height + "px";
-	}
-	
-	this.callFlash("SetButtonDimensions", [width, height]);
-};
-// Public: setButtonText Changes the text overlaid on the button
-SWFUpload.prototype.setButtonText = function (html) {
-	this.settings.button_text = html;
-	this.callFlash("SetButtonText", [html]);
-};
-// Public: setButtonTextPadding changes the top and left padding of the text overlay
-SWFUpload.prototype.setButtonTextPadding = function (left, top) {
-	this.settings.button_text_top_padding = top;
-	this.settings.button_text_left_padding = left;
-	this.callFlash("SetButtonTextPadding", [left, top]);
-};
-
-// Public: setButtonTextStyle changes the CSS used to style the HTML/Text overlaid on the button
-SWFUpload.prototype.setButtonTextStyle = function (css) {
-	this.settings.button_text_style = css;
-	this.callFlash("SetButtonTextStyle", [css]);
-};
-// Public: setButtonDisabled disables/enables the button
-SWFUpload.prototype.setButtonDisabled = function (isDisabled) {
-	this.settings.button_disabled = isDisabled;
-	this.callFlash("SetButtonDisabled", [isDisabled]);
-};
-// Public: setButtonAction sets the action that occurs when the button is clicked
-SWFUpload.prototype.setButtonAction = function (buttonAction) {
-	this.settings.button_action = buttonAction;
-	this.callFlash("SetButtonAction", [buttonAction]);
-};
-
-// Public: setButtonCursor changes the mouse cursor displayed when hovering over the button
-SWFUpload.prototype.setButtonCursor = function (cursor) {
-	this.settings.button_cursor = cursor;
-	this.callFlash("SetButtonCursor", [cursor]);
-};
-
-/* *******************************
-	Flash Event Interfaces
-	These functions are used by Flash to trigger the various
-	events.
-	
-	All these functions a Private.
-	
-	Because the ExternalInterface library is buggy the event calls
-	are added to a queue and the queue then executed by a setTimeout.
-	This ensures that events are executed in a determinate order and that
-	the ExternalInterface bugs are avoided.
-******************************* */
-
-SWFUpload.prototype.queueEvent = function (handlerName, argumentArray) {
-	// Warning: Don't call this.debug inside here or you'll create an infinite loop
-	
-	if (argumentArray == undefined) {
-		argumentArray = [];
-	} else if (!(argumentArray instanceof Array)) {
-		argumentArray = [argumentArray];
-	}
-	
-	var self = this;
-	if (typeof this.settings[handlerName] === "function") {
-		// Queue the event
-		this.eventQueue.push(function () {
-			this.settings[handlerName].apply(this, argumentArray);
-		});
-		
-		// Execute the next queued event
-		setTimeout(function () {
-			self.executeNextEvent();
-		}, 0);
-		
-	} else if (this.settings[handlerName] !== null) {
-		throw "Event handler " + handlerName + " is unknown or is not a function";
-	}
-};
-
-// Private: Causes the next event in the queue to be executed.  Since events are queued using a setTimeout
-// we must queue them in order to garentee that they are executed in order.
-SWFUpload.prototype.executeNextEvent = function () {
-	// Warning: Don't call this.debug inside here or you'll create an infinite loop
-
-	var  f = this.eventQueue ? this.eventQueue.shift() : null;
-	if (typeof(f) === "function") {
-		f.apply(this);
-	}
-};
-
-// Private: unescapeFileParams is part of a workaround for a flash bug where objects passed through ExternalInterface cannot have
-// properties that contain characters that are not valid for JavaScript identifiers. To work around this
-// the Flash Component escapes the parameter names and we must unescape again before passing them along.
-SWFUpload.prototype.unescapeFilePostParams = function (file) {
-	var reg = /[$]([0-9a-f]{4})/i;
-	var unescapedPost = {};
-	var uk;
-
-	if (file != undefined) {
-		for (var k in file.post) {
-			if (file.post.hasOwnProperty(k)) {
-				uk = k;
-				var match;
-				while ((match = reg.exec(uk)) !== null) {
-					uk = uk.replace(match[0], String.fromCharCode(parseInt("0x" + match[1], 16)));
-				}
-				unescapedPost[uk] = file.post[k];
-			}
-		}
-
-		file.post = unescapedPost;
-	}
-
-	return file;
-};
-
-// Private: Called by Flash to see if JS can call in to Flash (test if External Interface is working)
-SWFUpload.prototype.testExternalInterface = function () {
-	try {
-		return this.callFlash("TestExternalInterface");
-	} catch (ex) {
-		return false;
-	}
-};
-
-// Private: This event is called by Flash when it has finished loading. Don't modify this.
-// Use the swfupload_loaded_handler event setting to execute custom code when SWFUpload has loaded.
-SWFUpload.prototype.flashReady = function () {
-	// Check that the movie element is loaded correctly with its ExternalInterface methods defined
-	var movieElement = this.getMovieElement();
-
-	if (!movieElement) {
-		this.debug("Flash called back ready but the flash movie can't be found.");
-		return;
-	}
-
-	this.cleanUp(movieElement);
-	
-	this.queueEvent("swfupload_loaded_handler");
-};
-
-// Private: removes Flash added fuctions to the DOM node to prevent memory leaks in IE.
-// This function is called by Flash each time the ExternalInterface functions are created.
-SWFUpload.prototype.cleanUp = function (movieElement) {
-	// Pro-actively unhook all the Flash functions
-	try {
-		if (this.movieElement && typeof(movieElement.CallFunction) === "unknown") { // We only want to do this in IE
-			this.debug("Removing Flash functions hooks (this should only run in IE and should prevent memory leaks)");
-			for (var key in movieElement) {
-				try {
-					if (typeof(movieElement[key]) === "function") {
-						movieElement[key] = null;
-					}
-				} catch (ex) {
-				}
-			}
-		}
-	} catch (ex1) {
-	
-	}
-
-	// Fix Flashes own cleanup code so if the SWFMovie was removed from the page
-	// it doesn't display errors.
-	window["__flash__removeCallback"] = function (instance, name) {
-		try {
-			if (instance) {
-				instance[name] = null;
-			}
-		} catch (flashEx) {
-		
-		}
-	};
-
-};
-
-
-/* This is a chance to do something before the browse window opens */
-SWFUpload.prototype.fileDialogStart = function () {
-	this.queueEvent("file_dialog_start_handler");
-};
-
-
-/* Called when a file is successfully added to the queue. */
-SWFUpload.prototype.fileQueued = function (file) {
-	file = this.unescapeFilePostParams(file);
-	this.queueEvent("file_queued_handler", file);
-};
-
-
-/* Handle errors that occur when an attempt to queue a file fails. */
-SWFUpload.prototype.fileQueueError = function (file, errorCode, message) {
-	file = this.unescapeFilePostParams(file);
-	this.queueEvent("file_queue_error_handler", [file, errorCode, message]);
-};
-
-/* Called after the file dialog has closed and the selected files have been queued.
-	You could call startUpload here if you want the queued files to begin uploading immediately. */
-SWFUpload.prototype.fileDialogComplete = function (numFilesSelected, numFilesQueued, numFilesInQueue) {
-	this.queueEvent("file_dialog_complete_handler", [numFilesSelected, numFilesQueued, numFilesInQueue]);
-};
-
-SWFUpload.prototype.uploadStart = function (file) {
-	file = this.unescapeFilePostParams(file);
-	this.queueEvent("return_upload_start_handler", file);
-};
-
-SWFUpload.prototype.returnUploadStart = function (file) {
-	var returnValue;
-	if (typeof this.settings.upload_start_handler === "function") {
-		file = this.unescapeFilePostParams(file);
-		returnValue = this.settings.upload_start_handler.call(this, file);
-	} else if (this.settings.upload_start_handler != undefined) {
-		throw "upload_start_handler must be a function";
-	}
-
-	// Convert undefined to true so if nothing is returned from the upload_start_handler it is
-	// interpretted as 'true'.
-	if (returnValue === undefined) {
-		returnValue = true;
-	}
-	
-	returnValue = !!returnValue;
-	
-	this.callFlash("ReturnUploadStart", [returnValue]);
-};
-
-
-
-SWFUpload.prototype.uploadProgress = function (file, bytesComplete, bytesTotal) {
-	file = this.unescapeFilePostParams(file);
-	this.queueEvent("upload_progress_handler", [file, bytesComplete, bytesTotal]);
-};
-
-SWFUpload.prototype.uploadError = function (file, errorCode, message) {
-	file = this.unescapeFilePostParams(file);
-	this.queueEvent("upload_error_handler", [file, errorCode, message]);
-};
-
-SWFUpload.prototype.uploadSuccess = function (file, serverData, responseReceived) {
-	file = this.unescapeFilePostParams(file);
-	this.queueEvent("upload_success_handler", [file, serverData, responseReceived]);
-};
-
-SWFUpload.prototype.uploadComplete = function (file) {
-	file = this.unescapeFilePostParams(file);
-	this.queueEvent("upload_complete_handler", file);
-};
-
-/* Called by SWFUpload JavaScript and Flash functions when debug is enabled. By default it writes messages to the
-   internal debug console.  You can override this event and have messages written where you want. */
-SWFUpload.prototype.debug = function (message) {
-	this.queueEvent("debug_handler", message);
-};
-
-
-/* **********************************
-	Debug Console
-	The debug console is a self contained, in page location
-	for debug message to be sent.  The Debug Console adds
-	itself to the body if necessary.
-
-	The console is automatically scrolled as messages appear.
-	
-	If you are using your own debug handler or when you deploy to production and
-	have debug disabled you can remove these functions to reduce the file size
-	and complexity.
-********************************** */
-   
-// Private: debugMessage is the default debug_handler.  If you want to print debug messages
-// call the debug() function.  When overriding the function your own function should
-// check to see if the debug setting is true before outputting debug information.
-SWFUpload.prototype.debugMessage = function (message) {
-	if (this.settings.debug) {
-		var exceptionMessage, exceptionValues = [];
-
-		// Check for an exception object and print it nicely
-		if (typeof message === "object" && typeof message.name === "string" && typeof message.message === "string") {
-			for (var key in message) {
-				if (message.hasOwnProperty(key)) {
-					exceptionValues.push(key + ": " + message[key]);
-				}
-			}
-			exceptionMessage = exceptionValues.join("\n") || "";
-			exceptionValues = exceptionMessage.split("\n");
-			exceptionMessage = "EXCEPTION: " + exceptionValues.join("\nEXCEPTION: ");
-			SWFUpload.Console.writeLine(exceptionMessage);
-		} else {
-			SWFUpload.Console.writeLine(message);
-		}
-	}
-};
-
-SWFUpload.Console = {};
-SWFUpload.Console.writeLine = function (message) {
-	var console, documentForm;
-
-	try {
-		console = document.getElementById("SWFUpload_Console");
-
-		if (!console) {
-			documentForm = document.createElement("form");
-			document.getElementsByTagName("body")[0].appendChild(documentForm);
-
-			console = document.createElement("textarea");
-			console.id = "SWFUpload_Console";
-			console.style.fontFamily = "monospace";
-			console.setAttribute("wrap", "off");
-			console.wrap = "off";
-			console.style.overflow = "auto";
-			console.style.width = "700px";
-			console.style.height = "350px";
-			console.style.margin = "5px";
-			documentForm.appendChild(console);
-		}
-
-		console.value += message + "\n";
-
-		console.scrollTop = console.scrollHeight - console.clientHeight;
-	} catch (ex) {
-		alert("Exception: " + ex.name + " Message: " + ex.message);
-	}
-};

二进制
style24.admin/src/main/webapp/smartEditor/swfupload/swf/swfupload.swf


+ 0 - 41
style24.admin/src/main/webapp/smartEditor/swfupload/swfupload_proc.jsp

@@ -1,41 +0,0 @@
-<%@ page language="java" contentType="text/html;charset=utf-8" %>
-<%@ page import="com.gagaframework.web.util.GagaFileUtil" %>
-<%@ page import="com.oreilly.servlet.MultipartRequest" %>
-<%@ page import="com.oreilly.servlet.multipart.DefaultFileRenamePolicy" %>
-
-<%
-    String contentType = request.getContentType();
-    if (contentType == null || !contentType.startsWith("multipart/form-data")) {
-        return;
-    }
-
-    String serverType = System.getProperty("spring.profiles.active");
-    String seUploadPath = "";
-    String seViewUrl = "";
-
-    if (serverType.equals("locd") || serverType.equals("locp")) {
-        seUploadPath = "/WIDE/workspace/files/data/smartEditor";
-        seViewUrl = "//ldimage.pastelmall.com";
-    } else if (serverType.equals("dev")) {
-        seUploadPath = "/data/files/smartEditor";
-        seViewUrl = "//" + serverType + ".image.pastelmall.com";
-    } else if (serverType.equals("qas") || serverType.equals("run")) {
-        seUploadPath = "/data/files/smartEditor";
-        seViewUrl = "//image.pastelmall.com";
-    }
-
-    System.out.println("seUploadPath: " + seUploadPath);
-    System.out.println("seViewUrl: " + seViewUrl);
-
-    MultipartRequest multipartRequest = new MultipartRequest(request
-            , seUploadPath
-            , 50000000
-            , "utf-8"
-            , new DefaultFileRenamePolicy()
-    );
-
-    String objImage = GagaFileUtil.getConcatenationPath(seViewUrl, "smartEditor", multipartRequest.getFilesystemName("Filedata"));
-    System.out.println("objImage: " + objImage);
-
-    out.clear();
-%>FILENM:<%=objImage%>

+ 0 - 34
style24.admin/src/main/webapp/smartEditor/write.html

@@ -1,34 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head></head>
-<body>
-
-<script type="text/javascript" src="js/HuskyEZCreator.js" charset="utf-8"></script>
-
-<form action="" method="post">
-	<textarea name="content" id="content" style="width:900px; height:300px;"></textarea>
-	<p>
-		<input type="button" onclick="javascript:_onSubmit(this)" value="submit"></input>
-	</p>
-</form>
-
-<script type="text/javascript">
-var oEditors = [];
-nhn.husky.EZCreator.createInIFrame({
-	oAppRef: oEditors,
-	elPlaceHolder: "content",
-	sSkinURI: "SEditorSkin.html",
-	fCreator: "createSEditorInIFrame"
-});
-
-function _onSubmit(elClicked) {
-	oEditors.getById["content"].exec("UPDATE_IR_FIELD", []);
-	alert($('content').value);
-	try {
-		//elClicked.form.submit();
-	} catch (e) {}
-}
-</script>
-
-</body>
-</html>

+ 8 - 8
style24.admin/src/main/webapp/ux/js/admin.popup.js

@@ -149,7 +149,7 @@ var cfnOpenOrderDetailPopup = function(ordNo) {
 var cfnOpenImagePreViewPopup = function(id,imgUrl) {
 	var str = '<div class="popupWrap videoClose" id="'+id+'" style="z-index:30">';
 	str = str + '<div class="videoPopup modal" data-width="700" data-height="350">';
-	str = str + '<button type="button" class="close" onclick="uifnPopClose(\''+id+'\')"><i class="fa fa-times"></i></button>';
+	str = str + '<button type="button" class="close" onclick="uifnPopupClose(\''+id+'\')"><i class="fa fa-times"></i></button>';
 	str = str + '<img id="imagePreView" src="/image/del01.jpg"/>';
 	str = str + '</div></div>';
 
@@ -180,7 +180,7 @@ var cfnOpenGoodsVideoPopup = function(id, objId, formid, type, fullUrl) {
 	var src = $(formid).find("#"+objId).val();
 	var str = '<div class="popupWrap videoClose" id="'+id+'">';
 	str += '<div class="videoPopup modal" data-width="700" data-height="350">';
-	str += '<button type="button" class="close" onclick="uifnPopClose(\''+id+'\')"><i class="fa fa-times"></i></button>';
+	str += '<button type="button" class="close" onclick="uifnPopupClose(\''+id+'\')"><i class="fa fa-times"></i></button>';
 	if(src.indexOf('http://')!=-1 || src.indexOf('https://')!=-1 && src.indexOf('youtube')==-1){
 		str += '<video id="video" autoplay></video>';
 	}else{
@@ -224,7 +224,7 @@ var cfnOpenGoodsVideoPopup = function(id, objId, formid, type, fullUrl) {
 var cfnOpenGoodsImagePopup = function(goodsCd) {
 	var actionUrl = "/goods/detail/img/form?goodsCd=" + goodsCd;
 
-	uifnPopClose('popupGoodsImage');
+	uifnPopupClose('popupGoodsImage');
 	cfnOpenModalPopup(actionUrl, 'popupGoodsImage');
 }
 
@@ -465,7 +465,7 @@ var cfnOpenGoodsQnaDetailPopup = function(counselSq) {
  */
 var cfnOpenMainContentsPopup = function(cateCd, contentsLoc) {
 	var actionUrl = "/display/main/contents/popup/form?cateCd="+cateCd+"&contentsLoc=" + contentsLoc;
-	uifnPopClose('popupMainContents');
+	uifnPopupClose('popupMainContents');
 	cfnOpenModalPopup(actionUrl, 'popupMainContents');
 }
 
@@ -483,7 +483,7 @@ var cfnOpenMainContentsPopup = function(cateCd, contentsLoc) {
 var cfnOpenLookbookBannerPopup = function(lookbookSq, lookbookTitle) {
 	var actionUrl = "/display/lookbook/banner/popup/form?lookbookSq=" + lookbookSq;
 	if (typeof(lookbookTitle) != 'undefined') actionUrl += "&lookbookTitle=" + encodeURIComponent(lookbookTitle);
-	uifnPopClose('popupLookbookBanner');
+	uifnPopupClose('popupLookbookBanner');
 	cfnOpenModalPopup(actionUrl, 'popupLookbookBanner');
 }
 
@@ -589,7 +589,7 @@ var cfnOpenPlanPopup = function(callbackfun) {
 var cfnOpenGoodsSetPopup = function() {
 	var actionUrl = "/goods/set/form";
 
-	uifnPopClose('popupGoodsSet');
+	uifnPopupClose('popupGoodsSet');
 	cfnOpenModalPopup(actionUrl, 'popupGoodsSet');
 }
 
@@ -606,7 +606,7 @@ var cfnOpenGoodsSetPopup = function() {
 var cfnOpenGoodsDealPopup = function() {
 	var actionUrl = "/goods/deal/form";
 
-	uifnPopClose('popupGoodsDeal');
+	uifnPopupClose('popupGoodsDeal');
 	cfnOpenModalPopup(actionUrl, 'popupGoodsDeal');
 }
 
@@ -623,7 +623,7 @@ var cfnOpenGoodsDealPopup = function() {
 var cfnOpenIconPopup = function() {
 	var actionUrl = "/goods/icon/form";
 
-	uifnPopClose('popupIcon');
+	uifnPopupClose('popupIcon');
 	cfnOpenModalPopup(actionUrl, 'popupIcon');
 }
 

+ 6 - 0
style24.core/.gitignore

@@ -1 +1,7 @@
+<<<<<<< HEAD
 /target/
+=======
+target/
+.settings/
+.classpath
+>>>>>>> refs/heads/eskim

+ 6 - 0
style24.scm/.gitignore

@@ -1 +1,7 @@
+<<<<<<< HEAD
 /target/
+=======
+target/
+.settings/
+.classpath
+>>>>>>> refs/heads/eskim

部分文件因为文件数量过多而无法显示