ore/app/views/projects/list.scala.html
@*
Collection of all projects.
*@
@import ore.models.project.{Project, Version, VersionTag}
@import ore.models.user.User
@import ore.OreConfig
@import ore.data.project.Category
@import models.querymodels.{ProjectListEntry, ViewTag}
@import util.syntax._
@import views.html.utils
@import ore.models.project.io.ProjectFiles
@import ore.util.OreMDC
@(models: Seq[ProjectListEntry], page: Int, pageSize: Long, call: Int => Call)(implicit config: OreConfig, projectFiles: ProjectFiles, mdc: OreMDC)
@projectRoutes = @{
controllers.project.routes.Projects
}
@entryIcon(entry: ProjectListEntry) = @{
if(projectFiles.getIconPath(entry.namespace.ownerName, entry.name).isDefined) {
projectRoutes.showIcon(entry.namespace.ownerName, entry.namespace.slug).url
}
else {
User.avatarUrl(entry.namespace.ownerName)
}
}
<ul class="list-group project-list">
@models.map { entry =>
<li class="list-group-item project @entry.visibility.cssClass">
<div class="container-fluid">
<div class="row">
<div class="col-xs-12 col-sm-1">
@utils.userAvatar(
userName = Some(entry.namespace.ownerName),
avatarUrl = User.avatarUrl(entry.namespace.ownerName),
imgSrc = entryIcon(entry),
clazz = "user-avatar-sm")
</div>
<div class="col-xs-12 col-sm-11">
<div class="row">
<div class="col-sm-6">
<a class="title" href="@projectRoutes.show(entry.namespace.ownerName, entry.namespace.slug)">@entry.name</a>
</div>
<div class="col-sm-6 hidden-xs">
<div class="info minor">
@entry.version.map { recommendedVersion =>
<span class="stat recommended-version" title="Recommended version">
<i class="far fa-gem"></i>
<a href="@controllers.project.routes.Versions.show(
entry.namespace.ownerName, entry.namespace.slug, recommendedVersion)">
@recommendedVersion
</a>
</span>
}
<span class="stat" title="Views"><i class="fas fa-eye"></i> @entry.views</span>
<span class="stat" title="Download"><i class="fas fa-download"></i> @entry.downloads</span>
<span class="stat" title="Stars"><i class="fas fa-star"></i> @entry.stars</span>
@defining(entry.category) { category: Category =>
<span class="stat" title="@category.title">
<i class="fas @category.icon"></i>
</span>
}
</div>
</div>
</div>
<div class="row">
<div class="col-sm-7 description-column">
<div class="description">@entry.description.getOrElse("")</div>
</div>
<div class="col-xs-12 col-sm-5 tags-line">
@for(t <- entry.tags) {
@projects.tag(t, entry.tags.size)
}
</div>
</div>
</div>
</div>
</div>
</li>
}
@if(models.size >= pageSize || page > 1) {
<li class="list-group-item project-list-footer">
<div class="pull-right">
@if(page > 1) {
<a href="@call(page - 1)" class="btn btn-default"><i class="fas fa-arrow-left"></i></a>
}
@if(models.size >= pageSize) {
<a href="@call(page + 1)" class="btn btn-default"><i class="fas fa-arrow-right"></i></a>
}
</div>
<div class="clearfix"></div>
</li>
}
</ul>