mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2024-12-21 12:44:49 -05:00
add webhooks page ui
This commit is contained in:
parent
8bbaf9550a
commit
3e856928a2
6 changed files with 148 additions and 14 deletions
|
@ -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)
|
||||||
|
|
|
@ -311,17 +311,17 @@ html, body {
|
||||||
border-radius: 2px;
|
border-radius: 2px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#user-name,#user-full-name {
|
#user-name, #user-full-name {
|
||||||
font-size: 1.6em;
|
font-size: 1.6em;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
#user-name{
|
#user-name {
|
||||||
margin-bottom: 20px;
|
margin-bottom: 20px;
|
||||||
margin-top: 10px;
|
margin-top: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#user-full-name{
|
#user-full-name {
|
||||||
margin-top: 20px;
|
margin-top: 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -446,7 +446,7 @@ html, body {
|
||||||
border-left: 4px solid #DD4B39;
|
border-left: 4px solid #DD4B39;
|
||||||
}
|
}
|
||||||
|
|
||||||
#repo-setting-container{
|
#repo-setting-container {
|
||||||
padding-right: 0;
|
padding-right: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -454,41 +454,41 @@ html, body {
|
||||||
line-height: 30px;
|
line-height: 30px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#repo-collab-list li.collab{
|
#repo-collab-list li.collab {
|
||||||
margin-bottom: .6em;
|
margin-bottom: .6em;
|
||||||
}
|
}
|
||||||
|
|
||||||
#repo-collab-list .avatar{
|
#repo-collab-list .avatar {
|
||||||
margin-right: 1em;
|
margin-right: 1em;
|
||||||
width: 40px;
|
width: 40px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#repo-collab-list a.member{
|
#repo-collab-list a.member {
|
||||||
color: #444;
|
color: #444;
|
||||||
}
|
}
|
||||||
|
|
||||||
#repo-collab-list .remove-collab{
|
#repo-collab-list .remove-collab, #repo-hooks-list .remove-hook {
|
||||||
color: #DD4B39;
|
color: #DD4B39;
|
||||||
}
|
}
|
||||||
|
|
||||||
#repo-collab-form .dropdown-menu{
|
#repo-collab-form .dropdown-menu {
|
||||||
margin-left: 15px;
|
margin-left: 15px;
|
||||||
margin-top: 4px;
|
margin-top: 4px;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#repo-collab-form .dropdown-menu li{
|
#repo-collab-form .dropdown-menu li {
|
||||||
padding: 0 1em;
|
padding: 0 1em;
|
||||||
line-height: 36px;
|
line-height: 36px;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
#repo-collab-form .dropdown-menu li:hover{
|
#repo-collab-form .dropdown-menu li:hover {
|
||||||
background-color: #e8f0ff;
|
background-color: #e8f0ff;
|
||||||
}
|
}
|
||||||
|
|
||||||
#repo-collab-form .dropdown-menu img{
|
#repo-collab-form .dropdown-menu img {
|
||||||
width: 28px;
|
width: 28px;
|
||||||
height: 28px;
|
height: 28px;
|
||||||
margin-right: 1em;
|
margin-right: 1em;
|
||||||
|
@ -496,10 +496,26 @@ html, body {
|
||||||
margin-top: -3px;
|
margin-top: -3px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#repo-collab-form .dropdown-menu ul{
|
#repo-collab-form .dropdown-menu ul {
|
||||||
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 {
|
||||||
|
|
|
@ -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
37
templates/repo/hooks.tmpl
Normal 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/> </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" .}}
|
57
templates/repo/hooks_add.tmpl
Normal file
57
templates/repo/hooks_add.tmpl
Normal 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>We’ll 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/>
|
||||||
|
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" .}}
|
|
@ -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>
|
Loading…
Reference in a new issue