Continue working on new admin pages

This commit is contained in:
Unknwon
2014-08-29 20:50:43 +08:00
parent 904bf1a50b
commit d2aff9a46a
27 changed files with 669 additions and 539 deletions

View File

@ -1 +1 @@
0.4.7.0829 Alpha
0.4.8.0829 Alpha

View File

@ -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>
{{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>
<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>
<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="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>
{{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>
{{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}}
</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>
</div>
</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>
<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>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<button class="btn btn-large btn-red btn-radius" id="auth-delete">{{.i18n.Tr "admin.auths.delete"}}</button>
</div>
</form>
</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>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
{{template "base/footer" .}}
{{template "ng/base/footer" .}}

View File

@ -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}}">&laquo; Prev.</a></li>{{end}}
{{if .NextPageNum}}<li><a class="btn btn-medium btn-gray btn-radius" href="/admin/auths?p={{.NextPageNum}}">&raquo; Next</a></li>{{end}}
</ul>
{{end}}
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
{{template "ng/base/footer" .}}

View File

@ -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}}">
{{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="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>
</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>
<input name="tls" type="checkbox" {{if .tls}}checked{{end}}>
<strong>Enable TLS Encryption</strong>
</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>
</div>
</div>
<div class="form-group">
<div class="col-md-offset-3 col-md-7">
<div class="checkbox">
<label>
<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>{{.i18n.Tr "admin.auths.enable_tls"}}</strong>
<br>
</div>
<label></label>
<input name="allowautoregister" type="checkbox" {{if .allowautoregister}}checked{{end}}>
<strong>Enable Auto Registration</strong>
</label>
<strong>{{.i18n.Tr "admin.auths.enable_auto_register"}}</strong>
</div>
<div class="field">
<label></label>
<button class="btn btn-blue btn-large btn-radius">{{.i18n.Tr "admin.auths.new"}}</button>
</div>
</form>
</div>
<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" .}}

View File

@ -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" .}}

View File

@ -6,7 +6,7 @@
<li {{if .PageIsAdminUsers}}class="current"{{end}}><a href="/admin/users">{{.i18n.Tr "admin.users"}}</a></li>
<li {{if .PageIsAdminOrganizations}}class="current"{{end}}><a href="/admin/orgs">{{.i18n.Tr "admin.organizations"}}</a></li>
<li {{if .PageIsAdminRepositories}}class="current"{{end}}><a href="/admin/repos">{{.i18n.Tr "admin.repositories"}}</a></li>
<li {{if .PageIsAdminAuthentication}}class="current"{{end}}><a href="/admin/auths">{{.i18n.Tr "admin.authentication"}}</a></li>
<li {{if .PageIsAdminAuthentications}}class="current"{{end}}><a href="/admin/auths">{{.i18n.Tr "admin.authentication"}}</a></li>
<li {{if .PageIsAdminConfig}}class="current"{{end}}><a href="/admin/config">{{.i18n.Tr "admin.config"}}</a></li>
<li {{if .PageIsAdminMonitor}}class="current"{{end}}><a href="/admin/monitor">{{.i18n.Tr "admin.monitor"}}</a></li>
</ul>

View File

@ -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}}">&laquo; {{.i18n.Tr "admin.prev"}}</a></li>{{end}}
{{if .NextPageNum}}<li><a class="btn btn-medium btn-gray btn-radius" href="/admin/orgs?p={{.NextPageNum}}">&raquo; {{.i18n.Tr "admin.next"}}</a></li>{{end}}
</ul>
{{end}}
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
{{template "ng/base/footer" .}}

View File

@ -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}}">&laquo; Prev.</a></li>{{end}}
{{if .NextPageNum}}<li><a class="btn btn-medium btn-gray btn-radius" href="/admin/repos?p={{.NextPageNum}}">&raquo; Next</a></li>{{end}}
</ul>
{{end}}
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
{{template "ng/base/footer" .}}

View File

@ -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}}">&laquo; Prev.</a></li>{{end}}
{{if .NextPageNum}}<li><a href="/admin/repos?p={{.NextPageNum}}">&raquo; Next</a></li>{{end}}
</ul>
</div>
</div>
</div>
</div>
{{template "base/footer" .}}

View File

@ -20,7 +20,7 @@
<tr>
<th>Id</th>
<th>{{.i18n.Tr "admin.users.name"}}</th>
<th>{{.i18n.Tr "admin.users.email"}}</th>
<th>{{.i18n.Tr "email"}}</th>
<th>{{.i18n.Tr "admin.users.activated"}}</th>
<th>{{.i18n.Tr "admin.users.admin"}}</th>
<th>{{.i18n.Tr "admin.users.repos"}}</th>
@ -51,7 +51,6 @@
{{end}}
</div>
</div>
</div>
</div>
</div>

View File

@ -44,7 +44,7 @@
<input class="ipt ipt-large ipt-radius {{if .Err_Password}}ipt-error{{end}}" id="re-type" name="retype" type="password" required/>
</div>
<div class="field">
<span class="form-label"></span>
<label></label>
<button class="btn btn-blue btn-large btn-radius">{{.i18n.Tr "admin.users.new_account"}}</button>
</div>
</form>