2014-11-09 16:24:19 +08:00
|
|
|
package member
|
|
|
|
|
|
|
|
import (
|
2015-01-08 21:15:56 +08:00
|
|
|
"fmt"
|
2014-11-09 16:24:19 +08:00
|
|
|
"github.com/leanote/leanote/app/info"
|
2015-01-08 21:15:56 +08:00
|
|
|
. "github.com/leanote/leanote/app/lea"
|
|
|
|
"github.com/revel/revel"
|
2014-11-09 16:24:19 +08:00
|
|
|
"io/ioutil"
|
2015-01-08 21:15:56 +08:00
|
|
|
"os"
|
2014-11-12 17:32:03 +08:00
|
|
|
"strings"
|
2015-01-08 21:15:56 +08:00
|
|
|
"time"
|
|
|
|
// "github.com/leanote/leanote/app/lea/blog"
|
2014-11-09 16:24:19 +08:00
|
|
|
)
|
|
|
|
|
2014-11-12 17:32:03 +08:00
|
|
|
// 博客管理
|
2014-11-09 16:24:19 +08:00
|
|
|
|
|
|
|
type MemberBlog struct {
|
|
|
|
MemberBaseController
|
|
|
|
}
|
|
|
|
|
|
|
|
func (c MemberBlog) common() info.UserBlog {
|
|
|
|
userId := c.GetUserId()
|
|
|
|
userInfo := userService.GetUserInfo(userId)
|
2017-04-08 18:55:42 +08:00
|
|
|
c.ViewArgs["userInfo"] = userInfo
|
2014-11-09 16:24:19 +08:00
|
|
|
|
|
|
|
// 得到博客设置信息
|
2017-04-08 18:55:42 +08:00
|
|
|
c.ViewArgs["allowCustomDomain"] = configService.GetGlobalStringConfig("allowCustomDomain")
|
2014-11-09 16:24:19 +08:00
|
|
|
|
|
|
|
userBlog := blogService.GetUserBlog(userId)
|
2017-04-08 18:55:42 +08:00
|
|
|
c.ViewArgs["userBlog"] = userBlog
|
2015-01-08 21:15:56 +08:00
|
|
|
|
2014-11-09 16:24:19 +08:00
|
|
|
c.SetUserInfo()
|
|
|
|
c.SetLocale()
|
|
|
|
return userBlog
|
|
|
|
}
|
|
|
|
|
2014-11-12 17:32:03 +08:00
|
|
|
// 得到sorterField 和 isAsc
|
|
|
|
// okSorter = ['email', 'username']
|
2015-01-08 21:15:56 +08:00
|
|
|
func (c MemberBlog) getSorter(sorterField string, isAsc bool, okSorter []string) (string, bool) {
|
2014-11-12 17:32:03 +08:00
|
|
|
sorter := ""
|
|
|
|
c.Params.Bind(&sorter, "sorter")
|
|
|
|
if sorter == "" {
|
2015-01-08 21:15:56 +08:00
|
|
|
return sorterField, isAsc
|
2014-11-12 17:32:03 +08:00
|
|
|
}
|
2015-01-08 21:15:56 +08:00
|
|
|
|
2014-11-12 17:32:03 +08:00
|
|
|
// sorter形式 email-up, email-down
|
|
|
|
s2 := strings.Split(sorter, "-")
|
|
|
|
if len(s2) != 2 {
|
2015-01-08 21:15:56 +08:00
|
|
|
return sorterField, isAsc
|
2014-11-12 17:32:03 +08:00
|
|
|
}
|
2015-01-08 21:15:56 +08:00
|
|
|
|
2014-11-12 17:32:03 +08:00
|
|
|
// 必须是可用的sorter
|
|
|
|
if okSorter != nil && len(okSorter) > 0 {
|
|
|
|
if !InArray(okSorter, s2[0]) {
|
2015-01-08 21:15:56 +08:00
|
|
|
return sorterField, isAsc
|
2014-11-12 17:32:03 +08:00
|
|
|
}
|
|
|
|
}
|
2015-01-08 21:15:56 +08:00
|
|
|
|
2014-11-12 17:32:03 +08:00
|
|
|
sorterField = strings.Title(s2[0])
|
|
|
|
if s2[1] == "up" {
|
|
|
|
isAsc = true
|
|
|
|
} else {
|
|
|
|
isAsc = false
|
|
|
|
}
|
2017-04-08 18:55:42 +08:00
|
|
|
c.ViewArgs["sorter"] = sorter
|
2015-01-08 21:15:56 +08:00
|
|
|
return sorterField, isAsc
|
2014-11-12 17:32:03 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
// 博客列表
|
|
|
|
var userPageSize = 15
|
2015-01-08 21:15:56 +08:00
|
|
|
|
2014-11-12 17:32:03 +08:00
|
|
|
func (c MemberBlog) Index(sorter, keywords string) revel.Result {
|
2014-11-12 23:12:10 +08:00
|
|
|
userId := c.GetUserId()
|
|
|
|
userInfo := userService.GetUserInfo(userId)
|
2017-04-08 18:55:42 +08:00
|
|
|
c.ViewArgs["userInfo"] = userInfo
|
2015-01-08 21:15:56 +08:00
|
|
|
|
2017-04-08 18:55:42 +08:00
|
|
|
c.ViewArgs["title"] = c.Message("Posts")
|
2014-11-12 17:32:03 +08:00
|
|
|
pageNumber := c.GetPage()
|
2015-01-08 21:15:56 +08:00
|
|
|
sorterField, isAsc := c.getSorter("CreatedTime", false, []string{"title", "urlTitle", "updatedTime", "publicTime", "createdTime"})
|
|
|
|
pageInfo, blogs := blogService.ListAllBlogs(c.GetUserId(), "", keywords, false, pageNumber, userPageSize, sorterField, isAsc)
|
2017-04-08 18:55:42 +08:00
|
|
|
c.ViewArgs["pageInfo"] = pageInfo
|
|
|
|
c.ViewArgs["blogs"] = blogs
|
|
|
|
c.ViewArgs["keywords"] = keywords
|
2015-01-08 21:15:56 +08:00
|
|
|
|
2014-11-12 17:32:03 +08:00
|
|
|
userAndBlog := userService.GetUserAndBlog(c.GetUserId())
|
2017-04-08 18:55:42 +08:00
|
|
|
c.ViewArgs["userAndBlog"] = userAndBlog
|
2015-01-08 21:15:56 +08:00
|
|
|
|
2015-11-28 15:17:36 +08:00
|
|
|
c.common()
|
|
|
|
|
2015-01-08 21:15:56 +08:00
|
|
|
return c.RenderTemplate("member/blog/list.html")
|
2014-11-12 17:32:03 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
// 修改笔记的urlTitle
|
|
|
|
func (c MemberBlog) UpdateBlogUrlTitle(noteId, urlTitle string) revel.Result {
|
|
|
|
re := info.NewRe()
|
|
|
|
re.Ok, re.Item = blogService.UpateBlogUrlTitle(c.GetUserId(), noteId, urlTitle)
|
2017-04-08 18:55:42 +08:00
|
|
|
return c.RenderJSON(re)
|
2014-11-12 17:32:03 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
// 修改笔记的urlTitle
|
|
|
|
func (c MemberBlog) UpdateBlogAbstract(noteId string) revel.Result {
|
2015-11-28 15:17:36 +08:00
|
|
|
c.common()
|
2017-04-08 18:55:42 +08:00
|
|
|
c.ViewArgs["title"] = c.Message("Update Post Abstract")
|
2015-01-08 21:15:56 +08:00
|
|
|
note := noteService.GetNoteAndContent(noteId, c.GetUserId())
|
2014-11-12 17:32:03 +08:00
|
|
|
if !note.Note.IsBlog {
|
2015-01-08 21:15:56 +08:00
|
|
|
return c.E404()
|
2014-11-12 17:32:03 +08:00
|
|
|
}
|
2017-04-08 18:55:42 +08:00
|
|
|
c.ViewArgs["note"] = note
|
|
|
|
c.ViewArgs["noteId"] = noteId
|
2015-01-08 21:15:56 +08:00
|
|
|
return c.RenderTemplate("member/blog/update_abstract.html")
|
2014-11-12 17:32:03 +08:00
|
|
|
}
|
|
|
|
func (c MemberBlog) DoUpdateBlogAbstract(noteId, imgSrc, desc, abstract string) revel.Result {
|
|
|
|
re := info.NewRe()
|
|
|
|
re.Ok = blogService.UpateBlogAbstract(c.GetUserId(), noteId, imgSrc, desc, abstract)
|
2017-04-08 18:55:42 +08:00
|
|
|
return c.RenderJSON(re)
|
2014-11-12 17:32:03 +08:00
|
|
|
}
|
|
|
|
|
2014-11-09 16:24:19 +08:00
|
|
|
// 基本信息设置
|
|
|
|
func (c MemberBlog) Base() revel.Result {
|
|
|
|
c.common()
|
2017-04-08 18:55:42 +08:00
|
|
|
c.ViewArgs["title"] = c.Message("Blog Base Info")
|
2015-01-08 21:15:56 +08:00
|
|
|
return c.RenderTemplate("member/blog/base.html")
|
2014-11-09 16:24:19 +08:00
|
|
|
}
|
|
|
|
func (c MemberBlog) Comment() revel.Result {
|
|
|
|
c.common()
|
2017-04-08 18:55:42 +08:00
|
|
|
c.ViewArgs["title"] = c.Message("Comment")
|
2015-01-08 21:15:56 +08:00
|
|
|
return c.RenderTemplate("member/blog/comment.html")
|
2014-11-09 16:24:19 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
func (c MemberBlog) Paging() revel.Result {
|
|
|
|
c.common()
|
2017-04-08 18:55:42 +08:00
|
|
|
c.ViewArgs["title"] = c.Message("Paging")
|
2015-01-08 21:15:56 +08:00
|
|
|
return c.RenderTemplate("member/blog/paging.html")
|
2014-11-09 16:24:19 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
func (c MemberBlog) Cate() revel.Result {
|
|
|
|
userBlog := c.common()
|
2017-04-08 18:55:42 +08:00
|
|
|
c.ViewArgs["title"] = c.Message("Category")
|
2015-01-08 21:15:56 +08:00
|
|
|
|
2014-11-09 16:24:19 +08:00
|
|
|
notebooks := blogService.ListBlogNotebooks(c.GetUserId())
|
|
|
|
notebooksMap := map[string]info.Notebook{}
|
|
|
|
for _, each := range notebooks {
|
|
|
|
notebooksMap[each.NotebookId.Hex()] = each
|
|
|
|
}
|
2015-01-08 21:15:56 +08:00
|
|
|
|
|
|
|
var i = 0
|
2014-11-09 16:24:19 +08:00
|
|
|
notebooks2 := make([]info.Notebook, len(notebooks))
|
2015-01-08 21:15:56 +08:00
|
|
|
|
2014-11-09 16:24:19 +08:00
|
|
|
// 先要保证已有的是正确的排序
|
|
|
|
cateIds := userBlog.CateIds
|
|
|
|
has := map[string]bool{} // cateIds中有的
|
|
|
|
if cateIds != nil && len(cateIds) > 0 {
|
|
|
|
for _, cateId := range cateIds {
|
|
|
|
if n, ok := notebooksMap[cateId]; ok {
|
|
|
|
notebooks2[i] = n
|
|
|
|
i++
|
|
|
|
has[cateId] = true
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// 之后
|
|
|
|
for _, each := range notebooks {
|
|
|
|
id := each.NotebookId.Hex()
|
|
|
|
if !has[id] {
|
|
|
|
notebooks2[i] = each
|
|
|
|
i++
|
|
|
|
}
|
|
|
|
}
|
2017-04-08 18:55:42 +08:00
|
|
|
c.ViewArgs["notebooks"] = notebooks2
|
2015-01-08 21:15:56 +08:00
|
|
|
|
|
|
|
return c.RenderTemplate("member/blog/cate.html")
|
2014-11-09 16:24:19 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
// 修改分类排序
|
|
|
|
func (c MemberBlog) UpateCateIds(cateIds []string) revel.Result {
|
|
|
|
re := info.NewRe()
|
|
|
|
re.Ok = blogService.UpateCateIds(c.GetUserId(), cateIds)
|
2017-04-08 18:55:42 +08:00
|
|
|
return c.RenderJSON(re)
|
2014-11-09 16:24:19 +08:00
|
|
|
}
|
|
|
|
|
2014-11-12 17:32:03 +08:00
|
|
|
func (c MemberBlog) UpdateCateUrlTitle(cateId, urlTitle string) revel.Result {
|
|
|
|
re := info.NewRe()
|
|
|
|
re.Ok, re.Item = blogService.UpateCateUrlTitle(c.GetUserId(), cateId, urlTitle)
|
2017-04-08 18:55:42 +08:00
|
|
|
return c.RenderJSON(re)
|
2014-11-12 17:32:03 +08:00
|
|
|
}
|
|
|
|
|
2014-11-09 16:24:19 +08:00
|
|
|
// 保存之, 包含增加与保存
|
|
|
|
func (c MemberBlog) DoAddOrUpdateSingle(singleId, title, content string) revel.Result {
|
|
|
|
re := info.NewRe()
|
|
|
|
re.Ok = blogService.AddOrUpdateSingle(c.GetUserId(), singleId, title, content)
|
2017-04-08 18:55:42 +08:00
|
|
|
return c.RenderJSON(re)
|
2014-11-09 16:24:19 +08:00
|
|
|
}
|
|
|
|
func (c MemberBlog) AddOrUpdateSingle(singleId string) revel.Result {
|
|
|
|
c.common()
|
2017-04-08 18:55:42 +08:00
|
|
|
c.ViewArgs["title"] = c.Message("Add Single")
|
|
|
|
c.ViewArgs["singleId"] = singleId
|
2014-11-09 16:24:19 +08:00
|
|
|
if singleId != "" {
|
2017-04-08 18:55:42 +08:00
|
|
|
c.ViewArgs["title"] = c.Message("Update Single")
|
|
|
|
c.ViewArgs["single"] = blogService.GetSingle(singleId)
|
2014-11-09 16:24:19 +08:00
|
|
|
}
|
2015-01-08 21:15:56 +08:00
|
|
|
return c.RenderTemplate("member/blog/add_single.html")
|
2014-11-09 16:24:19 +08:00
|
|
|
}
|
|
|
|
func (c MemberBlog) SortSingles(singleIds []string) revel.Result {
|
|
|
|
re := info.NewRe()
|
|
|
|
re.Ok = blogService.SortSingles(c.GetUserId(), singleIds)
|
2017-04-08 18:55:42 +08:00
|
|
|
return c.RenderJSON(re)
|
2014-11-09 16:24:19 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
func (c MemberBlog) DeleteSingle(singleId string) revel.Result {
|
|
|
|
re := info.NewRe()
|
|
|
|
re.Ok = blogService.DeleteSingle(c.GetUserId(), singleId)
|
2017-04-08 18:55:42 +08:00
|
|
|
return c.RenderJSON(re)
|
2014-11-09 16:24:19 +08:00
|
|
|
}
|
2014-11-12 17:32:03 +08:00
|
|
|
|
|
|
|
// 修改页面标题
|
|
|
|
func (c MemberBlog) UpdateSingleUrlTitle(singleId, urlTitle string) revel.Result {
|
|
|
|
re := info.NewRe()
|
|
|
|
re.Ok, re.Item = blogService.UpdateSingleUrlTitle(c.GetUserId(), singleId, urlTitle)
|
2017-04-08 18:55:42 +08:00
|
|
|
return c.RenderJSON(re)
|
2014-11-12 17:32:03 +08:00
|
|
|
}
|
|
|
|
|
2014-11-09 16:24:19 +08:00
|
|
|
func (c MemberBlog) Single() revel.Result {
|
|
|
|
c.common()
|
2017-04-08 18:55:42 +08:00
|
|
|
c.ViewArgs["title"] = c.Message("Single")
|
|
|
|
c.ViewArgs["singles"] = blogService.GetSingles(c.GetUserId())
|
2015-01-08 21:15:56 +08:00
|
|
|
|
|
|
|
return c.RenderTemplate("member/blog/single.html")
|
2014-11-09 16:24:19 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
// 主题
|
|
|
|
func (c MemberBlog) Theme() revel.Result {
|
|
|
|
c.common()
|
|
|
|
activeTheme, otherThemes := themeService.GetUserThemes(c.GetUserId())
|
2017-04-08 18:55:42 +08:00
|
|
|
c.ViewArgs["activeTheme"] = activeTheme
|
|
|
|
c.ViewArgs["otherThemes"] = otherThemes
|
2015-01-08 21:15:56 +08:00
|
|
|
|
2017-04-08 18:55:42 +08:00
|
|
|
c.ViewArgs["optionThemes"] = themeService.GetDefaultThemes()
|
2015-01-08 21:15:56 +08:00
|
|
|
|
2017-04-08 18:55:42 +08:00
|
|
|
c.ViewArgs["title"] = c.Message("Theme")
|
2015-01-08 21:15:56 +08:00
|
|
|
return c.RenderTemplate("member/blog/theme.html")
|
2014-11-09 16:24:19 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
// 编辑主题
|
|
|
|
var baseTpls = []string{"header.html", "footer.html", "index.html", "cate.html", "search.html", "post.html", "single.html", "tags.html", "tag_posts.html", "archive.html", "share_comment.html", "404.html", "theme.json", "style.css", "blog.js"}
|
2015-01-08 21:15:56 +08:00
|
|
|
|
2014-11-09 16:24:19 +08:00
|
|
|
func (c MemberBlog) UpdateTheme(themeId string, isNew int) revel.Result {
|
|
|
|
// 查看用户是否有该theme, 若没有则复制default之
|
|
|
|
// 得到主题的文件列表
|
|
|
|
userBlog := blogService.GetUserBlog(c.GetUserId())
|
|
|
|
if themeId == "" {
|
|
|
|
_, themeId = themeService.NewThemeForFirst(userBlog)
|
|
|
|
return c.Redirect("/member/blog/updateTheme?themeId=" + themeId)
|
|
|
|
}
|
2015-01-08 21:15:56 +08:00
|
|
|
|
2014-11-09 16:24:19 +08:00
|
|
|
c.common()
|
2017-04-08 18:55:42 +08:00
|
|
|
c.ViewArgs["title"] = c.Message("Update Theme")
|
|
|
|
c.ViewArgs["isNew"] = isNew
|
2015-01-08 21:15:56 +08:00
|
|
|
|
2014-11-09 16:24:19 +08:00
|
|
|
// 先复制之
|
2017-04-08 18:55:42 +08:00
|
|
|
c.ViewArgs["themeId"] = themeId
|
2015-01-08 21:15:56 +08:00
|
|
|
|
2014-11-09 16:24:19 +08:00
|
|
|
// 得到脚本目录
|
|
|
|
userId := c.GetUserId()
|
2015-01-08 21:15:56 +08:00
|
|
|
|
|
|
|
theme := themeService.GetTheme(userId, themeId)
|
|
|
|
if theme.ThemeId == "" {
|
|
|
|
return c.E404()
|
|
|
|
}
|
2017-04-08 18:55:42 +08:00
|
|
|
c.ViewArgs["theme"] = theme
|
2015-01-08 21:15:56 +08:00
|
|
|
|
2014-11-09 16:24:19 +08:00
|
|
|
path := revel.BasePath + "/" + theme.Path
|
2015-01-08 21:15:56 +08:00
|
|
|
|
2014-11-09 16:24:19 +08:00
|
|
|
tpls := ListDir(path)
|
|
|
|
myTpls := make([]string, len(baseTpls))
|
|
|
|
tplMap := map[string]bool{}
|
|
|
|
for i, t := range baseTpls {
|
|
|
|
myTpls[i] = t
|
|
|
|
tplMap[t] = true
|
|
|
|
}
|
|
|
|
// 得到没有的tpls
|
|
|
|
for _, t := range tpls {
|
|
|
|
if t == "images" {
|
2015-01-08 21:15:56 +08:00
|
|
|
continue
|
2014-11-09 16:24:19 +08:00
|
|
|
}
|
|
|
|
if !tplMap[t] {
|
|
|
|
myTpls = append(myTpls, t)
|
|
|
|
}
|
|
|
|
}
|
2015-01-08 21:15:56 +08:00
|
|
|
|
2017-04-08 18:55:42 +08:00
|
|
|
c.ViewArgs["myTpls"] = myTpls
|
2015-01-08 21:15:56 +08:00
|
|
|
|
|
|
|
return c.RenderTemplate("member/blog/update_theme.html")
|
2014-11-09 16:24:19 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
// 得到文件内容
|
|
|
|
func (c MemberBlog) GetTplContent(themeId string, filename string) revel.Result {
|
|
|
|
re := info.NewRe()
|
|
|
|
re.Ok = true
|
|
|
|
re.Item = themeService.GetTplContent(c.GetUserId(), themeId, filename)
|
2015-01-08 21:15:56 +08:00
|
|
|
|
2017-04-08 18:55:42 +08:00
|
|
|
return c.RenderJSON(re)
|
2014-11-09 16:24:19 +08:00
|
|
|
}
|
|
|
|
func (c MemberBlog) UpdateTplContent(themeId, filename, content string) revel.Result {
|
|
|
|
re := info.NewRe()
|
|
|
|
re.Ok, re.Msg = themeService.UpdateTplContent(c.GetUserId(), themeId, filename, content)
|
2015-01-08 21:15:56 +08:00
|
|
|
return c.RenderRe(re)
|
2014-11-09 16:24:19 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
func (c MemberBlog) DeleteTpl(themeId, filename string) revel.Result {
|
|
|
|
re := info.NewRe()
|
|
|
|
re.Ok = themeService.DeleteTpl(c.GetUserId(), themeId, filename)
|
2017-04-08 18:55:42 +08:00
|
|
|
return c.RenderJSON(re)
|
2014-11-09 16:24:19 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
func (c MemberBlog) ListThemeImages(themeId string) revel.Result {
|
|
|
|
re := info.NewRe()
|
|
|
|
userId := c.GetUserId()
|
|
|
|
path := themeService.GetThemeAbsolutePath(userId, themeId) + "/images"
|
|
|
|
os.MkdirAll(path, 0755)
|
|
|
|
images := ListDir(path)
|
|
|
|
re.List = images
|
|
|
|
re.Ok = true
|
2017-04-08 18:55:42 +08:00
|
|
|
return c.RenderJSON(re)
|
2014-11-09 16:24:19 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
func (c MemberBlog) DeleteThemeImage(themeId, filename string) revel.Result {
|
|
|
|
re := info.NewRe()
|
|
|
|
path := themeService.GetThemeAbsolutePath(c.GetUserId(), themeId) + "/images/" + filename
|
|
|
|
re.Ok = DeleteFile(path)
|
2017-04-08 18:55:42 +08:00
|
|
|
return c.RenderJSON(re)
|
2014-11-09 16:24:19 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
// 上传主题图片
|
|
|
|
func (c MemberBlog) UploadThemeImage(themeId string) revel.Result {
|
2015-01-08 21:15:56 +08:00
|
|
|
re := c.uploadImage(themeId)
|
2017-04-08 18:55:42 +08:00
|
|
|
c.ViewArgs["fileUrlPath"] = re.Id
|
|
|
|
c.ViewArgs["resultCode"] = re.Code
|
|
|
|
c.ViewArgs["resultMsg"] = re.Msg
|
2014-11-09 16:24:19 +08:00
|
|
|
return c.RenderTemplate("file/blog_logo.html")
|
|
|
|
}
|
|
|
|
func (c MemberBlog) uploadImage(themeId string) (re info.Re) {
|
|
|
|
var fileId = ""
|
2015-01-08 21:15:56 +08:00
|
|
|
var resultCode = 0 // 1表示正常
|
2014-11-09 16:24:19 +08:00
|
|
|
var resultMsg = "内部错误" // 错误信息
|
|
|
|
var Ok = false
|
2015-01-08 21:15:56 +08:00
|
|
|
|
2014-11-09 16:24:19 +08:00
|
|
|
defer func() {
|
|
|
|
re.Id = fileId // 只是id, 没有其它信息
|
|
|
|
re.Code = resultCode
|
|
|
|
re.Msg = resultMsg
|
|
|
|
re.Ok = Ok
|
|
|
|
}()
|
2015-01-08 21:15:56 +08:00
|
|
|
|
2014-11-09 16:24:19 +08:00
|
|
|
file, handel, err := c.Request.FormFile("file")
|
|
|
|
if err != nil {
|
|
|
|
return re
|
|
|
|
}
|
|
|
|
defer file.Close()
|
|
|
|
// 生成上传路径
|
|
|
|
dir := themeService.GetThemeAbsolutePath(c.GetUserId(), themeId) + "/images"
|
|
|
|
err = os.MkdirAll(dir, 0755)
|
|
|
|
if err != nil {
|
|
|
|
return re
|
|
|
|
}
|
|
|
|
// 生成新的文件名
|
|
|
|
filename := handel.Filename
|
2015-01-08 21:15:56 +08:00
|
|
|
|
|
|
|
var ext string
|
|
|
|
|
2014-11-09 16:24:19 +08:00
|
|
|
_, ext = SplitFilename(filename)
|
2015-01-08 21:15:56 +08:00
|
|
|
if ext != ".gif" && ext != ".jpg" && ext != ".png" && ext != ".bmp" && ext != ".jpeg" {
|
2014-11-09 16:24:19 +08:00
|
|
|
resultMsg = "不是图片"
|
|
|
|
return re
|
|
|
|
}
|
|
|
|
|
|
|
|
filename = filename
|
|
|
|
data, err := ioutil.ReadAll(file)
|
|
|
|
if err != nil {
|
|
|
|
LogJ(err)
|
|
|
|
return re
|
|
|
|
}
|
2015-01-08 21:15:56 +08:00
|
|
|
|
2014-11-09 16:24:19 +08:00
|
|
|
// > 2M?
|
2015-01-08 21:15:56 +08:00
|
|
|
if len(data) > 5*1024*1024 {
|
2014-11-09 16:24:19 +08:00
|
|
|
resultCode = 0
|
|
|
|
resultMsg = "图片大于2M"
|
|
|
|
return re
|
|
|
|
}
|
2015-01-08 21:15:56 +08:00
|
|
|
|
|
|
|
toPath := dir + "/" + filename
|
2014-11-09 16:24:19 +08:00
|
|
|
err = ioutil.WriteFile(toPath, data, 0777)
|
|
|
|
if err != nil {
|
|
|
|
LogJ(err)
|
|
|
|
return re
|
|
|
|
}
|
|
|
|
TransToGif(toPath, 0, true)
|
|
|
|
resultCode = 1
|
|
|
|
resultMsg = "上传成功!"
|
2015-01-08 21:15:56 +08:00
|
|
|
|
2014-11-09 16:24:19 +08:00
|
|
|
return re
|
|
|
|
}
|
|
|
|
|
|
|
|
//
|
|
|
|
// 使用主题
|
|
|
|
func (c MemberBlog) ActiveTheme(themeId string) revel.Result {
|
|
|
|
re := info.NewRe()
|
|
|
|
re.Ok = themeService.ActiveTheme(c.GetUserId(), themeId)
|
2017-04-08 18:55:42 +08:00
|
|
|
return c.RenderJSON(re)
|
2014-11-09 16:24:19 +08:00
|
|
|
}
|
2015-01-08 21:15:56 +08:00
|
|
|
|
2014-11-09 16:24:19 +08:00
|
|
|
// 删除主题
|
|
|
|
func (c MemberBlog) DeleteTheme(themeId string) revel.Result {
|
|
|
|
re := info.NewRe()
|
|
|
|
re.Ok = themeService.DeleteTheme(c.GetUserId(), themeId)
|
2017-04-08 18:55:42 +08:00
|
|
|
return c.RenderJSON(re)
|
2014-11-09 16:24:19 +08:00
|
|
|
}
|
2015-01-08 21:15:56 +08:00
|
|
|
|
2014-11-09 16:24:19 +08:00
|
|
|
// 管理员公开主题
|
|
|
|
func (c MemberBlog) PublicTheme(themeId string) revel.Result {
|
|
|
|
re := info.NewRe()
|
|
|
|
re.Ok = themeService.PublicTheme(c.GetUserId(), themeId)
|
2017-04-08 18:55:42 +08:00
|
|
|
return c.RenderJSON(re)
|
2014-11-09 16:24:19 +08:00
|
|
|
}
|
2015-01-08 21:15:56 +08:00
|
|
|
|
2014-11-09 16:24:19 +08:00
|
|
|
// 导出
|
|
|
|
func (c MemberBlog) ExportTheme(themeId string) revel.Result {
|
|
|
|
re := info.NewRe()
|
|
|
|
var path string
|
|
|
|
re.Ok, path = themeService.ExportTheme(c.GetUserId(), themeId)
|
|
|
|
if !re.Ok {
|
|
|
|
return c.RenderText("error...")
|
|
|
|
}
|
|
|
|
fw, err := os.Open(path)
|
2015-01-08 21:15:56 +08:00
|
|
|
if err != nil {
|
2014-11-09 16:24:19 +08:00
|
|
|
return c.RenderText("error")
|
2015-01-08 21:15:56 +08:00
|
|
|
}
|
|
|
|
return c.RenderBinary(fw, GetFilename(path), revel.Attachment, time.Now()) // revel.Attachment
|
2014-11-09 16:24:19 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
// 导入主题
|
|
|
|
func (c MemberBlog) ImportTheme() revel.Result {
|
|
|
|
re := info.NewRe()
|
2015-01-08 21:15:56 +08:00
|
|
|
|
2014-11-09 16:24:19 +08:00
|
|
|
file, handel, err := c.Request.FormFile("file")
|
|
|
|
if err != nil {
|
|
|
|
re.Msg = fmt.Sprintf("%v", err)
|
2017-04-08 18:55:42 +08:00
|
|
|
return c.RenderJSON(re)
|
2014-11-09 16:24:19 +08:00
|
|
|
}
|
2015-11-28 15:17:36 +08:00
|
|
|
|
2014-11-09 16:24:19 +08:00
|
|
|
defer file.Close()
|
|
|
|
// 生成上传路径
|
|
|
|
userId := c.GetUserId()
|
|
|
|
dir := revel.BasePath + "/public/upload/" + userId + "/tmp"
|
|
|
|
err = os.MkdirAll(dir, 0755)
|
|
|
|
if err != nil {
|
|
|
|
re.Msg = fmt.Sprintf("%v", err)
|
2017-04-08 18:55:42 +08:00
|
|
|
return c.RenderJSON(re)
|
2014-11-09 16:24:19 +08:00
|
|
|
}
|
|
|
|
// 生成新的文件名
|
|
|
|
filename := handel.Filename
|
2015-01-08 21:15:56 +08:00
|
|
|
|
|
|
|
var ext string
|
2014-11-09 16:24:19 +08:00
|
|
|
_, ext = SplitFilename(filename)
|
2015-01-08 21:15:56 +08:00
|
|
|
if ext != ".zip" {
|
2015-06-15 18:01:48 +08:00
|
|
|
re.Msg = "Please upload zip file"
|
2017-04-08 18:55:42 +08:00
|
|
|
return c.RenderJSON(re)
|
2014-11-09 16:24:19 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
filename = filename
|
|
|
|
data, err := ioutil.ReadAll(file)
|
|
|
|
if err != nil {
|
2017-04-08 18:55:42 +08:00
|
|
|
return c.RenderJSON(re)
|
2014-11-09 16:24:19 +08:00
|
|
|
}
|
2015-01-08 21:15:56 +08:00
|
|
|
|
2014-11-09 16:24:19 +08:00
|
|
|
// > 10M?
|
2015-01-08 21:15:56 +08:00
|
|
|
if len(data) > 10*1024*1024 {
|
2015-06-15 18:01:48 +08:00
|
|
|
re.Msg = "File is big than 10M"
|
2017-04-08 18:55:42 +08:00
|
|
|
return c.RenderJSON(re)
|
2014-11-09 16:24:19 +08:00
|
|
|
}
|
2015-01-08 21:15:56 +08:00
|
|
|
|
|
|
|
toPath := dir + "/" + filename
|
2014-11-09 16:24:19 +08:00
|
|
|
err = ioutil.WriteFile(toPath, data, 0777)
|
|
|
|
if err != nil {
|
|
|
|
re.Msg = fmt.Sprintf("%v", err)
|
2017-04-08 18:55:42 +08:00
|
|
|
return c.RenderJSON(re)
|
2014-11-09 16:24:19 +08:00
|
|
|
}
|
2015-01-08 21:15:56 +08:00
|
|
|
|
2014-11-09 16:24:19 +08:00
|
|
|
// 上传好后, 增加之
|
2015-01-08 21:15:56 +08:00
|
|
|
re.Ok, re.Msg = themeService.ImportTheme(c.GetUserId(), toPath)
|
|
|
|
return c.RenderRe(re)
|
2014-11-09 16:24:19 +08:00
|
|
|
}
|
2015-01-08 21:15:56 +08:00
|
|
|
|
2014-11-09 16:24:19 +08:00
|
|
|
// 安装
|
|
|
|
func (c MemberBlog) InstallTheme(themeId string) revel.Result {
|
|
|
|
re := info.NewRe()
|
|
|
|
re.Ok = themeService.InstallTheme(c.GetUserId(), themeId)
|
2017-04-08 18:55:42 +08:00
|
|
|
return c.RenderJSON(re)
|
2014-11-09 16:24:19 +08:00
|
|
|
}
|
2015-01-08 21:15:56 +08:00
|
|
|
|
2014-11-09 16:24:19 +08:00
|
|
|
// 新建主题
|
|
|
|
func (c MemberBlog) NewTheme() revel.Result {
|
|
|
|
_, themeId := themeService.NewTheme(c.GetUserId())
|
|
|
|
return c.Redirect("/member/blog/updateTheme?isNew=1&themeId=" + themeId)
|
|
|
|
}
|
2015-01-08 21:15:56 +08:00
|
|
|
|
2014-11-09 16:24:19 +08:00
|
|
|
//-----------
|
2015-01-08 21:15:56 +08:00
|
|
|
//
|
2014-11-09 16:24:19 +08:00
|
|
|
func (c MemberBlog) SetUserBlogBase(userBlog info.UserBlogBase) revel.Result {
|
|
|
|
re := info.NewRe()
|
|
|
|
re.Ok = blogService.UpdateUserBlogBase(c.GetUserId(), userBlog)
|
2017-04-08 18:55:42 +08:00
|
|
|
return c.RenderJSON(re)
|
2014-11-09 16:24:19 +08:00
|
|
|
}
|
|
|
|
func (c MemberBlog) SetUserBlogComment(userBlog info.UserBlogComment) revel.Result {
|
|
|
|
re := info.NewRe()
|
|
|
|
re.Ok = blogService.UpdateUserBlogComment(c.GetUserId(), userBlog)
|
2017-04-08 18:55:42 +08:00
|
|
|
return c.RenderJSON(re)
|
2014-11-09 16:24:19 +08:00
|
|
|
}
|
|
|
|
func (c MemberBlog) SetUserBlogStyle(userBlog info.UserBlogStyle) revel.Result {
|
|
|
|
re := info.NewRe()
|
|
|
|
re.Ok = blogService.UpdateUserBlogStyle(c.GetUserId(), userBlog)
|
2017-04-08 18:55:42 +08:00
|
|
|
return c.RenderJSON(re)
|
2014-11-09 16:24:19 +08:00
|
|
|
}
|
2015-01-08 21:15:56 +08:00
|
|
|
|
2014-11-09 16:24:19 +08:00
|
|
|
func (c MemberBlog) SetUserBlogPaging(perPageSize int, sortField string, isAsc bool) revel.Result {
|
|
|
|
re := info.NewRe()
|
|
|
|
re.Ok, re.Msg = blogService.UpdateUserBlogPaging(c.GetUserId(), perPageSize, sortField, isAsc)
|
|
|
|
return c.RenderRe(re)
|
2014-11-12 17:32:03 +08:00
|
|
|
}
|