diff options
-rw-r--r-- | cmd/web.go | 2 | ||||
-rwxr-xr-x | public/css/gogs.css | 42 | ||||
-rw-r--r-- | routers/repo/setting.go | 22 | ||||
-rw-r--r-- | templates/repo/hooks.tmpl | 37 | ||||
-rw-r--r-- | templates/repo/hooks_add.tmpl | 57 | ||||
-rw-r--r-- | templates/repo/setting_nav.tmpl | 2 |
6 files changed, 148 insertions, 14 deletions
diff --git a/cmd/web.go b/cmd/web.go index af5d507edf..1e60501834 100644 --- a/cmd/web.go +++ b/cmd/web.go @@ -152,6 +152,8 @@ func runWeb(*cli.Context) { r.Post("/settings", repo.SettingPost) r.Get("/settings/collaboration", repo.Collaboration) 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("/issues/new", repo.CreateIssue) r.Post("/issues/new", bindIgnErr(auth.CreateIssueForm{}), repo.CreateIssuePost) diff --git a/public/css/gogs.css b/public/css/gogs.css index e84eb1ef14..881860987d 100755 --- a/public/css/gogs.css +++ b/public/css/gogs.css @@ -311,17 +311,17 @@ html, body { border-radius: 2px; } -#user-name,#user-full-name { +#user-name, #user-full-name { font-size: 1.6em; font-weight: bold; } -#user-name{ +#user-name { margin-bottom: 20px; margin-top: 10px; } -#user-full-name{ +#user-full-name { margin-top: 20px; } @@ -446,7 +446,7 @@ html, body { border-left: 4px solid #DD4B39; } -#repo-setting-container{ +#repo-setting-container { padding-right: 0; } @@ -454,41 +454,41 @@ html, body { line-height: 30px; } -#repo-collab-list li.collab{ +#repo-collab-list li.collab { margin-bottom: .6em; } -#repo-collab-list .avatar{ +#repo-collab-list .avatar { margin-right: 1em; width: 40px; } -#repo-collab-list a.member{ +#repo-collab-list a.member { color: #444; } -#repo-collab-list .remove-collab{ +#repo-collab-list .remove-collab, #repo-hooks-list .remove-hook { color: #DD4B39; } -#repo-collab-form .dropdown-menu{ +#repo-collab-form .dropdown-menu { margin-left: 15px; margin-top: 4px; padding: 0; } -#repo-collab-form .dropdown-menu li{ +#repo-collab-form .dropdown-menu li { padding: 0 1em; line-height: 36px; cursor: pointer; font-weight: bold; } -#repo-collab-form .dropdown-menu li:hover{ +#repo-collab-form .dropdown-menu li:hover { background-color: #e8f0ff; } -#repo-collab-form .dropdown-menu img{ +#repo-collab-form .dropdown-menu img { width: 28px; height: 28px; margin-right: 1em; @@ -496,10 +496,26 @@ html, body { margin-top: -3px; } -#repo-collab-form .dropdown-menu ul{ +#repo-collab-form .dropdown-menu ul { 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 */ #ssh-keys .list-group-item { diff --git a/routers/repo/setting.go b/routers/repo/setting.go index 8f7b84b694..aee3fe3a1d 100644 --- a/routers/repo/setting.go +++ b/routers/repo/setting.go @@ -204,3 +204,25 @@ func CollaborationPost(ctx *middleware.Context) { ctx.Flash.Success("New collaborator has been added.") 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") +} diff --git a/templates/repo/hooks.tmpl b/templates/repo/hooks.tmpl new file mode 100644 index 0000000000..643686aae0 --- /dev/null +++ b/templates/repo/hooks.tmpl @@ -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" .}}
\ No newline at end of file diff --git a/templates/repo/hooks_add.tmpl b/templates/repo/hooks_add.tmpl new file mode 100644 index 0000000000..174036d749 --- /dev/null +++ b/templates/repo/hooks_add.tmpl @@ -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" .}}
\ No newline at end of file diff --git a/templates/repo/setting_nav.tmpl b/templates/repo/setting_nav.tmpl index 4e558a76ef..489602b4cc 100644 --- a/templates/repo/setting_nav.tmpl +++ b/templates/repo/setting_nav.tmpl @@ -2,6 +2,6 @@ <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 .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> </div>
\ No newline at end of file |