(refs #69)Forked repositories tree is changed to flat list.

Because it can't render forked tree correctly if parent repository has been removed.
This commit is contained in:
takezoe
2013-08-09 21:43:30 +09:00
parent 709c8f32b5
commit 1e566f4a20
4 changed files with 13 additions and 32 deletions

View File

@@ -255,7 +255,7 @@ trait PullRequestsControllerBase extends ControllerBase {
commits,
diffs,
repository.repository.originUserName.map { userName =>
getRepositoryNames(getForkedRepositoryTree(userName, repository.name))
getForkedRepositories(userName, repository.name)
} getOrElse Nil,
originBranch,
forkedBranch,

View File

@@ -184,7 +184,7 @@ trait RepositoryViewerControllerBase extends ControllerBase {
get("/:owner/:repository/network/members")(referrersOnly { repository =>
repo.html.forked(
getForkedRepositoryTree(
getForkedRepositories(
repository.repository.originUserName.getOrElse(repository.owner),
repository.repository.originRepositoryName.getOrElse(repository.name)),
repository)

View File

@@ -201,17 +201,11 @@ trait RepositoryService { self: AccountService =>
}.list.length
def getForkedRepositoryTree(userName: String, repositoryName: String): RepositoryTreeNode = {
RepositoryTreeNode(userName, repositoryName,
def getForkedRepositories(userName: String, repositoryName: String): List[String] =
Query(Repositories).filter { t =>
(t.parentUserName is userName.bind) && (t.parentRepositoryName is repositoryName.bind)
}.map { t =>
t.userName ~ t.repositoryName
}.list.map { case (userName, repositoryName) =>
getForkedRepositoryTree(userName, repositoryName)
}
)
(t.originUserName is userName.bind) && (t.originRepositoryName is repositoryName.bind)
}
.sortBy(_.lastActivityDate desc).map(_.userName).list
}

View File

@@ -1,4 +1,4 @@
@(members: service.RepositoryService.RepositoryTreeNode,
@(members: List[String],
repository: service.RepositoryService.RepositoryInfo)(implicit context: app.Context)
@import context._
@import view.helpers._
@@ -7,22 +7,9 @@
<li class="active"><a href="@url(repository)/network/members">Members</a></li>
</ul>
<h3>Members of the @repository.name Network</h3>
<ul>
@renderTree(members)
</ul>
}
@renderTree(node: service.RepositoryService.RepositoryTreeNode) = {
<li>
<div style="font-size: 120%; margin-bottom: 8px;">
@avatar(node.owner, 20) <a href="@url(node.owner)">@node.owner</a> / <a href="@path/@node.owner/@node.name">@node.name</a>
@members.map { owner =>
<div class="block">
<a href="@url(owner)">@owner</a> / <a href="@path/@owner/@repository.name">@repository.name</a>
</div>
@if(node.children.nonEmpty){
<ul>
@node.children.map { child =>
@renderTree(child)
}
</ul>
}
</li>
}