간단 소스 편집기
허용:
css/
,
page/
· 확장자:
html/css/js
페이지 추가
새로고침
파일 목록
css
css/app.js
css/app.js
css/style.css
css/style.css
page
page/account
계정 수동 생성 ❓
page/account/account_create.html
무료 계정 ❓
page/account/free_account_list.html
무료 계정 > 상세 정보 (탭형) ❓
page/account/free_account_view_tab.html
유료 계정 ❓
page/account/paid_account_list.html
유료 계정 상세 정보 ❓
page/account/paid_account_view.html
유료 계정 > 상세 정보 (탭형) ❓
page/account/paid_account_view_tab.html
page/main
대시보드 ❓
page/main/main.html
page/ops
관리자 추가 ❓
page/ops/admin_form.html
관리자 리스트 ❓
page/ops/admin_list.html
관리자 수정 ❓
page/ops/admin_modify.html
API 로그 ❓
page/ops/api_log.html
메일발송 로그 ❓
page/ops/mail_log.html
SMS 발송 로그 ❓
page/ops/sms_log.html
page/payment
page/payment/customer_pay_log.html
page/payment/customer_pay_log.html
page/payment/customer_refund_list.html
page/payment/customer_refund_list.html
도메인 SSL 연장 로그 ❓
page/payment/domain_log.html
결제 리스트 ❓
page/payment/pay_log.html
포인트 사용 로그 ❓
page/payment/point_log.html
환불 등록 ❓
page/payment/refund_form.html
환불 리스트 ❓
page/payment/refund_list.html
세금/현금영수증 ❓
page/payment/tax_doc.html
page/payment/user_pay_log.html
page/payment/user_pay_log.html
page/payment/user_refund_log.html
page/payment/user_refund_log.html
page/product
상품 등록 ❓
page/product/product_form.html
상품 리스트 ❓
page/product/product_list.html
상품 상세 ❓
page/product/product_view.html
page/settle
계정 정산 리스트 ❓
page/settle/month_list.html
page/settle/settle_log.html
page/settle/settle_log.html
page/sidebar_menu.html
page/sidebar_menu.html
page/sidebar_menu.html
page/site
FAQ 등록 ❓
page/site/faq_form.html
FAQ ❓
page/site/faq_list.html
공지사항 등록 ❓
page/site/notice_form.html
공지사항 ❓
page/site/notice_list.html
공지사항 상세 ❓
page/site/notice_view.html
페이지 추가 ❓
page/site/page_form.html
페이지 관리 ❓
page/site/page_list.html
페이지 수정 ❓
page/site/page_modify.html
팝업창 수정 ❓
page/site/popup_form.html
팝업창 ❓
page/site/popup_list.html
page/site/popup_modify.html
page/site/popup_modify.html
1:1 문의 상세 ❓
page/site/qna_form.html
1:1 문의 ❓
page/site/qna_list.html
SEO 관리 ❓
page/site/seo.html
page/stats
page/stats/account.html
page/stats/account.html
page/stats/sales.html
page/stats/sales.html
page/stats/visit.html
page/stats/visit.html
편집
page/account/free_account_list.html
<!-- /page/account/free_account_list.html --> <!-- 상단 검색 박스 --> <style> /* 검색영역 전용: 세로 1열(상하 1레코드) + 라벨/입력 좌우 분리 */ .filter-stack { display:flex; flex-direction:column; gap:.65rem; } .filter-rowline { display:flex; gap:12px; align-items:flex-start; } .filter-rowline .filter-label { width:140px; padding-top:6px; font-weight:600; color:#374151; white-space:nowrap; } .filter-rowline .filter-input { flex:1; min-width:0; } .chk-row { display:flex; flex-wrap:wrap; gap:.55rem .9rem; } .chk-row .form-check { margin:0; } .filter-actions { display:flex; justify-content:center; margin-top:12px; } .filter-actions .btn { min-width:180px; font-weight:700; } </style> <div class="d-flex align-items-center justify-content-between mb-3"> <div> <h1 class="h4 mb-1">무료 계정 <button type="button" class="btn btn-link btn-sm p-0 ms-2 align-baseline" onclick="openPageHelp(this)" data-title="무료 계정"> ❓ </button> </h1> <div class="text-muted">무료 계정은 사용료 및 수수료 적용이 되지 않는 특수 계정입니다.</div> </div> </div> <div class="card mb-3 filter-card"> <div class="card-body"> <div class="filter-stack"> <!-- 키워드 검색 --> <div class="filter-rowline"> <div class="filter-label">키워드 검색</div> <div class="filter-input"> <div class="d-flex gap-2 flex-wrap"> <select class="form-select" style="max-width:180px;" id="kwField"> <option value="account_name">계정 타이틀</option> <option value="account_id">계정 아이디</option> <option value="email">이메일</option> <option value="domain">도메인</option> <option value="name">사용자명</option> <option value="phone">전화번호</option> </select> <input type="text" class="form-control" placeholder="검색어를 입력하세요" id="kwText" maxlength="60" style="max-width:600px;" /> </div> </div> </div> <!-- 계정 유형 --> <div class="filter-rowline"> <div class="filter-label">계정 유형</div> <div class="filter-input"> <div class="chk-row" data-group="account_type"> <div class="form-check"> <input class="form-check-input" type="checkbox" id="acct_all" checked> <label class="form-check-label" for="acct_all">전체</label> </div> <div class="form-check"> <input class="form-check-input" type="checkbox" id="acct_ops" checked> <label class="form-check-label" for="acct_ops">운영</label> </div> <div class="form-check"> <input class="form-check-input" type="checkbox" id="acct_test" checked> <label class="form-check-label" for="acct_test">테스트</label> </div> <div class="form-check"> <input class="form-check-input" type="checkbox" id="acct_demo" checked> <label class="form-check-label" for="acct_demo">데모</label> </div> </div> </div> </div> <!-- 운영 상태 --> <div class="filter-rowline"> <div class="filter-label">운영 상태</div> <div class="filter-input"> <div class="chk-row" data-group="status"> <div class="form-check"> <input class="form-check-input" type="checkbox" id="st_ok" checked> <label class="form-check-label" for="st_ok">정상</label> </div> <div class="form-check"> <input class="form-check-input" type="checkbox" id="st_exp" checked> <label class="form-check-label" for="st_exp">만료</label> </div> <div class="form-check"> <input class="form-check-input" type="checkbox" id="st_stop" checked> <label class="form-check-label" for="st_stop">정지</label> </div> <div class="form-check"> <input class="form-check-input" type="checkbox" id="st_del" checked> <label class="form-check-label" for="st_del">삭제</label> </div> </div> </div> </div> <!-- 도메인 --> <div class="filter-rowline"> <div class="filter-label">도메인</div> <div class="filter-input"> <div class="chk-row" data-group="domain"> <div class="form-check"> <input class="form-check-input" type="checkbox" id="dm_none" checked> <label class="form-check-label" for="dm_none">미적용</label> </div> <div class="form-check"> <input class="form-check-input" type="checkbox" id="dm_custom" checked> <label class="form-check-label" for="dm_custom">소유도메인</label> </div> <div class="form-check"> <input class="form-check-input" type="checkbox" id="dm_free" checked> <label class="form-check-label" for="dm_free">무료도메인</label> </div> </div> </div> </div> <!-- 언어 --> <div class="filter-rowline"> <div class="filter-label">언어</div> <div class="filter-input"> <div class="chk-row" data-group="lang"> <div class="form-check"> <input class="form-check-input" type="checkbox" id="lg_ko" checked> <label class="form-check-label" for="lg_ko">한국어</label> </div> <div class="form-check"> <input class="form-check-input" type="checkbox" id="lg_en" checked> <label class="form-check-label" for="lg_en">English</label> </div> </div> </div> </div> <!-- 기간지정 --> <div class="filter-rowline"> <div class="filter-label">기간지정</div> <div class="filter-input"> <div class="d-flex gap-2 flex-wrap"> <select class="form-select" style="max-width:180px;" id="dateType"> <option value="expire">만료일</option> <option value="created">신청일</option> </select> <input type="date" class="form-control" style="max-width:200px;" id="dateFrom" /> <div class="d-flex align-items-center text-muted">~</div> <input type="date" class="form-control" style="max-width:200px;" id="dateTo" /> * 기본값은 빈 값입니다. </div> </div> </div> <!-- 소팅 --> <div class="filter-rowline"> <div class="filter-label">소팅</div> <div class="filter-input"> <div class="d-flex gap-2 flex-wrap"> <select class="form-select" id="sortField" style="max-width:260px;"> <option value="created">신청일</option> <option value="expire">만료일</option> <option value="members">회원수</option> <!--<option value="courses">강좌수</option>0--> </select> <select class="form-select" style="max-width:180px;" id="sortDir"> <option value="asc">오름차순</option> <option value="desc" selected>내림차순</option> </select> </div> </div> </div> <!-- 버튼: 검색박스 하단 중앙 --> <div class="filter-actions"> <div class="d-flex gap-2"> <button class="btn btn-primary" type="button">검색</button> <button class="btn btn-outline-secondary" type="button">조건 초기화</button> </div> </div> </div> </div> </div> <!-- 리스트 --> <div class="card"> <div class="card-header d-flex align-items-center justify-content-between flex-wrap gap-2"> <div class="text-muted"> 검색결과 <span class="fw-semibold">230</span>건 / 총 <span class="fw-semibold">1,500</span>건 </div> <div class="d-flex align-items-center gap-2"> <div class="text-muted small">리스팅 개수</div> <select class="form-select form-select-sm" style="width:120px;"> <option value="10">10</option> <option value="20" selected>20</option> <option value="30">30</option> <option value="50">50</option> </select> </div> </div> <div class="card-body"> <div class="table-responsive"> <table class="table table-hover align-middle mb-0 table-account"> <thead> <tr class="text-muted"> <th style="width:70px;">번호</th> <th class="text-muted text-center">계정 ID</th> <th class="text-muted text-center">이메일</th> <th class="text-muted text-center">계정 타이틀</th> <th class="text-muted text-center">사용자명</th> <th class="text-muted text-center">전화번호</th> <th class="text-muted text-center">구분</th> <th class="text-muted text-center">생성일</th> <th class="text-muted text-center">만료일</th> <th class="text-muted text-center">회원수</th> <th class="text-muted text-center">도메인</th> <th class="text-muted text-center">운영상태</th> <th style="width:90px;" class="text-muted text-center">Memo</th> <th style="width:90px;" class="text-muted text-center">관리</th> <th style="width:90px;" class="text-muted text-center">로그인</th> </tr> </thead> <tbody class="text-center"> <!-- 5 rows (DESC) --> <tr> <td class="fw-semibold">5</td> <td>test5</td> <td>user05@example.com</td> <td>반응형 테스트 사이트</td> <td>정현우</td> <td>010-2305-1185</td> <td><span class="badge text-bg-light">테스트</span></td> <td>2025-06-06</td> <td>2026-09-13</td> <td class="text-end">235</td> <td><span class="badge badge-soft" title="도메인: hyunwoo-lms.kr">소유</span></td> <td>삭제</td> <td><button type="button" class="btn btn-outline-secondary btn-sm" onclick="openPaidMemoLayer()">Memo</button></td> <td><a class="btn btn-outline-primary btn-sm" href="app.php?p=page/account/free_account_view_tab.html">상세</a></td> <td><a class="btn btn-primary btn-sm" href="https://admin-creatorlms.pages.dev/admin/" target="_blank" rel="noopener">로그인</a></td> </tr> <tr> <td class="fw-semibold">4</td> <td>test4</td> <td>user04@example.com</td> <td>반응형 테스트 사이트</td> <td>최유진</td> <td>010-2304-1148</td> <td><span class="badge text-bg-light">운영</span></td> <td>2025-05-05</td> <td>2026-08-12</td> <td class="text-end">198</td> <td><span class="badge badge-soft" title="도메인: yujin-study.com">소유</span></td> <td>정상</td> <td><button type="button" class="btn btn-outline-secondary btn-sm" onclick="openPaidMemoLayer()">Memo</button></td> <td><a class="btn btn-outline-primary btn-sm" href="app.php?p=page/account/free_account_view_tab.html">상세</a></td> <td><a class="btn btn-primary btn-sm" href="https://admin-creatorlms.pages.dev/admin/" target="_blank" rel="noopener">로그인</a></td> </tr> <tr> <td class="fw-semibold">3</td> <td>test3</td> <td>user03@example.com</td> <td>데모 사이트 001</td> <td>박지훈</td> <td>010-2303-1111</td> <td><span class="badge text-bg-light">데모</span></td> <td>2025-04-04</td> <td>2026-07-11</td> <td class="text-end">161</td> <td><span class="badge text-bg-light">미적용</span></td> <td>만료</td> <td><button type="button" class="btn btn-outline-secondary btn-sm" onclick="openPaidMemoLayer()">Memo</button></td> <td><a class="btn btn-outline-primary btn-sm" href="app.php?p=page/account/free_account_view_tab.html">상세</a></td> <td><a class="btn btn-primary btn-sm" href="https://admin-creatorlms.pages.dev/admin/" target="_blank" rel="noopener">로그인</a></td> </tr> <tr> <td class="fw-semibold">2</td> <td>test2</td> <td>user02@example.com</td> <td>데모 사이트 002</td> <td>이서연</td> <td>010-2302-1074</td> <td><span class="badge text-bg-light">테스트</span></td> <td>2025-03-03</td> <td>2026-06-10</td> <td class="text-end">124</td> <td><span class="badge badge-soft" title="도메인: seoyeon-academy.kr">무료</span></td> <td>정지</td> <td><button type="button" class="btn btn-outline-secondary btn-sm" onclick="openPaidMemoLayer()">Memo</button></td> <td><a class="btn btn-outline-primary btn-sm" href="app.php?p=page/account/free_account_view_tab.html">상세</a></td> <td><a class="btn btn-primary btn-sm" href="https://admin-creatorlms.pages.dev/admin/" target="_blank" rel="noopener">로그인</a></td> </tr> <tr> <td class="fw-semibold">1</td> <td>test1</td> <td>user01@example.com</td> <td>데모 사이트 003</td> <td>김민수</td> <td>010-2301-1037</td> <td><span class="badge text-bg-light">운영</span></td> <td>2025-02-02</td> <td>2026-05-09</td> <td class="text-end">87</td> <td><span class="badge badge-soft" title="도메인: minsoo-class.com">무료</span></td> <td>삭제</td> <td><button type="button" class="btn btn-outline-secondary btn-sm" onclick="openPaidMemoLayer()">Memo</button></td> <td><a class="btn btn-outline-primary btn-sm" href="app.php?p=page/account/free_account_view_tab.html">상세</a></td> <td><a class="btn btn-primary btn-sm" href="https://admin-creatorlms.pages.dev/admin/" target="_blank" rel="noopener">로그인</a></td> </tr> </tbody> </table> </div> <nav class="mt-3 d-flex justify-content-center" aria-label="pagination"> <ul class="pagination pagination-sm mb-0"> <li class="page-item disabled"><a class="page-link" href="#">이전</a></li> <li class="page-item active"><a class="page-link" href="#">1</a></li> <li class="page-item"><a class="page-link" href="#">2</a></li> <li class="page-item"><a class="page-link" href="#">3</a></li> <li class="page-item"><a class="page-link" href="#">4</a></li> <li class="page-item"><a class="page-link" href="#">5</a></li> <li class="page-item"><a class="page-link" href="#">6</a></li> <li class="page-item"><a class="page-link" href="#">7</a></li> <li class="page-item"><a class="page-link" href="#">8</a></li> <li class="page-item"><a class="page-link" href="#">9</a></li> <li class="page-item"><a class="page-link" href="#">10</a></li> <li class="page-item"><a class="page-link" href="#">다음</a></li> </ul> </nav> </div> </div> <!-- ===== Memo Layer (paid_account_view_tab.html > TAB5 UI 재사용/복붙) ===== --> <style> /* 최소 모달 스타일(프로토타입용) */ .ui-layer-backdrop{ position:fixed; inset:0; background:rgba(0,0,0,.45); display:none; z-index:1050; } .ui-layer{ position:fixed; left:50%; top:50%; transform:translate(-50%,-50%); width:min(920px, calc(100vw - 24px)); max-height:calc(100vh - 24px); overflow:auto; display:none; z-index:1060; } </style> <div id="paidMemoBackdrop" class="ui-layer-backdrop" onclick="closePaidMemoLayer()"></div> <div id="paidMemoLayer" class="ui-layer"> <div class="card"> <div class="card-header d-flex align-items-center justify-content-between"> <div class="fw-semibold">관리자 메모 (고객 아이디: test1)</div> <button type="button" class="btn btn-outline-secondary btn-sm" onclick="closePaidMemoLayer()">닫기</button> </div> <div class="card-body"> <div class="d-flex flex-column gap-2 mb-3"> <!-- 아래 블록은 paid_account_view_tab.html 의 TAB5(panel5)에서 그대로 복붙 --> <div class="memo-item"> <div class="d-flex align-items-start justify-content-between gap-2"> <div> <div class="fw-semibold">결제 확인 완료 및 도메인 연결 안내 발송</div> <div class="memo-meta">2026-02-21 14:10 · 관리자 홍길동</div> </div> <div class="d-flex gap-2 flex-shrink-0"> <a class="btn btn-outline-secondary btn-sm" href="#">수정</a> <a class="btn btn-outline-danger btn-sm" href="#">삭제</a> </div> </div> </div> <div class="memo-item"> <div class="d-flex align-items-start justify-content-between gap-2"> <div> <div class="fw-semibold">운영상태 문의로 안내 메일 발송</div> <div class="memo-meta">2026-02-18 09:30 · 관리자 김서연</div> </div> <div class="d-flex gap-2 flex-shrink-0"> <a class="btn btn-outline-secondary btn-sm" href="#">수정</a> <a class="btn btn-outline-danger btn-sm" href="#">삭제</a> </div> </div> </div> <div class="memo-item"> <div class="d-flex align-items-start justify-content-between gap-2"> <div> <div class="fw-semibold">포인트 차감 이력 확인 요청 (SMS 발송)</div> <div class="memo-meta">2026-02-16 17:45 · 관리자 박지훈</div> </div> <div class="d-flex gap-2 flex-shrink-0"> <a class="btn btn-outline-secondary btn-sm" href="#">수정</a> <a class="btn btn-outline-danger btn-sm" href="#">삭제</a> </div> </div> </div> <div class="memo-item"> <div class="d-flex align-items-start justify-content-between gap-2"> <div> <div class="fw-semibold">상품 변경 문의 접수 (Starter → Growth 검토)</div> <div class="memo-meta">2026-02-12 10:05 · 관리자 오세훈</div> </div> <div class="d-flex gap-2 flex-shrink-0"> <a class="btn btn-outline-secondary btn-sm" href="#">수정</a> <a class="btn btn-outline-danger btn-sm" href="#">삭제</a> </div> </div> </div> <div class="memo-item"> <div class="d-flex align-items-start justify-content-between gap-2"> <div> <div class="fw-semibold">도메인 미적용 상태 확인 및 재안내</div> <div class="memo-meta">2026-02-03 11:20 · 관리자 한지민</div> </div> <div class="d-flex gap-2 flex-shrink-0"> <a class="btn btn-outline-secondary btn-sm" href="#">수정</a> <a class="btn btn-outline-danger btn-sm" href="#">삭제</a> </div> </div> </div> <!-- /복붙 영역 끝 --> </div> <div class="border-top pt-3 mt-3"> <div class="mb-2 fw-semibold">메모 추가</div> <textarea class="form-control" rows="3" placeholder="관리자 메모를 입력하세요 (작성자/일시는 저장 시 자동)"></textarea> <div class="border-top pt-3 mt-3 d-flex justify-content-center gap-2"> <button class="btn btn-primary" type="button">등록</button> </div> <div class="form-text">* 프로토타입: 실제 저장 동작은 없습니다.</div> </div> </div> </div> </div> <script> function openPaidMemoLayer(){ document.getElementById('paidMemoBackdrop').style.display = 'block'; document.getElementById('paidMemoLayer').style.display = 'block'; document.body.style.overflow = 'hidden'; } function closePaidMemoLayer(){ document.getElementById('paidMemoBackdrop').style.display = 'none'; document.getElementById('paidMemoLayer').style.display = 'none'; document.body.style.overflow = ''; } // ESC 닫기(있으면 편함) document.addEventListener('keydown', function(e){ if(e.key === 'Escape') closePaidMemoLayer(); }); </script> <!-- ===== /Memo Layer ===== -->
저장
페이지 추가
디렉토리
page (root)
page/account
page/main
page/marketing
page/ops
page/payment
page/product
page/settle
page/site
page/stats
* page/ 하위 1레벨 폴더만 선택
파일명
.html
* 영문 소문자/숫자/_/- 만, 최대 32자
비밀번호