diff --git a/appview/pages/markup/markdown.go b/appview/pages/markup/markdown.go index 890aed7d..205b5882 100644 --- a/appview/pages/markup/markdown.go +++ b/appview/pages/markup/markdown.go @@ -253,7 +253,7 @@ func (rctx *RenderContext) relativeLinkTransformer(link *ast.Link) { actualPath := rctx.actualPath(dst) - newPath := path.Join("/", rctx.RepoInfo.FullName(), "tree", rctx.RepoInfo.Ref, actualPath) + newPath := path.Join("/", rctx.RepoInfo.UrlBase(), "tree", rctx.RepoInfo.Ref, actualPath) link.Destination = []byte(newPath) } @@ -264,7 +264,7 @@ func (rctx *RenderContext) imageToRawTransformer(dst string) string { actualPath := rctx.actualPath(dst) - newDest := path.Join("/", rctx.RepoInfo.FullName(), "raw", rctx.RepoInfo.Ref, actualPath) + newDest := path.Join("/", rctx.RepoInfo.UrlBase(), "raw", rctx.RepoInfo.Ref, actualPath) return newDest } diff --git a/appview/pages/repoinfo/repoinfo.go b/appview/pages/repoinfo/repoinfo.go index bbd870aa..03fc4cab 100644 --- a/appview/pages/repoinfo/repoinfo.go +++ b/appview/pages/repoinfo/repoinfo.go @@ -30,6 +30,16 @@ func (r RepoInfo) FullName() string { return path.Join(r.owner(), r.Slug()) } +// UrlBase returns the URL prefix used to build intra-repo links. +// In project mode the owner is implicit so only the rkey is needed; +// otherwise it returns the full owner/rkey path. +func (r RepoInfo) UrlBase() string { + if r.ProjectMode { + return r.Rkey + } + return r.FullName() +} + func (r RepoInfo) RepoIdentifier() string { if r.RepoDid != "" { return r.RepoDid @@ -74,6 +84,7 @@ type RepoInfo struct { OwnerDid string OwnerHandle string RepoDid string + ProjectMode bool Description string Website string Topics []string diff --git a/appview/pages/templates/layouts/repobase.html b/appview/pages/templates/layouts/repobase.html index a41ddbd8..c3e99406 100644 --- a/appview/pages/templates/layouts/repobase.html +++ b/appview/pages/templates/layouts/repobase.html @@ -30,7 +30,7 @@ {{ $icon := index $item 2 }} {{ $meta := index $tabmeta $key }} @@ -68,7 +68,7 @@
{{ template "user/fragments/picHandleLink" .RepoInfo.OwnerDid }} / - {{ .RepoInfo.Name }} + {{ .RepoInfo.Name }}
{{ end }} diff --git a/appview/pages/templates/repo/settings/fragments/sidebar.html b/appview/pages/templates/repo/settings/fragments/sidebar.html index 82295d3f..ed0cb637 100644 --- a/appview/pages/templates/repo/settings/fragments/sidebar.html +++ b/appview/pages/templates/repo/settings/fragments/sidebar.html @@ -4,7 +4,7 @@ {{ $activeTab := "bg-white dark:bg-gray-700 drop-shadow-sm" }} {{ $inactiveTab := "bg-gray-100 dark:bg-gray-800" }} {{ range const.RepoSettingsTabs }} - +
{{ i .Icon "size-4" }} {{ .Label }} diff --git a/appview/pulls/compose.go b/appview/pulls/compose.go index b32931ad..55c63877 100644 --- a/appview/pulls/compose.go +++ b/appview/pulls/compose.go @@ -182,7 +182,7 @@ func (s *Pulls) RefreshCompose(w http.ResponseWriter, r *http.Request) { } func composeCanonicalURL(params pages.RepoNewPullParams) string { - base := fmt.Sprintf("/%s/pulls/new", params.RepoInfo.FullName()) + base := fmt.Sprintf("/%s/pulls/new", params.RepoInfo.UrlBase()) q := url.Values{} if params.IsStacked { q.Set("mode", "stack") @@ -264,7 +264,7 @@ func (s *Pulls) composeParams(r *http.Request, repo *models.Repo) (pages.RepoNew mergeCheck := s.composeMergeCheck(r.Context(), repo, targetBranch, comparison) - refreshUrl := fmt.Sprintf("/%s/pulls/new/refresh", repoInfo.FullName()) + refreshUrl := fmt.Sprintf("/%s/pulls/new/refresh", repoInfo.UrlBase()) var diffOpts types.DiffOpts if r.FormValue("diff") == "split" { diffOpts.Split = true diff --git a/appview/pulls/single.go b/appview/pulls/single.go index c166f637..93ab6270 100644 --- a/appview/pulls/single.go +++ b/appview/pulls/single.go @@ -7,6 +7,7 @@ import ( "tangled.org/core/api/tangled" "tangled.org/core/appview/db" + "tangled.org/core/appview/models" "tangled.org/core/appview/pages" "tangled.org/core/appview/xrpcclient" diff --git a/appview/reporesolver/resolver.go b/appview/reporesolver/resolver.go index 1d0e91ee..4aa58948 100644 --- a/appview/reporesolver/resolver.go +++ b/appview/reporesolver/resolver.go @@ -151,6 +151,7 @@ func (rr *RepoResolver) GetRepoInfo(r *http.Request, user *oauth.MultiAccountUse RepoDid: repo.RepoDid, Name: repo.Name, Rkey: repo.Rkey, + ProjectMode: rr.config.Project.Enabled, Description: repo.Description, Website: repo.Website, Topics: repo.Topics,