Compare commits

..

6 Commits

17 changed files with 125 additions and 72 deletions

1
.gitignore vendored
View File

@ -35,3 +35,4 @@ out/
### VS Code ###
.vscode/
.vs/

View File

@ -6,7 +6,7 @@ plugins {
group = 'com.dbnt'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'
sourceCompatibility = '1.8'
configurations {
compileOnly {

View File

@ -274,7 +274,11 @@ public class BoardService {
private String calculationSize(double fileSize){
String[] units = {"bytes", "KB", "MB", "GB", "TB", "PB"};
double unitSelector = Math.floor(Math.log(fileSize)/Math.log(1024));
return Math.round((fileSize/Math.pow(1024, unitSelector))*100)/100d+" "+units[(int)unitSelector];
if(fileSize>0){
return Math.round((fileSize/Math.pow(1024, unitSelector))*100)/100d+" "+units[(int)unitSelector];
}else{
return "";
}
}
public List<BoardLog> selectBoardLogList(BoardLog boardLog) {

View File

@ -14,9 +14,9 @@ spring.thymeleaf.cache=false
#mariaDB & log4jdbc
spring.datasource.driverClassName=net.sf.log4jdbc.sql.jdbcapi.DriverSpy
spring.datasource.url=ENC(aqLYKJgbP9cnsnvdR27iHExQ6dhwLVin81SAYNE31Rzfl5HC2PsFSxF5xPTfQypC5jk0TEDpBGIDCTPq6W43KZ+g8wrsw4k3PcwxrAhFVNjLInxh4+Xv4BjcqCiIRfMIx/OnjQK1kwVF9/OZauLFdQ==)
spring.datasource.username=ENC(A7iDWZCu8csd0mm0UjqQKA==)
spring.datasource.password=ENC(u4iVHinHq1HOrewYzuMUdlqbpagxmR0/)
spring.datasource.url=ENC(dyWhZaWHoSfJZtAIG3H42B36VasUlkpnnXQ7K1DFIoY+BxgbHAwf9mFSfxoZfn4zU+6uc2n4hK05vDAG2u/oARiQfDZU/y3ATZ8KldP14suXeRHFfnryNGPzEdPzd9Pjd3/HvYOplF+5+B2yUVGawg==)
spring.datasource.username=ENC(+BM/jvdOdi0MtWj44u1nxA==)
spring.datasource.password=ENC(njSsOMalmaUC2YKT4jm2GyYSNXc0hZs4)
#spring.datasource.url=jdbc:log4jdbc:mariadb://localhost:3306/kcgFileManager?characterEncoding=UTF-8&serverTimezone=UTC
#spring.datasource.username=root
#spring.datasource.password=kcg211228

View File

@ -1,19 +1,13 @@
/*로그인 폼*/
.form-signin{
width: 100%;
max-width: 330px;
padding: 15px;
margin: auto;
position: absolute;
z-index: 200;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
.centerDiv{
max-height: fit-content;
}
/*스크롤기능 있지만 안보이게*/
body::-webkit-scrollbar {
display: none;
}
/*사이드바 카테고리 트리*/
.btn-toggle:hover, .btn-toggle:focus {
color: rgba(0, 0, 0, .85);
@ -49,3 +43,12 @@
transform: translate(-50%, -50%);
background-color: #ffffff;
}
#list-group-line{
padding-bottom: 52vh;
}
/*@media (max-width:1199px)*/
/* .sidebar {*/
/* left: -300px;*/
/* }*/

View File

@ -0,0 +1,45 @@
/*로그인 폼*/
.form-signin{
width: 100%;
max-width: 330px;
padding: 15px;
margin: auto;
position: absolute;
z-index: 200;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
border-radius: 20px;
}
header{
z-index:300;
background-color: white;
}
body{
overflow: hidden;
}
/*스크롤기능 있지만 안보이게*/
body::-webkit-scrollbar {
display: none;
}
#logo{
z-index:300;
}
footer{
z-index:200;
}
#img02{
transition: all 1s ease-out;
z-index:100;
}
#img02:hover{
transform: scale(1.1, 1.1);
transition: all 1s ease-out;
}

View File

@ -29,7 +29,7 @@
<div class="col-12 card">
<div class="card-body">
<div class="row justify-content-start">
<div class="col-4">
<div class="col-xl-4">
<h5 class="mx-2"><i class="bi bi-square-fill"></i><span> 저장공간</span></h5>
<th:block th:each="diskInfo:${diskInfoList}">
<div class="row justify-content-center py-3 m-2 border rounded">
@ -47,7 +47,7 @@
</div>
</th:block>
</div>
<div class="col-8">
<div class="col-xl-8">
<h5 class="mx-2"><i class="bi bi-square-fill"></i><span> 전체 이력</span></h5>
<div class="row p-3 mx-2 border rounded">
<div class="col-12">

View File

@ -16,7 +16,7 @@
<div class="col-12 card text-center">
<div class="card-body">
<div class="row justify-content-start">
<div class="col-7">
<div class="col-xl-7">
<form method="get" th:action="@{/admin/userMgt}">
<input type="hidden" name="pageIndex" id="pageIndex" th:value="${searchParams.pageIndex}">
<div class="row justify-content-between">
@ -142,7 +142,7 @@
</div>
</div>
</div>
<div class="col-5">
<div class="col-xl-5">
<ul class="nav nav-tabs" id="userTab" role="tablist">
<li class="nav-item" role="presentation">
<button class="nav-link active" id="infoTab" data-bs-toggle="tab" type="button" role="tab">개인정보</button>
@ -153,7 +153,7 @@
</ul>
<div class="tab-content border border-top-0" id="userContent">
<div class="py-5">
<h3>왼쪽 목록에서 선택해주세요.</h3>
<h3>목록에서 선택해주세요.</h3>
</div>
</div>
</div>
@ -164,7 +164,7 @@
</main>
<div class="modal fade" id="userInfoModal" tabindex="-1" aria-labelledby="userInfoModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-dialog modal-xl">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="userInfoModalLabel">사용자 생성</h5>
@ -173,7 +173,7 @@
<div class="modal-body">
<form id="userInfoInsert" action="#" th:action="@{/admin/insertUserInfo}" method="post">
<div class="mb-3 row">
<label for="userId" class="col-sm-4 col-form-label">아이디</label>
<label for="userId" class="col-sm-4 col-form-label text-center">아이디</label>
<div class="col-sm-6">
<input type="text" class="form-control" id="userId" name="userId" autocomplete="off">
</div>
@ -182,28 +182,28 @@
</div>
</div>
<div class="mb-3 row">
<label for="password" class="col-sm-4 col-form-label">비밀번호</label>
<label for="password" class="col-sm-4 col-form-label text-center">비밀번호</label>
<div class="col-sm-6">
<input type="password" class="form-control" id="password" name="password">
</div>
<div class="col-sm-auto form-text mx-auto">
8~16자 사이의 알파벳, 숫자 조합을 입력해주세요.
8~16자 사이의 알파벳, 숫자, 특수문자 조합을 입력해주세요.
</div>
</div>
<div class="mb-3 row">
<label for="passwordConfirm" class="col-sm-4 col-form-label">비밀번호 확인</label>
<label for="passwordConfirm" class="col-sm-4 col-form-label text-center">비밀번호 확인</label>
<div class="col-sm-6">
<input type="password" class="form-control" id="passwordConfirm">
</div>
</div>
<div class="mb-3 row">
<label for="name" class="col-sm-4 col-form-label">이름</label>
<label for="name" class="col-sm-4 col-form-label text-center">이름</label>
<div class="col-sm-6">
<input type="text" class="form-control" id="name" name="name" autocomplete="off">
</div>
</div>
<div class="mb-3 row">
<label for="department" class="col-sm-4 col-form-label">부서</label>
<label for="department" class="col-sm-4 col-form-label text-center">부서</label>
<div class="col-sm-6">
<select class="form-select" id="department" name="department">
<th:block th:each="commonCode:${session.departmentList}">
@ -213,7 +213,7 @@
</div>
</div>
<div class="mb-3 row">
<label for="position" class="col-sm-4 col-form-label">직급</label>
<label for="position" class="col-sm-4 col-form-label text-center">직급</label>
<div class="col-sm-6">
<select class="form-select" id="position" name="position">
<th:block th:each="commonCode:${session.positionList}">

View File

@ -17,7 +17,7 @@
<div class="col-12 card">
<div class="card-body">
<div class="row justify-content-start">
<div class="col-7">
<div class="col-xl-7">
<!--검색 form-->
<form method="get" th:action="@{/board/contentList}">
<input type="hidden" name="categorySeq" id="categorySeq" th:value="${searchParams.categorySeq}">
@ -138,7 +138,7 @@
</div>
</div>
</div>
<div class="col-5">
<div class="col-xl-5">
<ul class="nav nav-tabs" id="boardTab" role="tablist">
<li class="nav-item" role="presentation">
<button class="nav-link active" id="contentTab" data-bs-toggle="tab" data-bs-target="#contentDiv" type="button" role="tab">내용</button>
@ -150,12 +150,12 @@
<div class="tab-content border border-top-0" id="boardDiv">
<div class="tab-pane fade show active" id="contentDiv" role="tabpanel" aria-labelledby="contentTab">
<div class="py-5 text-center">
<h3>왼쪽 목록에서 선택해주세요.</h3>
<h3>목록에서 선택해주세요.</h3>
</div>
</div>
<div class="tab-pane fade" id="logDiv" role="tabpanel" aria-labelledby="logTab">
<div class="py-5 text-center">
<h3>왼쪽 목록에서 선택해주세요.</h3>
<h3>목록에서 선택해주세요.</h3>
</div>
</div>
</div>

View File

@ -16,7 +16,7 @@
<div class="col-12 card">
<div class="card-body">
<div class="row justify-content-start">
<div class="col-7">
<div class="col-l-7">
<div class="card">
<div class="card-body row">
<div class="col-10">
@ -71,7 +71,7 @@
</div>
</div>
<div class="col-5">
<div class="col-l-5">
<ul class="nav nav-tabs" id="boardTab" role="tablist">
<li class="nav-item" role="presentation">
<button class="nav-link active" id="contentTab" data-bs-toggle="tab" data-bs-target="#contentDiv" type="button" role="tab">내용</button>

View File

@ -90,12 +90,12 @@
<div class="tab-content border border-top-0" id="boardDiv">
<div class="tab-pane fade show active" id="contentDiv" role="tabpanel" aria-labelledby="contentTab">
<div class="py-5 text-center">
<h3>왼쪽 목록에서 선택해주세요.</h3>
<h3>목록에서 선택해주세요.</h3>
</div>
</div>
<div class="tab-pane fade" id="logDiv" role="tabpanel" aria-labelledby="logTab">
<div class="py-5 text-center">
<h3>왼쪽 목록에서 선택해주세요.</h3>
<h3>목록에서 선택해주세요.</h3>
</div>
</div>
</div>

View File

@ -4,7 +4,7 @@
xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity5">
<header th:fragment="headerFragment" class="d-flex flex-wrap justify-content-center py-1 px-3 border-bottom">
<a href="/" class="d-flex align-items-center mb-3 mb-md-0 me-md-auto text-dark text-decoration-none">
<img th:src="@{/img/logo.png}" alt="logo" title="logo">
<img id="logo" th:src="@{/img/logo.png}" alt="logo" title="logo">
<!--<span class="fs-4">해양경찰청 파일관리 시스템</span>-->
</a>
<ul class="nav nav-pills" sec:authorize="isAuthenticated()">

View File

@ -2,7 +2,7 @@
<html lang="ko"
xmlns:th="http://www.thymeleaf.org"
xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity5" xmlns="http://www.w3.org/1999/html">
<div class="mx-3 pt-3" th:fragment="leftMenuFragment">
<div id="list-group-line" class="mx-3 pt-3" th:fragment="leftMenuFragment">
<div sec:authorize="hasRole('ROLE_ADMIN')">
<div class="list-group py-2">
<!--<a href="/admin/categoryMgt" class="list-group-item list-group-item-action">게시판 분류 관리</a>-->
@ -26,8 +26,8 @@
<li class="mb-1">
<button class="btn btn-toggle align-items-center rounded collapsed"
data-bs-toggle="collapse" aria-expanded="false"
th:data-categoryseq="${depth1.categorySeq}"
th:data-bs-target="'#collapse'+${depth1.categorySeq}" th:text="${depth1.categoryName}">
th:data-categoryseq="${depth1.categorySeq}"
th:data-bs-target="'#collapse'+${depth1.categorySeq}" th:text="${depth1.categoryName}">
</button>
<div class="collapse ps-3" th:id="|collapse${depth1.categorySeq}|">
<ul class="btn-toggle-nav list-unstyled fw-normal pb-1">

View File

@ -133,7 +133,7 @@
</ul>
<div class="tab-content border border-top-0" id="userContent">
<div class="py-5">
<h3>왼쪽 목록에서 선택해주세요.</h3>
<h3>목록에서 선택해주세요.</h3>
</div>
</div>
</div>

View File

@ -51,7 +51,7 @@
<header th:replace="fragments/header :: headerFragment"></header>
<div class="h-100" sec:authorize="isAnonymous()" layout:fragment="content"></div>
<div sec:authorize="isAuthenticated()" class="row mx-0">
<div class="col-2 centerDiv border-end">
<div class="sidebar col-2 centerDiv border-end">
<div th:replace="fragments/leftMenu :: leftMenuFragment"></div>
</div>
<div class="col-10 centerDiv">

View File

@ -2,29 +2,29 @@
<html lang="ko" xmlns:th="http://www.thymeleaf.org"
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
layout:decorate="~{layout/layout}">
<div layout:fragment="content" class="h-100">
<div id="carouselExampleFade" class="carousel slide carousel-fade" data-bs-ride="carousel" style="z-index: 100">
<div class="carousel-inner">
<div class="carousel-item active">
<img th:src="@{/img/img01.jpg}" class="w-100" alt="배경1">
</div>
<div class="carousel-item">
<img th:src="@{/img/img02.jpg}" class="w-100" alt="배경2">
</div>
<!--<div class="carousel-item">
<img th:src="@{/img/img03.jpg}"class="d-block w-100" alt="...">
</div>-->
</div>
<button class="carousel-control-prev" type="button" data-bs-target="#carouselExampleFade" data-bs-slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
<span class="visually-hidden">Previous</span>
</button>
<button class="carousel-control-next" type="button" data-bs-target="#carouselExampleFade" data-bs-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="visually-hidden">Next</span>
</button>
</div>
<div class="form-signin text-center mt-5 rounded bg-white">
<th:block layout:fragment="css">
<link rel="stylesheet" th:href="@{/css/login/login.css}">
</th:block>
<div layout:fragment="content"><img id="img02" th:src="@{/img/img02.jpg}" class="w-100 h-100" alt="배경2">
<!-- <div id="carouselExampleFade" class="carousel slide carousel-fade" data-bs-ride="carousel" style="z-index: 100">-->
<!-- <div class="carousel-inner">-->
<!-- <div class="carousel-item active">-->
<!-- <img th:src="@{/img/img01.jpg}" class="w-100" alt="배경1">-->
<!-- </div>-->
<!-- <div class="carousel-item">-->
<!-- <img th:src="@{/img/img02.jpg}" class="w-100" alt="배경2">-->
<!-- </div>-->
<!-- </div>-->
<!-- <button class="carousel-control-prev" type="button" data-bs-target="#carouselExampleFade" data-bs-slide="prev">-->
<!-- <span class="carousel-control-prev-icon" aria-hidden="true"></span>-->
<!-- <span class="visually-hidden">Previous</span>-->
<!-- </button>-->
<!-- <button class="carousel-control-next" type="button" data-bs-target="#carouselExampleFade" data-bs-slide="next">-->
<!-- <span class="carousel-control-next-icon" aria-hidden="true"></span>-->
<!-- <span class="visually-hidden">Next</span>-->
<!-- </button>-->
<!-- </div>-->
<div id="form-signin" class="form-signin text-center bg-white">
<!-- Security config의 loginPage("url")와 action url과 동일하게 작성-->
<form action="/user/login" method="post">
<!-- Spring Security가 적용되면 POST 방식으로 보내는 모든 데이터는 csrf 토큰 값이 필요 -->
@ -35,7 +35,7 @@
<!-- 파라미터명을 변경하고 싶을 경우 config class formlogin()에서 .usernameParameter("") 명시 -->
<!--<img class="mb-4" th:src="@{/img/}" alt="" width="72" height="57">-->
<h1 class="h3 mb-3 fw-normal">로그인</h1>
<h1 class="h3 fw-normal mt-2">로그인</h1>
<div class="form-floating py-2">
<input type="text" class="form-control" id="username" name="username" placeholder="아이디">
<label for="username">아이디</label>

View File

@ -14,7 +14,7 @@
<div class="col-12 card">
<div class="card-body">
<div class="row justify-content-start">
<div class="col-7">
<div class="col-xl-7">
<!--검색 form-->
<form method="get" th:action="@{/info/modifyRequestList}">
<input type="hidden" name="pageIndex" id="pageIndex" th:value="${searchParams.pageIndex}">
@ -149,9 +149,9 @@
</div>
</div>
</div>
<div class="col-5">
<div class="col-xl-5">
<div class="card" id="requestDetailDiv">
<h3 class="p-5">왼쪽 목록에서 선택해주세요.</h3>
<h3 class="p-5">목록에서 선택해주세요.</h3>
</div>
</div>
</div>