package webui
import (
"encoding/base64"
"github.com/pogo-vcs/pogo/db"
"github.com/pogo-vcs/pogo/server/webui/components"
"github.com/pogo-vcs/pogo/server/webui/icons"
"path"
"strconv"
)
templ renderFileNode(node *FileNode) {
if node.IsDir {
@icons.Folder()
{ node.Name }
for _, child := range node.Children {
@renderFileNode(child)
}
} else {
{{ color := "text-ctp-text" }}
if node.File.Conflict {
{{ color = "text-ctp-red" }}
} else if node.File.Executable {
{{ color = "text-ctp-blue" }}
}
if node.File.Conflict {
@icons.ExclamationTriangle()
} else if node.File.Executable {
@icons.LightningBolt()
} else {
@icons.File()
}
{ node.Name }
}
}
templ Repository() {
if repoId, ok := GetParamI32(ctx, "id"); ok {
if repo, err := db.Q.GetRepository(ctx, repoId); err == nil {
{{ hasAccess := repo.Public }}
if !hasAccess && IsLoggedIn(ctx) {
if user := GetUser(ctx); user != nil {
if accessCheck, err := db.Q.CheckUserRepositoryAccess(ctx, repoId, user.ID); err == nil {
{{ hasAccess = accessCheck }}
}
}
}
if hasAccess {
@layout(repo.Name) {
@components.Header(GetUser(ctx)) {
{{ user := GetUser(ctx) }}
CI Runs
if user != nil {
if userHasAccess, err := db.Q.CheckUserRepositoryAccess(ctx, repoId, user.ID); err == nil && userHasAccess {
Settings
}
}
@components.CodeButton(repo.ID, repo.Name)
}
@components.Main() {
if readme, err := db.Q.GetRepositoryBookmarkFileByName(ctx, repoId, "main", "readme"); err == nil {
Readme
@RenderFileComponent(readme.Name, base64.URLEncoding.EncodeToString(readme.ContentHash))
} else {
{ repo.Name }
}
if license, err := db.Q.GetRepositoryBookmarkFileByName(ctx, repoId, "main", "license"); err == nil {
License
@RenderFileComponent(license.Name, base64.URLEncoding.EncodeToString(license.ContentHash))
}
if files, err := db.Q.GetRepositoryFiles(ctx, repoId, "main"); err == nil {
if len(files) > 0 {
Files
{{ tree := BuildFileTree(files) }}
for _, child := range tree.Children {
@renderFileNode(child)
}
} else {
No files or no main bookmark found in this repository.
}
} else {
Failed to load repository files
{ err.Error() }
}
}
}
} else {
@layout("Unauthorized") {
@components.Header(GetUser(ctx))
@components.Main() {
Access Denied
You don't have permission to view this repository.
}
}
}
}
}
}