Add configurable ref/relref error handling and notFoundURL

Two new settings:

* refLinksErrorLevel: ERROR (default) or WARNING. ERROR will fail the build.
* refLinksNotFoundURL: Used as a placeholder when page references cannot be found.

Fixes #4964
This commit is contained in:
Bjørn Erik Pedersen
2018-07-18 19:58:39 +02:00
parent 12679b4083
commit e25aa655f4
7 changed files with 112 additions and 92 deletions

View File

@@ -2063,7 +2063,8 @@ func (p *Page) decodeRefArgs(args map[string]interface{}) (refArgs, *SiteInfo, e
}
if !found {
return ra, nil, fmt.Errorf("no site found with lang %q", ra.Lang)
p.s.siteRefLinker.logNotFound(ra.Path, fmt.Sprintf("no site found with lang %q", ra.Lang), p)
return ra, nil, nil
}
}
@@ -2076,6 +2077,10 @@ func (p *Page) Ref(argsm map[string]interface{}) (string, error) {
return "", fmt.Errorf("invalid arguments to Ref: %s", err)
}
if s == nil {
return p.s.siteRefLinker.notFoundURL, nil
}
if args.Path == "" {
return "", nil
}
@@ -2092,6 +2097,10 @@ func (p *Page) RelRef(argsm map[string]interface{}) (string, error) {
return "", fmt.Errorf("invalid arguments to Ref: %s", err)
}
if s == nil {
return p.s.siteRefLinker.notFoundURL, nil
}
if args.Path == "" {
return "", nil
}
@@ -2178,7 +2187,7 @@ func (p *Page) shouldAddLanguagePrefix() bool {
return false
}
if !p.Site.defaultContentLanguageInSubdir && p.Lang() == p.Site.multilingual.DefaultLang.Lang {
if !p.Site.defaultContentLanguageInSubdir && p.Lang() == p.s.multilingual().DefaultLang.Lang {
return false
}
@@ -2191,7 +2200,7 @@ func (p *Page) initLanguage() {
return
}
ml := p.Site.multilingual
ml := p.s.multilingual()
if ml == nil {
panic("Multilanguage not set")
}