diff --git a/modules/templates/helper.go b/modules/templates/helper.go
index 56be050481..407b2c64f5 100644
--- a/modules/templates/helper.go
+++ b/modules/templates/helper.go
@@ -8,7 +8,6 @@ import (
 	"bytes"
 	"context"
 	"encoding/hex"
-	"errors"
 	"fmt"
 	"html"
 	"html/template"
@@ -219,20 +218,6 @@ func NewFuncMap() []template.FuncMap {
 		"DisableImportLocal": func() bool {
 			return !setting.ImportLocalPaths
 		},
-		"Dict": func(values ...interface{}) (map[string]interface{}, error) {
-			if len(values)%2 != 0 {
-				return nil, errors.New("invalid dict call")
-			}
-			dict := make(map[string]interface{}, len(values)/2)
-			for i := 0; i < len(values); i += 2 {
-				key, ok := values[i].(string)
-				if !ok {
-					return nil, errors.New("dict keys must be strings")
-				}
-				dict[key] = values[i+1]
-			}
-			return dict, nil
-		},
 		"Printf":   fmt.Sprintf,
 		"Escape":   Escape,
 		"Sec2Time": util.SecToTime,
@@ -242,35 +227,7 @@ func NewFuncMap() []template.FuncMap {
 		"DefaultTheme": func() string {
 			return setting.UI.DefaultTheme
 		},
-		// pass key-value pairs to a partial template which receives them as a dict
-		"dict": func(values ...interface{}) (map[string]interface{}, error) {
-			if len(values) == 0 {
-				return nil, errors.New("invalid dict call")
-			}
-
-			dict := make(map[string]interface{})
-			return util.MergeInto(dict, values...)
-		},
-		/* like dict but merge key-value pairs into the first dict and return it */
-		"mergeinto": func(root map[string]interface{}, values ...interface{}) (map[string]interface{}, error) {
-			if len(values) == 0 {
-				return nil, errors.New("invalid mergeinto call")
-			}
-
-			dict := make(map[string]interface{})
-			for key, value := range root {
-				dict[key] = value
-			}
-
-			return util.MergeInto(dict, values...)
-		},
-		"percentage": func(n int, values ...int) float32 {
-			sum := 0
-			for i := 0; i < len(values); i++ {
-				sum += values[i]
-			}
-			return float32(n) * 100 / float32(sum)
-		},
+		"dict":                dict,
 		"CommentMustAsDiff":   gitdiff.CommentMustAsDiff,
 		"MirrorRemoteAddress": mirrorRemoteAddress,
 		"NotificationSettings": func() map[string]interface{} {
@@ -413,52 +370,13 @@ func NewTextFuncMap() []texttmpl.FuncMap {
 		},
 		"EllipsisString": base.EllipsisString,
 		"URLJoin":        util.URLJoin,
-		"Dict": func(values ...interface{}) (map[string]interface{}, error) {
-			if len(values)%2 != 0 {
-				return nil, errors.New("invalid dict call")
-			}
-			dict := make(map[string]interface{}, len(values)/2)
-			for i := 0; i < len(values); i += 2 {
-				key, ok := values[i].(string)
-				if !ok {
-					return nil, errors.New("dict keys must be strings")
-				}
-				dict[key] = values[i+1]
-			}
-			return dict, nil
-		},
-		"Printf":   fmt.Sprintf,
-		"Escape":   Escape,
-		"Sec2Time": util.SecToTime,
+		"Printf":         fmt.Sprintf,
+		"Escape":         Escape,
+		"Sec2Time":       util.SecToTime,
 		"ParseDeadline": func(deadline string) []string {
 			return strings.Split(deadline, "|")
 		},
-		"dict": func(values ...interface{}) (map[string]interface{}, error) {
-			if len(values) == 0 {
-				return nil, errors.New("invalid dict call")
-			}
-
-			dict := make(map[string]interface{})
-
-			for i := 0; i < len(values); i++ {
-				switch key := values[i].(type) {
-				case string:
-					i++
-					if i == len(values) {
-						return nil, errors.New("specify the key for non array values")
-					}
-					dict[key] = values[i]
-				case map[string]interface{}:
-					m := values[i].(map[string]interface{})
-					for i, v := range m {
-						dict[i] = v
-					}
-				default:
-					return nil, errors.New("dict values must be maps")
-				}
-			}
-			return dict, nil
-		},
+		"dict":        dict,
 		"QueryEscape": url.QueryEscape,
 		"Eval":        Eval,
 	}}
diff --git a/modules/templates/util.go b/modules/templates/util.go
new file mode 100644
index 0000000000..13f3a56808
--- /dev/null
+++ b/modules/templates/util.go
@@ -0,0 +1,47 @@
+// Copyright 2023 The Gitea Authors. All rights reserved.
+// SPDX-License-Identifier: MIT
+
+package templates
+
+import (
+	"fmt"
+	"reflect"
+)
+
+func dictMerge(base map[string]any, arg any) bool {
+	if arg == nil {
+		return true
+	}
+	rv := reflect.ValueOf(arg)
+	if rv.Kind() == reflect.Map {
+		for _, k := range rv.MapKeys() {
+			base[k.String()] = rv.MapIndex(k).Interface()
+		}
+		return true
+	}
+	return false
+}
+
+// dict is a helper function for creating a map[string]any from a list of key-value pairs.
+// If the key is dot ".", the value is merged into the base map, just like Golang template's dot syntax: dot means current
+// The dot syntax is highly discouraged because it might cause unclear key conflicts. It's always good to use explicit keys.
+func dict(args ...any) (map[string]any, error) {
+	if len(args)%2 != 0 {
+		return nil, fmt.Errorf("invalid dict constructor syntax: must have key-value pairs")
+	}
+	m := make(map[string]any, len(args)/2)
+	for i := 0; i < len(args); i += 2 {
+		key, ok := args[i].(string)
+		if !ok {
+			return nil, fmt.Errorf("invalid dict constructor syntax: unable to merge args[%d]", i)
+		}
+		if key == "." {
+			if ok = dictMerge(m, args[i+1]); !ok {
+				return nil, fmt.Errorf("invalid dict constructor syntax: dot arg[%d] must be followed by a dict", i)
+			}
+		} else {
+			m[key] = args[i+1]
+		}
+	}
+	return m, nil
+}
diff --git a/modules/templates/util_test.go b/modules/templates/util_test.go
new file mode 100644
index 0000000000..dfa691c5e2
--- /dev/null
+++ b/modules/templates/util_test.go
@@ -0,0 +1,43 @@
+// Copyright 2023 The Gitea Authors. All rights reserved.
+// SPDX-License-Identifier: MIT
+
+package templates
+
+import (
+	"testing"
+
+	"github.com/stretchr/testify/assert"
+)
+
+func TestDict(t *testing.T) {
+	type M map[string]any
+	cases := []struct {
+		args []any
+		want map[string]any
+	}{
+		{[]any{"a", 1, "b", 2}, M{"a": 1, "b": 2}},
+		{[]any{".", M{"base": 1}, "b", 2}, M{"base": 1, "b": 2}},
+		{[]any{"a", 1, ".", M{"extra": 2}}, M{"a": 1, "extra": 2}},
+		{[]any{"a", 1, ".", map[string]int{"int": 2}}, M{"a": 1, "int": 2}},
+		{[]any{".", nil, "b", 2}, M{"b": 2}},
+	}
+
+	for _, c := range cases {
+		got, err := dict(c.args...)
+		if assert.NoError(t, err) {
+			assert.EqualValues(t, c.want, got)
+		}
+	}
+
+	bads := []struct {
+		args []any
+	}{
+		{[]any{"a", 1, "b"}},
+		{[]any{1}},
+		{[]any{struct{}{}}},
+	}
+	for _, c := range bads {
+		_, err := dict(c.args...)
+		assert.Error(t, err)
+	}
+}
diff --git a/modules/util/util.go b/modules/util/util.go
index 782b905bec..148817bd47 100644
--- a/modules/util/util.go
+++ b/modules/util/util.go
@@ -6,7 +6,6 @@ package util
 import (
 	"bytes"
 	"crypto/rand"
-	"errors"
 	"fmt"
 	"math/big"
 	"strconv"
@@ -117,29 +116,6 @@ func NormalizeEOL(input []byte) []byte {
 	return tmp[:pos]
 }
 
-// MergeInto merges pairs of values into a "dict"
-func MergeInto(dict map[string]interface{}, values ...interface{}) (map[string]interface{}, error) {
-	for i := 0; i < len(values); i++ {
-		switch key := values[i].(type) {
-		case string:
-			i++
-			if i == len(values) {
-				return nil, errors.New("specify the key for non array values")
-			}
-			dict[key] = values[i]
-		case map[string]interface{}:
-			m := values[i].(map[string]interface{})
-			for i, v := range m {
-				dict[i] = v
-			}
-		default:
-			return nil, errors.New("dict values must be maps")
-		}
-	}
-
-	return dict, nil
-}
-
 // CryptoRandomInt returns a crypto random integer between 0 and limit, inclusive
 func CryptoRandomInt(limit int64) (int64, error) {
 	rInt, err := rand.Int(rand.Reader, big.NewInt(limit))
diff --git a/templates/org/team/teams.tmpl b/templates/org/team/teams.tmpl
index df0620af49..27bbe80a3c 100644
--- a/templates/org/team/teams.tmpl
+++ b/templates/org/team/teams.tmpl
@@ -32,7 +32,7 @@
 					
 					
 						{{range .Members}}
-							{{template "shared/user/avatarlink" Dict "Context" $.Context "user" .}}
+							{{template "shared/user/avatarlink" dict "Context" $.Context "user" .}}
 						{{end}}
 					
 					
 		
@@ -60,7 +60,7 @@
 		{{$reactions := .Reactions.GroupByType}}
 		{{if $reactions}}
 			
-			{{template "repo/issue/view_content/reactions" Dict "ctxData" $.root "ActionURL" (Printf "%s/comments/%d/reactions" $.root.RepoLink .ID) "Reactions" $reactions}}
+			{{template "repo/issue/view_content/reactions" dict "ctxData" $.root "ActionURL" (Printf "%s/comments/%d/reactions" $.root.RepoLink .ID) "Reactions" $reactions}}
 			
 		{{end}}
 	
 		
diff --git a/templates/repo/issue/view_content/comments.tmpl b/templates/repo/issue/view_content/comments.tmpl
index 9f2b7ec2d0..52b453d0dd 100644
--- a/templates/repo/issue/view_content/comments.tmpl
+++ b/templates/repo/issue/view_content/comments.tmpl
@@ -64,8 +64,8 @@
 								
 							{{end}}
 							{{if not $.Repository.IsArchived}}
-								{{template "repo/issue/view_content/add_reaction" Dict "ctxData" $ "ActionURL" (Printf "%s/comments/%d/reactions" $.RepoLink .ID)}}
-								{{template "repo/issue/view_content/context_menu" Dict "ctxData" $ "item" . "delete" true "issue" true "diff" false "IsCommentPoster" (and $.IsSigned (eq $.SignedUserID .PosterID))}}
+								{{template "repo/issue/view_content/add_reaction" dict "ctxData" $ "ActionURL" (Printf "%s/comments/%d/reactions" $.RepoLink .ID)}}
+								{{template "repo/issue/view_content/context_menu" dict "ctxData" $ "item" . "delete" true "issue" true "diff" false "IsCommentPoster" (and $.IsSigned (eq $.SignedUserID .PosterID))}}
 							{{end}}
 						
 					
@@ -80,13 +80,13 @@
 						
 						
 						{{if .Attachments}}
-							{{template "repo/issue/view_content/attachments" Dict "ctxData" $ "Attachments" .Attachments "Content" .RenderedContent}}
+							{{template "repo/issue/view_content/attachments" dict "ctxData" $ "Attachments" .Attachments "Content" .RenderedContent}}
 						{{end}}
 					
 					{{$reactions := .Reactions.GroupByType}}
 					{{if $reactions}}
 						
-							{{template "repo/issue/view_content/reactions" Dict "ctxData" $ "ActionURL" (Printf "%s/comments/%d/reactions" $.RepoLink .ID) "Reactions" $reactions}}
+							{{template "repo/issue/view_content/reactions" dict "ctxData" $ "ActionURL" (Printf "%s/comments/%d/reactions" $.RepoLink .ID) "Reactions" $reactions}}
 						
 					{{end}}
 				
@@ -94,7 +94,7 @@
 		{{else if eq .Type 1}}
 			
 				{{svg "octicon-dot-fill"}}
-				{{template "shared/user/avatarlink" Dict "Context" $.Context "user" .Poster}}
+				{{template "shared/user/avatarlink" dict "Context" $.Context "user" .Poster}}
 				
 					{{template "shared/user/authorlink" .Poster}}
 					{{if .Issue.IsPull}}
@@ -107,7 +107,7 @@
 		{{else if eq .Type 2}}
 			
 				{{svg "octicon-circle-slash"}}
-				{{template "shared/user/avatarlink" Dict "Context" $.Context "user" .Poster}}
+				{{template "shared/user/avatarlink" dict "Context" $.Context "user" .Poster}}
 				
 					{{template "shared/user/authorlink" .Poster}}
 					{{if .Issue.IsPull}}
@@ -120,7 +120,7 @@
 		{{else if eq .Type 28}}
 			
 				{{svg "octicon-git-merge"}}
-				{{template "shared/user/avatarlink" Dict "Context" $.Context "user" .Poster}}
+				{{template "shared/user/avatarlink" dict "Context" $.Context "user" .Poster}}
 				
 					{{template "shared/user/authorlink" .Poster}}
 					{{$link := printf "%s/commit/%s" $.Repository.Link ($.Issue.PullRequest.MergedCommitID|PathEscape)}}
@@ -147,7 +147,7 @@
 			{{$createdStr:= TimeSinceUnix .CreatedUnix $.locale}}
 			
 				{{svg "octicon-bookmark"}}
-				{{template "shared/user/avatarlink" Dict "Context" $.Context "user" .Poster}}
+				{{template "shared/user/avatarlink" dict "Context" $.Context "user" .Poster}}
 				{{if eq .RefAction 3}}
{{end}}
 				
 					{{template "shared/user/authorlink" .Poster}}
@@ -162,7 +162,7 @@
 		{{else if eq .Type 4}}
 			
 				{{svg "octicon-bookmark"}}
-				{{template "shared/user/avatarlink" Dict "Context" $.Context "user" .Poster}}
+				{{template "shared/user/avatarlink" dict "Context" $.Context "user" .Poster}}
 				
 					{{template "shared/user/authorlink" .Poster}}
 					{{$.locale.Tr "repo.issues.commit_ref_at" .EventTag $createdStr | Safe}}
@@ -176,7 +176,7 @@
 			{{if or .AddedLabels .RemovedLabels}}
 				
 					{{svg "octicon-tag"}}
-					{{template "shared/user/avatarlink" Dict "Context" $.Context "user" .Poster}}
+					{{template "shared/user/avatarlink" dict "Context" $.Context "user" .Poster}}
 					
 						{{template "shared/user/authorlink" .Poster}}
 						{{if and .AddedLabels (not .RemovedLabels)}}
@@ -192,7 +192,7 @@
 		{{else if eq .Type 8}}
 			
 				{{svg "octicon-milestone"}}
-				{{template "shared/user/avatarlink" Dict "Context" $.Context "user" .Poster}}
+				{{template "shared/user/avatarlink" dict "Context" $.Context "user" .Poster}}
 				
 					{{template "shared/user/authorlink" .Poster}}
 					{{if gt .OldMilestoneID 0}}{{if gt .MilestoneID 0}}{{$.locale.Tr "repo.issues.change_milestone_at" (.OldMilestone.Name|Escape) (.Milestone.Name|Escape) $createdStr | Safe}}{{else}}{{$.locale.Tr "repo.issues.remove_milestone_at" (.OldMilestone.Name|Escape) $createdStr | Safe}}{{end}}{{else if gt .MilestoneID 0}}{{$.locale.Tr "repo.issues.add_milestone_at" (.Milestone.Name|Escape) $createdStr | Safe}}{{end}}
@@ -203,7 +203,7 @@
 				{{svg "octicon-person"}}
 				{{if gt .AssigneeID 0}}
 					{{if .RemovedAssignee}}
-						{{template "shared/user/avatarlink" Dict "Context" $.Context "user" .Assignee}}
+						{{template "shared/user/avatarlink" dict "Context" $.Context "user" .Assignee}}
 						
 							{{template "shared/user/authorlink" .Assignee}}
 							{{if eq .Poster.ID .Assignee.ID}}
@@ -213,7 +213,7 @@
 							{{end}}
 						
 					{{else}}
-						{{template "shared/user/avatarlink" Dict "Context" $.Context "user" .Assignee}}
+						{{template "shared/user/avatarlink" dict "Context" $.Context "user" .Assignee}}
 						
 							{{template "shared/user/authorlink" .Assignee}}
 							{{if eq .Poster.ID .AssigneeID}}
@@ -228,7 +228,7 @@
 		{{else if eq .Type 10}}
 			
 				{{svg "octicon-pencil"}}
-				{{template "shared/user/avatarlink" Dict "Context" $.Context "user" .Poster}}
+				{{template "shared/user/avatarlink" dict "Context" $.Context "user" .Poster}}
 				
 					{{template "shared/user/authorlink" .Poster}}
 					{{$.locale.Tr "repo.issues.change_title_at" (.OldTitle|RenderEmoji $.Context) (.NewTitle|RenderEmoji $.Context) $createdStr | Safe}}
@@ -237,7 +237,7 @@
 		{{else if eq .Type 11}}
 			
 				{{svg "octicon-git-branch"}}
-				{{template "shared/user/avatarlink" Dict "Context" $.Context "user" .Poster}}
+				{{template "shared/user/avatarlink" dict "Context" $.Context "user" .Poster}}
 				
 					{{template "shared/user/authorlink" .Poster}}
 					{{$.locale.Tr "repo.issues.delete_branch_at" (.OldRef|Escape) $createdStr | Safe}}
@@ -246,7 +246,7 @@
 		{{else if eq .Type 12}}
 			
 				{{svg "octicon-clock"}}
-				{{template "shared/user/avatarlink" Dict "Context" $.Context "user" .Poster}}
+				{{template "shared/user/avatarlink" dict "Context" $.Context "user" .Poster}}
 				
 					{{template "shared/user/authorlink" .Poster}}
 					{{$.locale.Tr "repo.issues.start_tracking_history"  $createdStr | Safe}}
@@ -255,12 +255,12 @@
 		{{else if eq .Type 13}}
 			
 				{{svg "octicon-clock"}}
-				{{template "shared/user/avatarlink" Dict "Context" $.Context "user" .Poster}}
+				{{template "shared/user/avatarlink" dict "Context" $.Context "user" .Poster}}
 				
 					{{template "shared/user/authorlink" .Poster}}
 					{{$.locale.Tr "repo.issues.stop_tracking_history"  $createdStr | Safe}}
 				
-				{{template "repo/issue/view_content/comments_delete_time" Dict "ctxData" $ "comment" .}}
+				{{template "repo/issue/view_content/comments_delete_time" dict "ctxData" $ "comment" .}}
 				
 					{{svg "octicon-clock"}}
 					
{{.Content}}
@@ -269,12 +269,12 @@
 		{{else if eq .Type 14}}
 			
 				{{svg "octicon-clock"}}
-				{{template "shared/user/avatarlink" Dict "Context" $.Context "user" .Poster}}
+				{{template "shared/user/avatarlink" dict "Context" $.Context "user" .Poster}}
 				
 					{{template "shared/user/authorlink" .Poster}}
 					{{$.locale.Tr "repo.issues.add_time_history"  $createdStr | Safe}}
 				
-				{{template "repo/issue/view_content/comments_delete_time" Dict "ctxData" $ "comment" .}}
+				{{template "repo/issue/view_content/comments_delete_time" dict "ctxData" $ "comment" .}}
 				
 					{{svg "octicon-clock"}}
 					
{{.Content}}
@@ -283,7 +283,7 @@
 		{{else if eq .Type 15}}
 			
 				{{svg "octicon-clock"}}
-				{{template "shared/user/avatarlink" Dict "Context" $.Context "user" .Poster}}
+				{{template "shared/user/avatarlink" dict "Context" $.Context "user" .Poster}}
 				
 					{{template "shared/user/authorlink" .Poster}}
 					{{$.locale.Tr "repo.issues.cancel_tracking_history"  $createdStr | Safe}}
@@ -292,7 +292,7 @@
 		{{else if eq .Type 16}}
 			
 				{{svg "octicon-clock"}}
-				{{template "shared/user/avatarlink" Dict "Context" $.Context "user" .Poster}}
+				{{template "shared/user/avatarlink" dict "Context" $.Context "user" .Poster}}
 				
 					{{template "shared/user/authorlink" .Poster}}
 					{{$.locale.Tr "repo.issues.due_date_added" .Content $createdStr | Safe}}
@@ -301,7 +301,7 @@
 		{{else if eq .Type 17}}
 			
 				{{svg "octicon-clock"}}
-				{{template "shared/user/avatarlink" Dict "Context" $.Context "user" .Poster}}
+				{{template "shared/user/avatarlink" dict "Context" $.Context "user" .Poster}}
 				
 					{{template "shared/user/authorlink" .Poster}}
 					{{$parsedDeadline := .Content | ParseDeadline}}
@@ -311,7 +311,7 @@
 		{{else if eq .Type 18}}
 			
 				{{svg "octicon-clock"}}
-				{{template "shared/user/avatarlink" Dict "Context" $.Context "user" .Poster}}
+				{{template "shared/user/avatarlink" dict "Context" $.Context "user" .Poster}}
 				
 					{{template "shared/user/authorlink" .Poster}}
 					{{$.locale.Tr "repo.issues.due_date_remove" .Content $createdStr | Safe}}
@@ -320,7 +320,7 @@
 		{{else if eq .Type 19}}
 			
 				{{svg "octicon-package-dependents"}}
-				{{template "shared/user/avatarlink" Dict "Context" $.Context "user" .Poster}}
+				{{template "shared/user/avatarlink" dict "Context" $.Context "user" .Poster}}
 				
 					{{template "shared/user/authorlink" .Poster}}
 					{{$.locale.Tr "repo.issues.dependency.added_dependency" $createdStr | Safe}}
@@ -343,7 +343,7 @@
 		{{else if eq .Type 20}}
 			
 				{{svg "octicon-package-dependents"}}
-				{{template "shared/user/avatarlink" Dict "Context" $.Context "user" .Poster}}
+				{{template "shared/user/avatarlink" dict "Context" $.Context "user" .Poster}}
 				
 					{{template "shared/user/authorlink" .Poster}}
 					{{$.locale.Tr "repo.issues.dependency.removed_dependency" $createdStr | Safe}}
@@ -436,8 +436,8 @@
 										
 									{{end}}
 									{{if not $.Repository.IsArchived}}
-											{{template "repo/issue/view_content/add_reaction" Dict "ctxData" $ "ActionURL" (Printf "%s/comments/%d/reactions" $.RepoLink .ID)}}
-											{{template "repo/issue/view_content/context_menu" Dict "ctxData" $ "item" . "delete" false "issue" true "diff" false "IsCommentPoster" (and $.IsSigned (eq $.SignedUserID .PosterID))}}
+											{{template "repo/issue/view_content/add_reaction" dict "ctxData" $ "ActionURL" (Printf "%s/comments/%d/reactions" $.RepoLink .ID)}}
+											{{template "repo/issue/view_content/context_menu" dict "ctxData" $ "item" . "delete" false "issue" true "diff" false "IsCommentPoster" (and $.IsSigned (eq $.SignedUserID .PosterID))}}
 									{{end}}
 							 
 						 
@@ -452,13 +452,13 @@
 							
 							
 							{{if .Attachments}}
-								{{template "repo/issue/view_content/attachments" Dict "ctxData" $ "Attachments" .Attachments "Content" .RenderedContent}}
+								{{template "repo/issue/view_content/attachments" dict "ctxData" $ "Attachments" .Attachments "Content" .RenderedContent}}
 							{{end}}
 						 
 						{{$reactions := .Reactions.GroupByType}}
 						{{if $reactions}}
 							
-									{{template "repo/issue/view_content/reactions" Dict "ctxData" $ "ActionURL" (Printf "%s/comments/%d/reactions" $.RepoLink .ID) "Reactions" $reactions}}
+									{{template "repo/issue/view_content/reactions" dict "ctxData" $ "ActionURL" (Printf "%s/comments/%d/reactions" $.RepoLink .ID) "Reactions" $reactions}}
 							
 						{{end}}
 					 
@@ -563,8 +563,8 @@
 																	 
 																{{end}}
 																{{if not $.Repository.IsArchived}}
-																	{{template "repo/issue/view_content/add_reaction" Dict "ctxData" $ "ActionURL" (Printf "%s/comments/%d/reactions" $.RepoLink .ID)}}
-																	{{template "repo/issue/view_content/context_menu" Dict "ctxData" $ "item" . "delete" true "issue" true "diff" true "IsCommentPoster" (and $.IsSigned (eq $.SignedUserID .PosterID))}}
+																	{{template "repo/issue/view_content/add_reaction" dict "ctxData" $ "ActionURL" (Printf "%s/comments/%d/reactions" $.RepoLink .ID)}}
+																	{{template "repo/issue/view_content/context_menu" dict "ctxData" $ "item" . "delete" true "issue" true "diff" true "IsCommentPoster" (and $.IsSigned (eq $.SignedUserID .PosterID))}}
 																{{end}}
 															
 
@@ -582,7 +582,7 @@
 														{{$reactions := .Reactions.GroupByType}}
 														{{if $reactions}}
 															
-																{{template "repo/issue/view_content/reactions" Dict "ctxData" $ "ActionURL" (Printf "%s/comments/%d/reactions" $.RepoLink .ID) "Reactions" $reactions}}
+																{{template "repo/issue/view_content/reactions" dict "ctxData" $ "ActionURL" (Printf "%s/comments/%d/reactions" $.RepoLink .ID) "Reactions" $reactions}}
 															
 														{{end}}
 													
@@ -626,7 +626,7 @@
 		{{else if eq .Type 23}}
 			
 				{{svg "octicon-lock"}}
-				{{template "shared/user/avatarlink" Dict "Context" $.Context "user" .Poster}}
+				{{template "shared/user/avatarlink" dict "Context" $.Context "user" .Poster}}
 				{{if .Content}}
 					
 						{{template "shared/user/authorlink" .Poster}}
@@ -642,7 +642,7 @@
 		{{else if eq .Type 24}}
 			
 				{{svg "octicon-key"}}
-				{{template "shared/user/avatarlink" Dict "Context" $.Context "user" .Poster}}
+				{{template "shared/user/avatarlink" dict "Context" $.Context "user" .Poster}}
 				
 					{{template "shared/user/authorlink" .Poster}}
 					{{$.locale.Tr "repo.issues.unlock_comment" $createdStr | Safe}}
@@ -651,7 +651,7 @@
 		{{else if eq .Type 25}}
 			
 				{{svg "octicon-git-branch"}}
-				{{template "shared/user/avatarlink" Dict "Context" $.Context "user" .Poster}}
+				{{template "shared/user/avatarlink" dict "Context" $.Context "user" .Poster}}
 				
 					{{.Poster.Name}}
 					{{$.locale.Tr "repo.pulls.change_target_branch_at" (.OldRef|Escape) (.NewRef|Escape) $createdStr | Safe}}
@@ -660,7 +660,7 @@
 		{{else if eq .Type 26}}
 			
 				{{svg "octicon-clock"}}
-				{{template "shared/user/avatarlink" Dict "Context" $.Context "user" .Poster}}
+				{{template "shared/user/avatarlink" dict "Context" $.Context "user" .Poster}}
 				
 					{{template "shared/user/authorlink" .Poster}}
 
@@ -674,7 +674,7 @@
 		{{else if eq .Type 27}}
 			
 				{{svg "octicon-eye"}}
-				{{template "shared/user/avatarlink" Dict "Context" $.Context "user" .Poster}}
+				{{template "shared/user/avatarlink" dict "Context" $.Context "user" .Poster}}
 				
 					{{template "shared/user/authorlink" .Poster}}
 					{{if (gt .AssigneeID 0)}}
@@ -724,7 +724,7 @@
 			{{if not $.UnitProjectsGlobalDisabled}}
 			
 				{{svg "octicon-project"}}
-				{{template "shared/user/avatarlink" Dict "Context" $.Context "user" .Poster}}
+				{{template "shared/user/avatarlink" dict "Context" $.Context "user" .Poster}}
 				
 					{{template "shared/user/authorlink" .Poster}}
 					{{if gt .OldProjectID 0}}
@@ -781,7 +781,7 @@
 		{{else if eq .Type 33}}
 			
 				{{svg "octicon-git-branch"}}
-				{{template "shared/user/avatarlink" Dict "Context" $.Context "user" .Poster}}
+				{{template "shared/user/avatarlink" dict "Context" $.Context "user" .Poster}}
 				
 					{{template "shared/user/authorlink" .Poster}}
 					{{if and .OldRef .NewRef}}
diff --git a/templates/repo/issue/view_content/reactions.tmpl b/templates/repo/issue/view_content/reactions.tmpl
index b36fd4272f..3c957d91c7 100644
--- a/templates/repo/issue/view_content/reactions.tmpl
+++ b/templates/repo/issue/view_content/reactions.tmpl
@@ -5,5 +5,5 @@
 	
 {{end}}
 {{if AllowedReactions}}
-	{{template "repo/issue/view_content/add_reaction" Dict "ctxData" $.ctxData "ActionURL" .ActionURL}}
+	{{template "repo/issue/view_content/add_reaction" dict "ctxData" $.ctxData "ActionURL" .ActionURL}}
 {{end}}
diff --git a/templates/user/dashboard/issues.tmpl b/templates/user/dashboard/issues.tmpl
index 88ab1f9b73..6b9bfe4eba 100644
--- a/templates/user/dashboard/issues.tmpl
+++ b/templates/user/dashboard/issues.tmpl
@@ -112,7 +112,7 @@
 						{{end}}
 					
 				 
-				{{template "shared/issuelist" mergeinto . "listType" "dashboard"}}
+				{{template "shared/issuelist" dict "." . "listType" "dashboard"}}
 			 
 		 
 	 
diff --git a/templates/user/notification/notification_subscriptions.tmpl b/templates/user/notification/notification_subscriptions.tmpl
index 5aff7ef9d6..26a33bf9ba 100644
--- a/templates/user/notification/notification_subscriptions.tmpl
+++ b/templates/user/notification/notification_subscriptions.tmpl
@@ -66,7 +66,7 @@
 					
 					{{.locale.Tr "notification.no_subscriptions"}}
 				{{else}}
-					{{template "shared/issuelist" mergeinto . "listType" "dashboard"}}
+					{{template "shared/issuelist" dict "." . "listType" "dashboard"}}
 				{{end}}
 			{{else}}
 				{{template "explore/repo_search" .}}