add webhooks page ui

This commit is contained in:
FuXiaoHei 2014-05-02 22:07:34 +08:00
parent 8bbaf9550a
commit 3e856928a2
6 changed files with 148 additions and 14 deletions

View File

@ -152,6 +152,8 @@ func runWeb(*cli.Context) {
r.Post("/settings", repo.SettingPost) r.Post("/settings", repo.SettingPost)
r.Get("/settings/collaboration", repo.Collaboration) r.Get("/settings/collaboration", repo.Collaboration)
r.Post("/settings/collaboration", repo.CollaborationPost) r.Post("/settings/collaboration", repo.CollaborationPost)
r.Get("/settings/hooks", repo.WebHooks)
r.Get("/settings/hooks/add",repo.WebHooksAdd)
r.Get("/action/:action", repo.Action) r.Get("/action/:action", repo.Action)
r.Get("/issues/new", repo.CreateIssue) r.Get("/issues/new", repo.CreateIssue)
r.Post("/issues/new", bindIgnErr(auth.CreateIssueForm{}), repo.CreateIssuePost) r.Post("/issues/new", bindIgnErr(auth.CreateIssueForm{}), repo.CreateIssuePost)

View File

@ -467,7 +467,7 @@ html, body {
color: #444; color: #444;
} }
#repo-collab-list .remove-collab{ #repo-collab-list .remove-collab, #repo-hooks-list .remove-hook {
color: #DD4B39; color: #DD4B39;
} }
@ -500,6 +500,22 @@ html, body {
margin-bottom: 0; margin-bottom: 0;
} }
#repo-hooks-list li {
line-height: 40px;
border-top: 1px solid #DDD;
height: 40px;
}
#repo-hooks-list .link {
display: inline-block;
max-width: 360px;
overflow: hidden;
text-overflow: ellipsis;
height: 40px;
line-height: 40px;
white-space: nowrap;
}
/* gogits user ssh keys */ /* gogits user ssh keys */
#ssh-keys .list-group-item { #ssh-keys .list-group-item {

View File

@ -204,3 +204,25 @@ func CollaborationPost(ctx *middleware.Context) {
ctx.Flash.Success("New collaborator has been added.") ctx.Flash.Success("New collaborator has been added.")
ctx.Redirect(ctx.Req.RequestURI) ctx.Redirect(ctx.Req.RequestURI)
} }
func WebHooks(ctx *middleware.Context) {
if !ctx.Repo.IsOwner {
ctx.Handle(404, "repo.WebHooks", nil)
return
}
ctx.Data["IsRepoToolbarWebHooks"] = true
ctx.Data["Title"] = strings.TrimPrefix(ctx.Repo.RepoLink, "/") + " - Web Hooks"
ctx.HTML(200, "repo/hooks")
}
func WebHooksAdd(ctx *middleware.Context) {
if !ctx.Repo.IsOwner {
ctx.Handle(404, "repo.WebHooksAdd", nil)
return
}
ctx.Data["IsRepoToolbarWebHooks"] = true
ctx.Data["Title"] = strings.TrimPrefix(ctx.Repo.RepoLink, "/") + " - Add Web Hook"
ctx.HTML(200, "repo/hooks_add")
}

37
templates/repo/hooks.tmpl Normal file
View File

@ -0,0 +1,37 @@
{{template "base/head" .}}
{{template "base/navbar" .}}
{{template "repo/nav" .}}
{{template "repo/toolbar" .}}
<div id="body" class="container">
{{template "repo/setting_nav" .}}
<div id="repo-setting-container" class="col-md-10">
{{template "base/alert" .}}
<div class="panel panel-default">
<div class="panel-heading">
Webhooks
</div>
<div class="panel-body">
<p>Webhooks allow external services to be notified when certain events happen on GitHub. When the specified events happen, we'll send a POST request to each of the URLs you provide. Learn more in our Webhooks Guide.<br/>&nbsp;</p>
<ul id="repo-hooks-list" class="list-unstyled">
<li>
<span class="pull-left status text-success"><i class="fa fa-check"></i></span>
<a class="link" href="#">https://inbox-app.wercker.com/commits/11aea6e535af5eefc2a29bc25a23e89a</a>
<a href="{{$.RepoLink}}/settings/hooks?remove=" class="remove-hook pull-right"><i class="fa fa-times"></i></a>
<a href="{{$.RepoLink}}/settings/hooks/id" class="edit-hook pull-right"><i class="fa fa-pencil"></i></a>
</li>
<li>
<span class="pull-left status text-success"><i class="fa fa-check"></i></span>
<a class="link" href="#">https://inbox-app.wercker.com/commits/11aea6e535af5eefc2a29bc25a23e89a</a>
<a href="{{$.RepoLink}}/settings/hooks?remove=" class="remove-hook pull-right"><i class="fa fa-times"></i></a>
<a href="{{$.RepoLink}}/settings/hooks/id" class="edit-hook pull-right"><i class="fa fa-pencil"></i></a>
</li>
</ul>
</div>
<div class="panel-footer">
<a href="/{{.Owner.Name}}/{{.Repository.Name}}/settings/hooks/add"><button class="btn btn-primary">Add Webhook</button></a>
</div>
</div>
</div>
</div>
{{template "base/footer" .}}

View File

@ -0,0 +1,57 @@
{{template "base/head" .}}
{{template "base/navbar" .}}
{{template "repo/nav" .}}
{{template "repo/toolbar" .}}
<div id="body" class="container">
{{template "repo/setting_nav" .}}
<div id="repo-setting-container" class="col-md-10">
{{template "base/alert" .}}
<div class="panel panel-default">
<div class="panel-heading">
Add Webhook
</div>
<div class="panel-body">
<p>Well send a POST request to the URL below with details of any subscribed events.</p>
<hr/>
<form id="repo-hooks-add-form" action="/{{.Owner.Name}}/{{.Repository.Name}}/settings/hooks/add" method="post" class="col-md-7">
<div class="form-group">
<label for="payload-url">Payload URL</label>
<input id="payload-url" class="form-control" type="url" required="required" name="url"/>
</div>
<div class="form-group">
<label for="payload-version">Payload Version</label>
<select name="version" id="payload-version" class="form-control">
<option value="json">application/json</option>
</select>
</div>
<div class="form-group">
<label for="payload-secret">Secret</label>
<input id="payload-secret" class="form-control" type="text" required="required" name="secret"/>
</div>
<hr/>
<div class="form-group">
<label>Which events would you like to trigger this webhook?</label>
<div class="radio">
<label>
<input class="form-control" type="radio" value="push" name="trigger"/> Just the <i>push</i> event.
</label>
</div>
</div>
<hr/>
<div class="form-group">
<label>
<input type="checkbox" name="active" value="Active" checked/>&nbsp;&nbsp;
Active
</label>
<p class="help-block">We will deliver event details when this hook is triggered.</p>
</div>
</form>
</div>
<div class="panel-footer">
<a href="/{{.Owner.Name}}/{{.Repository.Name}}/settings/hooks"><button class="btn btn-primary">Webhooks List</button></a>
</div>
</div>
</div>
</div>
{{template "base/footer" .}}

View File

@ -2,6 +2,6 @@
<ul class="list-group"> <ul class="list-group">
<li class="list-group-item{{if .IsRepoToolbarSetting}} active{{end}}"><a href="/{{.Owner.Name}}/{{.Repository.Name}}/settings">Options</a></li> <li class="list-group-item{{if .IsRepoToolbarSetting}} active{{end}}"><a href="/{{.Owner.Name}}/{{.Repository.Name}}/settings">Options</a></li>
<li class="list-group-item{{if .IsRepoToolbarCollaboration}} active{{end}}"><a href="/{{.Owner.Name}}/{{.Repository.Name}}/settings/collaboration">Collaborators</a></li> <li class="list-group-item{{if .IsRepoToolbarCollaboration}} active{{end}}"><a href="/{{.Owner.Name}}/{{.Repository.Name}}/settings/collaboration">Collaborators</a></li>
<!--<li class="list-group-item"><a href="#">Notifications</a></li>--> <li class="list-group-item{{if .IsRepoToolbarWebHooks}} active{{end}}"><a href="/{{.Owner.Name}}/{{.Repository.Name}}/settings/hooks">Webhooks</a></li>
</ul> </ul>
</div> </div>