src/main/kotlin/de/uapcore/lightpit/servlet/ProjectServlet.kt

changeset 198
94f174d591ab
parent 193
1e4044d29b1c
child 200
a5ddfaf6b469
--- a/src/main/kotlin/de/uapcore/lightpit/servlet/ProjectServlet.kt	Thu May 13 18:01:56 2021 +0200
+++ b/src/main/kotlin/de/uapcore/lightpit/servlet/ProjectServlet.kt	Thu May 13 19:31:09 2021 +0200
@@ -145,12 +145,15 @@
         }
     }
 
+    private fun feedPath(project: Project) = "feed/${project.node}/issues.rss"
+
     data class PathInfos(
         val projectInfo: ProjectInfo,
         val version: Version?,
         val component: Component?
     ) {
-        val issuesHref by lazyOf("projects/${projectInfo.project.node}/issues/${version?.node ?: "-"}/${component?.node ?: "-"}/")
+        val project = projectInfo.project
+        val issuesHref by lazyOf("projects/${project.node}/issues/${version?.node ?: "-"}/${component?.node ?: "-"}/")
     }
 
     private fun withPathInfo(http: HttpRequest, dao: DataAccessObject): PathInfos? {
@@ -186,13 +189,14 @@
         withPathInfo(http, dao)?.run {
 
             val issues = dao.listIssues(IssueFilter(
-                project = SpecificFilter(projectInfo.project),
+                project = SpecificFilter(project),
                 version = version?.let { SpecificFilter(it) } ?: AllFilter(),
                 component = component?.let { SpecificFilter(it) } ?: AllFilter()
             )).sortedWith(DEFAULT_ISSUE_SORTER)
 
             with(http) {
                 view = ProjectDetails(projectInfo, issues, version, component)
+                feedPath = feedPath(project)
                 navigationMenu = activeProjectNavMenu(
                     dao.listProjects(),
                     projectInfo,
@@ -261,6 +265,7 @@
                 projectInfo,
                 dao.listVersionSummaries(projectInfo.project)
             )
+            feedPath = feedPath(projectInfo.project)
             navigationMenu = activeProjectNavMenu(
                 dao.listProjects(),
                 projectInfo
@@ -290,6 +295,7 @@
 
         with(http) {
             view = VersionEditView(projectInfo, version)
+            feedPath = feedPath(projectInfo.project)
             navigationMenu = activeProjectNavMenu(
                 dao.listProjects(),
                 projectInfo,
@@ -342,6 +348,7 @@
                 projectInfo,
                 dao.listComponentSummaries(projectInfo.project)
             )
+            feedPath = feedPath(projectInfo.project)
             navigationMenu = activeProjectNavMenu(
                 dao.listProjects(),
                 projectInfo
@@ -371,6 +378,7 @@
 
         with(http) {
             view = ComponentEditView(projectInfo, component, dao.listUsers())
+            feedPath = feedPath(projectInfo.project)
             navigationMenu = activeProjectNavMenu(
                 dao.listProjects(),
                 projectInfo,
@@ -426,7 +434,9 @@
             val comments = dao.listComments(issue)
 
             with(http) {
-                view = IssueDetailView(issue, comments, projectInfo.project, version, component)
+                view = IssueDetailView(issue, comments, project, version, component)
+                // TODO: feed path for this particular issue
+                feedPath = feedPath(projectInfo.project)
                 navigationMenu = activeProjectNavMenu(
                     dao.listProjects(),
                     projectInfo,
@@ -443,7 +453,7 @@
         withPathInfo(http, dao)?.run {
             val issue = dao.findIssue(http.pathParams["issue"]?.toIntOrNull() ?: -1) ?: Issue(
                 -1,
-                projectInfo.project,
+                project,
             )
 
             // pre-select component, if available in the path info
@@ -464,10 +474,11 @@
                     projectInfo.versions,
                     projectInfo.components,
                     dao.listUsers(),
-                    projectInfo.project,
+                    project,
                     version,
                     component
                 )
+                feedPath = feedPath(projectInfo.project)
                 navigationMenu = activeProjectNavMenu(
                     dao.listProjects(),
                     projectInfo,
@@ -505,7 +516,7 @@
             // TODO: throw validator exception instead of using defaults
             val issue = Issue(
                 http.param("id")?.toIntOrNull() ?: -1,
-                projectInfo.project
+                project
             ).apply {
                 component = dao.findComponent(http.param("component")?.toIntOrNull() ?: -1)
                 category = IssueCategory.valueOf(http.param("category") ?: "")
@@ -522,9 +533,9 @@
                 eta = http.param("eta")?.let { if (it.isBlank()) null else Date.valueOf(it) }
 
                 affectedVersions = http.paramArray("affected")
-                    .mapNotNull { param -> param.toIntOrNull()?.let { Version(it, projectInfo.project.id) } }
+                    .mapNotNull { param -> param.toIntOrNull()?.let { Version(it, project.id) } }
                 resolvedVersions = http.paramArray("resolved")
-                    .mapNotNull { param -> param.toIntOrNull()?.let { Version(it, projectInfo.project.id) } }
+                    .mapNotNull { param -> param.toIntOrNull()?.let { Version(it, project.id) } }
             }
 
             val openId = if (issue.id < 0) {

mercurial