...
This commit is contained in:
parent
2caf83af1e
commit
c4001848fc
@ -44,6 +44,7 @@ dependencies {
|
||||
implementation("org.springframework.boot:spring-boot-starter-thymeleaf")
|
||||
implementation("nz.net.ultraq.thymeleaf:thymeleaf-layout-dialect")
|
||||
implementation ("org.jsoup:jsoup:1.18.1")
|
||||
implementation ("com.drewnoakes:metadata-extractor:2.19.0")
|
||||
implementation("org.springframework.boot:spring-boot-starter-security")
|
||||
compileOnly("org.projectlombok:lombok")
|
||||
runtimeOnly("org.mariadb.jdbc:mariadb-java-client")
|
||||
|
||||
@ -1,5 +1,7 @@
|
||||
package kr.lunaticbum.back.lun.controllers
|
||||
|
||||
import com.drew.imaging.ImageMetadataReader
|
||||
import com.drew.metadata.Metadata
|
||||
import com.google.gson.Gson
|
||||
import jakarta.servlet.http.HttpServletRequest
|
||||
import jakarta.servlet.http.HttpServletResponse
|
||||
@ -7,7 +9,6 @@ import kr.lunaticbum.back.lun.configs.GlobalEnvironment
|
||||
import kr.lunaticbum.back.lun.model.CurrentWeather
|
||||
import kr.lunaticbum.back.lun.model.FileSaveResult
|
||||
import kr.lunaticbum.back.lun.model.LocationLogService
|
||||
import kr.lunaticbum.back.lun.model.ResponceResult
|
||||
import kr.lunaticbum.back.lun.utils.LogService
|
||||
import kr.lunaticbum.back.lun.utils.getFileExtension
|
||||
import org.springframework.beans.factory.annotation.Autowired
|
||||
@ -156,6 +157,13 @@ class BlogController() {
|
||||
// printWriter.flush()
|
||||
logService.log("imgUploadPath $imgUploadPath")
|
||||
logService.log("imgUploadPath ${File(imgUploadPath).exists()}")
|
||||
val metadata: Metadata? = ImageMetadataReader.readMetadata(File(imgUploadPath))
|
||||
metadata?.let {
|
||||
it.directories?.forEach { directory ->
|
||||
logService.log(directory.name)
|
||||
logService.log(directory.tags.map { tag -> logService.log("tag.tagName >>> ${tag.tagName} || tag.description ${tag.description}")}.joinToString(" \n"))
|
||||
}
|
||||
}
|
||||
} catch (e: IOException) {
|
||||
e.printStackTrace()
|
||||
} finally {
|
||||
|
||||
17
src/main/kotlin/kr/lunaticbum/back/lun/controllers/Home.kt
Normal file
17
src/main/kotlin/kr/lunaticbum/back/lun/controllers/Home.kt
Normal file
@ -0,0 +1,17 @@
|
||||
package kr.lunaticbum.back.lun.controllers
|
||||
|
||||
import org.springframework.web.bind.annotation.GetMapping
|
||||
import org.springframework.web.bind.annotation.RequestMapping
|
||||
import org.springframework.web.bind.annotation.RestController
|
||||
import org.springframework.web.servlet.ModelAndView
|
||||
|
||||
@RestController
|
||||
@RequestMapping()
|
||||
class Home {
|
||||
|
||||
@GetMapping("/","/home")
|
||||
fun home() : ModelAndView {
|
||||
val vm = ModelAndView("content/blog/write")
|
||||
return vm
|
||||
}
|
||||
}
|
||||
@ -17,6 +17,7 @@ import org.springframework.context.annotation.Bean
|
||||
import org.springframework.scheduling.annotation.Scheduled
|
||||
import org.springframework.web.bind.annotation.*
|
||||
import org.springframework.web.reactive.function.client.WebClient
|
||||
import java.math.BigDecimal
|
||||
import java.text.SimpleDateFormat
|
||||
import java.util.*
|
||||
|
||||
@ -139,7 +140,7 @@ class Telegram {
|
||||
Gson().fromJson(result, CurrentWeather::class.java)?.let { sss ->
|
||||
val client = WebClient.create()
|
||||
client.get()
|
||||
.uri("https://api.telegram.org/${globalEvv.telegramBotKey}/sendMessage?chat_id=${globalEvv.telegramMyId}&text=${sss.getSummaryInfo()}")
|
||||
.uri("https://api.telegram.org/${globalEvv.telegramBotKey}/sendMessage?chat_id=${globalEvv.telegramMyId}&text=${sss.getSummaryInfo(BigDecimal(it.mLatitude).setScale(5).toString(),BigDecimal(it.mLongitude).setScale(5).toString())}")
|
||||
.retrieve()
|
||||
.bodyToMono(String::class.java).block() ?: "FAIL"
|
||||
}
|
||||
|
||||
@ -54,6 +54,7 @@ class UserController {
|
||||
logService.log(file.absolutePath)
|
||||
vm.modelMap.put(EncTypeKey,EncType11)
|
||||
vm.modelMap.put(ApiKeyWordKey,"JOIN")
|
||||
vm.modelMap.put("title","회원이 들어는 구나~!!")
|
||||
return vm
|
||||
}
|
||||
|
||||
@ -120,7 +121,8 @@ class UserController {
|
||||
}
|
||||
}
|
||||
}
|
||||
val responce = ResponseEntity.ok().contentType(MediaType.APPLICATION_JSON).body(ResponceResult().apply {
|
||||
val responce = ResponseEntity.ok().headers {
|
||||
}.contentType(MediaType.APPLICATION_JSON).body(ResponceResult().apply {
|
||||
this.resultCode = lResultCode
|
||||
this.resultMsg = lResultMsg
|
||||
})
|
||||
|
||||
@ -52,7 +52,6 @@ class Location {
|
||||
class CurrentWeather {
|
||||
var location: Location? = null
|
||||
var current: Current? = null
|
||||
|
||||
fun getSummaryInfo() = "지역:${this.location?.name}\n날씨:${this.current?.condition?.text}\n온도:${this.current?.temp_c}\n습도:${this.current?.humidity}\n" +
|
||||
"체감온도:${this.current?.feelslike_c}\nhttps://www.accuweather.com/ko/search-locations?query=${this.location?.lat},${this.location?.lon}"
|
||||
fun getSummaryInfo(lat : String,lon : String) = "지역:${this.location?.name}\n날씨:${this.current?.condition?.text}\n온도:${this.current?.temp_c}\n습도:${this.current?.humidity}\n" +
|
||||
"체감온도:${this.current?.feelslike_c}\nhttps://www.accuweather.com/ko/search-locations?query=${lat},${lon}"
|
||||
}
|
||||
@ -26,6 +26,11 @@ spring.data.mongodb.database=l
|
||||
spring.thymeleaf.prefix=classpath:/templates/
|
||||
spring.thymeleaf.suffix=.html
|
||||
spring.thymeleaf.enabled=true
|
||||
|
||||
spring.servlet.multipart.max-file-size=1024MB
|
||||
spring.servlet.multipart.max-request-size=1024MB
|
||||
spring.servlet.multipart.enabled=true
|
||||
|
||||
# ?? ???? ??? ?? ? ?? ????.
|
||||
spring.devtools.livereload.enabled=true
|
||||
# thymeleaf? ?? ??? ??? ???. cache=false ??(???? true)
|
||||
|
||||
@ -1,62 +1,87 @@
|
||||
:root {
|
||||
--WindowFull : 100%;
|
||||
--WindowFull : 99vw;
|
||||
--TopHeight: 160px;
|
||||
--FooterHeight: 160px;
|
||||
--ContentVerticalMargin: 5px;
|
||||
/*background-image: url("data:image/svg+xml,<svg id='patternId' width='100%' height='100%' xmlns='http://www.w3.org/2000/svg'><defs><pattern id='a' patternUnits='userSpaceOnUse' width='45' height='51.96' patternTransform='scale(2) rotate(20)'><rect x='0' y='0' width='100%' height='100%' fill='%23202025ff'/><path d='M52.48 44.47a15 15 0 01-14.96 0 15 15 0 00-7.48 12.96M7.48 44.42a15 15 0 01-14.96 0M15 57.44c0-5.35-2.9-10.35-7.52-13.02a15 15 0 017.48-12.97M7.48 18.5a14.97 14.97 0 01-14.98-.03m15.02-.03A15 15 0 0115 5.47a15 15 0 00-4.4-10.62m23.8.05A15 15 0 0030 5.53a15 15 0 017.48 12.96 14.9 14.9 0 0015.02-.03m-22.5 13a15.13 15.13 0 017.52 13.01m-7.56-39a15 15 0 01-14.96 0M7.48 18.5a15 15 0 017.48 12.96 15 15 0 0015.04 0 15 15 0 017.48-12.96' stroke-width='3' stroke='%23ec914b8f' fill='none'/></pattern></defs><rect width='800%' height='800%' transform='translate(-38,-21.84)' fill='url(%23a)'/></svg>")*/
|
||||
}
|
||||
input, select ,button{
|
||||
|
||||
html {
|
||||
margin: 1vh 1vw;
|
||||
background: #202025ee;
|
||||
}
|
||||
body {
|
||||
align-content: center;
|
||||
padding: 1vh 1vw;
|
||||
background-image: url("data:image/svg+xml,<svg id='patternId' width='100%' height='100%' xmlns='http://www.w3.org/2000/svg'><defs><pattern id='a' patternUnits='userSpaceOnUse' width='45' height='51.96' patternTransform='scale(2) rotate(20)'><rect x='0' y='0' width='100%' height='100%' fill='%23202025ff'/><path d='M52.48 44.47a15 15 0 01-14.96 0 15 15 0 00-7.48 12.96M7.48 44.42a15 15 0 01-14.96 0M15 57.44c0-5.35-2.9-10.35-7.52-13.02a15 15 0 017.48-12.97M7.48 18.5a14.97 14.97 0 01-14.98-.03m15.02-.03A15 15 0 0115 5.47a15 15 0 00-4.4-10.62m23.8.05A15 15 0 0030 5.53a15 15 0 017.48 12.96 14.9 14.9 0 0015.02-.03m-22.5 13a15.13 15.13 0 017.52 13.01m-7.56-39a15 15 0 01-14.96 0M7.48 18.5a15 15 0 017.48 12.96 15 15 0 0015.04 0 15 15 0 017.48-12.96' stroke-width='3' stroke='%23ec914b8f' fill='none'/></pattern></defs><rect width='800%' height='800%' transform='translate(-38,-21.84)' fill='url(%23a)'/></svg>")
|
||||
}
|
||||
|
||||
body > *{
|
||||
align-content: center;
|
||||
color: white;
|
||||
background: #2d2f34;
|
||||
border: black;
|
||||
border-width: 1px;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
position: relative;
|
||||
padding: 1vh 1vw;
|
||||
}
|
||||
body, html {
|
||||
background-color: black;
|
||||
margin: 0px;
|
||||
height: 100lvh;
|
||||
|
||||
/*#main_layer {*/
|
||||
/* width: 100%;*/
|
||||
/* margin: 0 auto;*/
|
||||
/* position: relative;*/
|
||||
/* background: #F0F0F524;*/
|
||||
/* border-radius: 10px;*/
|
||||
/*}*/
|
||||
|
||||
input, select ,button {
|
||||
align-content: center;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
color: white;
|
||||
background: #40404564;
|
||||
position: relative;
|
||||
outline-width: thin;
|
||||
outline-color: #ec914b8f;
|
||||
border-color: #ec914b8f;
|
||||
border-style: groove;
|
||||
border-width: 1px;
|
||||
}
|
||||
|
||||
header {
|
||||
width: 100%;
|
||||
align-content: center;
|
||||
top: 0;
|
||||
background: #F0F0F524;
|
||||
border-top: #ec914b8f;
|
||||
border-radius: 10px 30px;
|
||||
border-width: 1px;
|
||||
height: 8vh;
|
||||
min-height: 8vh;
|
||||
display: flex;
|
||||
position: relative;
|
||||
height: var(--TopHeight);
|
||||
background-image: url("../blog/post/images/42cc3207-42a4-4ceb-8a2f-f5f7a89496fc.jpg");
|
||||
background-repeat: revert;
|
||||
background-size: contain;
|
||||
background-origin: revert;
|
||||
}
|
||||
|
||||
#content {
|
||||
margin-left: 2.5%;
|
||||
margin-right: 2.5%;
|
||||
#main_layer {
|
||||
margin: 1vw 1vh;
|
||||
position: relative;
|
||||
overflow-y: auto;
|
||||
overflow-x: clip;
|
||||
background: black;
|
||||
min-height: calc((var(--TopHeight) + var(--FooterHeight)) * 2);
|
||||
height: calc(var(--WindowFull) - calc(var(--FooterHeight) + var(--TopHeight)));
|
||||
background-image: url("../blog/post/images/bb109b5a-f907-4da1-9c4f-55533395ed6e.jpg");
|
||||
background-repeat: revert;
|
||||
background-size: contain;
|
||||
background-origin: revert;
|
||||
height: 70vh;
|
||||
min-height: 8vh;
|
||||
}
|
||||
|
||||
#main_layer > div {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
|
||||
#content > * {
|
||||
margin-top: var(--ContentVerticalMargin);
|
||||
margin-bottom: var(--ContentVerticalMargin);
|
||||
|
||||
}
|
||||
|
||||
footer {
|
||||
width: 100%;
|
||||
align-content: center;
|
||||
display: flex;
|
||||
bottom: 0;
|
||||
border-top: #ec914b8f;
|
||||
background: #F0F0F524;
|
||||
border-radius: 30px 10px;
|
||||
border-width: 1px;
|
||||
height: 8vh;
|
||||
min-height: 8vh;
|
||||
position: relative;
|
||||
height: var(--FooterHeight);
|
||||
background-image: url("../blog/post/images/42cc3207-42a4-4ceb-8a2f-f5f7a89496fc.jpg");
|
||||
background-repeat: revert;
|
||||
background-size: contain;
|
||||
transform: scaleY(-1);
|
||||
}
|
||||
@ -6,11 +6,11 @@
|
||||
|
||||
.toastui-editor-dark .toastui-editor-md-container,
|
||||
.toastui-editor-dark .toastui-editor-ww-container {
|
||||
background-color: #121212;
|
||||
background-color: #12121288;
|
||||
}
|
||||
|
||||
.toastui-editor-dark .toastui-editor-defaultUI-toolbar {
|
||||
background-color: #232428;
|
||||
background-color: #23242888;
|
||||
border-bottom-color: #303238;
|
||||
}
|
||||
|
||||
@ -20,20 +20,20 @@
|
||||
}
|
||||
|
||||
.toastui-editor-dark .toastui-editor-toolbar-icons:not(:disabled):hover {
|
||||
background-color: #36383f;
|
||||
background-color: #36383f88;
|
||||
border-color: #36383f;
|
||||
}
|
||||
|
||||
.toastui-editor-dark .toastui-editor-toolbar-divider {
|
||||
background-color: #303238;
|
||||
background-color: #30323888;
|
||||
}
|
||||
|
||||
.toastui-editor-dark .toastui-editor-tooltip {
|
||||
background-color: #535662;
|
||||
background-color: #53566288;
|
||||
}
|
||||
|
||||
.toastui-editor-dark .toastui-editor-tooltip .arrow {
|
||||
background-color: #535662;
|
||||
background-color: #53566288;
|
||||
}
|
||||
|
||||
.toastui-editor-dark .toastui-editor-defaultUI-toolbar .scroll-sync::before {
|
||||
@ -45,23 +45,23 @@
|
||||
}
|
||||
|
||||
.toastui-editor-dark .toastui-editor-defaultUI-toolbar .switch {
|
||||
background-color: #2b4455;
|
||||
background-color: #2b445588;
|
||||
}
|
||||
|
||||
.toastui-editor-dark .toastui-editor-defaultUI-toolbar input:checked + .switch {
|
||||
background-color: #2b4455;
|
||||
background-color: #2b445588;
|
||||
}
|
||||
|
||||
.toastui-editor-dark .toastui-editor-defaultUI-toolbar .switch::before {
|
||||
background-color: #8f939f;
|
||||
background-color: #8f939f88;
|
||||
}
|
||||
|
||||
.toastui-editor-dark .toastui-editor-defaultUI-toolbar input:checked + .switch::before {
|
||||
background-color: #67ccff;
|
||||
background-color: #67ccff88;
|
||||
}
|
||||
|
||||
.toastui-editor-dark .toastui-editor-main .toastui-editor-md-splitter {
|
||||
background-color: #303238;
|
||||
background-color: #30323888;
|
||||
}
|
||||
|
||||
.toastui-editor-dark .toastui-editor-mode-switch {
|
||||
@ -71,25 +71,25 @@
|
||||
|
||||
.toastui-editor-dark .toastui-editor-mode-switch .tab-item {
|
||||
border-color: #393b42;
|
||||
background-color: #232428;
|
||||
background-color: #23242888;
|
||||
color: #757a86;
|
||||
}
|
||||
|
||||
.toastui-editor-dark .toastui-editor-mode-switch .tab-item.active {
|
||||
border-top-color: #121212;
|
||||
background-color: #121212;
|
||||
background-color: #12121288;
|
||||
color: #eee;
|
||||
}
|
||||
|
||||
.toastui-editor-dark .toastui-editor-popup,
|
||||
.toastui-editor-dark .toastui-editor-context-menu {
|
||||
background-color: #121212;
|
||||
background-color: #12121288;
|
||||
box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.08);
|
||||
border-color: #494c56;
|
||||
}
|
||||
|
||||
.toastui-editor-dark .toastui-editor-popup-add-heading ul li:hover {
|
||||
background-color: #36383f;
|
||||
background-color: #36383f88;
|
||||
}
|
||||
|
||||
.toastui-editor-dark .toastui-editor-popup-body label {
|
||||
@ -133,7 +133,7 @@
|
||||
|
||||
.toastui-editor-dark .toastui-editor-popup-body .toastui-editor-file-select-button {
|
||||
border-color: #303238;
|
||||
background-color: #232428;
|
||||
background-color: #23242888;
|
||||
color: #eee;
|
||||
}
|
||||
|
||||
@ -144,7 +144,7 @@
|
||||
.toastui-editor-dark.toastui-editor-defaultUI .toastui-editor-close-button {
|
||||
color: #eee;
|
||||
border-color: #303238;
|
||||
background-color: #232428;
|
||||
background-color: #23242888;
|
||||
}
|
||||
|
||||
.toastui-editor-dark.toastui-editor-defaultUI .toastui-editor-close-button:hover {
|
||||
@ -153,22 +153,22 @@
|
||||
|
||||
.toastui-editor-dark.toastui-editor-defaultUI .toastui-editor-ok-button {
|
||||
color: #121212;
|
||||
background-color: #67ccff;
|
||||
background-color: #67ccff88;
|
||||
}
|
||||
|
||||
.toastui-editor-dark.toastui-editor-defaultUI .toastui-editor-ok-button:hover {
|
||||
color: #121212;
|
||||
background-color: #32baff;
|
||||
background-color: #32baff88;
|
||||
}
|
||||
|
||||
.toastui-editor-dark .toastui-editor-popup-add-table .toastui-editor-table-cell {
|
||||
border-color: #303238;
|
||||
background-color: #121212;
|
||||
background-color: #12121288;
|
||||
}
|
||||
|
||||
.toastui-editor-dark .toastui-editor-popup-add-table .toastui-editor-table-cell.header {
|
||||
border-color: #303238;
|
||||
background-color: #232428;
|
||||
background-color: #23242888;
|
||||
}
|
||||
|
||||
.toastui-editor-dark .toastui-editor-popup-add-table .toastui-editor-table-selection-layer {
|
||||
@ -181,19 +181,19 @@
|
||||
}
|
||||
|
||||
.toastui-editor-dark .toastui-editor-md-tab-container {
|
||||
background-color: #232428;
|
||||
background-color: #23242888;
|
||||
border-bottom-color: #303238;
|
||||
}
|
||||
|
||||
.toastui-editor-dark .toastui-editor-md-tab-container .tab-item {
|
||||
border-color: #393b42;
|
||||
background-color: #2d2f34;
|
||||
background-color: #2d2f3488;
|
||||
color: #757a86;
|
||||
}
|
||||
|
||||
.toastui-editor-dark .toastui-editor-md-tab-container .tab-item.active {
|
||||
border-bottom-color: #121212;
|
||||
background-color: #121212;
|
||||
background-color: #12121288;
|
||||
color: #eee;
|
||||
}
|
||||
|
||||
@ -208,7 +208,7 @@
|
||||
}
|
||||
|
||||
.toastui-editor-dark .toastui-editor-context-menu li:not(.disabled):hover {
|
||||
background-color: #36383f;
|
||||
background-color: #36383f88;
|
||||
}
|
||||
|
||||
.toastui-editor-dark .toastui-editor-context-menu li.disabled {
|
||||
@ -217,7 +217,7 @@
|
||||
|
||||
.toastui-editor-dark .toastui-editor-dropdown-toolbar {
|
||||
border-color: #494c56;
|
||||
background-color: #232428;
|
||||
background-color: #23242888;
|
||||
}
|
||||
|
||||
.toastui-editor-dark .ProseMirror,
|
||||
@ -251,7 +251,7 @@
|
||||
}
|
||||
|
||||
.toastui-editor-dark .toastui-editor-contents pre {
|
||||
background-color: #232428;
|
||||
background-color: #23242888;
|
||||
}
|
||||
|
||||
.toastui-editor-dark .toastui-editor-contents pre code {
|
||||
@ -261,7 +261,7 @@
|
||||
|
||||
.toastui-editor-dark .toastui-editor-contents code {
|
||||
color: #c1798b;
|
||||
background-color: #35262a;
|
||||
background-color: #35262a88;
|
||||
}
|
||||
|
||||
.toastui-editor-dark .toastui-editor-contents div {
|
||||
@ -270,7 +270,7 @@
|
||||
|
||||
.toastui-editor-dark .toastui-editor-ww-code-block-language {
|
||||
border-color: #303238;
|
||||
background-color: #121212;
|
||||
background-color: #12121288;
|
||||
}
|
||||
|
||||
.toastui-editor-dark .toastui-editor-ww-code-block-language input {
|
||||
@ -278,7 +278,7 @@
|
||||
}
|
||||
|
||||
.toastui-editor-dark .toastui-editor-contents .toastui-editor-ww-code-block:after {
|
||||
background-color: #232428;
|
||||
background-color: #23242888;
|
||||
border: 1px solid #393b42;
|
||||
color: #eee;
|
||||
background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI1LjIuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IuugiOydtOyWtF8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiCgkgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMzAgMzAiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDMwIDMwOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Cgkuc3Qwe2ZpbGwtcnVsZTpldmVub2RkO2NsaXAtcnVsZTpldmVub2RkO2ZpbGw6I2ZmZjt9Cjwvc3R5bGU+CjxnPgoJPGc+CgkJPGc+CgkJCTxnPgoJCQkJPGc+CgkJCQkJPHBhdGggY2xhc3M9InN0MCIgZD0iTTE1LjUsMTIuNWwyLDJMMTIsMjBoLTJ2LTJMMTUuNSwxMi41eiBNMTgsMTBsMiwybC0xLjUsMS41bC0yLTJMMTgsMTB6Ii8+CgkJCQk8L2c+CgkJCTwvZz4KCQk8L2c+Cgk8L2c+CjwvZz4KPC9zdmc+Cg==');
|
||||
@ -296,13 +296,13 @@
|
||||
}
|
||||
|
||||
.toastui-editor-dark .toastui-editor-custom-block-view button {
|
||||
background-color: #232428;
|
||||
background-color: #23242888;
|
||||
border-color: #393b42;
|
||||
background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI1LjIuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IuugiOydtOyWtF8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiCgkgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMzAgMzAiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDMwIDMwOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Cgkuc3Qwe2ZpbGwtcnVsZTpldmVub2RkO2NsaXAtcnVsZTpldmVub2RkO2ZpbGw6I2ZmZjt9Cjwvc3R5bGU+CjxnPgoJPGc+CgkJPGc+CgkJCTxnPgoJCQkJPGc+CgkJCQkJPHBhdGggY2xhc3M9InN0MCIgZD0iTTE1LjUsMTIuNWwyLDJMMTIsMjBoLTJ2LTJMMTUuNSwxMi41eiBNMTgsMTBsMiwybC0xLjUsMS41bC0yLTJMMTgsMTB6Ii8+CgkJCQk8L2c+CgkJCTwvZz4KCQk8L2c+Cgk8L2c+CjwvZz4KPC9zdmc+Cg==');
|
||||
}
|
||||
|
||||
.toastui-editor-dark .toastui-editor-custom-block-view button:hover {
|
||||
background-color: #232428;
|
||||
background-color: #23242888;
|
||||
border-color: #595c68;
|
||||
}
|
||||
|
||||
@ -320,7 +320,7 @@
|
||||
}
|
||||
|
||||
.toastui-editor-dark .toastui-editor-contents table th {
|
||||
background-color: #3a3c42;
|
||||
background-color: #3a3c4288;
|
||||
}
|
||||
|
||||
.toastui-editor-dark .toastui-editor-contents table td,
|
||||
@ -352,7 +352,7 @@
|
||||
}
|
||||
|
||||
.toastui-editor-dark .toastui-editor-contents ul > li::before {
|
||||
background-color: #55575f;
|
||||
background-color: #55575f88;
|
||||
}
|
||||
|
||||
.toastui-editor-dark .toastui-editor-contents hr {
|
||||
@ -369,7 +369,7 @@
|
||||
|
||||
.toastui-editor-dark .toastui-editor-contents .image-link:hover::before {
|
||||
border-color: #393b42;
|
||||
background-color: #232428;
|
||||
background-color: #23242888;
|
||||
background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgdmlld0JveD0iMCAwIDIwIDIwIj4KICAgIDxnIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIj4KICAgICAgICA8ZyBzdHJva2U9IiNFRUUiIHN0cm9rZS13aWR0aD0iMS41Ij4KICAgICAgICAgICAgPGc+CiAgICAgICAgICAgICAgICA8Zz4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNy42NjUgMTUuMDdsLTEuODE5LS4wMDJjLTEuNDg2IDAtMi42OTItMS4yMjgtMi42OTItMi43NDR2LS4xOTJjMC0xLjUxNSAxLjIwNi0yLjc0NCAyLjY5Mi0yLjc0NGgzLjg0NmMxLjQ4NyAwIDIuNjkyIDEuMjI5IDIuNjkyIDIuNzQ0di4xOTIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0xMDQ1IC0xNzQzKSB0cmFuc2xhdGUoMTA0MCAxNzM4KSB0cmFuc2xhdGUoNSA1KSBzY2FsZSgxIC0xKSByb3RhdGUoNDUgMzcuMjkzIDApIi8+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTEyLjMyNiA0LjkzNGwxLjgyMi4wMDJjMS40ODcgMCAyLjY5MyAxLjIyOCAyLjY5MyAyLjc0NHYuMTkyYzAgMS41MTUtMS4yMDYgMi43NDQtMi42OTMgMi43NDRoLTMuODQ1Yy0xLjQ4NyAwLTIuNjkyLTEuMjI5LTIuNjkyLTIuNzQ0VjcuNjgiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0xMDQ1IC0xNzQzKSB0cmFuc2xhdGUoMTA0MCAxNzM4KSB0cmFuc2xhdGUoNSA1KSBzY2FsZSgxIC0xKSByb3RhdGUoNDUgMzAuOTk2IDApIi8+CiAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPgo=');
|
||||
box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.08);
|
||||
}
|
||||
@ -424,11 +424,11 @@
|
||||
}
|
||||
|
||||
.toastui-editor-dark .toastui-editor-md-code {
|
||||
background-color: #35262a;
|
||||
background-color: #35262a88;
|
||||
}
|
||||
|
||||
.toastui-editor-dark .toastui-editor-md-code-block-line-background {
|
||||
background-color: #232428;
|
||||
background-color: #23242888;
|
||||
}
|
||||
|
||||
.toastui-editor-dark .toastui-editor-md-code-block .toastui-editor-md-meta {
|
||||
@ -440,7 +440,7 @@
|
||||
}
|
||||
|
||||
.toastui-editor-dark .toastui-editor-md-custom-block-line-background {
|
||||
background-color: #392d31;
|
||||
background-color: #392d3188;
|
||||
}
|
||||
|
||||
.toastui-editor-dark .toastui-editor-md-custom-block .toastui-editor-md-delimiter {
|
||||
|
||||
@ -4,7 +4,7 @@
|
||||
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
|
||||
layout:decorate="~{layout/default_layout}"
|
||||
>
|
||||
<head>
|
||||
<th:block layout:fragment="head">
|
||||
<script type="text/javascript" src="https://code.jquery.com/jquery-3.5.1.min.js" crossorigin="anonymous"></script>
|
||||
<script type="text/javascript" th:src="@{/js/toast-ui-view.js}"></script>
|
||||
<link th:href="@{/css/toast-ui.css}" rel="stylesheet" />
|
||||
@ -49,8 +49,8 @@
|
||||
console.log(editor.getHTML())
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<div layout:fragment="content" id="content">
|
||||
</th:block>
|
||||
<th:block layout:fragment="content" id="content">
|
||||
<input id="title_layer" />
|
||||
<div id="editor" ></div>
|
||||
<div id="hashtag_layer">
|
||||
@ -60,5 +60,5 @@
|
||||
<div id="controll_layer" >
|
||||
<button onclick="save()">asdsad</button>
|
||||
</div>
|
||||
</div>
|
||||
</th:block>
|
||||
</html>
|
||||
|
||||
@ -4,8 +4,8 @@
|
||||
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
|
||||
layout:decorate="~{layout/default_layout}"
|
||||
>
|
||||
<head>
|
||||
<script type="text/javascript" src="https://code.jquery.com/jquery-3.5.1.min.js" crossorigin="anonymous"></script>
|
||||
<th:block layout:fragment="head" id="head">
|
||||
<script type="text/javascript" th:src="@{https://code.jquery.com/jquery-3.5.1.min.js}" crossorigin="anonymous"></script>
|
||||
<script type="text/javascript" th:src="@{/js/toast-ui.js}"></script>
|
||||
<link th:href="@{/css/blog.css}" rel="stylesheet" />
|
||||
<link th:href="@{/css/toast-ui.css}" rel="stylesheet" />
|
||||
@ -22,7 +22,7 @@
|
||||
console.log(style.getPropertyValue('--FooterHeight'))
|
||||
console.log(style.getPropertyValue('--TopHeight'))
|
||||
var editorHeght = (
|
||||
document.querySelector('#content').getBoundingClientRect().height -
|
||||
document.querySelector('#main_layer').getBoundingClientRect().height -
|
||||
(
|
||||
Number(style.getPropertyValue('--ButtonHegit').replace("px","") * 3)
|
||||
+ Number(style.getPropertyValue('--TopHeight').replace("px",""))
|
||||
@ -32,7 +32,7 @@
|
||||
editor = new toastui.Editor({
|
||||
el: document.querySelector('#editor'),
|
||||
previewStyle: 'tab',
|
||||
height: editorHeght+ 'px',
|
||||
height: editorHeght + 'px',
|
||||
width:'95%',
|
||||
theme:'dark',
|
||||
usageStatistics : false,
|
||||
@ -91,18 +91,18 @@
|
||||
console.log(editor.getHTML())
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<div layout:fragment="content" id="content">
|
||||
<div class="layer">
|
||||
<input id="title_layer" />
|
||||
</th:block>
|
||||
<th:block layout:fragment="content" id="content">
|
||||
<div id="main_layer">
|
||||
<div class="layer">
|
||||
<input id="title_layer" />
|
||||
</div>
|
||||
<div id="editor" ></div>
|
||||
<div class="layer">
|
||||
<select > </select>
|
||||
<input id="hashtag" />
|
||||
<button id="save" onclick="save()">asdsad</button>
|
||||
</div>
|
||||
</div>
|
||||
<div id="editor" ></div>
|
||||
<div class="layer">
|
||||
<select > </select>
|
||||
<input id="hashtag" />
|
||||
</div>
|
||||
<div id="layer" >
|
||||
<button id="save" onclick="save()">asdsad</button>
|
||||
</div>
|
||||
</div>
|
||||
</th:block>
|
||||
</html>
|
||||
|
||||
@ -4,7 +4,7 @@
|
||||
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
|
||||
layout:decorate="~{layout/default_layout}"
|
||||
>
|
||||
<head>
|
||||
<th:block layout:fragment="head" id="head">
|
||||
<!--css,JS 추가영역-->
|
||||
<script th:inline="javascript">
|
||||
function jopinClick() {
|
||||
@ -12,9 +12,9 @@
|
||||
}
|
||||
</script>
|
||||
<script type="text/javascript" th:src="@{/js/user.js}"></script>
|
||||
</head>
|
||||
<div layout:fragment="content" id="content">
|
||||
<table>
|
||||
</th:block >
|
||||
<th:block layout:fragment="content">
|
||||
<table id="main_layer">
|
||||
<tr>
|
||||
<td><h2>회원가입</h2></td>
|
||||
</tr>
|
||||
@ -30,5 +30,5 @@
|
||||
<tr><td><input id="user_email" type="text" class="email"></td></tr>
|
||||
<tr><td><input type="submit" value="가입하기" class="btn" onclick="jopinClick()"></td></tr>
|
||||
</table>
|
||||
</div>
|
||||
</th:block>
|
||||
</html>
|
||||
@ -4,28 +4,25 @@
|
||||
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
|
||||
layout:decorate="~{layout/default_layout}">
|
||||
|
||||
<th:block layout:fragment="head">
|
||||
<head>
|
||||
<title>Spring Boot</title>
|
||||
<script th:inline="javascript">
|
||||
function loginClick() {
|
||||
onclickLogin([[${enc}]],[[${key}]])
|
||||
}
|
||||
</script>
|
||||
<!--/* css */-->
|
||||
<link th:href="@{/css/common.css}" rel="stylesheet" />
|
||||
<script type="text/javascript" th:src="@{/js/common.js}"></script>
|
||||
<script type="text/javascript" th:src="@{/js/user.js}"></script>
|
||||
</th:block>
|
||||
</head>>
|
||||
<body onload="checkDebug()">
|
||||
<th:block layout:fragment="header" th:include="@{fragments/header}"></th:block>
|
||||
|
||||
<div layout:fragment="content" class="content">
|
||||
<div layout:fragment="content" id="content">
|
||||
<table>
|
||||
<tr><td>아이디</td></tr>
|
||||
<tr><td><input id="user_id" type="text" class="text"></td></tr>
|
||||
<tr><td>비밀번호</td></tr>
|
||||
<tr><td><input id="user_pw" type="password" class="text"></td></tr>
|
||||
<tr><td><input type="submit" value="가입하기" class="btn" onclick="loginClick()"></td></tr>
|
||||
<tr><td><input type="submit" value="로그인" class="btn" onclick="loginClick()"></td></tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:th="http://www.thymeleaf.org">
|
||||
<footer th:fragment="footer">
|
||||
asdasdasd
|
||||
</footer>
|
||||
<th:block th:fragment="footer">
|
||||
<footer></footer>
|
||||
</th:block>
|
||||
</html>
|
||||
@ -1,4 +0,0 @@
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
|
||||
<div class="head">
|
||||
</div>
|
||||
</html>
|
||||
@ -1,6 +1,8 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:th="http://www.thymeleaf.org">
|
||||
<header th:fragment="header">
|
||||
header.html
|
||||
</header>
|
||||
<th:block th:fragment="header">
|
||||
<header>
|
||||
|
||||
</header>
|
||||
</th:block>
|
||||
</html>
|
||||
12
src/main/resources/templates/fragments/includes.html
Normal file
12
src/main/resources/templates/fragments/includes.html
Normal file
@ -0,0 +1,12 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:th="http://www.thymeleaf.org">
|
||||
<th:block th:fragment="includes">
|
||||
<meta charset="UTF-8" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="Referrer" content="origin"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
|
||||
<meta name="viewport" content="width=device-width,height=device-height,initial-scale=1"/>
|
||||
<link th:href="@{/css/common.css}" rel="stylesheet" />
|
||||
<script type="text/javascript" th:src="@{/js/common.js}"></script>
|
||||
</th:block>
|
||||
</html>
|
||||
6
src/main/resources/templates/fragments/title.html
Normal file
6
src/main/resources/templates/fragments/title.html
Normal file
@ -0,0 +1,6 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:th="http://www.thymeleaf.org">
|
||||
<th:block th:fragment="title">
|
||||
<title th:text="${title}">Bum's</title>
|
||||
</th:block>
|
||||
</html>
|
||||
@ -1,24 +1,24 @@
|
||||
<!DOCTYPE html>
|
||||
<html
|
||||
lagn="ko"
|
||||
xmlns:th="http://www.thymeleaf.org"
|
||||
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
|
||||
xmlns="http://www.w3.org/1999/html">
|
||||
|
||||
<html lagn="ko"
|
||||
xmlns:th="http://www.thymeleaf.org"
|
||||
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
|
||||
xmlns="http://www.w3.org/1999/html">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<link th:href="@{/css/common.css}" rel="stylesheet" />
|
||||
<script type="text/javascript" th:src="@{/js/common.js}"></script>
|
||||
<meta name="Referrer" content="origin">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width,height=device-height,initial-scale=1">
|
||||
<!-- <th:block layout:replace="fragments/includes" ></th:block>-->
|
||||
<th:block th:replace="fragments/includes :: includes"></th:block>
|
||||
<!-- layout:fragment="head" -->
|
||||
<th:block layout:fragment="head"></th:block>
|
||||
<!-- <th:block layout:replace="fragments/title" ></th:block> -->
|
||||
<th:block th:replace="fragments/title :: title"></th:block>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div th:replace="fragments/header :: header"></div>
|
||||
|
||||
<div layout:fragment="content"></div>
|
||||
|
||||
<div th:replace="fragments/footer :: footer"></div>
|
||||
<!--<th:block th:replace="fragments/header :: header"></th:block>-->
|
||||
<th:block th:replace="fragments/header :: header"></th:block>
|
||||
<!--<th:block layout:fragment="content"></th:block>-->
|
||||
<th:block layout:fragment="content"></th:block>
|
||||
<!--<th:block th:replace="fragments/footer :: footer"></th:block>-->
|
||||
<th:block th:replace="fragments/footer :: footer"></th:block>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
Loading…
x
Reference in New Issue
Block a user