diff --git a/conf/locale/locale_en-US.ini b/conf/locale/locale_en-US.ini
index e7ceb663d..7882fedde 100644
--- a/conf/locale/locale_en-US.ini
+++ b/conf/locale/locale_en-US.ini
@@ -292,6 +292,54 @@ teams.repositories = Team Repositories
teams.add_team_repository = Add Team Repository
teams.remove_repo = Remove
+[admin]
+dashboard = Dashboard
+users = Users
+organizations = Organizations
+repositories = Repositories
+authentication = Authentications
+config = Configuration
+monitor = Monitoring
+
+dashboard.statistic = Statistic
+dashboard.operations = Operations
+dashboard.system_status = System Monitor Status
+dashboard.statistic_info = Gogs database has %d users, %d organizations, %d public keys, %d repositories, %d watches, %d stars, %d actions, %d accesses, %d issues, %d comments, %d social accounts, %d follows, %d mirrors, %d releases, %d login sources, %d webhooks, %d milestones, %d labels, %d hook tasks, %d teams, %d update tasks, %d attachments.
+dashboard.operation_name = Operation Name
+dashboard.operation_switch = Switch
+dashboard.operation_run = Run
+dashboard.clean_unbind_oauth = Clean unbound OAuthes
+dashboard.delete_inactivate_accounts = Delete all inactivate accounts
+dashboard.server_uptime = Server Uptime
+dashboard.current_goroutine = Current Goroutines
+dashboard.current_memory_usage = Current Memory Usage
+dashboard.total_memory_allocated = Total Memory Allocated
+dashboard.memory_obtained = Memory Obtained
+dashboard.pointer_lookup_times = Pointer Lookup Times
+dashboard.memory_allocate_times = Memory Allocate Times
+dashboard.memory_free_times = Memory Free Times
+dashboard.current_heap_usage = Current Heap Usage
+dashboard.heap_memory_obtained = Heap Memory Obtained
+dashboard.heap_memory_idle = Heap Memory Idle
+dashboard.heap_memory_in_use = Heap Memory In Use
+dashboard.heap_memory_released = Heap Memory Released
+dashboard.heap_objects = Heap Objects
+dashboard.bootstrap_stack_usage = Bootstrap Stack Usage
+dashboard.stack_memory_obtained = Stack Memory Obtained
+dashboard.mspan_structures_usage = MSpan Structures Usage
+dashboard.mspan_structures_obtained = MSpan Structures Obtained
+dashboard.mcache_structures_usage = MCache Structures Usage
+dashboard.mcache_structures_obtained = MCache Structures Obtained
+dashboard.profiling_bucket_hash_table_obtained = Profiling Bucket Hash Table Obtained
+dashboard.gc_metadata_obtained = GC Metadada Obtained
+dashboard.other_system_allocation_obtained = Other System Allocation Obtained
+dashboard.next_gc_recycle = Next GC Recycle
+dashboard.last_gc_time = Since Last GC Time
+dashboard.total_gc_time = Total GC Pause
+dashboard.total_gc_pause = Total GC Pause
+dashboard.last_gc_pause = Last GC Pause
+dashboard.gc_times = GC Times
+
[action]
create_repo = created repository %s
commit_repo = pushed to %s at %s
diff --git a/conf/locale/locale_zh-CN.ini b/conf/locale/locale_zh-CN.ini
index 0fa0ef4e4..384c36c02 100644
--- a/conf/locale/locale_zh-CN.ini
+++ b/conf/locale/locale_zh-CN.ini
@@ -292,6 +292,54 @@ teams.repositories = 团队仓库
teams.add_team_repository = 添加团队仓库
teams.remove_repo = 移除仓库
+[admin]
+dashboard = 控制面板
+users = 用户管理
+organizations = 组织管理
+repositories = 仓库管理
+authentication = 权限认证管理
+config = 应用配置管理
+monitor = 应用监控面板
+
+dashboard.statistic = 应用统计数据
+dashboard.operations = 管理员操作
+dashboard.system_status = 系统监视状态
+dashboard.statistic_info = Gogs 数据库统计:%d 位用户,%d 个组织,%d 个公钥,%d 个仓库,%d 个仓库关注,%d 个赞,%d 次行为,%d 条权限记录,%d 张工单,%d 次评论,%d 个社交帐号,%d 个用户关注,%d 个镜像,%d 个版本发布,%d 个登录源,%d 个 Web 钩子,%d 个里程碑,%d 个标签,%d 个钩子任务,%d 个团队,%d 个更新任务,%d 个附件。
+dashboard.operation_name = 操作名称
+dashboard.operation_switch = 开关
+dashboard.operation_run = 执行
+dashboard.clean_unbind_oauth = 清理未绑定社交帐号
+dashboard.delete_inactivate_accounts = 删除所有未激活帐户
+dashboard.server_uptime = 服务运行时间
+dashboard.current_goroutine = 当前 Goroutines 数量
+dashboard.current_memory_usage = 当前内存使用量
+dashboard.total_memory_allocated = 所有被分配的内存
+dashboard.memory_obtained = 内存占用量
+dashboard.pointer_lookup_times = 指针查找次数
+dashboard.memory_allocate_times = 内存分配次数
+dashboard.memory_free_times = 内存释放次数
+dashboard.current_heap_usage = 当前 Heap 内存使用量
+dashboard.heap_memory_obtained = Heap 内存占用量
+dashboard.heap_memory_idle = Heap 内存空闲量
+dashboard.heap_memory_in_use = 正在使用的 Heap 内存
+dashboard.heap_memory_released = 被释放的 Heap 内存
+dashboard.heap_objects = Heap 对象数量
+dashboard.bootstrap_stack_usage = 启动 Stack 使用量
+dashboard.stack_memory_obtained = 被分配的 Stack 内存
+dashboard.mspan_structures_usage = MSpan 结构内存使用量
+dashboard.mspan_structures_obtained = 被分配的 MSpan 结构内存
+dashboard.mcache_structures_usage = MCache 结构内存使用量
+dashboard.mcache_structures_obtained = 被分配的 MCache 结构内存
+dashboard.profiling_bucket_hash_table_obtained = 被分配的剖析哈希表内存
+dashboard.gc_metadata_obtained = 被分配的 GC 元数据内存
+dashboard.other_system_allocation_obtained = 其它被分配的系统内存
+dashboard.next_gc_recycle = 下次 GC 内存回收量
+dashboard.last_gc_time = 距离上次 GC 时间
+dashboard.total_gc_time = GC 执行时间总量
+dashboard.total_gc_pause = GC 暂停时间总量
+dashboard.last_gc_pause = 上次 GC 暂停时间
+dashboard.gc_times = GC 执行次数
+
[action]
create_repo = 创建了仓库 %s
commit_repo = 推送了 %s 分支的代码到 %s
diff --git a/models/models.go b/models/models.go
index 186ddf41a..4e2e08cf8 100644
--- a/models/models.go
+++ b/models/models.go
@@ -143,27 +143,38 @@ func NewEngine() (err error) {
type Statistic struct {
Counter struct {
- User, PublicKey, Repo, Watch, Action, Access,
- Issue, Comment, Mirror, Oauth, Release,
- LoginSource, Webhook, Milestone int64
+ User, Org, PublicKey,
+ Repo, Watch, Star, Action, Access,
+ Issue, Comment, Oauth, Follow,
+ Mirror, Release, LoginSource, Webhook,
+ Milestone, Label, HookTask,
+ Team, UpdateTask, Attachment int64
}
}
func GetStatistic() (stats Statistic) {
stats.Counter.User = CountUsers()
- stats.Counter.Repo = CountRepositories()
+ stats.Counter.Org = CountOrganizations()
stats.Counter.PublicKey, _ = x.Count(new(PublicKey))
+ stats.Counter.Repo = CountRepositories()
stats.Counter.Watch, _ = x.Count(new(Watch))
+ stats.Counter.Star, _ = x.Count(new(Star))
stats.Counter.Action, _ = x.Count(new(Action))
stats.Counter.Access, _ = x.Count(new(Access))
stats.Counter.Issue, _ = x.Count(new(Issue))
stats.Counter.Comment, _ = x.Count(new(Comment))
- stats.Counter.Mirror, _ = x.Count(new(Mirror))
stats.Counter.Oauth, _ = x.Count(new(Oauth2))
+ stats.Counter.Follow, _ = x.Count(new(Follow))
+ stats.Counter.Mirror, _ = x.Count(new(Mirror))
stats.Counter.Release, _ = x.Count(new(Release))
stats.Counter.LoginSource, _ = x.Count(new(LoginSource))
stats.Counter.Webhook, _ = x.Count(new(Webhook))
stats.Counter.Milestone, _ = x.Count(new(Milestone))
+ stats.Counter.Label, _ = x.Count(new(Label))
+ stats.Counter.HookTask, _ = x.Count(new(HookTask))
+ stats.Counter.Team, _ = x.Count(new(Team))
+ stats.Counter.UpdateTask, _ = x.Count(new(UpdateTask))
+ stats.Counter.Attachment, _ = x.Count(new(Attachment))
return
}
diff --git a/models/org.go b/models/org.go
index 1c74c290e..18ed68e6f 100644
--- a/models/org.go
+++ b/models/org.go
@@ -159,6 +159,12 @@ func CreateOrganization(org, owner *User) (*User, error) {
return org, sess.Commit()
}
+// CountOrganizations returns number of organizations.
+func CountOrganizations() int64 {
+ count, _ := x.Where("type=1").Count(new(User))
+ return count
+}
+
// TODO: need some kind of mechanism to record failure.
// DeleteOrganization completely and permanently deletes everything of organization.
func DeleteOrganization(org *User) (err error) {
diff --git a/models/user.go b/models/user.go
index a74d80397..661fb1c22 100644
--- a/models/user.go
+++ b/models/user.go
@@ -45,13 +45,13 @@ var (
// User represents the object of individual and member of organization.
type User struct {
Id int64
- LowerName string `xorm:"unique not null"`
- Name string `xorm:"unique not null"`
+ LowerName string `xorm:"UNIQUE NOT NULL"`
+ Name string `xorm:"UNIQUE NOT NULL"`
FullName string
- Email string `xorm:"unique not null"`
- Passwd string `xorm:"not null"`
+ Email string `xorm:"UNIQUE NOT NULL"`
+ Passwd string `xorm:"NOT NULL"`
LoginType LoginType
- LoginSource int64 `xorm:"not null default 0"`
+ LoginSource int64 `xorm:"NOT NULL DEFAULT 0"`
LoginName string
Type UserType
Orgs []*User `xorm:"-"`
@@ -60,16 +60,16 @@ type User struct {
NumFollowings int
NumStars int
NumRepos int
- Avatar string `xorm:"varchar(2048) not null"`
- AvatarEmail string `xorm:"not null"`
+ Avatar string `xorm:"VARCHAR(2048) NOT NULL"`
+ AvatarEmail string `xorm:"NOT NULL"`
Location string
Website string
IsActive bool
IsAdmin bool
Rands string `xorm:"VARCHAR(10)"`
Salt string `xorm:"VARCHAR(10)"`
- Created time.Time `xorm:"created"`
- Updated time.Time `xorm:"updated"`
+ Created time.Time `xorm:"CREATED"`
+ Updated time.Time `xorm:"UPDATED"`
// For organization.
Description string
diff --git a/public/ng/css/gogs.css b/public/ng/css/gogs.css
index 5ea7cf8f2..dac587006 100644
--- a/public/ng/css/gogs.css
+++ b/public/ng/css/gogs.css
@@ -234,6 +234,24 @@ img.avatar-100 {
.text-black {
color: #444444;
}
+.table {
+ width: 100%;
+ max-width: 100%;
+}
+.table > thead > tr > th,
+.table > tbody > tr > th,
+.table > tfoot > tr > th,
+.table > thead > tr > td,
+.table > tbody > tr > td,
+.table > tfoot > tr > td {
+ border-top: 1px solid #e7eaec;
+ line-height: 1.42857;
+ padding: 8px;
+ vertical-align: top;
+}
+th {
+ text-align: left;
+}
.markdown {
background-color: white;
font-size: 16px;
@@ -1342,6 +1360,7 @@ The register and sign-in page style
width: 100%;
list-style: none;
}
+#admin-wrapper,
#setting-wrapper {
padding-bottom: 100px;
}
@@ -1906,3 +1925,26 @@ textarea#issue-add-content {
height: 40px;
line-height: 40px;
}
+.admin-desc {
+ padding: 10px 20px;
+}
+.admin-table {
+ padding: 15px 20px 5px 20px;
+}
+.dl-horizontal dt {
+ float: left;
+ width: 160px;
+ clear: left;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+.admin-dl-horizontal {
+ padding: 20px;
+}
+.admin-dl-horizontal > dt {
+ width: 250px;
+}
+.admin-dl-horizontal > dd {
+ margin-left: 240px;
+}
diff --git a/public/ng/css/ui.css b/public/ng/css/ui.css
index a60e2c841..644fd8388 100644
--- a/public/ng/css/ui.css
+++ b/public/ng/css/ui.css
@@ -261,6 +261,7 @@ optgroup {
font-weight: bold;
}
table {
+ background-color: transparent;
border-collapse: collapse;
border-spacing: 0;
}
@@ -683,8 +684,7 @@ ul.menu-radius > li:last-child > a {
background-color: white;
}
.panel .panel-body .panel-desc {
- padding: 0 40px;
- margin-bottom: 20px;
+ padding: 0 40px 20px 40px;
}
.panel .panel-content {
padding: 1em 1.2em;
diff --git a/public/ng/less/gogs.less b/public/ng/less/gogs.less
index 7a9484082..a5cd26c42 100644
--- a/public/ng/less/gogs.less
+++ b/public/ng/less/gogs.less
@@ -6,4 +6,5 @@
@import "gogs/repository";
@import "gogs/settings";
@import "gogs/issue";
-@import "gogs/organization";
\ No newline at end of file
+@import "gogs/organization";
+@import "gogs/admin";
\ No newline at end of file
diff --git a/public/ng/less/gogs/admin.less b/public/ng/less/gogs/admin.less
new file mode 100644
index 000000000..d327f681f
--- /dev/null
+++ b/public/ng/less/gogs/admin.less
@@ -0,0 +1,23 @@
+.admin-desc {
+ padding: 10px 20px;
+}
+.admin-table {
+ padding: 15px 20px 5px 20px;
+}
+.dl-horizontal dt {
+ float: left;
+ width: 160px;
+ clear: left;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+.admin-dl-horizontal {
+ padding: 20px;
+ > dt {
+ width: 250px;
+ }
+ > dd {
+ margin-left: 240px;
+ }
+}
\ No newline at end of file
diff --git a/public/ng/less/gogs/base.less b/public/ng/less/gogs/base.less
index 1174e8e7a..7ef7d24cc 100644
--- a/public/ng/less/gogs/base.less
+++ b/public/ng/less/gogs/base.less
@@ -250,4 +250,22 @@ clear: both;
}
.text-black {
color: #444444;
+}
+.table {
+ width: 100%;
+ max-width: 100%;
+}
+.table > thead > tr > th,
+.table > tbody > tr > th,
+.table > tfoot > tr > th,
+.table > thead > tr > td,
+.table > tbody > tr > td,
+.table > tfoot > tr > td {
+ border-top: 1px solid #e7eaec;
+ line-height: 1.42857;
+ padding: 8px;
+ vertical-align: top;
+}
+th {
+ text-align: left;
}
\ No newline at end of file
diff --git a/public/ng/less/gogs/settings.less b/public/ng/less/gogs/settings.less
index ad50e4ffa..cc922e3ff 100644
--- a/public/ng/less/gogs/settings.less
+++ b/public/ng/less/gogs/settings.less
@@ -1,5 +1,5 @@
@import "../ui/var";
-
+#admin-wrapper,
#setting-wrapper {
padding-bottom: 100px;
}
diff --git a/public/ng/less/ui/panel.less b/public/ng/less/ui/panel.less
index dc77715d5..c4bba16e2 100644
--- a/public/ng/less/ui/panel.less
+++ b/public/ng/less/ui/panel.less
@@ -10,8 +10,7 @@
.panel-body {
background-color: white;
.panel-desc {
- padding: 0 40px;
- margin-bottom: 20px;
+ padding: 0 40px 20px 40px;
}
}
.panel-content {
diff --git a/public/ng/less/ui/reset.less b/public/ng/less/ui/reset.less
index af497ca14..36906ce5a 100644
--- a/public/ng/less/ui/reset.less
+++ b/public/ng/less/ui/reset.less
@@ -321,10 +321,10 @@ optgroup {
}
// table elements
-
table {
- border-collapse: collapse;
- border-spacing: 0;
+ background-color: transparent;
+ border-collapse: collapse;
+ border-spacing: 0;
}
td,
diff --git a/routers/admin/admin.go b/routers/admin/admin.go
index 4091cb899..ebc446b82 100644
--- a/routers/admin/admin.go
+++ b/routers/admin/admin.go
@@ -123,8 +123,9 @@ const (
)
func Dashboard(ctx *middleware.Context) {
- ctx.Data["Title"] = "Admin Dashboard"
- ctx.Data["PageIsDashboard"] = true
+ ctx.Data["Title"] = ctx.Tr("admin.dashboard")
+ ctx.Data["PageIsAdmin"] = true
+ ctx.Data["PageIsAdminDashboard"] = true
// Run operation.
op, _ := com.StrTo(ctx.Query("op")).Int()
diff --git a/templates/admin/dashboard.tmpl b/templates/admin/dashboard.tmpl
index aa2080d83..81c262e2e 100644
--- a/templates/admin/dashboard.tmpl
+++ b/templates/admin/dashboard.tmpl
@@ -1,143 +1,151 @@
-{{template "base/head" .}}
-{{template "base/navbar" .}}
-
- {{template "admin/nav" .}}
-
- {{template "base/alert" .}}
-
-
- Statistic
-
-
-
- Gogs database has {{.Stats.Counter.User}} users, {{.Stats.Counter.PublicKey}} SSH keys, {{.Stats.Counter.Repo}} repositories, {{.Stats.Counter.Watch}} watches, {{.Stats.Counter.Action}} actions, {{.Stats.Counter.Access}} accesses, {{.Stats.Counter.Issue}} issues, {{.Stats.Counter.Comment}} comments, {{.Stats.Counter.Mirror}} mirrors, {{.Stats.Counter.Oauth}} oauthes, {{.Stats.Counter.Release}} releases, {{.Stats.Counter.LoginSource}} login sources, {{.Stats.Counter.Webhook}} webhooks, {{.Stats.Counter.Milestone}} milestones.
-
-
-
-
-
- Operations
-
-
-
-
-
-
- Name
- Op.
-
-
-
-
- Clean unbind OAuthes
- Run
-
-
- Delete inactivate accounts
- Run
-
-
-
-
-
-
-
-
- System Monitor Status
-
-
-
-
- Server Uptime
- {{.SysStatus.Uptime}}
-
- Current Goroutines
- {{.SysStatus.NumGoroutine}}
-
-
- Current Memory Usage
- {{.SysStatus.MemAllocated}}
-
- Total Memory Allocated
- {{.SysStatus.MemTotal}}
-
- Memory Obtained
- {{.SysStatus.MemSys}}
-
- Pointer Lookup Times
- {{.SysStatus.Lookups}}
-
- Memory Allocate Times
- {{.SysStatus.MemMallocs}}
-
- Memory Free Times
- {{.SysStatus.MemFrees}}
-
-
- Current Heap Usage
- {{.SysStatus.HeapAlloc}}
-
- Heap Memory Obtained
- {{.SysStatus.HeapSys}}
-
- Heap Memory Idle
- {{.SysStatus.HeapIdle}}
-
- Heap Memory In Use
- {{.SysStatus.HeapInuse}}
-
- Heap Memory Released
- {{.SysStatus.HeapReleased}}
-
- Heap Objects
- {{.SysStatus.HeapObjects}}
-
-
- Bootstrap Stack Usage
- {{.SysStatus.StackInuse}}
-
- Stack Memory Obtained
- {{.SysStatus.StackSys}}
-
- MSpan Structures Usage
- {{.SysStatus.MSpanInuse}}
-
- MSpan Structures Obtained
- {{.SysStatus.HeapSys}}
-
- MCache Structures Usage
- {{.SysStatus.MCacheInuse}}
-
- MCache Structures Obtained
- {{.SysStatus.MCacheSys}}
-
- Profiling Bucket Hash Table Obtained
- {{.SysStatus.BuckHashSys}}
-
- GC Metadada Obtained
- {{.SysStatus.GCSys}}
-
- Other System Allocation Obtained
- {{.SysStatus.OtherSys}}
-
-
- Next GC Recycle
- {{.SysStatus.NextGC}}
-
- Last GC Time
- {{.SysStatus.LastGC}} ago
-
- Total GC Pause
- {{.SysStatus.PauseTotalNs}}
+{{template "ng/base/head" .}}
+{{template "ng/base/header" .}}
+
+
+
+ {{template "admin/nav" .}}
+
+
+ {{template "ng/base/alert" .}}
+
+
+
+
+
+ {{.i18n.Tr "admin.dashboard.statistic_info" .Stats.Counter.User .Stats.Counter.Org .Stats.Counter.PublicKey .Stats.Counter.Repo .Stats.Counter.Watch .Stats.Counter.Star .Stats.Counter.Action .Stats.Counter.Access .Stats.Counter.Issue .Stats.Counter.Comment .Stats.Counter.Oauth .Stats.Counter.Follow .Stats.Counter.Mirror .Stats.Counter.Release .Stats.Counter.LoginSource .Stats.Counter.Webhook .Stats.Counter.Milestone .Stats.Counter.Label .Stats.Counter.HookTask .Stats.Counter.Team .Stats.Counter.UpdateTask .Stats.Counter.Attachment | Str2html}}
+
+
+
+
+
+
+
+
+
+ {{.i18n.Tr "admin.dashboard.server_uptime"}}
+ {{.SysStatus.Uptime}}
+
+ {{.i18n.Tr "admin.dashboard.current_goroutine"}}
+ {{.SysStatus.NumGoroutine}}
+
+
+ {{.i18n.Tr "admin.dashboard.current_memory_usage"}}
+ {{.SysStatus.MemAllocated}}
+
+ {{.i18n.Tr "admin.dashboard.total_memory_allocated"}}
+ {{.SysStatus.MemTotal}}
+
+ {{.i18n.Tr "admin.dashboard.memory_obtained"}}
+ {{.SysStatus.MemSys}}
+
+ {{.i18n.Tr "admin.dashboard.pointer_lookup_times"}}
+ {{.SysStatus.Lookups}}
+
+ {{.i18n.Tr "admin.dashboard.memory_allocate_times"}}
+ {{.SysStatus.MemMallocs}}
+
+ {{.i18n.Tr "admin.dashboard.memory_free_times"}}
+ {{.SysStatus.MemFrees}}
+
+
+ {{.i18n.Tr "admin.dashboard.current_heap_usage"}}
+ {{.SysStatus.HeapAlloc}}
+
+ {{.i18n.Tr "admin.dashboard.heap_memory_obtained"}}
+ {{.SysStatus.HeapSys}}
+
+ {{.i18n.Tr "admin.dashboard.heap_memory_idle"}}
+ {{.SysStatus.HeapIdle}}
+
+ {{.i18n.Tr "admin.dashboard.heap_memory_in_use"}}
+ {{.SysStatus.HeapInuse}}
+
+ {{.i18n.Tr "admin.dashboard.heap_memory_released"}}
+ {{.SysStatus.HeapReleased}}
+
+ {{.i18n.Tr "admin.dashboard.heap_objects"}}
+ {{.SysStatus.HeapObjects}}
+
+
+ {{.i18n.Tr "admin.dashboard.bootstrap_stack_usage"}}
+ {{.SysStatus.StackInuse}}
+
+ {{.i18n.Tr "admin.dashboard.stack_memory_obtained"}}
+ {{.SysStatus.StackSys}}
+
+ {{.i18n.Tr "admin.dashboard.mspan_structures_usage"}}
+ {{.SysStatus.MSpanInuse}}
+
+ {{.i18n.Tr "admin.dashboard.mspan_structures_obtained"}}
+ {{.SysStatus.HeapSys}}
+
+ {{.i18n.Tr "admin.dashboard.mcache_structures_usage"}}
+ {{.SysStatus.MCacheInuse}}
+
+ {{.i18n.Tr "admin.dashboard.mcache_structures_obtained"}}
+ {{.SysStatus.MCacheSys}}
+
+ {{.i18n.Tr "admin.dashboard.profiling_bucket_hash_table_obtained"}}
+ {{.SysStatus.BuckHashSys}}
+
+ {{.i18n.Tr "admin.dashboard.gc_metadata_obtained"}}
+ {{.SysStatus.GCSys}}
+
+ {{.i18n.Tr "admin.dashboard.other_system_allocation_obtained"}}
+ {{.SysStatus.OtherSys}}
+
+
+ {{.i18n.Tr "admin.dashboard.next_gc_recycle"}}
+ {{.SysStatus.NextGC}}
+
+ {{.i18n.Tr "admin.dashboard.last_gc_time"}}
+ {{.SysStatus.LastGC}}
+
+ {{.i18n.Tr "admin.dashboard.total_gc_pause"}}
+ {{.SysStatus.PauseTotalNs}}
- Last GC Pause
- {{.SysStatus.PauseNs}}
+ {{.i18n.Tr "admin.dashboard.last_gc_pause"}}
+ {{.SysStatus.PauseNs}}
- GC Times
- {{.SysStatus.NumGC}}
-
+
{{.i18n.Tr "admin.dashboard.gc_times"}}
+
{{.SysStatus.NumGC}}
+
+
+
+
+
-{{template "base/footer" .}}
\ No newline at end of file
+{{template "ng/base/footer" .}}
\ No newline at end of file
diff --git a/templates/admin/nav.tmpl b/templates/admin/nav.tmpl
index b78e0bd17..fa9b173e0 100644
--- a/templates/admin/nav.tmpl
+++ b/templates/admin/nav.tmpl
@@ -1,10 +1,14 @@
-
-
+
\ No newline at end of file
diff --git a/templates/base/navbar.tmpl b/templates/base/navbar.tmpl
index dcb9a644c..75096a4e4 100644
--- a/templates/base/navbar.tmpl
+++ b/templates/base/navbar.tmpl
@@ -27,7 +27,9 @@
- {{if .IsAdmin}}
{{end}}
+ {{if .IsAdmin}}
+
+ {{end}}
-
diff --git a/templates/ng/base/header.tmpl b/templates/ng/base/header.tmpl
index ce1e17031..31533d272 100644
--- a/templates/ng/base/header.tmpl
+++ b/templates/ng/base/header.tmpl
@@ -19,7 +19,7 @@
{{if .IsAdmin}}
-
+
{{end}}
diff --git a/templates/repo/settings/options.tmpl b/templates/repo/settings/options.tmpl
index 4cc67c9d5..fb6cda2aa 100644
--- a/templates/repo/settings/options.tmpl
+++ b/templates/repo/settings/options.tmpl
@@ -9,7 +9,7 @@
{{template "ng/base/alert" .}}