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

changeset 198
94f174d591ab
parent 193
1e4044d29b1c
child 200
a5ddfaf6b469
     1.1 --- a/src/main/kotlin/de/uapcore/lightpit/servlet/ProjectServlet.kt	Thu May 13 18:01:56 2021 +0200
     1.2 +++ b/src/main/kotlin/de/uapcore/lightpit/servlet/ProjectServlet.kt	Thu May 13 19:31:09 2021 +0200
     1.3 @@ -145,12 +145,15 @@
     1.4          }
     1.5      }
     1.6  
     1.7 +    private fun feedPath(project: Project) = "feed/${project.node}/issues.rss"
     1.8 +
     1.9      data class PathInfos(
    1.10          val projectInfo: ProjectInfo,
    1.11          val version: Version?,
    1.12          val component: Component?
    1.13      ) {
    1.14 -        val issuesHref by lazyOf("projects/${projectInfo.project.node}/issues/${version?.node ?: "-"}/${component?.node ?: "-"}/")
    1.15 +        val project = projectInfo.project
    1.16 +        val issuesHref by lazyOf("projects/${project.node}/issues/${version?.node ?: "-"}/${component?.node ?: "-"}/")
    1.17      }
    1.18  
    1.19      private fun withPathInfo(http: HttpRequest, dao: DataAccessObject): PathInfos? {
    1.20 @@ -186,13 +189,14 @@
    1.21          withPathInfo(http, dao)?.run {
    1.22  
    1.23              val issues = dao.listIssues(IssueFilter(
    1.24 -                project = SpecificFilter(projectInfo.project),
    1.25 +                project = SpecificFilter(project),
    1.26                  version = version?.let { SpecificFilter(it) } ?: AllFilter(),
    1.27                  component = component?.let { SpecificFilter(it) } ?: AllFilter()
    1.28              )).sortedWith(DEFAULT_ISSUE_SORTER)
    1.29  
    1.30              with(http) {
    1.31                  view = ProjectDetails(projectInfo, issues, version, component)
    1.32 +                feedPath = feedPath(project)
    1.33                  navigationMenu = activeProjectNavMenu(
    1.34                      dao.listProjects(),
    1.35                      projectInfo,
    1.36 @@ -261,6 +265,7 @@
    1.37                  projectInfo,
    1.38                  dao.listVersionSummaries(projectInfo.project)
    1.39              )
    1.40 +            feedPath = feedPath(projectInfo.project)
    1.41              navigationMenu = activeProjectNavMenu(
    1.42                  dao.listProjects(),
    1.43                  projectInfo
    1.44 @@ -290,6 +295,7 @@
    1.45  
    1.46          with(http) {
    1.47              view = VersionEditView(projectInfo, version)
    1.48 +            feedPath = feedPath(projectInfo.project)
    1.49              navigationMenu = activeProjectNavMenu(
    1.50                  dao.listProjects(),
    1.51                  projectInfo,
    1.52 @@ -342,6 +348,7 @@
    1.53                  projectInfo,
    1.54                  dao.listComponentSummaries(projectInfo.project)
    1.55              )
    1.56 +            feedPath = feedPath(projectInfo.project)
    1.57              navigationMenu = activeProjectNavMenu(
    1.58                  dao.listProjects(),
    1.59                  projectInfo
    1.60 @@ -371,6 +378,7 @@
    1.61  
    1.62          with(http) {
    1.63              view = ComponentEditView(projectInfo, component, dao.listUsers())
    1.64 +            feedPath = feedPath(projectInfo.project)
    1.65              navigationMenu = activeProjectNavMenu(
    1.66                  dao.listProjects(),
    1.67                  projectInfo,
    1.68 @@ -426,7 +434,9 @@
    1.69              val comments = dao.listComments(issue)
    1.70  
    1.71              with(http) {
    1.72 -                view = IssueDetailView(issue, comments, projectInfo.project, version, component)
    1.73 +                view = IssueDetailView(issue, comments, project, version, component)
    1.74 +                // TODO: feed path for this particular issue
    1.75 +                feedPath = feedPath(projectInfo.project)
    1.76                  navigationMenu = activeProjectNavMenu(
    1.77                      dao.listProjects(),
    1.78                      projectInfo,
    1.79 @@ -443,7 +453,7 @@
    1.80          withPathInfo(http, dao)?.run {
    1.81              val issue = dao.findIssue(http.pathParams["issue"]?.toIntOrNull() ?: -1) ?: Issue(
    1.82                  -1,
    1.83 -                projectInfo.project,
    1.84 +                project,
    1.85              )
    1.86  
    1.87              // pre-select component, if available in the path info
    1.88 @@ -464,10 +474,11 @@
    1.89                      projectInfo.versions,
    1.90                      projectInfo.components,
    1.91                      dao.listUsers(),
    1.92 -                    projectInfo.project,
    1.93 +                    project,
    1.94                      version,
    1.95                      component
    1.96                  )
    1.97 +                feedPath = feedPath(projectInfo.project)
    1.98                  navigationMenu = activeProjectNavMenu(
    1.99                      dao.listProjects(),
   1.100                      projectInfo,
   1.101 @@ -505,7 +516,7 @@
   1.102              // TODO: throw validator exception instead of using defaults
   1.103              val issue = Issue(
   1.104                  http.param("id")?.toIntOrNull() ?: -1,
   1.105 -                projectInfo.project
   1.106 +                project
   1.107              ).apply {
   1.108                  component = dao.findComponent(http.param("component")?.toIntOrNull() ?: -1)
   1.109                  category = IssueCategory.valueOf(http.param("category") ?: "")
   1.110 @@ -522,9 +533,9 @@
   1.111                  eta = http.param("eta")?.let { if (it.isBlank()) null else Date.valueOf(it) }
   1.112  
   1.113                  affectedVersions = http.paramArray("affected")
   1.114 -                    .mapNotNull { param -> param.toIntOrNull()?.let { Version(it, projectInfo.project.id) } }
   1.115 +                    .mapNotNull { param -> param.toIntOrNull()?.let { Version(it, project.id) } }
   1.116                  resolvedVersions = http.paramArray("resolved")
   1.117 -                    .mapNotNull { param -> param.toIntOrNull()?.let { Version(it, projectInfo.project.id) } }
   1.118 +                    .mapNotNull { param -> param.toIntOrNull()?.let { Version(it, project.id) } }
   1.119              }
   1.120  
   1.121              val openId = if (issue.id < 0) {

mercurial