mirror of https://github.com/gogits/gogs.git
Unknwon
10 years ago
27 changed files with 670 additions and 540 deletions
@ -0,0 +1,32 @@
|
||||
// Copyright 2014 The Gogs Authors. All rights reserved.
|
||||
// Use of this source code is governed by a MIT-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package admin |
||||
|
||||
import ( |
||||
"github.com/gogits/gogs/models" |
||||
"github.com/gogits/gogs/modules/base" |
||||
"github.com/gogits/gogs/modules/middleware" |
||||
) |
||||
|
||||
const ( |
||||
ORGS base.TplName = "admin/org/list" |
||||
) |
||||
|
||||
func Organizations(ctx *middleware.Context) { |
||||
ctx.Data["Title"] = ctx.Tr("admin.orgs") |
||||
ctx.Data["PageIsAdmin"] = true |
||||
ctx.Data["PageIsAdminOrganizations"] = true |
||||
|
||||
pageNum := 50 |
||||
p := pagination(ctx, models.CountOrganizations(), pageNum) |
||||
|
||||
var err error |
||||
ctx.Data["Orgs"], err = models.GetOrganizations(pageNum, (p-1)*pageNum) |
||||
if err != nil { |
||||
ctx.Handle(500, "GetUsers", err) |
||||
return |
||||
} |
||||
ctx.HTML(200, ORGS) |
||||
} |
@ -0,0 +1,32 @@
|
||||
// Copyright 2014 The Gogs Authors. All rights reserved.
|
||||
// Use of this source code is governed by a MIT-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package admin |
||||
|
||||
import ( |
||||
"github.com/gogits/gogs/models" |
||||
"github.com/gogits/gogs/modules/base" |
||||
"github.com/gogits/gogs/modules/middleware" |
||||
) |
||||
|
||||
const ( |
||||
REPOS base.TplName = "admin/repo/list" |
||||
) |
||||
|
||||
func Repositories(ctx *middleware.Context) { |
||||
ctx.Data["Title"] = ctx.Tr("admin.repositories") |
||||
ctx.Data["PageIsAdmin"] = true |
||||
ctx.Data["PageIsAdminRepositories"] = true |
||||
|
||||
pageNum := 50 |
||||
p := pagination(ctx, models.CountRepositories(), pageNum) |
||||
|
||||
var err error |
||||
ctx.Data["Repos"], err = models.GetRepositoriesWithUsers(pageNum, (p-1)*pageNum) |
||||
if err != nil { |
||||
ctx.Handle(500, "GetRepositoriesWithUsers", err) |
||||
return |
||||
} |
||||
ctx.HTML(200, REPOS) |
||||
} |
@ -1,165 +1,113 @@
|
||||
{{template "base/head" .}} |
||||
{{template "base/navbar" .}} |
||||
<div id="body" class="container" data-page="admin"> |
||||
{{template "admin/nav" .}} |
||||
<div id="admin-container" class="col-md-9"> |
||||
<div class="panel panel-default"> |
||||
<div class="panel-heading"> |
||||
Edit Authentication |
||||
</div> |
||||
|
||||
<div class="panel-body"> |
||||
<br/> |
||||
<form action="/admin/auths/{{.Source.Id}}" method="post" class="form-horizontal"> |
||||
{{.CsrfTokenHtml}} |
||||
{{template "base/alert" .}} |
||||
<input type="hidden" value="{{.Source.Id}}" name="id"/> |
||||
{{$type := .Source.Type}} |
||||
<div class="form-group"> |
||||
<label class="col-md-3 control-label">Auth Type: </label> |
||||
<input type="hidden" name="type" value="{{.Source.Type}}"/> |
||||
<label class="control-label"> |
||||
{{range $key, $val := .LoginTypes}} |
||||
{{if eq $key $type}}{{$val}}{{end}} |
||||
{{end}} |
||||
</label> |
||||
</div> |
||||
<div class="form-group {{if .Err_AuthName}}has-error has-feedback{{end}}"> |
||||
<label class="col-md-3 control-label">Name: </label> |
||||
<div class="col-md-7"> |
||||
<input name="name" class="form-control" placeholder="Type authentication's name" value="{{.Source.Name}}" required="required"> |
||||
</div> |
||||
</div> |
||||
|
||||
{{if eq $type 2}} |
||||
<div class="form-group {{if .Err_Domain}}has-error has-feedback{{end}}"> |
||||
<label class="col-md-3 control-label">Domain: </label> |
||||
<div class="col-md-7"> |
||||
<input name="domain" class="form-control" placeholder="Type domain name" value="{{.Source.LDAP.Name}}" required="required"> |
||||
</div> |
||||
</div> |
||||
|
||||
<div class="form-group {{if .Err_Host}}has-error has-feedback{{end}}"> |
||||
<label class="col-md-3 control-label">Host: </label> |
||||
<div class="col-md-7"> |
||||
<input name="host" class="form-control" placeholder="Type host address" value="{{.Source.LDAP.Host}}" required="required"> |
||||
</div> |
||||
</div> |
||||
|
||||
<div class="form-group {{if .Err_Port}}has-error has-feedback{{end}}"> |
||||
<label class="col-md-3 control-label">Port: </label> |
||||
<div class="col-md-7"> |
||||
<input name="port" class="form-control" placeholder="Type port number" value="{{.Source.LDAP.Port}}" required="required"> |
||||
</div> |
||||
</div> |
||||
|
||||
<div class="form-group {{if .Err_UseSSL}}has-error has-feedback{{end}}"> |
||||
<label class="col-md-3 control-label">Use SSL: </label> |
||||
<div class="col-md-7"> |
||||
<input name="usessl" class="form-control" type="checkbox" {{if .Source.LDAP.UseSSL}}checked{{end}}> |
||||
</div> |
||||
</div> |
||||
|
||||
|
||||
<div class="form-group {{if .Err_BaseDN}}has-error has-feedback{{end}}"> |
||||
<label class="col-md-3 control-label">Base DN: </label> |
||||
<div class="col-md-7"> |
||||
<input name="base_dn" class="form-control" placeholder="Type base DN" value="{{.Source.LDAP.BaseDN}}" required="required"> |
||||
</div> |
||||
</div> |
||||
|
||||
<div class="form-group {{if .Err_Attributes}}has-error has-feedback{{end}}"> |
||||
<label class="col-md-3 control-label">Search Attributes: </label> |
||||
<div class="col-md-7"> |
||||
<input name="attributes" class="form-control" placeholder="Type search attributes" value="{{.Source.LDAP.Attributes}}"> |
||||
</div> |
||||
</div> |
||||
|
||||
<div class="form-group {{if .Err_Filter}}has-error has-feedback{{end}}"> |
||||
<label class="col-md-3 control-label">Search Filter: </label> |
||||
<div class="col-md-7"> |
||||
<input name="filter" class="form-control" placeholder="Type search filter" value="{{.Source.LDAP.Filter}}"> |
||||
</div> |
||||
</div> |
||||
|
||||
<div class="form-group {{if .Err_MsAdSA}}has-error has-feedback{{end}}"> |
||||
<label class="col-md-3 control-label">Ms Ad SA: </label> |
||||
<div class="col-md-7"> |
||||
<input name="ms_ad_sa" class="form-control" placeholder="Type Ms Ad SA" value="{{.Source.LDAP.MsAdSAFormat}}"> |
||||
</div> |
||||
</div> |
||||
{{else if eq $type 3}} |
||||
<div class="form-group {{if .Err_TLS}}has-error has-feedback{{end}}"> |
||||
<label class="col-md-3 control-label">SMTP Auth: </label> |
||||
<div class="col-md-7"> |
||||
<select name="smtpauth" class="form-control"> |
||||
{{$auth := .Source.SMTP.Auth}} |
||||
{{range .SMTPAuths}} |
||||
<option value="{{.}}" |
||||
{{if eq . $auth}} selected{{end}}>{{.}}</option> |
||||
{{end}} |
||||
</select> |
||||
</div> |
||||
</div> |
||||
|
||||
<div class="form-group {{if .Err_SmtpHost}}has-error has-feedback{{end}}"> |
||||
<label class="col-md-3 control-label">Host: </label> |
||||
<div class="col-md-7"> |
||||
<input name="smtphost" class="form-control" placeholder="Type host address" value="{{.Source.SMTP.Host}}"> |
||||
</div> |
||||
</div> |
||||
|
||||
<div class="form-group {{if .Err_SmtpPort}}has-error has-feedback{{end}}"> |
||||
<label class="col-md-3 control-label">Port: </label> |
||||
<div class="col-md-7"> |
||||
<input name="smtpport" class="form-control" placeholder="Type port number" value="{{.Source.SMTP.Port}}"> |
||||
</div> |
||||
</div> |
||||
{{end}} |
||||
|
||||
<div class="form-group"> |
||||
{{if eq $type 3}} |
||||
<div class="col-md-offset-3 col-md-7"> |
||||
<div class="checkbox"> |
||||
<label> |
||||
<input name="tls" type="checkbox" class="form-control" {{if .Source.SMTP.TLS}}checked{{end}}> |
||||
<strong>Enable TLS Encryption</strong> |
||||
</label> |
||||
{{template "ng/base/head" .}} |
||||
{{template "ng/base/header" .}} |
||||
<div id="admin-wrapper"> |
||||
<div id="setting-wrapper" class="main-wrapper"> |
||||
<div id="admin-setting" class="container clear"> |
||||
{{template "admin/nav" .}} |
||||
<div class="grid-4-5 left"> |
||||
<div class="setting-content"> |
||||
{{template "ng/base/alert" .}} |
||||
<div id="setting-content"> |
||||
<div class="panel panel-radius"> |
||||
<div class="panel-header"> |
||||
<strong>{{.i18n.Tr "admin.auths.edit"}}</strong> |
||||
</div> |
||||
</div> |
||||
{{end}} |
||||
<form class="form form-align panel-body" id="auth-setting-form" action="/admin/auths/{{.Source.Id}}" data-delete-url="/admin/auths/{{.Source.Id}}/delete" method="post"> |
||||
{{.CsrfTokenHtml}} |
||||
<input type="hidden" value="{{.Source.Id}}" name="id"/> |
||||
{{$type := .Source.Type}} |
||||
<div class="field"> |
||||
<label>{{.i18n.Tr "admin.auths.auth_type"}}</label> |
||||
<input type="hidden" name="type" value="{{.Source.Type}}"/> |
||||
<label class="control-label"> |
||||
{{range $key, $val := .LoginTypes}} |
||||
{{if eq $key $type}}{{$val}}{{end}} |
||||
{{end}} |
||||
</label> |
||||
</div> |
||||
<div class="field"> |
||||
<label class="req" for="name">{{.i18n.Tr "admin.auths.auth_name"}}</label> |
||||
<input class="ipt ipt-large ipt-radius {{if .Err_AuthName}}ipt-error{{end}}" id="name" name="name" value="{{.Source.Name}}" required /> |
||||
</div> |
||||
|
||||
{{if eq $type 2}} |
||||
<div class="field"> |
||||
<label class="req" for="domain">{{.i18n.Tr "admin.auths.domain"}}</label> |
||||
<input class="ipt ipt-large ipt-radius {{if .Err_Domain}}ipt-error{{end}}" id="domain" name="domain" value="{{.Source.LDAP.Name}}" required /> |
||||
</div> |
||||
<div class="field"> |
||||
<label class="req" for="host">{{.i18n.Tr "admin.auths.host"}}</label> |
||||
<input class="ipt ipt-large ipt-radius {{if .Err_Host}}ipt-error{{end}}" id="host" name="host" value="{{.Source.LDAP.Host}}" required /> |
||||
</div> |
||||
<div class="field"> |
||||
<label class="req" for="port">{{.i18n.Tr "admin.auths.port"}}</label> |
||||
<input class="ipt ipt-large ipt-radius {{if .Err_Port}}ipt-error{{end}}" id="port" name="port" value="{{.Source.LDAP.Port}}" required /> |
||||
</div> |
||||
<div class="field"> |
||||
<label class="req" for="base_dn">{{.i18n.Tr "admin.auths.base_dn"}}</label> |
||||
<input class="ipt ipt-large ipt-radius {{if .Err_BaseDN}}ipt-error{{end}}" id="base_dn" name="base_dn" value="{{.Source.LDAP.BaseDN}}" /> |
||||
</div> |
||||
<div class="field"> |
||||
<label class="req" for="attributes">{{.i18n.Tr "admin.auths.attributes"}}</label> |
||||
<input class="ipt ipt-large ipt-radius {{if .Err_Attributes}}ipt-error{{end}}" id="attributes" name="attributes" value="{{.Source.LDAP.Attributes}}" /> |
||||
</div> |
||||
<div class="field"> |
||||
<label class="req" for="filter">{{.i18n.Tr "admin.auths.filter"}}</label> |
||||
<input class="ipt ipt-large ipt-radius {{if .Err_Filter}}ipt-error{{end}}" id="filter" name="filter" value="{{.Source.LDAP.Filter}}" /> |
||||
</div> |
||||
<div class="field"> |
||||
<label class="req" for="ms_ad_sa">{{.i18n.Tr "admin.auths.ms_ad_sa"}}</label> |
||||
<input class="ipt ipt-large ipt-radius {{if .Err_MsAdSA}}ipt-error{{end}}" id="ms_ad_sa" name="ms_ad_sa" value="{{.Source.LDAP.MsAdSAFormat}}" /> |
||||
</div> |
||||
|
||||
{{else if eq $type 3}} |
||||
<div class="field"> |
||||
<label class="req">{{.i18n.Tr "admin.auths.smtp_auth"}}</label> |
||||
<select name="smtpauth"> |
||||
{{$auth := .Source.SMTP.Auth}} |
||||
{{range .SMTPAuths}} |
||||
<option value="{{.}}" |
||||
{{if eq . $auth}} selected{{end}}>{{.}}</option> |
||||
{{end}} |
||||
</select> |
||||
</div> |
||||
<div class="field"> |
||||
<label class="req" for="smtphost">{{.i18n.Tr "admin.auths.smtphost"}}</label> |
||||
<input class="ipt ipt-large ipt-radius {{if .Err_SmtpHost}}ipt-error{{end}}" id="smtphost" name="smtphost" value="{{.Source.SMTP.Host}}" /> |
||||
</div> |
||||
<div class="field"> |
||||
<label class="req" for="smtpport">{{.i18n.Tr "admin.auths.smtpport"}}</label> |
||||
<input class="ipt ipt-large ipt-radius {{if .Err_SmtpPort}}ipt-error{{end}}" id="smtpport" name="smtpport" value="{{.Source.SMTP.Port}}" /> |
||||
</div> |
||||
{{end}} |
||||
|
||||
<div class="col-md-offset-3 col-md-7"> |
||||
<div class="checkbox"> |
||||
<label> |
||||
<div class="field"> |
||||
{{if eq $type 3}} |
||||
<label></label> |
||||
<input name="tls" type="checkbox" {{if .Source.SMTP.TLS}}checked{{end}}> |
||||
<strong>{{.i18n.Tr "admin.auths.enable_tls"}}</strong> |
||||
<br> |
||||
{{end}} |
||||
<label></label> |
||||
<input name="allowautoregister" type="checkbox" {{if .Source.AllowAutoRegister}}checked{{end}}> |
||||
<strong>Enable Auto Registration</strong> |
||||
</label> |
||||
</div> |
||||
</div> |
||||
|
||||
<div class="col-md-7 col-md-offset-3"> |
||||
<div class="checkbox"> |
||||
<label> |
||||
<input type="checkbox" name="is_actived" {{if .Source.IsActived}}checked{{end}}> |
||||
<strong>This authentication has activated.</strong> |
||||
</label> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
|
||||
<hr/> |
||||
|
||||
<div class="form-group"> |
||||
<div class="col-md-offset-3 col-md-6"> |
||||
<button type="submit" class="btn btn-lg btn-primary btn-block">Update authentication config</button> |
||||
<a type="button" href="/admin/auths/{{.Source.Id}}/delete" class="btn btn-lg btn-danger btn-block">Delete this authentication</a> |
||||
<strong>{{.i18n.Tr "admin.auths.enable_auto_register"}}</strong> |
||||
<br> |
||||
<label></label> |
||||
<input name="is_actived" type="checkbox" {{if .Source.IsActived}}checked{{end}}> |
||||
<strong>{{.i18n.Tr "admin.auths.activated"}}</strong> |
||||
</div> |
||||
<div class="field"> |
||||
<label></label> |
||||
<button class="btn btn-green btn-large btn-radius">{{.i18n.Tr "admin.auths.update"}}</button> |
||||
|
||||
<button class="btn btn-large btn-red btn-radius" id="auth-delete">{{.i18n.Tr "admin.auths.delete"}}</button> |
||||
</div> |
||||
</form> |
||||
</div> |
||||
</div> |
||||
</form> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
|
||||
</div> |
||||
</div> |
||||
{{template "base/footer" .}} |
||||
{{template "ng/base/footer" .}} |
||||
|
@ -0,0 +1,59 @@
|
||||
{{template "ng/base/head" .}} |
||||
{{template "ng/base/header" .}} |
||||
<div id="admin-wrapper"> |
||||
<div id="setting-wrapper" class="main-wrapper"> |
||||
<div id="admin-setting" class="container clear"> |
||||
{{template "admin/nav" .}} |
||||
<div class="grid-4-5 left"> |
||||
<div class="setting-content"> |
||||
{{template "ng/base/alert" .}} |
||||
<div id="setting-content"> |
||||
<div class="panel panel-radius"> |
||||
<div class="panel-header"> |
||||
<strong>{{.i18n.Tr "admin.auths.auth_manage_panel"}}</strong> |
||||
</div> |
||||
<div class="panel-body admin-panel"> |
||||
<a class="btn-blue btn-medium btn-link btn-radius" href="/admin/auths/new">{{.i18n.Tr "admin.auths.new"}}</a> |
||||
<div class="admin-table"> |
||||
<table class="table table-striped"> |
||||
<thead> |
||||
<tr> |
||||
<th>Id</th> |
||||
<th>{{.i18n.Tr "admin.auths.name"}}</th> |
||||
<th>{{.i18n.Tr "admin.auths.type"}}</th> |
||||
<th>{{.i18n.Tr "admin.auths.enabled"}}</th> |
||||
<th>{{.i18n.Tr "admin.auths.updated"}}</th> |
||||
<th>{{.i18n.Tr "admin.users.created"}}</th> |
||||
<th>{{.i18n.Tr "admin.users.edit"}}</th> |
||||
</tr> |
||||
</thead> |
||||
<tbody> |
||||
{{range .Sources}} |
||||
<tr> |
||||
<td>{{.Id}}</td> |
||||
<td><a href="/admin/auths/{{.Id}}">{{.Name}}</a></td> |
||||
<td>{{.TypeString}}</td> |
||||
<td><i class="fa fa{{if .IsActived}}-check{{end}}-square-o"></i></td> |
||||
<td>{{DateFormat .Updated "M d, Y"}}</td> |
||||
<td>{{DateFormat .Created "M d, Y"}}</td> |
||||
<td><a href="/admin/auths/{{.Id}}"><i class="fa fa-pencil-square-o"></i></a></td> |
||||
</tr> |
||||
{{end}} |
||||
</tbody> |
||||
</table> |
||||
{{if or .LastPageNum .NextPageNum}} |
||||
<ul class="pagination"> |
||||
{{if .LastPageNum}}<li><a class="btn btn-medium btn-gray btn-radius" href="/admin/auths?p={{.LastPageNum}}">« Prev.</a></li>{{end}} |
||||
{{if .NextPageNum}}<li><a class="btn btn-medium btn-gray btn-radius" href="/admin/auths?p={{.NextPageNum}}">» Next</a></li>{{end}} |
||||
</ul> |
||||
{{end}} |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
{{template "ng/base/footer" .}} |
@ -1,178 +1,110 @@
|
||||
{{template "base/head" .}} |
||||
{{template "base/navbar" .}} |
||||
<div id="body" class="container" data-page="admin"> |
||||
{{template "admin/nav" .}} |
||||
<div id="admin-container" class="col-md-9"> |
||||
<div class="panel panel-default"> |
||||
<div class="panel-heading"> |
||||
New Authentication |
||||
</div> |
||||
|
||||
<div class="panel-body"> |
||||
<br/> |
||||
<form action="/admin/auths/new" method="post" class="form-horizontal"> |
||||
{{.CsrfTokenHtml}} |
||||
{{template "base/alert" .}} |
||||
<div class="form-group"> |
||||
<label class="col-md-3 control-label">Auth Type: </label> |
||||
<div class="col-md-7"> |
||||
<select name="type" class="form-control" id="auth-type"> |
||||
{{range $key, $val := .LoginTypes}} |
||||
<option value="{{$key}}">{{$val}}</option> |
||||
{{end}} |
||||
</select> |
||||
</div> |
||||
</div> |
||||
<div class="form-group {{if .Err_AuthName}}has-error has-feedback{{end}}"> |
||||
<label class="col-md-3 control-label">Name: </label> |
||||
<div class="col-md-7"> |
||||
<input name="name" class="form-control" placeholder="Type authentication's name" value="{{.name}}"> |
||||
</div> |
||||
</div> |
||||
<div class="ldap"> |
||||
<div class="form-group {{if .Err_Domain}}has-error has-feedback{{end}}"> |
||||
<label class="col-md-3 control-label">Domain: </label> |
||||
<div class="col-md-7"> |
||||
<input name="domain" class="form-control" placeholder="Type domain name" value="{{.domain}}"> |
||||
</div> |
||||
</div> |
||||
|
||||
<div class="form-group {{if .Err_Host}}has-error has-feedback{{end}}"> |
||||
<label class="col-md-3 control-label">Host: </label> |
||||
<div class="col-md-7"> |
||||
<input name="host" class="form-control" placeholder="Type host address" value="{{.host}}"> |
||||
</div> |
||||
</div> |
||||
|
||||
<div class="form-group {{if .Err_Port}}has-error has-feedback{{end}}"> |
||||
<label class="col-md-3 control-label">Port: </label> |
||||
<div class="col-md-7"> |
||||
<input name="port" class="form-control" placeholder="Type port number" value="{{.port}}"> |
||||
</div> |
||||
</div> |
||||
|
||||
<div class="form-group {{if .Err_UseSSL}}has-error has-feedback{{end}}"> |
||||
<label class="col-md-3 control-label">Use SSL: </label> |
||||
<div class="col-md-7"> |
||||
<input name="usessl" class="form-control" type="checkbox" {{if .usessl}}checked{{end}}> |
||||
</div> |
||||
</div> |
||||
|
||||
<div class="form-group {{if .Err_BaseDN}}has-error has-feedback{{end}}"> |
||||
<label class="col-md-3 control-label">Base DN: </label> |
||||
<div class="col-md-7"> |
||||
<input name="base_dn" class="form-control" placeholder="Type base DN" value="{{.base_dn}}"> |
||||
</div> |
||||
</div> |
||||
|
||||
<div class="form-group {{if .Err_Attributes}}has-error has-feedback{{end}}"> |
||||
<label class="col-md-3 control-label">Search Attributes: </label> |
||||
<div class="col-md-7"> |
||||
<input name="attributes" class="form-control" placeholder="Type search attributes" value="{{.attributes}}"> |
||||
</div> |
||||
</div> |
||||
|
||||
<div class="form-group {{if .Err_Filter}}has-error has-feedback{{end}}"> |
||||
<label class="col-md-3 control-label">Search Filter: </label> |
||||
<div class="col-md-7"> |
||||
<input name="filter" class="form-control" placeholder="Type search filter" value="{{.filter}}"> |
||||
</div> |
||||
</div> |
||||
|
||||
<div class="form-group {{if .Err_MsAdSA}}has-error has-feedback{{end}}"> |
||||
<label class="col-md-3 control-label">Ms Ad SA: </label> |
||||
<div class="col-md-7"> |
||||
<input name="ms_ad_sa" class="form-control" placeholder="Type Ms Ad SA" value="{{.ms_ad_sa}}"> |
||||
</div> |
||||
</div> |
||||
|
||||
</div> |
||||
|
||||
<div class="smtp hidden"> |
||||
<div class="form-group"> |
||||
<label class="col-md-3 control-label">SMTP Auth: </label> |
||||
<div class="col-md-7"> |
||||
<select name="smtpauth" class="form-control"> |
||||
{{range .SMTPAuths}} |
||||
<option value="{{.}}">{{.}}</option> |
||||
{{end}} |
||||
</select> |
||||
{{template "ng/base/head" .}} |
||||
{{template "ng/base/header" .}} |
||||
<div id="admin-wrapper"> |
||||
<div id="setting-wrapper" class="main-wrapper"> |
||||
<div id="admin-setting" class="container clear"> |
||||
{{template "admin/nav" .}} |
||||
<div class="grid-4-5 left"> |
||||
<div class="setting-content"> |
||||
{{template "ng/base/alert" .}} |
||||
<div id="setting-content"> |
||||
<div class="panel panel-radius"> |
||||
<div class="panel-header"> |
||||
<strong>{{.i18n.Tr "admin.auths.new"}}</strong> |
||||
</div> |
||||
</div> |
||||
|
||||
<div class="form-group {{if .Err_SmtpHost}}has-error has-feedback{{end}}"> |
||||
<label class="col-md-3 control-label">Host: </label> |
||||
<div class="col-md-7"> |
||||
<input name="smtphost" class="form-control" placeholder="Type host address" value="{{.smtphost}}"> |
||||
</div> |
||||
</div> |
||||
|
||||
<div class="form-group {{if .Err_SmtpPort}}has-error has-feedback{{end}}"> |
||||
<label class="col-md-3 control-label">Port: </label> |
||||
<div class="col-md-7"> |
||||
<input name="smtpport" class="form-control" placeholder="Type port number" value="{{.smtpport}}"> |
||||
</div> |
||||
</div> |
||||
|
||||
<div class="form-group"> |
||||
<div class="col-md-offset-3 col-md-7"> |
||||
<div class="checkbox"> |
||||
<label> |
||||
<form class="form form-align panel-body" id="repo-setting-form" action="/admin/auths/new" method="post"> |
||||
{{.CsrfTokenHtml}} |
||||
<div class="field"> |
||||
<label class="req">{{.i18n.Tr "admin.auths.auth_type"}}</label> |
||||
<select id="auth-type" name="type"> |
||||
{{range $key, $val := .LoginTypes}} |
||||
<option value="{{$key}}">{{$val}}</option> |
||||
{{end}} |
||||
</select> |
||||
</div> |
||||
<div class="field"> |
||||
<label class="req" for="name">{{.i18n.Tr "admin.auths.auth_name"}}</label> |
||||
<input class="ipt ipt-large ipt-radius {{if .Err_AuthName}}ipt-error{{end}}" id="name" name="name" value="{{.name}}" required /> |
||||
</div> |
||||
<div class="ldap"> |
||||
<div class="field"> |
||||
<label class="req" for="domain">{{.i18n.Tr "admin.auths.domain"}}</label> |
||||
<input class="ipt ipt-large ipt-radius {{if .Err_Domain}}ipt-error{{end}}" id="domain" name="domain" value="{{.domain}}" /> |
||||
</div> |
||||
<div class="field"> |
||||
<label class="req" for="host">{{.i18n.Tr "admin.auths.host"}}</label> |
||||
<input class="ipt ipt-large ipt-radius {{if .Err_Host}}ipt-error{{end}}" id="host" name="host" value="{{.host}}" /> |
||||
</div> |
||||
<div class="field"> |
||||
<label class="req" for="port">{{.i18n.Tr "admin.auths.port"}}</label> |
||||
<input class="ipt ipt-large ipt-radius {{if .Err_Port}}ipt-error{{end}}" id="port" name="port" value="{{.port}}" /> |
||||
</div> |
||||
<div class="field"> |
||||
<label class="req" for="base_dn">{{.i18n.Tr "admin.auths.base_dn"}}</label> |
||||
<input class="ipt ipt-large ipt-radius {{if .Err_BaseDN}}ipt-error{{end}}" id="base_dn" name="base_dn" value="{{.base_dn}}" /> |
||||
</div> |
||||
<div class="field"> |
||||
<label class="req" for="attributes">{{.i18n.Tr "admin.auths.attributes"}}</label> |
||||
<input class="ipt ipt-large ipt-radius {{if .Err_Attributes}}ipt-error{{end}}" id="attributes" name="attributes" value="{{.attributes}}" /> |
||||
</div> |
||||
<div class="field"> |
||||
<label class="req" for="filter">{{.i18n.Tr "admin.auths.filter"}}</label> |
||||
<input class="ipt ipt-large ipt-radius {{if .Err_Filter}}ipt-error{{end}}" id="filter" name="filter" value="{{.filter}}" /> |
||||
</div> |
||||
<div class="field"> |
||||
<label class="req" for="ms_ad_sa">{{.i18n.Tr "admin.auths.ms_ad_sa"}}</label> |
||||
<input class="ipt ipt-large ipt-radius {{if .Err_MsAdSA}}ipt-error{{end}}" id="ms_ad_sa" name="ms_ad_sa" value="{{.ms_ad_sa}}" /> |
||||
</div> |
||||
</div> |
||||
<div class="smtp hidden"> |
||||
<div class="field"> |
||||
<label class="req">{{.i18n.Tr "admin.auths.smtp_auth"}}</label> |
||||
<select name="smtpauth"> |
||||
{{range .SMTPAuths}} |
||||
<option value="{{.}}">{{.}}</option> |
||||
{{end}} |
||||
</select> |
||||
</div> |
||||
<div class="field"> |
||||
<label class="req" for="smtphost">{{.i18n.Tr "admin.auths.smtphost"}}</label> |
||||
<input class="ipt ipt-large ipt-radius {{if .Err_SmtpHost}}ipt-error{{end}}" id="smtphost" name="smtphost" value="{{.smtphost}}" /> |
||||
</div> |
||||
<div class="field"> |
||||
<label class="req" for="smtpport">{{.i18n.Tr "admin.auths.smtpport"}}</label> |
||||
<input class="ipt ipt-large ipt-radius {{if .Err_SmtpPort}}ipt-error{{end}}" id="smtpport" name="smtpport" value="{{.smtpport}}" /> |
||||
</div> |
||||
</div> |
||||
<div class="field"> |
||||
<div class="smtp hidden"> |
||||
<label></label> |
||||
<input name="tls" type="checkbox" {{if .tls}}checked{{end}}> |
||||
<strong>Enable TLS Encryption</strong> |
||||
</label> |
||||
<strong>{{.i18n.Tr "admin.auths.enable_tls"}}</strong> |
||||
<br> |
||||
</div> |
||||
<label></label> |
||||
<input name="allowautoregister" type="checkbox" {{if .allowautoregister}}checked{{end}}> |
||||
<strong>{{.i18n.Tr "admin.auths.enable_auto_register"}}</strong> |
||||
</div> |
||||
</div> |
||||
<div class="field"> |
||||
<label></label> |
||||
<button class="btn btn-blue btn-large btn-radius">{{.i18n.Tr "admin.auths.new"}}</button> |
||||
</div> |
||||
</form> |
||||
</div> |
||||
</div> |
||||
|
||||
<div class="form-group"> |
||||
<div class="col-md-offset-3 col-md-7"> |
||||
<div class="checkbox"> |
||||
<label> |
||||
<input name="allowautoregister" type="checkbox" {{if .allowautoregister}}checked{{end}}> |
||||
<strong>Enable Auto Registration</strong> |
||||
</label> |
||||
<br> |
||||
<div class="panel panel-radius"> |
||||
<div class="panel-header"> |
||||
{{.i18n.Tr "admin.auths.tips"}} |
||||
</div> |
||||
<div class="panel-body admin-panel"> |
||||
<h5>GMail Setting:</h5> |
||||
<p>Host: smtp.gmail.com, Post: 587, Enable TLS Encryption: true</p> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
|
||||
<hr/> |
||||
|
||||
<div class="form-group"> |
||||
<div class="col-md-offset-3 col-md-7"> |
||||
<button type="submit" class="btn btn-lg btn-primary">Create new authentication</button> |
||||
</div> |
||||
</div> |
||||
</form> |
||||
</div> |
||||
</div> |
||||
|
||||
<div class="panel panel-info"> |
||||
<div class="panel-heading"> |
||||
Tips |
||||
</div> |
||||
|
||||
<div class="panel-body"> |
||||
<h5>GMail Setting:</h5> |
||||
<p>Host: smtp.gmail.com, Post: 587, Enable TLS Encryption: true</p> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<script> |
||||
$(function () { |
||||
$('#auth-type').on("change", function () { |
||||
var v = $(this).val(); |
||||
if (v == 2) { |
||||
$('.ldap').toggleShow(); |
||||
$('.smtp').toggleHide(); |
||||
} |
||||
if (v == 3) { |
||||
$('.smtp').toggleShow(); |
||||
$('.ldap').toggleHide(); |
||||
} |
||||
}); |
||||
}); |
||||
</script> |
||||
{{template "base/footer" .}} |
||||
{{template "ng/base/footer" .}} |
||||
|
@ -1,43 +0,0 @@
|
||||
{{template "base/head" .}} |
||||
{{template "base/navbar" .}} |
||||
<div id="body" class="container" data-page="admin"> |
||||
{{template "admin/nav" .}} |
||||
<div id="admin-container" class="col-md-10"> |
||||
<div class="panel panel-default"> |
||||
<div class="panel-heading"> |
||||
Authentication Management |
||||
</div> |
||||
|
||||
<div class="panel-body"> |
||||
<a href="/admin/auths/new" class="btn btn-primary">New Auth Source</a> |
||||
<table class="table table-striped"> |
||||
<thead> |
||||
<tr> |
||||
<th>Id</th> |
||||
<th>Name</th> |
||||
<th>Type</th> |
||||
<th>Actived</th> |
||||
<th>Updated</th> |
||||
<th>Created</th> |
||||
<th>Edit</th> |
||||
</tr> |
||||
</thead> |
||||
<tbody> |
||||
{{range .Sources}} |
||||
<tr> |
||||
<td>{{.Id}}</td> |
||||
<td><a href="/admin/auths/{{.Id}}">{{.Name}}</a></td> |
||||
<td>{{.TypeString}}</td> |
||||
<td><i class="fa fa{{if .IsActived}}-check{{end}}-square-o"></i></td> |
||||
<td>{{DateFormat .Updated "M d, Y"}}</td> |
||||
<td>{{DateFormat .Created "M d, Y"}}</td> |
||||
<td><a href="/admin/auths/{{.Id}}"><i class="fa fa-pencil-square-o"></i></a></td> |
||||
</tr> |
||||
{{end}} |
||||
</tbody> |
||||
</table> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
{{template "base/footer" .}} |
@ -0,0 +1,58 @@
|
||||
{{template "ng/base/head" .}} |
||||
{{template "ng/base/header" .}} |
||||
<div id="admin-wrapper"> |
||||
<div id="setting-wrapper" class="main-wrapper"> |
||||
<div id="admin-setting" class="container clear"> |
||||
{{template "admin/nav" .}} |
||||
<div class="grid-4-5 left"> |
||||
<div class="setting-content"> |
||||
{{template "ng/base/alert" .}} |
||||
<div id="setting-content"> |
||||
<div class="panel panel-radius"> |
||||
<div class="panel-header"> |
||||
<strong>{{.i18n.Tr "admin.orgs.org_manage_panel"}}</strong> |
||||
</div> |
||||
<div class="panel-body admin-panel"> |
||||
<div class="admin-table"> |
||||
<table class="table table-striped"> |
||||
<thead> |
||||
<tr> |
||||
<th>Id</th> |
||||
<th>{{.i18n.Tr "admin.orgs.name"}}</th> |
||||
<th>{{.i18n.Tr "email"}}</th> |
||||
<th>{{.i18n.Tr "admin.orgs.teams"}}</th> |
||||
<th>{{.i18n.Tr "admin.orgs.members"}}</th> |
||||
<th>{{.i18n.Tr "admin.users.repos"}}</th> |
||||
<th>{{.i18n.Tr "admin.users.created"}}</th> |
||||
</tr> |
||||
</thead> |
||||
<tbody> |
||||
{{range .Orgs}} |
||||
<tr> |
||||
<td>{{.Id}}</td> |
||||
<td><a href="/org/{{.Name}}">{{.Name}}</a></td> |
||||
<td>{{.Email}}</td> |
||||
<td>{{.NumTeams}}</td> |
||||
<td>{{.NumMembers}}</td> |
||||
<td>{{.NumRepos}}</td> |
||||
<td>{{DateFormat .Created "M d, Y"}}</td> |
||||
</tr> |
||||
{{end}} |
||||
</tbody> |
||||
</table> |
||||
{{if or .LastPageNum .NextPageNum}} |
||||
<ul class="pagination"> |
||||
{{if .LastPageNum}}<li><a class="btn btn-medium btn-gray btn-radius" href="/admin/orgs?p={{.LastPageNum}}">« {{.i18n.Tr "admin.prev"}}</a></li>{{end}} |
||||
{{if .NextPageNum}}<li><a class="btn btn-medium btn-gray btn-radius" href="/admin/orgs?p={{.NextPageNum}}">» {{.i18n.Tr "admin.next"}}</a></li>{{end}} |
||||
</ul> |
||||
{{end}} |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
{{template "ng/base/footer" .}} |
@ -0,0 +1,60 @@
|
||||
{{template "ng/base/head" .}} |
||||
{{template "ng/base/header" .}} |
||||
<div id="admin-wrapper"> |
||||
<div id="setting-wrapper" class="main-wrapper"> |
||||
<div id="admin-setting" class="container clear"> |
||||
{{template "admin/nav" .}} |
||||
<div class="grid-4-5 left"> |
||||
<div class="setting-content"> |
||||
{{template "ng/base/alert" .}} |
||||
<div id="setting-content"> |
||||
<div class="panel panel-radius"> |
||||
<div class="panel-header"> |
||||
<strong>{{.i18n.Tr "admin.repos.repo_manage_panel"}}</strong> |
||||
</div> |
||||
<div class="panel-body admin-panel"> |
||||
<div class="admin-table"> |
||||
<table class="table table-striped"> |
||||
<thead> |
||||
<tr> |
||||
<th>Id</th> |
||||
<th>{{.i18n.Tr "admin.repos.owner"}}</th> |
||||
<th>{{.i18n.Tr "admin.repos.name"}}</th> |
||||
<th>{{.i18n.Tr "admin.repos.private"}}</th> |
||||
<th>{{.i18n.Tr "admin.repos.watches"}}</th> |
||||
<th>{{.i18n.Tr "admin.repos.stars"}}</th> |
||||
<th>{{.i18n.Tr "admin.repos.issues"}}</th> |
||||
<th>{{.i18n.Tr "admin.users.created"}}</th> |
||||
</tr> |
||||
</thead> |
||||
<tbody> |
||||
{{range .Repos}} |
||||
<tr> |
||||
<td>{{.Id}}</td> |
||||
<td><a href="/user/{{.Owner.Name}}">{{.Owner.Name}}</a></td> |
||||
<td><a href="/{{.Owner.Name}}/{{.Name}}">{{.Name}}</a></td> |
||||
<td><i class="fa fa{{if .IsPrivate}}-check{{end}}-square-o"></i></td> |
||||
<td>{{.NumWatches}}</td> |
||||
<td>{{.NumIssues}}</td> |
||||
<td>{{.NumStars}}</td> |
||||
<td>{{DateFormat .Created "M d, Y"}}</td> |
||||
</tr> |
||||
{{end}} |
||||
</tbody> |
||||
</table> |
||||
{{if or .LastPageNum .NextPageNum}} |
||||
<ul class="pagination"> |
||||
{{if .LastPageNum}}<li><a class="btn btn-medium btn-gray btn-radius" href="/admin/repos?p={{.LastPageNum}}">« Prev.</a></li>{{end}} |
||||
{{if .NextPageNum}}<li><a class="btn btn-medium btn-gray btn-radius" href="/admin/repos?p={{.NextPageNum}}">» Next</a></li>{{end}} |
||||
</ul> |
||||
{{end}} |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
{{template "ng/base/footer" .}} |
@ -1,48 +0,0 @@
|
||||
{{template "base/head" .}} |
||||
{{template "base/navbar" .}} |
||||
<div id="body" class="container" data-page="admin"> |
||||
{{template "admin/nav" .}} |
||||
<div id="admin-container" class="col-md-10"> |
||||
<div class="panel panel-default"> |
||||
<div class="panel-heading"> |
||||
Repository Management |
||||
</div> |
||||
|
||||
<div class="panel-body"> |
||||
<table class="table table-striped"> |
||||
<thead> |
||||
<tr> |
||||
<th>Id</th> |
||||
<th>Owner</th> |
||||
<th>Name</th> |
||||
<th>Private</th> |
||||
<th>Watches</th> |
||||
<th>Issues</th> |
||||
<th>Forks</th> |
||||
<th>Created</th> |
||||
</tr> |
||||
</thead> |
||||
<tbody> |
||||
{{range .Repos}} |
||||
<tr> |
||||
<td>{{.Id}}</td> |
||||
<th>{{.Owner.Name}}</th> |
||||
<td><a href="/{{.Owner.Name}}/{{.Name}}">{{.Name}}</a></td> |
||||
<td><i class="fa fa{{if .IsPrivate}}-check{{end}}-square-o"></i></td> |
||||
<td>{{.NumWatches}}</td> |
||||
<td>{{.NumIssues}}</td> |
||||
<td>{{.NumForks}}</td> |
||||
<td>{{DateFormat .Created "M d, Y"}}</td> |
||||
</tr> |
||||
{{end}} |
||||
</tbody> |
||||
</table> |
||||
<ul class="pagination"> |
||||
{{if .LastPageNum}}<li><a href="/admin/repos?p={{.LastPageNum}}">« Prev.</a></li>{{end}} |
||||
{{if .NextPageNum}}<li><a href="/admin/repos?p={{.NextPageNum}}">» Next</a></li>{{end}} |
||||
</ul> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
{{template "base/footer" .}} |
Loading…
Reference in new issue