mirror of
https://codeberg.org/davrot/forgejo.git
synced 2025-05-18 08:00:01 +02:00
Fix wiki preview links
This commit is contained in:
parent
a52cd59727
commit
b1d7348a20
3 changed files with 43 additions and 40 deletions
|
@ -19,6 +19,7 @@ import (
|
|||
"golang.org/x/net/html"
|
||||
|
||||
"code.gitea.io/gitea/modules/base"
|
||||
"code.gitea.io/gitea/modules/log"
|
||||
"code.gitea.io/gitea/modules/markup"
|
||||
"code.gitea.io/gitea/modules/setting"
|
||||
)
|
||||
|
@ -213,36 +214,17 @@ func cutoutVerbosePrefix(prefix string) string {
|
|||
}
|
||||
|
||||
// URLJoin joins url components, like path.Join, but preserving contents
|
||||
func URLJoin(elem ...string) string {
|
||||
res := ""
|
||||
last := len(elem) - 1
|
||||
for i, item := range elem {
|
||||
res += item
|
||||
if i != last && !strings.HasSuffix(res, "/") {
|
||||
res += "/"
|
||||
}
|
||||
func URLJoin(base string, elems ...string) string {
|
||||
u, err := url.Parse(base)
|
||||
if err != nil {
|
||||
log.Error(4, "URLJoin: Invalid base URL %s", base)
|
||||
return ""
|
||||
}
|
||||
cwdIndex := strings.Index(res, "/./")
|
||||
for cwdIndex != -1 {
|
||||
res = strings.Replace(res, "/./", "/", 1)
|
||||
cwdIndex = strings.Index(res, "/./")
|
||||
}
|
||||
upIndex := strings.Index(res, "/..")
|
||||
for upIndex != -1 {
|
||||
res = strings.Replace(res, "/..", "", 1)
|
||||
prevStart := -1
|
||||
for i := upIndex - 1; i >= 0; i-- {
|
||||
if res[i] == '/' {
|
||||
prevStart = i
|
||||
break
|
||||
}
|
||||
}
|
||||
if prevStart != -1 {
|
||||
res = res[:prevStart] + res[upIndex:]
|
||||
}
|
||||
upIndex = strings.Index(res, "/..")
|
||||
}
|
||||
return res
|
||||
joinArgs := make([]string, 0, len(elems)+1)
|
||||
joinArgs = append(joinArgs, u.Path)
|
||||
joinArgs = append(joinArgs, elems...)
|
||||
u.Path = path.Join(joinArgs...)
|
||||
return u.String()
|
||||
}
|
||||
|
||||
// RenderIssueIndexPattern renders issue indexes to corresponding links.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue