index.html 20 KB
<!doctype html>
<html lang="ko">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <title>KhuBox</title>
    <link rel="stylesheet" href="static/css/bootstrap.min.css">
    <link rel="stylesheet" href="static/css/main.css">
</head>
<body>
<nav id="main-1" style="display:none;" class="navbar navbar-dark sticky-top bg-dark flex-md-nowrap p-0 shadow">
    <a class="navbar-brand col-md-3 col-lg-2 mr-0 px-3" href="#">KhuBox</a>
    <button class="navbar-toggler position-absolute d-md-none collapsed" type="button" data-toggle="collapse"
            data-target="#sidebarMenu">
        <span class="navbar-toggler-icon"></span>
    </button>
    <div class="w-100"></div>
<!--    <ul class="navbar-nav px-3">-->
<!--        <li class="nav-item text-nowrap">-->
<!--            <a class="nav-link" href="#!/settings">설정</a>-->
<!--        </li>-->
<!--    </ul>-->
    <ul class="navbar-nav px-3">
        <li class="nav-item text-nowrap">
            <a class="nav-link" href="#!/logout">로그아웃</a>
        </li>
    </ul>
</nav>
<div id="main-2" style="display:none;" class="container-fluid">
    <div class="row">
        <nav id="sidebarMenu" class="col-md-3 col-lg-2 d-md-block bg-light sidebar collapse">
            <div class="sidebar-sticky pt-3">
                <ul class="nav flex-column">
                    <li class="nav-item">
                        <a id="menu-me" class="nav-link" href="#">
                            <span data-feather="hard-drive"></span>
                            내 파일
                        </a>
                    </li>
                    <li class="nav-item">
                        <a id="menu-public" class="nav-link" href="#!/public">
                            <span data-feather="users"></span>
                            공유한 파일
                        </a>
                    </li>
                    <li class="nav-item">
                        <a id="menu-starred" class="nav-link" href="#!/starred">
                            <span data-feather="star"></span>
                            중요 문서함
                        </a>
                    </li>
                    <li class="nav-item">
                        <a id="menu-trash" class="nav-link" href="#!/trash">
                            <span data-feather="trash-2"></span>
                            휴지통
                        </a>
                    </li>
                </ul>
                <h6 class="sidebar-heading d-flex justify-content-between align-items-center px-3 mt-4 mb-1 text-muted">
                    <span>그룹 문서함</span>
                    <a class="d-flex align-items-center text-muted" href="#!/add-group">
                        <span data-feather="plus-circle"></span>
                    </a>
                </h6>
                <ul class="nav flex-column mb-2" id="group_list"></ul>
            </div>
        </nav>
        <main id="file_list" style="display:none;" role="main" class="col-md-9 ml-sm-auto col-lg-10 px-md-4">
            <div class="d-flex justify-content-between flex-wrap flex-md-nowrap align-items-center pt-3 mb-3">
                <div>
                    <h1 id="folder_name" class="h2"></h1>
                    <span id="folder_id" style="display:none;" class="badge badge-info"></span>
                </div>
                <div id="menu-top-me" style="display:none;" class="btn-toolbar mb-2 mb-md-0">
                    <div class="btn-group mr-2">
                        <button type="button" class="btn btn-sm btn-outline-secondary" onclick="GoNewFolder();">새 폴더</button>
                        <button type="button" class="btn btn-sm btn-outline-secondary" onclick="GoUpload();">파일 업로드</button>
                    </div>
                </div>
                <div id="menu-top-group" style="display:none;" class="btn-toolbar mb-2 mb-md-0">
                    <div class="btn-group mr-2">
                        <button id="btn-go-group" type="button" class="btn btn-sm btn-outline-secondary">그룹 설정</button>
                    </div>
                    <div class="btn-group mr-2">
                        <button type="button" class="btn btn-sm btn-outline-secondary" onclick="GoNewFolder();">새 폴더</button>
                        <button type="button" class="btn btn-sm btn-outline-secondary" onclick="GoUpload();">파일 업로드</button>
                    </div>
                </div>
                <div id="menu-top-trash" style="display:none;" class="btn-toolbar mb-2 mb-md-0">
                    <div class="btn-group mr-2">
                        <button type="button" class="btn btn-sm btn-outline-secondary" onclick="EmptyTrash();">휴지통 비우기</button>
                    </div>
                </div>
            </div>
            <div id="share-pop"></div>
            <div id="upload-progress" style="display:none;" class="progress mb-3">
                <div id="progress-val" class="progress-bar" role="progressbar"></div>
            </div>
            <div class="table-responsive table-hover">
                <table class="table table-sm">
                    <thead>
                    <tr>
                        <th class="w-50">이름</th>
                        <th>마지막으로 수정한 날짜</th>
                        <th>크기</th>
                        <th><span data-feather="more-horizontal"></span></th>
                    </tr>
                    </thead>
                    <tbody id="file_items"></tbody>
                </table>
            </div>
        </main>
        <main id="add_group" style="display:none;" role="main" class="col-md-9 ml-sm-auto col-lg-10 px-md-4">
            <div class="d-flex justify-content-between flex-wrap flex-md-nowrap align-items-center pt-3 mb-3">
                <h1 class="h2">그룹 추가</h1>
            </div>
            <div class="accordion" id="accordionExample">
                <div class="card">
                    <div class="card-header" id="headingOne">
                        <h2 class="mb-0">
                            <button class="btn btn-link btn-block text-left" type="button" data-toggle="collapse" data-target="#collapseOne" aria-expanded="true" aria-controls="collapseOne">
                                초대코드로 그룹 가입하기
                            </button>
                        </h2>
                    </div>
                    <div id="collapseOne" class="collapse show" aria-labelledby="headingOne" data-parent="#accordionExample">
                        <div class="card-body">
                            <form>
                                <div class="form-group">
                                    <label for="input-invite-code">그룹 초대코드</label>
                                    <input type="text" class="form-control" id="input-invite-code">
                                    <small class="form-text text-muted">그룹장으로부터 받은 초대코드를 입력해주세요.</small>
                                    <small class="form-text text-muted">그룹장은 그룹설정에서 초대코드를 확인할 수 있습니다.</small>
                                </div>
                                <button type="button" class="btn btn-primary" onclick="GroupJoin();">가입</button>
                            </form>
                        </div>
                    </div>
                </div>
                <div class="card">
                    <div class="card-header" id="headingTwo">
                        <h2 class="mb-0">
                            <button class="btn btn-link btn-block text-left collapsed" type="button" data-toggle="collapse" data-target="#collapseTwo" aria-expanded="false" aria-controls="collapseTwo">
                                그룹 생성하기
                            </button>
                        </h2>
                    </div>
                    <div id="collapseTwo" class="collapse" aria-labelledby="headingTwo" data-parent="#accordionExample">
                        <div class="card-body">
                            <form>
                                <div class="form-group">
                                    <label for="input-group-name">그룹명</label>
                                    <input type="text" class="form-control" id="input-group-name">
                                    <small class="form-text text-muted">그룹에 업로드 되는 파일의 비용은 그룹장에게 청구됩니다.</small>
                                    <small class="form-text text-muted">그룹원은 폴더 생성, 파일 업로드, 파일 다운로드만 가능합니다.</small>
                                </div>
                                <button type="button" class="btn btn-success" onclick="GroupCreate();">생성</button>
                            </form>
                        </div>
                    </div>
                </div>
            </div>
        </main>
        <input type="hidden" id="this-group-id">
        <main id="manage_group" style="display:none;" role="main" class="col-md-9 ml-sm-auto col-lg-10 px-md-4">
            <div class="d-flex justify-content-between flex-wrap flex-md-nowrap align-items-center pt-3 mb-3">
                <h1 class="h2">그룹 설정</h1>
            </div>
            <div class="accordion" id="manage_group_accord">
                <div id="card-1" style="display:none;" class="card">
                    <div class="card-header">
                        <h2 class="mb-0">
                            <button class="btn btn-link btn-block text-left" type="button" data-toggle="collapse" data-target="#manage_group_accord1" aria-expanded="true" aria-controls="collapseOne">
                                그룹명 변경
                            </button>
                        </h2>
                    </div>
                    <div id="manage_group_accord1" class="collapse" data-parent="#manage_group_accord">
                        <div class="card-body">
                            <form>
                                <div class="form-group">
                                    <label for="input-invite-code">변경할 그룹명</label>
                                    <input type="text" class="form-control" id="change-group-name">
                                    <small class="form-text text-muted">변경할 그룹명을 입력해주세요.</small>
                                    <small class="form-text text-muted">모든 그룹원에게 변경이 반영됩니다.</small>
                                </div>
                                <button type="button" class="btn btn-primary" onclick="ChangeGroupName();">변경</button>
                            </form>
                        </div>
                    </div>
                </div>
                <div id="card-2" style="display:none;" class="card">
                    <div class="card-header">
                        <h2 class="mb-0">
                            <button class="btn btn-link btn-block text-left collapsed" type="button" data-toggle="collapse" data-target="#manage_group_accord2" aria-expanded="false" aria-controls="collapseTwo">
                                초대코드 조회
                            </button>
                        </h2>
                    </div>
                    <div id="manage_group_accord2" class="collapse" data-parent="#manage_group_accord">
                        <div class="card-body">
                            <form>
                                <div class="form-group">
                                    <label for="input-group-name">초대코드</label>
                                    <input type="text" class="form-control" id="group-invite-code" readonly>
                                    <small class="form-text text-muted">위의 초대코드를 입력하면 그룹원이 가입할 수 있습니다.</small>
                                </div>
                            </form>
                        </div>
                    </div>
                </div>
                <div id="card-3" style="display:none;" class="card">
                    <div class="card-header">
                        <h2 class="mb-0">
                            <button class="btn btn-link btn-block text-left collapsed" type="button" data-toggle="collapse" data-target="#manage_group_accord3" aria-expanded="false" aria-controls="collapseTwo">
                                그룹원 관리
                            </button>
                        </h2>
                    </div>
                    <div id="manage_group_accord3" class="collapse" data-parent="#manage_group_accord">
                        <div class="card-body">
                            <ul class="list-group">
                                <li class="list-group-item d-flex justify-content-between align-items-center">
                                    Cras justo odio
                                    <a href="#" class="badge badge-danger">그룹원 삭제</a>
                                </li>
                                <li class="list-group-item d-flex justify-content-between align-items-center">
                                    Cras justo odio
                                    <a href="#" class="badge badge-danger">그룹원 삭제</a>
                                </li>
                            </ul>
                        </div>
                    </div>
                </div>
                <div id="card-4" style="display:none;" class="card">
                    <div class="card-header">
                        <h2 class="mb-0">
                            <button class="btn btn-link btn-block text-left collapsed" type="button" data-toggle="collapse" data-target="#manage_group_accord4" aria-expanded="false" aria-controls="collapseTwo">
                                그룹 탈퇴
                            </button>
                        </h2>
                    </div>
                    <div id="manage_group_accord4" class="collapse" data-parent="#manage_group_accord">
                        <div class="card-body">
                            <form>
                                <button type="button" class="btn btn-warning" onclick="GroupExit();">그룹 탈퇴</button>
                                <small class="form-text text-muted">탈퇴하면 그룹 내 파일에 접근할 수 없습니다.</small>
                                <small class="form-text text-muted">초대코드를 받으면 재가입할 수 있습니다.</small>
                            </form>
                        </div>
                    </div>
                </div>
                <div id="card-5" style="display:none;" class="card">
                    <div class="card-header">
                        <h2 class="mb-0">
                            <button class="btn btn-link btn-block text-left collapsed" type="button" data-toggle="collapse" data-target="#manage_group_accord5" aria-expanded="false" aria-controls="collapseTwo">
                                그룹 삭제
                            </button>
                        </h2>
                    </div>
                    <div id="manage_group_accord5" class="collapse" data-parent="#manage_group_accord">
                        <div class="card-body">
                            <form>
                                <button type="button" class="btn btn-danger" onclick="GroupCreate();">그룹 삭제</button>
                                <small class="form-text text-muted">그룹내의 모든 파일이 영구적으로 삭제되며 복구할 수 없습니다.</small>
                            </form>
                        </div>
                    </div>
                </div>
            </div>
        </main>
    </div>
</div>
<div id="modal-new-folder" class="modal" tabindex="-1" role="dialog">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <h5 class="modal-title">새 폴더</h5>
                <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                    <span aria-hidden="true">&times;</span>
                </button>
            </div>
            <div class="modal-body">
                <input id="new-folder-name" type="text" class="form-control" placeholder="폴더명">
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-secondary" data-dismiss="modal">닫기</button>
                <button type="button" class="btn btn-primary" onclick="CreateFolder();">생성</button>
            </div>
        </div>
    </div>
</div>
<div id="modal-rename" class="modal" tabindex="-1" role="dialog">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <h5 class="modal-title">이름 바꾸기</h5>
                <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                    <span aria-hidden="true">&times;</span>
                </button>
            </div>
            <div class="modal-body">
                <input id="new-rename" type="text" class="form-control" placeholder="바꿀 이름">
                <input id="new-rename-id" type="hidden">
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-secondary" data-dismiss="modal">닫기</button>
                <button type="button" class="btn btn-primary" onclick="Rename();">변경</button>
            </div>
        </div>
    </div>
</div>
<div id="modal-move" class="modal" tabindex="-1" role="dialog">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <h5 class="modal-title">이동</h5>
                <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                    <span aria-hidden="true">&times;</span>
                </button>
            </div>
            <div class="modal-body">
                <input id="new-folder" type="text" class="form-control" placeholder="이동할 폴더 ID">
                <input id="new-move-id" type="hidden">
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-secondary" data-dismiss="modal">닫기</button>
                <button type="button" class="btn btn-primary" onclick="Move();">이동</button>
            </div>
        </div>
    </div>
</div>
<form id="login" style="display:none;" class="form-signin" onsubmit="doLogin();return false;">
    <h1 class="h3 mb-3 font-weight-normal">KhuBox 로그인</h1>
    <input type="email" id="login-email" class="form-control input-top" placeholder="이메일 주소" required>
    <input type="password" id="login-password" class="form-control input-bot" placeholder="비밀번호" required>
    <button class="btn btn-lg btn-primary btn-block" type="submit">로그인</button>
    <a class="btn btn-success btn-sm btn-block" href="#!/register">회원가입</a>
</form>
<form id="register" style="display:none;" class="form-signin" onsubmit="doRegister();return false;">
    <h1 class="h3 mb-3 font-weight-normal">KhuBox 로그인</h1>
    <input type="email" id="register-email" class="form-control input-top" placeholder="이메일 주소" required>
    <input type="password" id="register-password" class="form-control input-mid" placeholder="비밀번호" required>
    <input type="password" id="register-password_re" class="form-control input-mid" placeholder="비밀번호 확인" required>
    <input type="text" id="register-name" class="form-control input-bot" placeholder="이름" required>
    <button class="btn btn-lg btn-primary btn-block" type="submit">회원가입</button>
    <a class="btn btn-success btn-sm btn-block" href="#!/login">로그인으로 돌아가기</a>
</form>
<input id="upload-file" type="file" hidden>
<script src="static/js/jquery-3.5.1.min.js"></script>
<script src="static/js/bootstrap.bundle.min.js"></script>
<script src="static/js/feather.min.js"></script>
<script src="static/js/main.js"></script>
</body>
</html>