통합검색, 게시판내 검색 기능 보충.
parent
2dd5496f84
commit
8bd2cc6908
|
|
@ -59,10 +59,16 @@ public class BoardController {
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/contentList")
|
@GetMapping("/contentList")
|
||||||
public ModelAndView contentList(Board board){
|
public ModelAndView contentList(
|
||||||
|
Board board,
|
||||||
|
@RequestParam(value = "tagName", required = false) List<String> tagNameList
|
||||||
|
){
|
||||||
ModelAndView mav = new ModelAndView("board/contentList");
|
ModelAndView mav = new ModelAndView("board/contentList");
|
||||||
mav.addObject("pageTitle", boardCategoryService.getPageTitle(board.getCategorySeq()));
|
mav.addObject("pageTitle", boardCategoryService.getPageTitle(board.getCategorySeq()));
|
||||||
board.setQueryInfo();
|
board.setQueryInfo();
|
||||||
|
if(tagNameList != null && tagNameList.size() != 0){
|
||||||
|
board = boardService.setHashTagSearch(board, tagNameList);
|
||||||
|
}
|
||||||
mav.addObject("contentList", boardService.selectContentList(board));
|
mav.addObject("contentList", boardService.selectContentList(board));
|
||||||
board.setContentCnt(boardService.selectContentListCnt(board));
|
board.setContentCnt(boardService.selectContentListCnt(board));
|
||||||
board.setPaginationInfo();
|
board.setPaginationInfo();
|
||||||
|
|
@ -78,7 +84,10 @@ public class BoardController {
|
||||||
@RequestParam(value = "tagName", required = false) List<String> tagNameList
|
@RequestParam(value = "tagName", required = false) List<String> tagNameList
|
||||||
){
|
){
|
||||||
ModelAndView mav = new ModelAndView("board/contentSearchResult");
|
ModelAndView mav = new ModelAndView("board/contentSearchResult");
|
||||||
mav.addObject("boardList", boardService.fullSearchBoardContent(categorySeqList, board, tagNameList));
|
if(tagNameList != null && tagNameList.size() != 0){
|
||||||
|
board = boardService.setHashTagSearch(board, tagNameList);
|
||||||
|
}
|
||||||
|
mav.addObject("boardList", boardService.fullSearchBoardContent(categorySeqList, board));
|
||||||
return mav;
|
return mav;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -33,18 +33,10 @@ public class BoardService {
|
||||||
private final UserInfoRepository userInfoRepository;
|
private final UserInfoRepository userInfoRepository;
|
||||||
|
|
||||||
|
|
||||||
public List<SearchResult> fullSearchBoardContent(List<Integer> categorySeqList, Board board, List<String> tagNameList) {
|
public List<SearchResult> fullSearchBoardContent(List<Integer> categorySeqList, Board board) {
|
||||||
board.setRowCnt(Integer.MAX_VALUE);
|
board.setRowCnt(Integer.MAX_VALUE);
|
||||||
|
|
||||||
List<HashTag> tagList = new ArrayList<>();
|
|
||||||
for(String tagName: tagNameList){
|
|
||||||
HashTag tag = new HashTag();
|
|
||||||
tag.setTagName(tagName);
|
|
||||||
tagList.add(tag);
|
|
||||||
}
|
|
||||||
board.setHashTagList(tagList);
|
|
||||||
|
|
||||||
List<SearchResult> results = new ArrayList<>();
|
List<SearchResult> results = new ArrayList<>();
|
||||||
|
|
||||||
for(int categorySeq : categorySeqList){
|
for(int categorySeq : categorySeqList){
|
||||||
SearchResult searchResult = new SearchResult();
|
SearchResult searchResult = new SearchResult();
|
||||||
BoardCategory category = boardCategoryRepository.findById(categorySeq).orElse(null);
|
BoardCategory category = boardCategoryRepository.findById(categorySeq).orElse(null);
|
||||||
|
|
@ -233,6 +225,21 @@ public class BoardService {
|
||||||
return contentSeq;
|
return contentSeq;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Board setHashTagSearch(Board board, List<String> tagNameList){
|
||||||
|
List<HashTag> tagList = new ArrayList<>();
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
for(String tagName: tagNameList){
|
||||||
|
HashTag tag = new HashTag();
|
||||||
|
tag.setTagName(tagName);
|
||||||
|
tagList.add(tag);
|
||||||
|
sb.append(tagName).append(",");
|
||||||
|
}
|
||||||
|
board.setHashTagList(tagList);
|
||||||
|
String hashTagStr = sb.toString();
|
||||||
|
board.setHashTagStr(hashTagStr.substring(0, hashTagStr.length()-1));
|
||||||
|
return board;
|
||||||
|
}
|
||||||
|
|
||||||
private List<BoardCategory> setboardCategoryToLastDepth(List<BoardCategory> categoryList, BoardCategory category){
|
private List<BoardCategory> setboardCategoryToLastDepth(List<BoardCategory> categoryList, BoardCategory category){
|
||||||
for(BoardCategory child: category.getChildCategoryList()){
|
for(BoardCategory child: category.getChildCategoryList()){
|
||||||
if(child.getDepth()==4){
|
if(child.getDepth()==4){
|
||||||
|
|
|
||||||
|
|
@ -224,3 +224,21 @@ function childCategoryStatusChange(parentSeq, flag){
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function setSearchCondition(){
|
||||||
|
const searchConditionSelector = $("#searchConditionSelector").val();
|
||||||
|
const searchTextDiv = $("#searchTextDiv");
|
||||||
|
const dateSelectorDiv = $("#dateSelectorDiv");
|
||||||
|
if(searchConditionSelector === "createDate"){
|
||||||
|
dateSelectorDiv.show();
|
||||||
|
dateSelectorDiv.children().removeAttr("disabled");
|
||||||
|
searchTextDiv.hide();
|
||||||
|
searchTextDiv.children().attr("disabled", "disabled");
|
||||||
|
}else{
|
||||||
|
$("#textSearch").attr("name", searchConditionSelector);
|
||||||
|
searchTextDiv.show();
|
||||||
|
searchTextDiv.children().removeAttr("disabled");
|
||||||
|
dateSelectorDiv.hide();
|
||||||
|
dateSelectorDiv.children().attr("disabled", "disabled");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,117 +0,0 @@
|
||||||
$(function (){
|
|
||||||
$("#dateSelectorDiv").datepicker({
|
|
||||||
format: "yyyy-mm-dd",
|
|
||||||
language: "ko"
|
|
||||||
});
|
|
||||||
})
|
|
||||||
|
|
||||||
$(document).on('click', '.contentTr', function (){
|
|
||||||
$(".contentCheckBox").prop('checked', false);
|
|
||||||
const target = $(this).find(".contentCheckBox")[0];
|
|
||||||
target.checked = true;
|
|
||||||
const selectedTab = $(".nav-tabs").find(".active")[0].id;
|
|
||||||
if(selectedTab === "contentTab"){
|
|
||||||
getBoardContent(target.value);
|
|
||||||
}else if(selectedTab === "logTab"){
|
|
||||||
getBoardLog(target.value);
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
$(document).on('change', '#fileCheckAll', function (){
|
|
||||||
$(".fileCheckBox").prop("checked", this.checked);
|
|
||||||
})
|
|
||||||
|
|
||||||
$(document).on('click', '#contentTab', function (){
|
|
||||||
getBoardContent(getContentSeq())
|
|
||||||
})
|
|
||||||
$(document).on('click', '#logTab', function (){
|
|
||||||
getBoardLog(getContentSeq())
|
|
||||||
})
|
|
||||||
|
|
||||||
$(document).on('click', '.fileDownLink', function (){
|
|
||||||
let url = "/board/fileDownload?"
|
|
||||||
url += "contentSeq="+Number($("#detailViewContentSeq").val());
|
|
||||||
url += "&fileSeq="+$(this).attr("data-fileseq");
|
|
||||||
window.open(encodeURI(url));
|
|
||||||
})
|
|
||||||
|
|
||||||
$(document).on('click', '#zipDownBtn', function (){
|
|
||||||
const checkFiles = $(".fileCheckBox:checked");
|
|
||||||
if(checkFiles.length>0){
|
|
||||||
let url = "/board/fileDownloadToZip?"
|
|
||||||
url += "contentSeq="+Number($("#detailViewContentSeq").val());
|
|
||||||
checkFiles.each(function (idx, el){
|
|
||||||
url += "&fileSeq="+Number($(el).attr("data-fileseq"))
|
|
||||||
});
|
|
||||||
window.open(encodeURI(url));
|
|
||||||
}else{
|
|
||||||
alert("선택된 파일이 없습니다.")
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
$(document).on('click', '#deleteBtn', function (){
|
|
||||||
if(confirm("이 게시물을 삭제하시겠습니까?\n되돌릴 수 없습니다.")){
|
|
||||||
$.ajax({
|
|
||||||
type : 'DELETE',
|
|
||||||
url : "/board/deleteContent",
|
|
||||||
data : {contentSeq: Number($(this).attr("data-contentseq"))},
|
|
||||||
beforeSend: function (xhr){
|
|
||||||
xhr.setRequestHeader($("[name='_csrf_header']").val(), $("[name='_csrf']").val());
|
|
||||||
},
|
|
||||||
success : function(data) {
|
|
||||||
alert("저장되었습니다.");
|
|
||||||
location.reload();
|
|
||||||
},
|
|
||||||
error : function(xhr, status) {
|
|
||||||
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
})
|
|
||||||
$(document).on('click', '#modifyBtn', function (){
|
|
||||||
location.href = "/board/contentWrite?contentSeq="+Number($(this).attr("data-contentseq"));
|
|
||||||
})
|
|
||||||
|
|
||||||
function getContentSeq(){
|
|
||||||
return $(".contentCheckBox:checked").val();
|
|
||||||
}
|
|
||||||
|
|
||||||
function getBoardContent(contentSeq){
|
|
||||||
if(contentSeq !== undefined){
|
|
||||||
const viewContentSeq = $("#detailViewContentSeq").val();
|
|
||||||
if(contentSeq !== viewContentSeq){
|
|
||||||
$.ajax({
|
|
||||||
url: '/board/selectBoardContent',
|
|
||||||
data: {contentSeq: contentSeq},
|
|
||||||
type: 'GET',
|
|
||||||
dataType:"html",
|
|
||||||
success: function(html){
|
|
||||||
$("#contentDiv").empty().append(html)
|
|
||||||
if($("#contentStatus").val() !== "D"){
|
|
||||||
const viewCntTd = $(".contentCheckBox:checked").parents("tr").find(".viewCntTd");
|
|
||||||
viewCntTd.text(Number(viewCntTd.text())+1);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
error:function(){
|
|
||||||
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function getBoardLog(contentSeq){
|
|
||||||
if(contentSeq !== undefined){
|
|
||||||
$.ajax({
|
|
||||||
url: '/board/selectBoardLog',
|
|
||||||
data: {contentSeq: contentSeq},
|
|
||||||
type: 'GET',
|
|
||||||
dataType:"html",
|
|
||||||
success: function(html){
|
|
||||||
$("#logDiv").empty().append(html)
|
|
||||||
},
|
|
||||||
error:function(){
|
|
||||||
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,3 +1,117 @@
|
||||||
$(function (){
|
$(function (){
|
||||||
setSearchCondition();
|
$("#dateSelectorDiv").datepicker({
|
||||||
|
format: "yyyy-mm-dd",
|
||||||
|
language: "ko"
|
||||||
|
});
|
||||||
})
|
})
|
||||||
|
|
||||||
|
$(document).on('click', '.contentTr', function (){
|
||||||
|
$(".contentCheckBox").prop('checked', false);
|
||||||
|
const target = $(this).find(".contentCheckBox")[0];
|
||||||
|
target.checked = true;
|
||||||
|
const selectedTab = $(".nav-tabs").find(".active")[0].id;
|
||||||
|
if(selectedTab === "contentTab"){
|
||||||
|
getBoardContent(target.value);
|
||||||
|
}else if(selectedTab === "logTab"){
|
||||||
|
getBoardLog(target.value);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
$(document).on('change', '#fileCheckAll', function (){
|
||||||
|
$(".fileCheckBox").prop("checked", this.checked);
|
||||||
|
})
|
||||||
|
|
||||||
|
$(document).on('click', '#contentTab', function (){
|
||||||
|
getBoardContent(getContentSeq())
|
||||||
|
})
|
||||||
|
$(document).on('click', '#logTab', function (){
|
||||||
|
getBoardLog(getContentSeq())
|
||||||
|
})
|
||||||
|
|
||||||
|
$(document).on('click', '.fileDownLink', function (){
|
||||||
|
let url = "/board/fileDownload?"
|
||||||
|
url += "contentSeq="+Number($("#detailViewContentSeq").val());
|
||||||
|
url += "&fileSeq="+$(this).attr("data-fileseq");
|
||||||
|
window.open(encodeURI(url));
|
||||||
|
})
|
||||||
|
|
||||||
|
$(document).on('click', '#zipDownBtn', function (){
|
||||||
|
const checkFiles = $(".fileCheckBox:checked");
|
||||||
|
if(checkFiles.length>0){
|
||||||
|
let url = "/board/fileDownloadToZip?"
|
||||||
|
url += "contentSeq="+Number($("#detailViewContentSeq").val());
|
||||||
|
checkFiles.each(function (idx, el){
|
||||||
|
url += "&fileSeq="+Number($(el).attr("data-fileseq"))
|
||||||
|
});
|
||||||
|
window.open(encodeURI(url));
|
||||||
|
}else{
|
||||||
|
alert("선택된 파일이 없습니다.")
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
$(document).on('click', '#deleteBtn', function (){
|
||||||
|
if(confirm("이 게시물을 삭제하시겠습니까?\n되돌릴 수 없습니다.")){
|
||||||
|
$.ajax({
|
||||||
|
type : 'DELETE',
|
||||||
|
url : "/board/deleteContent",
|
||||||
|
data : {contentSeq: Number($(this).attr("data-contentseq"))},
|
||||||
|
beforeSend: function (xhr){
|
||||||
|
xhr.setRequestHeader($("[name='_csrf_header']").val(), $("[name='_csrf']").val());
|
||||||
|
},
|
||||||
|
success : function(data) {
|
||||||
|
alert("저장되었습니다.");
|
||||||
|
location.reload();
|
||||||
|
},
|
||||||
|
error : function(xhr, status) {
|
||||||
|
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
$(document).on('click', '#modifyBtn', function (){
|
||||||
|
location.href = "/board/contentWrite?contentSeq="+Number($(this).attr("data-contentseq"));
|
||||||
|
})
|
||||||
|
|
||||||
|
function getContentSeq(){
|
||||||
|
return $(".contentCheckBox:checked").val();
|
||||||
|
}
|
||||||
|
|
||||||
|
function getBoardContent(contentSeq){
|
||||||
|
if(contentSeq !== undefined){
|
||||||
|
const viewContentSeq = $("#detailViewContentSeq").val();
|
||||||
|
if(contentSeq !== viewContentSeq){
|
||||||
|
$.ajax({
|
||||||
|
url: '/board/selectBoardContent',
|
||||||
|
data: {contentSeq: contentSeq},
|
||||||
|
type: 'GET',
|
||||||
|
dataType:"html",
|
||||||
|
success: function(html){
|
||||||
|
$("#contentDiv").empty().append(html)
|
||||||
|
if($("#contentStatus").val() !== "D"){
|
||||||
|
const viewCntTd = $(".contentCheckBox:checked").parents("tr").find(".viewCntTd");
|
||||||
|
viewCntTd.text(Number(viewCntTd.text())+1);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
error:function(){
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function getBoardLog(contentSeq){
|
||||||
|
if(contentSeq !== undefined){
|
||||||
|
$.ajax({
|
||||||
|
url: '/board/selectBoardLog',
|
||||||
|
data: {contentSeq: contentSeq},
|
||||||
|
type: 'GET',
|
||||||
|
dataType:"html",
|
||||||
|
success: function(html){
|
||||||
|
$("#logDiv").empty().append(html)
|
||||||
|
},
|
||||||
|
error:function(){
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -70,6 +70,10 @@ $(document).on('click', '#searchBtn', function (){
|
||||||
})
|
})
|
||||||
|
|
||||||
function searchParamCheck(){
|
function searchParamCheck(){
|
||||||
|
if(!$("#searchCategorySeq").val()){
|
||||||
|
alert("분류를 하나 이상 선택해주셔야 합니다.")
|
||||||
|
return false;
|
||||||
|
}
|
||||||
let emptyCnt = 0;
|
let emptyCnt = 0;
|
||||||
if(!$("#title").val()){
|
if(!$("#title").val()){
|
||||||
emptyCnt++;
|
emptyCnt++;
|
||||||
|
|
@ -86,8 +90,8 @@ function searchParamCheck(){
|
||||||
if(!$("#originalName").val()){
|
if(!$("#originalName").val()){
|
||||||
emptyCnt++;
|
emptyCnt++;
|
||||||
}
|
}
|
||||||
if(emptyCnt>3){
|
if(emptyCnt>4){
|
||||||
alert("분류를 제외한 5가지 조건 중 2가지 이상 입력해주세요.")
|
alert("분류를 제외한 5가지 조건 중 1가지 이상 입력해주세요.")
|
||||||
return false;
|
return false;
|
||||||
}else{
|
}else{
|
||||||
return true;
|
return true;
|
||||||
|
|
|
||||||
|
|
@ -1,18 +0,0 @@
|
||||||
|
|
||||||
function setSearchCondition(){
|
|
||||||
const searchConditionSelector = $("#searchConditionSelector").val();
|
|
||||||
const searchTextDiv = $("#searchTextDiv");
|
|
||||||
const dateSelectorDiv = $("#dateSelectorDiv");
|
|
||||||
if(searchConditionSelector === "createDate"){
|
|
||||||
dateSelectorDiv.show();
|
|
||||||
dateSelectorDiv.children().removeAttr("disabled");
|
|
||||||
searchTextDiv.hide();
|
|
||||||
searchTextDiv.children().attr("disabled", "disabled");
|
|
||||||
}else{
|
|
||||||
$("#textSearch").attr("name", searchConditionSelector);
|
|
||||||
searchTextDiv.show();
|
|
||||||
searchTextDiv.children().removeAttr("disabled");
|
|
||||||
dateSelectorDiv.hide();
|
|
||||||
dateSelectorDiv.children().attr("disabled", "disabled");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -5,7 +5,6 @@
|
||||||
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
|
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
|
||||||
layout:decorate="~{layout/layout}">
|
layout:decorate="~{layout/layout}">
|
||||||
<th:block layout:fragment="script">
|
<th:block layout:fragment="script">
|
||||||
<script type="text/javascript" th:src="@{/js/board/boardCommon.js}"></script>
|
|
||||||
<script type="text/javascript" th:src="@{/js/board/contentList.js}"></script>
|
<script type="text/javascript" th:src="@{/js/board/contentList.js}"></script>
|
||||||
</th:block>
|
</th:block>
|
||||||
<div layout:fragment="content">
|
<div layout:fragment="content">
|
||||||
|
|
@ -20,6 +19,7 @@
|
||||||
<div class="col-7">
|
<div class="col-7">
|
||||||
<!--검색 form-->
|
<!--검색 form-->
|
||||||
<form method="get" th:action="@{/board/contentList}">
|
<form method="get" th:action="@{/board/contentList}">
|
||||||
|
<input type="hidden" name="categorySeq" id="categorySeq" th:value="${searchParams.categorySeq}">
|
||||||
<input type="hidden" name="pageIndex" id="pageIndex" th:value="${searchParams.pageIndex}">
|
<input type="hidden" name="pageIndex" id="pageIndex" th:value="${searchParams.pageIndex}">
|
||||||
<div class="row justify-content-between">
|
<div class="row justify-content-between">
|
||||||
<div class="col-auto row">
|
<div class="col-auto row">
|
||||||
|
|
@ -27,45 +27,48 @@
|
||||||
<label for="rowCnt" class="col-form-label">데이터 수</label>
|
<label for="rowCnt" class="col-form-label">데이터 수</label>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-auto">
|
<div class="col-auto">
|
||||||
<select class="form-select" name="rowCnt" id="rowCnt">
|
<select class="form-select form-control-sm" name="rowCnt" id="rowCnt">
|
||||||
<th:block th:each="num : ${#numbers.sequence(1,5)}">
|
<th:block th:each="num : ${#numbers.sequence(1,5)}">
|
||||||
<option th:value="${num*10}" th:text="${num*10}" th:selected="${searchParams.rowCnt==num*10}"></option>
|
<option th:value="${num*10}" th:text="${num*10}" th:selected="${searchParams.rowCnt==num*10}"></option>
|
||||||
</th:block>
|
</th:block>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="col-auto card">
|
||||||
|
<div class="row justify-content-end pt-1">
|
||||||
<div class="col-auto">
|
<div class="col-auto">
|
||||||
<div class="row justify-content-end">
|
<div class="row mb-1">
|
||||||
<div class="col-auto">
|
<label for="title" class="col-sm-2 col-form-label">제목</label>
|
||||||
<select class="form-select" id="searchConditionSelector">
|
<div class="col-sm-4">
|
||||||
<option>검색조건</option>
|
<input type="text" class="form-control form-control-sm" id="title" name="title" th:value="${searchParams.title}">
|
||||||
</select>
|
|
||||||
<!--<select class="form-select" id="searchConditionSelector">
|
|
||||||
<option value="userId" th:selected="${searchParams.userId!=null and searchParams.userId!=''}">아이디</option>
|
|
||||||
<option value="name" th:selected="${searchParams.name!=null and searchParams.name!=''}">이름</option>
|
|
||||||
<option value="positionName" th:selected="${searchParams.positionName!=null and searchParams.positionName!=''}">부서</option>
|
|
||||||
<option value="departmentName" th:selected="${searchParams.departmentName!=null and searchParams.departmentName!=''}">직급</option>
|
|
||||||
<option value="createDate" th:selected="${searchParams.startDate!=null and searchParams.startDate!=''} or ${searchParams.endDate!=null and searchParams.endDate!=''}">생성일</option>
|
|
||||||
</select>-->
|
|
||||||
</div>
|
</div>
|
||||||
<div class="col-auto" id="searchTextDiv">
|
<label for="createName" class="col-sm-2 col-form-label">작성자</label>
|
||||||
<input type="text" class="form-control" id="textSearch">
|
<div class="col-sm-4">
|
||||||
<!--<input type="text" class="form-control" id="textSearch" th:value="${
|
<input type="text" class="form-control form-control-sm" id="createName" name="createName" th:value="${searchParams.createName}">
|
||||||
(searchParams.userId!=null and searchParams.userId!='')?searchParams.userId:(
|
|
||||||
(searchParams.name!=null and searchParams.name!='')?searchParams.name:(
|
|
||||||
(searchParams.positionName!=null and searchParams.positionName!='')?searchParams.positionName:(
|
|
||||||
(searchParams.departmentName!=null and searchParams.departmentName!='')?searchParams.departmentName:''
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
}">-->
|
|
||||||
</div>
|
</div>
|
||||||
<div class="col-auto input-group w-auto input-daterange" id="dateSelectorDiv" style="display: none">
|
|
||||||
<input type="text" class="form-control" id="startDate" name="startDate" placeholder="시작일" autocomplete="off" disabled th:value="${searchParams.startDate}">
|
|
||||||
<input type="text" class="form-control" id="endDate" name="endDate" placeholder="종료일" autocomplete="off" disabled th:value="${searchParams.endDate}">
|
|
||||||
</div>
|
</div>
|
||||||
<div class="col-auto">
|
<div class="row mb-1">
|
||||||
<input type="submit" class="btn btn-primary" id="searchBtn" value="검색">
|
<label for="tagName" class="col-sm-2 col-form-label" data-bs-toggle="tooltip" data-bs-placement="top" title="# 없이 ,로 구분하여 태그 입력">해시태그</label>
|
||||||
|
<div class="col-sm-4">
|
||||||
|
<input type="text" class="form-control form-control-sm" id="tagName" name="tagName" th:value="${searchParams.hashTagStr}">
|
||||||
|
</div>
|
||||||
|
<label for="originalName" class="col-sm-2 col-form-label">첨부파일</label>
|
||||||
|
<div class="col-sm-4">
|
||||||
|
<input type="text" class="form-control form-control-sm" id="originalName" name="originalName" th:value="${searchParams.originalName}">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<label for="startDate" class="col-sm-2 col-form-label">작성일</label>
|
||||||
|
<div class="col-sm-6">
|
||||||
|
<div class="col-auto input-group w-auto input-daterange" id="dateSelectorDiv">
|
||||||
|
<input type="text" class="form-control form-control-sm" id="startDate" name="startDate" placeholder="시작일" autocomplete="off" th:value="${searchParams.startDate}" readonly>
|
||||||
|
<input type="text" class="form-control form-control-sm" id="endDate" name="endDate" placeholder="종료일" autocomplete="off" th:value="${searchParams.endDate}" readonly>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-auto my-auto">
|
||||||
|
<input type="submit" class="btn btn-primary py-4" id="searchBtn" value="검색">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -6,8 +6,8 @@
|
||||||
layout:decorate="~{layout/layout}">
|
layout:decorate="~{layout/layout}">
|
||||||
<th:block layout:fragment="script">
|
<th:block layout:fragment="script">
|
||||||
<script type="text/javascript" th:src="@{/vendor/jquery-ui-1.13.0.dragSort/jquery-ui.min.js}"></script>
|
<script type="text/javascript" th:src="@{/vendor/jquery-ui-1.13.0.dragSort/jquery-ui.min.js}"></script>
|
||||||
<script type="text/javascript" th:src="@{/js/board/boardCommon.js}"></script>
|
|
||||||
<script type="text/javascript" th:src="@{/js/board/contentSearch.js}"></script>
|
<script type="text/javascript" th:src="@{/js/board/contentSearch.js}"></script>
|
||||||
|
<script type="text/javascript" th:src="@{/js/board/contentList.js}"></script>
|
||||||
</th:block>
|
</th:block>
|
||||||
<div layout:fragment="content">
|
<div layout:fragment="content">
|
||||||
<main class="pt-3">
|
<main class="pt-3">
|
||||||
|
|
@ -44,20 +44,20 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row mb-1">
|
<div class="row mb-1">
|
||||||
<label for="title" class="col-sm-2 col-form-label">해시태그</label>
|
<label for="tagName" class="col-sm-2 col-form-label">해시태그</label>
|
||||||
<div class="col-sm-4">
|
<div class="col-sm-4">
|
||||||
<input type="text" class="form-control form-control-sm" id="tagName" name="tagName" placeholder="# 없이 ,로 구분하여 태그 입력">
|
<input type="text" class="form-control form-control-sm" id="tagName" name="tagName" placeholder="# 없이 ,로 구분하여 태그 입력">
|
||||||
</div>
|
</div>
|
||||||
<label for="startDate" class="col-sm-2 col-form-label">작성일</label>
|
<label for="startDate" class="col-sm-2 col-form-label">작성일</label>
|
||||||
<div class="col-sm-4">
|
<div class="col-sm-4">
|
||||||
<div class="col-auto input-group w-auto input-daterange" id="dateSelectorDiv">
|
<div class="col-auto input-group w-auto input-daterange" id="dateSelectorDiv">
|
||||||
<input type="text" class="form-control form-control-sm" id="startDate" name="startDate" placeholder="시작일" autocomplete="off">
|
<input type="text" class="form-control form-control-sm" id="startDate" name="startDate" placeholder="시작일" autocomplete="off" readonly>
|
||||||
<input type="text" class="form-control form-control-sm" id="endDate" name="endDate" placeholder="종료일" autocomplete="off">
|
<input type="text" class="form-control form-control-sm" id="endDate" name="endDate" placeholder="종료일" autocomplete="off" readonly>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<label for="title" class="col-sm-2 col-form-label">첨부파일</label>
|
<label for="originalName" class="col-sm-2 col-form-label">첨부파일</label>
|
||||||
<div class="col-sm-4">
|
<div class="col-sm-4">
|
||||||
<input type="text" class="form-control form-control-sm" id="originalName" name="originalName">
|
<input type="text" class="form-control form-control-sm" id="originalName" name="originalName">
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,7 @@
|
||||||
|
|
||||||
<!--bootstrap-->
|
<!--bootstrap-->
|
||||||
<script type="text/javascript" th:src="@{/vendor/bootstrap-5.1.3-dist/js/bootstrap.bundle.min.js}"></script>
|
<script type="text/javascript" th:src="@{/vendor/bootstrap-5.1.3-dist/js/bootstrap.bundle.min.js}"></script>
|
||||||
|
<script type="text/javascript" th:src="@{/vendor/bootstrap-5.1.3-dist/js/popper.min.js}"></script>
|
||||||
<!--jquery-->
|
<!--jquery-->
|
||||||
<script type="text/javascript" th:src="@{/vendor/jquery-3.6.0/jquery-3.6.0.min.js}"></script>
|
<script type="text/javascript" th:src="@{/vendor/jquery-3.6.0/jquery-3.6.0.min.js}"></script>
|
||||||
<!--bootstrap-datepicker-->
|
<!--bootstrap-datepicker-->
|
||||||
|
|
|
||||||
|
|
@ -46,11 +46,11 @@
|
||||||
<input type="password" class="form-control" id="password" name="password" placeholder="비밀번호">
|
<input type="password" class="form-control" id="password" name="password" placeholder="비밀번호">
|
||||||
<label for="password">비밀번호</label>
|
<label for="password">비밀번호</label>
|
||||||
</div>
|
</div>
|
||||||
<div class="checkbox mb-3">
|
<!--<div class="checkbox mb-3">
|
||||||
<label>
|
<label>
|
||||||
<input type="checkbox" class="disabled" value="remember-me"> 계정저장(비활성화)
|
<input type="checkbox" class="disabled" value="remember-me"> 계정저장(비활성화)
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</div>-->
|
||||||
<button class="w-100 btn btn-lg btn-primary" type="submit">로그인</button>
|
<button class="w-100 btn btn-lg btn-primary" type="submit">로그인</button>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue