Compare commits
No commits in common. "a810db5d2579175135482df905062bf64828d77a" and "1a2b5376ea9dd5d372f1cc94ff40d5a7e02513ca" have entirely different histories.
a810db5d25
...
1a2b5376ea
15
Dockerfile
15
Dockerfile
@ -8,19 +8,14 @@ ENV MONGODB_HOST=default
|
|||||||
ENV MONGODB_NAME=default
|
ENV MONGODB_NAME=default
|
||||||
ENV MRA_ADMIN=default
|
ENV MRA_ADMIN=default
|
||||||
ENV MRA_PW=default
|
ENV MRA_PW=default
|
||||||
ENV RESOURCE_HANDLER=default
|
|
||||||
ENV RESOURCE_LOCATION=default
|
|
||||||
ENV IMAGE_UPLOAD_PATH=default
|
|
||||||
WORKDIR /imgUpload
|
|
||||||
LABEL maintainer="lunaticbum <lunaticbum@gmail.com>"
|
LABEL maintainer="lunaticbum <lunaticbum@gmail.com>"
|
||||||
LABEL version="0.0.7"
|
LABEL version="0.0.5"
|
||||||
LABEL description="Spring Boot Jar Test"
|
LABEL description="Spring Boot Jar Test"
|
||||||
|
|
||||||
ARG JAR_FILE=build/libs/lun-0.0.7-SNAPSHOT.jar
|
ARG JAR_FILE=build/libs/lun-0.0.5-SNAPSHOT.jar
|
||||||
COPY ${JAR_FILE} app.jar
|
COPY ${JAR_FILE} app.jar
|
||||||
EXPOSE 443
|
EXPOSE 443
|
||||||
#EXPOSE 27012
|
EXPOSE 27012
|
||||||
#EXPOSE 3307
|
EXPOSE 3307
|
||||||
ENTRYPOINT ["java","-Dtelegram.bot.key=${BOT_KEY}","-Dtelegram.my.id=${TG_MINE}","-Dtelegram.target.id=${TG_TARGET_ID}","-Dweather.api.key=${WEATHER_KEY}","-Dspring.datasource.url=${DATASOURCE_URL}" ,"-Dspring.data.mongodb.uri=${MONGODB_HOST}","-Dspring.data.mongodb.database=${MONGODB_NAME}","-Dspring.datasource.username=${MRA_ADMIN}","-Dspring.datasource.password=${MRA_PW}","-Dresource.handler=${RESOURCE_HANDLER}","-Dresource.location=${RESOURCE_LOCATION}","-Dimage.upload.path=${IMAGE_UPLOAD_PATH}","-jar","app.jar"]
|
ENTRYPOINT ["java","-Dtelegram.bot.key=${BOT_KEY}","-Dtelegram.my.id=${TG_MINE}","-Dtelegram.target.id=${TG_TARGET_ID}","-Dweather.api.key=${WEATHER_KEY}","-Dspring.datasource.url=${DATASOURCE_URL}" ,"-Dspring.data.mongodb.uri=${MONGODB_HOST}","-Dspring.data.mongodb.database=${MONGODB_NAME}","-Dspring.datasource.username=${MRA_ADMIN}","-Dspring.datasource.password=${MRA_PW}","-jar","app.jar"]
|
||||||
#ENTRYPOINT ["java","-jar","app.jar","-Dspring-boot.run.arguments=--telegram.bot.key=${BOT_KEY}, --telegram.my.id=${TG_MINE}, --telegram.target.id=${TG_TARGET_ID}, --weather.api.key=${WEATHER_KEY}"]
|
#ENTRYPOINT ["java","-jar","app.jar","-Dspring-boot.run.arguments=--telegram.bot.key=${BOT_KEY}, --telegram.my.id=${TG_MINE}, --telegram.target.id=${TG_TARGET_ID}, --weather.api.key=${WEATHER_KEY}"]
|
||||||
#-Dtelegram.bot.key=bot7934509464:AAE_xUbICxMdywLGnxo7BkeIqA1nVza4P9w -Dtelegram.target.id=71476436 -Dtelegram.my.id=71476436 -Dweather.api.key=de574a260b1f474d99955729241909 -Dspring.datasource.url=jdbc:mariadb://mra.sbspace.synology.me -Dspring.data.mongodb.uri=mongodb://lun_admin:VioPup*383@mongo.sbspace.synology.me/?wtimeoutMS=300&connectTimeoutMS=500&socketTimeoutMS=200 -Dspring.data.mongodb.database=lun_db -Dspring.datasource.username=lun_admin -Dspring.datasource.password=VioPup*383 -Dresource.handler=/blog/post/image/** -Dresource.location=file:///imgUpload -Dimage.upload.path=imgUpload
|
|
||||||
|
|||||||
@ -6,7 +6,7 @@ plugins {
|
|||||||
}
|
}
|
||||||
|
|
||||||
group = "kr.lunaticbum.back"
|
group = "kr.lunaticbum.back"
|
||||||
version = "0.0.7-SNAPSHOT"
|
version = "0.0.5-SNAPSHOT"
|
||||||
|
|
||||||
java {
|
java {
|
||||||
toolchain {
|
toolchain {
|
||||||
@ -42,7 +42,6 @@ dependencies {
|
|||||||
implementation("org.jetbrains.kotlin:kotlin-reflect")
|
implementation("org.jetbrains.kotlin:kotlin-reflect")
|
||||||
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-reactor")
|
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-reactor")
|
||||||
implementation("org.springframework.boot:spring-boot-starter-thymeleaf")
|
implementation("org.springframework.boot:spring-boot-starter-thymeleaf")
|
||||||
implementation("nz.net.ultraq.thymeleaf:thymeleaf-layout-dialect")
|
|
||||||
implementation("org.springframework.boot:spring-boot-starter-security")
|
implementation("org.springframework.boot:spring-boot-starter-security")
|
||||||
compileOnly("org.projectlombok:lombok")
|
compileOnly("org.projectlombok:lombok")
|
||||||
runtimeOnly("org.mariadb.jdbc:mariadb-java-client")
|
runtimeOnly("org.mariadb.jdbc:mariadb-java-client")
|
||||||
@ -53,7 +52,6 @@ dependencies {
|
|||||||
testRuntimeOnly("org.junit.platform:junit-platform-launcher")
|
testRuntimeOnly("org.junit.platform:junit-platform-launcher")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
kotlin {
|
kotlin {
|
||||||
compilerOptions {
|
compilerOptions {
|
||||||
freeCompilerArgs.addAll("-Xjsr305=strict")
|
freeCompilerArgs.addAll("-Xjsr305=strict")
|
||||||
|
|||||||
@ -12,4 +12,6 @@ class SpringConfigClass : WebApplicationInitializer {
|
|||||||
filter.setInitParameter("encoding", "UTF-8")
|
filter.setInitParameter("encoding", "UTF-8")
|
||||||
filter.addMappingForServletNames(null, false, "dispatcher")
|
filter.addMappingForServletNames(null, false, "dispatcher")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -20,15 +20,15 @@ import java.util.*
|
|||||||
|
|
||||||
|
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/blog")
|
@RequestMapping("blog")
|
||||||
class BlogController() {
|
class BlogController() {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
lateinit var logService: LogService
|
lateinit var logService: LogService
|
||||||
|
|
||||||
@GetMapping("write")
|
@GetMapping("","/write")
|
||||||
fun writ() : ModelAndView{
|
fun writ() : ModelAndView{
|
||||||
val vm = ModelAndView("content/blog/write")
|
val vm = ModelAndView("/content/blog/write")
|
||||||
// when(System.currentTimeMillis() % 5L) {
|
// when(System.currentTimeMillis() % 5L) {
|
||||||
// 0L -> vm.modelMap.put(EncTypeKey,"T4")
|
// 0L -> vm.modelMap.put(EncTypeKey,"T4")
|
||||||
// 1L -> vm.modelMap.put(EncTypeKey,"T3")
|
// 1L -> vm.modelMap.put(EncTypeKey,"T3")
|
||||||
@ -39,20 +39,6 @@ class BlogController() {
|
|||||||
return vm
|
return vm
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("viewer/{blogId}")
|
|
||||||
fun viewer(@PathVariable blogId : String) : ModelAndView{
|
|
||||||
val vm = ModelAndView("content/blog/viewer")
|
|
||||||
// when(System.currentTimeMillis() % 5L) {
|
|
||||||
// 0L -> vm.modelMap.put(EncTypeKey,"T4")
|
|
||||||
// 1L -> vm.modelMap.put(EncTypeKey,"T3")
|
|
||||||
// 2L -> vm.modelMap.put(EncTypeKey,"T2")
|
|
||||||
// else -> vm.modelMap.put(EncTypeKey,"T0")
|
|
||||||
// }
|
|
||||||
|
|
||||||
return vm
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@Value("\${image.upload.path}")
|
@Value("\${image.upload.path}")
|
||||||
private val uploadPath: String? = null
|
private val uploadPath: String? = null
|
||||||
|
|
||||||
@ -61,13 +47,13 @@ class BlogController() {
|
|||||||
|
|
||||||
|
|
||||||
@ResponseBody
|
@ResponseBody
|
||||||
@GetMapping("post/images/{fileName}")
|
@GetMapping("/post/images/{fileName}")
|
||||||
fun getImage(@PathVariable fileName : String) : Resource {
|
fun getImage(@PathVariable fileName : String) : Resource {
|
||||||
val imgUploadPath = ("file:" +uploadPath + File.separator + fileName)
|
val imgUploadPath = ("file:" +uploadPath + File.separator + fileName)
|
||||||
return UrlResource.from(imgUploadPath)
|
return UrlResource.from(imgUploadPath)
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("post/imageUpload")
|
@PostMapping("/post/imageUpload")
|
||||||
fun postImage(@RequestPart("file") upload: MultipartFile, res: HttpServletResponse, req: HttpServletRequest) : ResponseEntity<FileSaveResult> {
|
fun postImage(@RequestPart("file") upload: MultipartFile, res: HttpServletResponse, req: HttpServletRequest) : ResponseEntity<FileSaveResult> {
|
||||||
var lResultCode = 0
|
var lResultCode = 0
|
||||||
var lResultMsg = "Suscces"
|
var lResultMsg = "Suscces"
|
||||||
|
|||||||
@ -3,7 +3,9 @@ package kr.lunaticbum.back.lun.controllers
|
|||||||
import com.google.gson.Gson
|
import com.google.gson.Gson
|
||||||
import jakarta.servlet.http.HttpServletRequest
|
import jakarta.servlet.http.HttpServletRequest
|
||||||
import kr.lunaticbum.back.lun.configs.GlobalEnvironment
|
import kr.lunaticbum.back.lun.configs.GlobalEnvironment
|
||||||
import kr.lunaticbum.back.lun.model.*
|
import kr.lunaticbum.back.lun.model.RequestModel
|
||||||
|
import kr.lunaticbum.back.lun.model.ResponceResult
|
||||||
|
import kr.lunaticbum.back.lun.model.User
|
||||||
import kr.lunaticbum.back.lun.utils.LogService
|
import kr.lunaticbum.back.lun.utils.LogService
|
||||||
import org.springframework.beans.factory.annotation.Autowired
|
import org.springframework.beans.factory.annotation.Autowired
|
||||||
import org.springframework.http.MediaType
|
import org.springframework.http.MediaType
|
||||||
@ -14,7 +16,7 @@ import java.util.*
|
|||||||
|
|
||||||
|
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/bums")
|
@RequestMapping("bums")
|
||||||
class BumsPrivate {
|
class BumsPrivate {
|
||||||
@Autowired
|
@Autowired
|
||||||
lateinit var globalEvv : GlobalEnvironment
|
lateinit var globalEvv : GlobalEnvironment
|
||||||
@ -22,9 +24,6 @@ class BumsPrivate {
|
|||||||
@Autowired
|
@Autowired
|
||||||
lateinit var logService: LogService
|
lateinit var logService: LogService
|
||||||
|
|
||||||
@Autowired
|
|
||||||
lateinit var locationService: LocationLogService
|
|
||||||
|
|
||||||
@ResponseBody
|
@ResponseBody
|
||||||
@PostMapping("save/loc.api")
|
@PostMapping("save/loc.api")
|
||||||
fun login(httpServletRequest: HttpServletRequest, @RequestBody jsonString: String) : ResponseEntity<ResponceResult> {
|
fun login(httpServletRequest: HttpServletRequest, @RequestBody jsonString: String) : ResponseEntity<ResponceResult> {
|
||||||
@ -32,11 +31,10 @@ class BumsPrivate {
|
|||||||
logService.log(jsonString)
|
logService.log(jsonString)
|
||||||
var lResultCode = 0
|
var lResultCode = 0
|
||||||
var lResultMsg = "Suscces"
|
var lResultMsg = "Suscces"
|
||||||
val decodedBytes: ByteArray = Base64.getMimeDecoder().decode(jsonString)
|
val decodedBytes: ByteArray = Base64.getDecoder().decode(jsonString)
|
||||||
String(decodedBytes).let {
|
String(decodedBytes).let {
|
||||||
Gson().fromJson<LocationLog>(it, LocationLog::class.java)?.let { model ->
|
Gson().fromJson<RequestModel>(it, RequestModel::class.java)?.let { model ->
|
||||||
logService.log(model.toString())
|
|
||||||
locationService.save(model)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
val responce = ResponseEntity.ok().contentType(MediaType.APPLICATION_JSON).body(ResponceResult().apply {
|
val responce = ResponseEntity.ok().contentType(MediaType.APPLICATION_JSON).body(ResponceResult().apply {
|
||||||
|
|||||||
@ -21,7 +21,7 @@ import java.util.*
|
|||||||
|
|
||||||
|
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/tlg")
|
@RequestMapping("tlg")
|
||||||
class Telegram {
|
class Telegram {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
@ -33,7 +33,7 @@ class Telegram {
|
|||||||
lateinit var logService: LogService
|
lateinit var logService: LogService
|
||||||
|
|
||||||
@ResponseBody
|
@ResponseBody
|
||||||
@GetMapping("hello")
|
@GetMapping("/hello")
|
||||||
fun hello(): String {
|
fun hello(): String {
|
||||||
return "hello1212"
|
return "hello1212"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -21,7 +21,7 @@ import kotlin.math.log
|
|||||||
|
|
||||||
|
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/user")
|
@RequestMapping("user")
|
||||||
class UserController {
|
class UserController {
|
||||||
val EncTypeKey = "enc"
|
val EncTypeKey = "enc"
|
||||||
val EncType00 = "T0"
|
val EncType00 = "T0"
|
||||||
@ -38,10 +38,10 @@ class UserController {
|
|||||||
@Autowired
|
@Autowired
|
||||||
lateinit var userManager: UserManager
|
lateinit var userManager: UserManager
|
||||||
|
|
||||||
@GetMapping("join")
|
@GetMapping("/join")
|
||||||
fun hello(httpServletRequest: HttpServletRequest): ModelAndView {
|
fun hello(httpServletRequest: HttpServletRequest): ModelAndView {
|
||||||
logService.log("onJoin")
|
logService.log("onJoin")
|
||||||
val vm = ModelAndView("content/user/join")
|
val vm = ModelAndView("/content/user/join")
|
||||||
// when(System.currentTimeMillis() % 5L) {
|
// when(System.currentTimeMillis() % 5L) {
|
||||||
// 0L -> vm.modelMap.put(EncTypeKey,"T4")
|
// 0L -> vm.modelMap.put(EncTypeKey,"T4")
|
||||||
// 1L -> vm.modelMap.put(EncTypeKey,"T3")
|
// 1L -> vm.modelMap.put(EncTypeKey,"T3")
|
||||||
@ -57,10 +57,10 @@ class UserController {
|
|||||||
return vm
|
return vm
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("login")
|
@GetMapping("/login")
|
||||||
fun userLogin(httpServletRequest: HttpServletRequest): ModelAndView {
|
fun userLogin(httpServletRequest: HttpServletRequest): ModelAndView {
|
||||||
logService.log("onJoin")
|
logService.log("onJoin")
|
||||||
val vm = ModelAndView("content/user/login")
|
val vm = ModelAndView("/content/user/login")
|
||||||
// when(System.currentTimeMillis() % 5L) {
|
// when(System.currentTimeMillis() % 5L) {
|
||||||
// 0L -> vm.modelMap.put(EncTypeKey,"T4")
|
// 0L -> vm.modelMap.put(EncTypeKey,"T4")
|
||||||
// 1L -> vm.modelMap.put(EncTypeKey,"T3")
|
// 1L -> vm.modelMap.put(EncTypeKey,"T3")
|
||||||
@ -74,7 +74,7 @@ class UserController {
|
|||||||
|
|
||||||
|
|
||||||
@ResponseBody
|
@ResponseBody
|
||||||
@PostMapping("login.ajax")
|
@PostMapping("/login.ajax")
|
||||||
fun login(httpServletRequest: HttpServletRequest, @RequestBody jsonString: String) : ResponseEntity<ResponceResult> {
|
fun login(httpServletRequest: HttpServletRequest, @RequestBody jsonString: String) : ResponseEntity<ResponceResult> {
|
||||||
logService.log("${httpServletRequest.requestURI}")
|
logService.log("${httpServletRequest.requestURI}")
|
||||||
logService.log(jsonString)
|
logService.log(jsonString)
|
||||||
@ -129,7 +129,7 @@ class UserController {
|
|||||||
|
|
||||||
|
|
||||||
@ResponseBody
|
@ResponseBody
|
||||||
@PostMapping("joinUser.ajax")
|
@PostMapping("/joinUser.ajax")
|
||||||
fun joinUser(httpServletRequest: HttpServletRequest, @RequestBody jsonString: String) : ResponseEntity<ResponceResult> {
|
fun joinUser(httpServletRequest: HttpServletRequest, @RequestBody jsonString: String) : ResponseEntity<ResponceResult> {
|
||||||
logService.log("${httpServletRequest.requestURI}")
|
logService.log("${httpServletRequest.requestURI}")
|
||||||
logService.log(jsonString)
|
logService.log(jsonString)
|
||||||
|
|||||||
@ -1,91 +1,4 @@
|
|||||||
package kr.lunaticbum.back.lun.model
|
package kr.lunaticbum.back.lun.model
|
||||||
|
|
||||||
import kr.lunaticbum.back.lun.utils.LogService
|
|
||||||
import lombok.AllArgsConstructor
|
|
||||||
import lombok.Data
|
|
||||||
import lombok.NoArgsConstructor
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired
|
|
||||||
import org.springframework.data.mongodb.core.mapping.Document
|
|
||||||
import org.springframework.data.mongodb.repository.ReactiveMongoRepository
|
|
||||||
import org.springframework.stereotype.Repository
|
|
||||||
import org.springframework.stereotype.Service
|
|
||||||
import reactor.core.publisher.Mono
|
|
||||||
|
|
||||||
class BumsPrivate {
|
class BumsPrivate {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Data
|
|
||||||
@NoArgsConstructor
|
|
||||||
@AllArgsConstructor
|
|
||||||
@Document(collection = "LocationLog")
|
|
||||||
class LocationLog {
|
|
||||||
var mFeatureName: String? = null
|
|
||||||
var mAddressLines: ArrayList<String> = arrayListOf()
|
|
||||||
var mAdminArea: String? = null
|
|
||||||
var mSubAdminArea: String? = null
|
|
||||||
var mLocality: String? = null
|
|
||||||
var mSubLocality: String? = null
|
|
||||||
var mThoroughfare: String? = null
|
|
||||||
var mSubThoroughfare: String? = null
|
|
||||||
var mPremises: String? = null
|
|
||||||
var mPostalCode: String? = null
|
|
||||||
var mCountryCode: String? = null
|
|
||||||
var mCountryName: String? = null
|
|
||||||
var mLatitude = 0.0
|
|
||||||
var mLongitude = 0.0
|
|
||||||
var mHasLatitude = false
|
|
||||||
var mHasLongitude = false
|
|
||||||
var mPhone: String? = null
|
|
||||||
var mUrl: String? = null
|
|
||||||
var time : Long = 0L
|
|
||||||
|
|
||||||
override fun toString(): String {
|
|
||||||
val buffer = StringBuffer()
|
|
||||||
buffer.append(mFeatureName).append("|").append("\n")
|
|
||||||
buffer.append(mAddressLines.joinToString(" , ")).append("|").append("\n")
|
|
||||||
buffer.append(mAdminArea).append("|").append("\n")
|
|
||||||
buffer.append(mSubAdminArea).append("|").append("\n")
|
|
||||||
buffer.append(mLocality).append("|").append("\n")
|
|
||||||
buffer.append(mSubLocality).append("|").append("\n")
|
|
||||||
buffer.append(mThoroughfare).append("|").append("\n")
|
|
||||||
buffer.append(mSubThoroughfare).append("|").append("\n")
|
|
||||||
buffer.append(mPremises).append("|").append("\n")
|
|
||||||
buffer.append(mPostalCode).append("|").append("\n")
|
|
||||||
buffer.append(mCountryCode).append("|").append("\n")
|
|
||||||
buffer.append(mCountryName).append("|").append("\n")
|
|
||||||
buffer.append(mLatitude).append("|").append("\n")
|
|
||||||
buffer.append(mLongitude).append("|").append("\n")
|
|
||||||
buffer.append(mPhone).append("|").append("\n")
|
|
||||||
buffer.append(mUrl).append("|").append("\n")
|
|
||||||
return buffer.toString()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Repository
|
|
||||||
interface LocationLogRepository : ReactiveMongoRepository<LocationLog, String> {
|
|
||||||
|
|
||||||
|
|
||||||
fun save(log: LocationLog): Mono<LocationLog>
|
|
||||||
}
|
|
||||||
interface LocationService {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Service
|
|
||||||
class LocationLogService : LocationService {
|
|
||||||
@Autowired
|
|
||||||
private lateinit var logService: LogService
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private lateinit var logRepository: LocationLogRepository
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
fun save(log: LocationLog) {
|
|
||||||
println("saved msg before ${log}")
|
|
||||||
logRepository.save(log).subscribe( { println("saved msg after ${it}") },{e -> e.printStackTrace()},{
|
|
||||||
println("saved msg comp")
|
|
||||||
})
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -25,7 +25,6 @@ spring.data.mongodb.authentication-database=admin
|
|||||||
spring.data.mongodb.database=l
|
spring.data.mongodb.database=l
|
||||||
spring.thymeleaf.prefix=classpath:/templates/
|
spring.thymeleaf.prefix=classpath:/templates/
|
||||||
spring.thymeleaf.suffix=.html
|
spring.thymeleaf.suffix=.html
|
||||||
spring.thymeleaf.enabled=true
|
|
||||||
# ?? ???? ??? ?? ? ?? ????.
|
# ?? ???? ??? ?? ? ?? ????.
|
||||||
spring.devtools.livereload.enabled=true
|
spring.devtools.livereload.enabled=true
|
||||||
# thymeleaf? ?? ??? ??? ???. cache=false ??(???? true)
|
# thymeleaf? ?? ??? ??? ???. cache=false ??(???? true)
|
||||||
|
|||||||
@ -1,38 +1,17 @@
|
|||||||
:root {
|
|
||||||
--WindowFull : 100svh;
|
|
||||||
--TopHeight: 50px;
|
|
||||||
--FooterHeight: 120px;
|
|
||||||
}
|
|
||||||
|
|
||||||
body, html {
|
body, html {
|
||||||
background-color: black;
|
height: 100%;
|
||||||
margin: 0px;
|
|
||||||
margin-left: 2.5%;
|
|
||||||
margin-right: 2.5%;
|
|
||||||
height: 100lvh;
|
|
||||||
width: 95%;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
header {
|
.header {
|
||||||
align-content: center;
|
|
||||||
position: relative;
|
|
||||||
background-color: Gray;
|
background-color: Gray;
|
||||||
height: var(--TopHeight);
|
height: 20%
|
||||||
}
|
}
|
||||||
|
|
||||||
#content {
|
.content {
|
||||||
position: relative;
|
height:60%;
|
||||||
height: calc(var(--WindowFull) - calc(var(--FooterHeight) + var(--TopHeight)));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#content > * {
|
.footer {
|
||||||
margin-top: 5px;
|
background-color: yellow;
|
||||||
margin-bottom: 5px;
|
height: 20%
|
||||||
}
|
|
||||||
|
|
||||||
footer {
|
|
||||||
align-content: center;
|
|
||||||
position: relative;
|
|
||||||
height: var(--FooterHeight);
|
|
||||||
background-color: aquamarine;
|
|
||||||
}
|
}
|
||||||
@ -1,474 +0,0 @@
|
|||||||
@charset "utf-8";
|
|
||||||
.toastui-editor-dark.toastui-editor-defaultUI {
|
|
||||||
border-color: #494c56;
|
|
||||||
color: #eee;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-md-container,
|
|
||||||
.toastui-editor-dark .toastui-editor-ww-container {
|
|
||||||
background-color: #121212;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-defaultUI-toolbar {
|
|
||||||
background-color: #232428;
|
|
||||||
border-bottom-color: #303238;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-toolbar-icons {
|
|
||||||
background-position-y: -49px;
|
|
||||||
border-color: #232428;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-toolbar-icons:not(:disabled):hover {
|
|
||||||
background-color: #36383f;
|
|
||||||
border-color: #36383f;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-toolbar-divider {
|
|
||||||
background-color: #303238;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-tooltip {
|
|
||||||
background-color: #535662;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-tooltip .arrow {
|
|
||||||
background-color: #535662;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-defaultUI-toolbar .scroll-sync::before {
|
|
||||||
color: #8f939f;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-defaultUI-toolbar .scroll-sync.active::before {
|
|
||||||
color: #67ccff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-defaultUI-toolbar .switch {
|
|
||||||
background-color: #2b4455;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-defaultUI-toolbar input:checked + .switch {
|
|
||||||
background-color: #2b4455;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-defaultUI-toolbar .switch::before {
|
|
||||||
background-color: #8f939f;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-defaultUI-toolbar input:checked + .switch::before {
|
|
||||||
background-color: #67ccff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-main .toastui-editor-md-splitter {
|
|
||||||
background-color: #303238;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-mode-switch {
|
|
||||||
border-top-color: #393b42;
|
|
||||||
background-color: #121212;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-mode-switch .tab-item {
|
|
||||||
border-color: #393b42;
|
|
||||||
background-color: #232428;
|
|
||||||
color: #757a86;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-mode-switch .tab-item.active {
|
|
||||||
border-top-color: #121212;
|
|
||||||
background-color: #121212;
|
|
||||||
color: #eee;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-popup,
|
|
||||||
.toastui-editor-dark .toastui-editor-context-menu {
|
|
||||||
background-color: #121212;
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-popup-body label {
|
|
||||||
color: #9a9da3;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-popup-body input[type='text'] {
|
|
||||||
background-color: transparent;
|
|
||||||
color: #eee;
|
|
||||||
border-color: #303238;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-popup-body input[type='text']:focus {
|
|
||||||
outline-color: #67ccff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-popup-body input[type='text'].disabled {
|
|
||||||
color: #969aa5;
|
|
||||||
border-color: #303238;
|
|
||||||
background-color: rgba(48, 50, 56, 0.4);
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-popup-add-image .toastui-editor-tabs .tab-item {
|
|
||||||
border-bottom-color: #292e37;
|
|
||||||
color: #eee;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-popup-add-image .toastui-editor-tabs .tab-item:hover {
|
|
||||||
border-bottom-color: #3c424d;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-popup-add-image .toastui-editor-tabs .tab-item.active {
|
|
||||||
color: #67ccff;
|
|
||||||
border-bottom-color: #67ccff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-popup-body .toastui-editor-file-name {
|
|
||||||
border-color: #303238;
|
|
||||||
color: #eee;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-popup-body .toastui-editor-file-select-button {
|
|
||||||
border-color: #303238;
|
|
||||||
background-color: #232428;
|
|
||||||
color: #eee;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-popup-body .toastui-editor-file-select-button:hover {
|
|
||||||
border-color: #494c56;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark.toastui-editor-defaultUI .toastui-editor-close-button {
|
|
||||||
color: #eee;
|
|
||||||
border-color: #303238;
|
|
||||||
background-color: #232428;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark.toastui-editor-defaultUI .toastui-editor-close-button:hover {
|
|
||||||
border-color: #494c56;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark.toastui-editor-defaultUI .toastui-editor-ok-button {
|
|
||||||
color: #121212;
|
|
||||||
background-color: #67ccff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark.toastui-editor-defaultUI .toastui-editor-ok-button:hover {
|
|
||||||
color: #121212;
|
|
||||||
background-color: #32baff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-popup-add-table .toastui-editor-table-cell {
|
|
||||||
border-color: #303238;
|
|
||||||
background-color: #121212;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-popup-add-table .toastui-editor-table-cell.header {
|
|
||||||
border-color: #303238;
|
|
||||||
background-color: #232428;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-popup-add-table .toastui-editor-table-selection-layer {
|
|
||||||
border-color: rgba(103, 204, 255, 0.4);
|
|
||||||
background-color: rgba(103, 204, 255, 0.1);
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-popup-add-table .toastui-editor-table-description {
|
|
||||||
color: #eee
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-md-tab-container {
|
|
||||||
background-color: #232428;
|
|
||||||
border-bottom-color: #303238;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-md-tab-container .tab-item {
|
|
||||||
border-color: #393b42;
|
|
||||||
background-color: #2d2f34;
|
|
||||||
color: #757a86;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-md-tab-container .tab-item.active {
|
|
||||||
border-bottom-color: #121212;
|
|
||||||
background-color: #121212;
|
|
||||||
color: #eee;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-context-menu .menu-group {
|
|
||||||
border-bottom-color: #303238;
|
|
||||||
color: #eee;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-context-menu .menu-item span::before {
|
|
||||||
background-position-y: -126px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-context-menu li:not(.disabled):hover {
|
|
||||||
background-color: #36383f;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-context-menu li.disabled {
|
|
||||||
color: #969aa5;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-dropdown-toolbar {
|
|
||||||
border-color: #494c56;
|
|
||||||
background-color: #232428;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .ProseMirror,
|
|
||||||
.toastui-editor-dark .toastui-editor-contents p,
|
|
||||||
.toastui-editor-dark .toastui-editor-contents h1,
|
|
||||||
.toastui-editor-dark .toastui-editor-contents h2,
|
|
||||||
.toastui-editor-dark .toastui-editor-contents h3,
|
|
||||||
.toastui-editor-dark .toastui-editor-contents h4,
|
|
||||||
.toastui-editor-dark .toastui-editor-contents h5,
|
|
||||||
.toastui-editor-dark .toastui-editor-contents h6 {
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-contents h1,
|
|
||||||
.toastui-editor-dark .toastui-editor-contents h2 {
|
|
||||||
border-color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-contents del {
|
|
||||||
color: #777980;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-contents blockquote {
|
|
||||||
border-color: #303135;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-contents blockquote p,
|
|
||||||
.toastui-editor-dark .toastui-editor-contents blockquote ul,
|
|
||||||
.toastui-editor-dark .toastui-editor-contents blockquote ol {
|
|
||||||
color: #777980;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-contents pre {
|
|
||||||
background-color: #232428;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-contents pre code {
|
|
||||||
background-color: transparent;
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-contents code {
|
|
||||||
color: #c1798b;
|
|
||||||
background-color: #35262a;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-contents div {
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-ww-code-block-language {
|
|
||||||
border-color: #303238;
|
|
||||||
background-color: #121212;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-ww-code-block-language input {
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-contents .toastui-editor-ww-code-block:after {
|
|
||||||
background-color: #232428;
|
|
||||||
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==');
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-contents .toastui-editor-custom-block-editor {
|
|
||||||
background: #392d31;
|
|
||||||
color: #fff;
|
|
||||||
border-color: #327491;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-custom-block.ProseMirror-selectednode .toastui-editor-custom-block-view {
|
|
||||||
color: #fff;
|
|
||||||
border-color: #327491;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-custom-block-view button {
|
|
||||||
background-color: #232428;
|
|
||||||
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;
|
|
||||||
border-color: #595c68;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-custom-block-view .info {
|
|
||||||
color: #65acca;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-contents table {
|
|
||||||
border-color: #303238;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-contents table th,
|
|
||||||
.toastui-editor-dark .toastui-editor-contents table td {
|
|
||||||
border-color: #303238;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-contents table th {
|
|
||||||
background-color: #3a3c42;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-contents table td,
|
|
||||||
.toastui-editor-dark .toastui-editor-contents table td p {
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-contents td.toastui-editor-cell-selected {
|
|
||||||
background-color: rgba(103, 204, 255, 0.5);
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-contents th.toastui-editor-cell-selected {
|
|
||||||
background-color: rgba(103, 204, 255, 0.3);
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark table.ProseMirror-selectednode {
|
|
||||||
outline-color: #67ccff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .html-block.ProseMirror-selectednode {
|
|
||||||
outline-color: #67ccff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-contents ul,
|
|
||||||
.toastui-editor-dark .toastui-editor-contents menu,
|
|
||||||
.toastui-editor-dark .toastui-editor-contents ol,
|
|
||||||
.toastui-editor-dark .toastui-editor-contents dir {
|
|
||||||
color: #55575f;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-contents ul > li::before {
|
|
||||||
background-color: #55575f;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-contents hr {
|
|
||||||
border-color: #55575f;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-contents a {
|
|
||||||
color: #4b96e6;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-contents a:hover {
|
|
||||||
color: #1f70de;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-contents .image-link:hover::before {
|
|
||||||
border-color: #393b42;
|
|
||||||
background-color: #232428;
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-contents .task-list-item::before {
|
|
||||||
background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxOCIgaGVpZ2h0PSIxOCIgdmlld0JveD0iMCAwIDE4IDE4Ij4KICAgIDxnIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgc3Ryb2tlPSIjNTU1NzVGIj4KICAgICAgICAgICAgPGc+CiAgICAgICAgICAgICAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTAzMCAtMzE2KSB0cmFuc2xhdGUoNzg4IDE5MikgdHJhbnNsYXRlKDI0MiAxMjQpIj4KICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD0iMTciIGhlaWdodD0iMTciIHg9Ii41IiB5PSIuNSIgcng9IjIiLz4KICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+Cg==');
|
|
||||||
background-color: transparent;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-contents .task-list-item.checked::before {
|
|
||||||
background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxOCIgaGVpZ2h0PSIxOCIgdmlld0JveD0iMCAwIDE4IDE4Ij4KICAgIDxnIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgZmlsbD0iIzRCOTZFNiI+CiAgICAgICAgICAgIDxnPgogICAgICAgICAgICAgICAgPGc+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTE2IDBjMS4xMDUgMCAyIC44OTUgMiAydjE0YzAgMS4xMDUtLjg5NSAyLTIgMkgyYy0xLjEwNSAwLTItLjg5NS0yLTJWMkMwIC44OTUuODk1IDAgMiAwaDE0em0tMS43OTMgNS4yOTNjLS4zOS0uMzktMS4wMjQtLjM5LTEuNDE0IDBMNy41IDEwLjU4NSA1LjIwNyA4LjI5M2wtLjA5NC0uMDgzYy0uMzkyLS4zMDUtLjk2LS4yNzgtMS4zMi4wODMtLjM5LjM5LS4zOSAxLjAyNCAwIDEuNDE0bDMgMyAuMDk0LjA4M2MuMzkyLjMwNS45Ni4yNzggMS4zMi0uMDgzbDYtNiAuMDgzLS4wOTRjLjMwNS0uMzkyLjI3OC0uOTYtLjA4My0xLjMyeiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTEwNTAgLTI5NikgdHJhbnNsYXRlKDc4OCAxOTIpIHRyYW5zbGF0ZSgyNjIgMTA0KSIvPgogICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8L2c+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4K');
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-md-delimiter,
|
|
||||||
.toastui-editor-dark .toastui-editor-md-code.toastui-editor-md-delimiter,
|
|
||||||
.toastui-editor-dark .toastui-editor-md-thematic-break,
|
|
||||||
.toastui-editor-dark .toastui-editor-md-link,
|
|
||||||
.toastui-editor-dark .toastui-editor-md-table,
|
|
||||||
.toastui-editor-dark .toastui-editor-md-block-quote {
|
|
||||||
color: #55575f;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-md-meta,
|
|
||||||
.toastui-editor-dark .toastui-editor-md-html {
|
|
||||||
color: #55575f;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-md-link.toastui-editor-md-link-url.toastui-editor-md-marked-text {
|
|
||||||
color: #777980;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-md-block-quote .toastui-editor-md-marked-text,
|
|
||||||
.toastui-editor-dark .toastui-editor-md-list-item .toastui-editor-md-meta {
|
|
||||||
color: #b3b5bc;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-md-link.toastui-editor-md-link-desc.toastui-editor-md-marked-text,
|
|
||||||
.toastui-editor-dark .toastui-editor-md-list-item-style.toastui-editor-md-list-item-odd {
|
|
||||||
color: #4b96e6;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-md-list-item-style.toastui-editor-md-list-item-even {
|
|
||||||
color: #ef6767;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-md-table .toastui-editor-md-table-cell {
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-md-code.toastui-editor-md-marked-text {
|
|
||||||
color: #c1798b;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-md-code {
|
|
||||||
background-color: #35262a;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-md-code-block-line-background {
|
|
||||||
background-color: #232428;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-md-code-block .toastui-editor-md-meta {
|
|
||||||
color: #aaa;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-md-custom-block {
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-md-custom-block-line-background {
|
|
||||||
background-color: #392d31;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-md-custom-block .toastui-editor-md-delimiter {
|
|
||||||
color: #327491;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-md-custom-block .toastui-editor-md-meta {
|
|
||||||
color: #65acca;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-contents .toastui-editor-md-preview-highlight::after {
|
|
||||||
background-color: rgba(255, 250, 193, 0.5);
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-contents th.toastui-editor-md-preview-highlight,
|
|
||||||
.toastui-editor-dark .toastui-editor-contents td.toastui-editor-md-preview-highlight {
|
|
||||||
background-color: rgba(255, 250, 193, 0.5);
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-contents th.toastui-editor-md-preview-highlight {
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-contents th.toastui-editor-md-preview-highlight,
|
|
||||||
.toastui-editor-dark .toastui-editor-contents td.toastui-editor-md-preview-highlight {
|
|
||||||
background-color: rgba(255, 250, 193, 0.25);
|
|
||||||
}
|
|
||||||
|
|
||||||
.toastui-editor-dark .toastui-editor-contents .toastui-editor-md-preview-highlight::after {
|
|
||||||
background-color: rgba(255, 250, 193, 0.25);
|
|
||||||
}
|
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,64 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html
|
|
||||||
xmlns:th="http://www.thymeleaf.org"
|
|
||||||
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>
|
|
||||||
<script type="text/javascript" th:src="@{/js/toast-ui-view.js}"></script>
|
|
||||||
<link th:href="@{/css/toast-ui.css}" rel="stylesheet" />
|
|
||||||
<link th:href="@{/css/toast-ui-dark.css}" rel="stylesheet" />
|
|
||||||
<!-- <link rel="stylesheet" href="https://uicdn.toast.com/editor/latest/toastui-editor-dark.css" />-->
|
|
||||||
<script th:inline="javascript">
|
|
||||||
let editor
|
|
||||||
let onChange = () => {console.log(editor.getMarkdown())}
|
|
||||||
document.addEventListener("DOMContentLoaded", onLoaded);
|
|
||||||
function onLoaded() {
|
|
||||||
var h = document.querySelector('#content').getBoundingClientRect().height + 'px'
|
|
||||||
editor = new toastui.Editor({
|
|
||||||
el: document.querySelector('#editor'),
|
|
||||||
height: '500px',
|
|
||||||
width:'100%',
|
|
||||||
viewer: true,
|
|
||||||
usageStatistics : false,
|
|
||||||
initialValue:
|
|
||||||
"# 제목 " +"\n" +
|
|
||||||
"평문 사이에 **볼드체** *이탤릭체*"+"\n" +
|
|
||||||
"~~어디쓰지~~"+"\n" +
|
|
||||||
"***"+"\n" +
|
|
||||||
"### 모라모라 " +"\n" +
|
|
||||||
"> 으흐흠..." +"\n" +
|
|
||||||
"* 쓸까?" +"\n" +
|
|
||||||
"1. 첫번째" +"\n" +
|
|
||||||
"* [x] 체크하자" +"\n" +
|
|
||||||
"* [ ] 체크하자" +"\n" +
|
|
||||||
" \|dd\|cc\|ff\|\n" +
|
|
||||||
" \|\-\-\-\|\-\-\-\|\-\-\-\|\n" +
|
|
||||||
" \|aa\|s\|s\|" +"\n" +
|
|
||||||
"[링크다](https://youtube.com)" +"\n" +
|
|
||||||
"`var test = 'real test'`" +"\n" +
|
|
||||||
"```\n" +
|
|
||||||
"let test= = 'real test'\n" +
|
|
||||||
"```"
|
|
||||||
,
|
|
||||||
theme:"dark",
|
|
||||||
});
|
|
||||||
}
|
|
||||||
function save() {
|
|
||||||
console.log(editor.getHTML())
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
</head>
|
|
||||||
<div layout:fragment="content" id="content">
|
|
||||||
<input id="title_layer" />
|
|
||||||
<div id="editor" ></div>
|
|
||||||
<div id="hashtag_layer">
|
|
||||||
<select > </select>
|
|
||||||
<input id="hashtag" />
|
|
||||||
</div>
|
|
||||||
<div id="controll_layer" >
|
|
||||||
<button onclick="save()">asdsad</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</html>
|
|
||||||
@ -1,19 +1,24 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html
|
<html xmlns="http://www.w3.org/1999/xhtml"
|
||||||
xmlns:th="http://www.thymeleaf.org"
|
xmlns:th="http://www.thymeleaf.org"
|
||||||
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
|
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
|
||||||
layout:decorate="~{layout/default_layout}"
|
layout:decorate="~{layout/default_layout}">
|
||||||
>
|
|
||||||
<head>
|
<th:block layout:fragment="head">
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
|
<!-- TOAST UI Editor CDN(JS) -->
|
||||||
|
<!-- <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css"/>-->
|
||||||
|
<!-- <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>-->
|
||||||
|
<!-- <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>-->
|
||||||
<script type="text/javascript" src="https://code.jquery.com/jquery-3.5.1.min.js" crossorigin="anonymous"></script>
|
<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.js}"></script>
|
<script type="text/javascript" src="https://uicdn.toast.com/editor/latest/toastui-editor-all.min.js"></script>
|
||||||
<link th:href="@{/css/toast-ui.css}" rel="stylesheet" />
|
<!-- TOAST UI Editor CDN(CSS) -->
|
||||||
<link th:href="@{/css/toast-ui-dark.css}" rel="stylesheet" />
|
<link rel="stylesheet" href="https://uicdn.toast.com/editor/latest/toastui-editor.min.css" />
|
||||||
<!-- <link rel="stylesheet" href="https://uicdn.toast.com/editor/latest/toastui-editor-dark.css" />-->
|
<link rel="stylesheet" href="https://uicdn.toast.com/editor/latest/toastui-editor-dark.css" />
|
||||||
|
<title>Spring Boot</title>
|
||||||
<script th:inline="javascript">
|
<script th:inline="javascript">
|
||||||
let editor
|
let editor
|
||||||
let onChange = () => {console.log(editor.getMarkdown())}
|
|
||||||
document.addEventListener("DOMContentLoaded", onLoaded);
|
|
||||||
function onLoaded() {
|
function onLoaded() {
|
||||||
var h = document.querySelector('#content').getBoundingClientRect().height + 'px'
|
var h = document.querySelector('#content').getBoundingClientRect().height + 'px'
|
||||||
editor = new toastui.Editor({
|
editor = new toastui.Editor({
|
||||||
@ -44,18 +49,20 @@
|
|||||||
"let test= = 'real test'\n" +
|
"let test= = 'real test'\n" +
|
||||||
"```"
|
"```"
|
||||||
,
|
,
|
||||||
theme:"dark",
|
|
||||||
initialEditType:"wysiwyg",
|
initialEditType:"wysiwyg",
|
||||||
|
// events : {
|
||||||
|
// change : this.onChange
|
||||||
|
// },
|
||||||
hooks: {
|
hooks: {
|
||||||
addImageBlobHook: (blob, callback) => {
|
addImageBlobHook: (blob, callback) => {
|
||||||
const formData = new FormData();
|
const formData = new FormData();
|
||||||
formData.append('file', blob);
|
formData.append('file', blob);
|
||||||
|
|
||||||
let url = 'post/images/';
|
let url = 'blog/post/images/';
|
||||||
$.ajax({
|
$.ajax({
|
||||||
type: 'POST',
|
type: 'POST',
|
||||||
enctype: 'multipart/form-data',
|
enctype: 'multipart/form-data',
|
||||||
url: 'post/imageUpload',
|
url: 'blog/post/imageUpload',
|
||||||
data: formData,
|
data: formData,
|
||||||
dataType: 'json',
|
dataType: 'json',
|
||||||
processData: false,
|
processData: false,
|
||||||
@ -75,19 +82,26 @@
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
function save() {
|
function save() {
|
||||||
console.log(editor.getHTML())
|
console.log(editor.getMarkdown())
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
</head>
|
<link th:href="@{/css/common.css}" rel="stylesheet" />
|
||||||
<div layout:fragment="content" id="content">
|
<script type="text/javascript" th:src="@{/js/common.js}"></script>
|
||||||
<input id="title_layer" />
|
<script type="text/javascript" th:src="@{/js/user.js}"></script>
|
||||||
<div id="editor" ></div>
|
</th:block>
|
||||||
|
<body onload="onLoaded()">
|
||||||
|
<th:block layout:fragment="header" th:include="@{/fragments/header}"></th:block>
|
||||||
|
<div layout:fragment='content' class='content' id='content' style="padding: 10px">
|
||||||
|
<input id="title_layer" style="width:100%; height:50px; font-size:30px; border-width: 1px; align-content: center; margin: 10px"/>
|
||||||
|
<div id="editor" style="width:90%; font-size:15px; border-width: 0px; align-content: center"></div>
|
||||||
<div id="hashtag_layer">
|
<div id="hashtag_layer">
|
||||||
<select > </select>
|
<select style="width:40%; height:30px; font-size:15px; border-width: 0px"> </select>
|
||||||
<input id="hashtag" />
|
<input id="hashtag" style="width:40%; height:30px; font-size:15px; border-width: 0px"/>
|
||||||
</div>
|
</div>
|
||||||
<div id="controll_layer" >
|
<div id="controll_layer" style="width: 100%">
|
||||||
<button onclick="save()">asdsad</button>
|
<button onclick="save()">asdsad</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<th:block layout:fragment="footer" th:include="@{/fragments/footer}"></th:block>
|
||||||
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@ -11,12 +11,12 @@
|
|||||||
<link th:href="@{/css/common.css}" rel="stylesheet" />
|
<link th:href="@{/css/common.css}" rel="stylesheet" />
|
||||||
</th:block>
|
</th:block>
|
||||||
<body>
|
<body>
|
||||||
<th:block layout:fragment="header" th:include="@{fragments/header}"></th:block>
|
<th:block layout:fragment="header" th:include="@{/fragments/header}"></th:block>
|
||||||
|
|
||||||
<div layout:fragment="content" class="content">
|
<div layout:fragment="content" class="content">
|
||||||
<h2>This is Content</h2>
|
<h2>This is Content</h2>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<th:block layout:fragment="footer" th:include="@{fragments/footer}"></th:block>
|
<th:block layout:fragment="footer" th:include="@{/fragments/footer}"></th:block>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@ -1,19 +1,25 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html
|
<html xmlns="http://www.w3.org/1999/xhtml"
|
||||||
xmlns:th="http://www.thymeleaf.org"
|
xmlns:th="http://www.thymeleaf.org"
|
||||||
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
|
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
|
||||||
layout:decorate="~{layout/default_layout}"
|
layout:decorate="~{layout/default_layout}">
|
||||||
>
|
|
||||||
<head>
|
<th:block layout:fragment="head">
|
||||||
<!--css,JS 추가영역-->
|
<title>Spring Boot</title>
|
||||||
<script th:inline="javascript">
|
<script th:inline="javascript">
|
||||||
function jopinClick() {
|
function jopinClick() {
|
||||||
onclickJoin([[${enc}]],[[${keyword}]])
|
onclickJoin([[${enc}]],[[${key}]])
|
||||||
}
|
}
|
||||||
</script>
|
</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>
|
<script type="text/javascript" th:src="@{/js/user.js}"></script>
|
||||||
</head>
|
</th:block>
|
||||||
<div layout:fragment="content" id="content">
|
<body onload="checkDebug()">
|
||||||
|
<th:block layout:fragment="header" th:include="@{/fragments/header}"></th:block>
|
||||||
|
|
||||||
|
<div layout:fragment="content" class="content">
|
||||||
<table>
|
<table>
|
||||||
<tr>
|
<tr>
|
||||||
<td><h2>회원가입</h2></td>
|
<td><h2>회원가입</h2></td>
|
||||||
@ -31,4 +37,7 @@
|
|||||||
<tr><td><input type="submit" value="가입하기" class="btn" onclick="jopinClick()"></td></tr>
|
<tr><td><input type="submit" value="가입하기" class="btn" onclick="jopinClick()"></td></tr>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<th:block layout:fragment="footer" th:include="@{/fragments/footer}"></th:block>
|
||||||
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@ -17,7 +17,7 @@
|
|||||||
<script type="text/javascript" th:src="@{/js/user.js}"></script>
|
<script type="text/javascript" th:src="@{/js/user.js}"></script>
|
||||||
</th:block>
|
</th:block>
|
||||||
<body onload="checkDebug()">
|
<body onload="checkDebug()">
|
||||||
<th:block layout:fragment="header" th:include="@{fragments/header}"></th:block>
|
<th:block layout:fragment="header" th:include="@{/fragments/header}"></th:block>
|
||||||
|
|
||||||
<div layout:fragment="content" class="content">
|
<div layout:fragment="content" class="content">
|
||||||
<table>
|
<table>
|
||||||
@ -29,6 +29,6 @@
|
|||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<th:block layout:fragment="footer" th:include="@{fragments/footer}"></th:block>
|
<th:block layout:fragment="footer" th:include="@{/fragments/footer}"></th:block>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@ -1,6 +1,5 @@
|
|||||||
<!DOCTYPE html>
|
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
|
||||||
<html xmlns:th="http://www.thymeleaf.org">
|
<div class="footer">
|
||||||
<footer th:fragment="footer">
|
<h2>Footer</h2>
|
||||||
asdasdasd
|
</div>
|
||||||
</footer>
|
|
||||||
</html>
|
</html>
|
||||||
@ -1,6 +1,5 @@
|
|||||||
<!DOCTYPE html>
|
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
|
||||||
<html xmlns:th="http://www.thymeleaf.org">
|
<div class="header">
|
||||||
<header th:fragment="header">
|
<h2>Header</h2>
|
||||||
header.html
|
</div>
|
||||||
</header>
|
|
||||||
</html>
|
</html>
|
||||||
@ -1,24 +1,15 @@
|
|||||||
<!DOCTYPE html>
|
<html lang="ko"
|
||||||
<html
|
|
||||||
lagn="ko"
|
|
||||||
xmlns:th="http://www.thymeleaf.org"
|
xmlns:th="http://www.thymeleaf.org"
|
||||||
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
|
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout">
|
||||||
xmlns="http://www.w3.org/1999/html">
|
|
||||||
|
|
||||||
<head>
|
<!--/* 이곳에 각 view가 위치합니다. */-->
|
||||||
<meta charset="UTF-8" />
|
<th:block layout:fragment="head"></th:block>
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
||||||
<link th:href="@{/css/common.css}" rel="stylesheet" />
|
<div>
|
||||||
<script type="text/javascript" th:src="@{/js/common.js}"></script>
|
<div layout:fragment="header"></div>
|
||||||
<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">
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div th:replace="fragments/header :: header"></div>
|
|
||||||
|
|
||||||
<div layout:fragment="content"></div>
|
<div layout:fragment="content"></div>
|
||||||
|
|
||||||
<div th:replace="fragments/footer :: footer"></div>
|
<div layout:fragment="footer"></div>
|
||||||
</body>
|
</div>
|
||||||
</html>
|
</html>
|
||||||
Loading…
x
Reference in New Issue
Block a user