File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
<!DOCTYPE html>
<html lang="ko">
<head>
<title>온세종학교</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="Author" content="">
<meta name="Keywords" content="">
<meta name="Description" content="">
<meta name="format-detection" content="telephone=no">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=0">
<link href="/resources/front/site/SITE_00000/css/style.css" rel="stylesheet">
<!-- 공통 plugin -->
<script src="/resources/front/site/SITE_00000/js/common/jquery/jquery-3.6.0.min.js"></script>
<script src="/resources/front/site/SITE_00000/js/common/jquery/jquery-ui.min.js"></script>
<!-- //공통 plugin -->
<!-- 페이지 plugin-->
<!-- //페이지 plugin-->
<!-- 공통 퍼블 layout: 개발시 삭제-->
<!-- <script src="/resources/front/site/SITE_00000/js/_layout.js"></script> -->
<!--//퍼블 layout-->
<!-- 공통 메뉴 js-->
<!-- //공통 메뉴 js -->
<!--공통 퍼블 js-->
<script src="/resources/front/site/SITE_00000/js/common.js"></script>
<script src="/resources/front/site/SITE_00000/js/common-custom.js"></script>
<!--//공통 퍼블 js-->
</head>
<body>
<section class="class-viewer">
<header class="viewer-header">
<div class="l-area">
<!-- <button type="button" class="btn-viewer-menu btn circle ico-menu sm">메뉴</button> -->
<div class="viewer-tit">
<h1 class="">활동1) 무늬를 꾸며보는 방법 알아보기활동1) 무늬를 꾸며보는 방법 알아보기활동1) 무늬를 꾸며보는 방법 알아보기활동1) 무늬를 꾸며보는 방법 알아보기활동1) 무늬를 꾸며보는 방법 알아보기</h1>
</div>
</div>
<div class="r-area">
<div class="btn-group">
<button type="button" class="btn sm"><i class="ico-bookmark"></i> 북마크</button>
<button type="button" class="btn sm"><i class="ico-book"></i> 학생뷰어보기</button>
<button type="button" class="btn sm primary"><i class="ico-save"></i> 저장</button>
<button type="button" class="btn sm"><i class="ico-logout"></i> 나가기</button>
</div>
</div>
</header>
<div class="viewer-body">
<div class="viewer-menu-area">
<div class="viewer-menu-header">
<div class="menu-add-area">
<button class="btn-menu-add"><span>과정추가</span></button>
<div class="menu-add-option" >
<button type="button">파일 업로드</button>
<button type="button">링크추가</button>
<button type="button">나의 보관함에서 선택</button>
<button type="button">콘텐츠에서 검색</button>
<button type="button">웹오피스 추가</button>
<button type="button">화이트 보드</button>
<button type="button">새로 만들기</button>
</div>
</div>
</div>
<div class="viewer-menu-body">
<nav class="viewer-nav">
<ul>
<li class="is-active">
<a href="#none" class="lnk-full">상세보기</a>
<div class="nav-info">
<span class="num">1</span>
<div class="fnc order-front">
<button type="button" class="ico-delete order-front">삭제</button>
<i class="ico-move">이동</i>
</div>
</div>
<div class="nav-cont">
<div class="img-area">
<img src="/resources/front/site/SITE_00000/images/temp/img1.jpg" alt="">
</div>
<div class="txt-area">
<div class="label-area"><span class="label-cont-video">영상</span></div>
<div class="txt">파일명파일명 파일명파일명파일명파일명파일명파일명파일명파일명파일명파일명.mp4</div>
</div>
</div>
</li>
<li>
<a href="#none" class="lnk-full">상세보기</a>
<div class="nav-info">
<span class="num">2</span>
<div class="fnc order-front">
<button type="button" class="ico-delete order-front">삭제</button>
<i class="ico-move">이동</i>
</div>
</div>
<div class="nav-cont">
<div class="txt-area">
<div class="label-area"><span class="label-cont-video">영상</span></div>
<div class="txt">파일명.mp4</div>
</div>
</div>
</li>
<li>
<a href="#none" class="lnk-full">상세보기</a>
<div class="nav-info">
<span class="num">2</span>
<div class="fnc order-front">
<button type="button" class="ico-delete order-front">삭제</button>
<i class="ico-move">이동</i>
</div>
</div>
<div class="nav-cont">
<div class="img-weboffice-area">
<img src="/resources/front/site/SITE_00000/images/custom/ico-img/ico-img-weboffice-hwp.svg" alt="hwp">
</div>
<div class="txt-area">
<div class="label-area"><span class="label-cont-weboffice">웹오피스</span></div>
<div class="txt">파일명.cell</div>
</div>
</div>
</li>
</ul>
</nav>
</div>
<button type="button" class="btn-viewer-menu-toggle"><span class="txt-hide">메뉴 열기&닫기</span></button>
</div>
<div class="viewer-cont">
<div class="wrap-sm">
<div class="view-info-area">
<div class="img-area">
<img src="/resources/front/site/SITE_00000/images/custom/ico-cont/ico-cont-weboffice.svg" alt="">
</div>
<div class="txt-area">
<p>웹오피스 입니다.</p>
</div>
</div>
<ul class="btn-box-list">
<li>
<a href="#none" type="button" class="lnk-full" target="_blank" title="새창 열기">새창열기</a>
<div class="img-area">
<i class="ico-weboffice-cell"></i>
</div>
<span>https://www.weboffice.com/1232164</span>
<div class="fnc">
<button class="btn-text primary">보기 <i class="ico-visibility primary"></i></button>
<!-- <i class="ico-openinnew">새 창 열기</i> 보기 -->
</div>
</li>
<li>
<a href="#none" type="button" class="lnk-full" target="_blank" title="새창 열기">새창열기</a>
<figure>
<i class="ico-weboffice-hwp"></i>
</figure>
<span>https://www.weboffice.com/1232164</span>
<div class="fnc">
<button class="btn-text primary">편집 <i class="ico-edit primary"></i></button>
<!-- <i class="ico-openinnew">새 창 열기</i> 보기 -->
</div>
</li>
</ul>
</div>
<div class="viewer-cont-etc">
<button type="button" class="btn circle overlay ico-bookmark toggle">북마크</button>
</div>
<div class="viewer-fnc-cont">
<!-- 색연필 -->
<div class="viewer-painter paint-target"></div>
</div>
<div class="viewer-cont-fnc">
<!-- <div class="viewer-paging fnc-section">
<button class="btn icon-only ico-pv" disabled>이전</button>
<button class="btn icon-only ico-fw">다음</button>
</div> -->
<div class= "fnc-section">
<select title="문서권한선택" class="sm">
<option>보기만 가능</option>
<option>공통편집 가능</option>
</select>
</div>
<div class="fnc-section btn-group">
<button type="button" class="btn sm primary">확인</button>
</div>
</div>
</div>
</div>
<ul class="viewer-tool">
<li>
<button type="button" class="btn-painter-toggle lnk-full">판서</button>
<img src="/resources/front/site/SITE_00000/images/common/ico-img/ico-img-pencil.svg" alt="" aria-hidden="true">
<strong>판서</strong>
</li>
<li>
<button type="button" class="lnk-full">채팅 열기&닫기</button>
<img src="/resources/front/site/SITE_00000/images/common/ico-img/ico-img-chat.svg" alt="" aria-hidden="true">
<strong>채팅</strong>
<span class="badge min">새 채팅</span>
</li>
<li>
<button type="button" class="lnk-full btn-timer-toggle" onclick="popupOpenPub('timer')">타이머 열기&닫기</button>
<img src="/resources/front/site/SITE_00000/images/common/ico-img/ico-img-hourglass.svg" alt="" aria-hidden="true">
<strong>타이머</strong>
</li>
</ul>
</section>
<!--toast-->
<div class="toast"></div>
<!--popup-->
<div class="dim"></div>
<div class="popup-modal sm" data-popuppub="timer">
<div class="pop-header">
<h1>타이머</h1>
</div>
<div class="pop-body">
<div class="timer-area">
<div class="timer-input-area">
<div class="input-area">
<input type="number" value="00" min="0" max="99" readonly class="input-minute">
<span>:</span>
<input type="number" value="00" min="0" max="59" readonly class="input-second">
</div>
<div class="sound-area">
<label class="btn-sound">
<input type="checkbox" checked><span class="btn circle overlay ico-sound">소리</span>
</label>
</div>
</div>
<div class="control-area">
<button type="button" class="btn-play-toggle btn lg cta ico-play">시작</button>
<button type="button" class="btn-reset btn ghost circle ico-refresh">재설정</button>
</div>
<ul class="option-area">
<li class="option-minute">
<div class="setting-area">
<button type="button" class="btn circle sm ico-down"></button>
<span>분</span>
<button type="button" class="btn circle sm ico-up"></button>
</div>
<div class="btn-group">
<button class="btn sm ico-plus">5분</button>
<button class="btn sm ico-plus">10분</button>
<button class="btn sm ico-plus">30분</button>
</div>
</li>
<li class="option-second">
<div class="setting-area">
<button type="button" class="btn circle sm ico-down"></button>
<span>초</span>
<button type="button" class="btn circle sm ico-up"></button>
</div>
<div class="btn-group">
<button class="btn sm ico-plus">5초</button>
<button class="btn sm ico-plus">10초</button>
<button class="btn sm ico-plus">30초</button>
</div>
</li>
</ul>
</div>
</div>
<button type="button" class="pop-close cls"><span class="txt-hide">팝업닫기</span></button>
</div>
<script>
// 과정추가
$(document).on('click', '.btn-menu-add', function (e) {
e.stopPropagation();
$('.menu-add-area').toggleClass('is-active');
});
$(document).on('click', function () {
$('.menu-add-area').removeClass('is-active');
});
//과정 순서 변경
$(".class-viewer-nav>ul").sortable({
handle: $(".class-viewer-nav>ul>li").find(".ico-move"),
containment: "parent",
update: function (event, ui) {
var $list = $(this).children("li");
$list.each(function () {
var $li = $(this);
var newVal = $(this).index() + 1;
$(this).find(".num").html(newVal);
});
},
});
document.addEventListener('DOMContentLoaded', function () {
// 타이머
const timerModule = (function () {
let timerInterval;
let isRunning = false;
let totalSeconds = 0;
const audio = new Audio("/resources/front/site/SITE_00000/images/timer/tick.mp3");
const startStopBtn = document.querySelector('.btn-play-toggle');
const resetBtn = document.querySelector('.btn-reset');
const minuteInput = document.querySelector('.input-minute');
const secondInput = document.querySelector('.input-second');
const soundCheckbox = document.querySelector('.btn-sound input[type="checkbox"]');
const minutePlusBtns = document.querySelectorAll('.option-minute .btn-group .btn');
const secondPlusBtns = document.querySelectorAll('.option-second .btn-group .btn');
const minuteUpBtn = document.querySelector('.option-minute .setting-area .ico-up');
const minuteDownBtn = document.querySelector('.option-minute .setting-area .ico-down');
const secondUpBtn = document.querySelector('.option-second .setting-area .ico-up');
const secondDownBtn = document.querySelector('.option-second .setting-area .ico-down');
const optionCont = document.querySelector('.option-area');
const popCloseBtn = document.querySelector('.pop-close');
const dim = document.querySelector('.dim');
// 시간 갱신 함수
function updateDisplay() {
const minutes = Math.floor(totalSeconds / 60);
const seconds = totalSeconds % 60;
minuteInput.value = String(minutes).padStart(2, '0');
secondInput.value = String(seconds).padStart(2, '0');
}
// .option-container에 is-disabled 추가
function disableOptions() {
optionCont.classList.add('is-disabled');
}
// .option-container에서 is-disabled 제거
function enableOptions() {
optionCont.classList.remove('is-disabled');
}
// 소리 재생 함수
function playAudio() {
if (soundCheckbox.checked) {
audio.play().catch((error) => {
console.error('소리 재생 오류:', error);
});
}
}
// 소리 정지 함수
function stopAudio() {
audio.pause();
audio.currentTime = 0; // 재생 위치 초기화
}
// 소리 체크박스 상태 변경 이벤트
soundCheckbox.addEventListener('change', () => {
if (soundCheckbox.checked && isRunning) {
playAudio();
} else {
stopAudio();
}
});
// 타이머 시작/정지
function startStopTimer() {
if (isRunning) {
clearInterval(timerInterval);
stopAudio();
startStopBtn.textContent = '시작';
enableOptions();
} else {
if (totalSeconds === 0) {
toastShow('시간을 세팅해주세요.');
return;
}
if (soundCheckbox.checked) {
playAudio();
}
disableOptions();
timerInterval = setInterval(() => {
if (totalSeconds > 0) {
totalSeconds--;
updateDisplay();
} else {
clearInterval(timerInterval);
toastShow('타이머 종료');
stopAudio();
startStopBtn.textContent = '시작';
enableOptions();
isRunning = false;
}
}, 1000);
startStopBtn.textContent = '정지';
}
isRunning = !isRunning;
}
// 타이머 재설정
function resetTimer() {
clearInterval(timerInterval);
isRunning = false;
totalSeconds = 0;
updateDisplay();
startStopBtn.textContent = '시작';
stopAudio();
enableOptions();
}
// 분/초 조정 함수
function adjustTime(inputElement, adjustment, maxValue) {
let currentValue = parseInt(inputElement.value, 10);
currentValue += adjustment;
if (currentValue > maxValue) currentValue = maxValue;
if (currentValue < 0) currentValue = 0; // 최소값을 0으로 제한
inputElement.value = String(currentValue).padStart(2, '0');
}
// 분 조정 함수
function adjustMinutes(inputElement, minutesToAdd) {
let currentValue = parseInt(inputElement.value, 10);
currentValue += minutesToAdd;
if (currentValue > 60) currentValue = 60;
if (currentValue < 0) currentValue = 0; // 최소값을 0으로 제한
inputElement.value = String(currentValue).padStart(2, '0');
}
// 초 조정 함수
function adjustSeconds(inputElement, secondsToAdd) {
let currentValue = parseInt(inputElement.value, 10);
currentValue += secondsToAdd;
if (currentValue > 59) currentValue = 59;
if (currentValue < 0) currentValue = 0; // 최소값을 0으로 제한
inputElement.value = String(currentValue).padStart(2, '0');
}
// 시간 추가 버튼들
function addMinutes(index) {
const minutesToAdd = [5, 10, 30][index];
totalSeconds += minutesToAdd * 60;
// 분 최대값 60으로 제한
if (totalSeconds > 60 * 60) {
totalSeconds = 60 * 60;
}
updateDisplay();
}
function addSeconds(index) {
const secondsToAdd = [5, 10, 30][index];
totalSeconds += secondsToAdd;
// 초가 60초를 넘지 않도록 제한
if (totalSeconds > 60 * 60) {
totalSeconds = 60 * 60;
}
updateDisplay();
}
// 이벤트 리스너 등록
startStopBtn.addEventListener('click', startStopTimer);
resetBtn.addEventListener('click', resetTimer);
minutePlusBtns.forEach((btn, index) => btn.addEventListener('click', () => addMinutes(index)));
secondPlusBtns.forEach((btn, index) => btn.addEventListener('click', () => addSeconds(index)));
minuteUpBtn.addEventListener('click', () => adjustMinutes(minuteInput, 1));
minuteDownBtn.addEventListener('click', () => adjustMinutes(minuteInput, -1));
secondUpBtn.addEventListener('click', () => adjustSeconds(secondInput, 1));
secondDownBtn.addEventListener('click', () => adjustSeconds(secondInput, -1));
popCloseBtn.addEventListener('click', resetTimer);
dim.addEventListener('click', resetTimer);
return {
resetTimer,
startStopTimer,
updateDisplay,
};
})();
});
</script>
</body>
</html>