Some route and variable replacements

This commit is contained in:
KennyTV 2020-07-13 23:18:05 +02:00
parent 019d299142
commit ef0017f322
No known key found for this signature in database
GPG Key ID: 6BE3B555EBC5982B
12 changed files with 87 additions and 100 deletions

View File

@ -53,4 +53,11 @@
* [ ] email
* [ ] modal
* [ ] prompt
* [ ] userAvatar
* [ ] userAvatar
---
Notes to self (or anyone if they want to jump at it)
* Search for `.isDefined`/`.get`/`.orElse` optional usage (left some behind)
* `prettifyDateAndTime(x)` -> `x?string.long`
* `projectRoutes.x(...)` -> `routes.getRouteUrl("projects.x", ...)`
* `x.orElse(y)` -> `x!y`

View File

@ -10,5 +10,5 @@ spring.freemarker.request-context-attribute=rc
spring.jpa.database=POSTGRESQL
spring.datasource.platform=postgres
spring.datasource.url=jdbc:postgresql://localhost:5432/hangar
spring.datasource.username=root
spring.datasource.password=changeme
spring.datasource.username=postgres
spring.datasource.password=12345

View File

@ -9,9 +9,6 @@
@import views.html.helper.{CSPNonce, CSRF, form}
@(p: ProjectData, channels: Seq[(Model[Channel], Int)])(implicit messages: Messages, flash: Flash, request: OreRequest[_], config: OreConfig, assetsFinder: AssetsFinder)
@channelRoutes = @{controllers.project.routes.Channels}
@versionRoutes = @{controllers.project.routes.Versions}
<#assign scriptsVar>
<script type="text/javascript" src="<@hangar.url "javascripts/channelManage.js" />"></script>
<script @CSPNonce.attr>
@ -19,8 +16,8 @@
PROJECT_SLUG = '${p.project.slug}';
$(function() {
initChannelManager(
"#channel-new", "", "@config.defaultChannelColor.hex", "New channel",
"@channelRoutes.create(p.project.ownerName, p.project.slug)",
"#channel-new", "", "${config.defaultChannelColor.hex}", "New channel",
"${routes.getRouteUrl("channels.create", p.project.ownerName, p.project.slug)}",
"post", "Create channel", false
);
});
@ -45,21 +42,22 @@
@channels.map { case (channel, versions) =>
<tr>
<td>
<div class="channel" style="background-color: @channel.color.hex">@channel.name</div>
<div class="channel" style="background-color: ${channel.color.hex}">${channel.name}</div>
</td>
<td>
<div class="btn btn-sm yellow" data-toggle="modal" data-target="#channel-settings" id="channel-edit-@channel.id">Edit</div>
<div class="btn btn-sm yellow" data-toggle="modal" data-target="#channel-settings" id="channel-edit-${channel.id}">Edit</div>
</td>
<#if channels.size gt 1>
<td>
<div class="btn btn-sm yellow"
<#if versions gt 0>
id="channel-delete-@channel.id" data-toggle="modal"
id="channel-delete-${channel.id}" data-toggle="modal"
data-target="#modal-delete">
<#else>
id="channel-delete-${channel.id}" data-channel-delete="safe-delete"
data-channel-id="${channel.id}">
<#-- routes.getRouteUrl("channels.delete", ...) -->
@form(action = channelRoutes.delete(
p.project.ownerName, p.project.slug, channel.name),
Symbol("id") -> s"form-delete-${channel.id}",
@ -76,7 +74,7 @@
initChannelDelete('#channel-delete-${channel.id}', '${channel.name}', ${versions});
initChannelManager(
"#channel-edit-${channel.id}", "${channel.name}", "${channel.color.hex}",
"Edit channel", "${channelRoutes.save(
"Edit channel", "${routes.getRouteUrl("channels.save"
p.project.ownerName, p.project.slug, channel.name)}",
"post", "Save changes", ${channel.isNonReviewed}
);
@ -86,7 +84,7 @@
}
</tbody>
</table>
<a href="@versionRoutes.showList(p.project.ownerName, p.project.slug)"
<a href="${routes.getRouteUrl("versions.showList", p.project.ownerName, p.project.slug)}"
class="pull-left btn btn-default">
<i class="fas fa-arrow-left"></i>
</a>
@ -100,7 +98,7 @@
>
<i class="fas fa-plus"></i>
</a>
@projects.channels.helper.modalManage()
${projects.channels.helper.modalManage()}
</div>
</div>
</div>

View File

@ -15,9 +15,6 @@ Versions page within Project overview.
sp: ScopedProjectData,
channels: Seq[Channel])(implicit messages: Messages, request: OreRequest[_], flash: Flash, config: OreConfig, renderer: MarkdownRenderer, assetsFinder: AssetsFinder)
@projectRoutes = @{ controllers.project.routes.Projects }
@channelRoutes = @{ controllers.project.routes.Channels }
<#assign scriptsVar>
<script type="text/javascript" src="<@hangar.url "javascripts/userSearch.js" />"></script>
<script type="text/javascript" src="<@hangar.url "javascripts/memberList.js" />"></script>
@ -51,14 +48,14 @@ Versions page within Project overview.
<ul class="list-group list-channel">
@channels.sorted.map { channel =>
<li class="list-group-item">
<span class="channel" style="background-color: @channel.color.hex">@channel.name</span>
<span class="channel" style="background-color: ${channel.color.hex}">${channel.name}</span>
<input type="checkbox" class="pull-right"/>
</li>
}
<#if sp.perms(Permission.EditChannel)>
<li class="list-group-item text-right">
<a class="btn yellow btn-xs" href="@channelRoutes.showList(p.project.ownerName, p.project.slug)">
<a class="btn yellow btn-xs" href="${routes.getRouteUrl("channels.showList", p.project.ownerName, p.project.slug)}">
Edit
</a>
</li>
@ -68,7 +65,7 @@ Versions page within Project overview.
@users.memberList(
j = p,
perms = sp.permissions,
settingsCall = projectRoutes.showSettings(p.project.ownerName, p.project.slug)
settingsCall = ${routes.getUrl("projects.showSettings", p.project.ownerName, p.project.slug)}
)
</div>
</div>

View File

@ -13,12 +13,10 @@
@(project: Project, version: Version, visibilityChanges: Seq[(Model[VersionVisibilityChange], Option[User])])(implicit messages: Messages, request: OreRequest[_], config: OreConfig, flash: Flash, renderer: MarkdownRenderer, assetsFinder: AssetsFinder)
@versionRoutes = @{controllers.project.routes.Versions}
@layout.base(messages("version.log.logger.title", project.namespace)) {
<div class="row">
<div class="col-md-12">
<h1><@spring.message "version.log.visibility.title" /> <a href="@versionRoutes.show(project.ownerName, project.slug, version.versionString)">@project.ownerName/@project.slug/versions/@version.versionString</a></h1>
<h1><@spring.message "version.log.visibility.title" /> <a href="${routes.getRouteUrl("versions.show", project.ownerName, project.slug, version.versionString)}">${project.ownerName}/${project.slug}/versions/${version.versionString}</a></h1>
</div>
</div>
<div class="row">

View File

@ -11,8 +11,6 @@
isTargetChannelNonReviewed: Boolean,
downloadType: DownloadType)(implicit messages: Messages, request: OreRequest[_], config: OreConfig, flash: Flash, assetsFinder: AssetsFinder)
@versionRoutes = @{ controllers.project.routes.Versions }
@layout.base(messages("version.download.confirm.title") + " " + messages("version.download.confirm.header", project.ownerName, project.name, target.name)) {
<div class="row">
@ -49,7 +47,7 @@
</div>
<div class="col-xs-12 col-sm-6">
<form action="@versionRoutes.confirmDownload(project.ownerName, project.slug, target.name, Some(downloadType.value), None, Some("dummy"))" method="post" id="form-download">
<form action="${routes.getRouteUrl("versions.confirmDownload", project.ownerName, project.slug, target.name, Some(downloadType.value), "", "dummy")}" method="post" id="form-download">
@CSRF.formField
<button type="submit" form="form-download" class="btn btn-danger pull-right-sm">

View File

@ -15,9 +15,6 @@
@(v: VersionData, sp: ScopedProjectData)(implicit messages: Messages, request: OreRequest[_], flash: Flash, config: OreConfig, renderer: MarkdownRenderer, assetsFinder: AssetsFinder)
@projectRoutes = @{controllers.project.routes.Projects}
@versionRoutes = @{controllers.project.routes.Versions}
@reviewRoutes = @{controllers.routes.Reviews}
@appRoutes = @{controllers.routes.Application}
@projects.view(v.p, sp, "#versions", noButtons = true) {
@ -26,8 +23,8 @@
<div class="col-md-12 version-header">
<!-- Title -->
<div class="clearfix">
<h1 class="pull-left">@v.v.versionString</h1>
<span class="channel channel-head" style="background-color: @v.c.color.hex;">@v.c.name</span>
<h1 class="pull-left">${v.v.versionString}</h1>
<span class="channel channel-head" style="background-color: ${v.c.color.hex};">${v.c.name}</span>
</div>
<!-- User info -->
@ -35,7 +32,7 @@
<a href="${routes.getRouteUrl("users.showProjects", v.p.project.ownerName)}">
<strong>${v.p.project.ownerName}</strong>
</a>
released this version on ${prettifyDate(v.v.createdAt)}
released this version on ${v.v.createdAt?string.long}
</p>
<!-- Buttons -->
@ -85,9 +82,9 @@
<#if request.headerData.globalPerm(Permission.Reviewer)>
<#if v.v.reviewState.isChecked>
<a href="@reviewRoutes.showReviews(v.p.project.ownerName, v.p.project.slug, v.v.versionString)" class="btn btn-info"><@spring.message "review.log" /></a>
<a href="${routes.getRouteUrl("reviews.showReviews", v.p.project.ownerName, v.p.project.slug, v.v.versionString)}" class="btn btn-info"><@spring.message "review.log" /></a>
<#else>
<a href="@reviewRoutes.showReviews(v.p.project.ownerName, v.p.project.slug, v.v.versionString)" class="btn btn-success">
<a href="${routes.getRouteUrl("showReviews", v.p.project.ownerName, v.p.project.slug, v.v.versionString)}" class="btn btn-success">
<i class="fas fa-play"></i> <@spring.message "review.start" />
</a>
</#if>
@ -114,7 +111,7 @@
</#if>
<div class="btn-group btn-download">
<a href="@versionRoutes.download(v.p.project.ownerName, v.p.project.slug, v.v.versionString, None)"
<a href="${routes.getRouteUrl("versions.download", v.p.project.ownerName, v.p.project.slug, v.v.versionString, "")}"
title="<@spring.message "project.download.recommend" />" data-toggle="tooltip"
data-placement="bottom" class="btn btn-primary">
<i class="fas fa-download"></i> <@spring.message "general.download" />
@ -124,8 +121,8 @@
<span class="sr-only">Toggle Dropdown</span>
</button>
<ul class="dropdown-menu dropdown-menu-right">
<li><a href="@versionRoutes.download(v.p.project.ownerName, v.p.project.slug, v.v.versionString, None)"><@spring.message "general.download" /></a></li>
<li><a href="#" class="copy-url" data-clipboard-text="@config.app.baseUrl@versionRoutes.download(v.p.project.ownerName, v.p.project.slug, v.v.versionString, None)">Copy URL</a></li>
<li><a href="${routes.getRouteUrl("versions.download", v.p.project.ownerName, v.p.project.slug, v.v.versionString, "")}"><@spring.message "general.download" /></a></li>
<li><a href="#" class="copy-url" data-clipboard-text="${config.app.baseUrl}${routes.getRouteUrl("versions.download", v.p.project.ownerName, v.p.project.slug, v.v.versionString, "")}">Copy URL</a></li>
</ul>
</div>
@ -136,7 +133,7 @@
<span class="caret"></span>
</button>
<ul class="dropdown-menu" aria-labelledby="admin-version-actions">
<li><a href="@appRoutes.showLog(None, None, None, Some(v.v.versionString), None, None, None)">User Action Logs</a></li>
<li><a href="${routes.getRouteUrl("showLog", "", "", "", v.v.versionString, "", "", "")}">User Action Logs</a></li>
<#if request.headerData.globalPerm(Permission.Reviewer)>
<#if v.v.visibility == Visibility.SoftDelete>
<li><a href="#" data-toggle="modal" data-target="#modal-restore">Undo delete</a></li>

View File

@ -36,10 +36,10 @@
case Right(review) => {
<tr>
<td>Review approved</td>
<td>@prettifyDateAndTime(review.endedAt.getOrElse(OffsetDateTime.MIN)))</td>
<td>${(review.endedAt!OffsetDateTime.MIN)?string.long}</td>
<td>for:
<a href="@controllers.routes.Reviews.showReviews(review.project.ownerName, review.project.slug, review.id.toString)">
@review.project.ownerName / @review.project.slug
<a href="${routes.getRouteUrl("reviews.showReviews", review.project.ownerName, review.project.slug, review.id.toString)}">
${review.project.ownerName} / ${review.project.slug}
</a>
</td>
</tr>
@ -47,10 +47,10 @@
case Left(flag) => {
<tr>
<td>Flag resolved</td>
<td>@prettifyDateAndTime(flag.resolvedAt.getOrElse(OffsetDateTime.MIN)))</td>
<td>${(flag.resolvedAt!OffsetDateTime.MIN)?string.long}</td>
<td>for:
<a href="@controllers.project.routes.Projects.show(flag.project.ownerName, flag.project.slug)">
@flag.project.ownerName / @flag.project.slug
<a href="${routes.getRouteUrl("projects.show", flag.project.ownerName, flag.project.slug)}">
${flag.project.ownerName} / ${flag.project.slug}
</a>
</td>
</tr>

View File

@ -14,7 +14,6 @@
erroredJobs: Seq[Job])(implicit request: OreRequest[_], messages: Messages, config: OreConfig, flash: Flash, assetsFinder: AssetsFinder)
@projectRoutes = @{controllers.project.routes.Projects}
@versionRoutes = @{controllers.project.routes.Versions}
<#assign message><@spring.message "admin.health.title" /></#assign>
<@base.base title="${message}">
@ -34,7 +33,7 @@
@noTopicProjects.map { project =>
<div class="list-group-item">
<a class="pull-left" href="@projectRoutes.show(project.namespace.ownerName, project.namespace.slug)">
<strong>@project.namespace</strong>
<strong>${project.namespace}</strong>
</a>
<div class="clearfix"></div>
</div>
@ -50,7 +49,7 @@
<div class="panel-body">
@erroredJobs.map { job =>
<div class="list-group-item">
Jobtype: @job.info.jobType Error type: @job.info.lastErrorDescriptor.get Happened: @job.info.lastUpdated.get
Jobtype: ${job.info.jobType} Error type: ${job.info.lastErrorDescriptor} Happened: ${job.info.lastUpdated}
<div class="clearfix"></div>
</div>
}
@ -68,7 +67,7 @@
@staleProjects.map { project =>
<div class="list-group-item">
<a href="@projectRoutes.show(project.namespace.ownerName, project.namespace.slug)">
<strong>@project.namespace</strong>
<strong>${project.namespace}</strong>
</a>
</div>
}
@ -84,7 +83,7 @@
@notPublicProjects.map { project =>
<div class="list-group-item">
<a href="@projectRoutes.show(project.namespace.ownerName, project.namespace.slug)">
<strong>@project.namespace</strong> <small><@spring.message "visibility.name." + project.visibility.nameKey /></small>
<strong>${project.namespace}</strong> <small><@spring.message "visibility.name." + project.visibility.nameKey /></small>
</a>
</div>
}
@ -111,8 +110,8 @@
<div class="panel-body list-group list-group-health">
@missingFileProjects.map { case (version, project) =>
<div class="list-group-item">
<a href="@versionRoutes.show(project.ownerName, project.slug, version.name)">
<strong>@project.namespace/@version.name</strong>
<a href="${routes.getRouteUrl("versions.show", project.ownerName, project.slug, version.name)}">
<strong>${project.namespace}/${version.name}</strong>
</a>
</div>
}

View File

@ -12,8 +12,6 @@
@import views.html.utils.userAvatar
@(underReview: Seq[ReviewedQueueEntry], versions: Seq[NotStartedQueueEntry])(implicit messages: Messages, request: OreRequest[_], config: OreConfig, flash: Flash, assetsFinder: AssetsFinder)
@versionRoutes = @{controllers.project.routes.Versions}
<#assign scriptsVar>
<script @CSPNonce.attr type="text/javascript" src="<@hangar.url "javascripts/queue.js" />"></script>
<script @CSPNonce.attr>
@ -68,23 +66,23 @@
@underReview.map { entry =>
<tr <#if entry.isUnfinished && request.headerData.isCurrentUser(entry.reviewerId)>class="warning"</#if>>
<td>
<a href="@versionRoutes.show(entry.namespace.ownerName, entry.namespace.slug, entry.versionString)">
@entry.namespace
<a href="${routes.getRouteUrl("versions.show", entry.namespace.ownerName, entry.namespace.slug, entry.versionString)}">
${entry.namespace}
</a>
<br>
@entry.versionString
<span class="channel" style="background-color: @entry.channelColor.hex">@entry.channelName</span>
${entry.versionString}
<span class="channel" style="background-color: ${entry.channelColor.hex}">${entry.channelName}</span>
</td>
<td>
<#if entry.versionAuthor.isDefined>
<a href="https://papermc.io/forums/users/@entry.versionAuthor.get">
@entry.versionAuthor.get
${entry.versionAuthor}
</a>
<#else>
Unknown
</#if>
<br>
@prettifyDateAndTime(entry.versionCreatedAt)
${entry.versionCreatedAt?string.long}
</td>
<td style="text-align: right; max-width: 40px">
<#if entry.isUnfinished>
@ -99,13 +97,13 @@
</td>
<td <#if try.isUnfinished>style="color: darkred"</#if> >
<#if entry.isUnfinished>
@entry.reviewerName
${entry.reviewerName}
<br>
<span data-ago="@entry.reviewStarted.toInstant.toEpochMilli" data-title="started "></span>
<span data-ago="${entry.reviewStarted.toInstant.toEpochMilli}" data-title="started "></span>
<#else>
<strike>@entry.reviewerName</strike>
<strike>${entry.reviewerName}</strike>
<br>
<span data-ago="@entry.reviewStarted.toInstant.toEpochMilli" data-title="abandoned "></span>
<span data-ago="${entry.reviewStarted.toInstant.toEpochMilli}" data-title="abandoned "></span>
</#if>
</td>
<td style="vertical-align: middle; text-align: right; padding-right: 15px;">
@ -155,19 +153,19 @@
@userAvatar(Some(entry.namespace.ownerName), User.avatarUrl(entry.namespace.ownerName), clazz = "user-avatar-xs")
</td>
<td>
<a href="@versionRoutes.show(entry.namespace.ownerName, entry.namespace.slug, entry.versionString)">
@entry.namespace
<a href="${routes.getRouteUrl("versions.show", entry.namespace.ownerName, entry.namespace.slug, entry.versionString)}">
${entry.namespace}
</a>
</td>
<td>
<span class="faint">@prettifyDate(entry.versionCreatedAt)</span>
<span class="minor">@entry.versionString</span>
<span class="channel" style="background-color: @entry.channelColor.hex;">@entry.channelName</span>
<span class="faint">${entry.versionCreatedAt?string.long}</span>
<span class="minor">${entry.versionString}</span>
<span class="channel" style="background-color: ${entry.channelColor.hex};">${entry.channelName}</span>
</td>
<td>
<#if entry.versionAuthor.isDefined>
<a href="https://papermc.io/forums/users/@entry.versionAuthor.get">
@entry.versionAuthor.get
<a href="https://papermc.io/forums/users/${entry.versionAuthor}">
${entry.versionAuthor}
</a>
</#if>
<br>

View File

@ -14,12 +14,9 @@
@(mostRecentUnfinishedReview: Option[Review], reviews: Seq[(Model[Review], Option[String])], project: Project, version: Model[Version])(implicit messages: Messages,
request: OreRequest[_], config: OreConfig, flash: Flash, renderer: MarkdownRenderer, assetsFinder: AssetsFinder)
@projectRoutes = @{controllers.project.routes.Projects}
@versionRoutes = @{controllers.project.routes.Versions}
<#macro scripts>
<script @CSPNonce.attr type="text/javascript" src="<@hangar.url "javascripts/review.js" />"></script>
<script @CSPNonce.attr>versionPath = '@helper.urlEncode(project.ownerName)/@helper.urlEncode(project.slug)/versions/@helper.urlEncode(version.name)'</script>
<script @CSPNonce.attr>versionPath = '${helper.urlEncode(project.ownerName)}/${helper.urlEncode(project.slug)}/versions/${helper.urlEncode(version.name)}'</script>
</#macro>
@layout.base(messages("review.title", project.name, version.name), scripts) {
@ -33,14 +30,14 @@
<a href="${routes.getRouteUrl("users.showProjects", project.ownerName)}">
<strong>@project.ownerName</strong>
</a>
released this version on @prettifyDate(version.createdAt)
released this version on ${version.createdAt?string.long}
</p>
<#if !version.reviewState.isChecked>
<div class="pull-right">
<span class="btn-group-sm">
<a href="#" class="btn btn-info btn-skip-review"><#if version.reviewState != ReviewState.Backlog> Remove from queue <#else> Add to queue </#if></a>
<a href="@projectRoutes.show(project.ownerName, project.slug)" class="btn btn-info">Project Page</a>
<a href="@versionRoutes.downloadJar(project.ownerName, project.slug, version.versionString, None)" class="btn btn-info">Download File</a>
<a href="${routes.getRouteUrl("projects.show", project.ownerName, project.slug)}" class="btn btn-info">Project Page</a>
<a href="${routes.getRouteUrl("versions.downloadJar", project.ownerName, project.slug, version.versionString, "")}" class="btn btn-info">Download File</a>
</span>
<span class="btn-group-sm">
<#if mostRecentUnfinishedReview.isDefined>
@ -98,9 +95,9 @@
@defining((t._1, t._2)) { case (item, name) =>
<#if item.endedAt.isDefined>
<#if reviews.size > (reviews.size - index)>
<#if prettifyDateAndTime(item.endedAt.get).equalsIgnoreCase(prettifyDateAndTime(reviews.reverse(reviews.size - index - 1)._1.createdAt))>
<#if (item.endedAt?string.long).equalsIgnoreCase(reviews.reverse(reviews.size - index - 1)._1.createdAt?string.long)>
<tr>
<td>@prettifyDateAndTime(item.endedAt.get)</td>
<td>${item.endedAt?string.long}</td>
<td>
<strong>@name.getOrElse("Unknown")</strong>
took over from
@ -114,27 +111,27 @@
</tr>
<#else>
<tr>
<td>@prettifyDateAndTime(item.endedAt.get)</td>
<td><strong>@name.getOrElse("Unknown")</strong> stopped</td>
<td>${item.endedAt?string.long}</td>
<td><strong>${name!"Unknown"}</strong> stopped</td>
</tr>
</#if>
<#else>
<#if version.approvedAt.isDefined>
<tr>
<td>@prettifyDateAndTime(item.endedAt.get)</td>
<td><strong>@name.getOrElse("Unknown")</strong> approved</td>
<td>${item.endedAt?string.long}</td>
<td><strong>${name!"Unknown"}</strong> approved</td>
</tr>
<#else>
<tr>
<td>@prettifyDateAndTime(item.endedAt.get)</td>
<td>${item.endedAt?string.long}</td>
<td>
<strong>@name.getOrElse("Unknown")</strong>
<strong>${name!"Unknown"}</strong>
stopped
<br>
<#if !item.decodeMessages.exists(_.isStop)>
<i>- no message provided -</i>
<#else>
<i>@item.decodeMessages.filter(_.isStop).head.render</i>
<i>${item.decodeMessages.filter(_.isStop).head.render}</i>
</#if>
</td>
</tr>
@ -143,18 +140,18 @@
</#if>
@item.decodeMessages.filterNot(_.isTakeover).filterNot(_.isStop).reverse.map { message =>
<tr>
<td>@message.getTime(messages.lang.locale)</td>
<td>${message.getTime(messages.lang.locale)}</td>
<td>
<strong>@name.getOrElse("Unknown")</strong>
<strong>${name!"Unknown"}</strong>
added message
<br>
<i>@message.render</i>
<i>${message.render}</i>
</td>
</tr>
}
<tr>
<td>@prettifyDateAndTime(item.createdAt.value)</td>
<td><strong>@name.getOrElse("Unknown")</strong> started a review</td>
<td>${item.createdAt.value?string.long}</td>
<td><strong>${name!"Unknown"}</strong> started a review</td>
</tr>
}
}

View File

@ -9,8 +9,6 @@
@(needsApproval: Seq[ProjectNeedsApproval],
waitingProjects: Seq[ProjectNeedsApproval])(implicit messages: Messages, request: OreRequest[_], config: OreConfig, flash: Flash, renderer: MarkdownRenderer, assetsFinder: AssetsFinder)
@projectRoutes = @{controllers.project.routes.Projects}
@renderApprovalList(projectSeq: Seq[ProjectNeedsApproval]) = {
<ul class="list-group list-flags-admin">
<#if projectSeq.isEmpty>
@ -23,20 +21,20 @@
<div class="row">
<div class="col-xs-12 col-md-8">
<span class="description">
<strong>@project.changeRequester</strong>
<strong>${project.changeRequester}</strong>
<span class="minor"> requested changes on </span>
<a href="@projectRoutes.show(project.namespace.ownerName, project.namespace.slug)">
@project.namespace
<a href="${routes.getRouteUrl("projects.show", project.namespace.ownerName, project.namespace.slug)}">
${project.namespace}
</a>
</span>
<p>
<strong>Request:</strong>
@renderer.render(project.comment)
${renderer.render(project.comment)}
</p>
</div>
<div class="col-xs-12 col-md-4">
<span class="pull-right btn-group-sm">
@projects.helper.btnHide(project.namespace, project.visibility)
${projects.helper.btnHide(project.namespace, project.visibility)}
</span>
</div>
</div>
@ -63,7 +61,7 @@
<h4 class="panel-title pull-left">Needs Approval</h4>
<div class="clearfix"></div>
</div>
@renderApprovalList(needsApproval)
${renderApprovalList(needsApproval)}
</div>
</div>
<div class="row">
@ -78,7 +76,7 @@
<h4 class="panel-title pull-left">Waiting Changes</h4>
<div class="clearfix"></div>
</div>
@renderApprovalList(waitingProjects)
${renderApprovalList(waitingProjects)}
</div>
</div>
</div>