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 |
@ -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 "ng/base/head" .}} |
||||||
{{template "base/navbar" .}} |
{{template "ng/base/header" .}} |
||||||
<div id="body" class="container" data-page="admin"> |
<div id="admin-wrapper"> |
||||||
|
<div id="setting-wrapper" class="main-wrapper"> |
||||||
|
<div id="admin-setting" class="container clear"> |
||||||
{{template "admin/nav" .}} |
{{template "admin/nav" .}} |
||||||
<div id="admin-container" class="col-md-9"> |
<div class="grid-4-5 left"> |
||||||
<div class="panel panel-default"> |
<div class="setting-content"> |
||||||
<div class="panel-heading"> |
{{template "ng/base/alert" .}} |
||||||
New Authentication |
<div id="setting-content"> |
||||||
</div> |
<div class="panel panel-radius"> |
||||||
|
<div class="panel-header"> |
||||||
<div class="panel-body"> |
<strong>{{.i18n.Tr "admin.auths.new"}}</strong> |
||||||
<br/> |
</div> |
||||||
<form action="/admin/auths/new" method="post" class="form-horizontal"> |
<form class="form form-align panel-body" id="repo-setting-form" action="/admin/auths/new" method="post"> |
||||||
{{.CsrfTokenHtml}} |
{{.CsrfTokenHtml}} |
||||||
{{template "base/alert" .}} |
<div class="field"> |
||||||
<div class="form-group"> |
<label class="req">{{.i18n.Tr "admin.auths.auth_type"}}</label> |
||||||
<label class="col-md-3 control-label">Auth Type: </label> |
<select id="auth-type" name="type"> |
||||||
<div class="col-md-7"> |
|
||||||
<select name="type" class="form-control" id="auth-type"> |
|
||||||
{{range $key, $val := .LoginTypes}} |
{{range $key, $val := .LoginTypes}} |
||||||
<option value="{{$key}}">{{$val}}</option> |
<option value="{{$key}}">{{$val}}</option> |
||||||
{{end}} |
{{end}} |
||||||
</select> |
</select> |
||||||
</div> |
</div> |
||||||
</div> |
<div class="field"> |
||||||
<div class="form-group {{if .Err_AuthName}}has-error has-feedback{{end}}"> |
<label class="req" for="name">{{.i18n.Tr "admin.auths.auth_name"}}</label> |
||||||
<label class="col-md-3 control-label">Name: </label> |
<input class="ipt ipt-large ipt-radius {{if .Err_AuthName}}ipt-error{{end}}" id="name" name="name" value="{{.name}}" required /> |
||||||
<div class="col-md-7"> |
|
||||||
<input name="name" class="form-control" placeholder="Type authentication's name" value="{{.name}}"> |
|
||||||
</div> |
|
||||||
</div> |
</div> |
||||||
<div class="ldap"> |
<div class="ldap"> |
||||||
<div class="form-group {{if .Err_Domain}}has-error has-feedback{{end}}"> |
<div class="field"> |
||||||
<label class="col-md-3 control-label">Domain: </label> |
<label class="req" for="domain">{{.i18n.Tr "admin.auths.domain"}}</label> |
||||||
<div class="col-md-7"> |
<input class="ipt ipt-large ipt-radius {{if .Err_Domain}}ipt-error{{end}}" id="domain" name="domain" value="{{.domain}}" /> |
||||||
<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="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> |
||||||
|
<div class="field"> |
||||||
<div class="form-group {{if .Err_UseSSL}}has-error has-feedback{{end}}"> |
<label class="req" for="port">{{.i18n.Tr "admin.auths.port"}}</label> |
||||||
<label class="col-md-3 control-label">Use SSL: </label> |
<input class="ipt ipt-large ipt-radius {{if .Err_Port}}ipt-error{{end}}" id="port" name="port" value="{{.port}}" /> |
||||||
<div class="col-md-7"> |
|
||||||
<input name="usessl" class="form-control" type="checkbox" {{if .usessl}}checked{{end}}> |
|
||||||
</div> |
</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> |
||||||
|
<div class="field"> |
||||||
<div class="form-group {{if .Err_BaseDN}}has-error has-feedback{{end}}"> |
<label class="req" for="attributes">{{.i18n.Tr "admin.auths.attributes"}}</label> |
||||||
<label class="col-md-3 control-label">Base DN: </label> |
<input class="ipt ipt-large ipt-radius {{if .Err_Attributes}}ipt-error{{end}}" id="attributes" name="attributes" value="{{.attributes}}" /> |
||||||
<div class="col-md-7"> |
|
||||||
<input name="base_dn" class="form-control" placeholder="Type base DN" value="{{.base_dn}}"> |
|
||||||
</div> |
</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> |
||||||
|
<div class="field"> |
||||||
<div class="form-group {{if .Err_Attributes}}has-error has-feedback{{end}}"> |
<label class="req" for="ms_ad_sa">{{.i18n.Tr "admin.auths.ms_ad_sa"}}</label> |
||||||
<label class="col-md-3 control-label">Search Attributes: </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 class="col-md-7"> |
|
||||||
<input name="attributes" class="form-control" placeholder="Type search attributes" value="{{.attributes}}"> |
|
||||||
</div> |
</div> |
||||||
</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="smtp hidden"> |
||||||
<div class="form-group"> |
<div class="field"> |
||||||
<label class="col-md-3 control-label">SMTP Auth: </label> |
<label class="req">{{.i18n.Tr "admin.auths.smtp_auth"}}</label> |
||||||
<div class="col-md-7"> |
<select name="smtpauth"> |
||||||
<select name="smtpauth" class="form-control"> |
|
||||||
{{range .SMTPAuths}} |
{{range .SMTPAuths}} |
||||||
<option value="{{.}}">{{.}}</option> |
<option value="{{.}}">{{.}}</option> |
||||||
{{end}} |
{{end}} |
||||||
</select> |
</select> |
||||||
</div> |
</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> |
||||||
|
<div class="field"> |
||||||
<div class="form-group {{if .Err_SmtpHost}}has-error has-feedback{{end}}"> |
<label class="req" for="smtpport">{{.i18n.Tr "admin.auths.smtpport"}}</label> |
||||||
<label class="col-md-3 control-label">Host: </label> |
<input class="ipt ipt-large ipt-radius {{if .Err_SmtpPort}}ipt-error{{end}}" id="smtpport" name="smtpport" value="{{.smtpport}}" /> |
||||||
<div class="col-md-7"> |
|
||||||
<input name="smtphost" class="form-control" placeholder="Type host address" value="{{.smtphost}}"> |
|
||||||
</div> |
|
||||||
</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> |
<div class="field"> |
||||||
|
<div class="smtp hidden"> |
||||||
<div class="form-group"> |
<label></label> |
||||||
<div class="col-md-offset-3 col-md-7"> |
|
||||||
<div class="checkbox"> |
|
||||||
<label> |
|
||||||
<input name="tls" type="checkbox" {{if .tls}}checked{{end}}> |
<input name="tls" type="checkbox" {{if .tls}}checked{{end}}> |
||||||
<strong>Enable TLS Encryption</strong> |
<strong>{{.i18n.Tr "admin.auths.enable_tls"}}</strong> |
||||||
</label> |
<br> |
||||||
</div> |
|
||||||
</div> |
</div> |
||||||
</div> |
<label></label> |
||||||
</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}}> |
<input name="allowautoregister" type="checkbox" {{if .allowautoregister}}checked{{end}}> |
||||||
<strong>Enable Auto Registration</strong> |
<strong>{{.i18n.Tr "admin.auths.enable_auto_register"}}</strong> |
||||||
</label> |
|
||||||
</div> |
</div> |
||||||
|
<div class="field"> |
||||||
|
<label></label> |
||||||
|
<button class="btn btn-blue btn-large btn-radius">{{.i18n.Tr "admin.auths.new"}}</button> |
||||||
</div> |
</div> |
||||||
|
</form> |
||||||
</div> |
</div> |
||||||
|
<br> |
||||||
<hr/> |
<div class="panel panel-radius"> |
||||||
|
<div class="panel-header"> |
||||||
<div class="form-group"> |
{{.i18n.Tr "admin.auths.tips"}} |
||||||
<div class="col-md-offset-3 col-md-7"> |
|
||||||
<button type="submit" class="btn btn-lg btn-primary">Create new authentication</button> |
|
||||||
</div> |
</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> |
||||||
</form> |
|
||||||
</div> |
</div> |
||||||
</div> |
</div> |
||||||
|
|
||||||
<div class="panel panel-info"> |
|
||||||
<div class="panel-heading"> |
|
||||||
Tips |
|
||||||
</div> |
</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> |
</div> |
||||||
</div> |
</div> |
||||||
<script> |
{{template "ng/base/footer" .}} |
||||||
$(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" .}} |
|
||||||
|
@ -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