From 69d2df4ac498ee2c32ae74bbc24b9595779ea3b6 Mon Sep 17 00:00:00 2001 From: lunaticbum <> Date: Wed, 23 Oct 2024 10:07:45 +0900 Subject: [PATCH] ... --- build.gradle.kts | 21 +++ .../back/lun/controllers/BlogController.kt | 74 ++++++++- .../back/lun/controllers/BumsPrivate.kt | 15 +- .../lunaticbum/back/lun/controllers/Home.kt | 25 ++- .../back/lun/controllers/Telegram.kt | 25 +-- .../back/lun/controllers/UserController.kt | 15 +- .../lunaticbum/back/lun/model/BumsPrivate.kt | 11 +- .../kr/lunaticbum/back/lun/model/Post.kt | 75 +++++++++ src/main/resources/static/css/common.css | 39 ++++- src/main/resources/static/js/blog.js | 18 +++ .../templates/content/blog/viewer.html | 18 ++- .../templates/content/blog/write.html | 36 +++-- .../resources/templates/content/home.html | 26 +-- .../resources/templates/content/licenses.html | 151 ++++++++++++++++++ .../templates/content/private/where.html | 20 +++ .../resources/templates/fragments/footer.html | 9 +- .../resources/templates/fragments/header.html | 6 +- .../templates/fragments/includes.html | 1 + .../templates/layout/default_layout.html | 9 +- 19 files changed, 513 insertions(+), 81 deletions(-) create mode 100644 src/main/kotlin/kr/lunaticbum/back/lun/model/Post.kt create mode 100644 src/main/resources/static/js/blog.js create mode 100644 src/main/resources/templates/content/licenses.html create mode 100644 src/main/resources/templates/content/private/where.html diff --git a/build.gradle.kts b/build.gradle.kts index faa89fd..a391869 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,8 +1,13 @@ +import com.github.jk1.license.render.* +import com.github.jk1.license.filter.ExcludeTransitiveDependenciesFilter +import com.github.jk1.license.filter.LicenseBundleNormalizer + plugins { kotlin("jvm") version "1.9.25" kotlin("plugin.spring") version "1.9.25" id("org.springframework.boot") version "3.3.4" id("io.spring.dependency-management") version "1.1.6" + id("com.github.jk1.dependency-license-report") version "2.0" } group = "kr.lunaticbum.back" @@ -101,3 +106,19 @@ tasks.jar { } +licenseReport { + // 라이센스 고지 파일을 반환할 경로 default는 $projectDir/reports/dependency-license + outputDir = "$projectDir/build/licenses" + + // markdown 생성 +// renderers = listOf(InventoryMarkdownReportRenderer()).toTypedArray() + + // html 생성 + renderers = listOf(InventoryHtmlReportRenderer()).toTypedArray() + + // xml 생성 + // renderers = [new XmlReportRenderer()] + + // 보고서에 첫 번째 수준 종속성만 표기 + filters = listOf(LicenseBundleNormalizer(), ExcludeTransitiveDependenciesFilter()).toTypedArray() +} \ No newline at end of file diff --git a/src/main/kotlin/kr/lunaticbum/back/lun/controllers/BlogController.kt b/src/main/kotlin/kr/lunaticbum/back/lun/controllers/BlogController.kt index 5976c19..89f7850 100644 --- a/src/main/kotlin/kr/lunaticbum/back/lun/controllers/BlogController.kt +++ b/src/main/kotlin/kr/lunaticbum/back/lun/controllers/BlogController.kt @@ -6,9 +6,10 @@ import com.google.gson.Gson import jakarta.servlet.http.HttpServletRequest import jakarta.servlet.http.HttpServletResponse 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.controllers.UserController.Companion.ApiKeyWordKey +import kr.lunaticbum.back.lun.controllers.UserController.Companion.EncType11 +import kr.lunaticbum.back.lun.controllers.UserController.Companion.EncTypeKey +import kr.lunaticbum.back.lun.model.* import kr.lunaticbum.back.lun.utils.LogService import kr.lunaticbum.back.lun.utils.getFileExtension import org.springframework.beans.factory.annotation.Autowired @@ -17,6 +18,7 @@ import org.springframework.core.io.Resource import org.springframework.core.io.UrlResource import org.springframework.http.MediaType import org.springframework.http.ResponseEntity +import org.springframework.security.core.userdetails.UserDetails import org.springframework.web.bind.annotation.* import org.springframework.web.multipart.MultipartFile import org.springframework.web.reactive.function.client.WebClient @@ -36,11 +38,22 @@ class BlogController() { private lateinit var locationLogService: LocationLogService @Autowired - lateinit var logService: LogService + private lateinit var postManageg: PostManageg - @GetMapping("write") - fun writ() : ModelAndView{ + @Autowired + lateinit var logService: LogService + val WRITE_PERMISSION_KEY = "PERMISSION" + @GetMapping("write/{token}","write") + fun writ(@PathVariable token : String? ) : ModelAndView{ val vm = ModelAndView("content/blog/write") + if (token.equals("TEMP_TOKEN_VIBUM")) { + vm.modelMap.put(WRITE_PERMISSION_KEY,"OK") + vm.modelMap.put(EncTypeKey, EncType11) + vm.modelMap.put(ApiKeyWordKey,"WRITE") + vm.modelMap.put("title","회원이 들어는 구나~!!") + } else { + vm.modelMap.put(WRITE_PERMISSION_KEY,"NO") + } // when(System.currentTimeMillis() % 5L) { // 0L -> vm.modelMap.put(EncTypeKey,"T4") // 1L -> vm.modelMap.put(EncTypeKey,"T3") @@ -51,6 +64,53 @@ class BlogController() { return vm } + @PostMapping("post.ajax") + fun post(httpServletRequest: HttpServletRequest, @RequestBody jsonString: String) : ResponseEntity { + logService.log("${httpServletRequest.requestURI}") + logService.log(jsonString) + var lResultCode = 0 + var lResultMsg = "Suscces" + var u : UserDetails? = null + val decodedBytes: ByteArray = Base64.getDecoder().decode(jsonString) + String(decodedBytes).let { + Gson().fromJson(it, RequestModel::class.java)?.let { model -> + logService.log(Gson().toJson(model)) + model.data?.let { jsonString -> + try { + val reqString = jsonString.split(globalEvv.padding(model.getKeyword())) + val nb = arrayListOf() + val na = arrayListOf() + reqString[0].replace(globalEvv.padding(model.getKeyword()),"").split("").toList().let { na.addAll(it) } + reqString[1].replace(globalEvv.padding(model.getKeyword()),"").split("").toList().let { nb.addAll(it) } + var max = nb.size + na.size + var fullData = arrayListOf() + for (idx in 0..max) { if (idx % 2 == 0) { if (nb.size > 0) { fullData.add(nb.removeLast()) } } else { if (na.size > 0) { fullData.add(na.removeLast()) } } } + logService.log(fullData.joinToString("")) + val target = Gson().fromJson(fullData.joinToString(""), Post::class.java) ?: Post() + var user = postManageg.save(target) + if (user != null) { + lResultMsg = "save post" + lResultCode = 0 + } else { + lResultMsg = "not founding user[can't find same id,email.. ]" + lResultCode = 7100 + } + } catch (e: Exception) { + e.printStackTrace() + lResultMsg = "unknown exception" + lResultCode = 7999 + } + } + } + } + val responce = ResponseEntity.ok().headers { + }.contentType(MediaType.APPLICATION_JSON).body(ResponceResult().apply { + this.resultCode = lResultCode + this.resultMsg = lResultMsg + }) + return responce + } + @GetMapping("viewer/{blogId}") fun viewer(@PathVariable blogId : String) : ModelAndView{ val vm = ModelAndView("content/blog/viewer") @@ -67,7 +127,7 @@ class BlogController() { @GetMapping("recent") fun recent() : ModelAndView{ val vm = ModelAndView("content/blog/viewer") - locationLogService.find50().forEach { + locationLogService.find20().forEach { logService.log(Gson().toJson(it)) } locationLogService.getLocationLog()?.let { diff --git a/src/main/kotlin/kr/lunaticbum/back/lun/controllers/BumsPrivate.kt b/src/main/kotlin/kr/lunaticbum/back/lun/controllers/BumsPrivate.kt index 199d7ac..7e041bd 100644 --- a/src/main/kotlin/kr/lunaticbum/back/lun/controllers/BumsPrivate.kt +++ b/src/main/kotlin/kr/lunaticbum/back/lun/controllers/BumsPrivate.kt @@ -11,9 +11,9 @@ import kr.lunaticbum.back.lun.utils.LogService import org.springframework.beans.factory.annotation.Autowired import org.springframework.http.MediaType import org.springframework.http.ResponseEntity -import org.springframework.security.core.userdetails.UserDetails import org.springframework.web.bind.annotation.* import org.springframework.web.reactive.function.client.WebClient +import org.springframework.web.servlet.ModelAndView import java.util.* @@ -29,6 +29,19 @@ class BumsPrivate { @Autowired lateinit var locationService: LocationLogService + @GetMapping("where") + fun where() : ModelAndView { + val m = ModelAndView("content/private/where") + locationService.find20().apply { + m.modelMap.put("locations",this.reversed()) + forEach { + logService.log(it.timeString.plus(it.mAddressLines.joinToString(","))) + } + } + m.modelMap.put("title","돼지 여기있다요~!!") + return m + } + @ResponseBody @PostMapping("save/loc.api") fun login(httpServletRequest: HttpServletRequest, @RequestBody jsonString: String) : ResponseEntity { diff --git a/src/main/kotlin/kr/lunaticbum/back/lun/controllers/Home.kt b/src/main/kotlin/kr/lunaticbum/back/lun/controllers/Home.kt index 5ddd011..93d587b 100644 --- a/src/main/kotlin/kr/lunaticbum/back/lun/controllers/Home.kt +++ b/src/main/kotlin/kr/lunaticbum/back/lun/controllers/Home.kt @@ -1,5 +1,9 @@ package kr.lunaticbum.back.lun.controllers +import com.google.gson.Gson +import kr.lunaticbum.back.lun.model.PostManageg +import kr.lunaticbum.back.lun.utils.LogService +import org.springframework.beans.factory.annotation.Autowired import org.springframework.web.bind.annotation.GetMapping import org.springframework.web.bind.annotation.RequestMapping import org.springframework.web.bind.annotation.RestController @@ -9,9 +13,28 @@ import org.springframework.web.servlet.ModelAndView @RequestMapping() class Home { + @Autowired + lateinit var logService: LogService + + @Autowired + private lateinit var postManageg: PostManageg + @GetMapping("/","/home") fun home() : ModelAndView { - val vm = ModelAndView("content/blog/write") + val vm = ModelAndView("content/home") + vm.modelMap.put("posts", postManageg.find20().apply { + this.forEach { + logService.log(Gson().toJson(it)) + } + }) return vm } + + + @GetMapping("/licenses") + fun licenses() : ModelAndView { + val vm = ModelAndView("content/licenses") + return vm + } + } \ No newline at end of file diff --git a/src/main/kotlin/kr/lunaticbum/back/lun/controllers/Telegram.kt b/src/main/kotlin/kr/lunaticbum/back/lun/controllers/Telegram.kt index 1e994e8..89ec612 100644 --- a/src/main/kotlin/kr/lunaticbum/back/lun/controllers/Telegram.kt +++ b/src/main/kotlin/kr/lunaticbum/back/lun/controllers/Telegram.kt @@ -18,8 +18,11 @@ 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.math.RoundingMode import java.text.SimpleDateFormat +import java.time.Duration import java.util.* +import java.util.concurrent.TimeUnit @RestController @@ -131,19 +134,21 @@ class Telegram { ) { locationLogService.getLocationLog()?.let { try { - val client0 = WebClient.create() - val result = client0.get() + WebClient.create().get() .uri("http://api.weatherapi.com/v1/current.json?key=${globalEvv.weatherApiKey}&q=${it.mLatitude},${it.mLongitude}&aqi=no") .retrieve() .bodyToMono(String::class.java) - .block() ?: "FAIL" - 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(BigDecimal(it.mLatitude).setScale(5).toString(),BigDecimal(it.mLongitude).setScale(5).toString())}") - .retrieve() - .bodyToMono(String::class.java).block() ?: "FAIL" - } + .timeout(Duration.ofSeconds(30L)) + .block()?.let { result -> + Gson().fromJson(result, CurrentWeather::class.java)?.let { sss -> + val fullUrl = "https://api.telegram.org/${globalEvv.telegramBotKey}/sendMessage?chat_id=${globalEvv.telegramMyId}&text=${sss.getSummaryInfo(BigDecimal(it.mLatitude).setScale(3, RoundingMode.HALF_UP).toString(),BigDecimal(it.mLongitude).setScale(3, RoundingMode.HALF_UP).toString())}" + logService.log("fullUrl >>> ${fullUrl}") + WebClient.create().get() + .uri(fullUrl) + .retrieve() + .bodyToMono(String::class.java).block() ?: "FAIL" + } + } } catch (e : Exception) { diff --git a/src/main/kotlin/kr/lunaticbum/back/lun/controllers/UserController.kt b/src/main/kotlin/kr/lunaticbum/back/lun/controllers/UserController.kt index 031ce9c..9bab1e5 100644 --- a/src/main/kotlin/kr/lunaticbum/back/lun/controllers/UserController.kt +++ b/src/main/kotlin/kr/lunaticbum/back/lun/controllers/UserController.kt @@ -23,12 +23,15 @@ import kotlin.math.log @RestController @RequestMapping("/user") class UserController { - val EncTypeKey = "enc" - val EncType00 = "T0" - val EncType11 = "T3" - val EncType10 = "T2" - val EncType01 = "T1" - val ApiKeyWordKey = "keyword" + companion object{ + val EncTypeKey = "enc" + val EncType00 = "T0" + val EncType11 = "T3" + val EncType10 = "T2" + val EncType01 = "T1" + val ApiKeyWordKey = "keyword" + } + @Autowired lateinit var globalEvv : GlobalEnvironment diff --git a/src/main/kotlin/kr/lunaticbum/back/lun/model/BumsPrivate.kt b/src/main/kotlin/kr/lunaticbum/back/lun/model/BumsPrivate.kt index f14b5ef..8f1fa5f 100644 --- a/src/main/kotlin/kr/lunaticbum/back/lun/model/BumsPrivate.kt +++ b/src/main/kotlin/kr/lunaticbum/back/lun/model/BumsPrivate.kt @@ -1,10 +1,6 @@ package kr.lunaticbum.back.lun.model import com.google.gson.Gson -import com.mongodb.client.model.Sorts.descending -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.launch import kr.lunaticbum.back.lun.configs.GlobalEnvironment import kr.lunaticbum.back.lun.utils.LogService import lombok.AllArgsConstructor @@ -14,13 +10,11 @@ import org.bson.codecs.pojo.annotations.BsonIgnore import org.jsoup.Jsoup import org.springframework.beans.factory.annotation.Autowired import org.springframework.data.annotation.Id -import org.springframework.data.domain.Page 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 org.springframework.web.reactive.function.client.WebClient -import reactor.core.publisher.Flux import reactor.core.publisher.Mono import java.text.SimpleDateFormat import java.time.Duration @@ -97,8 +91,8 @@ class LocationLogService : LocationService { @Autowired private lateinit var logRepository: LocationLogRepository - fun find50() : List { - return logRepository.findAll().takeLast(50).buffer(50).blockLast(Duration.ofSeconds(30)) ?: listOf() + fun find20() : List { + return logRepository.findAll().takeLast(20).buffer(20).blockLast(Duration.ofSeconds(30)) ?: listOf() } fun getLocationLog() : LocationLog? { return logRepository.findFirstByOrderByTimeDesc().block() @@ -110,7 +104,6 @@ class LocationLogService : LocationService { logRepository.save(log).subscribe( { println("saved msg after ${it}") },{e -> e.printStackTrace()},{ println("saved msg comp") }) - } } diff --git a/src/main/kotlin/kr/lunaticbum/back/lun/model/Post.kt b/src/main/kotlin/kr/lunaticbum/back/lun/model/Post.kt new file mode 100644 index 0000000..cfac475 --- /dev/null +++ b/src/main/kotlin/kr/lunaticbum/back/lun/model/Post.kt @@ -0,0 +1,75 @@ +package kr.lunaticbum.back.lun.model + +import kr.lunaticbum.back.lun.utils.LogService +import lombok.AllArgsConstructor +import lombok.Data +import lombok.NoArgsConstructor +import org.bson.BsonType +import org.bson.codecs.pojo.annotations.BsonCreator +import org.bson.codecs.pojo.annotations.BsonId +import org.bson.codecs.pojo.annotations.BsonRepresentation +import org.springframework.beans.factory.annotation.Autowired +import org.springframework.data.mongodb.core.mapping.Document +import org.springframework.data.mongodb.repository.Query +import org.springframework.data.mongodb.repository.ReactiveMongoRepository +import org.springframework.security.core.userdetails.UserDetails +import org.springframework.security.core.userdetails.UserDetailsService +import org.springframework.security.crypto.password.PasswordEncoder +import org.springframework.stereotype.Repository +import org.springframework.stereotype.Service +import reactor.core.publisher.Mono +import java.time.Duration + +@Data +@NoArgsConstructor +@AllArgsConstructor +@Document(collection = "Post") +class Post { + @BsonId + @BsonRepresentation(BsonType.OBJECT_ID) + var id: String? = null + + var title : String? = null + var content : String? = null + var category : String? = null + var tags : String? = null + var writer : String? = null + var writeTime : Long = 0 + var modifyTime : Long = 0 + var posting : Boolean = false +} + + +@Repository +interface PostRepository : ReactiveMongoRepository { + +} + + +@Service +class PostManageg { + @Autowired + private lateinit var logService: LogService + + @Autowired + private lateinit var postRepository: PostRepository + + @Autowired + private lateinit var bCryptPasswordEncoder: PasswordEncoder + + fun find20() : List { + return postRepository.findAll().takeLast(20).buffer(20).blockLast(Duration.ofSeconds(30)) ?: listOf() + } + + fun save(post: Post): Mono { + println("saved user before ${post}") +// user.hashPassword(bCryptPasswordEncoder) + return postRepository.save(post).apply { + subscribe { + println("saved user after ${this@apply}") + } + } + } + + +} \ No newline at end of file diff --git a/src/main/resources/static/css/common.css b/src/main/resources/static/css/common.css index 5e717fb..11f0306 100644 --- a/src/main/resources/static/css/common.css +++ b/src/main/resources/static/css/common.css @@ -10,7 +10,16 @@ html { margin: 1vh 1vw; background: #202025ee; } +#where{ + table-layout: fixed; +} + +.where_item { + display: table-cell; +} body { + user-select: none; + -webkit-user-select: none; align-content: center; padding: 1vh 1vw; background-image: url("data:image/svg+xml,") @@ -55,13 +64,41 @@ header { display: flex; position: relative; } +#bottom { + float: right; + display: inline-block; + justify-content: space-between; + margin-left: auto; + grid-auto-flow: column; + grid-template-columns: 3fr; + position: absolute; + right: 30px; +} + +#top { + float: left; + display: inline-block; + justify-content: space-between; + margin-left: auto; + grid-auto-flow: column; + grid-template-columns: 3fr; + position: absolute; + left: 30px; +} + +h2 { + margin: 1vw; +} #main_layer { + border-radius: 10px 10px 0px 10px; + padding: 10px; margin: 1vw 1vh; position: relative; overflow-y: auto; overflow-x: clip; - height: 70vh; + height: 68vh; + max-height: 68vh; min-height: 8vh; } diff --git a/src/main/resources/static/js/blog.js b/src/main/resources/static/js/blog.js new file mode 100644 index 0000000..6721462 --- /dev/null +++ b/src/main/resources/static/js/blog.js @@ -0,0 +1,18 @@ + +function onclickWrite(type, keyword, html) { + let title_field = document.getElementById('title_field') + var hasValues = true + if (hasValues) { + let data = { + 'title': title_field.value, + 'content': encodeURIComponent(html), + } + let uploadUrl = location.protocol + "//" + location.hostname + "/blog/post.ajax"; + if(confirm(JSON.stringify(data) + "\n해당 내용으로\n유저 등록 하실??")) { + post(uploadUrl,type,JSON.stringify(data),keyword, function (resultData) { + alert(resultData) + }) + } else { + } + } +} \ No newline at end of file diff --git a/src/main/resources/templates/content/blog/viewer.html b/src/main/resources/templates/content/blog/viewer.html index e328c5e..495831b 100644 --- a/src/main/resources/templates/content/blog/viewer.html +++ b/src/main/resources/templates/content/blog/viewer.html @@ -51,14 +51,16 @@ - -
-
- - -
-
- +
+ +
+
+ + +
+
+ +
diff --git a/src/main/resources/templates/content/blog/write.html b/src/main/resources/templates/content/blog/write.html index 3c67df7..31ec449 100644 --- a/src/main/resources/templates/content/blog/write.html +++ b/src/main/resources/templates/content/blog/write.html @@ -7,6 +7,7 @@ + @@ -63,12 +64,12 @@ addImageBlobHook: (blob, callback) => { const formData = new FormData(); formData.append('file', blob); - - let url = 'post/images/'; + let uploadUrl = location.protocol + "//" + location.hostname + "/blog/post/imageUpload"; + let imageUrl = location.protocol + "//" + location.hostname + '/blog/post/images/'; $.ajax({ type: 'POST', enctype: 'multipart/form-data', - url: 'post/imageUpload', + url: uploadUrl, data: formData, dataType: 'json', processData: false, @@ -76,8 +77,8 @@ cache: false, timeout: 600000, success: function (data) { - url += data.fileName; - callback(url, '사진 대체 텍스트 입력'); + imageUrl += data.fileName; + callback(imageUrl, '사진 대체 텍스트 입력'); }, error: function (e) { callback('image_load_fail', '사진 대체 텍스트 입력'); @@ -89,20 +90,27 @@ } function save() { console.log(editor.getHTML()) + console.log(editor.getMarkdown()) + onclickWrite([[${enc}]],[[${keyword}]],editor.getMarkdown()) }
-
- -
-
-
- - - -
+ +

권한이 없는 뎁쇼?!

+
+ +
+ +
+
+
+ + + +
+
diff --git a/src/main/resources/templates/content/home.html b/src/main/resources/templates/content/home.html index ba2b273..20b87cc 100644 --- a/src/main/resources/templates/content/home.html +++ b/src/main/resources/templates/content/home.html @@ -1,22 +1,12 @@ - - + - Spring Boot - - - - - -
-

This is Content

-
- - - - \ No newline at end of file + +
+
+ diff --git a/src/main/resources/templates/content/licenses.html b/src/main/resources/templates/content/licenses.html new file mode 100644 index 0000000..caeb6ec --- /dev/null +++ b/src/main/resources/templates/content/licenses.html @@ -0,0 +1,151 @@ + + + + + + + + + + +
+
+
+
+ diff --git a/src/main/resources/templates/content/private/where.html b/src/main/resources/templates/content/private/where.html new file mode 100644 index 0000000..6f328ad --- /dev/null +++ b/src/main/resources/templates/content/private/where.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + +
+
+ \ No newline at end of file diff --git a/src/main/resources/templates/fragments/footer.html b/src/main/resources/templates/fragments/footer.html index 0da8044..a48b38b 100644 --- a/src/main/resources/templates/fragments/footer.html +++ b/src/main/resources/templates/fragments/footer.html @@ -1,6 +1,13 @@ -
+
\ No newline at end of file diff --git a/src/main/resources/templates/fragments/header.html b/src/main/resources/templates/fragments/header.html index c4f2285..7c21dea 100644 --- a/src/main/resources/templates/fragments/header.html +++ b/src/main/resources/templates/fragments/header.html @@ -2,7 +2,11 @@
- + + + + +

HOME

\ No newline at end of file diff --git a/src/main/resources/templates/fragments/includes.html b/src/main/resources/templates/fragments/includes.html index f4cd19c..a635d42 100644 --- a/src/main/resources/templates/fragments/includes.html +++ b/src/main/resources/templates/fragments/includes.html @@ -8,5 +8,6 @@ + \ No newline at end of file diff --git a/src/main/resources/templates/layout/default_layout.html b/src/main/resources/templates/layout/default_layout.html index 2ae77ce..c82364a 100644 --- a/src/main/resources/templates/layout/default_layout.html +++ b/src/main/resources/templates/layout/default_layout.html @@ -5,20 +5,21 @@ xmlns="http://www.w3.org/1999/html"> - + - + - + + - + \ No newline at end of file