From ff2f479a4b23484f3717e1efaa24819f9b0e5e60 Mon Sep 17 00:00:00 2001
From: wxiaoguang <wxiaoguang@gmail.com>
Date: Fri, 7 Apr 2023 15:31:41 +0800
Subject: [PATCH] Clean template/helper.go (#23922)

The first step of #23328

This PR cleans:

1. Dead function like `SubStr`
2. Unnecessary function like `UseHTTPS`, it should be provided by
`window.origin`
3. Duplicate function like `IsShowFullName`, there was already a
`DeafultShowFullName`

I have searched these removed functions globally, no use in code.
---
 modules/templates/helper.go       | 76 ++-----------------------------
 routers/web/admin/config.go       |  1 +
 templates/admin/config.tmpl       |  2 +-
 templates/repo/clone_buttons.tmpl |  2 +-
 templates/repo/clone_script.tmpl  |  5 +-
 templates/repo/search_name.tmpl   |  2 +-
 6 files changed, 11 insertions(+), 77 deletions(-)

diff --git a/modules/templates/helper.go b/modules/templates/helper.go
index 54c85863bd..1686e54834 100644
--- a/modules/templates/helper.go
+++ b/modules/templates/helper.go
@@ -18,7 +18,6 @@ import (
 	"path/filepath"
 	"reflect"
 	"regexp"
-	"runtime"
 	"strings"
 	texttmpl "text/template"
 	"time"
@@ -56,12 +55,6 @@ var mailSubjectSplit = regexp.MustCompile(`(?m)^-{3,}[\s]*$`)
 // NewFuncMap returns functions for injecting to templates
 func NewFuncMap() []template.FuncMap {
 	return []template.FuncMap{map[string]interface{}{
-		"GoVer": func() string {
-			return util.ToTitleCase(runtime.Version())
-		},
-		"UseHTTPS": func() bool {
-			return strings.HasPrefix(setting.AppURL, "https")
-		},
 		"AppName": func() string {
 			return setting.AppName
 		},
@@ -81,10 +74,7 @@ func NewFuncMap() []template.FuncMap {
 		"AppVer": func() string {
 			return setting.AppVer
 		},
-		"AppBuiltWith": func() string {
-			return setting.AppBuiltWith
-		},
-		"AppDomain": func() string {
+		"AppDomain": func() string { // documented in mail-templates.md
 			return setting.Domain
 		},
 		"AssetVersion": func() string {
@@ -108,11 +98,7 @@ func NewFuncMap() []template.FuncMap {
 		"CustomEmojis": func() map[string]string {
 			return setting.UI.CustomEmojisMap
 		},
-		"IsShowFullName": func() bool {
-			return setting.UI.DefaultShowFullName
-		},
 		"Safe":          Safe,
-		"SafeJS":        SafeJS,
 		"JSEscape":      JSEscape,
 		"Str2html":      Str2html,
 		"TimeSince":     timeutil.TimeSince,
@@ -140,25 +126,8 @@ func NewFuncMap() []template.FuncMap {
 		"DateFmtLong": func(t time.Time) string {
 			return t.Format(time.RFC1123Z)
 		},
-		"DateFmtShort": func(t time.Time) string {
-			return t.Format("Jan 02, 2006")
-		},
-		"CountFmt": base.FormatNumberSI,
-		"SubStr": func(str string, start, length int) string {
-			if len(str) == 0 {
-				return ""
-			}
-			end := start + length
-			if length == -1 {
-				end = len(str)
-			}
-			if len(str) < end {
-				return str
-			}
-			return str[start:end]
-		},
+		"CountFmt":                       base.FormatNumberSI,
 		"EllipsisString":                 base.EllipsisString,
-		"DiffTypeToStr":                  DiffTypeToStr,
 		"DiffLineTypeToStr":              DiffLineTypeToStr,
 		"ShortSha":                       base.ShortSha,
 		"ActionContent2Commits":          ActionContent2Commits,
@@ -166,7 +135,6 @@ func NewFuncMap() []template.FuncMap {
 		"PathEscapeSegments":             util.PathEscapeSegments,
 		"URLJoin":                        util.URLJoin,
 		"RenderCommitMessage":            RenderCommitMessage,
-		"RenderCommitMessageLink":        RenderCommitMessageLink,
 		"RenderCommitMessageLinkSubject": RenderCommitMessageLinkSubject,
 		"RenderCommitBody":               RenderCommitBody,
 		"RenderCodeBlock":                RenderCodeBlock,
@@ -429,9 +397,6 @@ func NewFuncMap() []template.FuncMap {
 				curBranch,
 			)
 		},
-		"RefShortName": func(ref string) string {
-			return git.RefName(ref).ShortName()
-		},
 	}}
 }
 
@@ -439,9 +404,6 @@ func NewFuncMap() []template.FuncMap {
 // It's a subset of those used for HTML and other templates
 func NewTextFuncMap() []texttmpl.FuncMap {
 	return []texttmpl.FuncMap{map[string]interface{}{
-		"GoVer": func() string {
-			return util.ToTitleCase(runtime.Version())
-		},
 		"AppName": func() string {
 			return setting.AppName
 		},
@@ -454,10 +416,7 @@ func NewTextFuncMap() []texttmpl.FuncMap {
 		"AppVer": func() string {
 			return setting.AppVer
 		},
-		"AppBuiltWith": func() string {
-			return setting.AppBuiltWith
-		},
-		"AppDomain": func() string {
+		"AppDomain": func() string { // documented in mail-templates.md
 			return setting.Domain
 		},
 		"TimeSince":     timeutil.TimeSince,
@@ -465,22 +424,6 @@ func NewTextFuncMap() []texttmpl.FuncMap {
 		"DateFmtLong": func(t time.Time) string {
 			return t.Format(time.RFC1123Z)
 		},
-		"DateFmtShort": func(t time.Time) string {
-			return t.Format("Jan 02, 2006")
-		},
-		"SubStr": func(str string, start, length int) string {
-			if len(str) == 0 {
-				return ""
-			}
-			end := start + length
-			if length == -1 {
-				end = len(str)
-			}
-			if len(str) < end {
-				return str
-			}
-			return str[start:end]
-		},
 		"EllipsisString": base.EllipsisString,
 		"URLJoin":        util.URLJoin,
 		"Dict": func(values ...interface{}) (map[string]interface{}, error) {
@@ -624,11 +567,6 @@ func Safe(raw string) template.HTML {
 	return template.HTML(raw)
 }
 
-// SafeJS renders raw as JS
-func SafeJS(raw string) template.JS {
-	return template.JS(raw)
-}
-
 // Str2html render Markdown text to HTML
 func Str2html(raw string) template.HTML {
 	return template.HTML(markup.Sanitize(raw))
@@ -925,14 +863,6 @@ func ActionContent2Commits(act Actioner) *repository.PushCommits {
 	return push
 }
 
-// DiffTypeToStr returns diff type name
-func DiffTypeToStr(diffType int) string {
-	diffTypes := map[int]string{
-		1: "add", 2: "modify", 3: "del", 4: "rename", 5: "copy",
-	}
-	return diffTypes[diffType]
-}
-
 // DiffLineTypeToStr returns diff line type name
 func DiffLineTypeToStr(diffType int) string {
 	switch diffType {
diff --git a/routers/web/admin/config.go b/routers/web/admin/config.go
index 075fb423dc..48815dcff8 100644
--- a/routers/web/admin/config.go
+++ b/routers/web/admin/config.go
@@ -115,6 +115,7 @@ func Config(ctx *context.Context) {
 
 	ctx.Data["CustomConf"] = setting.CustomConf
 	ctx.Data["AppUrl"] = setting.AppURL
+	ctx.Data["AppBuiltWith"] = setting.AppBuiltWith
 	ctx.Data["Domain"] = setting.Domain
 	ctx.Data["OfflineMode"] = setting.OfflineMode
 	ctx.Data["DisableRouterLog"] = setting.Log.DisableRouterLog
diff --git a/templates/admin/config.tmpl b/templates/admin/config.tmpl
index cc0580cc19..14281c70c0 100644
--- a/templates/admin/config.tmpl
+++ b/templates/admin/config.tmpl
@@ -11,7 +11,7 @@
 				<dt>{{.locale.Tr "admin.config.app_name"}}</dt>
 				<dd>{{AppName}}</dd>
 				<dt>{{.locale.Tr "admin.config.app_ver"}}</dt>
-				<dd>{{AppVer}}{{AppBuiltWith}}</dd>
+				<dd>{{AppVer}}{{.AppBuiltWith}}</dd>
 				<dt>{{.locale.Tr "admin.config.custom_conf"}}</dt>
 				<dd>{{.CustomConf}}</dd>
 				<dt>{{.locale.Tr "admin.config.app_url"}}</dt>
diff --git a/templates/repo/clone_buttons.tmpl b/templates/repo/clone_buttons.tmpl
index 278ae3a925..656a487915 100644
--- a/templates/repo/clone_buttons.tmpl
+++ b/templates/repo/clone_buttons.tmpl
@@ -1,7 +1,7 @@
 <!-- there is always at least one button (by context/repo.go) -->
 {{if $.CloneButtonShowHTTPS}}
 	<button class="ui basic small compact clone button gt-no-transition" id="repo-clone-https" data-link="{{$.CloneButtonOriginLink.HTTPS}}">
-		{{if UseHTTPS}}HTTPS{{else}}HTTP{{end}}
+		HTTPS
 	</button>
 {{end}}
 {{if $.CloneButtonShowSSH}}
diff --git a/templates/repo/clone_script.tmpl b/templates/repo/clone_script.tmpl
index 88a67d8235..21e78727ff 100644
--- a/templates/repo/clone_script.tmpl
+++ b/templates/repo/clone_script.tmpl
@@ -11,7 +11,10 @@
 		const value = localStorage.getItem('repo-clone-protocol') || 'https';
 		const isSSH = value === 'ssh' && sshBtn || value !== 'ssh' && !httpsBtn;
 
-		if (httpsBtn) httpsBtn.classList[!isSSH ? 'add' : 'remove']('primary');
+		if (httpsBtn) {
+			httpsBtn.textContent = window.origin.split(':')[0].toUpperCase();
+			httpsBtn.classList[!isSSH ? 'add' : 'remove']('primary');
+		}
 		if (sshBtn) sshBtn.classList[isSSH ? 'add' : 'remove']('primary');
 
 		const btn = isSSH ? sshBtn : httpsBtn;
diff --git a/templates/repo/search_name.tmpl b/templates/repo/search_name.tmpl
index 5a481761cc..951f168866 100644
--- a/templates/repo/search_name.tmpl
+++ b/templates/repo/search_name.tmpl
@@ -1 +1 @@
-<span class="gt-ellipsis">{{.Name}}{{if IsShowFullName}}<span class="search-fullname"> {{.FullName}}</span>{{end}}</span>
+<span class="gt-ellipsis">{{.Name}}{{if DefaultShowFullName}}<span class="search-fullname"> {{.FullName}}</span>{{end}}</span>