mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 16:40:24 +08:00 
			
		
		
		
	modules/base: add RenderCommitMessage with XSS-safe and special links
- update russian locale
This commit is contained in:
		@@ -7,7 +7,7 @@ Gogs(Go Git Service) is a painless self-hosted Git Service written in Go.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||

 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
##### Current version: 0.5.11 Beta
 | 
					##### Current version: 0.5.12 Beta
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### NOTICES
 | 
					### NOTICES
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,7 +5,7 @@ Gogs(Go Git Service) 是一个基于 Go 语言的自助 Git 服务。
 | 
				
			|||||||
 | 
					
 | 
				
			||||||

 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
##### 当前版本:0.5.11 Beta
 | 
					##### 当前版本:0.5.12 Beta
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## 开发目的
 | 
					## 开发目的
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -164,7 +164,7 @@ unable_verify_ssh_key=Gogs не может проверить ваш SSH-клю
 | 
				
			|||||||
auth_failed=Ошибка аутентификации: %v
 | 
					auth_failed=Ошибка аутентификации: %v
 | 
				
			||||||
 | 
					
 | 
				
			||||||
still_own_repo=На вашем аккаунте все еще остается как минимум один репозиторий, сначала вам нужно удалить или передать его.
 | 
					still_own_repo=На вашем аккаунте все еще остается как минимум один репозиторий, сначала вам нужно удалить или передать его.
 | 
				
			||||||
still_has_org=Your account still have membership of organization, you have to left or delete them first.
 | 
					still_has_org=Вы находитесь в организации, сперва Вам необходимо покинуть ее или удалить.
 | 
				
			||||||
org_still_own_repo=Данная организация все еще является владельцем репозиториев, необходимо удалить или переместить их в начале.
 | 
					org_still_own_repo=Данная организация все еще является владельцем репозиториев, необходимо удалить или переместить их в начале.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
still_own_user=Эта проверка подлинности по-прежнему используется некоторыми пользователями, вы должны переместить их и затем снова удалить.
 | 
					still_own_user=Эта проверка подлинности по-прежнему используется некоторыми пользователями, вы должны переместить их и затем снова удалить.
 | 
				
			||||||
@@ -631,22 +631,22 @@ config.db_path_helper=(for "sqlite3" only)
 | 
				
			|||||||
config.service_config=Service Configuration
 | 
					config.service_config=Service Configuration
 | 
				
			||||||
config.register_email_confirm=Require E-mail Confirmation
 | 
					config.register_email_confirm=Require E-mail Confirmation
 | 
				
			||||||
config.disable_register=Отключить регистрацию
 | 
					config.disable_register=Отключить регистрацию
 | 
				
			||||||
config.require_sign_in_view=Require Sign In View
 | 
					config.require_sign_in_view=Для просмотра необходима авторизация
 | 
				
			||||||
config.mail_notify=Mail Notification
 | 
					config.mail_notify=Почтовые уведомления
 | 
				
			||||||
config.enable_cache_avatar=Enable Cache Avatar
 | 
					config.enable_cache_avatar=Кешировать аватар
 | 
				
			||||||
config.active_code_lives=Active Code Lives
 | 
					config.active_code_lives=Active Code Lives
 | 
				
			||||||
config.reset_password_code_lives=Reset Password Code Lives
 | 
					config.reset_password_code_lives=Reset Password Code Lives
 | 
				
			||||||
config.webhook_config=Настройка автоматического обновления репозиции
 | 
					config.webhook_config=Настройка автоматического обновления репозиции
 | 
				
			||||||
config.task_interval=Task Interval
 | 
					config.task_interval=Интервал задания
 | 
				
			||||||
config.deliver_timeout=Deliver Timeout
 | 
					config.deliver_timeout=Задержка доставки
 | 
				
			||||||
config.mailer_config=Mailer Configuration
 | 
					config.mailer_config=Настройки почты
 | 
				
			||||||
config.mailer_enabled=Включено
 | 
					config.mailer_enabled=Включено
 | 
				
			||||||
config.mailer_name=Имя
 | 
					config.mailer_name=Имя
 | 
				
			||||||
config.mailer_host=Сервер
 | 
					config.mailer_host=Сервер
 | 
				
			||||||
config.mailer_user=Пользователь
 | 
					config.mailer_user=Пользователь
 | 
				
			||||||
config.oauth_config=Конфигурация OAuth
 | 
					config.oauth_config=Конфигурация OAuth
 | 
				
			||||||
config.oauth_enabled=Включено
 | 
					config.oauth_enabled=Включено
 | 
				
			||||||
config.cache_config=Cache Configuration
 | 
					config.cache_config=Настройки кеша
 | 
				
			||||||
config.cache_adapter=Cache Adapter
 | 
					config.cache_adapter=Cache Adapter
 | 
				
			||||||
config.cache_interval=Cache Interval
 | 
					config.cache_interval=Cache Interval
 | 
				
			||||||
config.cache_conn=Cache Connection
 | 
					config.cache_conn=Cache Connection
 | 
				
			||||||
@@ -674,7 +674,7 @@ monitor.execute_times=Execute Times
 | 
				
			|||||||
monitor.process=Запущенные процессы
 | 
					monitor.process=Запущенные процессы
 | 
				
			||||||
monitor.desc=Описание
 | 
					monitor.desc=Описание
 | 
				
			||||||
monitor.start=Start Time
 | 
					monitor.start=Start Time
 | 
				
			||||||
monitor.execute_time=Execution Time
 | 
					monitor.execute_time=Время выполнения
 | 
				
			||||||
 | 
					
 | 
				
			||||||
notices.system_notice_list=Система уведомлений
 | 
					notices.system_notice_list=Система уведомлений
 | 
				
			||||||
notices.type=Тип
 | 
					notices.type=Тип
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										2
									
								
								gogs.go
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								gogs.go
									
									
									
									
									
								
							@@ -17,7 +17,7 @@ import (
 | 
				
			|||||||
	"github.com/gogits/gogs/modules/setting"
 | 
						"github.com/gogits/gogs/modules/setting"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const APP_VER = "0.5.12.0120 Beta"
 | 
					const APP_VER = "0.5.12.0130 Beta"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func init() {
 | 
					func init() {
 | 
				
			||||||
	runtime.GOMAXPROCS(runtime.NumCPU())
 | 
						runtime.GOMAXPROCS(runtime.NumCPU())
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -103,7 +103,7 @@ var (
 | 
				
			|||||||
	MentionPattern     = regexp.MustCompile(`@[0-9a-zA-Z_]{1,}`)
 | 
						MentionPattern     = regexp.MustCompile(`@[0-9a-zA-Z_]{1,}`)
 | 
				
			||||||
	commitPattern      = regexp.MustCompile(`(\s|^)https?.*commit/[0-9a-zA-Z]+(#+[0-9a-zA-Z-]*)?`)
 | 
						commitPattern      = regexp.MustCompile(`(\s|^)https?.*commit/[0-9a-zA-Z]+(#+[0-9a-zA-Z-]*)?`)
 | 
				
			||||||
	issueFullPattern   = regexp.MustCompile(`(\s|^)https?.*issues/[0-9]+(#+[0-9a-zA-Z-]*)?`)
 | 
						issueFullPattern   = regexp.MustCompile(`(\s|^)https?.*issues/[0-9]+(#+[0-9a-zA-Z-]*)?`)
 | 
				
			||||||
	issueIndexPattern  = regexp.MustCompile(`#[0-9]+`)
 | 
						issueIndexPattern  = regexp.MustCompile(`( |^)#[0-9]+`)
 | 
				
			||||||
	sha1CurrentPattern = regexp.MustCompile(`\b[0-9a-f]{40}\b`)
 | 
						sha1CurrentPattern = regexp.MustCompile(`\b[0-9a-f]{40}\b`)
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -90,6 +90,11 @@ func ToUtf8(content string) string {
 | 
				
			|||||||
	return res
 | 
						return res
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// RenderCommitMessage renders commit message with XSS-safe and special links.
 | 
				
			||||||
 | 
					func RenderCommitMessage(msg, urlPrefix string) template.HTML {
 | 
				
			||||||
 | 
						return template.HTML(string(RenderIssueIndexPattern([]byte(template.HTMLEscapeString(msg)), urlPrefix)))
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var mailDomains = map[string]string{
 | 
					var mailDomains = map[string]string{
 | 
				
			||||||
	"gmail.com": "gmail.com",
 | 
						"gmail.com": "gmail.com",
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -163,6 +168,7 @@ var TemplateFuncs template.FuncMap = map[string]interface{}{
 | 
				
			|||||||
	"EscapePound": func(str string) string {
 | 
						"EscapePound": func(str string) string {
 | 
				
			||||||
		return strings.Replace(str, "#", "%23", -1)
 | 
							return strings.Replace(str, "#", "%23", -1)
 | 
				
			||||||
	},
 | 
						},
 | 
				
			||||||
 | 
						"RenderCommitMessage": RenderCommitMessage,
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type Actioner interface {
 | 
					type Actioner interface {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -37,7 +37,7 @@ func RenderIssueLinks(oldCommits *list.List, repoLink string) *list.List {
 | 
				
			|||||||
	newCommits := list.New()
 | 
						newCommits := list.New()
 | 
				
			||||||
	for e := oldCommits.Front(); e != nil; e = e.Next() {
 | 
						for e := oldCommits.Front(); e != nil; e = e.Next() {
 | 
				
			||||||
		c := e.Value.(*git.Commit)
 | 
							c := e.Value.(*git.Commit)
 | 
				
			||||||
		c.CommitMessage = string(base.RenderIssueIndexPattern([]byte(c.CommitMessage), repoLink))
 | 
							c.CommitMessage = c.CommitMessage
 | 
				
			||||||
		newCommits.PushBack(c)
 | 
							newCommits.PushBack(c)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return newCommits
 | 
						return newCommits
 | 
				
			||||||
@@ -206,7 +206,7 @@ func Diff(ctx *middleware.Context) {
 | 
				
			|||||||
	commitId := ctx.Repo.CommitId
 | 
						commitId := ctx.Repo.CommitId
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	commit := ctx.Repo.Commit
 | 
						commit := ctx.Repo.Commit
 | 
				
			||||||
	commit.CommitMessage = string(base.RenderIssueIndexPattern([]byte(commit.CommitMessage), ctx.Repo.RepoLink))
 | 
						commit.CommitMessage = commit.CommitMessage
 | 
				
			||||||
	diff, err := models.GetDiffCommit(models.RepoPath(userName, repoName),
 | 
						diff, err := models.GetDiffCommit(models.RepoPath(userName, repoName),
 | 
				
			||||||
		commitId, setting.Git.MaxGitDiffLines)
 | 
							commitId, setting.Git.MaxGitDiffLines)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -156,9 +156,9 @@ func Home(ctx *middleware.Context) {
 | 
				
			|||||||
		for _, f := range files {
 | 
							for _, f := range files {
 | 
				
			||||||
			switch c := f[1].(type) {
 | 
								switch c := f[1].(type) {
 | 
				
			||||||
			case *git.Commit:
 | 
								case *git.Commit:
 | 
				
			||||||
				c.CommitMessage = string(base.RenderIssueIndexPattern([]byte(c.CommitMessage), ctx.Repo.RepoLink))
 | 
									c.CommitMessage = c.CommitMessage
 | 
				
			||||||
			case *git.SubModuleFile:
 | 
								case *git.SubModuleFile:
 | 
				
			||||||
				c.CommitMessage = string(base.RenderIssueIndexPattern([]byte(c.CommitMessage), ctx.Repo.RepoLink))
 | 
									c.CommitMessage = c.CommitMessage
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		ctx.Data["Files"] = files
 | 
							ctx.Data["Files"] = files
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1 +1 @@
 | 
				
			|||||||
0.5.12.0120 Beta
 | 
					0.5.12.0130 Beta
 | 
				
			||||||
@@ -32,7 +32,7 @@
 | 
				
			|||||||
                    {{end}}
 | 
					                    {{end}}
 | 
				
			||||||
                </td>
 | 
					                </td>
 | 
				
			||||||
                <td class="sha"><a rel="nofollow" class="label label-green" href="{{AppSubUrl}}/{{$username}}/{{$reponame}}/commit/{{.Id}} ">{{SubStr .Id.String 0 10}} </a></td>
 | 
					                <td class="sha"><a rel="nofollow" class="label label-green" href="{{AppSubUrl}}/{{$username}}/{{$reponame}}/commit/{{.Id}} ">{{SubStr .Id.String 0 10}} </a></td>
 | 
				
			||||||
                <td class="message"><span class="text-truncate">{{Str2html .Summary}}</span></td>
 | 
					                <td class="message"><span class="text-truncate">{{RenderCommitMessage .Summary $.RepoLink}}</span></td>
 | 
				
			||||||
                <td class="date">{{TimeSince .Author.When $.Lang}}</td>
 | 
					                <td class="date">{{TimeSince .Author.When $.Lang}}</td>
 | 
				
			||||||
            </tr>
 | 
					            </tr>
 | 
				
			||||||
            {{end}}
 | 
					            {{end}}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -17,7 +17,7 @@
 | 
				
			|||||||
        <div class="panel panel-info panel-radius diff-head-box">
 | 
					        <div class="panel panel-info panel-radius diff-head-box">
 | 
				
			||||||
            <div class="panel-header">
 | 
					            <div class="panel-header">
 | 
				
			||||||
                <a class="pull-right btn btn-blue btn-header btn-medium btn-radius" rel="nofollow" href="{{.SourcePath}}">{{.i18n.Tr "repo.diff.browse_source"}}</a>
 | 
					                <a class="pull-right btn btn-blue btn-header btn-medium btn-radius" rel="nofollow" href="{{.SourcePath}}">{{.i18n.Tr "repo.diff.browse_source"}}</a>
 | 
				
			||||||
                <h4 class="commit-message">{{Str2html .Commit.Message}}</h4>
 | 
					                <h4 class="commit-message">{{RenderCommitMessage .Commit.Message $.RepoLink}}</h4>
 | 
				
			||||||
            </div>
 | 
					            </div>
 | 
				
			||||||
            <div class="panel-body">
 | 
					            <div class="panel-body">
 | 
				
			||||||
                <span class="pull-right">
 | 
					                <span class="pull-right">
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -53,7 +53,7 @@
 | 
				
			|||||||
                  <a rel="nofollow" class="label label-green" href="{{AppSubUrl}}/{{$.Username}}/{{$.Reponame}}/commit/{{$commit.Id}} ">{{SubStr $commit.Id.String 0 10}} </a>
 | 
					                  <a rel="nofollow" class="label label-green" href="{{AppSubUrl}}/{{$.Username}}/{{$.Reponame}}/commit/{{$commit.Id}} ">{{SubStr $commit.Id.String 0 10}} </a>
 | 
				
			||||||
                </td>
 | 
					                </td>
 | 
				
			||||||
                <td class="message">
 | 
					                <td class="message">
 | 
				
			||||||
                  <span class="text-truncate">{{Str2html $commit.Summary}}</span>
 | 
					                  <span class="text-truncate">{{RenderCommitMessage $commit.Summary $.RepoLink}}</span>
 | 
				
			||||||
                </td>
 | 
					                </td>
 | 
				
			||||||
                <td class="age">{{TimeSince $commit.Committer.When $.Lang}}</td>
 | 
					                <td class="age">{{TimeSince $commit.Committer.When $.Lang}}</td>
 | 
				
			||||||
            </tr>
 | 
					            </tr>
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user