yatwiki/rView.go

40 lines
1.0 KiB
Go
Raw Normal View History

2017-07-12 06:43:11 +00:00
package yatwiki
import (
"database/sql"
"net/http"
"net/url"
)
func (this *WikiServer) routeView(w http.ResponseWriter, r *http.Request, articleTitle string) {
a, err := this.db.GetLatestVersion(articleTitle)
if err != nil {
if err == sql.ErrNoRows {
// Yatwiki2 always required a trailing slash at the end of the URL
// If this was an old link, it might not be present.
// Redirect if possible
if len(articleTitle) > 0 && articleTitle[len(articleTitle)-1] == '/' {
this.serveRedirect(w, this.opts.ExpectBaseURL+"view/"+url.PathEscape(articleTitle[0:len(articleTitle)-1]))
return
}
this.serveErrorHTMLMessage(w, this.noSuchArticleError(articleTitle))
return
}
this.serveErrorMessage(w, err)
return
}
pto := DefaultPageTemplateOptions(this.opts)
pto.CurrentPageName = articleTitle
pto.CurrentPageIsArticle = true
bcr := NewBBCodeRenderer(this.opts.ExpectBaseURL)
pto.Content = bcr.RenderHTML(string(a.Body))
pto.LoadCodeResources = bcr.CodePresent
this.servePageResponse(w, r, pto)
return
}