Просмотр исходного кода

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

gagamel 5 лет назад
Родитель
Сommit
7a12364b3a
29 измененных файлов с 219 добавлено и 297 удалено
  1. 7 13
      src/main/java/com/style24/persistence/mybatis/shop/TsfCoupon.xml
  2. 7 3
      src/main/java/com/style24/persistence/mybatis/shop/TsfOrderChange.xml
  3. 1 0
      src/main/java/com/style24/persistence/mybatis/shop/TsfReview.xml
  4. 19 19
      src/main/webapp/WEB-INF/views/mob/common/fragments/FooterMob.html
  5. 20 2
      src/main/webapp/WEB-INF/views/mob/goods/GoodsDetailFormMob.html
  6. 6 5
      src/main/webapp/WEB-INF/views/mob/goods/GoodsIncludeFormMob.html
  7. 1 1
      src/main/webapp/WEB-INF/views/mob/mypage/MypageCreCancelDetailFormMob.html
  8. 1 1
      src/main/webapp/WEB-INF/views/mob/mypage/MypageCreReturnDetailFormMob.html
  9. 3 3
      src/main/webapp/WEB-INF/views/mob/mypage/MypageDeliveryInfoFormMob.html
  10. 3 3
      src/main/webapp/WEB-INF/views/mob/mypage/MypageOrderDetailFormMob.html
  11. 12 3
      src/main/webapp/WEB-INF/views/mob/mypage/MypageOrderListInfoMob.html
  12. 5 1
      src/main/webapp/WEB-INF/views/mob/mypage/MypageReviewCreateFormMob.html
  13. 1 1
      src/main/webapp/WEB-INF/views/mob/mypage/NoMemberCreCancelDetailFormMob.html
  14. 1 1
      src/main/webapp/WEB-INF/views/mob/mypage/NoMemberCreReturnDetailFormMob.html
  15. 2 2
      src/main/webapp/WEB-INF/views/mob/mypage/NoMemberDeliveryInfoFormMob.html
  16. 2 2
      src/main/webapp/WEB-INF/views/mob/mypage/NoMemberOrderDetailFormMob.html
  17. 2 2
      src/main/webapp/WEB-INF/views/mob/mypage/NoMemberOrderListInfoMob.html
  18. 2 2
      src/main/webapp/WEB-INF/views/mob/planning/PlanningDetailFormMob.html
  19. 13 6
      src/main/webapp/WEB-INF/views/web/common/fragments/FooterWeb.html
  20. 1 1
      src/main/webapp/WEB-INF/views/web/goods/GoodsDetailFormWeb.html
  21. 1 1
      src/main/webapp/WEB-INF/views/web/mypage/MypageCreCancelDetailFormWeb.html
  22. 1 1
      src/main/webapp/WEB-INF/views/web/mypage/MypageCreReturnDetailFormWeb.html
  23. 1 1
      src/main/webapp/WEB-INF/views/web/mypage/NoMemberCreCancelDetailFormWeb.html
  24. 1 1
      src/main/webapp/WEB-INF/views/web/mypage/NoMemberCreReturnDetailFormWeb.html
  25. 4 0
      src/main/webapp/WEB-INF/views/web/planning/PlanningDetailFormWeb.html
  26. 1 1
      src/main/webapp/WEB-INF/views/web/planning/PlanningMainFormWeb.html
  27. 72 1
      src/main/webapp/ux/plugins/gaga/gaga.paging.js
  28. 0 220
      src/main/webapp/ux/plugins/gaga/gaga.singlePaging.js
  29. 29 0
      src/main/webapp/ux/style24_link.js

+ 7 - 13
src/main/java/com/style24/persistence/mybatis/shop/TsfCoupon.xml

@@ -960,7 +960,6 @@
 		     , Z.CPN_CNT                               /*보유쿠폰수*/
 		     , Z.EXPIRE_YN                             /*만료여부*/
 		     , GROUP_CONCAT(Z.TGT_CONDITION) AS TGT_CONDITION
-		     , Z.CUST_CPN_SQ
 		FROM
 		(
 		WITH TAB_COUPON AS (
@@ -988,7 +987,6 @@
 		         , CC.AVAIL_EDDT                      /*유효종료일자*/
 		         , CC.CPN_CNT                         /*보유쿠폰수*/
 		         , CC.EXPIRE_YN                       /*만료여부*/
-		         , CC.CUST_CPN_SQ 
 		    FROM   (
 		            SELECT CC.CPN_ID
 		                 , DATE_FORMAT(CC.AVAIL_STDT,'%Y.%m.%d %H:%i') AS AVAIL_STDT  /*유효시작일자*/
@@ -997,7 +995,6 @@
 		                 , MAX(CASE WHEN NOW() > CC.AVAIL_EDDT THEN 'Y'
 		                            ELSE 'N'
 		                       END)                              AS EXPIRE_YN /*만료여부*/
-		                 , MAX(CC.CUST_CPN_SQ) AS CUST_CPN_SQ
 		            FROM   TB_CUST_COUPON CC
 		            WHERE  1 = 1
 		            GROUP  BY CC.CPN_ID, DATE_FORMAT(CC.AVAIL_STDT,'%Y.%m.%d %H:%i'), DATE_FORMAT(CC.AVAIL_EDDT,'%Y.%m.%d %H:%i')
@@ -1021,10 +1018,9 @@
 		                WHEN CR.CPN_TARGET = 'G260_13' /*업체*/ THEN (SELECT SUPPLY_COMP_NM FROM TB_SUPPLY_COMPANY WHERE SUPPLY_COMP_CD = CR.REF_VAL AND USE_YN = 'Y' AND SUPPLY_STAT = 'G010_30')
 		           END AS REF_VAL
 		         , RANK() OVER(PARTITION BY CR.CPN_ID, CR.CPN_TARGET ORDER BY REF_VAL) AS RK
-		    FROM   TAB_COUPON C
-		         , TB_COUPON_REFVAL CR
-		    WHERE  C.CPN_ID = CR.CPN_ID
-		    AND    CR.CPN_TARGET != 'G260_14' /*제외상품아닌넘*/
+		    FROM   TAB_COUPON C LEFT OUTER JOIN TB_COUPON_REFVAL CR
+		             ON  C.CPN_ID = CR.CPN_ID
+		    WHERE    CR.CPN_TARGET != 'G260_14' /*제외상품아닌넘*/
 		)
 		, TAB_COUPON_REFVAL2 AS (
 		    SELECT CPN_ID
@@ -1061,11 +1057,9 @@
 		                              WHEN CR.CPN_TARGET = 'G260_13' AND CR.CNT > 1 THEN ' 외'
 		                              ELSE ''
 		                         END) AS TGT_CONDITION /*대상조건*/
-		     , C.CUST_CPN_SQ
-		FROM   TAB_COUPON C
-		     , TAB_COUPON_REFVAL2 CR
-		WHERE  C.CPN_ID = CR.CPN_ID
-		AND C.CPN_ID = #{cpnId}
+		FROM   TAB_COUPON C LEFT OUTER JOIN TAB_COUPON_REFVAL2 CR
+		            ON  C.CPN_ID = CR.CPN_ID
+		WHERE C.CPN_ID = #{cpnId}
 		ORDER  BY C.EXPIRE_YN, C.AVAIL_EDDT
 		)Z
 		GROUP BY  Z.CPN_ID                                /*쿠폰ID*/
@@ -1080,7 +1074,7 @@
 		        , Z.AVAIL_EDDT                            /*유효종료일자*/
 		        , Z.CPN_CNT                               /*보유쿠폰수*/
 		        , Z.EXPIRE_YN                             /*만료여부*/
-		        , Z.CUST_CPN_SQ
+		ORDER BY CPN_ID LIMIT 1
 	</select>
 	
 	<select id="getPlanCouponDetailInfo" resultType="Coupon" parameterType="Coupon">

+ 7 - 3
src/main/java/com/style24/persistence/mybatis/shop/TsfOrderChange.xml

@@ -849,6 +849,7 @@
 		     , Z.RF_TMTB2_AMT
 		     , Z.RF_GOODS_CPN_AMT
 		     , Z.RF_CART_CPN_AMT
+		     , Z.RF_DELV_CPN_AMT
 		     , Z.RF_PNT_AMT
 		     , Z.RF_PRE_PNT_AMT
 		     , Z.RF_GFCD_USE_AMT
@@ -904,6 +905,7 @@
 		             , R.RF_TMTB2_AMT
 		             , R.RF_GOODS_CPN_AMT
 		             , R.RF_CART_CPN_AMT
+		             , R.RF_DELV_CPN_AMT
 		             , R.RF_PNT_AMT
 		             , R.RF_PRE_PNT_AMT
 		             , R.RF_GFCD_USE_AMT
@@ -969,8 +971,8 @@
 				, Z.CHG_STAT_NM, Z.ORD_NO, Z.ORD_AMT, Z.ORD_QTY, Z.CNCL_RTN_QTY, Z.CNCL_RTN_AMT, Z.CPN1_DC_AMT, Z.REAL_ORD_AMT, Z.PNT_DC_AMT
 				, Z.GFCD_USE_AMT, Z.ORD_DTL_NO, Z.GOODS_CD, Z.BRAND_NM, Z.SHOT_DELV_YN, Z.SELF_GOODS_YN, Z.GOODS_NM
 				, Z.GOODS_TYPE, Z.PRICE_ORG, Z.PRICE_SALE, Z.ADD_PAY_COST, Z.SYS_IMG_NM, Z.GIFT_PACK_YN, Z.REFUND_AMT, Z.RF_CPN1_AMT, Z.RF_TMTB1_AMT
-				, Z.RF_TMTB2_AMT, Z.RF_GOODS_CPN_AMT, Z.RF_CART_CPN_AMT, Z.RF_PNT_AMT, Z.RF_PRE_PNT_AMT, Z.RF_GFCD_USE_AMT, Z.RF_CNCL_AMT
-				, Z.RF_DELIVERY_FEE, Z.RF_REAL_CNCL_AMT, Z.PG_TID, Z.PG_GB, Z.PAY_MEANS, Z.PAY_MEANS_NM
+				, Z.RF_TMTB2_AMT, Z.RF_GOODS_CPN_AMT, Z.RF_CART_CPN_AMT, Z.RF_DELV_CPN_AMT, Z.RF_PNT_AMT, Z.RF_PRE_PNT_AMT, Z.RF_GFCD_USE_AMT
+				, Z.RF_CNCL_AMT, Z.RF_DELIVERY_FEE, Z.RF_REAL_CNCL_AMT, Z.PG_TID, Z.PG_GB, Z.PAY_MEANS, Z.PAY_MEANS_NM
 		 ORDER BY Z.ORD_CHG_SQ DESC
 	</select>
 
@@ -1018,6 +1020,7 @@
 		     , Z.RF_TMTB2_AMT
 		     , Z.RF_GOODS_CPN_AMT
 		     , Z.RF_CART_CPN_AMT
+		     , Z.RF_DELV_CPN_AMT
 		     , Z.RF_PNT_AMT
 		     , Z.RF_PRE_PNT_AMT
 		     , Z.RF_GFCD_USE_AMT
@@ -1081,6 +1084,7 @@
 		             , R.RF_TMTB2_AMT
 		             , R.RF_GOODS_CPN_AMT
 		             , R.RF_CART_CPN_AMT
+		             , R.RF_DELV_CPN_AMT
 		             , R.RF_PNT_AMT
 		             , R.RF_PRE_PNT_AMT
 		             , R.RF_GFCD_USE_AMT
@@ -1152,7 +1156,7 @@
 		        , Z.CHG_STAT_NM, Z.ORD_NO, Z.ORD_AMT, Z.ORD_QTY, Z.CNCL_RTN_QTY, Z.CNCL_RTN_AMT, Z.CPN1_DC_AMT, Z.REAL_ORD_AMT, Z.PNT_DC_AMT
 		        , Z.GFCD_USE_AMT, Z.ORD_DTL_NO, Z.GOODS_CD, Z.BRAND_NM, Z.SHOT_DELV_YN, Z.SELF_GOODS_YN, Z.GOODS_NM
 		        , Z.GOODS_TYPE, Z.PRICE_ORG, Z.PRICE_SALE, Z.ADD_PAY_COST, Z.SYS_IMG_NM, Z.GIFT_PACK_YN, Z.REFUND_AMT, Z.RF_CPN1_AMT, Z.RF_TMTB1_AMT
-		        , Z.RF_TMTB2_AMT, Z.RF_GOODS_CPN_AMT, Z.RF_CART_CPN_AMT, Z.RF_PNT_AMT, Z.RF_PRE_PNT_AMT, Z.RF_GFCD_USE_AMT, Z.RF_CNCL_AMT
+		        , Z.RF_TMTB2_AMT, Z.RF_GOODS_CPN_AMT, Z.RF_CART_CPN_AMT, Z.RF_DELV_CPN_AMT, Z.RF_PNT_AMT, Z.RF_PRE_PNT_AMT, Z.RF_GFCD_USE_AMT, Z.RF_CNCL_AMT
 		        , Z.RF_DELIVERY_FEE, Z.RF_REAL_CNCL_AMT, Z.PG_GB, Z.PAY_MEANS, Z.PAY_MEANS_NM, Z.WD_GB, Z.CHGER_NM, Z.CHGER_PHNNO, Z.CHGER_BASE_ADDR
 		        , Z.CHGER_DTL_ADDR, Z.CHGER_RTN_MEMO, Z.WD_INVOICE_NO, Z.SHIP_COMP_CD, Z.SHIP_COMP_NM
 		 ORDER BY Z.ORD_CHG_SQ DESC

+ 1 - 0
src/main/java/com/style24/persistence/mybatis/shop/TsfReview.xml

@@ -1317,6 +1317,7 @@
 		AND ORD_NO        = #{ordNo}
 		AND ORD_DTL_NO    = #{ordDtlNo}
 		AND GOODS_CD      = #{goodsCd}
+		AND REVIEW_SQ    != #{reviewSq}
 	</select>
 	
 	<insert id="createReviewPoint" parameterType="Point" useGeneratedKeys="true" keyProperty="custPntSq">

+ 19 - 19
src/main/webapp/WEB-INF/views/mob/common/fragments/FooterMob.html

@@ -289,25 +289,6 @@
 							type: 'fraction',
 						},
 					});			
-
-					if($(".popup_main_notice").hasClass("active")){
-						$("body").css({"overflow":"hidden"});
-					}else{
-						$("body").css({"overflow":"visible"});
-					};
-
-					/* 메인 공지 팝업 닫기 */
-					$(document).on('click','#btnPopupClose',function(e){
-						$('#popupMainNotice').hide();
-						$(".popup_main_notice").removeClass("active");
-
-						if(!$(".popup_main_notice").hasClass("active")){
-							$("body").css({"overflow":"visible"});
-						}else{
-							$("body").css({"overflow":"hidden"});
-						};
-						return false;
-					});	
 					
 				}
 			}
@@ -333,6 +314,13 @@
 	}
 	// 창 닫기
 	let fnLayerPopupClose = function(){
+		$(".popup_main_notice").removeClass("active");
+
+		if(!$(".popup_main_notice").hasClass("active")){
+			$("body").css({"overflow":"visible"});
+		}else{
+			$("body").css({"overflow":"hidden"});
+		};
 		$('#popupMainNotice').remove();
 	}
 	
@@ -358,7 +346,19 @@
 				$('#spanGnbCartCnt').show();
 			}
 		});
+		
+		
+		
 	});
+	
+
+	if($(".popup_main_notice").hasClass("active")){
+		$("body").css({"overflow":"hidden"});
+	}else{
+		$("body").css({"overflow":"visible"});
+	};
+	
+	
 /*]]>*/
 </script>
 

+ 20 - 2
src/main/webapp/WEB-INF/views/mob/goods/GoodsDetailFormMob.html

@@ -38,7 +38,7 @@
 		<input type="hidden" name="selfGoodsYn" th:value="${goodsInfo.selfGoodsYn}"/>
 <main role="" id="" class="container pd" th:with="imgGoodsUrl=${@environment.getProperty('upload.goods.view')}, uxImgUrl=${@environment.getProperty('domain.uximage')}, imgUrl=${@environment.getProperty('upload.image.view')}">
 	<!-- ★ 컨텐츠 시작 -->
-
+<script src="//developers.kakao.com/sdk/js/kakao.min.js"></script>
 	<section class="pd_detail">
 		<!-- 210409_ 구조변경 : .pd_info, .pd_info1 추가  -->
 		<div class="pd_info">
@@ -1049,7 +1049,7 @@
 		<div class="share_like">
 			<button type="button" class="share">공유하기</button>
 			<!-- <th:block th:include="~{web/goods/GoodsIncludeFormMob :: goodsSnsForm}"></th:block> -->
-			<button type="button" class="like" th:classappend="${goodsInfo.wishYn == 'Y'}? 'active' : ''"  
+			<button type="button" class="itemLike" th:classappend="${goodsInfo.wishYn == 'Y'}? 'active' : ''"  
 					onclick="cfnPutWishList(this);" 
 					th:attr="goodsCd=${params.goodsCd}, ithrCd=${params.ithrCd}, contentsLoc=${params.contentsLoc}, planDtlSq=${params.planDtlSq}">위시리스트</button>
 		</div>
@@ -1061,6 +1061,24 @@
 			<button type="button" class="cantbuying" style="display:block;">SOLD OUT</button>
 			</th:block>
 		</div>
+		<!-- (공통) 공유팝업 -->
+		<div class="modal fade" id="tglShare" tabindex="-1" role="dialog" aria-labelledby="aModalLabel" aria-hidden="true">
+			<div class="modal-dialog" role="document">
+				<div class="modal-content">
+					<div class="modal-header">
+						<h5 class="modal-title" id="aModalLabel">공유하기</h5>
+					</div>
+					<th:block th:include="~{mob/goods/GoodsIncludeFormMob :: goodsSnsForm}"></th:block>
+				</div>
+			</div>
+		</div>
+		<script>
+			// 공유팝업
+			$('.product_floormenu .share').click(function(e){
+				e.preventDefault();
+				$('#tglShare').modal("show");
+			});
+		</script>
 	</div>
 	<!-- //바닥메뉴 -->
 	

+ 6 - 5
src/main/webapp/WEB-INF/views/mob/goods/GoodsIncludeFormMob.html

@@ -13,20 +13,21 @@
  * 1.02021.03.02 eskim	 최초 작성
  *******************************************************************************
  -->
+
 <!-- 상품상세 SNS-->
-<th:blockth:fragment="goodsSnsForm" >
+<th:block th:fragment="goodsSnsForm" >
 <!-- toggle contents -->
-<div class="shareWrap" th:with="stylelUrl=${@environment.getProperty('domain.front')}, imgGoodsUrl=${@environment.getProperty('upload.goods.view')}">
-	<div id="layerShare" class="setShare open">
+<div class="modal-body">
+	<!-- toggle contents -->
+	<div id="layerShare" class="setShare open"  th:with="stylelUrl=${@environment.getProperty('domain.front')}, imgGoodsUrl=${@environment.getProperty('upload.goods.view')}">
 		<span>
-			<button type="button" class="kk" th:attr="onclick=|cfnSendToKakao('${stylelUrl+'/goods/detail/form?goodsCd='+goodsInfo.goodsCd}', '${goodsInfo.goodsFullNm}', '${imgGoodsUrl+ '/'+goodsInfo.sysImgNm+'?RS=80'}');|"><span>카카오톡</span></button>
+			<button type="button" id="kakao-link-btn" class="kk" th:attr="onclick=|cfnSendToKakaoMob('${stylelUrl+'/goods/detail/form?goodsCd='+goodsInfo.goodsCd}', '${goodsInfo.goodsFullNm}', '${imgGoodsUrl+ '/'+goodsInfo.sysImgNm+'?RS=80'}');|"><span>카카오톡</span></button>
 			<button type="button" class="fb" th:attr="onclick=|sendSns('facebook', '${stylelUrl+'/goods/detail/form?goodsCd='+goodsInfo.goodsCd}', '${goodsInfo.goodsFullNm}', '', '');|"><span>페이스북</span></button>
 			<button type="button" class="tw" th:attr="onclick=|sendSns('twitter', '${stylelUrl+'/goods/detail/form?goodsCd='+goodsInfo.goodsCd}', '${goodsInfo.goodsFullNm+ '#style24몰'}', '', '');|"><span>트위터</span></button>
 			<button type="button" class="url btn_copy"><span>URL</span></button>
 		</span>
 	</div>
 </div>
-
 </th:block>
 
 <!-- 딜 상품 상품소개영역 -->

+ 1 - 1
src/main/webapp/WEB-INF/views/mob/mypage/MypageCreCancelDetailFormMob.html

@@ -152,7 +152,7 @@
 										<dt>할인 금액 차감</dt>
 										<dd>
 											<div>
-												<span th:text="${#numbers.formatInteger(-(oneData.rfCpn1Amt + oneData.rfTmtb1Amt + oneData.rfTmtb2Amt + oneData.rfGoodsCpnAmt + oneData.rfCartCpnAmt + oneData.rfPrePntAmt), 1, 'COMMA')}"></span>원
+												<span th:text="${#numbers.formatInteger(-(oneData.rfCpn1Amt + oneData.rfTmtb1Amt + oneData.rfTmtb2Amt + oneData.rfGoodsCpnAmt + oneData.rfCartCpnAmt + oneData.rfDelvCpnAmt + oneData.rfPrePntAmt), 1, 'COMMA')}"></span>원
 											</div>
 										</dd>
 									</div>

+ 1 - 1
src/main/webapp/WEB-INF/views/mob/mypage/MypageCreReturnDetailFormMob.html

@@ -217,7 +217,7 @@
 										<dt>할인 금액 차감</dt>
 										<dd>
 											<div>
-												<span th:text="${#numbers.formatInteger(-(oneData.rfCpn1Amt + oneData.rfTmtb1Amt + oneData.rfTmtb2Amt + oneData.rfGoodsCpnAmt + oneData.rfCartCpnAmt + oneData.rfPrePntAmt), 1, 'COMMA')}"></span>원
+												<span th:text="${#numbers.formatInteger(-(oneData.rfCpn1Amt + oneData.rfTmtb1Amt + oneData.rfTmtb2Amt + oneData.rfGoodsCpnAmt + oneData.rfCartCpnAmt + oneData.rfDelvCpnAmt + oneData.rfPrePntAmt), 1, 'COMMA')}"></span>원
 											</div>
 										</dd>
 									</div>

+ 3 - 3
src/main/webapp/WEB-INF/views/mob/mypage/MypageDeliveryInfoFormMob.html

@@ -123,7 +123,7 @@
 								<th:block th:if="${ordDtl.ordDtlStat == 'G013_10'}">
 									<div class="goods_btn_wrap btn_group_flex">
 										<div><button type="button" class="btn btn_default btn_cncl_complete" onclick="cfnGoToPage(_PAGE_ONETOONE_QNA_REG);"><span>1:1 문의</span></button></div>
-										<div><button type="button" class="btn btn_primary btn_cart_save" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" onclick="fnCreateCart(this);"><span>쇼핑백 담기</span></button></div>
+										<div><button type="button" class="btn btn_default btn_cart_save" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" onclick="fnCreateCart(this);"><span>쇼핑백 담기</span></button></div>
 									</div>
 								</th:block>
 								<!-- //입금대기 (1:1문의, 쇼핑백 담기) -->
@@ -208,7 +208,7 @@
 										</th:block>
 										<!-- //리뷰사용불가능, 리뷰등록후일때 -->
 
-										<div><button type="button" class="btn btn_primary btn_cart_save" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}" onclick="fnCreateCart(this);"><span>쇼핑백 담기</span></button></div>
+										<div><button type="button" class="btn btn_default btn_cart_save" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}" onclick="fnCreateCart(this);"><span>쇼핑백 담기</span></button></div>
 
 										<!-- 리뷰사용가능, 리뷰등록전일때 -->
 										<th:block th:if="${ordDtl.reviewableYn} == 'Y' and ${ordDtl.reviewSq} == null">
@@ -237,7 +237,7 @@
 								<!-- 배송지등록완료, 결제전취소, 결제후취소 아닐경우 -->
 								<th:block th:if="${ordDtl.ordDtlStat} == 'G013_50' or ${ordDtl.ordDtlStat} == 'G013_55' or ${ordDtl.ordDtlStat} == 'G013_60' or ${ordDtl.ordDtlStat} == 'G013_70'">
 									<th:block th:if="${ordDtl.recipBaseAddr != ''} and ${ordDtl.ordDtlStat} != 'G013_98' and ${ordDtl.ordDtlStat} != 'G013_99'">
-										<div><button type="button" class="btn btn_primary btn_cart_save" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}" onclick="fnCreateCart(this);"><span>쇼핑백 담기</span></button></div>
+										<div><button type="button" class="btn btn_default btn_cart_save" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}" onclick="fnCreateCart(this);"><span>쇼핑백 담기</span></button></div>
 										<!-- 리뷰사용가능, 리뷰등록전일때 -->
 										<th:block th:if="${ordDtl.reviewableYn} == 'Y' and ${ordDtl.reviewSq} == null and ${ordDtl.ordDtlStat} == 'G013_70'">
 											<div><button type="button" class="btn btn_primary btn_review_write" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, goodsCd=${ordDtl.goodsCd}" onclick="fnCreateReview(this);"><span>리뷰 쓰기</span></button></div>

+ 3 - 3
src/main/webapp/WEB-INF/views/mob/mypage/MypageOrderDetailFormMob.html

@@ -130,7 +130,7 @@
 								<th:block th:if="${ordDtl.ordDtlStat == 'G013_10'}">
 									<div class="goods_btn_wrap btn_group_flex">
 										<div><button type="button" class="btn btn_default btn_cncl_complete" onclick="cfnGoToPage(_PAGE_ONETOONE_QNA_REG);"><span>1:1 문의</span></button></div>
-										<div><button type="button" class="btn btn_primary btn_cart_save" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" onclick="fnCreateCart(this);"><span>쇼핑백 담기</span></button></div>
+										<div><button type="button" class="btn btn_default btn_cart_save" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" onclick="fnCreateCart(this);"><span>쇼핑백 담기</span></button></div>
 									</div>
 								</th:block>
 								<!-- //입금대기 (1:1문의, 쇼핑백 담기) -->
@@ -467,7 +467,7 @@
 										</th:block>
 										<!-- //리뷰사용불가능, 리뷰등록후일때 -->
 
-										<div><button type="button" class="btn btn_primary btn_cart_save" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}" onclick="fnCreateCart(this);"><span>쇼핑백 담기</span></button></div>
+										<div><button type="button" class="btn btn_default btn_cart_save" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}" onclick="fnCreateCart(this);"><span>쇼핑백 담기</span></button></div>
 
 										<!-- 리뷰사용가능, 리뷰등록전일때 -->
 										<th:block th:if="${ordDtl.reviewableYn} == 'Y' and ${ordDtl.reviewSq} == null">
@@ -496,7 +496,7 @@
 								<!-- 배송지등록완료, 결제전취소, 결제후취소 아닐경우 -->
 								<th:block th:if="${ordDtl.ordDtlStat} == 'G013_50' or ${ordDtl.ordDtlStat} == 'G013_55' or ${ordDtl.ordDtlStat} == 'G013_60' or ${ordDtl.ordDtlStat} == 'G013_70'">
 									<th:block th:if="${ordDtl.recipBaseAddr != ''} and ${ordDtl.ordDtlStat} != 'G013_98' and ${ordDtl.ordDtlStat} != 'G013_99'">
-										<div><button type="button" class="btn btn_primary btn_cart_save" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}" onclick="fnCreateCart(this);"><span>쇼핑백 담기</span></button></div>
+										<div><button type="button" class="btn btn_default btn_cart_save" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}" onclick="fnCreateCart(this);"><span>쇼핑백 담기</span></button></div>
 										<!-- 리뷰사용가능, 리뷰등록전일때 -->
 										<th:block th:if="${ordDtl.reviewableYn} == 'Y' and ${ordDtl.reviewSq} == null and ${ordDtl.ordDtlStat} == 'G013_70'">
 											<div><button type="button" class="btn btn_primary btn_review_write" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, goodsCd=${ordDtl.goodsCd}" onclick="fnCreateReview(this);"><span>리뷰 쓰기</span></button></div>

+ 12 - 3
src/main/webapp/WEB-INF/views/mob/mypage/MypageOrderListInfoMob.html

@@ -114,7 +114,7 @@
 										</button>
 									</div>
 									<div>
-										<button type="button" class="btn btn_primary btn_cart_save" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" onclick="fnCreateCart(this);">
+										<button type="button" class="btn btn_default btn_cart_save" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" onclick="fnCreateCart(this);">
 											<span>쇼핑백 담기</span>
 										</button>
 									</div>
@@ -276,7 +276,7 @@
 							<th:block th:if="${ordDtl.ordDtlStat} == 'G013_70'">
 								<div class="goods_btn_wrap btn_group_flex">
 									<div>
-										<button type="button" class="btn btn_primary btn_cart_save" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" onclick="fnCreateCart(this);">
+										<button type="button" class="btn btn_default btn_cart_save" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" onclick="fnCreateCart(this);">
 											<span>쇼핑백 담기</span>
 										</button>
 									</div>
@@ -290,6 +290,15 @@
 										</div>
 									</th:block>
 									<!-- //리뷰사용가능, 리뷰등록전일때 -->
+									<!-- 리뷰사용불가능, 리뷰등록일때 -->
+									<th:block th:unless="${ordDtl.reviewableYn} == 'Y' and ${ordDtl.reviewSq} == null">
+										<div>
+											<button type="button" class="btn btn_default btn_qna_write" onclick="cfnGoToPage(_PAGE_ONETOONE_QNA);">
+												<span>1:1 문의</span>
+											</button>
+										</div>
+									</th:block>
+									<!-- //리뷰사용가능, 리뷰등록전일때 -->
 								</div>
 							</th:block>
 							<!-- //구매확정 -->
@@ -322,7 +331,7 @@
 								<!-- 배송지등록완료, 결제전취소, 결제후취소 아닐경우 -->
 								<th:block th:if="${ordDtl.ordDtlStat} == 'G013_50' or ${ordDtl.ordDtlStat} == 'G013_55' or ${ordDtl.ordDtlStat} == 'G013_60' or ${ordDtl.ordDtlStat} == 'G013_70'">
 									<th:block th:if="${ordDtl.recipBaseAddr != ''} and ${ordDtl.ordDtlStat} != 'G013_98' and ${ordDtl.ordDtlStat} != 'G013_99'">
-										<div><button type="button" class="btn btn_primary btn_cart_save"><span>쇼핑백 담기</span></button></div>
+										<div><button type="button" class="btn btn_default btn_cart_save"><span>쇼핑백 담기</span></button></div>
 										<!-- 리뷰사용가능, 리뷰등록전일때 -->
 										<th:block th:if="${ordDtl.reviewableYn} == 'Y' and ${ordDtl.reviewSq} == null and ${ordDtl.ordDtlStat} == 'G013_70'">
 											<div><button type="button" class="btn btn_primary btn_review_write"><span>리뷰 쓰기</span></button></div>

+ 5 - 1
src/main/webapp/WEB-INF/views/mob/mypage/MypageReviewCreateFormMob.html

@@ -268,7 +268,7 @@
 															<div class="form_field">
 																<div class="imgUpload">
 																	<label for="fileAdd" class="fileAdd" id="fileAdd_reply">첫번째업로드</label>
-																	<input type="file" id="fileAdd" name="files" accept=".jpeg, .jpg, .png, video/*"> <!-- 210507_추가 : accept 속성 추가 -->
+																	<input type="file" id="fileAdd" name="files" accept=".jpeg, .jpg, .png, video/mp4,video/x-m4v,video/*"> <!-- 210507_추가 : accept 속성 추가 -->
 																</div>
 															</div>
 															<!-- //이미지첨부 -->
@@ -602,6 +602,10 @@ $(function(){
 			$('#review_cnt').html("500");
 		}
 	});
+	
+	$('.doc_review').bind('input paste', function() {
+		  $(this).trigger('keyup');
+	});
 });
 
 $('#fileAdd').on('change', function() { fnChooseFile(this); });

+ 1 - 1
src/main/webapp/WEB-INF/views/mob/mypage/NoMemberCreCancelDetailFormMob.html

@@ -147,7 +147,7 @@
 										<dt>할인 금액 차감</dt>
 										<dd>
 											<div>
-												<span th:text="${#numbers.formatInteger(-(oneData.rfCpn1Amt + oneData.rfTmtb1Amt + oneData.rfTmtb2Amt + oneData.rfGoodsCpnAmt + oneData.rfCartCpnAmt + oneData.rfPrePntAmt), 1, 'COMMA')}"></span>원
+												<span th:text="${#numbers.formatInteger(-(oneData.rfCpn1Amt + oneData.rfTmtb1Amt + oneData.rfTmtb2Amt + oneData.rfGoodsCpnAmt + oneData.rfCartCpnAmt + oneData.rfDelvCpnAmt + oneData.rfPrePntAmt), 1, 'COMMA')}"></span>원
 											</div>
 										</dd>
 									</div>

+ 1 - 1
src/main/webapp/WEB-INF/views/mob/mypage/NoMemberCreReturnDetailFormMob.html

@@ -207,7 +207,7 @@
 										<dt>할인 금액 차감</dt>
 										<dd>
 											<div>
-												<span th:text="${#numbers.formatInteger(-(oneData.rfCpn1Amt + oneData.rfTmtb1Amt + oneData.rfTmtb2Amt + oneData.rfGoodsCpnAmt + oneData.rfCartCpnAmt + oneData.rfPrePntAmt), 1, 'COMMA')}"></span>원
+												<span th:text="${#numbers.formatInteger(-(oneData.rfCpn1Amt + oneData.rfTmtb1Amt + oneData.rfTmtb2Amt + oneData.rfGoodsCpnAmt + oneData.rfCartCpnAmt + oneData.rfDelvCpnAmt + oneData.rfPrePntAmt), 1, 'COMMA')}"></span>원
 											</div>
 										</dd>
 									</div>

+ 2 - 2
src/main/webapp/WEB-INF/views/mob/mypage/NoMemberDeliveryInfoFormMob.html

@@ -103,7 +103,7 @@
 							<!-- 입금대기 (1:1문의, 쇼핑백 담기) -->
 							<th:block th:if="${ordDtl.ordDtlStat == 'G013_10'}">
 								<div class="goods_btn_wrap btn_group_flex">
-									<div><button type="button" class="btn btn_primary btn_cart_save" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" onclick="fnCreateCart(this);"><span>쇼핑백 담기</span></button></div>
+									<div><button type="button" class="btn btn_default btn_cart_save" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" onclick="fnCreateCart(this);"><span>쇼핑백 담기</span></button></div>
 								</div>
 							</th:block>
 							<!-- //입금대기 (1:1문의, 쇼핑백 담기) -->
@@ -158,7 +158,7 @@
 							<!-- 구매확정 -->
 							<th:block th:if="${ordDtl.ordDtlStat} == 'G013_70'">
 								<div class="goods_btn_wrap btn_group_flex">
-									<div><button type="button" class="btn btn_primary btn_cart_save" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}" onclick="fnCreateCart(this);"><span>쇼핑백 담기</span></button></div>
+									<div><button type="button" class="btn btn_default btn_cart_save" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}" onclick="fnCreateCart(this);"><span>쇼핑백 담기</span></button></div>
 								</div>
 							</th:block>
 							<!-- //구매확정 -->

+ 2 - 2
src/main/webapp/WEB-INF/views/mob/mypage/NoMemberOrderDetailFormMob.html

@@ -114,7 +114,7 @@
 								<!-- 입금대기 (1:1문의, 쇼핑백 담기) -->
 								<th:block th:if="${ordDtl.ordDtlStat == 'G013_10'}">
 									<div class="goods_btn_wrap btn_group_flex">
-										<div><button type="button" class="btn btn_primary btn_cart_save" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" onclick="fnCreateCart(this);"><span>쇼핑백 담기</span></button></div>
+										<div><button type="button" class="btn btn_default btn_cart_save" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" onclick="fnCreateCart(this);"><span>쇼핑백 담기</span></button></div>
 									</div>
 								</th:block>
 								<!-- //입금대기 (1:1문의, 쇼핑백 담기) -->
@@ -212,7 +212,7 @@
 								<!-- 구매확정 -->
 								<th:block th:if="${ordDtl.ordDtlStat} == 'G013_70'">
 									<div class="goods_btn_wrap btn_group_flex">
-										<div><button type="button" class="btn btn_primary btn_cart_save" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}" onclick="fnCreateCart(this);"><span>쇼핑백 담기</span></button></div>
+										<div><button type="button" class="btn btn_default btn_cart_save" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}" onclick="fnCreateCart(this);"><span>쇼핑백 담기</span></button></div>
 									</div>
 								</th:block>
 								<!-- //구매확정 -->

+ 2 - 2
src/main/webapp/WEB-INF/views/mob/mypage/NoMemberOrderListInfoMob.html

@@ -78,7 +78,7 @@
 							<th:block th:if="${ordDtl.ordDtlStat == 'G013_10'}">
 								<div class="goods_btn_wrap btn_group_flex">
 									<div>
-										<button type="button" class="btn btn_primary btn_cart_save" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" onclick="fnCreateCart(this);">
+										<button type="button" class="btn btn_default btn_cart_save" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" onclick="fnCreateCart(this);">
 											<span>쇼핑백 담기</span>
 										</button>
 									</div>
@@ -156,7 +156,7 @@
 							<th:block th:if="${ordDtl.ordDtlStat} == 'G013_70'">
 								<div class="goods_btn_wrap btn_group_flex">
 									<div>
-										<button type="button" class="btn btn_primary btn_cart_save" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" onclick="fnCreateCart(this);">
+										<button type="button" class="btn btn_default btn_cart_save" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" onclick="fnCreateCart(this);">
 											<span>쇼핑백 담기</span>
 										</button>
 									</div>

+ 2 - 2
src/main/webapp/WEB-INF/views/mob/planning/PlanningDetailFormMob.html

@@ -223,7 +223,7 @@
 	<input type="hidden" name="planSq" th:value="${planInfo.planSq}" />
 	<input type="hidden" name="pageSize" value="10" />
 </form>
-<script src="/ux/plugins/gaga/gaga.singlePaging.js"></script>
+<script src="/ux/plugins/gaga/gaga.paging.js"></script>
 <script th:inline="javascript">
 let review = [[${reviewInfo}]];
 let coupon = [[${couponInfo}]];
@@ -296,7 +296,7 @@ var fnSearchCallback = function (result) {
 	 $("#replyList").append(html);
 	 
 	// Create pagination
-	gagaPaging.createPagination(result.paging.pageable);
+	gagaPaging.createSinglePagination(result.paging.pageable);
 }
 
 // 댓글 삭제

+ 13 - 6
src/main/webapp/WEB-INF/views/web/common/fragments/FooterWeb.html

@@ -1348,16 +1348,16 @@
 	}
     
 	
-	/* var doubleSubmitFlag = false;
-    function doubleSubmitCheck(){
+	var doubleSubmitFlag = false;
+    /* function doubleSubmitCheck(){
         if(doubleSubmitFlag){
             return doubleSubmitFlag;
         }else{
             doubleSubmitFlag = true;
             return false;
         }
-    }
-    */
+    } */
+    
      
 	//쿠폰 다운로드
 	var fnQuickCouponDown = function(obj){
@@ -1366,13 +1366,20 @@
 			cfnGoToPage(_PAGE_LOGIN);
 			return false;
 		}
-		//if(doubleSubmitCheck()) return;
+		
+		if (doubleSubmitFlag){
+			mcxDialog.alert("다운로드 중입니다.");
+			return false;
+		}
+		
+		doubleSubmitFlag = true;
 		let cpnId = obj;
-		gagajf.ajaxJsonSubmit('/mypage/quick/coupon/download', JSON.stringify({cpnId: cpnId}), fnQuickCouponCallBack, true);
+		gagajf.ajaxJsonSubmit('/mypage/quick/coupon/download', JSON.stringify({cpnId: cpnId}), fnQuickCouponCallBack);
 	}
 
 	// 쿠폰다운로드 콜백
 	var fnQuickCouponCallBack = function(result){
+		doubleSubmitFlag = false;
 		if (result.status == "200"){
 			$.each(result.couponList, function (idx, item) {
 				if (Number(item.custPubLimitQty) > 0){

+ 1 - 1
src/main/webapp/WEB-INF/views/web/goods/GoodsDetailFormWeb.html

@@ -20,7 +20,7 @@
 <th:block layout:fragment="content">
 <form id="nPayForm" name="nPayForm"></form>
 <div id="container" class="container pd" th:with="imgGoodsUrl=${@environment.getProperty('upload.goods.view')}, uxImgUrl=${@environment.getProperty('domain.uximage')}, imgUrl=${@environment.getProperty('upload.image.view')}">
-<script src="https://developers.kakao.com/sdk/js/kakao.min.js"></script>
+<script src="//developers.kakao.com/sdk/js/kakao.min.js"></script>
 	<!-- <th:block th:include="~{web/goods/GoodsIncludeFormWeb :: goodsNaviForm}"></th:block> -->
 	
 	<div class="wrap">

+ 1 - 1
src/main/webapp/WEB-INF/views/web/mypage/MypageCreCancelDetailFormWeb.html

@@ -147,7 +147,7 @@
 											</div>
 											<div class="include_item">
 												<dt>할인 금액 차감</dt>
-												<dd><em th:text="${#numbers.formatInteger((oneData.rfCpn1Amt + oneData.rfTmtb1Amt + oneData.rfTmtb2Amt + oneData.rfGoodsCpnAmt + oneData.rfCartCpnAmt + oneData.rfPrePntAmt) * -1, 1, 'COMMA')}"></em>원</dd>
+												<dd><em th:text="${#numbers.formatInteger((oneData.rfCpn1Amt + oneData.rfTmtb1Amt + oneData.rfTmtb2Amt + oneData.rfGoodsCpnAmt + oneData.rfCartCpnAmt + oneData.rfDelvCpnAmt + oneData.rfPrePntAmt) * -1, 1, 'COMMA')}"></em>원</dd>
 											</div>
 										</dl>
 									</td>

+ 1 - 1
src/main/webapp/WEB-INF/views/web/mypage/MypageCreReturnDetailFormWeb.html

@@ -211,7 +211,7 @@
 											</div>
 											<div class="include_item">
 												<dt>할인 금액 차감</dt>
-												<dd><em th:text="${#numbers.formatInteger(-(oneData.rfCpn1Amt + oneData.rfTmtb1Amt + oneData.rfTmtb2Amt + oneData.rfGoodsCpnAmt + oneData.rfCartCpnAmt + oneData.rfPrePntAmt), 1, 'COMMA')}"></em>원</dd>
+												<dd><em th:text="${#numbers.formatInteger(-(oneData.rfCpn1Amt + oneData.rfTmtb1Amt + oneData.rfTmtb2Amt + oneData.rfGoodsCpnAmt + oneData.rfCartCpnAmt + oneData.rfDelvCpnAmt + oneData.rfPrePntAmt), 1, 'COMMA')}"></em>원</dd>
 											</div>
 										</dl>
 									</td>

+ 1 - 1
src/main/webapp/WEB-INF/views/web/mypage/NoMemberCreCancelDetailFormWeb.html

@@ -144,7 +144,7 @@
 											</div>
 											<div class="include_item">
 												<dt>할인 금액 차감</dt>
-												<dd><em th:text="${#numbers.formatInteger((oneData.rfCpn1Amt + oneData.rfTmtb1Amt + oneData.rfTmtb2Amt + oneData.rfGoodsCpnAmt + oneData.rfCartCpnAmt + oneData.rfPrePntAmt) * -1, 1, 'COMMA')}"></em>원</dd>
+												<dd><em th:text="${#numbers.formatInteger((oneData.rfCpn1Amt + oneData.rfTmtb1Amt + oneData.rfTmtb2Amt + oneData.rfGoodsCpnAmt + oneData.rfCartCpnAmt + oneData.rfDelvCpnAmt + oneData.rfPrePntAmt) * -1, 1, 'COMMA')}"></em>원</dd>
 											</div>
 										</dl>
 									</td>

+ 1 - 1
src/main/webapp/WEB-INF/views/web/mypage/NoMemberCreReturnDetailFormWeb.html

@@ -209,7 +209,7 @@
 											</div>
 											<div class="include_item">
 												<dt>할인 금액 차감</dt>
-												<dd><em th:text="${#numbers.formatInteger(-(oneData.rfCpn1Amt + oneData.rfTmtb1Amt + oneData.rfTmtb2Amt + oneData.rfGoodsCpnAmt + oneData.rfCartCpnAmt + oneData.rfPrePntAmt), 1, 'COMMA')}"></em>원</dd>
+												<dd><em th:text="${#numbers.formatInteger(-(oneData.rfCpn1Amt + oneData.rfTmtb1Amt + oneData.rfTmtb2Amt + oneData.rfGoodsCpnAmt + oneData.rfCartCpnAmt + oneData.rfDelvCpnAmt + oneData.rfPrePntAmt), 1, 'COMMA')}"></em>원</dd>
 											</div>
 										</dl>
 									</td>

+ 4 - 0
src/main/webapp/WEB-INF/views/web/planning/PlanningDetailFormWeb.html

@@ -1157,6 +1157,10 @@ $(document).ready( function() {
 		}
 	});
 	
+	$('.cmt_ans').bind('input paste', function() {
+		  $(this).trigger('keyup');
+	});
+	
 
 });
 </script>

+ 1 - 1
src/main/webapp/WEB-INF/views/web/planning/PlanningMainFormWeb.html

@@ -133,7 +133,7 @@
 						$.each(result, function(idx, item) {
 						    tag += '  <div class="exhi_item">\n';
 						    tag += '       <div class="exhi_item_img">\n';
-						    tag += '           <a href= "javascript:void(0);" onclick="cfnGoToPlanDetail(\'' + item.planSq + '\',\'' + [[${brandGroupNo}]] + '\')">\n';
+						    tag += '           <a href= "javascript:void(0);" onclick="cfnGoToPlanDetail(\'' + item.planSq + '\')">\n';
                             if (item.newYn == 'Y') {
 						    	tag += '				<div class="shape ranker"><span>NEW</span></div>\n';
 						    }

+ 72 - 1
src/main/webapp/ux/plugins/gaga/gaga.paging.js

@@ -66,7 +66,7 @@ var gagaPaging = {
 	},
 	
 	/**
-	 * Create a pagination
+	 * Create a pagination 
 	 * @param pageable - page 정보
 	 */
 	createPagination : function(pageable) {
@@ -82,6 +82,24 @@ var gagaPaging = {
 		gagaPaging.bind();
 	},
 	
+	/**
+	 * Create a pagination (모바일용)
+	 * @param pageable - page 정보
+	 */
+	createSinglePagination : function(pageable) {
+		// Generate pagination
+		var html;
+		if (gagajf.isNull(pageable.generatedSinglePagination)) {
+			html = gagaPaging.generatedSinglePagination(pageable);
+		} else {
+			html = pageable.generatedSinglePagination;
+		}
+		
+		$('#' + oPaginationId).html(html);
+		// Bind event
+		gagaPaging.bind();
+	},
+	
 	/**
 	 * Bind the pagination's event
 	 * Paging 처리 시 다음과 같이 지정
@@ -221,6 +239,59 @@ var gagaPaging = {
 
 		return pageTag;
 	}
+	
+	,generatedSinglePagination : function (pageable) {
+		let pageNo = pageable.pageNo;
+		let pageSize = pageable.pageSize;
+		let pageUnit = pageable.pageUnit;
+		let totalCount = pageable.totalCount;
+		let firstCount = (getPageGroup() - 1) * pageable.pageUnit + 1;
+		let loopCount = firstCount + pageUnit;
+		
+		
+		if (loopCount > getTotalPage()) {
+			loopCount = Number(getTotalPage() + 1);
+		}
+		
+		let pageTag = '';
+		if (!(firstCount == 1 && loopCount == 1)) {
+			
+			if (getPageGroup() == 1) {
+				if (pageNo == 1) {
+					pageTag += '<li class="prev disabled"><a href="#"><span class="sr-only">이전</span></a></li>\n';
+				} else {
+					pageTag += '<li class="prev"><a href="#pageNo='+ (pageNo-1) +'"><span class="sr-only">이전</span></a></li>\n';
+				}
+			} else {
+				pageTag += '<li class="prev"><a href="#pageNo='+ (pageNo-1) +'"><span class="sr-only">이전</span></a></li>\n';
+			}
+			
+			pageTag += '<li class="active">' + pageNo + '</li>\n';
+			pageTag += '<li>/</li>\n';
+			pageTag += '<li>' + getTotalPage() + '</li>\n';
+			
+			if(pageNo == Number(getTotalPage())) {
+				pageTag += '<li class="next disabled"><a href="#pageNo=' + getTotalPage() + '" alt="다음페이지"><span class="sr-only">다음</span></a></li>\n';
+			}else {
+				pageTag += '<li class="next"><a href="#pageNo='+ (pageNo+1) +'" alt="다음페이지"><span class="sr-only">다음</span></a></li>\n';
+			}
+			
+		}
+
+		function getPageGroup() {
+			return parseInt((pageNo-1) / pageUnit + 1 );
+		}
+
+		function getTotalPage() {
+			let totalPage = parseInt(totalCount / pageSize);
+			if (totalCount % pageSize > 0) {
+				totalPage++;
+			}
+			return totalPage;
+		}
+
+		return pageTag;
+	}
 
 }
 

+ 0 - 220
src/main/webapp/ux/plugins/gaga/gaga.singlePaging.js

@@ -1,220 +0,0 @@
-/*
- * Pagination Common Java Script written by gagamel.
- *
- * Copyright (c) 2019 gagamel
- * Dual licensed under GPL (GPL-LICENSE.txt) licenses.
- *
- * $Date: 2019-07-21 $
- * 
- * 사용 예)
- * 		// HTML 태그는 다음과 같은 구조로 되어 있어야 한다.
- * 		<div class="tablePaging" id="pagination">
- * 			<li class="prev"><a href="#"><span class="sr-only">이전</span></a></li>
- *			<li class="active">01</li>
- *			<li>/</li>
- *			<li>10</li>
- *			<li class="next"><a href="#"><span class="sr-only">다음</span></a></li>
- * 			...
- * 		</div>
- * 
- * 		// Import할 자바스크립트 파일
- * 		<script type="text/javascript" src="/ux/plugins/gaga/gaga.singlePaging"></script>
- * 
- * 		<script type="text/javascript">
- * 			// Initialize a pagination
- * 			gagaPaging.init('searchForm', fnSearchGoodsQnaCallback, 'pagination');
- * 			
- *			// Load data
- * 			gagaPaging.load($('#searchForm input[name=pageNo]').val(), $('#searchForm select[name=pageSize]').val());
- * 
- * 			var fnSearchGoodsQnaCallback = function(result) {
- * 				// Handle Data
- * 				...
- * 				
- * 				// Create pagination
- * 				gagaPaging.createPagination(result.goodsAsk.pageable);
- * 			}
- *		</script>
- */
-
-var gagaPaging = {
-
-	oFormId : '',
-	oCallbackFn : '',
-	oPaginationId : '',
-	nPageSize : 50,
-	nPageUnit : 10,
-	
-	/**
-	 * Initialize a pagination
-	 * @param formId - Form ID. 검색조건 폼 ID
-	 * @param callbackFn - Callback function. 데이터 조회 후 처리하는 콜백함수
-	 * @param paginationId - Pagination ID. 페이징을 구성하는 div 태그 ID
-	 * @param pageSize - 조회할 데이터 row수. 옵션
-	 * @param pageUnit - 그룹핑 페이지 단위. 옵션
-	 * 사용 예)
-	 * 		// Initialize a pagination
-	 * 		gagaPaging.init('searchForm', fnSearchGoodsQnaCallback, 'pagination');
-	 * 		or
-	 * 		gagaPaging.init('searchForm', fnSearchGoodsQnaCallback, 'pagination', 50);
-	 * 		or
-	 * 		gagaPaging.init('searchForm', fnSearchGoodsQnaCallback, 'pagination', 50, 10);
-	 */
-	init : function(formId, callbackFn, paginationId, pageSize, pageUnit) {
-		oFormId = formId;
-		oCallbackFn = callbackFn;
-		oPaginationId = paginationId;
-		if (typeof(pageSize) != 'undefined') nPageSize = pageSize;
-		if (typeof(pageUnit) != 'undefined') nPageUnit = pageUnit;
-	},
-	
-	/**
-	 * Create a pagination
-	 * @param pageable - page 정보
-	 */
-	createPagination : function(pageable) {
-		// Generate pagination
-		var html;
-		if (gagajf.isNull(pageable.generatedPagination)) {
-			html = gagaPaging.generatedPagination(pageable);
-		} else {
-			html = pageable.generatedPagination;
-		}
-		$('#' + oPaginationId).html(html);
-		// Bind event
-		gagaPaging.bind();
-	},
-	
-	/**
-	 * Bind the pagination's event
-	 * Paging 처리 시 다음과 같이 지정
-	 * 사용 예)
-	 * 		// HTML 태그는 다음과 같은 구조로 되어 있어야 한다.
-	 * 		<div class="tablePaging" id="pagination">
-	 * 			<a href="#pageNo=1">1</a>
-	 * 			<a href="#pageNo=2">2</a>
-	 * 			...
-	 * 		</div>
-	 */
-	bind : function() {
-		$('#' + oPaginationId + ' a').on('click', function(e) {
-			var params = $(this).attr('href');
-			params = params.replace(/^.*#/, '');
-			
-			var pageNo = 1;
-			
-			if (!gagajf.isNull(params)) {
-				pageNo = params.split("=")[1];
-			}
-			
-			gagaPaging.load(pageNo);
-			
-			return false;
-		});
-	},
-	
-	/**
-	 * Load data and call a callback function
-	 * JSON 형태로 보내고 받는 후 콜백함수에서 데이터를 처리한다.
-	 * @param pageNo - 조회할 페이지번호
-	 */
-	load : function(pageNo) {
-		$('#' + oFormId + ' input[name=pageNo]').val(pageNo);
-		$('#' + oFormId + ' input[name=pageSize]').val(nPageSize);
-		
-		// comma(,) 제거
-		gagajf.removeCommaAtNumberFormattedInput('#' + oFormId);
-		var jsonData = JSON.stringify($('#' + oFormId).serializeObject());
-		
-		$.ajax({
-			type : 'POST',
-			url : $('#' + oFormId).prop('action'),
-			data : jsonData,
-			dataType : 'JSON',
-			beforeSend : function(xhr, settings) {
-				// dataType: "json"일 때
-				xhr.setRequestHeader('Accept', 'application/json');
-				xhr.setRequestHeader('Content-Type', 'application/json');
-				
-				// Button disabled & progressBar creation
-				//gagajf.showProgressbar(true);
-			},
-			complete : function() {
-				// Button abled & progressBar remove
-				//gagajf.showProgressbar(false);
-			},
-			success : function(result) {
-				try {
-					if (!gagajf.isNull(result.error.message)) {
-						mcxDialog.alert(result.error.message);
-						return;
-					}
-				} catch(e) {
-					// Do nothing
-				}
-				
-				if (typeof(oCallbackFn) == 'function') {
-					oCallbackFn.call(this, result);
-				}
-			},
-			error : function(result) {
-				mcxDialog.alert('오류로 인해 처리되지 않았습니다.');
-			}
-		});
-	},
-	
-	generatedPagination : function (pageable) {
-		let pageNo = pageable.pageNo;
-		let pageSize = pageable.pageSize;
-		let pageUnit = pageable.pageUnit;
-		let totalCount = pageable.totalCount;
-		let firstCount = (getPageGroup() - 1) * pageable.pageUnit + 1;
-		let loopCount = firstCount + pageUnit;
-		
-		
-		if (loopCount > getTotalPage()) {
-			loopCount = Number(getTotalPage() + 1);
-		}
-		
-		let pageTag = '';
-		if (!(firstCount == 1 && loopCount == 1)) {
-			
-			if (getPageGroup() == 1) {
-				if (pageNo == 1) {
-					pageTag += '<li class="prev disabled"><a href="#"><span class="sr-only">이전</span></a></li>\n';
-				} else {
-					pageTag += '<li class="prev"><a href="#pageNo='+ (pageNo-1) +'"><span class="sr-only">이전</span></a></li>\n';
-				}
-			} else {
-				pageTag += '<li class="prev"><a href="#pageNo='+ (pageNo-1) +'"><span class="sr-only">이전</span></a></li>\n';
-			}
-			
-			pageTag += '<li class="active">' + pageNo + '</li>\n';
-			pageTag += '<li>/</li>\n';
-			pageTag += '<li>' + getTotalPage() + '</li>\n';
-			
-			if(pageNo == Number(getTotalPage())) {
-				pageTag += '<li class="next disabled"><a href="#pageNo=' + getTotalPage() + '" alt="다음페이지"><span class="sr-only">다음</span></a></li>\n';
-			}else {
-				pageTag += '<li class="next"><a href="#pageNo='+ (pageNo+1) +'" alt="다음페이지"><span class="sr-only">다음</span></a></li>\n';
-			}
-			
-		}
-
-		function getPageGroup() {
-			return parseInt((pageNo-1) / pageUnit + 1 );
-		}
-
-		function getTotalPage() {
-			let totalPage = parseInt(totalCount / pageSize);
-			if (totalCount % pageSize > 0) {
-				totalPage++;
-			}
-			return totalPage;
-		}
-
-		return pageTag;
-	}
-
-}
-

+ 29 - 0
src/main/webapp/ux/style24_link.js

@@ -1438,6 +1438,35 @@ function cfnSendToKakao(linkUrl, linkNm, linkImg) {
 	})
 }
 
+function cfnSendToKakaoMob(linkUrl, linkNm, linkImg) {
+	// Kakao Key
+	if ( kakaoInitCnt == 0 ) {
+		Kakao.init(kakaoDomainKey);
+		kakaoInitCnt++;
+	}
+	Kakao.Link.createDefaultButton({
+		container: '#kakao-link-btn',
+		objectType: 'feed',
+		content: {
+			title: "[STYLE24]\n" + linkNm,
+			/* description: '설명', */
+			imageUrl: linkImg,
+			link: {
+				mobileWebUrl: linkUrl,
+				webUrl: linkUrl
+			}
+		},
+		buttons: [
+			{
+				title: 'style24.com',
+				link: {
+					mobileWebUrl: linkUrl,
+					webUrl: linkUrl
+				}
+			}
+		]
+	});
+}
 
 /**
  * @type   : function