templates

package
v1.26.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 18, 2026 License: MIT Imports: 56 Imported by: 140

Documentation

Index

Constants

This section is empty.

Variables

View Source
var PageRenderer = sync.OnceValue(func() *pageRenderer {
	rendererType := util.Iif(setting.IsProd, "static", "auto-reloading")
	log.Debug("Creating %s HTML Renderer", rendererType)

	assetFS := AssetFS()
	tr := &tmplRender{
		collectTemplateNames: func() ([]string, error) {
			names, err := assetFS.ListAllFiles(".", true)
			if err != nil {
				return nil, err
			}
			names = slices.DeleteFunc(names, func(file string) bool {
				return strings.HasPrefix(file, "mail/") || !strings.HasSuffix(file, ".tmpl")
			})
			for i, file := range names {
				names[i] = strings.TrimSuffix(file, ".tmpl")
			}
			return names, nil
		},
		readTemplateContent: func(name string) ([]byte, error) {
			return assetFS.ReadFile(name + ".tmpl")
		},
	}

	pr := &pageRenderer{tmplRenderer: tr}
	if err := tr.recompileTemplates(pr.funcMapDummy()); err != nil {
		processStartupTemplateError(err)
	}

	if !setting.IsProd {
		go AssetFS().WatchLocalChanges(graceful.GetManager().ShutdownContext(), func() {
			if err := tr.recompileTemplates(pr.funcMapDummy()); err != nil {
				log.Error("Template error: %v\n%s", err, log.Stack(2))
			}
		})
	}
	return pr
})

Functions

func ActionContent2Commits

func ActionContent2Commits(act Actioner) *repository.PushCommits

ActionContent2Commits converts action content to push commits

func AssetFS added in v1.20.0

func AssetFS() *assetfs.LayeredFS

func AvatarHTML added in v1.14.0

func AvatarHTML(src string, size int, class, name string) template.HTML

AvatarHTML creates the HTML for an avatar

func BuiltinAssets added in v1.20.0

func BuiltinAssets() *assetfs.Layer

func CustomAssets added in v1.20.0

func CustomAssets() *assetfs.Layer

func HandleTemplateRenderingError added in v1.20.0

func HandleTemplateRenderingError(err error) string

func MailRendererReload added in v1.26.0

func MailRendererReload() error

func PageRendererReload added in v1.26.0

func PageRendererReload() error

func QueryBuild added in v1.23.0

func QueryBuild(a ...any) template.URL

QueryBuild builds a query string from a list of key-value pairs. It omits the nil, false, zero int/int64 and empty string values, because they are default empty values for "ctx.FormXxx" calls. If 0 or false need to be included, use string values: "0" and "false". Build rules: * Even parameters: always build as query string: a=b&c=d * Odd parameters: * * {"/anything", param-pairs...} => "/?param-paris" * * {"anything?old-params", new-param-pairs...} => "anything?old-params&new-param-paris" * * Otherwise: {"old&params", new-param-pairs...} => "old&params&new-param-paris" * * Other behaviors are undefined yet.

func ReloadAllTemplates added in v1.26.0

func ReloadAllTemplates() error

func SanitizeHTML added in v1.22.0

func SanitizeHTML(s string) template.HTML

SanitizeHTML sanitizes the input by default sanitization rules.

func TimeSince added in v1.23.0

func TimeSince(then any) template.HTML

TimeSince renders relative time HTML given a time

Types

type Actioner

type Actioner interface {
	GetOpType() activities_model.ActionType
	GetActUserName(ctx context.Context) string
	GetRepoUserName(ctx context.Context) string
	GetRepoName(ctx context.Context) string
	GetRepoPath(ctx context.Context) string
	GetRepoLink(ctx context.Context) string
	GetBranch() string
	GetContent() string
	GetCreate() time.Time
	GetIssueInfos() []string
}

Actioner describes an action

type AvatarUtils added in v1.21.0

type AvatarUtils struct {
	// contains filtered or unexported fields
}

func NewAvatarUtils added in v1.21.0

func NewAvatarUtils(ctx context.Context) *AvatarUtils

func (*AvatarUtils) Avatar added in v1.21.0

func (au *AvatarUtils) Avatar(item any, others ...any) template.HTML

Avatar renders user avatars. args: user, size (int), class (string)

func (*AvatarUtils) AvatarByAction added in v1.21.0

func (au *AvatarUtils) AvatarByAction(action *activities_model.Action, others ...any) template.HTML

AvatarByAction renders user avatars from action. args: action, size (int), class (string)

func (*AvatarUtils) AvatarByEmail added in v1.21.0

func (au *AvatarUtils) AvatarByEmail(email, name string, others ...any) template.HTML

AvatarByEmail renders avatars by email address. args: email, name, size (int), class (string)

type DateUtils added in v1.23.0

type DateUtils struct{}

func NewDateUtils added in v1.23.0

func NewDateUtils() *DateUtils

func (*DateUtils) AbsoluteLong added in v1.23.0

func (du *DateUtils) AbsoluteLong(time any) template.HTML

AbsoluteLong renders in "January 01, 2006" format

func (*DateUtils) AbsoluteShort added in v1.23.0

func (du *DateUtils) AbsoluteShort(time any) template.HTML

AbsoluteShort renders in "Jan 01, 2006" format

func (*DateUtils) FullTime added in v1.23.0

func (du *DateUtils) FullTime(time any) template.HTML

FullTime renders in "Jan 01, 2006 20:33:44" format

func (*DateUtils) ParseLegacy added in v1.23.0

func (du *DateUtils) ParseLegacy(datetime string) time.Time

ParseLegacy parses the datetime in legacy format, eg: "2016-01-02" in server's timezone. It shouldn't be used in new code. New code should use Time or TimeStamp as much as possible.

func (*DateUtils) TimeSince added in v1.23.0

func (du *DateUtils) TimeSince(time any) template.HTML

type JsonUtils added in v1.20.0

type JsonUtils struct{} //nolint:revive // variable naming triggers on Json, wants JSON

func NewJsonUtils added in v1.20.0

func NewJsonUtils() *JsonUtils

func (*JsonUtils) EncodeToString added in v1.20.0

func (su *JsonUtils) EncodeToString(v any) string

func (*JsonUtils) PrettyIndent added in v1.20.0

func (su *JsonUtils) PrettyIndent(s string) string

type MailRender added in v1.26.0

type MailRender struct {
	TemplateNames []string
	BodyTemplates struct {
		HasTemplate     func(name string) bool
		ExecuteTemplate func(w io.Writer, name string, data any) error
	}

	// FIXME: MAIL-TEMPLATE-SUBJECT: only "issue" related messages support using subject from templates
	// It is an incomplete implementation from "Use templates for issue e-mail subject and body" https://github.com/go-gitea/gitea/pull/8329
	SubjectTemplates *texttmpl.Template
	// contains filtered or unexported fields
}

func MailRenderer added in v1.26.0

func MailRenderer() *MailRender

func (*MailRender) MockTemplate added in v1.26.0

func (r *MailRender) MockTemplate(name, subject, body string) func()

type MarkdownEditorContext added in v1.26.0

type MarkdownEditorContext struct {
	PreviewMode    string // "comment", "wiki", or empty for general
	PreviewContext string // the path for resolving the links in the preview (repo preview already has default correct value)
	PreviewLink    string
	MentionsLink   string
}

type MiscUtils added in v1.26.0

type MiscUtils struct {
	// contains filtered or unexported fields
}

func NewMiscUtils added in v1.26.0

func NewMiscUtils(ctx context.Context) *MiscUtils

func (*MiscUtils) MarkdownEditorComment added in v1.26.0

func (m *MiscUtils) MarkdownEditorComment(repo *repo_model.Repository) *MarkdownEditorContext

func (*MiscUtils) MarkdownEditorGeneral added in v1.26.0

func (m *MiscUtils) MarkdownEditorGeneral(owner *user_model.User) *MarkdownEditorContext

func (*MiscUtils) MarkdownEditorWiki added in v1.26.0

func (m *MiscUtils) MarkdownEditorWiki(repo *repo_model.Repository) *MarkdownEditorContext

type RenderUtils added in v1.23.0

type RenderUtils struct {
	// contains filtered or unexported fields
}

func NewRenderUtils added in v1.23.0

func NewRenderUtils(ctx reqctx.RequestContext) *RenderUtils

func (*RenderUtils) MarkdownToHtml added in v1.23.0

func (ut *RenderUtils) MarkdownToHtml(input string) template.HTML

func (*RenderUtils) RenderCommitBody added in v1.23.0

func (ut *RenderUtils) RenderCommitBody(msg string, repo *repo.Repository) template.HTML

RenderCommitBody extracts the body of a commit message without its title.

func (*RenderUtils) RenderCommitMessage added in v1.23.0

func (ut *RenderUtils) RenderCommitMessage(msg string, repo *repo.Repository) template.HTML

RenderCommitMessage renders commit message with XSS-safe and special links.

func (*RenderUtils) RenderCommitMessageLinkSubject added in v1.23.0

func (ut *RenderUtils) RenderCommitMessageLinkSubject(msg, urlDefault string, repo *repo.Repository) template.HTML

RenderCommitMessageLinkSubject renders commit message as a XSS-safe link to the provided default url, handling for special links without email to links.

func (*RenderUtils) RenderEmoji added in v1.23.0

func (ut *RenderUtils) RenderEmoji(text string) template.HTML

RenderEmoji renders html text with emoji post processors

func (*RenderUtils) RenderIssueSimpleTitle added in v1.23.0

func (ut *RenderUtils) RenderIssueSimpleTitle(text string) template.HTML

RenderIssueSimpleTitle only renders with emoji and inline code block

func (*RenderUtils) RenderIssueTitle added in v1.23.0

func (ut *RenderUtils) RenderIssueTitle(text string, repo *repo.Repository) template.HTML

RenderIssueTitle renders issue/pull title with defined post processors

func (*RenderUtils) RenderLabel added in v1.23.0

func (ut *RenderUtils) RenderLabel(label *issues_model.Label) template.HTML
func (ut *RenderUtils) RenderLabelWithLink(label *issues_model.Label, link any) template.HTML

func (*RenderUtils) RenderLabels added in v1.23.0

func (ut *RenderUtils) RenderLabels(labels []*issues_model.Label, repoLink string, issue *issues_model.Issue) template.HTML

func (*RenderUtils) RenderThemeItem added in v1.26.0

func (ut *RenderUtils) RenderThemeItem(info *webtheme.ThemeMetaInfo, iconSize int) template.HTML

func (*RenderUtils) RenderTimelineEventBadge added in v1.26.0

func (ut *RenderUtils) RenderTimelineEventBadge(c *issues_model.Comment) template.HTML

func (*RenderUtils) RenderTimelineEventComment added in v1.26.0

func (ut *RenderUtils) RenderTimelineEventComment(c *issues_model.Comment, createdStr template.HTML) template.HTML

func (*RenderUtils) RenderUnicodeEscapeToggleButton added in v1.26.0

func (ut *RenderUtils) RenderUnicodeEscapeToggleButton(escapeStatus *charset.EscapeStatus) template.HTML

func (*RenderUtils) RenderUnicodeEscapeToggleTd added in v1.26.0

func (ut *RenderUtils) RenderUnicodeEscapeToggleTd(combined, escapeStatus *charset.EscapeStatus) template.HTML

type SliceUtils added in v1.20.0

type SliceUtils struct{}

func NewSliceUtils added in v1.20.0

func NewSliceUtils() *SliceUtils

func (*SliceUtils) Contains added in v1.20.0

func (su *SliceUtils) Contains(s, v any) bool

type StringUtils added in v1.20.0

type StringUtils struct{}

func NewStringUtils added in v1.20.0

func NewStringUtils() *StringUtils

func (*StringUtils) Contains added in v1.20.0

func (su *StringUtils) Contains(s, substr string) bool

func (*StringUtils) Cut added in v1.21.0

func (su *StringUtils) Cut(s, sep string) []any

func (*StringUtils) EllipsisString added in v1.20.0

func (su *StringUtils) EllipsisString(s string, maxLength int) string

func (*StringUtils) HasPrefix added in v1.20.0

func (su *StringUtils) HasPrefix(s, prefix string) bool

func (*StringUtils) Join added in v1.20.0

func (su *StringUtils) Join(a []string, sep string) string

func (*StringUtils) Split added in v1.20.0

func (su *StringUtils) Split(s, sep string) []string

func (*StringUtils) ToString added in v1.22.0

func (su *StringUtils) ToString(v any) string

func (*StringUtils) ToUpper added in v1.22.0

func (su *StringUtils) ToUpper(s string) string

func (*StringUtils) TrimPrefix added in v1.23.0

func (su *StringUtils) TrimPrefix(s, prefix string) string

type TemplateExecutor added in v1.20.0

type TemplateExecutor scopedtmpl.TemplateExecutor

type TplName added in v1.24.0

type TplName string

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL