diff --git a/adm/admin.js b/adm/admin.js index f6c0563c1..7ce8677f4 100644 --- a/adm/admin.js +++ b/adm/admin.js @@ -1,11 +1,115 @@ -function check_all(f) -{ - var chk = document.getElementsByName("chk[]"); +/** 공통 UI 모듈 */ +window.CommonUI = { + bindTabs(tabSelector, contentSelector, options = {}) { + const tabs = document.querySelectorAll(tabSelector); + const contents = document.querySelectorAll(contentSelector); - for (i=0; i { + tab.addEventListener('click', () => { + const tabName = tab.dataset.tab; + const target = document.getElementById(`tab-${tabName}`); + + tabs.forEach(t => t.classList.remove('active')); + tab.classList.add('active'); + + contents.forEach(c => c.classList.add('is-hidden')); + + if (target) target.classList.remove('is-hidden'); + + options.onChange?.(tabName, target); + }); + }); + } +}; + +function setHtml(el, markup) { + if (!el) return; + if (markup == null || markup === '') { + el.textContent = ''; + return; + } + const range = document.createRange(); + range.selectNodeContents(el); + el.replaceChildren(range.createContextualFragment(markup)); } +/** 팝업 관리 모듈 */ +window.PopupManager = { + open(id, options = {}) { + const el = document.getElementById(id); + if (el) { + el.classList.remove('is-hidden'); + this.bindOutsideClickClose(id); + + if (!options.disableOutsideClose) { + this.bindOutsideClickClose(id); + } else { + this.unbindOutsideClickClose(id); + } + } + }, + + close(id) { + const el = document.getElementById(id); + if (el) el.classList.add('is-hidden'); + }, + + toggle(id) { + const el = document.getElementById(id); + if (el) el.classList.toggle('is-hidden'); + }, + + bindOutsideClickClose(id) { + const el = document.getElementById(id); + if (!el) return; + el.onclick = () => this.close(id); + }, + + unbindOutsideClickClose(id) { + const el = document.getElementById(id); + if (!el) return; + el.onclick = null; + }, + + /** + * 팝업 콘텐츠 렌더링 (타이틀, 바디, 푸터 구성) + * @param {string} title - 팝업 제목 + * @param {string} body - 팝업 본문 HTML + * @param {string} [footer] - 푸터 HTML + * @param {object} [options] - 팝업 열기 옵션 + */ + render(title, body, footer = '', options = {}) { + const titleEl = document.getElementById('popupTitle'); + const bodyEl = document.getElementById('popupBody'); + const footerEl = document.getElementById('popupFooter'); + + if (titleEl) titleEl.textContent = title; + if (bodyEl) setHtml(bodyEl, body); + if (footerEl) setHtml(footerEl, footer); + + this.open('popupOverlay', options); + } +}; + +/** 형식 체크 */ +function check_all(target) { + const chkboxes = document.getElementsByName("chk[]"); + let chkall; + + if (target && target.tagName === "FORM") { + chkall = target.querySelector('input[name="chkall"]'); + } else if (target && target.type === "checkbox") { + chkall = target; + } + + if (!chkall) return; + + for (const checkbox of chkboxes) { + checkbox.checked = chkall.checked; + } +} + + function btn_check(f, act) { if (act == "update") // 선택수정 diff --git a/adm/admin.menu100.php b/adm/admin.menu100.php index 3cd9bfb22..aa153c4fd 100644 --- a/adm/admin.menu100.php +++ b/adm/admin.menu100.php @@ -6,11 +6,13 @@ $menu['menu100'] = array( array('100280', '테마설정', G5_ADMIN_URL . '/theme.php', 'cf_theme', 1), array('100290', '메뉴설정', G5_ADMIN_URL . '/menu_list.php', 'cf_menu', 1), array('100300', '메일 테스트', G5_ADMIN_URL . '/sendmail_test.php', 'cf_mailtest'), + array('100320', '알림톡프리셋관리', G5_ADMIN_URL . '/alimtalkpreset.php', 'alimtalk_preset'), array('100310', '팝업레이어관리', G5_ADMIN_URL . '/newwinlist.php', 'scf_poplayer'), array('100800', '세션파일 일괄삭제', G5_ADMIN_URL . '/session_file_delete.php', 'cf_session', 1), array('100900', '캐시파일 일괄삭제', G5_ADMIN_URL . '/cache_file_delete.php', 'cf_cache', 1), array('100910', '캡챠파일 일괄삭제', G5_ADMIN_URL . '/captcha_file_delete.php', 'cf_captcha', 1), array('100920', '썸네일파일 일괄삭제', G5_ADMIN_URL . '/thumbnail_file_delete.php', 'cf_thumbnail', 1), + array('100930', '회원관리파일 일괄삭제', G5_ADMIN_URL . '/member_list_file_delete.php', 'cf_memberlist', 1), array('100500', 'phpinfo()', G5_ADMIN_URL . '/phpinfo.php', 'cf_phpinfo') ); diff --git a/adm/admin.menu200.php b/adm/admin.menu200.php index 617d25638..1f3191072 100644 --- a/adm/admin.menu200.php +++ b/adm/admin.menu200.php @@ -2,6 +2,7 @@ $menu['menu200'] = array( array('200000', '회원관리', G5_ADMIN_URL . '/member_list.php', 'member'), array('200100', '회원관리', G5_ADMIN_URL . '/member_list.php', 'mb_list'), + array('200400', '회원관리파일', G5_ADMIN_URL . '/member_list_exel.php', 'mb_list'), array('200300', '회원메일발송', G5_ADMIN_URL . '/mail_list.php', 'mb_mail'), array('200800', '접속자집계', G5_ADMIN_URL . '/visit_list.php', 'mb_visit', 1), array('200810', '접속자검색', G5_ADMIN_URL . '/visit_search.php', 'mb_search', 1), diff --git a/adm/admin.menu500.shop_2of2.php b/adm/admin.menu500.shop_2of2.php index 95068e48a..863dd9cf6 100644 --- a/adm/admin.menu500.shop_2of2.php +++ b/adm/admin.menu500.shop_2of2.php @@ -8,7 +8,7 @@ $menu['menu500'] = array( array('500110', '매출현황', G5_ADMIN_URL . '/shop_admin/sale1.php', 'sst_order_stats'), array('500100', '상품판매순위', G5_ADMIN_URL . '/shop_admin/itemsellrank.php', 'sst_rank'), array('500120', '주문내역출력', G5_ADMIN_URL . '/shop_admin/orderprint.php', 'sst_print_order', 1), - array('500400', '재입고SMS알림', G5_ADMIN_URL . '/shop_admin/itemstocksms.php', 'sst_stock_sms', 1), + array('500400', '재입고알림', G5_ADMIN_URL . '/shop_admin/itemstocksms.php', 'sst_stock_sms', 1), array('500300', '이벤트관리', G5_ADMIN_URL . '/shop_admin/itemevent.php', 'scf_event'), array('500310', '이벤트일괄처리', G5_ADMIN_URL . '/shop_admin/itemeventlist.php', 'scf_event_mng'), array('500500', '배너관리', G5_ADMIN_URL . '/shop_admin/bannerlist.php', 'scf_banner', 1), diff --git a/adm/admin.tail.php b/adm/admin.tail.php index 5c95c1288..68b6dae12 100644 --- a/adm/admin.tail.php +++ b/adm/admin.tail.php @@ -14,7 +14,6 @@ $print_version = ($is_admin == 'super') ? 'Version ' . G5_GNUBOARD_VER : ''; 자바스크립트를 사용하지 않음으로 설정하신 경우는 수정이나 삭제시 별도의 경고창이 나오지 않으므로 이점 주의하시기 바랍니다.

- - + +
+
', 1); // 카카오톡5 솔루션 js 추가 +?> + + +

팝빌 카카오톡 발송 서비스를 사용할 수 없습니다.

+
+

팝빌 서비스 설정이 되어 있지 않아, 프리셋 서비스를 사용할 수 없습니다. +
팝빌 설정은 환경설정 > 기본환경설정 > 기본알림환경 에서 확인 및 설정해 주셔야 사용하실 수 있습니다.


+

* 설정 오류 내용 :

+
+ +
+

템플릿관리를 통해 신청 후 승인된 템플릿만 사용가능합니다.
템플릿 내용 작성 시, 동일한 [구분]에 속한 변수만 사용 가능하며, 아래에 제공된 변수 외의 항목을 입력할 경우 적용되지 않습니다.


+

아래 표의 #{변수명}만 템플릿 내용에 사용할 수 있으며, 실제 발송 시 값으로 자동 치환됩니다.
※ 표에 없는 변수는 치환되지 않습니다.

+

[사용 가능한 변수 리스트]

+
+ + + + + + + + + + + $var) { + ?> + + + + + + + + + +
제공 변수 목록
구분변수명설명
+
+
+ +

아래 표의 #{버튼링크명}은 버튼에 사용할 수 있으며, 실제 발송 시 지정된 URL로 자동 치환됩니다.
※ 표에 없는 버튼 링크 변수는 치환되지 않습니다. 등록 시 [https://#{버튼링크명}]으로 작성하시면 됩니다.

+ + +
+ +
+

* 관리자 휴대폰번호 : 관리자로 설정된 []휴대폰 번호를 사용합니다.

+

* 그룹 관리자 휴대폰번호 : 그룹 관리자로 지정된 아이디의 휴대폰 번호를 사용합니다.

+

* 게시판 관리자 휴대폰번호 : 게시판 관리자로 지정된 아이디의 휴대폰 번호를 사용합니다.

+
+ + +
+

+ 환경설정 > 기본환경설정 > 회원가입'; + + if (!empty($config['cf_use_hp'])) { + // 보이기만 설정된 경우 + echo '[휴대폰번호 입력][보이기]로 설정되어 있습니다. 일부 회원은 휴대폰 번호를 입력하지 않아 발송이 제한될 수 있습니다.' + . $link . '에서 [필수입력]으로 설정하는 것을 권장합니다.'; + } else { + // 둘 다 설정 안 된 경우 + echo '[휴대폰번호 입력][보이기] 또는 [필수입력]으로 설정되어 있지 않습니다. 현재 상태에서는 알림톡 발송이 불가능합니다.' + . $link . '에서 반드시 [보이기][필수입력] 중 하나 이상으로 설정해야 합니다.'; + } + ?> +

+
+ + +
+ + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + '; + ?> + +
알림톡 프리셋 목록
사용여부구분발송시점대상템플릿 명미리보기버튼정보문자대체발송
+ + + + + + +
+
+ +
+ +
+ + $button) { + echo '[' . $button->n . ']
'; + if ($button->t == 'DS') { // 배송조회 버튼 + echo '· 카카오톡검색 링크 버튼 자동생성
'; + }else{ + echo ($button->t == 'AL' ? '· iOS링크: ' : ($button->t == 'WL' ? '· Mobile링크: ' : '· 링크: ')) . $button->u1 . + ($button->u2 ? '
' . ($button->t == 'AL' ? '· Android링크: ' : ($button->t == 'WL' ? '· PC링크: ' : '· 링크2: ')) . $button->u2 : '') . + ($button->tg ? '
· 아웃링크: ' . $button->tg : '') . '
'; + + } + } ?> + +
+ +
등록된 프리셋이 없습니다.
+
+
+ + + +
+ + + \ No newline at end of file diff --git a/adm/alimtalkpresetupdate.php b/adm/alimtalkpresetupdate.php new file mode 100644 index 000000000..429d023c0 --- /dev/null +++ b/adm/alimtalkpresetupdate.php @@ -0,0 +1,37 @@ +'', 'bo_device'=>'', @@ -702,6 +707,19 @@ $pg_anchor = '