diff --git a/app/controllers/AttachController.go b/app/controllers/AttachController.go index cb91632..90246d7 100644 --- a/app/controllers/AttachController.go +++ b/app/controllers/AttachController.go @@ -11,6 +11,7 @@ import ( "strings" "time" "io" + "fmt" "archive/tar" "compress/gzip" ) @@ -56,8 +57,12 @@ func (c Attach) uploadAttach(noteId string) (re info.Re) { return re } // > 5M? - if(len(data) > 5 * 1024 * 1024) { - resultMsg = "File is bigger than 5M" + maxFileSize := configService.GetUploadSize("uploadAttachSize"); + if maxFileSize <= 0 { + maxFileSize = 1000 + } + if(float64(len(data)) > maxFileSize * float64(1024*1024)) { + resultMsg = fmt.Sprintf("附件大于%vM", maxFileSize) return re } diff --git a/app/controllers/FileController.go b/app/controllers/FileController.go index e8609bd..b95e0d3 100644 --- a/app/controllers/FileController.go +++ b/app/controllers/FileController.go @@ -9,6 +9,7 @@ import ( "github.com/leanote/leanote/app/info" "io/ioutil" "os" + "fmt" "strconv" "strings" ) @@ -21,7 +22,7 @@ type File struct { // 上传的是博客logo // TODO logo不要设置权限, 另外的目录 func (c File) UploadBlogLogo() revel.Result { - re := c.uploadImage("logo", ""); + re := c.uploadImage("blogLogo", ""); c.RenderArgs["fileUrlPath"] = re.Id c.RenderArgs["resultCode"] = re.Code @@ -100,7 +101,7 @@ func (c File) uploadImage(from, albumId string) (re info.Re) { } defer file.Close() // 生成上传路径 - if(from == "logo") { + if(from == "logo" || from == "blogLogo") { fileUrlPath = "public/upload/" + c.GetUserId() + "/images/logo" } else { fileUrlPath = "files/" + c.GetUserId() + "/images" @@ -131,10 +132,22 @@ func (c File) uploadImage(from, albumId string) (re info.Re) { return re } + var maxFileSize float64 + if(from == "logo") { + maxFileSize = configService.GetUploadSize("uploadAvatarSize"); + } else if from == "blogLogo" { + maxFileSize = configService.GetUploadSize("uploadBlogLogoSize"); + } else { + maxFileSize = configService.GetUploadSize("uploadImageSize"); + } + if maxFileSize <= 0 { + maxFileSize = 1000 + } + // > 2M? - if(len(data) > 5 * 1024 * 1024) { + if(float64(len(data)) > maxFileSize * float64(1024*1024)) { resultCode = 0 - resultMsg = "图片大于2M" + resultMsg = fmt.Sprintf("图片大于%vM", maxFileSize) return re } @@ -161,7 +174,7 @@ func (c File) uploadImage(from, albumId string) (re info.Re) { id := bson.NewObjectId(); fileInfo.FileId = id fileId = id.Hex() - if(from == "logo") { + if(from == "logo" || from == "blogLogo") { fileId = "public/upload/" + c.GetUserId() + "/images/logo/" + filename } diff --git a/app/controllers/NoteController.go b/app/controllers/NoteController.go index 6811c3f..33e6dad 100644 --- a/app/controllers/NoteController.go +++ b/app/controllers/NoteController.go @@ -66,6 +66,8 @@ func (c Note) Index() revel.Result { c.RenderArgs["tagsJson"] = c.Json(tagService.GetTags(c.GetUserId())) + c.RenderArgs["globalConfigs"] = configService.GetGlobalConfigForUser() + if isDev, _ := revel.Config.Bool("mode.dev"); isDev { return c.RenderTemplate("note/note-dev.html") } else { diff --git a/app/controllers/admin/AdminSettingController.go b/app/controllers/admin/AdminSettingController.go index e46c58d..f36e892 100644 --- a/app/controllers/admin/AdminSettingController.go +++ b/app/controllers/admin/AdminSettingController.go @@ -5,6 +5,7 @@ import ( // . "github.com/leanote/leanote/app/lea" "github.com/leanote/leanote/app/info" "strings" + "fmt" ) // admin 首页 @@ -115,5 +116,14 @@ func (c AdminSetting) Mongodb(mongodumpPath, mongorestorePath string) revel.Resu re.Ok = configService.UpdateGlobalStringConfig(c.GetUserId(), "mongodumpPath", mongodumpPath) re.Ok = configService.UpdateGlobalStringConfig(c.GetUserId(), "mongorestorePath", mongorestorePath) + return c.RenderJson(re) +} + +func (c AdminSetting) UploadSize(uploadImageSize, uploadAvatarSize, uploadBlogLogoSize, uploadAttachSize float64) revel.Result { + re := info.NewRe() + re.Ok = configService.UpdateGlobalStringConfig(c.GetUserId(), "uploadImageSize", fmt.Sprintf("%v", uploadImageSize)) + re.Ok = configService.UpdateGlobalStringConfig(c.GetUserId(), "uploadAvatarSize", fmt.Sprintf("%v", uploadAvatarSize)) + re.Ok = configService.UpdateGlobalStringConfig(c.GetUserId(), "uploadBlogLogoSize", fmt.Sprintf("%v", uploadBlogLogoSize)) + re.Ok = configService.UpdateGlobalStringConfig(c.GetUserId(), "uploadAttachSize", fmt.Sprintf("%v", uploadAttachSize)) return c.RenderJson(re) } \ No newline at end of file diff --git a/app/controllers/member/MemberUserController.go b/app/controllers/member/MemberUserController.go index a413470..4fdb2eb 100644 --- a/app/controllers/member/MemberUserController.go +++ b/app/controllers/member/MemberUserController.go @@ -35,6 +35,7 @@ func (c MemberUser) Avatar() revel.Result { c.SetUserInfo() c.SetLocale() c.RenderArgs["title"] = "Avatar" + c.RenderArgs["globalConfigs"] = configService.GetGlobalConfigForUser() return c.RenderTemplate("member/user/avatar.html"); } func (c MemberUser) AddAccount() revel.Result { diff --git a/app/init.go b/app/init.go index 94b6245..f491511 100644 --- a/app/init.go +++ b/app/init.go @@ -82,6 +82,10 @@ func init() { b, _ := json.Marshal(i) return string(b) } + revel.TemplateFuncs["jsonJs"] = func(i interface{}) template.JS { + b, _ := json.Marshal(i) + return template.JS(string(b)) + } revel.TemplateFuncs["datetime"] = func(t time.Time) template.HTML { return template.HTML(t.Format("2006-01-02 15:04:05")) } diff --git a/app/service/ConfigService.go b/app/service/ConfigService.go index 28a10d4..fd79093 100644 --- a/app/service/ConfigService.go +++ b/app/service/ConfigService.go @@ -539,3 +539,27 @@ func (this *ConfigService) IsGoodSubDomain(domain string) bool { } return true } + +// 上传大小 +func (this *ConfigService) GetUploadSize(key string) float64 { + f, _ := strconv.ParseFloat(this.GetGlobalStringConfig(key), 64) + return f; +} +func (this *ConfigService) GetUploadSizeLimit() map[string]float64 { + return map[string]float64{ + "uploadImageSize": this.GetUploadSize("uploadImageSize"), + "uploadBlogLogoSize":this.GetUploadSize("uploadBlogLogoSize"), + "uploadAttachSize":this.GetUploadSize("uploadAttachSize"), + "uploadAvatarSize":this.GetUploadSize("uploadAvatarSize"), + } +} +// 为用户得到全局的配置 +// NoteController调用 +func (this *ConfigService) GetGlobalConfigForUser() map[string]interface{} { + uploadSizeConfigs := this.GetUploadSizeLimit(); + config := map[string]interface{}{} + for k, v := range uploadSizeConfigs { + config[k] = v + } + return config +} diff --git a/app/views/admin/nav.html b/app/views/admin/nav.html index dbc2be6..bda8028 100644 --- a/app/views/admin/nav.html +++ b/app/views/admin/nav.html @@ -155,6 +155,14 @@ + +