From f87e62db7fcefc8edd142fc959a0ccd6a21aa2f5 Mon Sep 17 00:00:00 2001 From: Christian Simon Date: Thu, 31 Dec 2015 16:24:59 +0100 Subject: [PATCH] Sitemap fix, configurable media directory --- app/admin/AdminTasks.scala | 3 +++ app/controllers/AdminController.scala | 2 ++ app/controllers/SiteMapController.scala | 2 +- app/util/renderers/ContentRenderer.scala | 12 ++++++++---- conf/application.conf | 1 + 5 files changed, 15 insertions(+), 5 deletions(-) diff --git a/app/admin/AdminTasks.scala b/app/admin/AdminTasks.scala index 0ea62dc..58ee37c 100644 --- a/app/admin/AdminTasks.scala +++ b/app/admin/AdminTasks.scala @@ -23,6 +23,7 @@ import util.renderers.RenderContext import util.renderers.RenderTypeBlog import controllers.routes import java.nio.file.Files +import play.api.Configuration /** * Admin tasks. @@ -40,6 +41,8 @@ object AdminTasks extends Logging { val mdFormat = MarkdownContentRenderer.renderFormat lazy val config = ConfigFactory.defaultApplication() + + implicit lazy val playConfig = Configuration(config) def dbConfig = DatabaseConfig.forConfig[MySQLDriver](path = "slick.dbs.default", config = config) diff --git a/app/controllers/AdminController.scala b/app/controllers/AdminController.scala index 377f615..94eb105 100644 --- a/app/controllers/AdminController.scala +++ b/app/controllers/AdminController.scala @@ -28,6 +28,7 @@ import scala.util.Failure import scala.util.Success import util.renderers.ContentWithAbstract import models.Attachment +import play.api.Play.current @Singleton class AdminController @Inject() (blogService: BlogService, val messagesApi: MessagesApi) extends AbstractController with I18nSupport { @@ -262,6 +263,7 @@ class AdminController @Inject() (blogService: BlogService, val messagesApi: Mess } private def render(blogEntry: BlogEntry, attachments: Seq[Attachment], content: String) = { + implicit val config = current.configuration implicit val renderContext = RenderContext.blogRenderContext(blogEntry, attachments) ContentRenderers.render(content) } diff --git a/app/controllers/SiteMapController.scala b/app/controllers/SiteMapController.scala index 96c234b..b32b940 100644 --- a/app/controllers/SiteMapController.scala +++ b/app/controllers/SiteMapController.scala @@ -55,7 +55,7 @@ class SiteMapController @Inject() (blogService: BlogService) extends AbstractCon { url.changefreq } { if (url.changed.isDefined) { - { url.lastmod.get } + { url.lastmod.get } } } { url.priority } diff --git a/app/util/renderers/ContentRenderer.scala b/app/util/renderers/ContentRenderer.scala index cb3163c..f6cb7e2 100644 --- a/app/util/renderers/ContentRenderer.scala +++ b/app/util/renderers/ContentRenderer.scala @@ -8,6 +8,7 @@ import play.api.mvc.Call import util.renderers.post.PostRenderers import util.renderers.pre.PreRenderers import models.Attachment +import play.api.Configuration case class ContentWithAbstract(abstractText: String, content: String) { @@ -24,13 +25,16 @@ case class RenderContext(renderType: RenderType, format: String, attachments: Se object RenderContext { - val blogAttachmentRoot = new File("media/blog") + def blogAttachmentRoot(implicit configuration: Configuration) = + new File(configuration.getString("media.path").getOrElse("media") + "/blog") - def blogAttachmentDestination(blogId: Int) = new File(blogAttachmentRoot, blogId.toString) + def blogAttachmentDestination(blogId: Int)(implicit configuration: Configuration) = + new File(blogAttachmentRoot, blogId.toString) - def blogAttachmentFolder(blogId: Int) = Option(blogAttachmentDestination(blogId)) filter { _.isDirectory } + def blogAttachmentFolder(blogId: Int)(implicit configuration: Configuration) = + Option(blogAttachmentDestination(blogId)) filter { _.isDirectory } - def blogRenderContext(blog: BlogEntry, attachments: Seq[Attachment]): RenderContext = + def blogRenderContext(blog: BlogEntry, attachments: Seq[Attachment])(implicit configuration: Configuration): RenderContext = RenderContext(RenderTypeBlog, blog.contentFormat, attachments, blogAttachmentFolder(blog.id), routes.BlogController.showBlogEntry(blog.url), routes.BlogController.attachment(blog.url, _), routes.BlogController.attachmentGallery(blog.url, _), diff --git a/conf/application.conf b/conf/application.conf index 0be8797..7922939 100644 --- a/conf/application.conf +++ b/conf/application.conf @@ -46,6 +46,7 @@ slick.dbs.default = { # Media # ~~~~~ media { + # !!! This connection parameters must be overwritten in instance.conf !!! path = media }