최초 세팅

This commit is contained in:
bd091
2025-10-18 11:02:29 +09:00
commit d2d07f57ac
452 changed files with 63476 additions and 0 deletions

View File

@@ -0,0 +1,27 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:th="http://www.thymeleaf.org"
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout">
<head>
<th:block th:replace="/web/layout/layoutHead :: layoutHead"></th:block>
</head>
<body>
<!-- 상단 스크립트 타임리프 변수 선언 -->
<th:block layout:fragment="layout_top_script"></th:block>
<div class="project_wrap">
<th:block th:replace="/web/layout/layoutHeader :: layoutHeader"></th:block>
<!-- 오른쪽내용 -->
<th:block layout:fragment="layoutContent"></th:block>
<th:block th:replace="/web/layout/layoutFooter :: layoutFooter"></th:block>
</div>
<!-- 모달 -->
<th:block layout:fragment="layoutContentModal"></th:block>
<!-- 스크립트 -->
<th:block layout:fragment="layoutContentScript"></th:block>
</body>
</html>

View File

@@ -0,0 +1,25 @@
<!DOCTYPE html>
<html lang="ko" xmlns:th="http://www.thymeleaf.org">
<th:block th:fragment="layoutFooter">
<!-- footer_section -->
<footer>
<div class="inner_wrap">
<div class="text_box">
<img class="fLogo" src="/image/logo_121x33_W.png" alt="logo"/>
<a href="/webaccept/acceptSite.do">사이트 이용약관</a>
<a href="/webaccept/acceptPrivacy.do">개인정보처리방침</a>
<ul>
<li>상호명 : 메이드유의원&emsp;|&emsp;</li>
<li>서울특별시 강남구 강남대로 516, 2,3,4층(논현동, 메이드유빌딩)&emsp;|&emsp;</li>
<li>대표 : 박재우&emsp;|&emsp;</li>
<li>전화 : 02-547-4711&emsp;|&emsp;</li>
<li>팩스 : 070-5226-3771&emsp;|&emsp;</li>
<li>사업자등록번호 : 490-12-01321&emsp;|&emsp;</li>
<li>E-mail : imadeu@naver.com</li>
</ul>
</div>
</div>
</footer>
</th:block>
</html>

View File

@@ -0,0 +1,55 @@
<!DOCTYPE html>
<html lang="ko" xmlns:th="http://www.thymeleaf.org" xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout">
<th:block th:fragment="layoutHead">
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="keyword" content="HTML, meta, tag, element, reference">
<meta name="author" content="NTSOFT">
<meta name="description" content={props.description} data-react-helmet="true" />
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
<meta http-equiv="Cache-Control" content="No-Cache" />
<meta http-equiv="pragma" content="No-cache" />
<meta http-equiv="expires" content="0" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE10">
<!-- sns미리보기 -->
<meta property="og:type" content="website">
<!-- <meta property="og:url" content="https://ntsoft.kr/"> -->
<meta property="og:image" content="">
<meta property="og:title" content="메이드유">
<meta property="og:description" content="설명문구">
<!-- 사이트등록및소유확인 -->
<meta name="naver-site-verification" content="" />
<title>메이드유</title>
<!-- 파비콘 -->
<link rel="shortcut icon" href="" type="image/x-icon">
<link rel="icon" href="" type="image/x-icon">
<!-- 적용css -->
<link rel="stylesheet" href="/css/normalize.min.css">
<link rel="stylesheet" href="/css/web/header.css">
<link rel="stylesheet" href="/css/web/footer.css">
<link rel="stylesheet" href="/css/web/modal.css">
<link rel="stylesheet" href="/css/web/modal_styles.css">
<link rel="stylesheet" href="/css/web/common.css">
<link rel="stylesheet" href="/css/web/font.css">
<link rel="stylesheet" href="/css/web/jquery-ui.css">
<link rel="stylesheet" href="/css/web/swiper-bundle.min.css">
<th:block layout:fragment="layoutCss"></th:block>
<!-- 베이스script -->
<script src="/js/jquery.min.js"></script>
<!-- 적용script -->
<script src="/js/jquery-ui.js"></script>
<script src="/js/swiper-bundle.min.js"></script>
<script src="/js/web/common.js"></script>
</th:block>
</html>

View File

@@ -0,0 +1,105 @@
<!DOCTYPE html>
<html lang="ko" xmlns:th="http://www.thymeleaf.org">
<th:block th:fragment="layoutHeader">
<th:block th:replace="/web/layout/layoutModal :: layoutModal"></th:block>
<link rel="stylesheet" href="/css/web/quick_menu/quick_menu.css">
<script>
// 디바이스 감지 함수
function isMobileDevice() {
return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)
|| window.innerWidth <= 768;
}
// 카카오톡 상담 함수 (모든 디바이스에서 동작)
function openKakaoTalk() {
window.open('https://pf.kakao.com/_puZExd', '_blank');
}
// 전화걸기 함수 (모바일에서만 동작)
function makePhoneCall() {
if (isMobileDevice()) {
// 모바일에서만 전화걸기
window.location.href = 'tel:02-547-4711';
} else {
// 데스크톱에서는 동작 안함 (필요시 알림 추가)
console.log('전화걸기는 모바일에서만 가능합니다.');
}
}
function moveDietCenter(){
window.location.href="https://diet.madeu.co.kr/index";
}
// 모바일 여부 확인 함수
function isMobile() {
return window.innerWidth <= 768; // 필요 시 기준 너비 조정
}
// 현재 경로가 /index인지 확인
function isIndexPage() {
return window.location.pathname === '/index'; // '/index.html'인 경우 조정 필요
}
// 퀵메뉴 표시/숨김 함수
function toggleQuickMenu() {
const quickMenu = document.querySelector('.quick-menu-simple');
if (!quickMenu) return; // 요소가 없으면 종료
if (isMobile()) {
// 모바일: /index일 때만 표시
quickMenu.style.display = isIndexPage() ? '' : 'none';
} else {
// 데스크톱: 항상 표시
quickMenu.style.display = '';
}
}
// 페이지 로드와 리사이즈 이벤트 연결
window.addEventListener('load', toggleQuickMenu);
window.addEventListener('resize', toggleQuickMenu);
</script>
<header>
<div class="inner_wrap">
<button class="mb mbmenu" onClick="openNav()"></button>
<a class="logo" href="/index"><img src="/image/logo_199x54.png" alt="logo"></a>
<nav>
<ul class="depth1">
<li th:each="menu : ${menuList}">
<a class="mmenu" th:href="${menu.menuUrl}" th:text="${menu.menuName}"></a>
<ul class="depth2" th:if="${#lists.size(menu.children) > 0}">
<li></li>
<li th:each="subMenu : ${menu.children}">
<a th:href="${subMenu.menuUrl}" th:text="${subMenu.menuName}"></a>
</li>
</ul>
</li>
</ul>
</nav>
</div>
</header>
<!-- 퀵메뉴 -->
<div class="quick-menu-simple">
<!-- 다이어트센터 -->
<div class="quick-item" onclick="moveDietCenter()">
<img src="/image/quick_menu/diet_center.png" alt="다이어트센터">
</div>
<!-- 카카오톡 상담 -->
<div class="quick-item kakao-consult" onclick="openKakaoTalk()">
<img src="/image/quick_menu/kakao_consultation.png" alt="카카오톡 상담">
</div>
<!-- 전화 상담 -->
<div class="quick-item phone-consult" onclick="makePhoneCall()">
<div class="phone-default">
<img src="/image/quick_menu/call_consultation.png" alt="전화 상담">
</div>
<div class="phone-number">
<img src="/image/quick_menu/madeu_phone_number.png" alt="전화 상담">
</div>
</div>
</div>
<script src="/js/web/layout/layoutHeader.js?ver=1"></script>
</th:block>
</html>

View File

@@ -0,0 +1,351 @@
<!DOCTYPE html>
<html lang="ko" xmlns:th="http://www.thymeleaf.org">
<th:block th:fragment="layoutModal">
<div id="modalBox"></div>
<script>
<!-- success Modal 셋팅 -->
function fn_setSuccessModal(targetId){
let successModalHTML = '';
successModalHTML += '<div class="success popupColored">';
successModalHTML += ' <div class="modal modal_success" id="'+targetId+'" role="dialog" style="padding-right: 17px;">';
successModalHTML += ' <div class="modal-dialog">';
successModalHTML += ' <div class="modal-content">';
successModalHTML += ' <div class="modal-header">';
successModalHTML += ' <div class="modal-name successTextBox">';
successModalHTML += ' <svg xmlns="http://www.w3.org/2000/svg" width="52.012" height="52.012" viewBox="0 0 52.012 52.012">';
successModalHTML += ' <g id="그룹_1" data-name="그룹 1" transform="translate(-41 -25)">';
successModalHTML += ' <g id="patch-check" transform="translate(41.751 25.501)">';
successModalHTML += ' <path id="패스_1" data-name="패스 1" d="M22.406,6.477a1.625,1.625,0,0,1,0,2.3L12.654,18.53a1.625,1.625,0,0,1-2.3,0L5.476,13.654a1.627,1.627,0,1,1,2.3-2.3L11.5,15.081l8.6-8.6a1.625,1.625,0,0,1,2.3,0Z" transform="translate(11.25 13.5)" fill-rule="evenodd"/>';
successModalHTML += ' </g>';
successModalHTML += ' <g id="pause-circle" transform="translate(41 25)">';
successModalHTML += ' <path id="패스_10" data-name="패스 10" d="M26.006,48.761A22.755,22.755,0,1,1,48.761,26.006,22.755,22.755,0,0,1,26.006,48.761Zm0,3.251A26.006,26.006,0,1,0,0,26.006,26.006,26.006,0,0,0,26.006,52.012Z"/>';
successModalHTML += ' </g>';
successModalHTML += ' </g>';
successModalHTML += ' </svg>';
successModalHTML += ' <p class="title"><!-- 문구입력 --></p>';
successModalHTML += ' <p class="text"><!-- 문구입력 --></p>';
successModalHTML += ' </div>';
successModalHTML += ' </div>';
successModalHTML += ' <div class="modal-footer">';
successModalHTML += ' <div class="btn-box">';
successModalHTML += ' <button type="button" class="btn btnCommon btn-Success" style="outline:none;">확인</button>';
successModalHTML += ' </div>';
successModalHTML += ' </div>';
successModalHTML += ' </div>';
successModalHTML += ' </div>';
successModalHTML += ' </div>';
successModalHTML += '</div>';
$("#modalBox").append(successModalHTML);
}
<!-- danger Modal 셋팅 -->
function fn_setDangerModal(targetId){
let dangerModalHTML = '';
dangerModalHTML += '<div class="danger popupColored">';
dangerModalHTML += ' <div class="modal modal_danger" id="'+targetId+'" role="dialog" style="padding-right: 17px;">';
dangerModalHTML += ' <div class="modal-dialog">';
dangerModalHTML += ' <div class="modal-content">';
dangerModalHTML += ' <div class="modal-header">';
dangerModalHTML += ' <div class="modal-name dangerTextBox">';
dangerModalHTML += ' <svg xmlns="http://www.w3.org/2000/svg" width="52.012" height="52.012" viewBox="0 0 52.012 52.012">';
dangerModalHTML += ' <g id="그룹_3" data-name="그룹 3" transform="translate(-301 -25)">';
dangerModalHTML += ' <path id="패스_5" data-name="패스 5" d="M13.627,5.5a1.625,1.625,0,0,1,1.625,1.625V12h4.876a1.625,1.625,0,0,1,0,3.251H15.252v4.876a1.625,1.625,0,0,1-3.251,0V15.252H7.125a1.625,1.625,0,0,1,0-3.251H12V7.125A1.625,1.625,0,0,1,13.627,5.5Z" transform="translate(308.222 51.493) rotate(-45)" fill-rule="evenodd"/>';
dangerModalHTML += ' <g id="pause-circle" transform="translate(301 25)">';
dangerModalHTML += ' <path id="패스_10" data-name="패스 10" d="M26.006,48.761A22.755,22.755,0,1,1,48.761,26.006,22.755,22.755,0,0,1,26.006,48.761Zm0,3.251A26.006,26.006,0,1,0,0,26.006,26.006,26.006,0,0,0,26.006,52.012Z"/>';
dangerModalHTML += ' </g>';
dangerModalHTML += ' </g>';
dangerModalHTML += ' </svg>';
dangerModalHTML += ' <p class="title"><!-- 문구입력 --></p>';
dangerModalHTML += ' <p class="text"><!-- 문구입력 --></p>';
dangerModalHTML += ' </div>';
dangerModalHTML += ' </div>';
dangerModalHTML += ' <div class="modal-footer">';
dangerModalHTML += ' <div class="btn-box">';
dangerModalHTML += ' <button type="button" class="btn btnCommon btn-Success" style="outline:none;">확인</button>';
dangerModalHTML += ' </div>';
dangerModalHTML += ' </div>';
dangerModalHTML += ' </div>';
dangerModalHTML += ' </div>';
dangerModalHTML += ' </div>';
dangerModalHTML += '</div>';
$("#modalBox").append(dangerModalHTML);
}
<!-- warning Modal 셋팅 -->
function fn_setWarningModal(targetId){
let warningModalHTML = '';
warningModalHTML += '<div class="warning popupColored">';
warningModalHTML += ' <div class="modal modal_warning" id="'+targetId+'" role="dialog" style="padding-right: 17px;">';
warningModalHTML += ' <div class="modal-dialog">';
warningModalHTML += ' <div class="modal-content">';
warningModalHTML += ' <div class="modal-header">';
warningModalHTML += ' <div class="modal-name warningTextBox">';
warningModalHTML += ' <svg xmlns="http://www.w3.org/2000/svg" width="52.012" height="52.012" viewBox="0 0 52.012 52.012">';
warningModalHTML += ' <g id="그룹_2" data-name="그룹 2" transform="translate(-171 -25)">';
warningModalHTML += ' <path id="패스_3" data-name="패스 3" d="M7,26.767a3.251,3.251,0,1,1,3.251,3.251A3.251,3.251,0,0,1,7,26.767ZM7.323,7.246a2.942,2.942,0,1,1,5.851,0l-1.138,11.4a1.8,1.8,0,0,1-3.576,0Z" transform="translate(186.999 34.005)"/>';
warningModalHTML += ' <g id="pause-circle" transform="translate(171 25)">';
warningModalHTML += ' <path id="패스_10" data-name="패스 10" d="M26.006,48.761A22.755,22.755,0,1,1,48.761,26.006,22.755,22.755,0,0,1,26.006,48.761Zm0,3.251A26.006,26.006,0,1,0,0,26.006,26.006,26.006,0,0,0,26.006,52.012Z"/>';
warningModalHTML += ' </g>';
warningModalHTML += ' </g>';
warningModalHTML += ' </svg>';
warningModalHTML += ' <p class="title"><!-- 문구입력 --></p>';
warningModalHTML += ' <p class="text"><!-- 문구입력 --></p>';
warningModalHTML += ' </div>';
warningModalHTML += ' </div>';
warningModalHTML += ' <div class="modal-footer">';
warningModalHTML += ' <div class="btn-box">';
//warningModalHTML += ' <button type="button" class="btn btnCommon btn-cancel" style="outline:none;">취소</button>';
warningModalHTML += ' <button type="button" class="btn btnCommon btn-Success" style="outline:none;">확인</button>';
warningModalHTML += ' </div>';
warningModalHTML += ' </div>';
warningModalHTML += ' </div>';
warningModalHTML += ' </div>';
warningModalHTML += ' </div>';
warningModalHTML += '</div>';
$("#modalBox").append(warningModalHTML);
}
<!-- info Modal 셋팅 -->
function fn_setInfoModal(targetId){
let infoModalHTML = '';
infoModalHTML += '<div class="info popupColored">';
infoModalHTML += ' <div class="modal modal_info" id="'+targetId+'"role="dialog" style="padding-right: 17px;">';
infoModalHTML += ' <div class="modal-dialog">';
infoModalHTML += ' <div class="modal-content">';
infoModalHTML += ' <div class="modal-header">';
infoModalHTML += ' <div class="modal-name infoTextBox">';
infoModalHTML += ' <svg xmlns="http://www.w3.org/2000/svg" width="52.012" height="52.012" viewBox="0 0 52.012 52.012">';
infoModalHTML += ' <g id="그룹_4" data-name="그룹 4" transform="translate(-431 -25)">';
infoModalHTML += ' <g id="그룹_4-2" data-name="그룹 4" transform="translate(-1.004 0.625)">';
infoModalHTML += ' <path id="패스_7" data-name="패스 7" d="M12.664,23.33c1.092,0,1.638-.78,1.8-2.038.13-1.736.644-2.649,2.753-4.1a7.385,7.385,0,0,0,3.41-6.456A6.939,6.939,0,0,0,13.275,3.5C9.96,3.5,7.45,5.1,6.449,7.693A5.559,5.559,0,0,0,6,9.936c0,1.278.66,2.08,1.772,2.08.884,0,1.479-.478,1.833-1.658.514-1.924,1.707-2.974,3.491-2.974a3.285,3.285,0,0,1,3.348,3.524c0,1.83-.676,2.877-2.672,4.307a6.041,6.041,0,0,0-3.01,5.331v.361C10.763,22.3,11.439,23.33,12.664,23.33Z" transform="translate(445.004 32.875)"/>';
infoModalHTML += ' <path id="패스_9" data-name="패스 9" d="M7,13.251A3.251,3.251,0,1,1,10.252,16.5,3.251,3.251,0,0,1,7,13.251Z" transform="translate(447.258 47.505)"/>';
infoModalHTML += ' </g>';
infoModalHTML += ' <g id="pause-circle" transform="translate(431 25)">';
infoModalHTML += ' <path id="패스_10" data-name="패스 10" d="M26.006,48.761A22.755,22.755,0,1,1,48.761,26.006,22.755,22.755,0,0,1,26.006,48.761Zm0,3.251A26.006,26.006,0,1,0,0,26.006,26.006,26.006,0,0,0,26.006,52.012Z"/>';
infoModalHTML += ' </g>';
infoModalHTML += ' </g>';
infoModalHTML += ' </svg>';
infoModalHTML += ' <p class="title"><!-- 문구입력 --></p>';
infoModalHTML += ' <p class="text"><!-- 문구입력 --></p>';
infoModalHTML += ' </div>';
infoModalHTML += ' </div>';
infoModalHTML += ' <div class="modal-footer">';
infoModalHTML += ' <div class="btn-box">';
infoModalHTML += ' <button type="button" class="btn btnCommon btn-cancel" style="outline:none;">취소</button>';
infoModalHTML += ' <button type="button" class="btn btnCommon btn-Success" style="outline:none;">확인</button>';
infoModalHTML += ' </div>';
infoModalHTML += ' </div>';
infoModalHTML += ' </div>';
infoModalHTML += ' </div>';
infoModalHTML += ' </div>';
infoModalHTML += '</div>';
$("#modalBox").append(infoModalHTML);
}
<!-- 팝업 -->
let modalEvent = {
open : function(target, tit, msg){
if(target.length < 1){
throw new Error("there is no target element !");
}
target.find(".modal-header>.modal-name>.title").html(tit);
//엔터 처리
let enterMsg = msg;//msg.replace(/\r?\n/g, '<br>');
target.find(".modal-header>.modal-name>.text").html(enterMsg);
target.modal({keyboard:false, backdrop:'static'});
},
close : function(target){
//팝업 지우기
//target.modal("hide");
//target.parent().remove();
$("#modalBox .modal").modal("hide");
$("#modalBox").children().remove();
},
success : function(tit, msg, callback){
//alert 팝업
//$(".modal_success .btn-Success").unbind("click");
if($("#modalBox > .popupColored").length > 0){
modalEvent.close();
}
// 모달 아이디 생성
let nowMilli = Date.now();
let targetId = "modal_success"+nowMilli;
// 모달 셋팅
fn_setSuccessModal(targetId);
// 현재 모달 설정
let target = $("#"+targetId);
// 모달 열기
modalEvent.open(target, tit, msg);
// 모달 이벤트
$("#"+targetId+" .btn-Success").click(function(e){
modalEvent.close();
if(typeof callback != 'undefined' && callback){
if(typeof callback == 'function'){
callback();
} else {
if( callback ) {
eval( callback );
}
}
}
});
},
danger : function(tit, msg, callback){
//alert 팝업
//$(".modal_danger .btn-Success").unbind("click");
if($("#modalBox > .popupColored").length > 0){
modalEvent.close();
}
// 모달 아이디 생성
let nowMilli = Date.now();
let targetId = "modal_danger"+nowMilli;
// 모달 셋팅
fn_setDangerModal(targetId);
// 현재 모달 설정
let target = $("#"+targetId);
// 모달 열기
modalEvent.open(target, tit, msg);
// 모달 이벤트
$("#"+targetId+" .btn-Success").click(function(e){
modalEvent.close();
if(typeof callback != 'undefined' && callback){
if(typeof callback == 'function'){
callback();
} else {
if( callback ) {
eval( callback );
}
}
}
});
},
warning : function(tit, msg, callback){
//alert 팝업
//$(".modal_warning .btn-Success").unbind("click");
if($("#modalBox > .popupColored").length > 0){
modalEvent.close();
}
// 모달 아이디 생성
let nowMilli = Date.now();
let targetId = "modal_warning"+nowMilli;
// 모달 셋팅
fn_setWarningModal(targetId);
// 현재 모달 설정
let target = $("#"+targetId);
// 모달 열기
modalEvent.open(target, tit, msg);
// 모달 이벤트
$("#"+targetId+" .btn-Success").click(function(e){
modalEvent.close();
if(typeof callback != 'undefined' && callback){
if(typeof callback == 'function'){
callback();
} else {
if( callback ) {
eval( callback );
}
}
}
});
},
info : function(tit, msg, callback, callback2){
//alert 팝업
//$(".modal_info .btn-Success").unbind("click");
if($("#modalBox > .popupColored").length > 0){
modalEvent.close();
}
// 모달 아이디 생성
let nowMilli = Date.now();
let targetId = "modal_info"+nowMilli;
// 모달 셋팅
fn_setInfoModal(targetId);
// 현재 모달 설정
let target = $("#"+targetId);
// 모달 열기
modalEvent.open(target, tit, msg);
// 모달 확인 이벤트
$("#"+targetId+" .btn-Success").click(function(e){
modalEvent.close();
if(typeof callback != 'undefined' && callback){
if(typeof callback == 'function'){
callback();
} else {
if( callback ) {
eval( callback );
}
}
}
});
// 모달 취소 이벤트
$("#"+targetId+" .btn-cancel").click(function(e){
modalEvent.close();
if(typeof callback2 != 'undefined' && callback2){
if(typeof callback2 == 'function'){
callback2();
} else {
if( callback2 ) {
eval( callback2 );
}
}
}
});
}
}
// 다중 팝업 index 조정
$(document).on('show.bs.modal', '.modal', function (event) {
let zIndex = 1040 + (10 * $('.modal:visible').length);
$(this).css('z-index', zIndex);
setTimeout(function() {
$('.modal-backdrop').not('.modal-stack').css('z-index', zIndex - 1).addClass('modal-stack');
}, 0);
});
</script>
</th:block>
</html>