From f632b94351593a1042fcfec26b6ba0ca491febf1 Mon Sep 17 00:00:00 2001 From: Maxim Valyanskiy Date: Fri, 11 Aug 2023 18:56:12 +0300 Subject: [PATCH] =?UTF-8?q?=D1=83=D0=B1=D1=80=D0=B0=D0=BB=20=D1=87=D0=B8?= =?UTF-8?q?=D1=81=D0=BB=D0=BE=20=D0=BA=D0=BE=D0=BC=D0=BC=D0=B5=D0=BD=D1=82?= =?UTF-8?q?=D0=B0=D1=80=D0=B8=D0=B5=D0=B2=20=D1=83=20=D0=B7=D0=B0=D0=BA?= =?UTF-8?q?=D1=80=D1=8B=D1=82=D1=8B=D1=85=20=D1=82=D0=BE=D0=BF=D0=B8=D0=BA?= =?UTF-8?q?=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit fixes #1035 --- .../ru/org/linux/tag/TagPageController.scala | 7 +++--- .../org/linux/spring/MainPageController.scala | 3 +-- .../ru/org/linux/topic/BriefTopicRef.scala | 22 +++++-------------- .../org/linux/topic/TopicPrepareService.scala | 18 +++++++++++++++ 4 files changed, 27 insertions(+), 23 deletions(-) diff --git a/src/main/java/ru/org/linux/tag/TagPageController.scala b/src/main/java/ru/org/linux/tag/TagPageController.scala index 719fb70f27..0facda66d7 100644 --- a/src/main/java/ru/org/linux/tag/TagPageController.scala +++ b/src/main/java/ru/org/linux/tag/TagPageController.scala @@ -23,7 +23,6 @@ import org.springframework.web.servlet.ModelAndView import org.springframework.web.servlet.view.RedirectView import ru.org.linux.auth.AuthUtil import ru.org.linux.gallery.ImageService -import ru.org.linux.group.GroupDao import ru.org.linux.section.{Section, SectionService} import ru.org.linux.site.Template import ru.org.linux.tag.TagPageController.isRecent @@ -56,7 +55,7 @@ object TagPageController { @Controller @RequestMapping(value = Array("/tag/{tag}"), params = Array("!section")) class TagPageController(tagService: TagService, prepareService: TopicPrepareService, topicListService: TopicListService, - sectionService: SectionService, groupDao: GroupDao, userTagService: UserTagService, imageService: ImageService, + sectionService: SectionService, userTagService: UserTagService, imageService: ImageService, actorSystem: ActorSystem) extends StrictLogging { private implicit val akka: ActorSystem = actorSystem @@ -178,7 +177,7 @@ class TagPageController(tagService: TagService, prepareService: TopicPrepareServ (Map( "fullNews" -> fullNews, "addNews" -> AddTopicController.getAddUrl(newsSection, tag), - "briefNews" -> TopicListTools.split(briefNewsByDate.map(p => p._1 -> BriefTopicRef.fromTopicNoGroup(p._2))) + "briefNews" -> TopicListTools.split(briefNewsByDate.map(p => p._1 -> prepareService.prepareBrief(p._2, groupInTitle = false))) ) ++ more, newestDate) } @@ -226,7 +225,7 @@ class TagPageController(tagService: TagService, prepareService: TopicPrepareServ (Map( forumSection.getUrlName+"Add" -> AddTopicController.getAddUrl(forumSection, tag), forumSection.getUrlName -> TopicListTools.split( - topicByDate.map(p => p._1 -> BriefTopicRef.fromTopic(p._2, groupDao.getGroup(p._2.groupId).getTitle))) + topicByDate.map(p => p._1 -> prepareService.prepareBrief(p._2, groupInTitle = true))) ) ++ more, newestDate) } } diff --git a/src/main/scala/ru/org/linux/spring/MainPageController.scala b/src/main/scala/ru/org/linux/spring/MainPageController.scala index 05f28ee12e..50b043e83d 100644 --- a/src/main/scala/ru/org/linux/spring/MainPageController.scala +++ b/src/main/scala/ru/org/linux/spring/MainPageController.scala @@ -25,7 +25,6 @@ import ru.org.linux.topic.* import ru.org.linux.user.MemoriesDao import javax.servlet.http.HttpServletResponse -import scala.jdk.CollectionConverters.* @Controller class MainPageController( @@ -68,7 +67,7 @@ class MainPageController( mv.getModel.put( "briefNews", - TopicListTools.split(briefNewsByDate.map(p => p._1 -> BriefTopicRef.fromTopicNoGroup(p._2)))) + TopicListTools.split(briefNewsByDate.map(p => p._1 -> prepareService.prepareBrief(p._2, groupInTitle = false)))) if (tmpl.isSessionAuthorized) { mv.getModel.put("hasDrafts", Boolean.box(topicDao.hasDrafts(AuthUtil.getCurrentUser))) diff --git a/src/main/scala/ru/org/linux/topic/BriefTopicRef.scala b/src/main/scala/ru/org/linux/topic/BriefTopicRef.scala index 15c9c532c4..ecbf7fd0ac 100644 --- a/src/main/scala/ru/org/linux/topic/BriefTopicRef.scala +++ b/src/main/scala/ru/org/linux/topic/BriefTopicRef.scala @@ -1,5 +1,5 @@ /* - * Copyright 1998-2022 Linux.org.ru + * Copyright 1998-2023 Linux.org.ru * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at @@ -15,22 +15,10 @@ package ru.org.linux.topic -import ru.org.linux.util.StringUtil - import scala.beans.BeanProperty case class BriefTopicRef( - @BeanProperty url:String, - @BeanProperty title:String, - @BeanProperty commentCount:Int, - @BeanProperty group:Option[String] -) - -object BriefTopicRef { - def fromTopicNoGroup(input:Topic) = - BriefTopicRef(input.getLink, StringUtil.processTitle(input.title), input.commentCount, None) - - def fromTopic(input:Topic, group:String) = - BriefTopicRef(input.getLink, StringUtil.processTitle(input.title), input.commentCount, Some(group)) - -} + @BeanProperty url: String, + @BeanProperty title: String, + @BeanProperty commentCount: Int, + @BeanProperty group: Option[String]) diff --git a/src/main/scala/ru/org/linux/topic/TopicPrepareService.scala b/src/main/scala/ru/org/linux/topic/TopicPrepareService.scala index f464ce5409..d5732a0c04 100644 --- a/src/main/scala/ru/org/linux/topic/TopicPrepareService.scala +++ b/src/main/scala/ru/org/linux/topic/TopicPrepareService.scala @@ -26,6 +26,7 @@ import ru.org.linux.spring.SiteConfig import ru.org.linux.spring.dao.{DeleteInfoDao, MessageText, MsgbaseDao, UserAgentDao} import ru.org.linux.tag.TagRef import ru.org.linux.user.* +import ru.org.linux.util.StringUtil import javax.annotation.Nullable import scala.jdk.CollectionConverters.* @@ -215,4 +216,21 @@ class TopicPrepareService(sectionService: SectionService, groupDao: GroupDao, de topicPermissionService.isCommentsAllowed(topic.group, topic.message, currentUser, false), deletable, undeletable, groupPermissionService.canCommit(currentUser, topic.message), userpic.orNull, showComments) } + + def prepareBrief(topic: Topic, groupInTitle: Boolean): BriefTopicRef = { + val group = groupDao.getGroup(topic.groupId) + + val postscore = topicPermissionService.getPostscore(group, topic) + val showComments = postscore != TopicPermissionService.POSTSCORE_HIDE_COMMENTS + + val commentCount = if (showComments) topic.commentCount else 0 + + val groupTitle = if (groupInTitle) { + Some(group.getTitle) + } else { + None + } + + BriefTopicRef(topic.getLink, StringUtil.processTitle(topic.title), commentCount, groupTitle) + } } \ No newline at end of file