diff -r 0a2ad22ac656 -r 94f174d591ab src/main/kotlin/de/uapcore/lightpit/servlet/ProjectServlet.kt --- 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) {