new repo git hooks UI
This commit is contained in:
parent
2f2bf20aae
commit
1cb03135b7
@ -446,9 +446,9 @@ func runWeb(ctx *cli.Context) {
|
|||||||
m.Post("/hooks/slack/:id", bindIgnErr(auth.NewSlackHookForm{}), repo.SlackHooksEditPost)
|
m.Post("/hooks/slack/:id", bindIgnErr(auth.NewSlackHookForm{}), repo.SlackHooksEditPost)
|
||||||
|
|
||||||
m.Group("/hooks/git", func() {
|
m.Group("/hooks/git", func() {
|
||||||
m.Get("", repo.GitHooks)
|
m.Get("", repo.SettingsGitHooks)
|
||||||
m.Get("/:name", repo.GitHooksEdit)
|
m.Combo("/:name").Get(repo.SettingsGitHooksEdit).
|
||||||
m.Post("/:name", repo.GitHooksEditPost)
|
Post(repo.SettingsGitHooksEditPost)
|
||||||
}, middleware.GitHookService())
|
}, middleware.GitHookService())
|
||||||
|
|
||||||
m.Group("/keys", func() {
|
m.Group("/keys", func() {
|
||||||
|
@ -10,6 +10,8 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
"path"
|
"path"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
"github.com/Unknwon/com"
|
||||||
)
|
)
|
||||||
|
|
||||||
// hookNames is a list of Git hooks' name that are supported.
|
// hookNames is a list of Git hooks' name that are supported.
|
||||||
@ -81,7 +83,10 @@ func (h *Hook) Name() string {
|
|||||||
// Update updates hook settings.
|
// Update updates hook settings.
|
||||||
func (h *Hook) Update() error {
|
func (h *Hook) Update() error {
|
||||||
if len(strings.TrimSpace(h.Content)) == 0 {
|
if len(strings.TrimSpace(h.Content)) == 0 {
|
||||||
return os.Remove(h.path)
|
if com.IsExist(h.path) {
|
||||||
|
return os.Remove(h.path)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
return ioutil.WriteFile(h.path, []byte(strings.Replace(h.Content, "\r", "", -1)), os.ModePerm)
|
return ioutil.WriteFile(h.path, []byte(strings.Replace(h.Content, "\r", "", -1)), os.ModePerm)
|
||||||
}
|
}
|
||||||
|
2
public/css/gogs.min.css
vendored
2
public/css/gogs.min.css
vendored
File diff suppressed because one or more lines are too long
@ -86,8 +86,14 @@ img {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
&.green {
|
||||||
|
color: #6cc644!important;
|
||||||
|
}
|
||||||
|
&.left {
|
||||||
|
text-align: left!important;
|
||||||
|
}
|
||||||
&.right {
|
&.right {
|
||||||
text-align: right;
|
text-align: right!important;
|
||||||
}
|
}
|
||||||
&.small {
|
&.small {
|
||||||
font-size: 0.75em;
|
font-size: 0.75em;
|
||||||
|
@ -16,6 +16,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.repository {
|
.repository {
|
||||||
&.new.migrate,
|
&.new.migrate,
|
||||||
&.new.fork {
|
&.new.fork {
|
||||||
@ -57,4 +58,25 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
.repository.edit.hook {
|
||||||
|
form {
|
||||||
|
@input-padding: 25%!important;
|
||||||
|
.inline.field > label {
|
||||||
|
text-align: right;
|
||||||
|
width: @input-padding;
|
||||||
|
word-wrap: break-word;
|
||||||
|
}
|
||||||
|
input,
|
||||||
|
textarea {
|
||||||
|
width: 50%!important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.repository.edit.hook {
|
||||||
|
form {
|
||||||
|
textarea {
|
||||||
|
width: 70%!important;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
@ -623,6 +623,17 @@
|
|||||||
color: #666;
|
color: #666;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.hook.list {
|
||||||
|
.item:not(:first-child) {
|
||||||
|
border-top: 1px solid #eaeaea;
|
||||||
|
}
|
||||||
|
.item {
|
||||||
|
padding: 10px 20px;
|
||||||
|
i {
|
||||||
|
margin-right: 5px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.ui.vertical.menu {
|
.ui.vertical.menu {
|
||||||
|
@ -608,7 +608,7 @@ func TriggerHook(ctx *middleware.Context) {
|
|||||||
models.HookQueue.AddRepoID(repo.ID)
|
models.HookQueue.AddRepoID(repo.ID)
|
||||||
}
|
}
|
||||||
|
|
||||||
func GitHooks(ctx *middleware.Context) {
|
func SettingsGitHooks(ctx *middleware.Context) {
|
||||||
ctx.Data["Title"] = ctx.Tr("repo.settings")
|
ctx.Data["Title"] = ctx.Tr("repo.settings")
|
||||||
ctx.Data["PageIsSettingsGitHooks"] = true
|
ctx.Data["PageIsSettingsGitHooks"] = true
|
||||||
|
|
||||||
@ -622,7 +622,7 @@ func GitHooks(ctx *middleware.Context) {
|
|||||||
ctx.HTML(200, GITHOOKS)
|
ctx.HTML(200, GITHOOKS)
|
||||||
}
|
}
|
||||||
|
|
||||||
func GitHooksEdit(ctx *middleware.Context) {
|
func SettingsGitHooksEdit(ctx *middleware.Context) {
|
||||||
ctx.Data["Title"] = ctx.Tr("repo.settings")
|
ctx.Data["Title"] = ctx.Tr("repo.settings")
|
||||||
ctx.Data["PageIsSettingsGitHooks"] = true
|
ctx.Data["PageIsSettingsGitHooks"] = true
|
||||||
|
|
||||||
@ -640,7 +640,7 @@ func GitHooksEdit(ctx *middleware.Context) {
|
|||||||
ctx.HTML(200, GITHOOK_EDIT)
|
ctx.HTML(200, GITHOOK_EDIT)
|
||||||
}
|
}
|
||||||
|
|
||||||
func GitHooksEditPost(ctx *middleware.Context) {
|
func SettingsGitHooksEditPost(ctx *middleware.Context) {
|
||||||
name := ctx.Params(":name")
|
name := ctx.Params(":name")
|
||||||
hook, err := ctx.Repo.GitRepo.GetHook(name)
|
hook, err := ctx.Repo.GitRepo.GetHook(name)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -1,41 +1,37 @@
|
|||||||
{{template "ng/base/head" .}}
|
{{template "base/head" .}}
|
||||||
{{template "ng/base/header" .}}
|
<div class="repository settings edit hook">
|
||||||
<div id="repo-wrapper">
|
{{template "repo/header" .}}
|
||||||
{{template "repo/header_old" .}}
|
<div class="ui container">
|
||||||
<div id="setting-wrapper" class="main-wrapper">
|
<div class="ui grid">
|
||||||
<div id="repo-setting" class="container clear">
|
{{template "repo/settings/navbar" .}}
|
||||||
{{template "repo/settings/nav" .}}
|
<div class="twelve wide column content">
|
||||||
<div class="grid-4-5 left">
|
{{template "base/alert" .}}
|
||||||
<div class="setting-content">
|
<h4 class="ui top attached header">
|
||||||
{{template "ng/base/alert" .}}
|
{{.i18n.Tr "repo.settings.githooks"}}
|
||||||
<div id="setting-content">
|
</h4>
|
||||||
<div id="repo-hooks-panel" class="panel panel-radius">
|
<div class="ui attached segment">
|
||||||
<div class="panel-header">
|
<p class="center">{{.i18n.Tr "repo.settings.githook_edit_desc"}}</p>
|
||||||
<strong>{{.i18n.Tr "repo.settings.githooks"}}</strong>
|
<form class="ui form" action="{{.Link}}" method="post">
|
||||||
</div>
|
{{.CsrfTokenHtml}}
|
||||||
<form class="form form-align panel-body" id="repo-setting-form" action="{{.RepoLink}}/settings/hooks/git/{{.Hook.Name}}" method="post">
|
{{with .Hook}}
|
||||||
{{.CsrfTokenHtml}}
|
<div class="inline field">
|
||||||
<div class="text-center panel-desc">{{.i18n.Tr "repo.settings.githook_edit_desc"}}</div>
|
<label>{{$.i18n.Tr "repo.settings.githook_name"}}</label>
|
||||||
{{with .Hook}}
|
<label class="text left">{{.Name}}</label>
|
||||||
<div class="field">
|
</div>
|
||||||
<label>{{$.i18n.Tr "repo.settings.githook_name"}}</label>
|
<div class="inline field">
|
||||||
<label class="text-left">{{.Name}}</label>
|
<label for="content">{{$.i18n.Tr "repo.settings.githook_content"}}</label>
|
||||||
</div>
|
<textarea id="content" name="content" rows="20" wrap="off">{{if .IsActive}}{{.Content}}{{else}}{{.Sample}}{{end}}</textarea>
|
||||||
<div class="field clear">
|
</div>
|
||||||
<label class="left" for="content">{{$.i18n.Tr "repo.settings.githook_content"}}</label>
|
|
||||||
<textarea class="ipt-textarea ipt-large ipt-radius" id="content" name="content" cols="60" rows="20" wrap="off">{{if .IsActive}}{{.Content}}{{else}}{{.Sample}}{{end}}</textarea>
|
<div class="inline field">
|
||||||
</div>
|
<label></label>
|
||||||
<div class="field">
|
<button class="ui green button" id="change-reponame-btn" href="#change-reponame-modal">{{$.i18n.Tr "repo.settings.update_githook"}}</button>
|
||||||
<span class="form-label"></span>
|
</div>
|
||||||
<button class="btn btn-green btn-large btn-radius" id="change-reponame-btn" href="#change-reponame-modal">{{$.i18n.Tr "repo.settings.update_githook"}}</button>
|
{{end}}
|
||||||
</div>
|
</form>
|
||||||
{{end}}
|
</div>
|
||||||
</form>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{template "ng/base/footer" .}}
|
{{template "base/footer" .}}
|
@ -1,37 +1,34 @@
|
|||||||
{{template "ng/base/head" .}}
|
{{template "base/head" .}}
|
||||||
{{template "ng/base/header" .}}
|
<div class="repository settings hooks">
|
||||||
<div id="repo-wrapper">
|
{{template "repo/header" .}}
|
||||||
{{template "repo/header_old" .}}
|
<div class="ui container">
|
||||||
<div id="setting-wrapper" class="main-wrapper">
|
<div class="ui grid">
|
||||||
<div id="repo-setting" class="container clear">
|
{{template "repo/settings/navbar" .}}
|
||||||
{{template "repo/settings/nav" .}}
|
<div class="twelve wide column content">
|
||||||
<div class="grid-4-5 left">
|
{{template "base/alert" .}}
|
||||||
<div class="setting-content">
|
<h4 class="ui top attached header">
|
||||||
{{template "ng/base/alert" .}}
|
{{.i18n.Tr "repo.settings.githooks"}}
|
||||||
<div id="setting-content">
|
</h4>
|
||||||
<div id="repo-hooks-panel" class="panel panel-radius">
|
<div class="ui attached table segment">
|
||||||
<div class="panel-header">
|
<div class="ui hook list">
|
||||||
<strong>{{.i18n.Tr "repo.settings.githooks"}}</strong>
|
<div class="item">
|
||||||
</div>
|
{{.i18n.Tr "repo.settings.githooks_desc" | Str2html}}
|
||||||
<ul class="panel-body setting-list">
|
</div>
|
||||||
<li>{{.i18n.Tr "repo.settings.githooks_desc" | Str2html}}</li>
|
{{range .Hooks}}
|
||||||
{{range .Hooks}}
|
<div class="item">
|
||||||
<li>
|
{{if .IsActive}}
|
||||||
{{if .IsActive}}
|
<span class="text success"><i class="octicon octicon-check"></i></span>
|
||||||
<span class="left text-success"><i class="octicon octicon-check"></i></span>
|
{{else}}
|
||||||
{{else}}
|
<span class="text grey"><i class="octicon octicon-primitive-dot"></i></span>
|
||||||
<span class="left text-grey"><i class="octicon octicon-primitive-dot"></i></span>
|
{{end}}
|
||||||
{{end}}
|
<span>{{.Name}}</span>
|
||||||
<span>{{.Name}}</span>
|
<a href="{{$.RepoLink}}/settings/hooks/git/{{.Name}}" class="text blue ui right"><i class="fa fa-pencil"></i></a>
|
||||||
<a href="{{$.RepoLink}}/settings/hooks/git/{{.Name}}" class="text-blue right"><i class="fa fa-pencil"></i></a>
|
</div>
|
||||||
</li>
|
{{end}}
|
||||||
{{end}}
|
</div>
|
||||||
</ul>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{template "ng/base/footer" .}}
|
{{template "base/footer" .}}
|
Loading…
Reference in New Issue
Block a user