SettingFormMob.html 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258
  1. <!DOCTYPE html>
  2. <html lang="ko"
  3. xmlns:th="http://www.thymeleaf.org"
  4. xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
  5. layout:decorator="mob/common/layout/AppLayoutMob">
  6. <!--
  7. *******************************************************************************
  8. * @source : SettingFormMob.html
  9. * @desc : 설정 Page
  10. *============================================================================
  11. * STYLE24
  12. * Copyright(C) 2021 TSIT, All rights reserved.
  13. *============================================================================
  14. * VER DATE AUTHOR DESCRIPTION
  15. * === =========== ========== =============================================
  16. * 1.0 2021.05.20 jsshin 최초 작성
  17. *******************************************************************************
  18. -->
  19. <body>
  20. <th:block layout:fragment="content">
  21. <main class="container app-only">
  22. <!-- APP Setting -->
  23. <!-- ★ 컨텐츠 시작 -->
  24. <section class="sett">
  25. <form action="" class="form_wrap">
  26. <div class="inner">
  27. <div class="form_field">
  28. <dl>
  29. <dd>
  30. <div class="setItems">
  31. <span class="set_opt">정보성 PUSH 알림</span>
  32. <div class="switch">
  33. <input id="btnPushSetting" type="checkbox" th:checked="${appAgreeYn == 'Y'}"/>
  34. <label for="btnPushSetting"></label>
  35. </div>
  36. </div>
  37. <p>재입고 알림, 주문, 배송정보 등 내 상품 정보 및 공지를 안내 받으실 수 있습니다.</p>
  38. <p class="pot">기기 알림에 관한 설정은 '휴대폰 설정>알림>스타일24'에서 변경할 수 있습니다.</p>
  39. </dd>
  40. <dd>
  41. <div class="setItems">
  42. <span class="set_opt">마케팅 PUSH 수신동의</span>
  43. <div class="switch">
  44. <input id="btnMkSetting" type="checkbox" th:checked="${appMkAgreeYn == 'Y'}" />
  45. <label for="btnMkSetting"></label>
  46. </div>
  47. </div>
  48. <p>PUSH 알림 수신에 동의하시면 이벤트, 쿠폰, 할인 안내 등 다양한 소식을 받으실 수 있습니다.</p>
  49. </dd>
  50. <dd>
  51. <div class="setItems">
  52. <span class="set_opt">알림함</span>
  53. <div class="alink">
  54. <a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_APP_NOTICE);"></a>
  55. </div>
  56. </div>
  57. </dd>
  58. </dl>
  59. </div>
  60. </div>
  61. <div class="inner">
  62. <div class="form_field">
  63. <dl>
  64. <dd>
  65. <div class="setItems">
  66. <span class="set_opt">현재버전 <em th:text="${appVersion}">1.0</em></span>
  67. <span class="alink">
  68. <th:block th:if="${appVersion != regAppVersion}">
  69. <th:block th:if="${osType == 'A'}">
  70. <input id="chk-2" type="button">
  71. <label for="chk-2">
  72. <span></span>
  73. </label>
  74. </th:block>
  75. <th:block th:if="${osType == 'I'}">
  76. <input id="chk-3" type="button">
  77. <label for="chk-3">
  78. <span></span>
  79. </label>
  80. </th:block>
  81. </th:block>
  82. <th:block th:unless="${appVersion != regAppVersion}">
  83. <input id="chk-4" type="button" disabled>
  84. <label for="chk-4">
  85. <span></span>
  86. </label>
  87. </th:block>
  88. </span>
  89. </div>
  90. </dd>
  91. </dl>
  92. </div>
  93. </div>
  94. </form>
  95. </section>
  96. <!-- ★ 컨텐츠 종료 -->
  97. </main>
  98. <script th:inline="javascript">
  99. const isLogin = [[${isLogin}]];
  100. let appAgreeYn = [[${appAgreeYn}]];
  101. let appMkAgreeYn = [[${appMkAgreeYn}]];
  102. $(document).ready(function(){
  103. $('#htopTitle').text('설정');
  104. // 앱으로 푸시 상태값 조회
  105. if (_isApp === 'true') {
  106. fnIsEnable();
  107. }
  108. });
  109. var fnIsEnable = function () {
  110. if (_osType === 'A') {
  111. window.style24.isPushEnable(); // 정보성(푸시수신 API) settingsSwitchPush
  112. window.style24.isAdEnable(); // 마케팅성(광고푸시 API) settingsSwitchAdvertise
  113. } else if (_osType === 'I') {
  114. window.webkit.messageHandlers.isPushEnable.postMessage({'dummy':'dummy'}); // 정보성(푸시수신 API) settingsSwitchPush
  115. window.webkit.messageHandlers.isAdEnable.postMessage({'dummy':'dummy'}); // 마케팅성(광고푸시 API) settingsSwitchAdvertise
  116. }
  117. }
  118. // 앱에서 호출되는 함수(앱푸시)
  119. var settingsSwitchPush = function(onOff) {
  120. if (onOff === 'ON') {
  121. $('#btnPushSetting').prop('checked', true);
  122. } else if (onOff === 'OFF') {
  123. $('#btnPushSetting').prop('checked', false);
  124. }
  125. if (isLogin) {
  126. // 데이터 상 앱푸시 여부(Y/N) 이랑
  127. // 핑거푸시에 등록된 푸시수신 여부(ON/OFF)
  128. if (appAgreeYn === 'Y' && onOff === 'OFF') {
  129. fnAppPushAgreeUpdate('N');
  130. } else if (appAgreeYn === 'N' && onOff === 'ON') {
  131. fnAppPushAgreeUpdate('Y');
  132. }
  133. }
  134. }
  135. // 앱에서 호출되는 함수(마케팅동의)
  136. var settingsSwitchAdvertise = function (onOff) {
  137. if (onOff === 'ON') {
  138. $('#btnMkSetting').prop('checked', true);
  139. } else if (onOff === 'OFF') {
  140. $('#btnMkSetting').prop('checked', false);
  141. }
  142. if (isLogin) {
  143. // 데이터 상 마케팅동의 여부(Y/N) 이랑
  144. // 핑거푸시에 등록된 푸시수신 여부(ON/OFF)
  145. if (appMkAgreeYn === 'Y' && onOff === 'OFF') {
  146. fnAppMkAgreeUpdate('N');
  147. } else if (appMkAgreeYn === 'N' && onOff === 'ON') {
  148. fnAppMkAgreeUpdate('Y');
  149. }
  150. }
  151. }
  152. $('#btnPushSetting').on('click', function() {
  153. let appAgreeYn;
  154. if (_isApp === 'true') {
  155. if ($(this).is(":checked")) {
  156. fnSetAppPush('ON');
  157. appAgreeYn = 'Y';
  158. } else {
  159. // 정보성 푸시가 상위 개념이라 마케팅도 같이 OFF가 되어여함
  160. fnSetAppPush('OFF');
  161. fnSetAdPush('OFF');
  162. appAgreeYn = 'N';
  163. $('#btnMkSetting').prop('checked', false);
  164. }
  165. if (isLogin) {
  166. if (appAgreeYn === 'N') { // 마케팅도 N 처리
  167. fnUpdatePush('N', 'N');
  168. } else {
  169. fnAppPushAgreeUpdate('Y');
  170. }
  171. }
  172. }
  173. });
  174. $('#btnMkSetting').on('click', function() {
  175. let mkAgreeYn;
  176. if (_isApp === 'true') {
  177. if ($(this).is(":checked")) {
  178. fnSetAdPush('ON');
  179. mkAgreeYn = 'Y';
  180. } else {
  181. fnSetAdPush('OFF');
  182. mkAgreeYn = 'N';
  183. }
  184. if (isLogin) {
  185. fnAppMkAgreeUpdate(mkAgreeYn);
  186. }
  187. }
  188. });
  189. // 정보성 푸시 On,Off 처리
  190. var fnSetAppPush = function (appPushOnOff) {
  191. if (_osType === 'A') {
  192. window.style24.pushEnable(appPushOnOff);
  193. } else if (_osType === 'I') {
  194. window.webkit.messageHandlers.pushEnable.postMessage({'status':appPushOnOff});
  195. }
  196. }
  197. // 마케팅 푸시 On,Off 처리
  198. var fnSetAdPush = function (mkPushOnOff) {
  199. if (_osType === 'A') {
  200. window.style24.adEnable(mkPushOnOff);
  201. } else if (_osType === 'I') {
  202. window.webkit.messageHandlers.adEnable.postMessage({'status':mkPushOnOff});
  203. }
  204. }
  205. // 앱푸시동의 데이터 처리
  206. var fnAppPushAgreeUpdate = function (appAgreeYn) {
  207. let params = {}
  208. params.appAgreeYn = appAgreeYn;
  209. let jsonData = JSON.stringify(params);
  210. gagajf.ajaxJsonSubmit('/app/appagree/update', jsonData);
  211. }
  212. // 마케팅동의 데이터 처리
  213. var fnAppMkAgreeUpdate = function (mkAgreeYn) {
  214. let params = {}
  215. params.mkAgreeYn = mkAgreeYn;
  216. let jsonData = JSON.stringify(params);
  217. gagajf.ajaxJsonSubmit('/app/mkagree/update', jsonData);
  218. }
  219. var fnUpdatePush = function (appAgreeYn, mkAgreeYn) {
  220. let params = {}
  221. params.appAgreeYn = appAgreeYn;
  222. params.mkAgreeYn = mkAgreeYn;
  223. let jsonData = JSON.stringify(params);
  224. gagajf.ajaxJsonSubmit('/app/push/update', jsonData);
  225. }
  226. // 안드로이드 앱
  227. $('#chk-2').on('click', function () {
  228. document.location.href='update://?link=https://play.google.com/store/apps/details?id=com.istyle24.commerce';
  229. });
  230. // 아이폰앱
  231. $('#chk-3').on('click', function () {
  232. document.location.href='update://?link=https://apps.apple.com/kr/app/id627774402?mt=8';
  233. });
  234. </script>
  235. </th:block>
  236. </body>
  237. </html>