Continue working on new admin pages
parent
904bf1a50b
commit
d2aff9a46a
@ -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 +1 @@
|
||||
0.4.7.0829 Alpha
|
||||
0.4.8.0829 Alpha
|
@ -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