mirror of
https://github.com/mindoc-org/mindoc.git
synced 2025-06-28 15:45:35 +08:00
feat: 配置管理中增加本地化切换
This commit is contained in:
parent
b0234582f8
commit
0e92e0e2b4
@ -234,6 +234,9 @@ func RegisterCommand() {
|
||||
} else if len(os.Args) >= 2 && os.Args[1] == "version" {
|
||||
CheckUpdate()
|
||||
os.Exit(0)
|
||||
} else if len(os.Args) >= 2 && os.Args[1] == "update" {
|
||||
Update()
|
||||
os.Exit(0)
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -3,15 +3,17 @@ package commands
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"github.com/mindoc-org/mindoc/models"
|
||||
"io/ioutil"
|
||||
"net/http"
|
||||
"os"
|
||||
|
||||
"github.com/beego/beego/v2/client/orm"
|
||||
"github.com/beego/beego/v2/core/logs"
|
||||
"github.com/mindoc-org/mindoc/conf"
|
||||
)
|
||||
|
||||
//检查最新版本.
|
||||
// 检查最新版本.
|
||||
func CheckUpdate() {
|
||||
|
||||
fmt.Println("MinDoc current version => ", conf.VERSION)
|
||||
@ -47,3 +49,23 @@ func CheckUpdate() {
|
||||
os.Exit(0)
|
||||
|
||||
}
|
||||
|
||||
func Update() {
|
||||
fmt.Println("Update...")
|
||||
RegisterDataBase()
|
||||
RegisterModel()
|
||||
err := orm.RunSyncdb("default", false, true)
|
||||
if err == nil {
|
||||
UpdateInitialization()
|
||||
} else {
|
||||
panic(err.Error())
|
||||
}
|
||||
fmt.Println("Update Successfully!")
|
||||
os.Exit(0)
|
||||
}
|
||||
func UpdateInitialization() {
|
||||
err := models.NewOption().Update()
|
||||
if err != nil {
|
||||
panic(err.Error())
|
||||
}
|
||||
}
|
||||
|
@ -502,6 +502,9 @@ edit_user = Edit User
|
||||
pwd_tips = Please leave it blank if you do not change the password, only local users can change the password
|
||||
|
||||
[mgr]
|
||||
language = Default Language
|
||||
zh_cn = 简体中文
|
||||
en_us = English
|
||||
dashboard_menu = Dashboard
|
||||
user_menu = User
|
||||
team_menu = Team
|
||||
|
@ -502,6 +502,9 @@ edit_user = 编辑用户
|
||||
pwd_tips = 不修改密码请留空,只支持本地用户修改密码
|
||||
|
||||
[mgr]
|
||||
language = 默认语言
|
||||
zh_cn = 简体中文
|
||||
en_us = English
|
||||
dashboard_menu = 仪表盘
|
||||
user_menu = 用户管理
|
||||
team_menu = 团队管理
|
||||
|
@ -3,6 +3,7 @@ package controllers
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io"
|
||||
"strings"
|
||||
"time"
|
||||
@ -83,7 +84,7 @@ func (c *BaseController) Prepare() {
|
||||
c.SetLang()
|
||||
}
|
||||
|
||||
//判断用户是否登录.
|
||||
// 判断用户是否登录.
|
||||
func (c *BaseController) isUserLoggedIn() bool {
|
||||
return c.Member != nil && c.Member.MemberId > 0
|
||||
}
|
||||
@ -127,7 +128,7 @@ func (c *BaseController) JsonResult(errCode int, errMsg string, data ...interfac
|
||||
c.StopRun()
|
||||
}
|
||||
|
||||
//如果错误不为空,则响应错误信息到浏览器.
|
||||
// 如果错误不为空,则响应错误信息到浏览器.
|
||||
func (c *BaseController) CheckJsonError(code int, err error) {
|
||||
|
||||
if err == nil {
|
||||
@ -182,7 +183,7 @@ func (c *BaseController) BaseUrl() string {
|
||||
return baseUrl
|
||||
}
|
||||
|
||||
//显示错误信息页面.
|
||||
// 显示错误信息页面.
|
||||
func (c *BaseController) ShowErrorPage(errCode int, errMsg string) {
|
||||
c.TplName = "errors/error.tpl"
|
||||
|
||||
@ -217,7 +218,12 @@ func (c *BaseController) SetLang() {
|
||||
}
|
||||
if len(lang) == 0 ||
|
||||
!i18n.IsExist(lang) {
|
||||
lang, _ = web.AppConfig.String("default_lang")
|
||||
fmt.Println("c.Data[item.OptionName]", c.Data["language"])
|
||||
if c.Data["language"] != nil {
|
||||
lang = c.Data["language"].(string)
|
||||
} else {
|
||||
lang, _ = web.AppConfig.String("default_lang")
|
||||
}
|
||||
}
|
||||
if !hasCookie {
|
||||
c.Ctx.SetCookie("lang", lang, 1<<31-1, "/")
|
||||
|
@ -133,7 +133,7 @@ func (c *ManagerController) CreateMember() {
|
||||
c.JsonResult(0, "ok", member)
|
||||
}
|
||||
|
||||
//更新用户状态.
|
||||
// 更新用户状态.
|
||||
func (c *ManagerController) UpdateMemberStatus() {
|
||||
c.Prepare()
|
||||
|
||||
@ -166,7 +166,7 @@ func (c *ManagerController) UpdateMemberStatus() {
|
||||
c.JsonResult(0, "ok", member)
|
||||
}
|
||||
|
||||
//变更用户权限.
|
||||
// 变更用户权限.
|
||||
func (c *ManagerController) ChangeMemberRole() {
|
||||
c.Prepare()
|
||||
|
||||
@ -199,7 +199,7 @@ func (c *ManagerController) ChangeMemberRole() {
|
||||
c.JsonResult(0, "ok", member)
|
||||
}
|
||||
|
||||
//编辑用户信息.
|
||||
// 编辑用户信息.
|
||||
func (c *ManagerController) EditMember() {
|
||||
c.Prepare()
|
||||
c.TplName = "manager/edit_users.tpl"
|
||||
@ -251,7 +251,7 @@ func (c *ManagerController) EditMember() {
|
||||
c.Data["Model"] = member
|
||||
}
|
||||
|
||||
//删除一个用户,并将该用户的所有信息转移到超级管理员上.
|
||||
// 删除一个用户,并将该用户的所有信息转移到超级管理员上.
|
||||
func (c *ManagerController) DeleteMember() {
|
||||
c.Prepare()
|
||||
member_id, _ := c.GetInt("id", 0)
|
||||
@ -283,7 +283,7 @@ func (c *ManagerController) DeleteMember() {
|
||||
c.JsonResult(0, "ok")
|
||||
}
|
||||
|
||||
//项目列表.
|
||||
// 项目列表.
|
||||
func (c *ManagerController) Books() {
|
||||
c.Prepare()
|
||||
c.TplName = "manager/books.tpl"
|
||||
@ -313,7 +313,7 @@ func (c *ManagerController) Books() {
|
||||
c.Data["Lists"] = books
|
||||
}
|
||||
|
||||
//编辑项目.
|
||||
// 编辑项目.
|
||||
func (c *ManagerController) EditBook() {
|
||||
c.Prepare()
|
||||
|
||||
@ -460,7 +460,7 @@ func (c *ManagerController) CreateToken() {
|
||||
}
|
||||
}
|
||||
|
||||
//项目设置.
|
||||
// 项目设置.
|
||||
func (c *ManagerController) Setting() {
|
||||
c.Prepare()
|
||||
c.TplName = "manager/setting.tpl"
|
||||
@ -541,7 +541,7 @@ func (c *ManagerController) Comments() {
|
||||
|
||||
}
|
||||
|
||||
//DeleteComment 标记评论为已删除
|
||||
// DeleteComment 标记评论为已删除
|
||||
func (c *ManagerController) DeleteComment() {
|
||||
c.Prepare()
|
||||
|
||||
@ -565,7 +565,7 @@ func (c *ManagerController) DeleteComment() {
|
||||
c.JsonResult(0, "ok", comment)
|
||||
}
|
||||
|
||||
//设置项目私有状态.
|
||||
// 设置项目私有状态.
|
||||
func (c *ManagerController) PrivatelyOwned() {
|
||||
c.Prepare()
|
||||
status := c.GetString("status")
|
||||
@ -603,7 +603,7 @@ func (c *ManagerController) PrivatelyOwned() {
|
||||
c.JsonResult(0, "ok")
|
||||
}
|
||||
|
||||
//附件列表.
|
||||
// 附件列表.
|
||||
func (c *ManagerController) AttachList() {
|
||||
c.Prepare()
|
||||
c.TplName = "manager/attach_list.tpl"
|
||||
@ -634,7 +634,7 @@ func (c *ManagerController) AttachList() {
|
||||
c.Data["Lists"] = attachList
|
||||
}
|
||||
|
||||
//附件清理.
|
||||
// 附件清理.
|
||||
func (c *ManagerController) AttachClean() {
|
||||
c.Prepare()
|
||||
|
||||
@ -669,7 +669,7 @@ func (c *ManagerController) AttachClean() {
|
||||
c.JsonResult(0, "ok")
|
||||
}
|
||||
|
||||
//附件详情.
|
||||
// 附件详情.
|
||||
func (c *ManagerController) AttachDetailed() {
|
||||
c.Prepare()
|
||||
c.TplName = "manager/attach_detailed.tpl"
|
||||
@ -698,7 +698,7 @@ func (c *ManagerController) AttachDetailed() {
|
||||
c.Data["Model"] = attach
|
||||
}
|
||||
|
||||
//删除附件.
|
||||
// 删除附件.
|
||||
func (c *ManagerController) AttachDelete() {
|
||||
c.Prepare()
|
||||
attachId, _ := c.GetInt("attach_id")
|
||||
@ -721,7 +721,7 @@ func (c *ManagerController) AttachDelete() {
|
||||
c.JsonResult(0, "ok")
|
||||
}
|
||||
|
||||
//标签列表
|
||||
// 标签列表
|
||||
func (c *ManagerController) LabelList() {
|
||||
c.Prepare()
|
||||
c.TplName = "manager/label_list.tpl"
|
||||
@ -743,7 +743,7 @@ func (c *ManagerController) LabelList() {
|
||||
c.Data["Lists"] = labels
|
||||
}
|
||||
|
||||
//删除标签
|
||||
// 删除标签
|
||||
func (c *ManagerController) LabelDelete() {
|
||||
labelId, err := strconv.Atoi(c.Ctx.Input.Param(":id"))
|
||||
if err != nil {
|
||||
@ -936,7 +936,7 @@ func (c *ManagerController) TeamMemberList() {
|
||||
}
|
||||
}
|
||||
|
||||
//搜索团队用户.
|
||||
// 搜索团队用户.
|
||||
func (c *ManagerController) TeamSearchMember() {
|
||||
c.Prepare()
|
||||
|
||||
@ -1015,7 +1015,7 @@ func (c *ManagerController) TeamChangeMemberRole() {
|
||||
|
||||
}
|
||||
|
||||
//团队项目列表.
|
||||
// 团队项目列表.
|
||||
func (c *ManagerController) TeamBookList() {
|
||||
c.Prepare()
|
||||
c.TplName = "manager/team_book_list.tpl"
|
||||
@ -1062,7 +1062,7 @@ func (c *ManagerController) TeamBookList() {
|
||||
}
|
||||
}
|
||||
|
||||
//给团队增加项目.
|
||||
// 给团队增加项目.
|
||||
func (c *ManagerController) TeamBookAdd() {
|
||||
c.Prepare()
|
||||
|
||||
@ -1086,7 +1086,7 @@ func (c *ManagerController) TeamBookAdd() {
|
||||
}
|
||||
}
|
||||
|
||||
//搜索未参与的项目.
|
||||
// 搜索未参与的项目.
|
||||
func (c *ManagerController) TeamSearchBook() {
|
||||
c.Prepare()
|
||||
|
||||
@ -1106,7 +1106,7 @@ func (c *ManagerController) TeamSearchBook() {
|
||||
|
||||
}
|
||||
|
||||
//删除团队项目.
|
||||
// 删除团队项目.
|
||||
func (c *ManagerController) TeamBookDelete() {
|
||||
c.Prepare()
|
||||
teamRelationshipId, _ := c.GetInt("teamRelId")
|
||||
@ -1123,7 +1123,7 @@ func (c *ManagerController) TeamBookDelete() {
|
||||
c.JsonResult(0, "OK")
|
||||
}
|
||||
|
||||
//项目空间列表.
|
||||
// 项目空间列表.
|
||||
func (c *ManagerController) Itemsets() {
|
||||
c.Prepare()
|
||||
c.TplName = "manager/itemsets.tpl"
|
||||
@ -1151,7 +1151,7 @@ func (c *ManagerController) Itemsets() {
|
||||
c.Data["Lists"] = items
|
||||
}
|
||||
|
||||
//编辑或添加项目空间.
|
||||
// 编辑或添加项目空间.
|
||||
func (c *ManagerController) ItemsetsEdit() {
|
||||
c.Prepare()
|
||||
itemId, _ := c.GetInt("itemId")
|
||||
@ -1186,7 +1186,7 @@ func (c *ManagerController) ItemsetsEdit() {
|
||||
c.JsonResult(0, "OK")
|
||||
}
|
||||
|
||||
//删除项目空间.
|
||||
// 删除项目空间.
|
||||
func (c *ManagerController) ItemsetsDelete() {
|
||||
c.Prepare()
|
||||
itemId, _ := c.GetInt("itemId")
|
||||
|
@ -164,5 +164,30 @@ func (m *Option) Init() error {
|
||||
}
|
||||
}
|
||||
|
||||
if !o.QueryTable(m.TableNameWithPrefix()).Filter("option_name", "language").Exist() {
|
||||
option := NewOption()
|
||||
option.OptionValue = "zh-cn"
|
||||
option.OptionName = "language"
|
||||
option.OptionTitle = "站点语言"
|
||||
if _, err := o.Insert(option); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *Option) Update() error {
|
||||
o := orm.NewOrm()
|
||||
|
||||
if !o.QueryTable(m.TableNameWithPrefix()).Filter("option_name", "language").Exist() {
|
||||
option := NewOption()
|
||||
option.OptionValue = "zh-cn"
|
||||
option.OptionName = "language"
|
||||
option.OptionTitle = "站点语言"
|
||||
if _, err := o.Insert(option); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
@ -44,6 +44,13 @@
|
||||
<label>{{i18n .Lang "mgr.site_desc"}}</label>
|
||||
<textarea rows="3" class="form-control" name="site_description" style="height: 90px" placeholder="{{i18n .Lang "mgr.site_desc"}}">{{.site_description}}</textarea>
|
||||
<p class="text">{{i18n .Lang "mgr.site_desc_tips"}}</p>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{i18n .Lang "mgr.language"}}</label>
|
||||
<select name="language" class="form-control">
|
||||
<option value="zh-cn" {{if eq .language "zh-cn"}}selected{{end}}>{{i18n .Lang "mgr.zh_cn"}}</option>
|
||||
<option value="en-us" {{if eq .language "en-us"}}selected{{end}}>{{i18n .Lang "mgr.en_us"}}</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{i18n .Lang "mgr.enable_anonymous_access"}}</label>
|
||||
@ -123,6 +130,7 @@
|
||||
},success : function (res) {
|
||||
if(res.errcode === 0) {
|
||||
showSuccess({{i18n .Lang "message.success"}})
|
||||
window.location.reload()
|
||||
}else{
|
||||
showError(res.message);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user