]> source.dussan.org Git - gitea.git/commitdiff
Finish all new admin pages.
authorUnknwon <joe2010xtmf@163.com>
Sat, 30 Aug 2014 12:49:51 +0000 (20:49 +0800)
committerUnknwon <joe2010xtmf@163.com>
Sat, 30 Aug 2014 12:49:51 +0000 (20:49 +0800)
12 files changed:
README.md
README_ZH.md
conf/locale/locale_en-US.ini
conf/locale/locale_zh-CN.ini
gogs.go
modules/setting/setting.go
routers/admin/admin.go
templates/.VERSION
templates/admin/config.tmpl
templates/admin/monitor.tmpl [new file with mode: 0644]
templates/admin/monitor/cron.tmpl [deleted file]
templates/admin/monitor/process.tmpl [deleted file]

index 0d9e7338460ba286b37a9cbe8eb3573044b72f6d..38e081f464205a5ee9a20a0009abdabf603f19cd 100644 (file)
--- a/README.md
+++ b/README.md
@@ -5,7 +5,7 @@ Gogs(Go Git Service) is a painless self-hosted Git Service written in Go.
 
 ![Demo](http://gowalker.org/public/gogs_demo.gif)
 
-##### Current version: 0.4.8 Beta
+##### Current version: 0.4.9 Beta
 
 ### NOTICES
 
index 3bf67f38d803d33361407433aed930c6372369fc..b830d416435e9d0f2b169a8eb8bc85f89b67fa50 100644 (file)
@@ -5,7 +5,7 @@ Gogs(Go Git Service) 是一个基于 Go 语言的自助 Git 服务。
 
 ![Demo](http://gowalker.org/public/gogs_demo.gif)
 
-##### 当前版本:0.4.8 Beta
+##### 当前版本:0.4.9 Beta
 
 ## 开发目的
 
index f14958e4b6f895da9fd975f59af96b997cca71c4..c69f68c311ca513eff9d3abf73492612a3fc44f0 100644 (file)
@@ -404,6 +404,80 @@ auths.update_success = Authorization setting has been successfully updated.
 auths.update = Update Authorization Setting
 auths.delete = Delete This Authorization
 
+config.server_config = Server Configuration
+config.app_name = Application Name
+config.app_ver = Application Version
+config.app_url = Application URL
+config.domain = Domain
+config.offline_mode = Offline Mode
+config.disable_router_log = Disable Router Log
+config.run_user = Run User
+config.run_mode = Run Mode
+config.repo_root_path = Repository Root Path
+config.static_file_root_path = Static File Root Path
+config.log_file_root_path = Log File Root Path
+config.script_type = Script Type
+config.reverse_auth_user = Reverse Authentication User
+config.db_config = Database Configuration
+config.db_type = Type
+config.db_host = Host
+config.db_name = Name
+config.db_user = User
+config.db_ssl_mode = SSL Mode
+config.db_ssl_mode_helper = (for "postgres" only)
+config.db_path = Path
+config.db_path_helper = (for "sqlite3" only)
+config.service_config = Service Configuration
+config.register_email_confirm = Register Email Confirmation
+config.disable_register = Disable Registration
+config.require_sign_in_view = Require Sign In View
+config.mail_notify = Mail Notification
+config.enable_cache_avatar = Enable Cache Avatar
+config.active_code_lives = Active Code Lives
+config.reset_password_code_lives = Reset Password Code Lives
+config.webhook_config = Webhook Configuration
+config.task_interval = Task Interval
+config.deliver_timeout = Deliver Timeout
+config.mailer_config = Mailer Configuration
+config.mailer_enabled = Enabled
+config.mailer_name = Name
+config.mailer_host = Host
+config.mailer_user = User
+config.oauth_config = OAuth Configuration
+config.oauth_enabled = Enabled
+config.cache_config = Cache Configuration
+config.cache_adapter = Cache Adapter
+config.cache_interval = Cache Interval
+config.cache_conn = Cache Connection
+config.session_config = Session Configuration
+config.session_provider = Session Provider
+config.provider_config = Provider Config
+config.cookie_name = Cookie Name
+config.enable_set_cookie = Enable Set Cookie
+config.gc_interval_time = GC Interval Time
+config.session_life_time = Session Life Time
+config.https_only = HTTPS Only
+config.cookie_life_time = Cookie Life Time
+config.session_hash_function = Session ID Hash Function
+config.session_hash_key = Session ID Hash Key
+config.picture_config = Picture Configuration
+config.picture_service = Picture Service
+config.disable_gravatar = Disable Gravatar
+config.log_config = Log Configuration
+config.log_mode = Log Mode
+config.log_config = Log Config
+
+monitor.cron = Cron Tasks
+monitor.name = Name
+monitor.schedule = Schedule
+monitor.next = Next Time
+monitor.previous = Previous Time
+monitor.execute_times = Execute Times
+monitor.process = Running Processes
+monitor.desc = Description
+monitor.start = Start Time
+monitor.execute_time = Execution Time
+
 [action]
 create_repo = created repository <a href="/%s">%s</a>
 commit_repo = pushed to <a href="/%s/src/%s">%s</a> at <a href="/%s">%s</a>
@@ -428,6 +502,8 @@ days = %d days %s
 weeks = %d weeks %s
 months = %d months %s
 years = %d years %s
+raw_seconds = seconds
+raw_minutes = minutes
 
 
 
index 310bc8c96859efd6ef007ff4ae8b7598723e391b..e39feefde76126019904292624ec7610868552f4 100644 (file)
@@ -403,6 +403,80 @@ auths.update_success = 授权认证设置更新成功!
 auths.update = 更新授权认证信息
 auths.delete = 删除该授权认证
 
+config.server_config = 服务器配置
+config.app_name = 应用名称
+config.app_ver = 应用版本
+config.app_url = 应用 URL
+config.domain = 应用域名
+config.offline_mode = 离线模式
+config.disable_router_log = 关闭路由日志
+config.run_user = 运行用户
+config.run_mode = 运行模式
+config.repo_root_path = 仓库根目录
+config.static_file_root_path = 静态文件根目录
+config.log_file_root_path = 日志文件根目录
+config.script_type = 脚本类型
+config.reverse_auth_user = 反向代理认证
+config.db_config = 数据库配置
+config.db_type = 数据库类型
+config.db_host = 主机地址
+config.db_name = 数据库名称
+config.db_user = 连接用户
+config.db_ssl_mode = SSL 模式
+config.db_ssl_mode_helper = (仅限 "postgres" 使用)
+config.db_path = 数据库路径
+config.db_path_helper = (仅限 "sqlite3" 使用)
+config.service_config = 服务配置
+config.register_email_confirm = 注册邮件确认
+config.disable_register = 关闭注册功能
+config.require_sign_in_view = 强制登录浏览
+config.mail_notify = 邮件通知提醒
+config.enable_cache_avatar = 开启缓存头像
+config.active_code_lives = 激活用户链接有效期
+config.reset_password_code_lives = 重置密码链接有效期
+config.webhook_config = Web 钩子配置
+config.task_interval = 任务周期
+config.deliver_timeout = 推送超时
+config.mailer_config = 邮件配置
+config.mailer_enabled = 启用服务
+config.mailer_name = 发送者名称
+config.mailer_host = 邮件主机地址
+config.mailer_user = 发送者帐号
+config.oauth_config = 社交帐号配置
+config.oauth_enabled = 启用服务
+config.cache_config = Cache 配置
+config.cache_adapter = Cache 适配器
+config.cache_interval = Cache 周期
+config.cache_conn = Cache 连接字符串
+config.session_config = Session 配置
+config.session_provider = Session 提供者
+config.provider_config = 提供者配置
+config.cookie_name = Cookie 名称
+config.enable_set_cookie = 启用设置 Cookie
+config.gc_interval_time = GC 周期
+config.session_life_time = Session 生命周期
+config.https_only = 仅限 HTTPS
+config.cookie_life_time = Cookie 生命周期
+config.session_hash_function = Session ID 哈希函数
+config.session_hash_key = Session ID 哈希健值
+config.picture_config = 图片配置
+config.picture_service = 图片服务
+config.disable_gravatar = 禁用 Gravatar 头像
+config.log_config = 日志配置
+config.log_mode = 日志模式
+config.log_config = 日志配置
+
+monitor.cron = Cron 任务
+monitor.name = 任务名称
+monitor.schedule = 任务安排
+monitor.next = 下次执行时间
+monitor.previous = 上次执行时间
+monitor.execute_times = 执行次数
+monitor.process = 运行中进程
+monitor.desc = 进程描述
+monitor.start = 开始时间
+monitor.execute_time = 已执行时间
+
 [action]
 create_repo = 创建了仓库 <a href="/%s">%s</a>
 commit_repo = 推送了 <a href="/%s/src/%s">%s</a> 分支的代码到 <a href="/%s">%s</a>
@@ -427,6 +501,8 @@ days = %d 天%s
 weeks = %d 周%s
 months = %d 月%s
 years = %d 年%s
+raw_seconds = 秒
+raw_minutes = 分钟
 
 
 
diff --git a/gogs.go b/gogs.go
index 2e23ecfc40b6532793254d346a82d8486566f2ba..4361bdb204d8385102cc901852bf0fabec6d5fed 100644 (file)
--- a/gogs.go
+++ b/gogs.go
@@ -17,7 +17,7 @@ import (
        "github.com/gogits/gogs/modules/setting"
 )
 
-const APP_VER = "0.4.8.0829 Alpha"
+const APP_VER = "0.4.9.0830 Alpha"
 
 func init() {
        runtime.GOMAXPROCS(runtime.NumCPU())
index deb16518957afb59a19c1ad0e24addfb2e72123c..ebc1020a333969ea53b0fbec3c9ddd2d2dfe707f 100644 (file)
@@ -371,7 +371,7 @@ func newSessionService() {
        SessionConfig.Maxlifetime = Cfg.MustInt64("session", "SESSION_LIFE_TIME", 86400)
        SessionConfig.SessionIDHashFunc = Cfg.MustValueRange("session", "SESSION_ID_HASHFUNC",
                "sha1", []string{"sha1", "sha256", "md5"})
-       SessionConfig.SessionIDHashKey = Cfg.MustValue("session", "SESSION_ID_HASHKEY")
+       SessionConfig.SessionIDHashKey = Cfg.MustValue("session", "SESSION_ID_HASHKEY", string(com.RandomCreateBytes(16)))
 
        if SessionProvider == "file" {
                os.MkdirAll(path.Dir(SessionConfig.ProviderConfig), os.ModePerm)
index b2c932c98f7b0c92a65cc494552b28e4dd7baa3a..756d76c0f793151c6e86b296119d8a4c5556e07d 100644 (file)
@@ -22,10 +22,9 @@ import (
 )
 
 const (
-       DASHBOARD       base.TplName = "admin/dashboard"
-       CONFIG          base.TplName = "admin/config"
-       MONITOR_PROCESS base.TplName = "admin/monitor/process"
-       MONITOR_CRON    base.TplName = "admin/monitor/cron"
+       DASHBOARD base.TplName = "admin/dashboard"
+       CONFIG    base.TplName = "admin/config"
+       MONITOR   base.TplName = "admin/monitor"
 )
 
 var (
@@ -155,8 +154,9 @@ func Dashboard(ctx *middleware.Context) {
 }
 
 func Config(ctx *middleware.Context) {
-       ctx.Data["Title"] = "Server Configuration"
-       ctx.Data["PageIsConfig"] = true
+       ctx.Data["Title"] = ctx.Tr("admin.users")
+       ctx.Data["PageIsAdmin"] = true
+       ctx.Data["PageIsAdminConfig"] = true
 
        ctx.Data["AppUrl"] = setting.AppUrl
        ctx.Data["Domain"] = setting.Domain
@@ -212,18 +212,10 @@ func Config(ctx *middleware.Context) {
 }
 
 func Monitor(ctx *middleware.Context) {
-       ctx.Data["Title"] = "Monitoring Center"
-       ctx.Data["PageIsMonitor"] = true
-
-       tab := ctx.Query("tab")
-       switch tab {
-       case "process":
-               ctx.Data["PageIsMonitorProcess"] = true
-               ctx.Data["Processes"] = process.Processes
-               ctx.HTML(200, MONITOR_PROCESS)
-       default:
-               ctx.Data["PageIsMonitorCron"] = true
-               ctx.Data["Entries"] = cron.ListEntries()
-               ctx.HTML(200, MONITOR_CRON)
-       }
+       ctx.Data["Title"] = ctx.Tr("admin.monitor")
+       ctx.Data["PageIsAdmin"] = true
+       ctx.Data["PageIsAdminMonitor"] = true
+       ctx.Data["Processes"] = process.Processes
+       ctx.Data["Entries"] = cron.ListEntries()
+       ctx.HTML(200, MONITOR)
 }
index 6b8f7aafd27ce75f6dc7a20b883ccfcfdffac533..681da0e6de21c74f2490bc7eeff1971c12bc73cb 100644 (file)
@@ -1 +1 @@
-0.4.8.0829 Alpha
\ No newline at end of file
+0.4.9.0830 Alpha
\ No newline at end of file
index 34e710bf621072e0abb658e1448201ff7fae091d..e5a210c200e39db349d28ec8186bd9da04b95c08 100644 (file)
-{{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">
-                Server Configuration
-            </div>
-
-            <div class="panel-body">
-                <dl class="dl-horizontal admin-dl-horizontal">
-                    <dt>Application Name</dt>
-                    <dd>{{AppName}}</dd>
-                    <dt>Application Version</dt>
-                    <dd>{{AppVer}}</dd>
-                    <dt>Application URL</dt>
-                    <dd>{{.AppUrl}}</dd>
-                    <dt>Domain</dt>
-                    <dd>{{.Domain}}</dd>
-                    <dt>Offline Mode</dt>
-                    <dd><i class="fa fa{{if .OfflineMode}}-check{{end}}-square-o"></i></dd>
-                    <dt>Disable Router Log</dt>
-                    <dd><i class="fa fa{{if .DisableRouterLog}}-check{{end}}-square-o"></i></dd>
-                    <hr/>
-                    <dt>Run User</dt>
-                    <dd>{{.RunUser}}</dd>
-                    <dt>Run Mode</dt>
-                    <dd>{{.RunMode}}</dd>
-                    <hr/>
-                    <dt>Repository Root Path</dt>
-                    <dd>{{.RepoRootPath}}</dd>
-                    <dt>Static File Root Path</dt>
-                    <dd>{{.StaticRootPath}}</dd>
-                    <dt>Log File Root Path</dt>
-                    <dd>{{.LogRootPath}}</dd>
-                    <dt>Script Type</dt>
-                    <dd>{{.ScriptType}}</dd>
-                    <dt>Reverse Authentication User</dt>
-                    <dd>{{.ReverseProxyAuthUser}}</dd>
-                </dl>
-            </div>
-        </div>
-
-        <div class="panel panel-default">
-            <div class="panel-heading">
-                Database Configuration
-            </div>
-
-            <div class="panel-body">
-                <dl class="dl-horizontal admin-dl-horizontal">
-                    <dt>Type</dt>
-                    <dd>{{.DbCfg.Type}}</dd>
-                    <dt>Host</dt>
-                    <dd>{{.DbCfg.Host}}</dd>
-                    <dt>Name</dt>
-                    <dd>{{.DbCfg.Name}}</dd>
-                    <dt>User</dt>
-                    <dd>{{.DbCfg.User}}</dd>
-                    <dt>SslMode</dt>
-                    <dd>{{.DbCfg.SslMode}} (for "postgres" only)</dd>
-                    <dt>Path</dt>
-                    <dd>{{.DbCfg.Path}} (for "sqlite3" only)</dd>
-                </dl>
-            </div>
-        </div>
-
-        <div class="panel panel-default">
-            <div class="panel-heading">
-                Service Configuration
-            </div>
-
-            <div class="panel-body">
-                <dl class="dl-horizontal admin-dl-horizontal">
-                    <dt>Register Email Confirmation</dt>
-                    <dd><i class="fa fa{{if .Service.RegisterEmailConfirm}}-check{{end}}-square-o"></i></dd>
-                    <dt>Disable Registration</dt>
-                    <dd><i class="fa fa{{if .Service.DisableRegistration}}-check{{end}}-square-o"></i></dd>
-                    <dt>Require Sign In View</dt>
-                    <dd><i class="fa fa{{if .Service.RequireSignInView}}-check{{end}}-square-o"></i></dd>
-                    <dt>Mail Notification</dt>
-                    <dd><i class="fa fa{{if .Service.EnableNotifyMail}}-check{{end}}-square-o"></i></dd>
-                    <dt>Enable Cache Avatar</dt>
-                    <dd><i class="fa fa{{if .Service.EnableCacheAvatar}}-check{{end}}-square-o"></i></dd>
-                    <hr/>
-                    <dt>Active Code Lives</dt>
-                    <dd>{{.Service.ActiveCodeLives}} minutes</dd>
-                    <dt>Reset Password Code Lives</dt>
-                    <dd>{{.Service.ResetPwdCodeLives}} minutes</dd>
-                </dl>
-            </div>
-        </div>
-
-        <div class="panel panel-default">
-            <div class="panel-heading">
-                Webhook Configuration
-            </div>
-
-            <div class="panel-body">
-                <dl class="dl-horizontal admin-dl-horizontal">
-                    <dt>Task Interval</dt>
-                    <dd>{{.WebhookTaskInterval}} minutes</dd>
-                    <dt>Deliver Timeout</dt>
-                    <dd>{{.WebhookDeliverTimeout}} seconds</dd>
-                </dl>
-            </div>
-        </div>
-
-        <div class="panel panel-default">
-            <div class="panel-heading">
-                Mailer Configuration
-            </div>
-
-            <div class="panel-body">
-                <dl class="dl-horizontal admin-dl-horizontal">
-                    <dt>Enabled</dt>
-                    <dd><i class="fa fa{{if .MailerEnabled}}-check{{end}}-square-o"></i></dd>
-                    {{if .MailerEnabled}}<dt>Name</dt>
-                    <dd>{{.Mailer.Name}}</dd>
-                    <dt>Host</dt>
-                    <dd>{{.Mailer.Host}}</dd>
-                    <dt>User</dt>
-                    <dd>{{.Mailer.User}}</dd>{{end}}
-                </dl>
-            </div>
-        </div>
-
-        <div class="panel panel-default">
-            <div class="panel-heading">
-                OAuth Configuration
-            </div>
-
-            <div class="panel-body">
-                <dl class="dl-horizontal admin-dl-horizontal">
-                    <dt>Enabled</dt>
-                    <dd><i class="fa fa{{if .OauthEnabled}}-check{{end}}-square-o"></i></dd>
-                    {{if .OauthEnabled}}<dt>GitHub</dt>
-                    <dd><i class="fa fa{{if .Oauther.GitHub}}-check{{end}}-square-o"></i></dd>
-                    <dt>Google</dt>
-                    <dd><i class="fa fa{{if .Oauther.Google}}-check{{end}}-square-o"></i></dd>
-                    <dt>Tencent QQ</dt>
-                    <dd><i class="fa fa{{if .Oauther.Tencent}}-check{{end}}-square-o"></i></dd>
-                    <dt>Weibo</dt>
-                    <dd><i class="fa fa{{if .Oauther.Weibo}}-check{{end}}-square-o"></i></dd>
-                    {{end}}
-                </dl>
-            </div>
-        </div>
-
-        <div class="panel panel-default">
-            <div class="panel-heading">
-                Cache Configuration
-            </div>
-
-            <div class="panel-body">
-                <dl class="dl-horizontal admin-dl-horizontal">
-                    <dt>Cache Adapter</dt>
-                    <dd>{{.CacheAdapter}}</dd>
-                    <dt>Cache Config</dt>
-                    <dd><div style="padding-top: 5px;"><pre>{{.CacheConfig}}</pre></div></dd>
-                </dl>
-            </div>
-        </div>
-
-        <div class="panel panel-default">
-            <div class="panel-heading">
-                Session Configuration
-            </div>
-
-            <div class="panel-body">
-                <dl class="dl-horizontal admin-dl-horizontal">
-                    <dt>Session Provider</dt>
-                    <dd>{{.SessionProvider}}</dd>
-                    <dt>Cookie Name</dt>
-                    <dd>{{.SessionConfig.CookieName}}</dd>
-                    <dt>Enable Set Cookie</dt>
-                    <dd><i class="fa fa{{if .SessionConfig.EnableSetCookie}}-check{{end}}-square-o"></i></dd>
-                    <dt>GC Interval Time</dt>
-                    <dd>{{.SessionConfig.Gclifetime}} seconds</dd>
-                    <dt>Session Life Time</dt>
-                    <dd>{{.SessionConfig.Maxlifetime}} seconds</dd>
-                    <dt>HTTPS Only</dt>
-                    <dd><i class="fa fa{{if .SessionConfig.Secure}}-check{{end}}-square-o"></i></dd>
-                    <dt>Cookie Life Time</dt>
-                    <dd>{{.SessionConfig.CookieLifeTime}} seconds</dd>
-                    <dt>Session ID Hash Function</dt>
-                    <dd>{{.SessionConfig.SessionIDHashFunc}}</dd>
-                    <dt>Session ID Hash Key</dt>
-                    <dd>{{.SessionConfig.SessionIDHashKey}}</dd>
-                    <dt>Provider Config</dt>
-                    <dd>{{.SessionConfig.ProviderConfig}}</dd>
-                </dl>
-            </div>
-        </div>
-
-        <div class="panel panel-default">
-            <div class="panel-heading">
-                Picture Configuration
-            </div>
-
-            <div class="panel-body">
-                <dl class="dl-horizontal admin-dl-horizontal">
-                    <dt>Picture Service</dt>
-                    <dd>{{.PictureService}}</dd>
-                    <dt>Disable Gravatar</dt>
-                    <dd><i class="fa fa{{if .DisableGravatar}}-check{{end}}-square-o"></i></dd>
-                </dl>
-            </div>
-        </div>
-
-        <div class="panel panel-default">
-            <div class="panel-heading">
-                Log Configuration
-            </div>
-
-            <div class="panel-body">
-                <dl class="dl-horizontal admin-dl-horizontal">
-                    {{range .Loggers}}
-                    <dt>Log Mode</dt>
-                    <dd>{{.Mode}}</dd>
-                    <dt>Log Config</dt>
-                    <dd>
-                        <div style="padding-top: 5px;"><pre>{{.Config}}</pre></div>
-                    </dd>
-                    {{end}}
-                </dl>
-                
+{{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.config.server_config"}}</strong>
+                            </div>
+                            <div class="panel-body">
+                                <dl class="dl-horizontal admin-dl-horizontal">
+                                    <dt>{{.i18n.Tr "admin.config.app_name"}}</dt>
+                                    <dd>{{AppName}}</dd>
+                                    <dt>{{.i18n.Tr "admin.config.app_ver"}}</dt>
+                                    <dd>{{AppVer}}</dd>
+                                    <dt>{{.i18n.Tr "admin.config.app_url"}}</dt>
+                                    <dd>{{.AppUrl}}</dd>
+                                    <dt>{{.i18n.Tr "admin.config.domain"}}</dt>
+                                    <dd>{{.Domain}}</dd>
+                                    <dt>{{.i18n.Tr "admin.config.offline_mode"}}</dt>
+                                    <dd><i class="fa fa{{if .OfflineMode}}-check{{end}}-square-o"></i></dd>
+                                    <dt>{{.i18n.Tr "admin.config.disable_router_log"}}</dt>
+                                    <dd><i class="fa fa{{if .DisableRouterLog}}-check{{end}}-square-o"></i></dd>
+                                    <hr/>
+                                    <dt>{{.i18n.Tr "admin.config.run_user"}}</dt>
+                                    <dd>{{.RunUser}}</dd>
+                                    <dt>{{.i18n.Tr "admin.config.run_mode"}}</dt>
+                                    <dd>{{.RunMode}}</dd>
+                                    <hr/>
+                                    <dt>{{.i18n.Tr "admin.config.repo_root_path"}}</dt>
+                                    <dd>{{.RepoRootPath}}</dd>
+                                    <dt>{{.i18n.Tr "admin.config.static_file_root_path"}}</dt>
+                                    <dd>{{.StaticRootPath}}</dd>
+                                    <dt>{{.i18n.Tr "admin.config.log_file_root_path"}}</dt>
+                                    <dd>{{.LogRootPath}}</dd>
+                                    <dt>{{.i18n.Tr "admin.config.script_type"}}</dt>
+                                    <dd>{{.ScriptType}}</dd>
+                                    <dt>{{.i18n.Tr "admin.config.reverse_auth_user"}}</dt>
+                                    <dd>{{.ReverseProxyAuthUser}}</dd>
+                                </dl>
+                            </div>
+                        </div>
+                        <br>
+                        <div class="panel panel-radius">
+                            <div class="panel-header">
+                                <strong>{{.i18n.Tr "admin.config.db_config"}}</strong>
+                            </div>
+                            <div class="panel-body">
+                                <dl class="dl-horizontal admin-dl-horizontal">
+                                    <dt>{{.i18n.Tr "admin.config.db_type"}}</dt>
+                                    <dd>{{.DbCfg.Type}}</dd>
+                                    <dt>{{.i18n.Tr "admin.config.db_host"}}</dt>
+                                    <dd>{{.DbCfg.Host}}</dd>
+                                    <dt>{{.i18n.Tr "admin.config.db_name"}}</dt>
+                                    <dd>{{.DbCfg.Name}}</dd>
+                                    <dt>{{.i18n.Tr "admin.config.db_user"}}</dt>
+                                    <dd>{{.DbCfg.User}}</dd>
+                                    <dt>{{.i18n.Tr "admin.config.db_ssl_mode"}}</dt>
+                                    <dd>{{.DbCfg.SslMode}} {{.i18n.Tr "admin.config.db_ssl_mode_helper"}}</dd>
+                                    <dt>{{.i18n.Tr "admin.config.db_path"}}</dt>
+                                    <dd>{{.DbCfg.Path}} {{.i18n.Tr "admin.config.db_path_helper"}}</dd>
+                                </dl>
+                            </div>
+                        </div>
+                        <br>
+                        <div class="panel panel-radius">
+                            <div class="panel-header">
+                                <strong>{{.i18n.Tr "admin.config.service_config"}}</strong>
+                            </div>
+                            <div class="panel-body">
+                                <dl class="dl-horizontal admin-dl-horizontal">
+                                    <dt>{{.i18n.Tr "admin.config.register_email_confirm"}}</dt>
+                                    <dd><i class="fa fa{{if .Service.RegisterEmailConfirm}}-check{{end}}-square-o"></i></dd>
+                                    <dt>{{.i18n.Tr "admin.config.disable_register"}}</dt>
+                                    <dd><i class="fa fa{{if .Service.DisableRegistration}}-check{{end}}-square-o"></i></dd>
+                                    <dt>{{.i18n.Tr "admin.config.require_sign_in_view"}}</dt>
+                                    <dd><i class="fa fa{{if .Service.RequireSignInView}}-check{{end}}-square-o"></i></dd>
+                                    <dt>{{.i18n.Tr "admin.config.mail_notify"}}</dt>
+                                    <dd><i class="fa fa{{if .Service.EnableNotifyMail}}-check{{end}}-square-o"></i></dd>
+                                    <dt>{{.i18n.Tr "admin.config.enable_cache_avatar"}}</dt>
+                                    <dd><i class="fa fa{{if .Service.EnableCacheAvatar}}-check{{end}}-square-o"></i></dd>
+                                    <hr/>
+                                    <dt>{{.i18n.Tr "admin.config.active_code_lives"}}</dt>
+                                    <dd>{{.Service.ActiveCodeLives}} {{.i18n.Tr "tool.raw_minutes"}}</dd>
+                                    <dt>{{.i18n.Tr "admin.config.reset_password_code_lives"}}</dt>
+                                    <dd>{{.Service.ResetPwdCodeLives}} {{.i18n.Tr "tool.raw_minutes"}}</dd>
+                                </dl>
+                            </div>
+                        </div>
+                        <br>
+                        <div class="panel panel-radius">
+                            <div class="panel-header">
+                                <strong>{{.i18n.Tr "admin.config.webhook_config"}}</strong>
+                            </div>
+                            <div class="panel-body">
+                                <dl class="dl-horizontal admin-dl-horizontal">
+                                    <dt>{{.i18n.Tr "admin.config.task_interval"}}</dt>
+                                    <dd>{{.WebhookTaskInterval}} {{.i18n.Tr "tool.raw_minutes"}}</dd>
+                                    <dt>{{.i18n.Tr "admin.config.deliver_timeout"}}</dt>
+                                    <dd>{{.WebhookDeliverTimeout}} {{.i18n.Tr "tool.raw_seconds"}}</dd>
+                                </dl>
+                            </div>
+                        </div>
+                        <br>
+                        <div class="panel panel-radius">
+                            <div class="panel-header">
+                                <strong>{{.i18n.Tr "admin.config.mailer_config"}}</strong>
+                            </div>
+                            <div class="panel-body">
+                                <dl class="dl-horizontal admin-dl-horizontal">
+                                    <dt>{{.i18n.Tr "admin.config.mailer_enabled"}}</dt>
+                                    <dd><i class="fa fa{{if .MailerEnabled}}-check{{end}}-square-o"></i></dd>
+                                    {{if .MailerEnabled}}<dt>{{.i18n.Tr "admin.config.mailer_name"}}</dt>
+                                    <dd>{{.Mailer.Name}}</dd>
+                                    <dt>{{.i18n.Tr "admin.config.mailer_host"}}</dt>
+                                    <dd>{{.Mailer.Host}}</dd>
+                                    <dt>{{.i18n.Tr "admin.config.mailer_user"}}</dt>
+                                    <dd>{{.Mailer.User}}</dd>{{end}}
+                                </dl>
+                            </div>
+                        </div>
+                        <br>
+                        <div class="panel panel-radius">
+                            <div class="panel-header">
+                                <strong>{{.i18n.Tr "admin.config.oauth_config"}}</strong>
+                            </div>
+                            <div class="panel-body">
+                                <dl class="dl-horizontal admin-dl-horizontal">
+                                    <dt>{{.i18n.Tr "admin.config.oauth_enabled"}}</dt>
+                                    <dd><i class="fa fa{{if .OauthEnabled}}-check{{end}}-square-o"></i></dd>
+                                    {{if .OauthEnabled}}<dt>GitHub</dt>
+                                    <dd><i class="fa fa{{if .Oauther.GitHub}}-check{{end}}-square-o"></i></dd>
+                                    <dt>Google</dt>
+                                    <dd><i class="fa fa{{if .Oauther.Google}}-check{{end}}-square-o"></i></dd>
+                                    <dt>腾讯 QQ</dt>
+                                    <dd><i class="fa fa{{if .Oauther.Tencent}}-check{{end}}-square-o"></i></dd>
+                                    <dt>新浪微博</dt>
+                                    <dd><i class="fa fa{{if .Oauther.Weibo}}-check{{end}}-square-o"></i></dd>
+                                    {{end}}
+                                </dl>
+                            </div>
+                        </div>
+                        <br>
+                        <div class="panel panel-radius">
+                            <div class="panel-header">
+                                <strong>{{.i18n.Tr "admin.config.cache_config"}}</strong>
+                            </div>
+                            <div class="panel-body">
+                                <dl class="dl-horizontal admin-dl-horizontal">
+                                    <dt>{{.i18n.Tr "admin.config.cache_adapter"}}</dt>
+                                    <dd>{{.CacheAdapter}}</dd>
+                                    <dt>{{.i18n.Tr "admin.config.cache_interval"}}</dt>
+                                    <dd>{{.CacheInternal}} {{.i18n.Tr "tool.raw_seconds"}}</dd>
+                                    <dt>{{.i18n.Tr "admin.config.cache_conn"}}</dt>
+                                    <dd><pre>{{.CacheConn}}</pre></dd>
+                                </dl>
+                            </div>
+                        </div>
+                        <br>
+                        <div class="panel panel-radius">
+                            <div class="panel-header">
+                                <strong>{{.i18n.Tr "admin.config.session_config"}}</strong>
+                            </div>
+                            <div class="panel-body">
+                                <dl class="dl-horizontal admin-dl-horizontal">
+                                    <dt>{{.i18n.Tr "admin.config.session_provider"}}</dt>
+                                    <dd>{{.SessionProvider}}</dd>
+                                    <dt>{{.i18n.Tr "admin.config.provider_config"}}</dt>
+                                    <dd><pre>{{.SessionConfig.ProviderConfig}}</pre></dd>
+                                    <dt>{{.i18n.Tr "admin.config.cookie_name"}}</dt>
+                                    <dd>{{.SessionConfig.CookieName}}</dd>
+                                    <dt>{{.i18n.Tr "admin.config.enable_set_cookie"}}</dt>
+                                    <dd><i class="fa fa{{if .SessionConfig.EnableSetCookie}}-check{{end}}-square-o"></i></dd>
+                                    <dt>{{.i18n.Tr "admin.config.gc_interval_time"}}</dt>
+                                    <dd>{{.SessionConfig.Gclifetime}} {{.i18n.Tr "tool.raw_seconds"}}</dd>
+                                    <dt>{{.i18n.Tr "admin.config.session_life_time"}}</dt>
+                                    <dd>{{.SessionConfig.Maxlifetime}} {{.i18n.Tr "tool.raw_seconds"}}</dd>
+                                    <dt>{{.i18n.Tr "admin.config.https_only"}}</dt>
+                                    <dd><i class="fa fa{{if .SessionConfig.Secure}}-check{{end}}-square-o"></i></dd>
+                                    <dt>{{.i18n.Tr "admin.config.cookie_life_time"}}</dt>
+                                    <dd>{{.SessionConfig.CookieLifeTime}} {{.i18n.Tr "tool.raw_seconds"}}</dd>
+                                    <dt>{{.i18n.Tr "admin.config.session_hash_function"}}</dt>
+                                    <dd>{{.SessionConfig.SessionIDHashFunc}}</dd>
+                                    <dt>{{.i18n.Tr "admin.config.session_hash_key"}}</dt>
+                                    <dd>{{.SessionConfig.SessionIDHashKey}}</dd>
+                                </dl>
+                            </div>
+                        </div>
+                        <br>
+                        <div class="panel panel-radius">
+                            <div class="panel-header">
+                                <strong>{{.i18n.Tr "admin.config.picture_config"}}</strong>
+                            </div>
+                            <div class="panel-body">
+                                <dl class="dl-horizontal admin-dl-horizontal">
+                                    <dt>{{.i18n.Tr "admin.config.picture_service"}}</dt>
+                                    <dd>{{.PictureService}}</dd>
+                                    <dt>{{.i18n.Tr "admin.config.disable_gravatar"}}</dt>
+                                    <dd><i class="fa fa{{if .DisableGravatar}}-check{{end}}-square-o"></i></dd>
+                                </dl>
+                            </div>
+                        </div>
+                        <br>
+                        <div class="panel panel-radius">
+                            <div class="panel-header">
+                                <strong>{{.i18n.Tr "admin.config.log_config"}}</strong>
+                            </div>
+                            <div class="panel-body">
+                                <dl class="dl-horizontal admin-dl-horizontal">
+                                    {{range .Loggers}}
+                                    <dt>{{$.i18n.Tr "admin.config.log_mode"}}</dt>
+                                    <dd>{{.Mode}}</dd>
+                                    <dt>{{$.i18n.Tr "admin.config.log_config"}}</dt>
+                                    <dd><pre>{{.Config}}</pre></dd>
+                                    {{end}}
+                                </dl>
+                            </div>
+                        </div>
+                    </div>
+                </div>
             </div>
         </div>
     </div>
 </div>
-{{template "base/footer" .}}
\ No newline at end of file
+{{template "ng/base/footer" .}}
\ No newline at end of file
diff --git a/templates/admin/monitor.tmpl b/templates/admin/monitor.tmpl
new file mode 100644 (file)
index 0000000..b94f92b
--- /dev/null
@@ -0,0 +1,74 @@
+{{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.monitor.cron"}}</strong>
+                            </div>
+                            <div class="panel-body admin-panel">
+                                <table class="table table-striped">
+                                    <thead>
+                                        <tr>
+                                            <th>{{.i18n.Tr "admin.monitor.name"}}</th>
+                                            <th>{{.i18n.Tr "admin.monitor.schedule"}}</th>
+                                            <th>{{.i18n.Tr "admin.monitor.next"}}</th>
+                                            <th>{{.i18n.Tr "admin.monitor.previous"}}</th>
+                                            <th>{{.i18n.Tr "admin.monitor.execute_times"}}</th>
+                                        </tr>
+                                    </thead>
+                                    <tbody>
+                                        {{range .Entries}}
+                                        <tr>
+                                            <td>{{.Description}}</td>
+                                            <td>{{.Spec}}</td>
+                                            <td>{{.Next}}</td>
+                                            <td>{{.Prev}}</td>
+                                            <td>{{.ExecTimes}}</td>
+                                        </tr>
+                                        {{end}}
+                                    </tbody>
+                                </table>
+                            </div>
+                        </div>
+                        <br>
+                        <div class="panel panel-radius">
+                            <div class="panel-header">
+                                <strong>{{.i18n.Tr "admin.monitor.process"}}</strong>
+                            </div>
+                            <div class="panel-body admin-panel">
+                                <table class="table table-striped">
+                                    <thead>
+                                        <tr>
+                                            <th>Pid</th>
+                                            <th>{{.i18n.Tr "admin.monitor.desc"}}</th>
+                                            <th>{{.i18n.Tr "admin.monitor.start"}}</th>
+                                            <th>{{.i18n.Tr "admin.monitor.execute_time"}}</th>
+                                        </tr>
+                                    </thead>
+                                    <tbody>
+                                        {{range .Processes}}
+                                        <tr>
+                                            <td>{{.Pid}}</td>
+                                            <td>{{.Description}}</td>
+                                            <td>{{.Start}}</td>
+                                            <td>{{TimeSince .Start}}</td>
+                                        </tr>
+                                        {{end}}
+                                    </tbody>
+                                </table>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+{{template "ng/base/footer" .}}
\ No newline at end of file
diff --git a/templates/admin/monitor/cron.tmpl b/templates/admin/monitor/cron.tmpl
deleted file mode 100644 (file)
index a04c017..0000000
+++ /dev/null
@@ -1,40 +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">
-        <ul class="nav nav-tabs">
-            <li{{if .PageIsMonitorCron}} class="active"{{end}}><a href="/admin/monitor">Cron Tasks</a></li>
-            <li{{if .PageIsMonitorProcess}} class="active"{{end}}><a href="/admin/monitor?tab=process">Processes</a></li>
-        </ul>
-        <div class="panel panel-default">
-            <div class="panel-body">
-                {{if .PageIsMonitorCron}}
-                <table class="table table-striped">
-                    <thead>
-                        <tr>
-                            <th>Name</th>
-                            <th>Schedule</th>
-                            <th>Next Time</th>
-                            <th>Previous Time</th>
-                            <th>Execute Times</th>
-                        </tr>
-                    </thead>
-                    <tbody>
-                        {{range .Entries}}
-                        <tr>
-                            <td>{{.Description}}</td>
-                            <td>{{.Spec}}</td>
-                            <td>{{.Next}}</td>
-                            <td>{{.Prev}}</td>
-                            <td>{{.ExecTimes}}</td>
-                        </tr>
-                        {{end}}
-                    </tbody>
-                </table>
-                {{end}}
-            </div>
-        </div>
-    </div>
-</div>
-{{template "base/footer" .}}
\ No newline at end of file
diff --git a/templates/admin/monitor/process.tmpl b/templates/admin/monitor/process.tmpl
deleted file mode 100644 (file)
index 2d60ff6..0000000
+++ /dev/null
@@ -1,38 +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">
-        <ul class="nav nav-tabs">
-            <li{{if .PageIsMonitorCron}} class="active"{{end}}><a href="/admin/monitor">Cron Tasks</a></li>
-            <li{{if .PageIsMonitorProcess}} class="active"{{end}}><a href="/admin/monitor?tab=process">Processes</a></li>
-        </ul>
-        <div class="panel panel-default">
-            <div class="panel-body">
-                {{if .PageIsMonitorProcess}}
-                <table class="table table-striped">
-                    <thead>
-                        <tr>
-                            <th>Pid</th>
-                            <th>Description</th>
-                            <th>Start Time</th>
-                            <th>Execution Time</th>
-                        </tr>
-                    </thead>
-                    <tbody>
-                        {{range .Processes}}
-                        <tr>
-                            <td>{{.Pid}}</td>
-                            <td>{{.Description}}</td>
-                            <td>{{.Start}}</td>
-                            <td>{{TimeSince .Start}}</td>
-                        </tr>
-                        {{end}}
-                    </tbody>
-                </table>
-                {{end}}
-            </div>
-        </div>
-    </div>
-</div>
-{{template "base/footer" .}}
\ No newline at end of file