Minimalist and opinionated feed reader https://miniflux.app/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
47 lines
1.4 KiB
47 lines
1.4 KiB
// Copyright 2018 Frédéric Guillot. All rights reserved. |
|
// Use of this source code is governed by the Apache 2.0 |
|
// license that can be found in the LICENSE file. |
|
|
|
package view // import "miniflux.app/ui/view" |
|
|
|
import ( |
|
"net/http" |
|
|
|
"miniflux.app/http/request" |
|
"miniflux.app/template" |
|
"miniflux.app/ui/session" |
|
"miniflux.app/ui/static" |
|
) |
|
|
|
// View wraps template argument building. |
|
type View struct { |
|
tpl *template.Engine |
|
r *http.Request |
|
params map[string]interface{} |
|
} |
|
|
|
// Set adds a new template argument. |
|
func (v *View) Set(param string, value interface{}) *View { |
|
v.params[param] = value |
|
return v |
|
} |
|
|
|
// Render executes the template with arguments. |
|
func (v *View) Render(template string) []byte { |
|
return v.tpl.Render(template, request.UserLanguage(v.r), v.params) |
|
} |
|
|
|
// New returns a new view with default parameters. |
|
func New(tpl *template.Engine, r *http.Request, sess *session.Session) *View { |
|
b := &View{tpl, r, make(map[string]interface{})} |
|
theme := request.UserTheme(r) |
|
b.params["menu"] = "" |
|
b.params["csrf"] = request.CSRF(r) |
|
b.params["flashMessage"] = sess.FlashMessage(request.FlashMessage(r)) |
|
b.params["flashErrorMessage"] = sess.FlashErrorMessage(request.FlashErrorMessage(r)) |
|
b.params["theme"] = theme |
|
b.params["theme_checksum"] = static.StylesheetsChecksums[theme] |
|
b.params["app_js_checksum"] = static.JavascriptsChecksums["app"] |
|
b.params["sw_js_checksum"] = static.JavascriptsChecksums["service-worker"] |
|
return b |
|
}
|
|
|