@import java.util.Locale
@import de.smederee.html.ToDoTextCssMapping._
@import de.smederee.hub._
@(baseUri: Uri,
lang: LanguageCode = LanguageCode("en")
)(actionBaseUri: Uri,
csrf: Option[CsrfToken] = None,
goBackUri: Option[Uri] = None,
linkToTicketService: Option[Uri] = None,
title: Option[String] = None,
user: Option[Account]
)(fileContent: List[String],
listing: IndexedSeq[(os.RelPath, os.StatInfo)],
repositoryBaseUri: Uri,
vcsRepository: VcsRepository,
vcsRepositoryBranches: List[(Username, VcsRepositoryName)],
)
@main(baseUri, lang)()(csrf, title, user) {
@defining(lang.toLocale) { implicit locale =>
@showRepositoryMenu(baseUri, linkToTicketService)(repositoryBaseUri.addSegment("files").some, vcsRepositoryBranches.size, repositoryBaseUri, user, vcsRepository)
@{actionBaseUri.path.segments.map(_.decoded()).mkString("/").replaceFirst("/files", "")}
@if(fileContent.isEmpty) {
|
Name |
Size |
Modified |
@for(link <- goBackUri) {
@icon(baseUri)("chevron-up") |
.. |
|
}
@for(entry <- listing) {
@if(entry._2.isDir) { @icon(baseUri)("folder") } else { @icon(baseUri)("file") } |
@{entry._1} |
@{entry._2.size} |
@{entry._2.mtime} |
}
} else {
@for(link <- goBackUri) {
@icon(baseUri)("chevron-up") ..
}
@if(actionBaseUri.path.toString.toLowerCase(java.util.Locale.ROOT).endsWith(".md")) {
@for(content <- fileContent) {
@Html(content)
}
} else {
@for(tuple <- fileContent.zipWithIndex) {
@defining(tuple._1) { content =>
@defining(tuple._2) { lineNumber =>
@defining(isToDoItem.findFirstMatchIn(content)) { matchedItem =>
@if(matchedItem.nonEmpty) {
@for(todoItem <- matchedItem) {
@defining(todoCssClasses(Option(todoItem.group(4)).getOrElse(todoItem.group(2)).toLowerCase(Locale.ROOT))) { cssClass =>
}
}
} else {
}
@lineNumber |
@content |
}
}
}
}
}
}
}
}