fmt all go file
This commit is contained in:
1 parent
cba69444a8
commit
7809d00787
77 files changed
+609
-565
No files matched your search
+2
-2
@@ -1,9 +1,9 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/revel/revel"
|
|
||||||
"github.com/revel/cmd/harness"
|
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"github.com/revel/cmd/harness"
|
||||||
|
"github.com/revel/revel"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ type Album struct {
|
|||||||
|
|
||||||
// 图片管理, iframe
|
// 图片管理, iframe
|
||||||
func (c Album) Index() revel.Result {
|
func (c Album) Index() revel.Result {
|
||||||
c.SetLocale();
|
c.SetLocale()
|
||||||
return c.RenderTemplate("album/index.html")
|
return c.RenderTemplate("album/index.html")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3,17 +3,17 @@ package controllers
|
|||||||
import (
|
import (
|
||||||
"github.com/revel/revel"
|
"github.com/revel/revel"
|
||||||
// "encoding/json"
|
// "encoding/json"
|
||||||
"gopkg.in/mgo.v2/bson"
|
"archive/tar"
|
||||||
. "github.com/leanote/leanote/app/lea"
|
"compress/gzip"
|
||||||
|
"fmt"
|
||||||
"github.com/leanote/leanote/app/info"
|
"github.com/leanote/leanote/app/info"
|
||||||
|
. "github.com/leanote/leanote/app/lea"
|
||||||
|
"gopkg.in/mgo.v2/bson"
|
||||||
|
"io"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"os"
|
"os"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
"io"
|
|
||||||
"fmt"
|
|
||||||
"archive/tar"
|
|
||||||
"compress/gzip"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// 附件
|
// 附件
|
||||||
@@ -57,11 +57,11 @@ func (c Attach) uploadAttach(noteId string) (re info.Re) {
|
|||||||
return re
|
return re
|
||||||
}
|
}
|
||||||
// > 5M?
|
// > 5M?
|
||||||
maxFileSize := configService.GetUploadSize("uploadAttachSize");
|
maxFileSize := configService.GetUploadSize("uploadAttachSize")
|
||||||
if maxFileSize <= 0 {
|
if maxFileSize <= 0 {
|
||||||
maxFileSize = 1000
|
maxFileSize = 1000
|
||||||
}
|
}
|
||||||
if(float64(len(data)) > maxFileSize * float64(1024*1024)) {
|
if float64(len(data)) > maxFileSize*float64(1024*1024) {
|
||||||
resultMsg = fmt.Sprintf("The file's size is bigger than %vM", maxFileSize)
|
resultMsg = fmt.Sprintf("The file's size is bigger than %vM", maxFileSize)
|
||||||
return re
|
return re
|
||||||
}
|
}
|
||||||
@@ -77,7 +77,7 @@ func (c Attach) uploadAttach(noteId string) (re info.Re) {
|
|||||||
filename := handel.Filename
|
filename := handel.Filename
|
||||||
_, ext := SplitFilename(filename) // .doc
|
_, ext := SplitFilename(filename) // .doc
|
||||||
filename = NewGuid() + ext
|
filename = NewGuid() + ext
|
||||||
toPath := dir + "/" + filename;
|
toPath := dir + "/" + filename
|
||||||
err = ioutil.WriteFile(toPath, data, 0777)
|
err = ioutil.WriteFile(toPath, data, 0777)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return re
|
return re
|
||||||
@@ -97,7 +97,7 @@ func (c Attach) uploadAttach(noteId string) (re info.Re) {
|
|||||||
Type: fileType,
|
Type: fileType,
|
||||||
Size: filesize}
|
Size: filesize}
|
||||||
|
|
||||||
id := bson.NewObjectId();
|
id := bson.NewObjectId()
|
||||||
fileInfo.AttachId = id
|
fileInfo.AttachId = id
|
||||||
fileId = id.Hex()
|
fileId = id.Hex()
|
||||||
Ok, resultMsg = attachService.AddAttach(fileInfo, false)
|
Ok, resultMsg = attachService.AddAttach(fileInfo, false)
|
||||||
@@ -105,7 +105,7 @@ func (c Attach) uploadAttach(noteId string) (re info.Re) {
|
|||||||
resultMsg = c.Message(resultMsg)
|
resultMsg = c.Message(resultMsg)
|
||||||
}
|
}
|
||||||
|
|
||||||
fileInfo.Path = ""; // 不要返回
|
fileInfo.Path = "" // 不要返回
|
||||||
if Ok {
|
if Ok {
|
||||||
resultMsg = "success"
|
resultMsg = "success"
|
||||||
}
|
}
|
||||||
@@ -130,7 +130,7 @@ func (c Attach) GetAttachs(noteId string) revel.Result {
|
|||||||
// 下载附件
|
// 下载附件
|
||||||
// 权限判断
|
// 权限判断
|
||||||
func (c Attach) Download(attachId string) revel.Result {
|
func (c Attach) Download(attachId string) revel.Result {
|
||||||
attach := attachService.GetAttach(attachId, c.GetUserId()); // 得到路径
|
attach := attachService.GetAttach(attachId, c.GetUserId()) // 得到路径
|
||||||
path := attach.Path
|
path := attach.Path
|
||||||
if path == "" {
|
if path == "" {
|
||||||
return c.RenderText("")
|
return c.RenderText("")
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
package controllers
|
package controllers
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/revel/revel"
|
|
||||||
"github.com/leanote/leanote/app/info"
|
"github.com/leanote/leanote/app/info"
|
||||||
. "github.com/leanote/leanote/app/lea"
|
. "github.com/leanote/leanote/app/lea"
|
||||||
|
"github.com/revel/revel"
|
||||||
// "strconv"
|
// "strconv"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -75,6 +75,7 @@ func (c Auth) DoLogin(email, pwd string, captcha string) revel.Result {
|
|||||||
|
|
||||||
return c.RenderJson(info.Re{Ok: false, Item: sessionService.LoginTimesIsOver(sessionId), Msg: c.Message(msg)})
|
return c.RenderJson(info.Re{Ok: false, Item: sessionService.LoginTimesIsOver(sessionId), Msg: c.Message(msg)})
|
||||||
}
|
}
|
||||||
|
|
||||||
// 注销
|
// 注销
|
||||||
func (c Auth) Logout() revel.Result {
|
func (c Auth) Logout() revel.Result {
|
||||||
sessionId := c.Session.Id()
|
sessionId := c.Session.Id()
|
||||||
@@ -117,13 +118,13 @@ func (c Auth) DoRegister(email, pwd, iu string) revel.Result {
|
|||||||
return c.Redirect("/index")
|
return c.Redirect("/index")
|
||||||
}
|
}
|
||||||
|
|
||||||
re := info.NewRe();
|
re := info.NewRe()
|
||||||
|
|
||||||
if re.Ok, re.Msg = Vd("email", email); !re.Ok {
|
if re.Ok, re.Msg = Vd("email", email); !re.Ok {
|
||||||
return c.RenderRe(re);
|
return c.RenderRe(re)
|
||||||
}
|
}
|
||||||
if re.Ok, re.Msg = Vd("password", pwd); !re.Ok {
|
if re.Ok, re.Msg = Vd("password", pwd); !re.Ok {
|
||||||
return c.RenderRe(re);
|
return c.RenderRe(re)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 注册
|
// 注册
|
||||||
@@ -150,6 +151,7 @@ func (c Auth) DoFindPassword(email string) revel.Result {
|
|||||||
re.Ok = true
|
re.Ok = true
|
||||||
return c.RenderJson(re)
|
return c.RenderJson(re)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 点击链接后, 先验证之
|
// 点击链接后, 先验证之
|
||||||
func (c Auth) FindPassword2(token string) revel.Result {
|
func (c Auth) FindPassword2(token string) revel.Result {
|
||||||
c.RenderArgs["title"] = c.Message("findPassword")
|
c.RenderArgs["title"] = c.Message("findPassword")
|
||||||
@@ -157,7 +159,7 @@ func (c Auth) FindPassword2(token string) revel.Result {
|
|||||||
if token == "" {
|
if token == "" {
|
||||||
return c.RenderTemplate("find_password2_timeout.html")
|
return c.RenderTemplate("find_password2_timeout.html")
|
||||||
}
|
}
|
||||||
ok, _, findPwd := tokenService.VerifyToken(token, info.TokenPwd);
|
ok, _, findPwd := tokenService.VerifyToken(token, info.TokenPwd)
|
||||||
if !ok {
|
if !ok {
|
||||||
return c.RenderTemplate("home/find_password2_timeout.html")
|
return c.RenderTemplate("home/find_password2_timeout.html")
|
||||||
}
|
}
|
||||||
@@ -168,12 +170,13 @@ func (c Auth) FindPassword2(token string) revel.Result {
|
|||||||
|
|
||||||
return c.RenderTemplate("home/find_password2.html")
|
return c.RenderTemplate("home/find_password2.html")
|
||||||
}
|
}
|
||||||
|
|
||||||
// 找回密码修改密码
|
// 找回密码修改密码
|
||||||
func (c Auth) FindPasswordUpdate(token, pwd string) revel.Result {
|
func (c Auth) FindPasswordUpdate(token, pwd string) revel.Result {
|
||||||
re := info.NewRe();
|
re := info.NewRe()
|
||||||
|
|
||||||
if re.Ok, re.Msg = Vd("password", pwd); !re.Ok {
|
if re.Ok, re.Msg = Vd("password", pwd); !re.Ok {
|
||||||
return c.RenderRe(re);
|
return c.RenderRe(re)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 修改之
|
// 修改之
|
||||||
|
|||||||
@@ -1,17 +1,17 @@
|
|||||||
package controllers
|
package controllers
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/revel/revel"
|
|
||||||
"gopkg.in/mgo.v2/bson"
|
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"github.com/leanote/leanote/app/info"
|
"github.com/leanote/leanote/app/info"
|
||||||
|
"github.com/revel/revel"
|
||||||
|
"gopkg.in/mgo.v2/bson"
|
||||||
// . "github.com/leanote/leanote/app/lea"
|
// . "github.com/leanote/leanote/app/lea"
|
||||||
// "io/ioutil"
|
// "io/ioutil"
|
||||||
// "fmt"
|
// "fmt"
|
||||||
|
"bytes"
|
||||||
"math"
|
"math"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
"bytes"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// 公用Controller, 其它Controller继承它
|
// 公用Controller, 其它Controller继承它
|
||||||
@@ -56,7 +56,7 @@ func (c BaseController) GetUsername() string {
|
|||||||
// 得到用户信息
|
// 得到用户信息
|
||||||
func (c BaseController) GetUserInfo() info.User {
|
func (c BaseController) GetUserInfo() info.User {
|
||||||
if userId, ok := c.Session["UserId"]; ok && userId != "" {
|
if userId, ok := c.Session["UserId"]; ok && userId != "" {
|
||||||
return userService.GetUserInfo(userId);
|
return userService.GetUserInfo(userId)
|
||||||
/*
|
/*
|
||||||
notebookWidth, _ := strconv.Atoi(c.Session["NotebookWidth"])
|
notebookWidth, _ := strconv.Atoi(c.Session["NotebookWidth"])
|
||||||
noteListWidth, _ := strconv.Atoi(c.Session["NoteListWidth"])
|
noteListWidth, _ := strconv.Atoi(c.Session["NoteListWidth"])
|
||||||
@@ -86,7 +86,7 @@ func (c BaseController) GetUserInfo() info.User {
|
|||||||
|
|
||||||
func (c BaseController) GetUserAndBlogUrl() info.UserAndBlogUrl {
|
func (c BaseController) GetUserAndBlogUrl() info.UserAndBlogUrl {
|
||||||
if userId, ok := c.Session["UserId"]; ok && userId != "" {
|
if userId, ok := c.Session["UserId"]; ok && userId != "" {
|
||||||
return userService.GetUserAndBlogUrl(userId);
|
return userService.GetUserAndBlogUrl(userId)
|
||||||
}
|
}
|
||||||
return info.UserAndBlogUrl{}
|
return info.UserAndBlogUrl{}
|
||||||
}
|
}
|
||||||
@@ -157,9 +157,9 @@ func (c BaseController) GetPage() int {
|
|||||||
// 判断是否含有某参数
|
// 判断是否含有某参数
|
||||||
func (c BaseController) Has(key string) bool {
|
func (c BaseController) Has(key string) bool {
|
||||||
if _, ok := c.Params.Values[key]; ok {
|
if _, ok := c.Params.Values[key]; ok {
|
||||||
return true;
|
return true
|
||||||
}
|
}
|
||||||
return false;
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -174,7 +174,7 @@ func (c BaseController) GetTotalPage(page, count int) int {
|
|||||||
|
|
||||||
//-------------
|
//-------------
|
||||||
func (c BaseController) E404() revel.Result {
|
func (c BaseController) E404() revel.Result {
|
||||||
c.RenderArgs["title"] = "404";
|
c.RenderArgs["title"] = "404"
|
||||||
return c.NotFound("", nil)
|
return c.NotFound("", nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -187,10 +187,10 @@ func (c BaseController) SetLocale() string {
|
|||||||
lang = locale[0:pos]
|
lang = locale[0:pos]
|
||||||
}
|
}
|
||||||
if lang != "zh" && lang != "en" {
|
if lang != "zh" && lang != "en" {
|
||||||
lang = "en";
|
lang = "en"
|
||||||
}
|
}
|
||||||
c.RenderArgs["locale"] = lang;
|
c.RenderArgs["locale"] = lang
|
||||||
c.RenderArgs["siteUrl"] = configService.GetSiteUrl();
|
c.RenderArgs["siteUrl"] = configService.GetSiteUrl()
|
||||||
|
|
||||||
c.RenderArgs["blogUrl"] = configService.GetBlogUrl()
|
c.RenderArgs["blogUrl"] = configService.GetBlogUrl()
|
||||||
c.RenderArgs["leaUrl"] = configService.GetLeaUrl()
|
c.RenderArgs["leaUrl"] = configService.GetLeaUrl()
|
||||||
@@ -203,7 +203,7 @@ func (c BaseController) SetLocale() string {
|
|||||||
func (c BaseController) SetUserInfo() info.User {
|
func (c BaseController) SetUserInfo() info.User {
|
||||||
userInfo := c.GetUserInfo()
|
userInfo := c.GetUserInfo()
|
||||||
c.RenderArgs["userInfo"] = userInfo
|
c.RenderArgs["userInfo"] = userInfo
|
||||||
if(userInfo.Username == configService.GetAdminUsername()) {
|
if userInfo.Username == configService.GetAdminUsername() {
|
||||||
c.RenderArgs["isAdmin"] = true
|
c.RenderArgs["isAdmin"] = true
|
||||||
}
|
}
|
||||||
return userInfo
|
return userInfo
|
||||||
@@ -225,7 +225,7 @@ func (c BaseController) RenderTemplateStr(templatePath string) string {
|
|||||||
|
|
||||||
var buffer bytes.Buffer
|
var buffer bytes.Buffer
|
||||||
tpl.Template.Render(&buffer, c.RenderArgs)
|
tpl.Template.Render(&buffer, c.RenderArgs)
|
||||||
return buffer.String();
|
return buffer.String()
|
||||||
}
|
}
|
||||||
|
|
||||||
// json, result
|
// json, result
|
||||||
@@ -234,7 +234,7 @@ func (c BaseController) RenderTemplateStr(templatePath string) string {
|
|||||||
func (c BaseController) RenderRe(re info.Re) revel.Result {
|
func (c BaseController) RenderRe(re info.Re) revel.Result {
|
||||||
oldMsg := re.Msg
|
oldMsg := re.Msg
|
||||||
if re.Msg != "" {
|
if re.Msg != "" {
|
||||||
if(strings.Contains(re.Msg, "-")) {
|
if strings.Contains(re.Msg, "-") {
|
||||||
msgAndValues := strings.Split(re.Msg, "-")
|
msgAndValues := strings.Split(re.Msg, "-")
|
||||||
if len(msgAndValues) == 2 {
|
if len(msgAndValues) == 2 {
|
||||||
re.Msg = c.Message(msgAndValues[0], msgAndValues[1])
|
re.Msg = c.Message(msgAndValues[0], msgAndValues[1])
|
||||||
|
|||||||
@@ -59,7 +59,7 @@ func (c Blog) render(templateName string, themePath string) revel.Result {
|
|||||||
c.setPreviewUrl()
|
c.setPreviewUrl()
|
||||||
|
|
||||||
// 因为common的themeInfo是从UserBlog.ThemeId来取的, 所以这里要fugai下
|
// 因为common的themeInfo是从UserBlog.ThemeId来取的, 所以这里要fugai下
|
||||||
c.RenderArgs["themeInfo"] = c.RenderArgs["themeInfoPreview"];
|
c.RenderArgs["themeInfo"] = c.RenderArgs["themeInfoPreview"]
|
||||||
}
|
}
|
||||||
return blog.RenderTemplate(templateName, c.RenderArgs, revel.BasePath+"/"+themePath, isPreview)
|
return blog.RenderTemplate(templateName, c.RenderArgs, revel.BasePath+"/"+themePath, isPreview)
|
||||||
}
|
}
|
||||||
@@ -507,6 +507,7 @@ func (c Blog) Archives(userIdOrEmail string, cateId string, year, month int) (re
|
|||||||
// 进入某个用户的博客
|
// 进入某个用户的博客
|
||||||
var blogPageSize = 5
|
var blogPageSize = 5
|
||||||
var searchBlogPageSize = 30
|
var searchBlogPageSize = 30
|
||||||
|
|
||||||
// 分类 /cate/xxxxxxxx?notebookId=1212
|
// 分类 /cate/xxxxxxxx?notebookId=1212
|
||||||
func (c Blog) Cate(userIdOrEmail string, notebookId string) (re revel.Result) {
|
func (c Blog) Cate(userIdOrEmail string, notebookId string) (re revel.Result) {
|
||||||
// 自定义域名
|
// 自定义域名
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ type Captcha struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type Ca string
|
type Ca string
|
||||||
|
|
||||||
func (r Ca) Apply(req *revel.Request, resp *revel.Response) {
|
func (r Ca) Apply(req *revel.Request, resp *revel.Response) {
|
||||||
resp.WriteHeader(http.StatusOK, "image/png")
|
resp.WriteHeader(http.StatusOK, "image/png")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,13 +3,13 @@ package controllers
|
|||||||
import (
|
import (
|
||||||
"github.com/revel/revel"
|
"github.com/revel/revel"
|
||||||
// "encoding/json"
|
// "encoding/json"
|
||||||
"gopkg.in/mgo.v2/bson"
|
"fmt"
|
||||||
|
"github.com/leanote/leanote/app/info"
|
||||||
. "github.com/leanote/leanote/app/lea"
|
. "github.com/leanote/leanote/app/lea"
|
||||||
"github.com/leanote/leanote/app/lea/netutil"
|
"github.com/leanote/leanote/app/lea/netutil"
|
||||||
"github.com/leanote/leanote/app/info"
|
"gopkg.in/mgo.v2/bson"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"os"
|
"os"
|
||||||
"fmt"
|
|
||||||
// "strconv"
|
// "strconv"
|
||||||
"strings"
|
"strings"
|
||||||
)
|
)
|
||||||
@@ -22,7 +22,7 @@ type File struct {
|
|||||||
// 上传的是博客logo
|
// 上传的是博客logo
|
||||||
// TODO logo不要设置权限, 另外的目录
|
// TODO logo不要设置权限, 另外的目录
|
||||||
func (c File) UploadBlogLogo() revel.Result {
|
func (c File) UploadBlogLogo() revel.Result {
|
||||||
re := c.uploadImage("blogLogo", "");
|
re := c.uploadImage("blogLogo", "")
|
||||||
|
|
||||||
c.RenderArgs["fileUrlPath"] = re.Id
|
c.RenderArgs["fileUrlPath"] = re.Id
|
||||||
c.RenderArgs["resultCode"] = re.Code
|
c.RenderArgs["resultCode"] = re.Code
|
||||||
@@ -34,7 +34,7 @@ func (c File) UploadBlogLogo() revel.Result {
|
|||||||
// 拖拉上传, pasteImage
|
// 拖拉上传, pasteImage
|
||||||
// noteId 是为了判断是否是协作的note, 如果是则需要复制一份到note owner中
|
// noteId 是为了判断是否是协作的note, 如果是则需要复制一份到note owner中
|
||||||
func (c File) PasteImage(noteId string) revel.Result {
|
func (c File) PasteImage(noteId string) revel.Result {
|
||||||
re := c.uploadImage("pasteImage", "");
|
re := c.uploadImage("pasteImage", "")
|
||||||
|
|
||||||
userId := c.GetUserId()
|
userId := c.GetUserId()
|
||||||
note := noteService.GetNoteById(noteId)
|
note := noteService.GetNoteById(noteId)
|
||||||
@@ -57,7 +57,7 @@ func (c File) PasteImage(noteId string) revel.Result {
|
|||||||
|
|
||||||
// 头像设置
|
// 头像设置
|
||||||
func (c File) UploadAvatar() revel.Result {
|
func (c File) UploadAvatar() revel.Result {
|
||||||
re := c.uploadImage("logo", "");
|
re := c.uploadImage("logo", "")
|
||||||
|
|
||||||
c.RenderArgs["fileUrlPath"] = re.Id
|
c.RenderArgs["fileUrlPath"] = re.Id
|
||||||
c.RenderArgs["resultCode"] = re.Code
|
c.RenderArgs["resultCode"] = re.Code
|
||||||
@@ -66,7 +66,7 @@ func (c File) UploadAvatar() revel.Result {
|
|||||||
if re.Ok {
|
if re.Ok {
|
||||||
re.Ok = userService.UpdateAvatar(c.GetUserId(), re.Id)
|
re.Ok = userService.UpdateAvatar(c.GetUserId(), re.Id)
|
||||||
if re.Ok {
|
if re.Ok {
|
||||||
c.UpdateSession("Logo", re.Id);
|
c.UpdateSession("Logo", re.Id)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -106,7 +106,7 @@ func (c File) uploadImage(from, albumId string) (re info.Re) {
|
|||||||
|
|
||||||
userId := c.GetUserId()
|
userId := c.GetUserId()
|
||||||
|
|
||||||
if(from == "logo" || from == "blogLogo") {
|
if from == "logo" || from == "blogLogo" {
|
||||||
fileUrlPath = "public/upload/" + Digest3(userId) + "/" + userId + "/images/logo"
|
fileUrlPath = "public/upload/" + Digest3(userId) + "/" + userId + "/images/logo"
|
||||||
} else {
|
} else {
|
||||||
fileUrlPath = "files/" + Digest3(userId) + "/" + userId + "/" + Digest2(newGuid) + "/images"
|
fileUrlPath = "files/" + Digest3(userId) + "/" + userId + "/" + Digest2(newGuid) + "/images"
|
||||||
@@ -181,7 +181,7 @@ func (c File) uploadImage(from, albumId string) (re info.Re) {
|
|||||||
fileInfo.FileId = id
|
fileInfo.FileId = id
|
||||||
fileId = id.Hex()
|
fileId = id.Hex()
|
||||||
|
|
||||||
if(from == "logo" || from == "blogLogo") {
|
if from == "logo" || from == "blogLogo" {
|
||||||
fileId = fileUrlPath
|
fileId = fileUrlPath
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -217,7 +217,7 @@ func (c File) DeleteImage(fileId string) revel.Result {
|
|||||||
// 输出image
|
// 输出image
|
||||||
// 权限判断
|
// 权限判断
|
||||||
func (c File) OutputImage(noteId, fileId string) revel.Result {
|
func (c File) OutputImage(noteId, fileId string) revel.Result {
|
||||||
path := fileService.GetFile(c.GetUserId(), fileId); // 得到路径
|
path := fileService.GetFile(c.GetUserId(), fileId) // 得到路径
|
||||||
if path == "" {
|
if path == "" {
|
||||||
return c.RenderText("")
|
return c.RenderText("")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
package controllers
|
package controllers
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/revel/revel"
|
|
||||||
"github.com/leanote/leanote/app/info"
|
"github.com/leanote/leanote/app/info"
|
||||||
|
"github.com/revel/revel"
|
||||||
// . "github.com/leanote/leanote/app/lea"
|
// . "github.com/leanote/leanote/app/lea"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -15,10 +15,11 @@ type Index struct {
|
|||||||
func (c Index) Default() revel.Result {
|
func (c Index) Default() revel.Result {
|
||||||
if configService.HomePageIsAdminsBlog() {
|
if configService.HomePageIsAdminsBlog() {
|
||||||
blog := Blog{c.BaseController}
|
blog := Blog{c.BaseController}
|
||||||
return blog.Index(configService.GetAdminUsername());
|
return blog.Index(configService.GetAdminUsername())
|
||||||
}
|
}
|
||||||
return c.Index()
|
return c.Index()
|
||||||
}
|
}
|
||||||
|
|
||||||
// leanote展示页, 没有登录的, 或已登录明确要进该页的
|
// leanote展示页, 没有登录的, 或已登录明确要进该页的
|
||||||
func (c Index) Index() revel.Result {
|
func (c Index) Index() revel.Result {
|
||||||
c.SetUserInfo()
|
c.SetUserInfo()
|
||||||
@@ -26,7 +27,7 @@ func (c Index) Index() revel.Result {
|
|||||||
c.RenderArgs["openRegister"] = configService.GlobalStringConfigs["openRegister"]
|
c.RenderArgs["openRegister"] = configService.GlobalStringConfigs["openRegister"]
|
||||||
c.SetLocale()
|
c.SetLocale()
|
||||||
|
|
||||||
return c.RenderTemplate("home/index.html");
|
return c.RenderTemplate("home/index.html")
|
||||||
}
|
}
|
||||||
|
|
||||||
// 建议
|
// 建议
|
||||||
@@ -37,7 +38,7 @@ func (c Index) Suggestion(addr, suggestion string) revel.Result {
|
|||||||
// 发给我
|
// 发给我
|
||||||
go func() {
|
go func() {
|
||||||
emailService.SendEmail("leanote@leanote.com", "建议", "UserId: "+c.GetUserId()+" <br /> Suggestions: "+suggestion)
|
emailService.SendEmail("leanote@leanote.com", "建议", "UserId: "+c.GetUserId()+" <br /> Suggestions: "+suggestion)
|
||||||
}();
|
}()
|
||||||
|
|
||||||
return c.RenderJson(re)
|
return c.RenderJson(re)
|
||||||
}
|
}
|
||||||
@@ -3,6 +3,7 @@ package controllers
|
|||||||
import (
|
import (
|
||||||
"github.com/revel/revel"
|
"github.com/revel/revel"
|
||||||
// "encoding/json"
|
// "encoding/json"
|
||||||
|
"fmt"
|
||||||
"github.com/leanote/leanote/app/info"
|
"github.com/leanote/leanote/app/info"
|
||||||
. "github.com/leanote/leanote/app/lea"
|
. "github.com/leanote/leanote/app/lea"
|
||||||
"gopkg.in/mgo.v2/bson"
|
"gopkg.in/mgo.v2/bson"
|
||||||
@@ -11,7 +12,6 @@ import (
|
|||||||
"regexp"
|
"regexp"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
"fmt"
|
|
||||||
// "github.com/leanote/leanote/app/types"
|
// "github.com/leanote/leanote/app/types"
|
||||||
// "io/ioutil"
|
// "io/ioutil"
|
||||||
// "bytes"
|
// "bytes"
|
||||||
@@ -67,13 +67,13 @@ func (c Note) Index(noteId, online string) revel.Result {
|
|||||||
// 不要获取notebook下的笔记
|
// 不要获取notebook下的笔记
|
||||||
// 在前端下发请求
|
// 在前端下发请求
|
||||||
c.RenderArgs["curSharedNoteNotebookId"] = note.NotebookId.Hex()
|
c.RenderArgs["curSharedNoteNotebookId"] = note.NotebookId.Hex()
|
||||||
c.RenderArgs["curSharedUserId"] = noteOwner;
|
c.RenderArgs["curSharedUserId"] = noteOwner
|
||||||
// 没有读写权限
|
// 没有读写权限
|
||||||
} else {
|
} else {
|
||||||
hasRightNoteId = false
|
hasRightNoteId = false
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
_, notes = noteService.ListNotes(c.GetUserId(), note.NotebookId.Hex(), false, c.GetPage(), 50, defaultSortField, false, false);
|
_, notes = noteService.ListNotes(c.GetUserId(), note.NotebookId.Hex(), false, c.GetPage(), 50, defaultSortField, false, false)
|
||||||
|
|
||||||
// 如果指定了某笔记, 则该笔记放在首位
|
// 如果指定了某笔记, 则该笔记放在首位
|
||||||
lenNotes := len(notes)
|
lenNotes := len(notes)
|
||||||
@@ -84,7 +84,7 @@ func (c Note) Index(noteId, online string) revel.Result {
|
|||||||
for _, note := range notes {
|
for _, note := range notes {
|
||||||
if note.NoteId.Hex() != noteId {
|
if note.NoteId.Hex() != noteId {
|
||||||
if i == lenNotes { // 防止越界
|
if i == lenNotes { // 防止越界
|
||||||
break;
|
break
|
||||||
}
|
}
|
||||||
notes2[i] = note
|
notes2[i] = note
|
||||||
i++
|
i++
|
||||||
@@ -96,14 +96,14 @@ func (c Note) Index(noteId, online string) revel.Result {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 得到最近的笔记
|
// 得到最近的笔记
|
||||||
_, latestNotes := noteService.ListNotes(c.GetUserId(), "", false, c.GetPage(), 50, defaultSortField, false, false);
|
_, latestNotes := noteService.ListNotes(c.GetUserId(), "", false, c.GetPage(), 50, defaultSortField, false, false)
|
||||||
c.RenderArgs["latestNotes"] = latestNotes
|
c.RenderArgs["latestNotes"] = latestNotes
|
||||||
}
|
}
|
||||||
|
|
||||||
// 没有传入笔记
|
// 没有传入笔记
|
||||||
// 那么得到最新笔记
|
// 那么得到最新笔记
|
||||||
if !hasRightNoteId {
|
if !hasRightNoteId {
|
||||||
_, notes = noteService.ListNotes(c.GetUserId(), "", false, c.GetPage(), 50, defaultSortField, false, false);
|
_, notes = noteService.ListNotes(c.GetUserId(), "", false, c.GetPage(), 50, defaultSortField, false, false)
|
||||||
if len(notes) > 0 {
|
if len(notes) > 0 {
|
||||||
noteContent = noteService.GetNoteContent(notes[0].NoteId.Hex(), userId)
|
noteContent = noteService.GetNoteContent(notes[0].NoteId.Hex(), userId)
|
||||||
c.RenderArgs["curNoteId"] = notes[0].NoteId.Hex()
|
c.RenderArgs["curNoteId"] = notes[0].NoteId.Hex()
|
||||||
@@ -180,11 +180,12 @@ type NoteOrContent struct {
|
|||||||
FromUserId string // 为共享而新建
|
FromUserId string // 为共享而新建
|
||||||
IsBlog bool // 是否是blog, 更新note不需要修改, 添加note时才有可能用到, 此时需要判断notebook是否设为Blog
|
IsBlog bool // 是否是blog, 更新note不需要修改, 添加note时才有可能用到, 此时需要判断notebook是否设为Blog
|
||||||
}
|
}
|
||||||
|
|
||||||
// 这里不能用json, 要用post
|
// 这里不能用json, 要用post
|
||||||
func (c Note) UpdateNoteOrContent(noteOrContent NoteOrContent) revel.Result {
|
func (c Note) UpdateNoteOrContent(noteOrContent NoteOrContent) revel.Result {
|
||||||
// 新添加note
|
// 新添加note
|
||||||
if noteOrContent.IsNew {
|
if noteOrContent.IsNew {
|
||||||
userId := c.GetObjectUserId();
|
userId := c.GetObjectUserId()
|
||||||
// myUserId := userId
|
// myUserId := userId
|
||||||
// 为共享新建?
|
// 为共享新建?
|
||||||
if noteOrContent.FromUserId != "" {
|
if noteOrContent.FromUserId != "" {
|
||||||
@@ -200,12 +201,12 @@ func (c Note) UpdateNoteOrContent(noteOrContent NoteOrContent) revel.Result {
|
|||||||
ImgSrc: noteOrContent.ImgSrc,
|
ImgSrc: noteOrContent.ImgSrc,
|
||||||
IsBlog: noteOrContent.IsBlog,
|
IsBlog: noteOrContent.IsBlog,
|
||||||
IsMarkdown: noteOrContent.IsMarkdown,
|
IsMarkdown: noteOrContent.IsMarkdown,
|
||||||
};
|
}
|
||||||
noteContent := info.NoteContent{NoteId: note.NoteId,
|
noteContent := info.NoteContent{NoteId: note.NoteId,
|
||||||
UserId: userId,
|
UserId: userId,
|
||||||
IsBlog: note.IsBlog,
|
IsBlog: note.IsBlog,
|
||||||
Content: noteOrContent.Content,
|
Content: noteOrContent.Content,
|
||||||
Abstract: noteOrContent.Abstract};
|
Abstract: noteOrContent.Abstract}
|
||||||
|
|
||||||
note = noteService.AddNoteAndContentForController(note, noteContent, c.GetUserId())
|
note = noteService.AddNoteAndContentForController(note, noteContent, c.GetUserId())
|
||||||
return c.RenderJson(note)
|
return c.RenderJson(note)
|
||||||
@@ -217,20 +218,20 @@ func (c Note) UpdateNoteOrContent(noteOrContent NoteOrContent) revel.Result {
|
|||||||
// Desc前台传来
|
// Desc前台传来
|
||||||
if c.Has("Desc") {
|
if c.Has("Desc") {
|
||||||
needUpdateNote = true
|
needUpdateNote = true
|
||||||
noteUpdate["Desc"] = noteOrContent.Desc;
|
noteUpdate["Desc"] = noteOrContent.Desc
|
||||||
}
|
}
|
||||||
if c.Has("ImgSrc") {
|
if c.Has("ImgSrc") {
|
||||||
needUpdateNote = true
|
needUpdateNote = true
|
||||||
noteUpdate["ImgSrc"] = noteOrContent.ImgSrc;
|
noteUpdate["ImgSrc"] = noteOrContent.ImgSrc
|
||||||
}
|
}
|
||||||
if c.Has("Title") {
|
if c.Has("Title") {
|
||||||
needUpdateNote = true
|
needUpdateNote = true
|
||||||
noteUpdate["Title"] = noteOrContent.Title;
|
noteUpdate["Title"] = noteOrContent.Title
|
||||||
}
|
}
|
||||||
|
|
||||||
if c.Has("Tags") {
|
if c.Has("Tags") {
|
||||||
needUpdateNote = true
|
needUpdateNote = true
|
||||||
noteUpdate["Tags"] = strings.Split(noteOrContent.Tags, ",");
|
noteUpdate["Tags"] = strings.Split(noteOrContent.Tags, ",")
|
||||||
}
|
}
|
||||||
|
|
||||||
// web端不控制
|
// web端不控制
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
package controllers
|
package controllers
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/revel/revel"
|
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"github.com/leanote/leanote/app/info"
|
"github.com/leanote/leanote/app/info"
|
||||||
|
"github.com/revel/revel"
|
||||||
"gopkg.in/mgo.v2/bson"
|
"gopkg.in/mgo.v2/bson"
|
||||||
// . "github.com/leanote/leanote/app/lea"
|
// . "github.com/leanote/leanote/app/lea"
|
||||||
// "io/ioutil"
|
// "io/ioutil"
|
||||||
@@ -34,18 +34,19 @@ func (c Notebook) AddNotebook(notebookId, title, parentNotebookId string) revel.
|
|||||||
Title: title,
|
Title: title,
|
||||||
Seq: -1,
|
Seq: -1,
|
||||||
UserId: c.GetObjectUserId()}
|
UserId: c.GetObjectUserId()}
|
||||||
if(parentNotebookId != "") {
|
if parentNotebookId != "" {
|
||||||
notebook.ParentNotebookId = bson.ObjectIdHex(parentNotebookId)
|
notebook.ParentNotebookId = bson.ObjectIdHex(parentNotebookId)
|
||||||
}
|
}
|
||||||
|
|
||||||
re, notebook := notebookService.AddNotebook(notebook)
|
re, notebook := notebookService.AddNotebook(notebook)
|
||||||
|
|
||||||
if(re) {
|
if re {
|
||||||
return c.RenderJson(notebook)
|
return c.RenderJson(notebook)
|
||||||
} else {
|
} else {
|
||||||
return c.RenderJson(false)
|
return c.RenderJson(false)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 修改标题
|
// 修改标题
|
||||||
func (c Notebook) UpdateNotebookTitle(notebookId, title string) revel.Result {
|
func (c Notebook) UpdateNotebookTitle(notebookId, title string) revel.Result {
|
||||||
return c.RenderJson(notebookService.UpdateNotebookTitle(notebookId, c.GetUserId(), title))
|
return c.RenderJson(notebookService.UpdateNotebookTitle(notebookId, c.GetUserId(), title))
|
||||||
@@ -63,6 +64,7 @@ type DragNotebooksInfo struct {
|
|||||||
ParentNotebookId string
|
ParentNotebookId string
|
||||||
Siblings []string
|
Siblings []string
|
||||||
}
|
}
|
||||||
|
|
||||||
// 传过来的data是JSON.stringfy数据
|
// 传过来的data是JSON.stringfy数据
|
||||||
func (c Notebook) DragNotebooks(data string) revel.Result {
|
func (c Notebook) DragNotebooks(data string) revel.Result {
|
||||||
info := DragNotebooksInfo{}
|
info := DragNotebooksInfo{}
|
||||||
|
|||||||
@@ -4,8 +4,8 @@ import (
|
|||||||
"github.com/revel/revel"
|
"github.com/revel/revel"
|
||||||
// "encoding/json"
|
// "encoding/json"
|
||||||
// "gopkg.in/mgo.v2/bson"
|
// "gopkg.in/mgo.v2/bson"
|
||||||
. "github.com/leanote/leanote/app/lea"
|
|
||||||
"github.com/leanote/leanote/app/info"
|
"github.com/leanote/leanote/app/info"
|
||||||
|
. "github.com/leanote/leanote/app/lea"
|
||||||
// "github.com/leanote/leanote/app/types"
|
// "github.com/leanote/leanote/app/types"
|
||||||
// "io/ioutil"
|
// "io/ioutil"
|
||||||
// "fmt"
|
// "fmt"
|
||||||
@@ -19,13 +19,13 @@ type Share struct {
|
|||||||
func (c Share) AddShareNote(noteId string, emails []string, perm int) revel.Result {
|
func (c Share) AddShareNote(noteId string, emails []string, perm int) revel.Result {
|
||||||
status := make(map[string]info.Re, len(emails))
|
status := make(map[string]info.Re, len(emails))
|
||||||
// 自己不能给自己添加共享
|
// 自己不能给自己添加共享
|
||||||
myEmail := c.GetEmail();
|
myEmail := c.GetEmail()
|
||||||
for _, email := range emails {
|
for _, email := range emails {
|
||||||
if email == "" {
|
if email == "" {
|
||||||
continue;
|
continue
|
||||||
}
|
}
|
||||||
if(myEmail != email) {
|
if myEmail != email {
|
||||||
ok, msg, userId := shareService.AddShareNote(noteId, perm, c.GetUserId(), email);
|
ok, msg, userId := shareService.AddShareNote(noteId, perm, c.GetUserId(), email)
|
||||||
status[email] = info.Re{Ok: ok, Msg: msg, Id: userId}
|
status[email] = info.Re{Ok: ok, Msg: msg, Id: userId}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
@@ -40,13 +40,13 @@ func (c Share) AddShareNote(noteId string, emails []string, perm int) revel.Resu
|
|||||||
func (c Share) AddShareNotebook(notebookId string, emails []string, perm int) revel.Result {
|
func (c Share) AddShareNotebook(notebookId string, emails []string, perm int) revel.Result {
|
||||||
status := make(map[string]info.Re, len(emails))
|
status := make(map[string]info.Re, len(emails))
|
||||||
// 自己不能给自己添加共享
|
// 自己不能给自己添加共享
|
||||||
myEmail := c.GetEmail();
|
myEmail := c.GetEmail()
|
||||||
for _, email := range emails {
|
for _, email := range emails {
|
||||||
if email == "" {
|
if email == "" {
|
||||||
continue;
|
continue
|
||||||
}
|
}
|
||||||
if(myEmail != email) {
|
if myEmail != email {
|
||||||
ok, msg, userId := shareService.AddShareNotebook(notebookId, perm, c.GetUserId(), email);
|
ok, msg, userId := shareService.AddShareNotebook(notebookId, perm, c.GetUserId(), email)
|
||||||
status[email] = info.Re{Ok: ok, Msg: msg, Id: userId}
|
status[email] = info.Re{Ok: ok, Msg: msg, Id: userId}
|
||||||
} else {
|
} else {
|
||||||
status[email] = info.Re{Ok: false, Msg: "不能分享给自己"}
|
status[email] = info.Re{Ok: false, Msg: "不能分享给自己"}
|
||||||
@@ -62,11 +62,11 @@ func (c Share) ListShareNotes(notebookId, userId string) revel.Result {
|
|||||||
// 表示是默认笔记本, 不是某个特定notebook的共享
|
// 表示是默认笔记本, 不是某个特定notebook的共享
|
||||||
var notes []info.ShareNoteWithPerm
|
var notes []info.ShareNoteWithPerm
|
||||||
if notebookId == "" {
|
if notebookId == "" {
|
||||||
notes = shareService.ListShareNotes(c.GetUserId(), userId, c.GetPage(), pageSize, defaultSortField, false);
|
notes = shareService.ListShareNotes(c.GetUserId(), userId, c.GetPage(), pageSize, defaultSortField, false)
|
||||||
return c.RenderJson(notes)
|
return c.RenderJson(notes)
|
||||||
} else {
|
} else {
|
||||||
// 有notebookId的
|
// 有notebookId的
|
||||||
return c.RenderJson(shareService.ListShareNotesByNotebookId(notebookId, c.GetUserId(), userId, c.GetPage(), pageSize, defaultSortField, false));
|
return c.RenderJson(shareService.ListShareNotesByNotebookId(notebookId, c.GetUserId(), userId, c.GetPage(), pageSize, defaultSortField, false))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -90,7 +90,7 @@ func (c Share) ListNoteShareUserInfo(noteId string) revel.Result {
|
|||||||
c.RenderArgs["noteOrNotebookShareGroupInfos"] = shareService.GetNoteShareGroups(noteId, c.GetUserId())
|
c.RenderArgs["noteOrNotebookShareGroupInfos"] = shareService.GetNoteShareGroups(noteId, c.GetUserId())
|
||||||
|
|
||||||
c.RenderArgs["isNote"] = true
|
c.RenderArgs["isNote"] = true
|
||||||
c.RenderArgs["noteOrNotebookId"] = note.NoteId.Hex();
|
c.RenderArgs["noteOrNotebookId"] = note.NoteId.Hex()
|
||||||
c.RenderArgs["title"] = note.Title
|
c.RenderArgs["title"] = note.Title
|
||||||
|
|
||||||
return c.RenderTemplate("share/note_notebook_share_user_infos.html")
|
return c.RenderTemplate("share/note_notebook_share_user_infos.html")
|
||||||
@@ -105,7 +105,7 @@ func (c Share) ListNotebookShareUserInfo(notebookId string) revel.Result {
|
|||||||
LogJ(c.RenderArgs["noteOrNotebookShareGroupInfos"])
|
LogJ(c.RenderArgs["noteOrNotebookShareGroupInfos"])
|
||||||
|
|
||||||
c.RenderArgs["isNote"] = false
|
c.RenderArgs["isNote"] = false
|
||||||
c.RenderArgs["noteOrNotebookId"] = notebook.NotebookId.Hex();
|
c.RenderArgs["noteOrNotebookId"] = notebook.NotebookId.Hex()
|
||||||
c.RenderArgs["title"] = notebook.Title
|
c.RenderArgs["title"] = notebook.Title
|
||||||
|
|
||||||
return c.RenderTemplate("share/note_notebook_share_user_infos.html")
|
return c.RenderTemplate("share/note_notebook_share_user_infos.html")
|
||||||
@@ -114,74 +114,78 @@ func (c Share) ListNotebookShareUserInfo(notebookId string) revel.Result {
|
|||||||
//------------
|
//------------
|
||||||
// 改变share note 权限
|
// 改变share note 权限
|
||||||
func (c Share) UpdateShareNotePerm(noteId string, perm int, toUserId string) revel.Result {
|
func (c Share) UpdateShareNotePerm(noteId string, perm int, toUserId string) revel.Result {
|
||||||
return c.RenderJson(shareService.UpdateShareNotePerm(noteId, perm, c.GetUserId(), toUserId));
|
return c.RenderJson(shareService.UpdateShareNotePerm(noteId, perm, c.GetUserId(), toUserId))
|
||||||
}
|
}
|
||||||
|
|
||||||
// 改变share notebook 权限
|
// 改变share notebook 权限
|
||||||
func (c Share) UpdateShareNotebookPerm(notebookId string, perm int, toUserId string) revel.Result {
|
func (c Share) UpdateShareNotebookPerm(notebookId string, perm int, toUserId string) revel.Result {
|
||||||
return c.RenderJson(shareService.UpdateShareNotebookPerm(notebookId, perm, c.GetUserId(), toUserId));
|
return c.RenderJson(shareService.UpdateShareNotebookPerm(notebookId, perm, c.GetUserId(), toUserId))
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------
|
//---------------
|
||||||
// 删除share note
|
// 删除share note
|
||||||
func (c Share) DeleteShareNote(noteId string, toUserId string) revel.Result {
|
func (c Share) DeleteShareNote(noteId string, toUserId string) revel.Result {
|
||||||
return c.RenderJson(shareService.DeleteShareNote(noteId, c.GetUserId(), toUserId));
|
return c.RenderJson(shareService.DeleteShareNote(noteId, c.GetUserId(), toUserId))
|
||||||
}
|
}
|
||||||
|
|
||||||
// 删除share notebook
|
// 删除share notebook
|
||||||
func (c Share) DeleteShareNotebook(notebookId string, toUserId string) revel.Result {
|
func (c Share) DeleteShareNotebook(notebookId string, toUserId string) revel.Result {
|
||||||
return c.RenderJson(shareService.DeleteShareNotebook(notebookId, c.GetUserId(), toUserId));
|
return c.RenderJson(shareService.DeleteShareNotebook(notebookId, c.GetUserId(), toUserId))
|
||||||
}
|
}
|
||||||
|
|
||||||
// 删除share note, 被共享方删除
|
// 删除share note, 被共享方删除
|
||||||
func (c Share) DeleteShareNoteBySharedUser(noteId string, fromUserId string) revel.Result {
|
func (c Share) DeleteShareNoteBySharedUser(noteId string, fromUserId string) revel.Result {
|
||||||
return c.RenderJson(shareService.DeleteShareNote(noteId, fromUserId, c.GetUserId()));
|
return c.RenderJson(shareService.DeleteShareNote(noteId, fromUserId, c.GetUserId()))
|
||||||
}
|
}
|
||||||
|
|
||||||
// 删除share notebook, 被共享方删除
|
// 删除share notebook, 被共享方删除
|
||||||
func (c Share) DeleteShareNotebookBySharedUser(notebookId string, fromUserId string) revel.Result {
|
func (c Share) DeleteShareNotebookBySharedUser(notebookId string, fromUserId string) revel.Result {
|
||||||
return c.RenderJson(shareService.DeleteShareNotebook(notebookId, fromUserId, c.GetUserId()));
|
return c.RenderJson(shareService.DeleteShareNotebook(notebookId, fromUserId, c.GetUserId()))
|
||||||
}
|
}
|
||||||
|
|
||||||
// 删除fromUserId分享给我的所有note, notebook
|
// 删除fromUserId分享给我的所有note, notebook
|
||||||
func (c Share) DeleteUserShareNoteAndNotebook(fromUserId string) revel.Result {
|
func (c Share) DeleteUserShareNoteAndNotebook(fromUserId string) revel.Result {
|
||||||
return c.RenderJson(shareService.DeleteUserShareNoteAndNotebook(fromUserId, c.GetUserId()));
|
return c.RenderJson(shareService.DeleteUserShareNoteAndNotebook(fromUserId, c.GetUserId()))
|
||||||
}
|
}
|
||||||
|
|
||||||
//-------------
|
//-------------
|
||||||
// 用户组
|
// 用户组
|
||||||
|
|
||||||
|
|
||||||
// 将笔记分享给分组
|
// 将笔记分享给分组
|
||||||
func (c Share) AddShareNoteGroup(noteId, groupId string, perm int) revel.Result {
|
func (c Share) AddShareNoteGroup(noteId, groupId string, perm int) revel.Result {
|
||||||
re := info.NewRe()
|
re := info.NewRe()
|
||||||
re.Ok = shareService.AddShareNoteGroup(c.GetUserId(), noteId, groupId, perm);
|
re.Ok = shareService.AddShareNoteGroup(c.GetUserId(), noteId, groupId, perm)
|
||||||
return c.RenderJson(re);
|
return c.RenderJson(re)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 删除
|
// 删除
|
||||||
func (c Share) DeleteShareNoteGroup(noteId, groupId string) revel.Result {
|
func (c Share) DeleteShareNoteGroup(noteId, groupId string) revel.Result {
|
||||||
re := info.NewRe()
|
re := info.NewRe()
|
||||||
re.Ok = shareService.DeleteShareNoteGroup(c.GetUserId(), noteId, groupId);
|
re.Ok = shareService.DeleteShareNoteGroup(c.GetUserId(), noteId, groupId)
|
||||||
return c.RenderJson(re);
|
return c.RenderJson(re)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 更新, 也是一样, 先删后加
|
// 更新, 也是一样, 先删后加
|
||||||
func (c Share) UpdateShareNoteGroupPerm(noteId, groupId string, perm int) revel.Result {
|
func (c Share) UpdateShareNoteGroupPerm(noteId, groupId string, perm int) revel.Result {
|
||||||
return c.AddShareNoteGroup(noteId, groupId, perm)
|
return c.AddShareNoteGroup(noteId, groupId, perm)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//------
|
//------
|
||||||
|
|
||||||
// 将笔记分享给分组
|
// 将笔记分享给分组
|
||||||
func (c Share) AddShareNotebookGroup(notebookId, groupId string, perm int) revel.Result {
|
func (c Share) AddShareNotebookGroup(notebookId, groupId string, perm int) revel.Result {
|
||||||
re := info.NewRe()
|
re := info.NewRe()
|
||||||
re.Ok = shareService.AddShareNotebookGroup(c.GetUserId(), notebookId, groupId, perm);
|
re.Ok = shareService.AddShareNotebookGroup(c.GetUserId(), notebookId, groupId, perm)
|
||||||
return c.RenderJson(re);
|
return c.RenderJson(re)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 删除
|
// 删除
|
||||||
func (c Share) DeleteShareNotebookGroup(notebookId, groupId string) revel.Result {
|
func (c Share) DeleteShareNotebookGroup(notebookId, groupId string) revel.Result {
|
||||||
re := info.NewRe()
|
re := info.NewRe()
|
||||||
re.Ok = shareService.DeleteShareNotebookGroup(c.GetUserId(), notebookId, groupId);
|
re.Ok = shareService.DeleteShareNotebookGroup(c.GetUserId(), notebookId, groupId)
|
||||||
return c.RenderJson(re);
|
return c.RenderJson(re)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 更新, 也是一样, 先删后加
|
// 更新, 也是一样, 先删后加
|
||||||
func (c Share) UpdateShareNotebookGroupPerm(notebookId, groupId string, perm int) revel.Result {
|
func (c Share) UpdateShareNotebookGroupPerm(notebookId, groupId string, perm int) revel.Result {
|
||||||
return c.AddShareNotebookGroup(notebookId, groupId, perm)
|
return c.AddShareNotebookGroup(notebookId, groupId, perm)
|
||||||
|
|||||||
@@ -4,8 +4,8 @@ import (
|
|||||||
"github.com/revel/revel"
|
"github.com/revel/revel"
|
||||||
// "encoding/json"
|
// "encoding/json"
|
||||||
// "gopkg.in/mgo.v2/bson"
|
// "gopkg.in/mgo.v2/bson"
|
||||||
. "github.com/leanote/leanote/app/lea"
|
|
||||||
"github.com/leanote/leanote/app/info"
|
"github.com/leanote/leanote/app/info"
|
||||||
|
. "github.com/leanote/leanote/app/lea"
|
||||||
// "github.com/leanote/leanote/app/types"
|
// "github.com/leanote/leanote/app/types"
|
||||||
// "io/ioutil"
|
// "io/ioutil"
|
||||||
// "fmt"
|
// "fmt"
|
||||||
@@ -32,18 +32,18 @@ func (c User) UpdateUsername(username string) revel.Result {
|
|||||||
re := info.NewRe()
|
re := info.NewRe()
|
||||||
if c.GetUserId() == configService.GetGlobalStringConfig("demoUserId") {
|
if c.GetUserId() == configService.GetGlobalStringConfig("demoUserId") {
|
||||||
re.Msg = "cannotUpdateDemo"
|
re.Msg = "cannotUpdateDemo"
|
||||||
return c.RenderRe(re);
|
return c.RenderRe(re)
|
||||||
}
|
}
|
||||||
|
|
||||||
if re.Ok, re.Msg = Vd("username", username); !re.Ok {
|
if re.Ok, re.Msg = Vd("username", username); !re.Ok {
|
||||||
return c.RenderRe(re);
|
return c.RenderRe(re)
|
||||||
}
|
}
|
||||||
|
|
||||||
re.Ok, re.Msg = userService.UpdateUsername(c.GetUserId(), username)
|
re.Ok, re.Msg = userService.UpdateUsername(c.GetUserId(), username)
|
||||||
if(re.Ok) {
|
if re.Ok {
|
||||||
c.UpdateSession("Username", username)
|
c.UpdateSession("Username", username)
|
||||||
}
|
}
|
||||||
return c.RenderRe(re);
|
return c.RenderRe(re)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 修改密码
|
// 修改密码
|
||||||
@@ -51,37 +51,37 @@ func (c User) UpdatePwd(oldPwd, pwd string) revel.Result {
|
|||||||
re := info.NewRe()
|
re := info.NewRe()
|
||||||
if c.GetUserId() == configService.GetGlobalStringConfig("demoUserId") {
|
if c.GetUserId() == configService.GetGlobalStringConfig("demoUserId") {
|
||||||
re.Msg = "cannotUpdateDemo"
|
re.Msg = "cannotUpdateDemo"
|
||||||
return c.RenderRe(re);
|
return c.RenderRe(re)
|
||||||
}
|
}
|
||||||
if re.Ok, re.Msg = Vd("password", oldPwd); !re.Ok {
|
if re.Ok, re.Msg = Vd("password", oldPwd); !re.Ok {
|
||||||
return c.RenderRe(re);
|
return c.RenderRe(re)
|
||||||
}
|
}
|
||||||
if re.Ok, re.Msg = Vd("password", pwd); !re.Ok {
|
if re.Ok, re.Msg = Vd("password", pwd); !re.Ok {
|
||||||
return c.RenderRe(re);
|
return c.RenderRe(re)
|
||||||
}
|
}
|
||||||
re.Ok, re.Msg = userService.UpdatePwd(c.GetUserId(), oldPwd, pwd)
|
re.Ok, re.Msg = userService.UpdatePwd(c.GetUserId(), oldPwd, pwd)
|
||||||
return c.RenderRe(re);
|
return c.RenderRe(re)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 更新主题
|
// 更新主题
|
||||||
func (c User) UpdateTheme(theme string) revel.Result {
|
func (c User) UpdateTheme(theme string) revel.Result {
|
||||||
re := info.NewRe();
|
re := info.NewRe()
|
||||||
re.Ok = userService.UpdateTheme(c.GetUserId(), theme)
|
re.Ok = userService.UpdateTheme(c.GetUserId(), theme)
|
||||||
if re.Ok {
|
if re.Ok {
|
||||||
c.UpdateSession("Theme", theme)
|
c.UpdateSession("Theme", theme)
|
||||||
}
|
}
|
||||||
return c.RenderJson(re);
|
return c.RenderJson(re)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 发送邀请链接
|
// 发送邀请链接
|
||||||
func (c User) SendRegisterEmail(content, toEmail string) revel.Result {
|
func (c User) SendRegisterEmail(content, toEmail string) revel.Result {
|
||||||
re := info.NewRe()
|
re := info.NewRe()
|
||||||
if content == "" || !IsEmail(toEmail) {
|
if content == "" || !IsEmail(toEmail) {
|
||||||
return c.RenderJson(re);
|
return c.RenderJson(re)
|
||||||
}
|
}
|
||||||
|
|
||||||
re.Ok = emailService.SendInviteEmail(c.GetUserInfo(), toEmail, content)
|
re.Ok = emailService.SendInviteEmail(c.GetUserInfo(), toEmail, content)
|
||||||
return c.RenderJson(re);
|
return c.RenderJson(re)
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------
|
//---------------------------
|
||||||
@@ -98,10 +98,10 @@ func (c User) updateEmailSendActiveEmail(email, pwd string) revel.Result {
|
|||||||
re := info.NewRe()
|
re := info.NewRe()
|
||||||
if c.GetUserId() == configService.GetGlobalStringConfig("demoUserId") {
|
if c.GetUserId() == configService.GetGlobalStringConfig("demoUserId") {
|
||||||
re.Msg = "cannotUpdateDemo"
|
re.Msg = "cannotUpdateDemo"
|
||||||
return c.RenderJson(re);
|
return c.RenderJson(re)
|
||||||
}
|
}
|
||||||
if re.Ok, re.Msg = Vd("email", email); !re.Ok {
|
if re.Ok, re.Msg = Vd("email", email); !re.Ok {
|
||||||
return c.RenderRe(re);
|
return c.RenderRe(re)
|
||||||
}
|
}
|
||||||
|
|
||||||
re.Ok, re.Msg = emailService.UpdateEmailSendActiveEmail(c.GetUserInfo(), email)
|
re.Ok, re.Msg = emailService.UpdateEmailSendActiveEmail(c.GetUserInfo(), email)
|
||||||
@@ -111,7 +111,7 @@ func (c User) updateEmailSendActiveEmail(email, pwd string) revel.Result {
|
|||||||
// 通过点击链接
|
// 通过点击链接
|
||||||
// 修改邮箱
|
// 修改邮箱
|
||||||
func (c User) UpdateEmail(token string) revel.Result {
|
func (c User) UpdateEmail(token string) revel.Result {
|
||||||
c.SetUserInfo();
|
c.SetUserInfo()
|
||||||
|
|
||||||
ok, msg, email := userService.UpdateEmail(token)
|
ok, msg, email := userService.UpdateEmail(token)
|
||||||
|
|
||||||
@@ -130,13 +130,13 @@ func (c User) UpdateEmail(token string) revel.Result {
|
|||||||
|
|
||||||
// 注册后激活邮箱
|
// 注册后激活邮箱
|
||||||
func (c User) ActiveEmail(token string) revel.Result {
|
func (c User) ActiveEmail(token string) revel.Result {
|
||||||
c.SetUserInfo();
|
c.SetUserInfo()
|
||||||
|
|
||||||
ok, msg, email := userService.ActiveEmail(token)
|
ok, msg, email := userService.ActiveEmail(token)
|
||||||
|
|
||||||
// 需要修改session
|
// 需要修改session
|
||||||
if ok {
|
if ok {
|
||||||
c.UpdateSession("Verified", "1");
|
c.UpdateSession("Verified", "1")
|
||||||
}
|
}
|
||||||
|
|
||||||
c.RenderArgs["title"] = "验证邮箱"
|
c.RenderArgs["title"] = "验证邮箱"
|
||||||
@@ -153,16 +153,16 @@ func (c User) AddAccount(email, pwd string) revel.Result {
|
|||||||
re := info.NewRe()
|
re := info.NewRe()
|
||||||
|
|
||||||
if re.Ok, re.Msg = Vd("email", email); !re.Ok {
|
if re.Ok, re.Msg = Vd("email", email); !re.Ok {
|
||||||
return c.RenderRe(re);
|
return c.RenderRe(re)
|
||||||
}
|
}
|
||||||
if re.Ok, re.Msg = Vd("password", pwd); !re.Ok {
|
if re.Ok, re.Msg = Vd("password", pwd); !re.Ok {
|
||||||
return c.RenderRe(re);
|
return c.RenderRe(re)
|
||||||
}
|
}
|
||||||
|
|
||||||
re.Ok, re.Msg = userService.ThirdAddUser(c.GetUserId(), email, pwd)
|
re.Ok, re.Msg = userService.ThirdAddUser(c.GetUserId(), email, pwd)
|
||||||
|
|
||||||
if re.Ok {
|
if re.Ok {
|
||||||
c.UpdateSession("Email", email);
|
c.UpdateSession("Email", email)
|
||||||
}
|
}
|
||||||
|
|
||||||
return c.RenderRe(re)
|
return c.RenderRe(re)
|
||||||
@@ -174,9 +174,9 @@ func (c User) UpdateColumnWidth(notebookWidth, noteListWidth, mdEditorWidth int)
|
|||||||
re := info.NewRe()
|
re := info.NewRe()
|
||||||
re.Ok = userService.UpdateColumnWidth(c.GetUserId(), notebookWidth, noteListWidth, mdEditorWidth)
|
re.Ok = userService.UpdateColumnWidth(c.GetUserId(), notebookWidth, noteListWidth, mdEditorWidth)
|
||||||
if re.Ok {
|
if re.Ok {
|
||||||
c.UpdateSession("NotebookWidth", strconv.Itoa(notebookWidth));
|
c.UpdateSession("NotebookWidth", strconv.Itoa(notebookWidth))
|
||||||
c.UpdateSession("NoteListWidth", strconv.Itoa(noteListWidth));
|
c.UpdateSession("NoteListWidth", strconv.Itoa(noteListWidth))
|
||||||
c.UpdateSession("MdEditorWidth", strconv.Itoa(mdEditorWidth));
|
c.UpdateSession("MdEditorWidth", strconv.Itoa(mdEditorWidth))
|
||||||
|
|
||||||
LogJ(c.Session)
|
LogJ(c.Session)
|
||||||
}
|
}
|
||||||
@@ -187,9 +187,9 @@ func (c User) UpdateLeftIsMin(leftIsMin bool) revel.Result {
|
|||||||
re.Ok = userService.UpdateLeftIsMin(c.GetUserId(), leftIsMin)
|
re.Ok = userService.UpdateLeftIsMin(c.GetUserId(), leftIsMin)
|
||||||
if re.Ok {
|
if re.Ok {
|
||||||
if leftIsMin {
|
if leftIsMin {
|
||||||
c.UpdateSession("LeftIsMin", "1");
|
c.UpdateSession("LeftIsMin", "1")
|
||||||
} else {
|
} else {
|
||||||
c.UpdateSession("LeftIsMin", "0");
|
c.UpdateSession("LeftIsMin", "0")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return c.RenderJson(re)
|
return c.RenderJson(re)
|
||||||
|
|||||||
@@ -4,8 +4,8 @@ import (
|
|||||||
// "github.com/revel/revel"
|
// "github.com/revel/revel"
|
||||||
// "gopkg.in/mgo.v2/bson"
|
// "gopkg.in/mgo.v2/bson"
|
||||||
// "encoding/json"
|
// "encoding/json"
|
||||||
. "github.com/leanote/leanote/app/lea"
|
|
||||||
"github.com/leanote/leanote/app/controllers"
|
"github.com/leanote/leanote/app/controllers"
|
||||||
|
. "github.com/leanote/leanote/app/lea"
|
||||||
// "io/ioutil"
|
// "io/ioutil"
|
||||||
// "fmt"
|
// "fmt"
|
||||||
// "math"
|
// "math"
|
||||||
@@ -24,19 +24,19 @@ func (c AdminBaseController) getSorter(sorterField string, isAsc bool, okSorter
|
|||||||
sorter := ""
|
sorter := ""
|
||||||
c.Params.Bind(&sorter, "sorter")
|
c.Params.Bind(&sorter, "sorter")
|
||||||
if sorter == "" {
|
if sorter == "" {
|
||||||
return sorterField, isAsc;
|
return sorterField, isAsc
|
||||||
}
|
}
|
||||||
|
|
||||||
// sorter形式 email-up, email-down
|
// sorter形式 email-up, email-down
|
||||||
s2 := strings.Split(sorter, "-")
|
s2 := strings.Split(sorter, "-")
|
||||||
if len(s2) != 2 {
|
if len(s2) != 2 {
|
||||||
return sorterField, isAsc;
|
return sorterField, isAsc
|
||||||
}
|
}
|
||||||
|
|
||||||
// 必须是可用的sorter
|
// 必须是可用的sorter
|
||||||
if okSorter != nil && len(okSorter) > 0 {
|
if okSorter != nil && len(okSorter) > 0 {
|
||||||
if !InArray(okSorter, s2[0]) {
|
if !InArray(okSorter, s2[0]) {
|
||||||
return sorterField, isAsc;
|
return sorterField, isAsc
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -47,7 +47,7 @@ func (c AdminBaseController) getSorter(sorterField string, isAsc bool, okSorter
|
|||||||
isAsc = false
|
isAsc = false
|
||||||
}
|
}
|
||||||
c.RenderArgs["sorter"] = sorter
|
c.RenderArgs["sorter"] = sorter
|
||||||
return sorterField, isAsc;
|
return sorterField, isAsc
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c AdminBaseController) updateConfig(keys []string) {
|
func (c AdminBaseController) updateConfig(keys []string) {
|
||||||
|
|||||||
@@ -15,16 +15,16 @@ type AdminBlog struct {
|
|||||||
// admin 主页
|
// admin 主页
|
||||||
func (c AdminBlog) Index(sorter, keywords string) revel.Result {
|
func (c AdminBlog) Index(sorter, keywords string) revel.Result {
|
||||||
pageNumber := c.GetPage()
|
pageNumber := c.GetPage()
|
||||||
sorterField, isAsc := c.getSorter("CreatedTime", false, []string{"title", "userId", "isRecommed", "createdTime"});
|
sorterField, isAsc := c.getSorter("CreatedTime", false, []string{"title", "userId", "isRecommed", "createdTime"})
|
||||||
pageInfo, blogs := blogService.ListAllBlogs("", "", keywords, false, pageNumber, userPageSize, sorterField, isAsc);
|
pageInfo, blogs := blogService.ListAllBlogs("", "", keywords, false, pageNumber, userPageSize, sorterField, isAsc)
|
||||||
c.RenderArgs["pageInfo"] = pageInfo
|
c.RenderArgs["pageInfo"] = pageInfo
|
||||||
c.RenderArgs["blogs"] = blogs
|
c.RenderArgs["blogs"] = blogs
|
||||||
c.RenderArgs["keywords"] = keywords
|
c.RenderArgs["keywords"] = keywords
|
||||||
return c.RenderTemplate("admin/blog/list.html");
|
return c.RenderTemplate("admin/blog/list.html")
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c AdminBlog) SetRecommend(noteId string, recommend bool) revel.Result {
|
func (c AdminBlog) SetRecommend(noteId string, recommend bool) revel.Result {
|
||||||
re := info.NewRe()
|
re := info.NewRe()
|
||||||
re.Ok = blogService.SetRecommend(noteId, recommend);
|
re.Ok = blogService.SetRecommend(noteId, recommend)
|
||||||
return c.RenderJson(re)
|
return c.RenderJson(re)
|
||||||
}
|
}
|
||||||
@@ -21,7 +21,7 @@ func (c Admin) Index() revel.Result {
|
|||||||
c.RenderArgs["countNote"] = noteService.CountNote("")
|
c.RenderArgs["countNote"] = noteService.CountNote("")
|
||||||
c.RenderArgs["countBlog"] = noteService.CountBlog("")
|
c.RenderArgs["countBlog"] = noteService.CountBlog("")
|
||||||
|
|
||||||
return c.RenderTemplate("admin/index.html");
|
return c.RenderTemplate("admin/index.html")
|
||||||
}
|
}
|
||||||
|
|
||||||
// 模板
|
// 模板
|
||||||
@@ -35,5 +35,5 @@ func (c Admin) T(t string) revel.Result {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c Admin) GetView(view string) revel.Result {
|
func (c Admin) GetView(view string) revel.Result {
|
||||||
return c.RenderTemplate("admin/" + view);
|
return c.RenderTemplate("admin/" + view)
|
||||||
}
|
}
|
||||||
@@ -1,13 +1,13 @@
|
|||||||
package admin
|
package admin
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/revel/revel"
|
|
||||||
. "github.com/leanote/leanote/app/lea"
|
|
||||||
"github.com/leanote/leanote/app/info"
|
|
||||||
"archive/tar"
|
"archive/tar"
|
||||||
"compress/gzip"
|
"compress/gzip"
|
||||||
"os"
|
"github.com/leanote/leanote/app/info"
|
||||||
|
. "github.com/leanote/leanote/app/lea"
|
||||||
|
"github.com/revel/revel"
|
||||||
"io"
|
"io"
|
||||||
|
"os"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -27,7 +27,7 @@ func (c AdminData) Index() revel.Result {
|
|||||||
j++
|
j++
|
||||||
}
|
}
|
||||||
c.RenderArgs["backups"] = backups2
|
c.RenderArgs["backups"] = backups2
|
||||||
return c.RenderTemplate("admin/data/index.html");
|
return c.RenderTemplate("admin/data/index.html")
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c AdminData) Backup() revel.Result {
|
func (c AdminData) Backup() revel.Result {
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
package admin
|
package admin
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/revel/revel"
|
|
||||||
. "github.com/leanote/leanote/app/lea"
|
|
||||||
"github.com/leanote/leanote/app/info"
|
"github.com/leanote/leanote/app/info"
|
||||||
"strings"
|
. "github.com/leanote/leanote/app/lea"
|
||||||
|
"github.com/revel/revel"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
// admin 首页
|
// admin 首页
|
||||||
@@ -25,7 +25,7 @@ func (c AdminEmail) Blog() revel.Result {
|
|||||||
newTags := configService.GetGlobalArrayConfig("newTags")
|
newTags := configService.GetGlobalArrayConfig("newTags")
|
||||||
c.RenderArgs["recommendTags"] = strings.Join(recommendTags, ",")
|
c.RenderArgs["recommendTags"] = strings.Join(recommendTags, ",")
|
||||||
c.RenderArgs["newTags"] = strings.Join(newTags, ",")
|
c.RenderArgs["newTags"] = strings.Join(newTags, ",")
|
||||||
return c.RenderTemplate("admin/setting/blog.html");
|
return c.RenderTemplate("admin/setting/blog.html")
|
||||||
}
|
}
|
||||||
func (c AdminEmail) DoBlogTag(recommendTags, newTags string) revel.Result {
|
func (c AdminEmail) DoBlogTag(recommendTags, newTags string) revel.Result {
|
||||||
re := info.NewRe()
|
re := info.NewRe()
|
||||||
@@ -41,7 +41,7 @@ func (c AdminEmail) DoBlogTag(recommendTags, newTags string) revel.Result {
|
|||||||
func (c AdminEmail) Demo() revel.Result {
|
func (c AdminEmail) Demo() revel.Result {
|
||||||
c.RenderArgs["demoUsername"] = configService.GetGlobalStringConfig("demoUsername")
|
c.RenderArgs["demoUsername"] = configService.GetGlobalStringConfig("demoUsername")
|
||||||
c.RenderArgs["demoPassword"] = configService.GetGlobalStringConfig("demoPassword")
|
c.RenderArgs["demoPassword"] = configService.GetGlobalStringConfig("demoPassword")
|
||||||
return c.RenderTemplate("admin/setting/demo.html");
|
return c.RenderTemplate("admin/setting/demo.html")
|
||||||
}
|
}
|
||||||
func (c AdminEmail) DoDemo(demoUsername, demoPassword string) revel.Result {
|
func (c AdminEmail) DoDemo(demoUsername, demoPassword string) revel.Result {
|
||||||
re := info.NewRe()
|
re := info.NewRe()
|
||||||
@@ -51,7 +51,7 @@ func (c AdminEmail) DoDemo(demoUsername, demoPassword string) revel.Result {
|
|||||||
return c.RenderJson(info.Re{Ok: false})
|
return c.RenderJson(info.Re{Ok: false})
|
||||||
}
|
}
|
||||||
if userInfo.UserId == "" {
|
if userInfo.UserId == "" {
|
||||||
re.Msg = "The User is Not Exists";
|
re.Msg = "The User is Not Exists"
|
||||||
return c.RenderJson(re)
|
return c.RenderJson(re)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -66,7 +66,7 @@ func (c AdminEmail) DoDemo(demoUsername, demoPassword string) revel.Result {
|
|||||||
// 长微博的bin路径phantomJs
|
// 长微博的bin路径phantomJs
|
||||||
func (c AdminEmail) ToImage() revel.Result {
|
func (c AdminEmail) ToImage() revel.Result {
|
||||||
c.RenderArgs["toImageBinPath"] = configService.GetGlobalStringConfig("toImageBinPath")
|
c.RenderArgs["toImageBinPath"] = configService.GetGlobalStringConfig("toImageBinPath")
|
||||||
return c.RenderTemplate("admin/setting/toImage.html");
|
return c.RenderTemplate("admin/setting/toImage.html")
|
||||||
}
|
}
|
||||||
func (c AdminEmail) DoToImage(toImageBinPath string) revel.Result {
|
func (c AdminEmail) DoToImage(toImageBinPath string) revel.Result {
|
||||||
re := info.NewRe()
|
re := info.NewRe()
|
||||||
@@ -132,13 +132,13 @@ func (c AdminEmail) SendEmailToEmails(sendEmails, latestEmailSubject, latestEmai
|
|||||||
if saveAsOldEmail {
|
if saveAsOldEmail {
|
||||||
oldEmails := configService.GetGlobalMapConfig("oldEmails")
|
oldEmails := configService.GetGlobalMapConfig("oldEmails")
|
||||||
oldEmails[latestEmailSubject] = latestEmailBody
|
oldEmails[latestEmailSubject] = latestEmailBody
|
||||||
configService.UpdateGlobalMapConfig(c.GetUserId(), "oldEmails", oldEmails);
|
configService.UpdateGlobalMapConfig(c.GetUserId(), "oldEmails", oldEmails)
|
||||||
}
|
}
|
||||||
|
|
||||||
sendEmails = strings.Replace(sendEmails, "\r", "", -1)
|
sendEmails = strings.Replace(sendEmails, "\r", "", -1)
|
||||||
emails := strings.Split(sendEmails, "\n")
|
emails := strings.Split(sendEmails, "\n")
|
||||||
|
|
||||||
re.Ok, re.Msg = emailService.SendEmailToEmails(emails, latestEmailSubject, latestEmailBody);
|
re.Ok, re.Msg = emailService.SendEmailToEmails(emails, latestEmailSubject, latestEmailBody)
|
||||||
return c.RenderJson(re)
|
return c.RenderJson(re)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -156,7 +156,7 @@ func (c AdminEmail) SendToUsers2(emails, latestEmailSubject, latestEmailBody str
|
|||||||
if saveAsOldEmail {
|
if saveAsOldEmail {
|
||||||
oldEmails := configService.GetGlobalMapConfig("oldEmails")
|
oldEmails := configService.GetGlobalMapConfig("oldEmails")
|
||||||
oldEmails[latestEmailSubject] = latestEmailBody
|
oldEmails[latestEmailSubject] = latestEmailBody
|
||||||
configService.UpdateGlobalMapConfig(c.GetUserId(), "oldEmails", oldEmails);
|
configService.UpdateGlobalMapConfig(c.GetUserId(), "oldEmails", oldEmails)
|
||||||
}
|
}
|
||||||
|
|
||||||
emails = strings.Replace(emails, "\r", "", -1)
|
emails = strings.Replace(emails, "\r", "", -1)
|
||||||
@@ -165,8 +165,7 @@ func (c AdminEmail) SendToUsers2(emails, latestEmailSubject, latestEmailBody str
|
|||||||
users := userService.ListUserInfosByEmails(emailsArr)
|
users := userService.ListUserInfosByEmails(emailsArr)
|
||||||
LogJ(emailsArr)
|
LogJ(emailsArr)
|
||||||
|
|
||||||
|
re.Ok, re.Msg = emailService.SendEmailToUsers(users, latestEmailSubject, latestEmailBody)
|
||||||
re.Ok, re.Msg = emailService.SendEmailToUsers(users, latestEmailSubject, latestEmailBody);
|
|
||||||
|
|
||||||
return c.RenderJson(re)
|
return c.RenderJson(re)
|
||||||
}
|
}
|
||||||
@@ -180,7 +179,7 @@ func (c AdminEmail) SendEmailDialog(emails string) revel.Result{
|
|||||||
c.RenderArgs["str"] = configService.GlobalStringConfigs
|
c.RenderArgs["str"] = configService.GlobalStringConfigs
|
||||||
c.RenderArgs["map"] = configService.GlobalMapConfigs
|
c.RenderArgs["map"] = configService.GlobalMapConfigs
|
||||||
|
|
||||||
return c.RenderTemplate("admin/email/emailDialog.html");
|
return c.RenderTemplate("admin/email/emailDialog.html")
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c AdminEmail) SendToUsers(userFilterEmail, userFilterWhiteList, userFilterBlackList, latestEmailSubject, latestEmailBody string, verified, saveAsOldEmail bool) revel.Result {
|
func (c AdminEmail) SendToUsers(userFilterEmail, userFilterWhiteList, userFilterBlackList, latestEmailSubject, latestEmailBody string, verified, saveAsOldEmail bool) revel.Result {
|
||||||
@@ -196,19 +195,19 @@ func (c AdminEmail) SendToUsers(userFilterEmail, userFilterWhiteList, userFilter
|
|||||||
if saveAsOldEmail {
|
if saveAsOldEmail {
|
||||||
oldEmails := configService.GetGlobalMapConfig("oldEmails")
|
oldEmails := configService.GetGlobalMapConfig("oldEmails")
|
||||||
oldEmails[latestEmailSubject] = latestEmailBody
|
oldEmails[latestEmailSubject] = latestEmailBody
|
||||||
configService.UpdateGlobalMapConfig(c.GetUserId(), "oldEmails", oldEmails);
|
configService.UpdateGlobalMapConfig(c.GetUserId(), "oldEmails", oldEmails)
|
||||||
}
|
}
|
||||||
|
|
||||||
users := userService.GetAllUserByFilter(userFilterEmail, userFilterWhiteList, userFilterBlackList, verified)
|
users := userService.GetAllUserByFilter(userFilterEmail, userFilterWhiteList, userFilterBlackList, verified)
|
||||||
|
|
||||||
if(users == nil || len(users) == 0) {
|
if users == nil || len(users) == 0 {
|
||||||
re.Ok = false
|
re.Ok = false
|
||||||
re.Msg = "no users"
|
re.Msg = "no users"
|
||||||
return c.RenderJson(re)
|
return c.RenderJson(re)
|
||||||
}
|
}
|
||||||
|
|
||||||
re.Ok, re.Msg = emailService.SendEmailToUsers(users, latestEmailSubject, latestEmailBody);
|
re.Ok, re.Msg = emailService.SendEmailToUsers(users, latestEmailSubject, latestEmailBody)
|
||||||
if(!re.Ok) {
|
if !re.Ok {
|
||||||
return c.RenderJson(re)
|
return c.RenderJson(re)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -227,10 +226,10 @@ func (c AdminEmail) DeleteEmails(ids string) revel.Result {
|
|||||||
|
|
||||||
func (c AdminEmail) List(sorter, keywords string) revel.Result {
|
func (c AdminEmail) List(sorter, keywords string) revel.Result {
|
||||||
pageNumber := c.GetPage()
|
pageNumber := c.GetPage()
|
||||||
sorterField, isAsc := c.getSorter("CreatedTime", false, []string{"email", "ok", "subject", "createdTime"});
|
sorterField, isAsc := c.getSorter("CreatedTime", false, []string{"email", "ok", "subject", "createdTime"})
|
||||||
pageInfo, emails := emailService.ListEmailLogs(pageNumber, userPageSize, sorterField, isAsc, keywords);
|
pageInfo, emails := emailService.ListEmailLogs(pageNumber, userPageSize, sorterField, isAsc, keywords)
|
||||||
c.RenderArgs["pageInfo"] = pageInfo
|
c.RenderArgs["pageInfo"] = pageInfo
|
||||||
c.RenderArgs["emails"] = emails
|
c.RenderArgs["emails"] = emails
|
||||||
c.RenderArgs["keywords"] = keywords
|
c.RenderArgs["keywords"] = keywords
|
||||||
return c.RenderTemplate("admin/email/list.html");
|
return c.RenderTemplate("admin/email/list.html")
|
||||||
}
|
}
|
||||||
@@ -3,9 +3,9 @@ package admin
|
|||||||
import (
|
import (
|
||||||
"github.com/revel/revel"
|
"github.com/revel/revel"
|
||||||
// . "github.com/leanote/leanote/app/lea"
|
// . "github.com/leanote/leanote/app/lea"
|
||||||
|
"fmt"
|
||||||
"github.com/leanote/leanote/app/info"
|
"github.com/leanote/leanote/app/info"
|
||||||
"strings"
|
"strings"
|
||||||
"fmt"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// admin 首页
|
// admin 首页
|
||||||
@@ -25,7 +25,7 @@ func (c AdminSetting) Blog() revel.Result {
|
|||||||
newTags := configService.GetGlobalArrayConfig("newTags")
|
newTags := configService.GetGlobalArrayConfig("newTags")
|
||||||
c.RenderArgs["recommendTags"] = strings.Join(recommendTags, ",")
|
c.RenderArgs["recommendTags"] = strings.Join(recommendTags, ",")
|
||||||
c.RenderArgs["newTags"] = strings.Join(newTags, ",")
|
c.RenderArgs["newTags"] = strings.Join(newTags, ",")
|
||||||
return c.RenderTemplate("admin/setting/blog.html");
|
return c.RenderTemplate("admin/setting/blog.html")
|
||||||
}
|
}
|
||||||
func (c AdminSetting) DoBlogTag(recommendTags, newTags string) revel.Result {
|
func (c AdminSetting) DoBlogTag(recommendTags, newTags string) revel.Result {
|
||||||
re := info.NewRe()
|
re := info.NewRe()
|
||||||
@@ -42,7 +42,7 @@ func (c AdminSetting) ShareNote(registerSharedUserId string,
|
|||||||
registerSharedNotebookIds, registerSharedNoteIds, registerCopyNoteIds []string) revel.Result {
|
registerSharedNotebookIds, registerSharedNoteIds, registerCopyNoteIds []string) revel.Result {
|
||||||
|
|
||||||
re := info.NewRe()
|
re := info.NewRe()
|
||||||
re.Ok, re.Msg = configService.UpdateShareNoteConfig(registerSharedUserId, registerSharedNotebookPerms, registerSharedNotePerms, registerSharedNotebookIds, registerSharedNoteIds, registerCopyNoteIds);
|
re.Ok, re.Msg = configService.UpdateShareNoteConfig(registerSharedUserId, registerSharedNotebookPerms, registerSharedNotePerms, registerSharedNotebookIds, registerSharedNoteIds, registerCopyNoteIds)
|
||||||
return c.RenderJson(re)
|
return c.RenderJson(re)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -51,7 +51,7 @@ func (c AdminSetting) ShareNote(registerSharedUserId string,
|
|||||||
func (c AdminSetting) Demo() revel.Result {
|
func (c AdminSetting) Demo() revel.Result {
|
||||||
c.RenderArgs["demoUsername"] = configService.GetGlobalStringConfig("demoUsername")
|
c.RenderArgs["demoUsername"] = configService.GetGlobalStringConfig("demoUsername")
|
||||||
c.RenderArgs["demoPassword"] = configService.GetGlobalStringConfig("demoPassword")
|
c.RenderArgs["demoPassword"] = configService.GetGlobalStringConfig("demoPassword")
|
||||||
return c.RenderTemplate("admin/setting/demo.html");
|
return c.RenderTemplate("admin/setting/demo.html")
|
||||||
}
|
}
|
||||||
func (c AdminSetting) DoDemo(demoUsername, demoPassword string) revel.Result {
|
func (c AdminSetting) DoDemo(demoUsername, demoPassword string) revel.Result {
|
||||||
re := info.NewRe()
|
re := info.NewRe()
|
||||||
@@ -62,7 +62,7 @@ func (c AdminSetting) DoDemo(demoUsername, demoPassword string) revel.Result {
|
|||||||
return c.RenderJson(info.Re{Ok: false})
|
return c.RenderJson(info.Re{Ok: false})
|
||||||
}
|
}
|
||||||
if userInfo.UserId == "" {
|
if userInfo.UserId == "" {
|
||||||
re.Msg = "The User is Not Exists";
|
re.Msg = "The User is Not Exists"
|
||||||
return c.RenderJson(re)
|
return c.RenderJson(re)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -88,7 +88,7 @@ func (c AdminSetting) SubDomain() revel.Result {
|
|||||||
c.RenderArgs["blogSubDomain"] = configService.GetGlobalStringConfig("blogSubDomain")
|
c.RenderArgs["blogSubDomain"] = configService.GetGlobalStringConfig("blogSubDomain")
|
||||||
c.RenderArgs["leaSubDomain"] = configService.GetGlobalStringConfig("leaSubDomain")
|
c.RenderArgs["leaSubDomain"] = configService.GetGlobalStringConfig("leaSubDomain")
|
||||||
|
|
||||||
return c.RenderTemplate("admin/setting/subDomain.html");
|
return c.RenderTemplate("admin/setting/subDomain.html")
|
||||||
}
|
}
|
||||||
func (c AdminSetting) DoSubDomain(noteSubDomain, blogSubDomain, leaSubDomain, blackSubDomains, allowCustomDomain, blackCustomDomains string) revel.Result {
|
func (c AdminSetting) DoSubDomain(noteSubDomain, blogSubDomain, leaSubDomain, blackSubDomains, allowCustomDomain, blackCustomDomains string) revel.Result {
|
||||||
re := info.NewRe()
|
re := info.NewRe()
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ type AdminUpgrade struct {
|
|||||||
|
|
||||||
func (c AdminUpgrade) UpgradeBlog() revel.Result {
|
func (c AdminUpgrade) UpgradeBlog() revel.Result {
|
||||||
upgradeService.UpgradeBlog()
|
upgradeService.UpgradeBlog()
|
||||||
return nil;
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c AdminUpgrade) UpgradeBetaToBeta2() revel.Result {
|
func (c AdminUpgrade) UpgradeBetaToBeta2() revel.Result {
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
package admin
|
package admin
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/revel/revel"
|
|
||||||
. "github.com/leanote/leanote/app/lea"
|
. "github.com/leanote/leanote/app/lea"
|
||||||
|
"github.com/revel/revel"
|
||||||
// "time"
|
// "time"
|
||||||
"github.com/leanote/leanote/app/info"
|
"github.com/leanote/leanote/app/info"
|
||||||
)
|
)
|
||||||
@@ -15,32 +15,33 @@ type AdminUser struct {
|
|||||||
|
|
||||||
// admin 主页
|
// admin 主页
|
||||||
var userPageSize = 10
|
var userPageSize = 10
|
||||||
|
|
||||||
func (c AdminUser) Index(sorter, keywords string, pageSize int) revel.Result {
|
func (c AdminUser) Index(sorter, keywords string, pageSize int) revel.Result {
|
||||||
pageNumber := c.GetPage()
|
pageNumber := c.GetPage()
|
||||||
if userPageSize == 0 {
|
if userPageSize == 0 {
|
||||||
pageSize = userPageSize
|
pageSize = userPageSize
|
||||||
}
|
}
|
||||||
sorterField, isAsc := c.getSorter("CreatedTime", false, []string{"email", "username", "verified", "createdTime", "accountType"});
|
sorterField, isAsc := c.getSorter("CreatedTime", false, []string{"email", "username", "verified", "createdTime", "accountType"})
|
||||||
pageInfo, users := userService.ListUsers(pageNumber, pageSize, sorterField, isAsc, keywords);
|
pageInfo, users := userService.ListUsers(pageNumber, pageSize, sorterField, isAsc, keywords)
|
||||||
c.RenderArgs["pageInfo"] = pageInfo
|
c.RenderArgs["pageInfo"] = pageInfo
|
||||||
c.RenderArgs["users"] = users
|
c.RenderArgs["users"] = users
|
||||||
c.RenderArgs["keywords"] = keywords
|
c.RenderArgs["keywords"] = keywords
|
||||||
return c.RenderTemplate("admin/user/list.html");
|
return c.RenderTemplate("admin/user/list.html")
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c AdminUser) Add() revel.Result {
|
func (c AdminUser) Add() revel.Result {
|
||||||
return c.RenderTemplate("admin/user/add.html");
|
return c.RenderTemplate("admin/user/add.html")
|
||||||
}
|
}
|
||||||
|
|
||||||
// 添加
|
// 添加
|
||||||
func (c AdminUser) Register(email, pwd string) revel.Result {
|
func (c AdminUser) Register(email, pwd string) revel.Result {
|
||||||
re := info.NewRe();
|
re := info.NewRe()
|
||||||
|
|
||||||
if re.Ok, re.Msg = Vd("email", email); !re.Ok {
|
if re.Ok, re.Msg = Vd("email", email); !re.Ok {
|
||||||
return c.RenderRe(re);
|
return c.RenderRe(re)
|
||||||
}
|
}
|
||||||
if re.Ok, re.Msg = Vd("password", pwd); !re.Ok {
|
if re.Ok, re.Msg = Vd("password", pwd); !re.Ok {
|
||||||
return c.RenderRe(re);
|
return c.RenderRe(re)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 注册
|
// 注册
|
||||||
@@ -53,13 +54,13 @@ func (c AdminUser) Register(email, pwd string) revel.Result {
|
|||||||
func (c AdminUser) ResetPwd(userId string) revel.Result {
|
func (c AdminUser) ResetPwd(userId string) revel.Result {
|
||||||
userInfo := userService.GetUserInfo(userId)
|
userInfo := userService.GetUserInfo(userId)
|
||||||
c.RenderArgs["userInfo"] = userInfo
|
c.RenderArgs["userInfo"] = userInfo
|
||||||
return c.RenderTemplate("admin/user/reset_pwd.html");
|
return c.RenderTemplate("admin/user/reset_pwd.html")
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c AdminUser) DoResetPwd(userId, pwd string) revel.Result {
|
func (c AdminUser) DoResetPwd(userId, pwd string) revel.Result {
|
||||||
re := info.NewRe();
|
re := info.NewRe()
|
||||||
if re.Ok, re.Msg = Vd("password", pwd); !re.Ok {
|
if re.Ok, re.Msg = Vd("password", pwd); !re.Ok {
|
||||||
return c.RenderRe(re);
|
return c.RenderRe(re)
|
||||||
}
|
}
|
||||||
re.Ok, re.Msg = userService.ResetPwd(c.GetUserId(), userId, pwd)
|
re.Ok, re.Msg = userService.ResetPwd(c.GetUserId(), userId, pwd)
|
||||||
return c.RenderRe(re)
|
return c.RenderRe(re)
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
package admin
|
package admin
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/leanote/leanote/app/service"
|
|
||||||
"github.com/leanote/leanote/app/info"
|
"github.com/leanote/leanote/app/info"
|
||||||
|
"github.com/leanote/leanote/app/service"
|
||||||
// . "github.com/leanote/leanote/app/lea"
|
// . "github.com/leanote/leanote/app/lea"
|
||||||
"github.com/revel/revel"
|
"github.com/revel/revel"
|
||||||
// "strings"
|
// "strings"
|
||||||
@@ -56,6 +56,7 @@ var commonUrl = map[string]map[string]bool{"Index": map[string]bool{"Index": tru
|
|||||||
"File": map[string]bool{"OutputImage": true, "OutputFile": true},
|
"File": map[string]bool{"OutputImage": true, "OutputFile": true},
|
||||||
"Attach": map[string]bool{"Download": true, "DownloadAll": true},
|
"Attach": map[string]bool{"Download": true, "DownloadAll": true},
|
||||||
}
|
}
|
||||||
|
|
||||||
func needValidate(controller, method string) bool {
|
func needValidate(controller, method string) bool {
|
||||||
// 在里面
|
// 在里面
|
||||||
if v, ok := commonUrl[controller]; ok {
|
if v, ok := commonUrl[controller]; ok {
|
||||||
@@ -66,7 +67,7 @@ func needValidate(controller, method string) bool {
|
|||||||
return true
|
return true
|
||||||
} else {
|
} else {
|
||||||
// controller不在这里的, 肯定要验证
|
// controller不在这里的, 肯定要验证
|
||||||
return true;
|
return true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
func AuthInterceptor(c *revel.Controller) revel.Result {
|
func AuthInterceptor(c *revel.Controller) revel.Result {
|
||||||
|
|||||||
@@ -4,9 +4,9 @@ import (
|
|||||||
"github.com/revel/revel"
|
"github.com/revel/revel"
|
||||||
"gopkg.in/mgo.v2/bson"
|
"gopkg.in/mgo.v2/bson"
|
||||||
// "encoding/json"
|
// "encoding/json"
|
||||||
. "github.com/leanote/leanote/app/lea"
|
|
||||||
"github.com/leanote/leanote/app/controllers"
|
"github.com/leanote/leanote/app/controllers"
|
||||||
"github.com/leanote/leanote/app/info"
|
"github.com/leanote/leanote/app/info"
|
||||||
|
. "github.com/leanote/leanote/app/lea"
|
||||||
"os"
|
"os"
|
||||||
// "fmt"
|
// "fmt"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
@@ -43,7 +43,7 @@ func (c ApiBaseContrller) getUserInfo() info.User {
|
|||||||
|
|
||||||
// 上传附件
|
// 上传附件
|
||||||
func (c ApiBaseContrller) uploadAttach(name string, noteId string) (ok bool, msg string, id string) {
|
func (c ApiBaseContrller) uploadAttach(name string, noteId string) (ok bool, msg string, id string) {
|
||||||
userId := c.getUserId();
|
userId := c.getUserId()
|
||||||
|
|
||||||
// 判断是否有权限为笔记添加附件
|
// 判断是否有权限为笔记添加附件
|
||||||
// 如果笔记还没有添加是不是会有问题
|
// 如果笔记还没有添加是不是会有问题
|
||||||
@@ -64,11 +64,11 @@ func (c ApiBaseContrller) uploadAttach(name string, noteId string) (ok bool, msg
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
// > 5M?
|
// > 5M?
|
||||||
maxFileSize := configService.GetUploadSize("uploadAttachSize");
|
maxFileSize := configService.GetUploadSize("uploadAttachSize")
|
||||||
if maxFileSize <= 0 {
|
if maxFileSize <= 0 {
|
||||||
maxFileSize = 1000
|
maxFileSize = 1000
|
||||||
}
|
}
|
||||||
if(float64(len(data)) > maxFileSize * float64(1024*1024)) {
|
if float64(len(data)) > maxFileSize*float64(1024*1024) {
|
||||||
msg = "fileIsTooLarge"
|
msg = "fileIsTooLarge"
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -86,7 +86,7 @@ func (c ApiBaseContrller) uploadAttach(name string, noteId string) (ok bool, msg
|
|||||||
filename := handel.Filename
|
filename := handel.Filename
|
||||||
_, ext := SplitFilename(filename) // .doc
|
_, ext := SplitFilename(filename) // .doc
|
||||||
filename = newGuid + ext
|
filename = newGuid + ext
|
||||||
toPath := dir + "/" + filename;
|
toPath := dir + "/" + filename
|
||||||
err = ioutil.WriteFile(toPath, data, 0777)
|
err = ioutil.WriteFile(toPath, data, 0777)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
@@ -140,7 +140,7 @@ func (c ApiBaseContrller) upload(name string, noteId string, isAttach bool) (ok
|
|||||||
// 生成新的文件名
|
// 生成新的文件名
|
||||||
filename := handel.Filename
|
filename := handel.Filename
|
||||||
_, ext := SplitFilename(filename)
|
_, ext := SplitFilename(filename)
|
||||||
if(ext != ".gif" && ext != ".jpg" && ext != ".png" && ext != ".bmp" && ext != ".jpeg") {
|
if ext != ".gif" && ext != ".jpg" && ext != ".png" && ext != ".bmp" && ext != ".jpeg" {
|
||||||
msg = "notImage"
|
msg = "notImage"
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -151,18 +151,18 @@ func (c ApiBaseContrller) upload(name string, noteId string, isAttach bool) (ok
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
maxFileSize := configService.GetUploadSize("uploadImageSize");
|
maxFileSize := configService.GetUploadSize("uploadImageSize")
|
||||||
if maxFileSize <= 0 {
|
if maxFileSize <= 0 {
|
||||||
maxFileSize = 1000
|
maxFileSize = 1000
|
||||||
}
|
}
|
||||||
|
|
||||||
// > 2M?
|
// > 2M?
|
||||||
if(float64(len(data)) > maxFileSize * float64(1024*1024)) {
|
if float64(len(data)) > maxFileSize*float64(1024*1024) {
|
||||||
msg = "fileIsTooLarge"
|
msg = "fileIsTooLarge"
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
toPath := dir + "/" + filename;
|
toPath := dir + "/" + filename
|
||||||
err = ioutil.WriteFile(toPath, data, 0777)
|
err = ioutil.WriteFile(toPath, data, 0777)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -10,11 +10,11 @@ import (
|
|||||||
// "io/ioutil"
|
// "io/ioutil"
|
||||||
"os"
|
"os"
|
||||||
// "strconv"
|
// "strconv"
|
||||||
"io"
|
|
||||||
"time"
|
|
||||||
"strings"
|
|
||||||
"archive/tar"
|
"archive/tar"
|
||||||
"compress/gzip"
|
"compress/gzip"
|
||||||
|
"io"
|
||||||
|
"strings"
|
||||||
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
// 文件操作, 图片, 头像上传, 输出
|
// 文件操作, 图片, 头像上传, 输出
|
||||||
@@ -73,7 +73,7 @@ func (c ApiFile) GetImage(fileId string) revel.Result {
|
|||||||
// 下载附件
|
// 下载附件
|
||||||
// [OK]
|
// [OK]
|
||||||
func (c ApiFile) GetAttach(fileId string) revel.Result {
|
func (c ApiFile) GetAttach(fileId string) revel.Result {
|
||||||
attach := attachService.GetAttach(fileId, c.getUserId()); // 得到路径
|
attach := attachService.GetAttach(fileId, c.getUserId()) // 得到路径
|
||||||
path := attach.Path
|
path := attach.Path
|
||||||
if path == "" {
|
if path == "" {
|
||||||
return c.RenderText("No Such File")
|
return c.RenderText("No Such File")
|
||||||
@@ -161,4 +161,3 @@ func (c ApiFile) GetAllAttachs(noteId string) revel.Result {
|
|||||||
// fw.Seek(0, 0)
|
// fw.Seek(0, 0)
|
||||||
return c.RenderBinary(fw, filename, revel.Attachment, time.Now()) // revel.Attachment
|
return c.RenderBinary(fw, filename, revel.Attachment, time.Now()) // revel.Attachment
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -6,11 +6,11 @@ import (
|
|||||||
"github.com/leanote/leanote/app/info"
|
"github.com/leanote/leanote/app/info"
|
||||||
. "github.com/leanote/leanote/app/lea"
|
. "github.com/leanote/leanote/app/lea"
|
||||||
"gopkg.in/mgo.v2/bson"
|
"gopkg.in/mgo.v2/bson"
|
||||||
|
"os"
|
||||||
|
"os/exec"
|
||||||
"regexp"
|
"regexp"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
"os/exec"
|
|
||||||
"os"
|
|
||||||
// "github.com/leanote/leanote/app/types"
|
// "github.com/leanote/leanote/app/types"
|
||||||
// "io/ioutil"
|
// "io/ioutil"
|
||||||
// "fmt"
|
// "fmt"
|
||||||
@@ -182,7 +182,7 @@ func (c ApiNote) fixContent(content string) string {
|
|||||||
content = strings.Replace(content,
|
content = strings.Replace(content,
|
||||||
eachFind[0],
|
eachFind[0],
|
||||||
eachPattern["src"]+"=\""+baseUrl+"/api/file/"+eachPattern["to"]+eachFind[2]+"\"",
|
eachPattern["src"]+"=\""+baseUrl+"/api/file/"+eachPattern["to"]+eachFind[2]+"\"",
|
||||||
1);
|
1)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -202,7 +202,7 @@ func (c ApiNote) fixContent(content string) string {
|
|||||||
for _, eachFind := range findsImageMarkdown {
|
for _, eachFind := range findsImageMarkdown {
|
||||||
// [ 你好啊, 我很好, 为什么? 5503537b38f4111dcb0000d1]
|
// [ 你好啊, 我很好, 为什么? 5503537b38f4111dcb0000d1]
|
||||||
if len(eachFind) == 3 {
|
if len(eachFind) == 3 {
|
||||||
content = strings.Replace(content, eachFind[0], pre + "[" + eachFind[1] + "](" + baseUrl + "/api/file/" + eachPattern["to"] + eachFind[2] + ")", 1);
|
content = strings.Replace(content, eachFind[0], pre+"["+eachFind[1]+"]("+baseUrl+"/api/file/"+eachPattern["to"]+eachFind[2]+")", 1)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -635,7 +635,7 @@ func (c ApiNote) ExportPdf(noteId string) revel.Result {
|
|||||||
|
|
||||||
url := configService.GetSiteUrl() + "/note/toPdf?noteId=" + noteId + "&appKey=" + appKey
|
url := configService.GetSiteUrl() + "/note/toPdf?noteId=" + noteId + "&appKey=" + appKey
|
||||||
var cc string
|
var cc string
|
||||||
if(note.IsMarkdown) {
|
if note.IsMarkdown {
|
||||||
cc = binPath + " --window-status done \"" + url + "\" \"" + path + "\"" // \"" + cookieDomain + "\" \"" + cookieName + "\" \"" + cookieValue + "\""
|
cc = binPath + " --window-status done \"" + url + "\" \"" + path + "\"" // \"" + cookieDomain + "\" \"" + cookieName + "\" \"" + cookieValue + "\""
|
||||||
} else {
|
} else {
|
||||||
cc = binPath + " \"" + url + "\" \"" + path + "\"" // \"" + cookieDomain + "\" \"" + cookieName + "\" \"" + cookieValue + "\""
|
cc = binPath + " \"" + url + "\" \"" + path + "\"" // \"" + cookieDomain + "\" \"" + cookieName + "\" \"" + cookieValue + "\""
|
||||||
|
|||||||
@@ -2,9 +2,9 @@ package api
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/leanote/leanote/app/info"
|
"github.com/leanote/leanote/app/info"
|
||||||
|
. "github.com/leanote/leanote/app/lea"
|
||||||
"github.com/revel/revel"
|
"github.com/revel/revel"
|
||||||
"gopkg.in/mgo.v2/bson"
|
"gopkg.in/mgo.v2/bson"
|
||||||
. "github.com/leanote/leanote/app/lea"
|
|
||||||
// "io/ioutil"
|
// "io/ioutil"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -3,9 +3,9 @@ package api
|
|||||||
import (
|
import (
|
||||||
"github.com/revel/revel"
|
"github.com/revel/revel"
|
||||||
// "encoding/json"
|
// "encoding/json"
|
||||||
"gopkg.in/mgo.v2/bson"
|
|
||||||
"github.com/leanote/leanote/app/info"
|
"github.com/leanote/leanote/app/info"
|
||||||
. "github.com/leanote/leanote/app/lea"
|
. "github.com/leanote/leanote/app/lea"
|
||||||
|
"gopkg.in/mgo.v2/bson"
|
||||||
"time"
|
"time"
|
||||||
// "github.com/leanote/leanote/app/types"
|
// "github.com/leanote/leanote/app/types"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
@@ -82,7 +82,6 @@ func (c ApiUser) GetSyncState() revel.Result {
|
|||||||
return c.RenderJson(ret)
|
return c.RenderJson(ret)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// 头像设置
|
// 头像设置
|
||||||
// 参数file=文件
|
// 参数file=文件
|
||||||
// 成功返回{Logo: url} 头像新url
|
// 成功返回{Logo: url} 头像新url
|
||||||
|
|||||||
@@ -90,7 +90,7 @@ func AuthInterceptor(c *revel.Controller) revel.Result {
|
|||||||
if noToken && userId == "" {
|
if noToken && userId == "" {
|
||||||
// 从session中获取, api/file/getImage, api/file/getAttach, api/file/getAllAttach
|
// 从session中获取, api/file/getImage, api/file/getAttach, api/file/getAllAttach
|
||||||
// 客户端
|
// 客户端
|
||||||
userId, _ = c.Session["UserId"];
|
userId, _ = c.Session["UserId"]
|
||||||
}
|
}
|
||||||
c.Session["_userId"] = userId
|
c.Session["_userId"] = userId
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
package controllers
|
package controllers
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/leanote/leanote/app/service"
|
|
||||||
"github.com/leanote/leanote/app/info"
|
"github.com/leanote/leanote/app/info"
|
||||||
"github.com/leanote/leanote/app/lea/blog"
|
"github.com/leanote/leanote/app/lea/blog"
|
||||||
|
"github.com/leanote/leanote/app/service"
|
||||||
// . "github.com/leanote/leanote/app/lea"
|
// . "github.com/leanote/leanote/app/lea"
|
||||||
"github.com/revel/revel"
|
"github.com/revel/revel"
|
||||||
"strings"
|
"strings"
|
||||||
|
|||||||
@@ -4,8 +4,8 @@ import (
|
|||||||
// "github.com/revel/revel"
|
// "github.com/revel/revel"
|
||||||
// "gopkg.in/mgo.v2/bson"
|
// "gopkg.in/mgo.v2/bson"
|
||||||
// "encoding/json"
|
// "encoding/json"
|
||||||
. "github.com/leanote/leanote/app/lea"
|
|
||||||
"github.com/leanote/leanote/app/controllers"
|
"github.com/leanote/leanote/app/controllers"
|
||||||
|
. "github.com/leanote/leanote/app/lea"
|
||||||
// "io/ioutil"
|
// "io/ioutil"
|
||||||
// "fmt"
|
// "fmt"
|
||||||
// "math"
|
// "math"
|
||||||
@@ -24,19 +24,19 @@ func (c MemberBaseController) getSorter(sorterField string, isAsc bool, okSorter
|
|||||||
sorter := ""
|
sorter := ""
|
||||||
c.Params.Bind(&sorter, "sorter")
|
c.Params.Bind(&sorter, "sorter")
|
||||||
if sorter == "" {
|
if sorter == "" {
|
||||||
return sorterField, isAsc;
|
return sorterField, isAsc
|
||||||
}
|
}
|
||||||
|
|
||||||
// sorter形式 email-up, email-down
|
// sorter形式 email-up, email-down
|
||||||
s2 := strings.Split(sorter, "-")
|
s2 := strings.Split(sorter, "-")
|
||||||
if len(s2) != 2 {
|
if len(s2) != 2 {
|
||||||
return sorterField, isAsc;
|
return sorterField, isAsc
|
||||||
}
|
}
|
||||||
|
|
||||||
// 必须是可用的sorter
|
// 必须是可用的sorter
|
||||||
if okSorter != nil && len(okSorter) > 0 {
|
if okSorter != nil && len(okSorter) > 0 {
|
||||||
if !InArray(okSorter, s2[0]) {
|
if !InArray(okSorter, s2[0]) {
|
||||||
return sorterField, isAsc;
|
return sorterField, isAsc
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -47,7 +47,7 @@ func (c MemberBaseController) getSorter(sorterField string, isAsc bool, okSorter
|
|||||||
isAsc = false
|
isAsc = false
|
||||||
}
|
}
|
||||||
c.RenderArgs["sorter"] = sorter
|
c.RenderArgs["sorter"] = sorter
|
||||||
return sorterField, isAsc;
|
return sorterField, isAsc
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c MemberBaseController) updateConfig(keys []string) {
|
func (c MemberBaseController) updateConfig(keys []string) {
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
package member
|
package member
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/revel/revel"
|
|
||||||
"github.com/leanote/leanote/app/info"
|
"github.com/leanote/leanote/app/info"
|
||||||
|
"github.com/revel/revel"
|
||||||
)
|
)
|
||||||
|
|
||||||
// 分组管理
|
// 分组管理
|
||||||
@@ -16,7 +16,7 @@ func (c MemberGroup) Index() revel.Result {
|
|||||||
c.SetLocale()
|
c.SetLocale()
|
||||||
c.RenderArgs["title"] = "My Group"
|
c.RenderArgs["title"] = "My Group"
|
||||||
c.RenderArgs["groups"] = groupService.GetGroupsAndUsers(c.GetUserId())
|
c.RenderArgs["groups"] = groupService.GetGroupsAndUsers(c.GetUserId())
|
||||||
return c.RenderTemplate("member/group/index.html");
|
return c.RenderTemplate("member/group/index.html")
|
||||||
}
|
}
|
||||||
|
|
||||||
// 添加分组
|
// 添加分组
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ func (c MemberIndex) Index() revel.Result {
|
|||||||
|
|
||||||
c.SetLocale()
|
c.SetLocale()
|
||||||
|
|
||||||
return c.RenderTemplate("member/index.html");
|
return c.RenderTemplate("member/index.html")
|
||||||
}
|
}
|
||||||
|
|
||||||
// 模板
|
// 模板
|
||||||
@@ -33,5 +33,5 @@ func (c MemberIndex) T(t string) revel.Result {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c MemberIndex) GetView(view string) revel.Result {
|
func (c MemberIndex) GetView(view string) revel.Result {
|
||||||
return c.RenderTemplate("admin/" + view);
|
return c.RenderTemplate("admin/" + view)
|
||||||
}
|
}
|
||||||
@@ -14,21 +14,21 @@ func (c MemberUser) Username() revel.Result {
|
|||||||
c.SetUserInfo()
|
c.SetUserInfo()
|
||||||
c.SetLocale()
|
c.SetLocale()
|
||||||
c.RenderArgs["title"] = "Username"
|
c.RenderArgs["title"] = "Username"
|
||||||
return c.RenderTemplate("member/user/username.html");
|
return c.RenderTemplate("member/user/username.html")
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c MemberUser) Email() revel.Result {
|
func (c MemberUser) Email() revel.Result {
|
||||||
c.SetUserInfo()
|
c.SetUserInfo()
|
||||||
c.SetLocale()
|
c.SetLocale()
|
||||||
c.RenderArgs["title"] = "Email"
|
c.RenderArgs["title"] = "Email"
|
||||||
return c.RenderTemplate("member/user/email.html");
|
return c.RenderTemplate("member/user/email.html")
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c MemberUser) Password() revel.Result {
|
func (c MemberUser) Password() revel.Result {
|
||||||
c.SetUserInfo()
|
c.SetUserInfo()
|
||||||
c.SetLocale()
|
c.SetLocale()
|
||||||
c.RenderArgs["title"] = "Password"
|
c.RenderArgs["title"] = "Password"
|
||||||
return c.RenderTemplate("member/user/password.html");
|
return c.RenderTemplate("member/user/password.html")
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c MemberUser) Avatar() revel.Result {
|
func (c MemberUser) Avatar() revel.Result {
|
||||||
@@ -36,11 +36,11 @@ func (c MemberUser) Avatar() revel.Result {
|
|||||||
c.SetLocale()
|
c.SetLocale()
|
||||||
c.RenderArgs["title"] = "Avatar"
|
c.RenderArgs["title"] = "Avatar"
|
||||||
c.RenderArgs["globalConfigs"] = configService.GetGlobalConfigForUser()
|
c.RenderArgs["globalConfigs"] = configService.GetGlobalConfigForUser()
|
||||||
return c.RenderTemplate("member/user/avatar.html");
|
return c.RenderTemplate("member/user/avatar.html")
|
||||||
}
|
}
|
||||||
func (c MemberUser) AddAccount() revel.Result {
|
func (c MemberUser) AddAccount() revel.Result {
|
||||||
c.SetUserInfo()
|
c.SetUserInfo()
|
||||||
c.SetLocale()
|
c.SetLocale()
|
||||||
c.RenderArgs["title"] = "Add Account"
|
c.RenderArgs["title"] = "Add Account"
|
||||||
return c.RenderTemplate("member/user/add_account.html");
|
return c.RenderTemplate("member/user/add_account.html")
|
||||||
}
|
}
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
package member
|
package member
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/leanote/leanote/app/service"
|
|
||||||
"github.com/leanote/leanote/app/info"
|
"github.com/leanote/leanote/app/info"
|
||||||
|
"github.com/leanote/leanote/app/service"
|
||||||
// . "github.com/leanote/leanote/app/lea"
|
// . "github.com/leanote/leanote/app/lea"
|
||||||
"github.com/revel/revel"
|
"github.com/revel/revel"
|
||||||
// "strings"
|
// "strings"
|
||||||
@@ -58,6 +58,7 @@ var commonUrl = map[string]map[string]bool{"Index": map[string]bool{"Index": tru
|
|||||||
"File": map[string]bool{"OutputImage": true, "OutputFile": true},
|
"File": map[string]bool{"OutputImage": true, "OutputFile": true},
|
||||||
"Attach": map[string]bool{"Download": true, "DownloadAll": true},
|
"Attach": map[string]bool{"Download": true, "DownloadAll": true},
|
||||||
}
|
}
|
||||||
|
|
||||||
func needValidate(controller, method string) bool {
|
func needValidate(controller, method string) bool {
|
||||||
// 在里面
|
// 在里面
|
||||||
if v, ok := commonUrl[controller]; ok {
|
if v, ok := commonUrl[controller]; ok {
|
||||||
@@ -68,7 +69,7 @@ func needValidate(controller, method string) bool {
|
|||||||
return true
|
return true
|
||||||
} else {
|
} else {
|
||||||
// controller不在这里的, 肯定要验证
|
// controller不在这里的, 肯定要验证
|
||||||
return true;
|
return true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
func AuthInterceptor(c *revel.Controller) revel.Result {
|
func AuthInterceptor(c *revel.Controller) revel.Result {
|
||||||
|
|||||||
+1
-1
@@ -2,8 +2,8 @@ package db
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"github.com/revel/revel"
|
|
||||||
. "github.com/leanote/leanote/app/lea"
|
. "github.com/leanote/leanote/app/lea"
|
||||||
|
"github.com/revel/revel"
|
||||||
"gopkg.in/mgo.v2"
|
"gopkg.in/mgo.v2"
|
||||||
"gopkg.in/mgo.v2/bson"
|
"gopkg.in/mgo.v2/bson"
|
||||||
"strings"
|
"strings"
|
||||||
|
|||||||
+6
-5
@@ -1,17 +1,18 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"bufio"
|
||||||
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
"bufio"
|
|
||||||
"strings"
|
"strings"
|
||||||
"encoding/json"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// convert revel msg to js msg
|
// convert revel msg to js msg
|
||||||
|
|
||||||
var msgBasePath = "/Users/life/Documents/Go/package2/src/github.com/leanote/leanote/messages/"
|
var msgBasePath = "/Users/life/Documents/Go/package2/src/github.com/leanote/leanote/messages/"
|
||||||
var targetBasePath = "/Users/life/Documents/Go/package2/src/github.com/leanote/leanote/public/js/i18n/"
|
var targetBasePath = "/Users/life/Documents/Go/package2/src/github.com/leanote/leanote/public/js/i18n/"
|
||||||
|
|
||||||
func parse(filename string) {
|
func parse(filename string) {
|
||||||
file, err := os.Open(msgBasePath + filename)
|
file, err := os.Open(msgBasePath + filename)
|
||||||
reader := bufio.NewReader(file)
|
reader := bufio.NewReader(file)
|
||||||
@@ -32,7 +33,7 @@ func parse(filename string) {
|
|||||||
}
|
}
|
||||||
// 对每一行进行处理
|
// 对每一行进行处理
|
||||||
if line[0] == '#' || line[1] == '#' {
|
if line[0] == '#' || line[1] == '#' {
|
||||||
continue;
|
continue
|
||||||
}
|
}
|
||||||
lineStr := string(line)
|
lineStr := string(line)
|
||||||
|
|
||||||
@@ -40,7 +41,7 @@ func parse(filename string) {
|
|||||||
pos := strings.Index(lineStr, "=")
|
pos := strings.Index(lineStr, "=")
|
||||||
|
|
||||||
if pos < 0 {
|
if pos < 0 {
|
||||||
continue;
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
key := string(line[0:pos])
|
key := string(line[0:pos])
|
||||||
@@ -55,7 +56,7 @@ func parse(filename string) {
|
|||||||
// JSON
|
// JSON
|
||||||
b, _ := json.Marshal(msg)
|
b, _ := json.Marshal(msg)
|
||||||
str := string(b)
|
str := string(b)
|
||||||
fmt.Println(str);
|
fmt.Println(str)
|
||||||
|
|
||||||
targetName := targetBasePath + filename + ".js"
|
targetName := targetBasePath + filename + ".js"
|
||||||
file2, err2 := os.OpenFile(targetName, os.O_RDWR|os.O_CREATE, 0644)
|
file2, err2 := os.OpenFile(targetName, os.O_RDWR|os.O_CREATE, 0644)
|
||||||
|
|||||||
+2
-2
@@ -1,8 +1,8 @@
|
|||||||
package info
|
package info
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"time"
|
|
||||||
"gopkg.in/mgo.v2/bson"
|
"gopkg.in/mgo.v2/bson"
|
||||||
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
//---------
|
//---------
|
||||||
@@ -38,7 +38,6 @@ type ApiNote struct {
|
|||||||
PublicTime time.Time
|
PublicTime time.Time
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// 内容
|
// 内容
|
||||||
type ApiNoteContent struct {
|
type ApiNoteContent struct {
|
||||||
NoteId bson.ObjectId `bson:"_id,omitempty"`
|
NoteId bson.ObjectId `bson:"_id,omitempty"`
|
||||||
@@ -114,6 +113,7 @@ type ReUpdate struct {
|
|||||||
Msg string
|
Msg string
|
||||||
Usn int
|
Usn int
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewReUpdate() ReUpdate {
|
func NewReUpdate() ReUpdate {
|
||||||
return ReUpdate{Ok: false}
|
return ReUpdate{Ok: false}
|
||||||
}
|
}
|
||||||
@@ -37,6 +37,7 @@ type Post struct {
|
|||||||
LikeNum int
|
LikeNum int
|
||||||
IsMarkdown bool
|
IsMarkdown bool
|
||||||
}
|
}
|
||||||
|
|
||||||
// 归档
|
// 归档
|
||||||
type ArchiveMonth struct {
|
type ArchiveMonth struct {
|
||||||
Month int
|
Month int
|
||||||
|
|||||||
+1
-2
@@ -1,7 +1,6 @@
|
|||||||
package info
|
package info
|
||||||
|
|
||||||
import (
|
import ()
|
||||||
)
|
|
||||||
|
|
||||||
// controller ajax返回
|
// controller ajax返回
|
||||||
type Re struct {
|
type Re struct {
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ import (
|
|||||||
"math"
|
"math"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
// 分页数据
|
// 分页数据
|
||||||
type Page struct {
|
type Page struct {
|
||||||
CurPage int // 当前页码
|
CurPage int // 当前页码
|
||||||
|
|||||||
+29
-29
@@ -1,25 +1,25 @@
|
|||||||
package app
|
package app
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/revel/revel"
|
"encoding/json"
|
||||||
. "github.com/leanote/leanote/app/lea"
|
"fmt"
|
||||||
"github.com/leanote/leanote/app/service"
|
|
||||||
"github.com/leanote/leanote/app/db"
|
|
||||||
"github.com/leanote/leanote/app/controllers"
|
"github.com/leanote/leanote/app/controllers"
|
||||||
"github.com/leanote/leanote/app/controllers/api"
|
|
||||||
"github.com/leanote/leanote/app/controllers/admin"
|
"github.com/leanote/leanote/app/controllers/admin"
|
||||||
|
"github.com/leanote/leanote/app/controllers/api"
|
||||||
"github.com/leanote/leanote/app/controllers/member"
|
"github.com/leanote/leanote/app/controllers/member"
|
||||||
|
"github.com/leanote/leanote/app/db"
|
||||||
|
. "github.com/leanote/leanote/app/lea"
|
||||||
_ "github.com/leanote/leanote/app/lea/binder"
|
_ "github.com/leanote/leanote/app/lea/binder"
|
||||||
"github.com/leanote/leanote/app/lea/route"
|
"github.com/leanote/leanote/app/lea/route"
|
||||||
"reflect"
|
"github.com/leanote/leanote/app/service"
|
||||||
"fmt"
|
"github.com/revel/revel"
|
||||||
"html/template"
|
"html/template"
|
||||||
"math"
|
"math"
|
||||||
"strings"
|
|
||||||
"strconv"
|
|
||||||
"time"
|
|
||||||
"encoding/json"
|
|
||||||
"net/url"
|
"net/url"
|
||||||
|
"reflect"
|
||||||
|
"strconv"
|
||||||
|
"strings"
|
||||||
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
@@ -62,16 +62,16 @@ func init() {
|
|||||||
return str
|
return str
|
||||||
}
|
}
|
||||||
revel.TemplateFuncs["add"] = func(i int) string {
|
revel.TemplateFuncs["add"] = func(i int) string {
|
||||||
i = i + 1;
|
i = i + 1
|
||||||
return fmt.Sprintf("%v", i)
|
return fmt.Sprintf("%v", i)
|
||||||
}
|
}
|
||||||
revel.TemplateFuncs["sub"] = func(i int) int {
|
revel.TemplateFuncs["sub"] = func(i int) int {
|
||||||
i = i - 1;
|
i = i - 1
|
||||||
return i
|
return i
|
||||||
}
|
}
|
||||||
// 增加或减少
|
// 增加或减少
|
||||||
revel.TemplateFuncs["incr"] = func(n, i int) int {
|
revel.TemplateFuncs["incr"] = func(n, i int) int {
|
||||||
n = n + i;
|
n = n + i
|
||||||
return n
|
return n
|
||||||
}
|
}
|
||||||
revel.TemplateFuncs["join"] = func(arr []string) template.HTML {
|
revel.TemplateFuncs["join"] = func(arr []string) template.HTML {
|
||||||
@@ -147,7 +147,7 @@ func init() {
|
|||||||
|
|
||||||
classes += " label-post"
|
classes += " label-post"
|
||||||
var url = tagPostUrl + "/" + url.QueryEscape(tag)
|
var url = tagPostUrl + "/" + url.QueryEscape(tag)
|
||||||
tagStr += "<a class=\"" + classes + "\" href=\"" + url + "\">" + str + "</a>";
|
tagStr += "<a class=\"" + classes + "\" href=\"" + url + "\">" + str + "</a>"
|
||||||
if i != lenTags-1 {
|
if i != lenTags-1 {
|
||||||
tagStr += " "
|
tagStr += " "
|
||||||
}
|
}
|
||||||
@@ -172,7 +172,7 @@ func init() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
classes += " label-post"
|
classes += " label-post"
|
||||||
tagStr += "<span class=\"" + classes + "\" >" + str + "</span>";
|
tagStr += "<span class=\"" + classes + "\" >" + str + "</span>"
|
||||||
if i != lenTags-1 {
|
if i != lenTags-1 {
|
||||||
tagStr += " "
|
tagStr += " "
|
||||||
}
|
}
|
||||||
@@ -187,7 +187,7 @@ func init() {
|
|||||||
if strings.HasPrefix(str, "???") {
|
if strings.HasPrefix(str, "???") {
|
||||||
str = key
|
str = key
|
||||||
}
|
}
|
||||||
return template.HTML(str);
|
return template.HTML(str)
|
||||||
}
|
}
|
||||||
|
|
||||||
// lea++
|
// lea++
|
||||||
@@ -201,11 +201,11 @@ func init() {
|
|||||||
|
|
||||||
tagPostUrl := "http://lea.leanote.com/"
|
tagPostUrl := "http://lea.leanote.com/"
|
||||||
if typeStr == "recommend" {
|
if typeStr == "recommend" {
|
||||||
tagPostUrl += "?tag=";
|
tagPostUrl += "?tag="
|
||||||
} else if typeStr == "latest" {
|
} else if typeStr == "latest" {
|
||||||
tagPostUrl += "latest?tag=";
|
tagPostUrl += "latest?tag="
|
||||||
} else {
|
} else {
|
||||||
tagPostUrl += "subscription?tag=";
|
tagPostUrl += "subscription?tag="
|
||||||
}
|
}
|
||||||
|
|
||||||
for i, tag := range tags {
|
for i, tag := range tags {
|
||||||
@@ -221,7 +221,7 @@ func init() {
|
|||||||
}
|
}
|
||||||
classes += " label-post"
|
classes += " label-post"
|
||||||
var url = tagPostUrl + url.QueryEscape(tag)
|
var url = tagPostUrl + url.QueryEscape(tag)
|
||||||
tagStr += "<a class=\"" + classes + "\" href=\"" + url + "\">" + str + "</a>";
|
tagStr += "<a class=\"" + classes + "\" href=\"" + url + "\">" + str + "</a>"
|
||||||
if i != lenTags-1 {
|
if i != lenTags-1 {
|
||||||
tagStr += " "
|
tagStr += " "
|
||||||
}
|
}
|
||||||
@@ -260,7 +260,7 @@ func init() {
|
|||||||
for i := 0; i < len(v); i = i + 2 {
|
for i := 0; i < len(v); i = i + 2 {
|
||||||
item := v[i]
|
item := v[i]
|
||||||
if i+1 == len(v) {
|
if i+1 == len(v) {
|
||||||
break;
|
break
|
||||||
}
|
}
|
||||||
value := v[i+1]
|
value := v[i+1]
|
||||||
if item != nil && value != nil {
|
if item != nil && value != nil {
|
||||||
@@ -317,21 +317,21 @@ func init() {
|
|||||||
if sorterI != nil {
|
if sorterI != nil {
|
||||||
sorter, _ = sorterI.(string)
|
sorter, _ = sorterI.(string)
|
||||||
}
|
}
|
||||||
html := "data-url=\"" + url + "\" data-sorter=\"" + sorterField + "\"";
|
html := "data-url=\"" + url + "\" data-sorter=\"" + sorterField + "\""
|
||||||
html += " class=\"th-sortable ";
|
html += " class=\"th-sortable "
|
||||||
if sorter == sorterField+"-up" {
|
if sorter == sorterField+"-up" {
|
||||||
html += "th-sort-up\"";
|
html += "th-sort-up\""
|
||||||
} else if(sorter == sorterField + "-down") {
|
} else if sorter == sorterField+"-down" {
|
||||||
html += "th-sort-down";
|
html += "th-sort-down"
|
||||||
}
|
}
|
||||||
html += "\"";
|
html += "\""
|
||||||
return template.HTMLAttr(html)
|
return template.HTMLAttr(html)
|
||||||
}
|
}
|
||||||
|
|
||||||
// pagination
|
// pagination
|
||||||
revel.TemplateFuncs["page"] = func(urlBase string, page, pageSize, count int) template.HTML {
|
revel.TemplateFuncs["page"] = func(urlBase string, page, pageSize, count int) template.HTML {
|
||||||
if count == 0 {
|
if count == 0 {
|
||||||
return "";
|
return ""
|
||||||
}
|
}
|
||||||
totalPage := int(math.Ceil(float64(count) / float64(pageSize)))
|
totalPage := int(math.Ceil(float64(count) / float64(pageSize)))
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -2,8 +2,8 @@ package lea
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"github.com/revel/revel"
|
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"github.com/revel/revel"
|
||||||
)
|
)
|
||||||
|
|
||||||
func Log(i interface{}) {
|
func Log(i interface{}) {
|
||||||
|
|||||||
+5
-3
@@ -1,10 +1,11 @@
|
|||||||
package lea
|
package lea
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"github.com/revel/revel"
|
||||||
"net/smtp"
|
"net/smtp"
|
||||||
"strings"
|
"strings"
|
||||||
"github.com/revel/revel"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// 发送邮件
|
// 发送邮件
|
||||||
var host = "smtp.ym.163.com"
|
var host = "smtp.ym.163.com"
|
||||||
var port = "25"
|
var port = "25"
|
||||||
@@ -12,7 +13,7 @@ var username = "noreply@leanote.com"
|
|||||||
var password = "---"
|
var password = "---"
|
||||||
|
|
||||||
func InitEmail() {
|
func InitEmail() {
|
||||||
config := revel.Config;
|
config := revel.Config
|
||||||
host, _ = config.String("email.host")
|
host, _ = config.String("email.host")
|
||||||
port, _ = config.String("email.port")
|
port, _ = config.String("email.port")
|
||||||
username, _ = config.String("email.username")
|
username, _ = config.String("email.username")
|
||||||
@@ -56,6 +57,7 @@ var bodyTpl = `
|
|||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
`
|
`
|
||||||
|
|
||||||
func SendEmailOld(to, subject, body string) bool {
|
func SendEmailOld(to, subject, body string) bool {
|
||||||
hp := strings.Split(host, ":")
|
hp := strings.Split(host, ":")
|
||||||
auth := smtp.PlainAuth("", username, password, hp[0])
|
auth := smtp.PlainAuth("", username, password, hp[0])
|
||||||
@@ -85,5 +87,5 @@ func SendEmailOld(to, subject, body string) bool {
|
|||||||
|
|
||||||
func SendToLeanoteOld(subject, title, body string) {
|
func SendToLeanoteOld(subject, title, body string) {
|
||||||
to := "leanote@leanote.com"
|
to := "leanote@leanote.com"
|
||||||
SendEmailOld(to, subject, body);
|
SendEmailOld(to, subject, body)
|
||||||
}
|
}
|
||||||
+13
-13
@@ -1,19 +1,19 @@
|
|||||||
package lea
|
package lea
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"bytes"
|
||||||
"regexp"
|
|
||||||
"crypto/md5"
|
"crypto/md5"
|
||||||
"crypto/rand"
|
"crypto/rand"
|
||||||
"encoding/base64"
|
"encoding/base64"
|
||||||
"encoding/hex"
|
"encoding/hex"
|
||||||
"io"
|
"fmt"
|
||||||
"gopkg.in/mgo.v2/bson"
|
|
||||||
"time"
|
|
||||||
"strings"
|
|
||||||
"github.com/PuerkitoBio/goquery"
|
"github.com/PuerkitoBio/goquery"
|
||||||
"bytes"
|
"gopkg.in/mgo.v2/bson"
|
||||||
|
"io"
|
||||||
math_rand "math/rand"
|
math_rand "math/rand"
|
||||||
|
"regexp"
|
||||||
|
"strings"
|
||||||
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
// 字符串
|
// 字符串
|
||||||
@@ -161,7 +161,7 @@ func SubStringHTMLToRaw(param string, length int) string {
|
|||||||
continue
|
continue
|
||||||
} else if temp == '>' {
|
} else if temp == '>' {
|
||||||
isCode = false
|
isCode = false
|
||||||
resultRune[n] = ' ';
|
resultRune[n] = ' '
|
||||||
|
|
||||||
n++
|
n++
|
||||||
if n >= length {
|
if n >= length {
|
||||||
@@ -170,7 +170,7 @@ func SubStringHTMLToRaw(param string, length int) string {
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if !isCode {
|
if !isCode {
|
||||||
resultRune[n] = temp;
|
resultRune[n] = temp
|
||||||
// s += string(temp)
|
// s += string(temp)
|
||||||
n++
|
n++
|
||||||
if n >= length {
|
if n >= length {
|
||||||
@@ -244,7 +244,7 @@ func SubStringHTML(param string, length int, end string) string {
|
|||||||
var temp rune // 中文问题, 用rune来解决
|
var temp rune // 中文问题, 用rune来解决
|
||||||
isCode := false //是不是HTML代码
|
isCode := false //是不是HTML代码
|
||||||
isHTML := false //是不是HTML特殊字符,如
|
isHTML := false //是不是HTML特殊字符,如
|
||||||
var i = 0;
|
var i = 0
|
||||||
for ; i < lenStr; i++ {
|
for ; i < lenStr; i++ {
|
||||||
temp = rStr[i]
|
temp = rStr[i]
|
||||||
if temp == '<' {
|
if temp == '<' {
|
||||||
@@ -305,7 +305,7 @@ func IsGoodPwd(pwd string) (bool, string) {
|
|||||||
// 是否是email
|
// 是否是email
|
||||||
func IsEmail(email string) bool {
|
func IsEmail(email string) bool {
|
||||||
if email == "" {
|
if email == "" {
|
||||||
return false;
|
return false
|
||||||
}
|
}
|
||||||
ok, _ := regexp.MatchString(`^([a-zA-Z0-9]+[_|\_|\.|\-]?)*[_a-z\-A-Z0-9]+@([a-zA-Z0-9]+[_|\_|\.|\-]?)*[a-zA-Z0-9\-]+\.[0-9a-zA-Z]{2,6}$`, email)
|
ok, _ := regexp.MatchString(`^([a-zA-Z0-9]+[_|\_|\.|\-]?)*[_a-z\-A-Z0-9]+@([a-zA-Z0-9]+[_|\_|\.|\-]?)*[a-zA-Z0-9\-]+\.[0-9a-zA-Z]{2,6}$`, email)
|
||||||
return ok
|
return ok
|
||||||
@@ -314,7 +314,7 @@ func IsEmail(email string) bool {
|
|||||||
// 是否只包含数字, 字母 -, _
|
// 是否只包含数字, 字母 -, _
|
||||||
func IsUsername(username string) bool {
|
func IsUsername(username string) bool {
|
||||||
if username == "" {
|
if username == "" {
|
||||||
return false;
|
return false
|
||||||
}
|
}
|
||||||
ok, _ := regexp.MatchString(`[^0-9a-zA-Z_\-]`, username)
|
ok, _ := regexp.MatchString(`[^0-9a-zA-Z_\-]`, username)
|
||||||
return !ok
|
return !ok
|
||||||
@@ -351,7 +351,7 @@ func RandomPwd(num int) string {
|
|||||||
chars[j] = byte(i)
|
chars[j] = byte(i)
|
||||||
j++
|
j++
|
||||||
}
|
}
|
||||||
j--;
|
j--
|
||||||
|
|
||||||
str := ""
|
str := ""
|
||||||
math_rand.Seed(time.Now().UnixNano())
|
math_rand.Seed(time.Now().UnixNano())
|
||||||
|
|||||||
+1
-1
@@ -2,8 +2,8 @@ package lea
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"strconv"
|
|
||||||
"regexp"
|
"regexp"
|
||||||
|
"strconv"
|
||||||
)
|
)
|
||||||
|
|
||||||
// 验证
|
// 验证
|
||||||
|
|||||||
@@ -3,10 +3,10 @@ package archive
|
|||||||
import (
|
import (
|
||||||
"archive/zip"
|
"archive/zip"
|
||||||
"fmt"
|
"fmt"
|
||||||
"strings"
|
|
||||||
"io"
|
"io"
|
||||||
"os"
|
"os"
|
||||||
"path"
|
"path"
|
||||||
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
// main functions shows how to TarGz a directory/file and
|
// main functions shows how to TarGz a directory/file and
|
||||||
@@ -138,14 +138,14 @@ func Unzip(srcFilePath string, destDirPath string) (ok bool, msg string) {
|
|||||||
}()
|
}()
|
||||||
|
|
||||||
os.Mkdir(destDirPath, os.ModePerm)
|
os.Mkdir(destDirPath, os.ModePerm)
|
||||||
r, err := zip.OpenReader(srcFilePath);
|
r, err := zip.OpenReader(srcFilePath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
defer r.Close();
|
defer r.Close()
|
||||||
for _, f := range r.File {
|
for _, f := range r.File {
|
||||||
// fmt.Println("FileName : ", f.Name); // j/aaa.zip
|
// fmt.Println("FileName : ", f.Name); // j/aaa.zip
|
||||||
rc, err := f.Open();
|
rc, err := f.Open()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
package binder
|
package binder
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/revel/revel"
|
|
||||||
"github.com/leanote/leanote/app/info"
|
|
||||||
"github.com/leanote/leanote/app/controllers"
|
"github.com/leanote/leanote/app/controllers"
|
||||||
|
"github.com/leanote/leanote/app/info"
|
||||||
|
"github.com/revel/revel"
|
||||||
// "github.com/leanote/leanote/app/controllers/api"
|
// "github.com/leanote/leanote/app/controllers/api"
|
||||||
"fmt"
|
"fmt"
|
||||||
"reflect"
|
"reflect"
|
||||||
@@ -54,6 +54,7 @@ func nextKey(key string) string {
|
|||||||
}
|
}
|
||||||
return key[:fieldLen]
|
return key[:fieldLen]
|
||||||
}
|
}
|
||||||
|
|
||||||
var leanoteStructBinder = revel.Binder{
|
var leanoteStructBinder = revel.Binder{
|
||||||
// name == "noteOrContent"
|
// name == "noteOrContent"
|
||||||
Bind: func(params *revel.Params, name string, typ reflect.Type) reflect.Value {
|
Bind: func(params *revel.Params, name string, typ reflect.Type) reflect.Value {
|
||||||
@@ -111,7 +112,7 @@ files[0][HasBody]:[true]]
|
|||||||
}
|
}
|
||||||
var boundVal reflect.Value
|
var boundVal reflect.Value
|
||||||
// 没有name前缀
|
// 没有name前缀
|
||||||
if(noPrefix) {
|
if noPrefix {
|
||||||
// life
|
// life
|
||||||
// fmt.Println("<<")
|
// fmt.Println("<<")
|
||||||
// fmt.Println(strings.Title(key[:fieldLen]));
|
// fmt.Println(strings.Title(key[:fieldLen]));
|
||||||
|
|||||||
@@ -6,8 +6,8 @@ import (
|
|||||||
"html/template"
|
"html/template"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
// "os"
|
// "os"
|
||||||
"fmt"
|
|
||||||
"bytes"
|
"bytes"
|
||||||
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
"net/http"
|
"net/http"
|
||||||
"regexp"
|
"regexp"
|
||||||
@@ -181,7 +181,7 @@ func RenderTemplate(name string, args map[string]interface{}, basePath string, i
|
|||||||
files := ListDir(basePath)
|
files := ListDir(basePath)
|
||||||
for _, t := range files {
|
for _, t := range files {
|
||||||
if !strings.Contains(t, ".html") {
|
if !strings.Contains(t, ".html") {
|
||||||
continue;
|
continue
|
||||||
}
|
}
|
||||||
fileBytes, err := ioutil.ReadFile(basePath + "/" + t)
|
fileBytes, err := ioutil.ReadFile(basePath + "/" + t)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -211,11 +211,9 @@ func RenderTemplate(name string, args map[string]interface{}, basePath string, i
|
|||||||
return r
|
return r
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
////////////////////
|
////////////////////
|
||||||
//
|
//
|
||||||
|
|
||||||
|
|
||||||
type ErrorResult struct {
|
type ErrorResult struct {
|
||||||
RenderArgs map[string]interface{}
|
RenderArgs map[string]interface{}
|
||||||
Error error
|
Error error
|
||||||
|
|||||||
@@ -1,15 +1,16 @@
|
|||||||
package captcha
|
package captcha
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
crand "crypto/rand"
|
||||||
"image"
|
"image"
|
||||||
"image/color"
|
"image/color"
|
||||||
"image/png"
|
"image/png"
|
||||||
"io"
|
"io"
|
||||||
"math/rand"
|
"math/rand"
|
||||||
crand "crypto/rand"
|
|
||||||
"time"
|
|
||||||
"strconv"
|
"strconv"
|
||||||
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
stdWidth = 100
|
stdWidth = 100
|
||||||
stdHeight = 40
|
stdHeight = 40
|
||||||
@@ -132,6 +133,7 @@ type Image struct {
|
|||||||
height int //a digit height
|
height int //a digit height
|
||||||
dotsize int
|
dotsize int
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
rand.Seed(int64(time.Second))
|
rand.Seed(int64(time.Second))
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,4 +7,3 @@ import (
|
|||||||
func Html2Image(userInfo info.User, note info.Note, content, toPath string) bool {
|
func Html2Image(userInfo info.User, note info.Note, content, toPath string) bool {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
+16
-15
@@ -1,12 +1,13 @@
|
|||||||
package netutil
|
package netutil
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"strings"
|
|
||||||
"os"
|
"os"
|
||||||
|
"strings"
|
||||||
// "path/filepath"
|
// "path/filepath"
|
||||||
|
. "github.com/leanote/leanote/app/lea"
|
||||||
|
"io/ioutil"
|
||||||
"net"
|
"net"
|
||||||
"net/http"
|
"net/http"
|
||||||
"io/ioutil"
|
|
||||||
. "github.com/leanote/leanote/app/lea"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// net的util
|
// net的util
|
||||||
@@ -16,11 +17,11 @@ import (
|
|||||||
// 返回文件的完整目录
|
// 返回文件的完整目录
|
||||||
func WriteUrl(url string, toPath string) (length int64, newFilename, path string, ok bool) {
|
func WriteUrl(url string, toPath string) (length int64, newFilename, path string, ok bool) {
|
||||||
if url == "" {
|
if url == "" {
|
||||||
return;
|
return
|
||||||
}
|
}
|
||||||
content, err := GetContent(url)
|
content, err := GetContent(url)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return;
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
length = int64(len(content))
|
length = int64(len(content))
|
||||||
@@ -53,7 +54,7 @@ func GetContent(url string) (content []byte, err error) {
|
|||||||
var resp *http.Response
|
var resp *http.Response
|
||||||
resp, err = http.Get(url)
|
resp, err = http.Get(url)
|
||||||
Log(err)
|
Log(err)
|
||||||
if(resp != nil && resp.Body != nil) {
|
if resp != nil && resp.Body != nil {
|
||||||
defer resp.Body.Close()
|
defer resp.Body.Close()
|
||||||
} else {
|
} else {
|
||||||
}
|
}
|
||||||
@@ -63,33 +64,33 @@ func GetContent(url string) (content []byte, err error) {
|
|||||||
|
|
||||||
var buf []byte
|
var buf []byte
|
||||||
buf, err = ioutil.ReadAll(resp.Body)
|
buf, err = ioutil.ReadAll(resp.Body)
|
||||||
if(err != nil) {
|
if err != nil {
|
||||||
Log(err)
|
Log(err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
content = buf;
|
content = buf
|
||||||
err = nil
|
err = nil
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// 将url ?, #后面的字符串去掉
|
// 将url ?, #后面的字符串去掉
|
||||||
func trimQueryParams(url string) string {
|
func trimQueryParams(url string) string {
|
||||||
pos := strings.Index(url, "?");
|
pos := strings.Index(url, "?")
|
||||||
if pos != -1 {
|
if pos != -1 {
|
||||||
url = Substr(url, 0, pos);
|
url = Substr(url, 0, pos)
|
||||||
}
|
}
|
||||||
|
|
||||||
pos = strings.Index(url, "#");
|
pos = strings.Index(url, "#")
|
||||||
if pos != -1 {
|
if pos != -1 {
|
||||||
url = Substr(url, 0, pos);
|
url = Substr(url, 0, pos)
|
||||||
}
|
}
|
||||||
|
|
||||||
pos = strings.Index(url, "!");
|
pos = strings.Index(url, "!")
|
||||||
if pos != -1 {
|
if pos != -1 {
|
||||||
url = Substr(url, 0, pos);
|
url = Substr(url, 0, pos)
|
||||||
}
|
}
|
||||||
return url;
|
return url
|
||||||
}
|
}
|
||||||
|
|
||||||
// 通过domain得到ip
|
// 通过domain得到ip
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
package route
|
package route
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/revel/revel"
|
|
||||||
"github.com/leanote/leanote/app/db"
|
"github.com/leanote/leanote/app/db"
|
||||||
|
"github.com/revel/revel"
|
||||||
// . "github.com/leanote/leanote/app/lea"
|
// . "github.com/leanote/leanote/app/lea"
|
||||||
"net/url"
|
"net/url"
|
||||||
"strings"
|
"strings"
|
||||||
@@ -11,6 +11,7 @@ import (
|
|||||||
// overwite revel RouterFilter
|
// overwite revel RouterFilter
|
||||||
// /api/user/Info => ApiUser.Info()
|
// /api/user/Info => ApiUser.Info()
|
||||||
var staticPrefix = []string{"/public", "/favicon.ico", "/css", "/js", "/images", "/tinymce", "/upload", "/fonts"}
|
var staticPrefix = []string{"/public", "/favicon.ico", "/css", "/js", "/images", "/tinymce", "/upload", "/fonts"}
|
||||||
|
|
||||||
func RouterFilter(c *revel.Controller, fc []revel.Filter) {
|
func RouterFilter(c *revel.Controller, fc []revel.Filter) {
|
||||||
// 补全controller部分
|
// 补全controller部分
|
||||||
path := c.Request.Request.URL.Path
|
path := c.Request.Request.URL.Path
|
||||||
@@ -84,4 +85,3 @@ func RouterFilter(c *revel.Controller, fc []revel.Filter) {
|
|||||||
|
|
||||||
fc[0](c, fc[1:])
|
fc[0](c, fc[1:])
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2,9 +2,9 @@ package main
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"io/ioutil"
|
||||||
"os"
|
"os"
|
||||||
"os/exec"
|
"os/exec"
|
||||||
"io/ioutil"
|
|
||||||
"strings"
|
"strings"
|
||||||
// "time"
|
// "time"
|
||||||
)
|
)
|
||||||
@@ -54,7 +54,7 @@ func compressJs(filename string) {
|
|||||||
to := base + filename + "-min.js"
|
to := base + filename + "-min.js"
|
||||||
cmd := exec.Command(cmdPath, source, "-o", to)
|
cmd := exec.Command(cmdPath, source, "-o", to)
|
||||||
_, err := cmd.CombinedOutput()
|
_, err := cmd.CombinedOutput()
|
||||||
fmt.Println(source);
|
fmt.Println(source)
|
||||||
cmdError(err)
|
cmdError(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -121,10 +121,10 @@ func dev() {
|
|||||||
func tinymce() {
|
func tinymce() {
|
||||||
// cmdStr := "node_modules/jake/bin/cli.js minify bundle[themes:modern,plugins:table,paste,advlist,autolink,link,image,lists,charmap,hr,searchreplace,visualblocks,visualchars,code,nav,tabfocus,contextmenu,directionality,codemirror,codesyntax,textcolor,fullpage]"
|
// cmdStr := "node_modules/jake/bin/cli.js minify bundle[themes:modern,plugins:table,paste,advlist,autolink,link,image,lists,charmap,hr,searchreplace,visualblocks,visualchars,code,nav,tabfocus,contextmenu,directionality,codemirror,codesyntax,textcolor,fullpage]"
|
||||||
// cmd := exec.Command("/Users/life/Documents/eclipse-workspace/go/leanote_release/tinymce-master/node_modules/jake/bin/cli.js", "minify", "bundle[themes:modern,plugins:table,paste,advlist,autolink,link,image,lists,charmap,hr,searchreplace,visualblocks,visualchars,code,nav,tabfocus,contextmenu,directionality,codemirror,codesyntax,textcolor,fullpage]")
|
// cmd := exec.Command("/Users/life/Documents/eclipse-workspace/go/leanote_release/tinymce-master/node_modules/jake/bin/cli.js", "minify", "bundle[themes:modern,plugins:table,paste,advlist,autolink,link,image,lists,charmap,hr,searchreplace,visualblocks,visualchars,code,nav,tabfocus,contextmenu,directionality,codemirror,codesyntax,textcolor,fullpage]")
|
||||||
cmd := exec.Command("/bin/sh", "-c", "grunt minify");
|
cmd := exec.Command("/bin/sh", "-c", "grunt minify")
|
||||||
cmd.Dir = base + "/tinymce_4.1.9"
|
cmd.Dir = base + "/tinymce_4.1.9"
|
||||||
|
|
||||||
fmt.Println("正在build tinymce");
|
fmt.Println("正在build tinymce")
|
||||||
|
|
||||||
// 必须要先删除
|
// 必须要先删除
|
||||||
cmd2 := exec.Command("/bin/sh", "-c", "rm "+cmd.Dir+"/js/tinymce/tinymce.dev.js")
|
cmd2 := exec.Command("/bin/sh", "-c", "rm "+cmd.Dir+"/js/tinymce/tinymce.dev.js")
|
||||||
@@ -141,7 +141,7 @@ func main() {
|
|||||||
// 压缩tinymce
|
// 压缩tinymce
|
||||||
// tinymce()
|
// tinymce()
|
||||||
|
|
||||||
dev();
|
dev()
|
||||||
|
|
||||||
// 其它零散的需要压缩的js
|
// 其它零散的需要压缩的js
|
||||||
otherJss := []string{"js/main", "js/app/page", "js/contextmenu/jquery.contextmenu",
|
otherJss := []string{"js/main", "js/app/page", "js/contextmenu/jquery.contextmenu",
|
||||||
|
|||||||
@@ -123,7 +123,7 @@ func (this *AttachService) DeleteAttach(attachId, userId string) (bool, string)
|
|||||||
attach := info.Attach{}
|
attach := info.Attach{}
|
||||||
db.Get(db.Attachs, attachId, &attach)
|
db.Get(db.Attachs, attachId, &attach)
|
||||||
|
|
||||||
if(attach.AttachId != "") {
|
if attach.AttachId != "" {
|
||||||
// 判断是否有权限为笔记添加附件
|
// 判断是否有权限为笔记添加附件
|
||||||
if !shareService.HasUpdateNotePerm(attach.NoteId.Hex(), userId) {
|
if !shareService.HasUpdateNotePerm(attach.NoteId.Hex(), userId) {
|
||||||
return false, "No Perm"
|
return false, "No Perm"
|
||||||
|
|||||||
@@ -1,17 +1,17 @@
|
|||||||
package service
|
package service
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
|
"github.com/leanote/leanote/app/db"
|
||||||
"github.com/leanote/leanote/app/info"
|
"github.com/leanote/leanote/app/info"
|
||||||
. "github.com/leanote/leanote/app/lea"
|
. "github.com/leanote/leanote/app/lea"
|
||||||
"github.com/leanote/leanote/app/db"
|
|
||||||
"gopkg.in/mgo.v2/bson"
|
|
||||||
"github.com/revel/revel"
|
"github.com/revel/revel"
|
||||||
"time"
|
"gopkg.in/mgo.v2/bson"
|
||||||
"os"
|
"os"
|
||||||
"os/exec"
|
"os/exec"
|
||||||
"fmt"
|
|
||||||
"strings"
|
|
||||||
"strconv"
|
"strconv"
|
||||||
|
"strings"
|
||||||
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
// 配置服务
|
// 配置服务
|
||||||
@@ -27,6 +27,7 @@ type ConfigService struct {
|
|||||||
GlobalMapConfigs map[string]map[string]string
|
GlobalMapConfigs map[string]map[string]string
|
||||||
GlobalArrMapConfigs map[string][]map[string]string
|
GlobalArrMapConfigs map[string][]map[string]string
|
||||||
}
|
}
|
||||||
|
|
||||||
// appStart时 将全局的配置从数据库中得到作为全局
|
// appStart时 将全局的配置从数据库中得到作为全局
|
||||||
func (this *ConfigService) InitGlobalConfigs() bool {
|
func (this *ConfigService) InitGlobalConfigs() bool {
|
||||||
this.GlobalAllConfigs = map[string]interface{}{}
|
this.GlobalAllConfigs = map[string]interface{}{}
|
||||||
@@ -70,7 +71,7 @@ func (this *ConfigService) InitGlobalConfigs() bool {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (this *ConfigService) GetSiteUrl() string {
|
func (this *ConfigService) GetSiteUrl() string {
|
||||||
return this.siteUrl;
|
return this.siteUrl
|
||||||
}
|
}
|
||||||
func (this *ConfigService) GetAdminUsername() string {
|
func (this *ConfigService) GetAdminUsername() string {
|
||||||
return this.adminUsername
|
return this.adminUsername
|
||||||
@@ -92,7 +93,7 @@ func (this *ConfigService) updateGlobalConfig(userId, key string, value interfac
|
|||||||
IsArrMap: isArrMap,
|
IsArrMap: isArrMap,
|
||||||
UpdatedTime: time.Now(),
|
UpdatedTime: time.Now(),
|
||||||
}
|
}
|
||||||
if(isArr) {
|
if isArr {
|
||||||
v, _ := value.([]string)
|
v, _ := value.([]string)
|
||||||
config.ValueArr = v
|
config.ValueArr = v
|
||||||
this.GlobalArrayConfigs[key] = v
|
this.GlobalArrayConfigs[key] = v
|
||||||
@@ -113,7 +114,7 @@ func (this *ConfigService) updateGlobalConfig(userId, key string, value interfac
|
|||||||
} else {
|
} else {
|
||||||
i := bson.M{"UpdatedTime": time.Now()}
|
i := bson.M{"UpdatedTime": time.Now()}
|
||||||
this.GlobalAllConfigs[key] = value
|
this.GlobalAllConfigs[key] = value
|
||||||
if(isArr) {
|
if isArr {
|
||||||
v, _ := value.([]string)
|
v, _ := value.([]string)
|
||||||
i["ValueArr"] = v
|
i["ValueArr"] = v
|
||||||
this.GlobalArrayConfigs[key] = v
|
this.GlobalArrayConfigs[key] = v
|
||||||
@@ -177,6 +178,7 @@ func (this *ConfigService) GetGlobalArrMapConfig(key string) []map[string]string
|
|||||||
func (this *ConfigService) IsOpenRegister() bool {
|
func (this *ConfigService) IsOpenRegister() bool {
|
||||||
return this.GetGlobalStringConfig("openRegister") != ""
|
return this.GetGlobalStringConfig("openRegister") != ""
|
||||||
}
|
}
|
||||||
|
|
||||||
//-------
|
//-------
|
||||||
// 修改共享笔记的配置
|
// 修改共享笔记的配置
|
||||||
func (this *ConfigService) UpdateShareNoteConfig(registerSharedUserId string,
|
func (this *ConfigService) UpdateShareNoteConfig(registerSharedUserId string,
|
||||||
@@ -188,7 +190,7 @@ func (this *ConfigService) UpdateShareNoteConfig(registerSharedUserId string,
|
|||||||
ok = false
|
ok = false
|
||||||
msg = fmt.Sprint(err)
|
msg = fmt.Sprint(err)
|
||||||
}
|
}
|
||||||
}();
|
}()
|
||||||
|
|
||||||
// 用户是否存在?
|
// 用户是否存在?
|
||||||
if registerSharedUserId == "" {
|
if registerSharedUserId == "" {
|
||||||
@@ -222,7 +224,7 @@ func (this *ConfigService) UpdateShareNoteConfig(registerSharedUserId string,
|
|||||||
msg = "The user has no such notebook: " + notebookId
|
msg = "The user has no such notebook: " + notebookId
|
||||||
return
|
return
|
||||||
} else {
|
} else {
|
||||||
perm := "0";
|
perm := "0"
|
||||||
if registerSharedNotebookPerms[i] == 1 {
|
if registerSharedNotebookPerms[i] == 1 {
|
||||||
perm = "1"
|
perm = "1"
|
||||||
}
|
}
|
||||||
@@ -247,7 +249,7 @@ func (this *ConfigService) UpdateShareNoteConfig(registerSharedUserId string,
|
|||||||
msg = "The user has no such note: " + noteId
|
msg = "The user has no such note: " + noteId
|
||||||
return
|
return
|
||||||
} else {
|
} else {
|
||||||
perm := "0";
|
perm := "0"
|
||||||
if registerSharedNotePerms[i] == 1 {
|
if registerSharedNotePerms[i] == 1 {
|
||||||
perm = "1"
|
perm = "1"
|
||||||
}
|
}
|
||||||
@@ -298,7 +300,7 @@ func (this *ConfigService) getBackupDirname() string {
|
|||||||
}
|
}
|
||||||
func (this *ConfigService) Backup(remark string) (ok bool, msg string) {
|
func (this *ConfigService) Backup(remark string) (ok bool, msg string) {
|
||||||
binPath := configService.GetGlobalStringConfig("mongodumpPath")
|
binPath := configService.GetGlobalStringConfig("mongodumpPath")
|
||||||
config := revel.Config;
|
config := revel.Config
|
||||||
dbname, _ := config.String("db.dbname")
|
dbname, _ := config.String("db.dbname")
|
||||||
host, _ := revel.Config.String("db.host")
|
host, _ := revel.Config.String("db.host")
|
||||||
port, _ := revel.Config.String("db.port")
|
port, _ := revel.Config.String("db.port")
|
||||||
@@ -320,7 +322,7 @@ func (this *ConfigService) Backup(remark string) (ok bool, msg string) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
cmd := exec.Command("/bin/sh", "-c", binPath)
|
cmd := exec.Command("/bin/sh", "-c", binPath)
|
||||||
Log(binPath);
|
Log(binPath)
|
||||||
b, err := cmd.Output()
|
b, err := cmd.Output()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
msg = fmt.Sprintf("%v", err)
|
msg = fmt.Sprintf("%v", err)
|
||||||
@@ -332,6 +334,7 @@ func (this *ConfigService) Backup(remark string) (ok bool, msg string) {
|
|||||||
ok = configService.AddBackup(dir, remark)
|
ok = configService.AddBackup(dir, remark)
|
||||||
return ok, msg
|
return ok, msg
|
||||||
}
|
}
|
||||||
|
|
||||||
// 还原
|
// 还原
|
||||||
func (this *ConfigService) Restore(createdTime string) (ok bool, msg string) {
|
func (this *ConfigService) Restore(createdTime string) (ok bool, msg string) {
|
||||||
backups := this.GetGlobalArrMapConfig("backups") // [{}, {}]
|
backups := this.GetGlobalArrMapConfig("backups") // [{}, {}]
|
||||||
@@ -339,7 +342,7 @@ func (this *ConfigService) Restore(createdTime string) (ok bool, msg string) {
|
|||||||
var backup map[string]string
|
var backup map[string]string
|
||||||
for i, backup = range backups {
|
for i, backup = range backups {
|
||||||
if backup["createdTime"] == createdTime {
|
if backup["createdTime"] == createdTime {
|
||||||
break;
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if i == len(backups) {
|
if i == len(backups) {
|
||||||
@@ -354,7 +357,7 @@ func (this *ConfigService) Restore(createdTime string) (ok bool, msg string) {
|
|||||||
|
|
||||||
// mongorestore -h localhost -d leanote --directoryperdb /home/user1/gopackage/src/github.com/leanote/leanote/mongodb_backup/leanote_install_data/
|
// mongorestore -h localhost -d leanote --directoryperdb /home/user1/gopackage/src/github.com/leanote/leanote/mongodb_backup/leanote_install_data/
|
||||||
binPath := configService.GetGlobalStringConfig("mongorestorePath")
|
binPath := configService.GetGlobalStringConfig("mongorestorePath")
|
||||||
config := revel.Config;
|
config := revel.Config
|
||||||
dbname, _ := config.String("db.dbname")
|
dbname, _ := config.String("db.dbname")
|
||||||
host, _ := revel.Config.String("db.host")
|
host, _ := revel.Config.String("db.host")
|
||||||
port, _ := revel.Config.String("db.port")
|
port, _ := revel.Config.String("db.port")
|
||||||
@@ -375,7 +378,7 @@ func (this *ConfigService) Restore(createdTime string) (ok bool, msg string) {
|
|||||||
binPath += " " + path
|
binPath += " " + path
|
||||||
|
|
||||||
cmd := exec.Command("/bin/sh", "-c", binPath)
|
cmd := exec.Command("/bin/sh", "-c", binPath)
|
||||||
Log(binPath);
|
Log(binPath)
|
||||||
b, err := cmd.Output()
|
b, err := cmd.Output()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
msg = fmt.Sprintf("%v", err)
|
msg = fmt.Sprintf("%v", err)
|
||||||
@@ -393,7 +396,7 @@ func (this *ConfigService) DeleteBackup(createdTime string) (bool, string) {
|
|||||||
var backup map[string]string
|
var backup map[string]string
|
||||||
for i, backup = range backups {
|
for i, backup = range backups {
|
||||||
if backup["createdTime"] == createdTime {
|
if backup["createdTime"] == createdTime {
|
||||||
break;
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if i == len(backups) {
|
if i == len(backups) {
|
||||||
@@ -419,13 +422,13 @@ func (this *ConfigService) UpdateBackupRemark(createdTime, remark string) (bool,
|
|||||||
var backup map[string]string
|
var backup map[string]string
|
||||||
for i, backup = range backups {
|
for i, backup = range backups {
|
||||||
if backup["createdTime"] == createdTime {
|
if backup["createdTime"] == createdTime {
|
||||||
break;
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if i == len(backups) {
|
if i == len(backups) {
|
||||||
return false, "Backup Not Found"
|
return false, "Backup Not Found"
|
||||||
}
|
}
|
||||||
backup["remark"] = remark;
|
backup["remark"] = remark
|
||||||
|
|
||||||
ok := this.UpdateGlobalArrMapConfig(this.adminUserId, "backups", backups)
|
ok := this.UpdateGlobalArrMapConfig(this.adminUserId, "backups", backups)
|
||||||
return ok, ""
|
return ok, ""
|
||||||
@@ -438,7 +441,7 @@ func (this *ConfigService) GetBackup(createdTime string) (map[string]string, boo
|
|||||||
var backup map[string]string
|
var backup map[string]string
|
||||||
for i, backup = range backups {
|
for i, backup = range backups {
|
||||||
if backup["createdTime"] == createdTime {
|
if backup["createdTime"] == createdTime {
|
||||||
break;
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if i == len(backups) {
|
if i == len(backups) {
|
||||||
@@ -487,49 +490,53 @@ func init() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (this *ConfigService) GetSchema() string {
|
func (this *ConfigService) GetSchema() string {
|
||||||
return schema;
|
return schema
|
||||||
}
|
}
|
||||||
|
|
||||||
// 默认
|
// 默认
|
||||||
func (this *ConfigService) GetDefaultDomain() string {
|
func (this *ConfigService) GetDefaultDomain() string {
|
||||||
return defaultDomain
|
return defaultDomain
|
||||||
}
|
}
|
||||||
|
|
||||||
// 包含http://
|
// 包含http://
|
||||||
func (this *ConfigService) GetDefaultUrl() string {
|
func (this *ConfigService) GetDefaultUrl() string {
|
||||||
return schema + defaultDomain
|
return schema + defaultDomain
|
||||||
}
|
}
|
||||||
|
|
||||||
// note
|
// note
|
||||||
func (this *ConfigService) GetNoteDomain() string {
|
func (this *ConfigService) GetNoteDomain() string {
|
||||||
subDomain := this.GetGlobalStringConfig("noteSubDomain");
|
subDomain := this.GetGlobalStringConfig("noteSubDomain")
|
||||||
if subDomain != "" {
|
if subDomain != "" {
|
||||||
return subDomain + port
|
return subDomain + port
|
||||||
}
|
}
|
||||||
return this.GetDefaultDomain() + "/note"
|
return this.GetDefaultDomain() + "/note"
|
||||||
}
|
}
|
||||||
func (this *ConfigService) GetNoteUrl() string {
|
func (this *ConfigService) GetNoteUrl() string {
|
||||||
return schema + this.GetNoteDomain();
|
return schema + this.GetNoteDomain()
|
||||||
}
|
}
|
||||||
|
|
||||||
// blog
|
// blog
|
||||||
func (this *ConfigService) GetBlogDomain() string {
|
func (this *ConfigService) GetBlogDomain() string {
|
||||||
subDomain := this.GetGlobalStringConfig("blogSubDomain");
|
subDomain := this.GetGlobalStringConfig("blogSubDomain")
|
||||||
if subDomain != "" {
|
if subDomain != "" {
|
||||||
return subDomain + port
|
return subDomain + port
|
||||||
}
|
}
|
||||||
return this.GetDefaultDomain() + "/blog"
|
return this.GetDefaultDomain() + "/blog"
|
||||||
}
|
}
|
||||||
func (this *ConfigService) GetBlogUrl() string {
|
func (this *ConfigService) GetBlogUrl() string {
|
||||||
return schema + this.GetBlogDomain();
|
return schema + this.GetBlogDomain()
|
||||||
}
|
}
|
||||||
|
|
||||||
// lea
|
// lea
|
||||||
func (this *ConfigService) GetLeaDomain() string {
|
func (this *ConfigService) GetLeaDomain() string {
|
||||||
subDomain := this.GetGlobalStringConfig("leaSubDomain");
|
subDomain := this.GetGlobalStringConfig("leaSubDomain")
|
||||||
if subDomain != "" {
|
if subDomain != "" {
|
||||||
return subDomain + port
|
return subDomain + port
|
||||||
}
|
}
|
||||||
return this.GetDefaultDomain() + "/lea"
|
return this.GetDefaultDomain() + "/lea"
|
||||||
}
|
}
|
||||||
func (this *ConfigService) GetLeaUrl() string {
|
func (this *ConfigService) GetLeaUrl() string {
|
||||||
return schema + this.GetLeaDomain();
|
return schema + this.GetLeaDomain()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (this *ConfigService) GetUserUrl(domain string) string {
|
func (this *ConfigService) GetUserUrl(domain string) string {
|
||||||
@@ -543,6 +550,7 @@ func (this *ConfigService) GetUserSubUrl(subDomain string) string {
|
|||||||
func (this *ConfigService) AllowCustomDomain() bool {
|
func (this *ConfigService) AllowCustomDomain() bool {
|
||||||
return configService.GetGlobalStringConfig("allowCustomDomain") != ""
|
return configService.GetGlobalStringConfig("allowCustomDomain") != ""
|
||||||
}
|
}
|
||||||
|
|
||||||
// 是否是好的自定义域名
|
// 是否是好的自定义域名
|
||||||
func (this *ConfigService) IsGoodCustomDomain(domain string) bool {
|
func (this *ConfigService) IsGoodCustomDomain(domain string) bool {
|
||||||
blacks := this.GetGlobalArrayConfig("blackCustomDomains")
|
blacks := this.GetGlobalArrayConfig("blackCustomDomains")
|
||||||
@@ -567,7 +575,7 @@ func (this *ConfigService) IsGoodSubDomain(domain string) bool {
|
|||||||
// 上传大小
|
// 上传大小
|
||||||
func (this *ConfigService) GetUploadSize(key string) float64 {
|
func (this *ConfigService) GetUploadSize(key string) float64 {
|
||||||
f, _ := strconv.ParseFloat(this.GetGlobalStringConfig(key), 64)
|
f, _ := strconv.ParseFloat(this.GetGlobalStringConfig(key), 64)
|
||||||
return f;
|
return f
|
||||||
}
|
}
|
||||||
func (this *ConfigService) GetUploadSizeLimit() map[string]float64 {
|
func (this *ConfigService) GetUploadSizeLimit() map[string]float64 {
|
||||||
return map[string]float64{
|
return map[string]float64{
|
||||||
@@ -577,10 +585,11 @@ func (this *ConfigService) GetUploadSizeLimit() map[string]float64 {
|
|||||||
"uploadAvatarSize": this.GetUploadSize("uploadAvatarSize"),
|
"uploadAvatarSize": this.GetUploadSize("uploadAvatarSize"),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 为用户得到全局的配置
|
// 为用户得到全局的配置
|
||||||
// NoteController调用
|
// NoteController调用
|
||||||
func (this *ConfigService) GetGlobalConfigForUser() map[string]interface{} {
|
func (this *ConfigService) GetGlobalConfigForUser() map[string]interface{} {
|
||||||
uploadSizeConfigs := this.GetUploadSizeLimit();
|
uploadSizeConfigs := this.GetUploadSizeLimit()
|
||||||
config := map[string]interface{}{}
|
config := map[string]interface{}{}
|
||||||
for k, v := range uploadSizeConfigs {
|
for k, v := range uploadSizeConfigs {
|
||||||
config[k] = v
|
config[k] = v
|
||||||
|
|||||||
+39
-39
@@ -1,17 +1,17 @@
|
|||||||
package service
|
package service
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/leanote/leanote/app/info"
|
"bytes"
|
||||||
|
"fmt"
|
||||||
"github.com/leanote/leanote/app/db"
|
"github.com/leanote/leanote/app/db"
|
||||||
|
"github.com/leanote/leanote/app/info"
|
||||||
. "github.com/leanote/leanote/app/lea"
|
. "github.com/leanote/leanote/app/lea"
|
||||||
"gopkg.in/mgo.v2/bson"
|
"gopkg.in/mgo.v2/bson"
|
||||||
"time"
|
"html/template"
|
||||||
"strings"
|
|
||||||
"net/smtp"
|
"net/smtp"
|
||||||
"strconv"
|
"strconv"
|
||||||
"fmt"
|
"strings"
|
||||||
"html/template"
|
"time"
|
||||||
"bytes"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// 发送邮件
|
// 发送邮件
|
||||||
@@ -20,7 +20,7 @@ type EmailService struct {
|
|||||||
tpls map[string]*template.Template
|
tpls map[string]*template.Template
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewEmailService() (*EmailService) {
|
func NewEmailService() *EmailService {
|
||||||
return &EmailService{tpls: map[string]*template.Template{}}
|
return &EmailService{tpls: map[string]*template.Template{}}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -75,10 +75,10 @@ func (this *EmailService) RegisterSendActiveEmail(userInfo info.User, email stri
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
subject := configService.GetGlobalStringConfig("emailTemplateRegisterSubject");
|
subject := configService.GetGlobalStringConfig("emailTemplateRegisterSubject")
|
||||||
tpl := configService.GetGlobalStringConfig("emailTemplateRegister");
|
tpl := configService.GetGlobalStringConfig("emailTemplateRegister")
|
||||||
|
|
||||||
if(tpl == "") {
|
if tpl == "" {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -118,8 +118,8 @@ func (this *EmailService) UpdateEmailSendActiveEmail(userInfo info.User, email s
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
subject := configService.GetGlobalStringConfig("emailTemplateUpdateEmailSubject");
|
subject := configService.GetGlobalStringConfig("emailTemplateUpdateEmailSubject")
|
||||||
tpl := configService.GetGlobalStringConfig("emailTemplateUpdateEmail");
|
tpl := configService.GetGlobalStringConfig("emailTemplateUpdateEmail")
|
||||||
|
|
||||||
// 发送邮件
|
// 发送邮件
|
||||||
tokenUrl := configService.GetSiteUrl() + "/user/updateEmail?token=" + token
|
tokenUrl := configService.GetSiteUrl() + "/user/updateEmail?token=" + token
|
||||||
@@ -144,8 +144,8 @@ func (this *EmailService) UpdateEmailSendActiveEmail(userInfo info.User, email s
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (this *EmailService) FindPwdSendEmail(token, email string) (ok bool, msg string) {
|
func (this *EmailService) FindPwdSendEmail(token, email string) (ok bool, msg string) {
|
||||||
subject := configService.GetGlobalStringConfig("emailTemplateFindPasswordSubject");
|
subject := configService.GetGlobalStringConfig("emailTemplateFindPasswordSubject")
|
||||||
tpl := configService.GetGlobalStringConfig("emailTemplateFindPassword");
|
tpl := configService.GetGlobalStringConfig("emailTemplateFindPassword")
|
||||||
|
|
||||||
// 发送邮件
|
// 发送邮件
|
||||||
tokenUrl := configService.GetSiteUrl() + "/findPassword/" + token
|
tokenUrl := configService.GetSiteUrl() + "/findPassword/" + token
|
||||||
@@ -164,8 +164,8 @@ func (this *EmailService) FindPwdSendEmail(token, email string) (ok bool, msg st
|
|||||||
|
|
||||||
// 发送邀请链接
|
// 发送邀请链接
|
||||||
func (this *EmailService) SendInviteEmail(userInfo info.User, email, content string) bool {
|
func (this *EmailService) SendInviteEmail(userInfo info.User, email, content string) bool {
|
||||||
subject := configService.GetGlobalStringConfig("emailTemplateInviteSubject");
|
subject := configService.GetGlobalStringConfig("emailTemplateInviteSubject")
|
||||||
tpl := configService.GetGlobalStringConfig("emailTemplateInvite");
|
tpl := configService.GetGlobalStringConfig("emailTemplateInvite")
|
||||||
|
|
||||||
token2Value := map[string]interface{}{"siteUrl": configService.GetSiteUrl(),
|
token2Value := map[string]interface{}{"siteUrl": configService.GetSiteUrl(),
|
||||||
"registerUrl": configService.GetSiteUrl() + "/register?from=" + userInfo.Username,
|
"registerUrl": configService.GetSiteUrl() + "/register?from=" + userInfo.Username,
|
||||||
@@ -187,8 +187,8 @@ func (this *EmailService) SendInviteEmail(userInfo info.User, email, content str
|
|||||||
|
|
||||||
// 发送评论
|
// 发送评论
|
||||||
func (this *EmailService) SendCommentEmail(note info.Note, comment info.BlogComment, userId, content string) bool {
|
func (this *EmailService) SendCommentEmail(note info.Note, comment info.BlogComment, userId, content string) bool {
|
||||||
subject := configService.GetGlobalStringConfig("emailTemplateCommentSubject");
|
subject := configService.GetGlobalStringConfig("emailTemplateCommentSubject")
|
||||||
tpl := configService.GetGlobalStringConfig("emailTemplateComment");
|
tpl := configService.GetGlobalStringConfig("emailTemplateComment")
|
||||||
|
|
||||||
// title := "评论提醒"
|
// title := "评论提醒"
|
||||||
|
|
||||||
@@ -257,7 +257,6 @@ func (this *EmailService) SendCommentEmail(note info.Note, comment info.BlogComm
|
|||||||
return ok
|
return ok
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// 验证模板是否正确
|
// 验证模板是否正确
|
||||||
func (this *EmailService) ValidTpl(str string) (ok bool, msg string) {
|
func (this *EmailService) ValidTpl(str string) (ok bool, msg string) {
|
||||||
defer func() {
|
defer func() {
|
||||||
@@ -265,9 +264,9 @@ func (this *EmailService) ValidTpl(str string) (ok bool, msg string){
|
|||||||
ok = false
|
ok = false
|
||||||
msg = fmt.Sprint(err)
|
msg = fmt.Sprint(err)
|
||||||
}
|
}
|
||||||
}();
|
}()
|
||||||
header := configService.GetGlobalStringConfig("emailTemplateHeader");
|
header := configService.GetGlobalStringConfig("emailTemplateHeader")
|
||||||
footer := configService.GetGlobalStringConfig("emailTemplateFooter");
|
footer := configService.GetGlobalStringConfig("emailTemplateFooter")
|
||||||
str = strings.Replace(str, "{{header}}", header, -1)
|
str = strings.Replace(str, "{{header}}", header, -1)
|
||||||
str = strings.Replace(str, "{{footer}}", footer, -1)
|
str = strings.Replace(str, "{{footer}}", footer, -1)
|
||||||
_, err := template.New("tpl name").Parse(str)
|
_, err := template.New("tpl name").Parse(str)
|
||||||
@@ -286,7 +285,7 @@ func (this *EmailService) getTpl(str string) (ok bool, msg string, tpl *template
|
|||||||
ok = false
|
ok = false
|
||||||
msg = fmt.Sprint(err)
|
msg = fmt.Sprint(err)
|
||||||
}
|
}
|
||||||
}();
|
}()
|
||||||
|
|
||||||
var err error
|
var err error
|
||||||
var has bool
|
var has bool
|
||||||
@@ -312,16 +311,16 @@ func (this *EmailService) renderEmail(subject, body string, values map[string]in
|
|||||||
ok = false
|
ok = false
|
||||||
msg = fmt.Sprint(err) // 这里的err其实就是panic传入的内容,
|
msg = fmt.Sprint(err) // 这里的err其实就是panic传入的内容,
|
||||||
}
|
}
|
||||||
}();
|
}()
|
||||||
|
|
||||||
var tpl *template.Template
|
var tpl *template.Template
|
||||||
|
|
||||||
values["siteUrl"] = configService.GetSiteUrl();
|
values["siteUrl"] = configService.GetSiteUrl()
|
||||||
|
|
||||||
// subject
|
// subject
|
||||||
if subject != "" {
|
if subject != "" {
|
||||||
ok, msg, tpl = this.getTpl(subject)
|
ok, msg, tpl = this.getTpl(subject)
|
||||||
if(!ok) {
|
if !ok {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
var buffer bytes.Buffer
|
var buffer bytes.Buffer
|
||||||
@@ -336,13 +335,13 @@ func (this *EmailService) renderEmail(subject, body string, values map[string]in
|
|||||||
}
|
}
|
||||||
|
|
||||||
// content
|
// content
|
||||||
header := configService.GetGlobalStringConfig("emailTemplateHeader");
|
header := configService.GetGlobalStringConfig("emailTemplateHeader")
|
||||||
footer := configService.GetGlobalStringConfig("emailTemplateFooter");
|
footer := configService.GetGlobalStringConfig("emailTemplateFooter")
|
||||||
body = strings.Replace(body, "{{header}}", header, -1)
|
body = strings.Replace(body, "{{header}}", header, -1)
|
||||||
body = strings.Replace(body, "{{footer}}", footer, -1)
|
body = strings.Replace(body, "{{footer}}", footer, -1)
|
||||||
values["subject"] = o
|
values["subject"] = o
|
||||||
ok, msg, tpl = this.getTpl(body)
|
ok, msg, tpl = this.getTpl(body)
|
||||||
if(!ok) {
|
if !ok {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
var buffer2 bytes.Buffer
|
var buffer2 bytes.Buffer
|
||||||
@@ -359,14 +358,14 @@ func (this *EmailService) renderEmail(subject, body string, values map[string]in
|
|||||||
// 发送email给用户
|
// 发送email给用户
|
||||||
// 需要记录
|
// 需要记录
|
||||||
func (this *EmailService) SendEmailToUsers(users []info.User, subject, body string) (ok bool, msg string) {
|
func (this *EmailService) SendEmailToUsers(users []info.User, subject, body string) (ok bool, msg string) {
|
||||||
if(users == nil || len(users) == 0) {
|
if users == nil || len(users) == 0 {
|
||||||
msg = "no users"
|
msg = "no users"
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// 尝试renderHtml
|
// 尝试renderHtml
|
||||||
ok, msg, _, _ = this.renderEmail(subject, body, map[string]interface{}{})
|
ok, msg, _, _ = this.renderEmail(subject, body, map[string]interface{}{})
|
||||||
if(!ok) {
|
if !ok {
|
||||||
Log(msg)
|
Log(msg)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -381,8 +380,8 @@ func (this *EmailService) SendEmailToUsers(users []info.User, subject, body stri
|
|||||||
ok2, msg2, subject2, body2 := this.renderEmail(subject, body, m)
|
ok2, msg2, subject2, body2 := this.renderEmail(subject, body, m)
|
||||||
ok = ok2
|
ok = ok2
|
||||||
msg = msg2
|
msg = msg2
|
||||||
if(ok2) {
|
if ok2 {
|
||||||
sendOk, msg := this.SendEmail(user.Email, subject2, body2);
|
sendOk, msg := this.SendEmail(user.Email, subject2, body2)
|
||||||
this.AddEmailLog(user.Email, subject, body, sendOk, msg) // 把模板记录下
|
this.AddEmailLog(user.Email, subject, body, sendOk, msg) // 把模板记录下
|
||||||
// 记录到Email Log
|
// 记录到Email Log
|
||||||
if sendOk {
|
if sendOk {
|
||||||
@@ -400,14 +399,14 @@ func (this *EmailService) SendEmailToUsers(users []info.User, subject, body stri
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (this *EmailService) SendEmailToEmails(emails []string, subject, body string) (ok bool, msg string) {
|
func (this *EmailService) SendEmailToEmails(emails []string, subject, body string) (ok bool, msg string) {
|
||||||
if(emails == nil || len(emails) == 0) {
|
if emails == nil || len(emails) == 0 {
|
||||||
msg = "no emails"
|
msg = "no emails"
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// 尝试renderHtml
|
// 尝试renderHtml
|
||||||
ok, msg, _, _ = this.renderEmail(subject, body, map[string]interface{}{})
|
ok, msg, _, _ = this.renderEmail(subject, body, map[string]interface{}{})
|
||||||
if(!ok) {
|
if !ok {
|
||||||
Log(msg)
|
Log(msg)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -420,8 +419,8 @@ func (this *EmailService) SendEmailToEmails(emails []string, subject, body strin
|
|||||||
m := map[string]interface{}{}
|
m := map[string]interface{}{}
|
||||||
m["email"] = email
|
m["email"] = email
|
||||||
ok, msg, subject, body = this.renderEmail(subject, body, m)
|
ok, msg, subject, body = this.renderEmail(subject, body, m)
|
||||||
if(ok) {
|
if ok {
|
||||||
sendOk, msg := this.SendEmail(email, subject, body);
|
sendOk, msg := this.SendEmail(email, subject, body)
|
||||||
this.AddEmailLog(email, subject, body, sendOk, msg)
|
this.AddEmailLog(email, subject, body, sendOk, msg)
|
||||||
// 记录到Email Log
|
// 记录到Email Log
|
||||||
if sendOk {
|
if sendOk {
|
||||||
@@ -430,7 +429,7 @@ func (this *EmailService) SendEmailToEmails(emails []string, subject, body strin
|
|||||||
Log("no " + email)
|
Log("no " + email)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
Log(msg);
|
Log(msg)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// }()
|
// }()
|
||||||
@@ -443,6 +442,7 @@ func (this *EmailService) AddEmailLog(email, subject, body string, ok bool, msg
|
|||||||
log := info.EmailLog{LogId: bson.NewObjectId(), Email: email, Subject: subject, Body: body, Ok: ok, Msg: msg, CreatedTime: time.Now()}
|
log := info.EmailLog{LogId: bson.NewObjectId(), Email: email, Subject: subject, Body: body, Ok: ok, Msg: msg, CreatedTime: time.Now()}
|
||||||
db.Insert(db.EmailLogs, log)
|
db.Insert(db.EmailLogs, log)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 展示邮件日志
|
// 展示邮件日志
|
||||||
|
|
||||||
func (this *EmailService) DeleteEmails(ids []string) bool {
|
func (this *EmailService) DeleteEmails(ids []string) bool {
|
||||||
@@ -461,7 +461,7 @@ func (this *EmailService) ListEmailLogs(pageNumber, pageSize int, sortField stri
|
|||||||
if email != "" {
|
if email != "" {
|
||||||
query["Email"] = bson.M{"$regex": bson.RegEx{".*?" + email + ".*", "i"}}
|
query["Email"] = bson.M{"$regex": bson.RegEx{".*?" + email + ".*", "i"}}
|
||||||
}
|
}
|
||||||
q := db.EmailLogs.Find(query);
|
q := db.EmailLogs.Find(query)
|
||||||
// 总记录数
|
// 总记录数
|
||||||
count, _ := q.Count()
|
count, _ := q.Count()
|
||||||
// 列表
|
// 列表
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ func (this *FileService) ListImagesWithPage(userId, albumId, key string, pageNum
|
|||||||
|
|
||||||
q := bson.M{"UserId": bson.ObjectIdHex(userId), "Type": ""} // life
|
q := bson.M{"UserId": bson.ObjectIdHex(userId), "Type": ""} // life
|
||||||
if albumId != "" {
|
if albumId != "" {
|
||||||
q["AlbumId"] = bson.ObjectIdHex(albumId);
|
q["AlbumId"] = bson.ObjectIdHex(albumId)
|
||||||
} else {
|
} else {
|
||||||
q["IsDefaultAlbum"] = true
|
q["IsDefaultAlbum"] = true
|
||||||
}
|
}
|
||||||
@@ -53,7 +53,7 @@ func (this *FileService) ListImagesWithPage(userId, albumId, key string, pageNum
|
|||||||
|
|
||||||
// LogJ(q)
|
// LogJ(q)
|
||||||
|
|
||||||
count := db.Count(db.Files, q);
|
count := db.Count(db.Files, q)
|
||||||
|
|
||||||
db.Files.
|
db.Files.
|
||||||
Find(q).
|
Find(q).
|
||||||
@@ -92,7 +92,7 @@ func (this *FileService) DeleteImage(userId, fileId string) (bool, string) {
|
|||||||
file := info.File{}
|
file := info.File{}
|
||||||
db.GetByIdAndUserId(db.Files, fileId, userId, &file)
|
db.GetByIdAndUserId(db.Files, fileId, userId, &file)
|
||||||
|
|
||||||
if(file.FileId != "") {
|
if file.FileId != "" {
|
||||||
if db.DeleteByIdAndUserId(db.Files, fileId, userId) {
|
if db.DeleteByIdAndUserId(db.Files, fileId, userId) {
|
||||||
// delete image
|
// delete image
|
||||||
// TODO
|
// TODO
|
||||||
@@ -203,7 +203,7 @@ func (this *FileService) GetFile(userId, fileId string) string {
|
|||||||
for _, noteId := range noteIds {
|
for _, noteId := range noteIds {
|
||||||
note := noteService.GetNoteById(noteId.Hex())
|
note := noteService.GetNoteById(noteId.Hex())
|
||||||
if shareService.HasReadPerm(note.UserId.Hex(), userId, noteId.Hex()) {
|
if shareService.HasReadPerm(note.UserId.Hex(), userId, noteId.Hex()) {
|
||||||
return path;
|
return path
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
@@ -248,7 +248,7 @@ func (this *FileService) CopyImage(userId, fileId, toUserId string) (bool, strin
|
|||||||
file2 := info.File{}
|
file2 := info.File{}
|
||||||
db.GetByQ(db.Files, bson.M{"UserId": bson.ObjectIdHex(toUserId), "FromFileId": bson.ObjectIdHex(fileId)}, &file2)
|
db.GetByQ(db.Files, bson.M{"UserId": bson.ObjectIdHex(toUserId), "FromFileId": bson.ObjectIdHex(fileId)}, &file2)
|
||||||
if file2.FileId != "" {
|
if file2.FileId != "" {
|
||||||
return true, file2.FileId.Hex();
|
return true, file2.FileId.Hex()
|
||||||
}
|
}
|
||||||
|
|
||||||
// 复制之
|
// 复制之
|
||||||
@@ -281,7 +281,7 @@ func (this *FileService) CopyImage(userId, fileId, toUserId string) (bool, strin
|
|||||||
Path: filePath,
|
Path: filePath,
|
||||||
Size: file.Size,
|
Size: file.Size,
|
||||||
FromFileId: file.FileId}
|
FromFileId: file.FileId}
|
||||||
id := bson.NewObjectId();
|
id := bson.NewObjectId()
|
||||||
fileInfo.FileId = id
|
fileInfo.FileId = id
|
||||||
fileId = id.Hex()
|
fileId = id.Hex()
|
||||||
Ok, _ := this.AddImage(fileInfo, "", toUserId, false)
|
Ok, _ := this.AddImage(fileInfo, "", toUserId, false)
|
||||||
@@ -296,7 +296,7 @@ func (this *FileService) CopyImage(userId, fileId, toUserId string) (bool, strin
|
|||||||
func (this *FileService) IsMyFile(userId, fileId string) bool {
|
func (this *FileService) IsMyFile(userId, fileId string) bool {
|
||||||
// 如果有问题会panic
|
// 如果有问题会panic
|
||||||
if !bson.IsObjectIdHex(fileId) || !bson.IsObjectIdHex(userId) {
|
if !bson.IsObjectIdHex(fileId) || !bson.IsObjectIdHex(userId) {
|
||||||
return false;
|
return false
|
||||||
}
|
}
|
||||||
return db.Has(db.Files, bson.M{"UserId": bson.ObjectIdHex(userId), "_id": bson.ObjectIdHex(fileId)})
|
return db.Has(db.Files, bson.M{"UserId": bson.ObjectIdHex(userId), "_id": bson.ObjectIdHex(fileId)})
|
||||||
}
|
}
|
||||||
+14
-12
@@ -1,8 +1,8 @@
|
|||||||
package service
|
package service
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/leanote/leanote/app/info"
|
|
||||||
"github.com/leanote/leanote/app/db"
|
"github.com/leanote/leanote/app/db"
|
||||||
|
"github.com/leanote/leanote/app/info"
|
||||||
// . "github.com/leanote/leanote/app/lea"
|
// . "github.com/leanote/leanote/app/lea"
|
||||||
"gopkg.in/mgo.v2/bson"
|
"gopkg.in/mgo.v2/bson"
|
||||||
"time"
|
"time"
|
||||||
@@ -24,6 +24,7 @@ func (this *GroupService) AddGroup(userId, title string) (bool, info.Group) {
|
|||||||
}
|
}
|
||||||
return db.Insert(db.Groups, group), group
|
return db.Insert(db.Groups, group), group
|
||||||
}
|
}
|
||||||
|
|
||||||
// 删除分组
|
// 删除分组
|
||||||
// 判断是否有好友
|
// 判断是否有好友
|
||||||
func (this *GroupService) DeleteGroup(userId, groupId string) (ok bool, msg string) {
|
func (this *GroupService) DeleteGroup(userId, groupId string) (ok bool, msg string) {
|
||||||
@@ -38,8 +39,8 @@ func (this *GroupService) DeleteGroup(userId, groupId string) (ok bool, msg stri
|
|||||||
|
|
||||||
// 删除分组后, 需要删除所有用户分享到该组的笔记本, 笔记
|
// 删除分组后, 需要删除所有用户分享到该组的笔记本, 笔记
|
||||||
|
|
||||||
shareService.DeleteAllShareNotebookGroup(groupId);
|
shareService.DeleteAllShareNotebookGroup(groupId)
|
||||||
shareService.DeleteAllShareNoteGroup(groupId);
|
shareService.DeleteAllShareNoteGroup(groupId)
|
||||||
|
|
||||||
db.DeleteAll(db.GroupUsers, bson.M{"GroupId": bson.ObjectIdHex(groupId)})
|
db.DeleteAll(db.GroupUsers, bson.M{"GroupId": bson.ObjectIdHex(groupId)})
|
||||||
return db.DeleteByIdAndUserId(db.Groups, groupId, userId), ""
|
return db.DeleteByIdAndUserId(db.Groups, groupId, userId), ""
|
||||||
@@ -53,14 +54,14 @@ func (this *GroupService) UpdateGroupTitle(userId, groupId, title string) (ok bo
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 得到用户的所有分组(包括下的所有用户)
|
// 得到用户的所有分组(包括下的所有用户)
|
||||||
func (this *GroupService) GetGroupsAndUsers(userId string) ([]info.Group) {
|
func (this *GroupService) GetGroupsAndUsers(userId string) []info.Group {
|
||||||
/*
|
/*
|
||||||
// 得到我的分组
|
// 得到我的分组
|
||||||
groups := []info.Group{}
|
groups := []info.Group{}
|
||||||
db.ListByQ(db.Groups, bson.M{"UserId": bson.ObjectIdHex(userId)}, &groups)
|
db.ListByQ(db.Groups, bson.M{"UserId": bson.ObjectIdHex(userId)}, &groups)
|
||||||
*/
|
*/
|
||||||
// 我的分组, 及我所属的分组
|
// 我的分组, 及我所属的分组
|
||||||
groups := this.GetGroupsContainOf(userId);
|
groups := this.GetGroupsContainOf(userId)
|
||||||
|
|
||||||
// 得到其下的用户
|
// 得到其下的用户
|
||||||
for i, group := range groups {
|
for i, group := range groups {
|
||||||
@@ -69,8 +70,9 @@ func (this *GroupService) GetGroupsAndUsers(userId string) ([]info.Group) {
|
|||||||
}
|
}
|
||||||
return groups
|
return groups
|
||||||
}
|
}
|
||||||
|
|
||||||
// 仅仅得到所有分组
|
// 仅仅得到所有分组
|
||||||
func (this *GroupService) GetGroups(userId string) ([]info.Group) {
|
func (this *GroupService) GetGroups(userId string) []info.Group {
|
||||||
// 得到分组s
|
// 得到分组s
|
||||||
groups := []info.Group{}
|
groups := []info.Group{}
|
||||||
db.ListByQ(db.Groups, bson.M{"UserId": bson.ObjectIdHex(userId)}, &groups)
|
db.ListByQ(db.Groups, bson.M{"UserId": bson.ObjectIdHex(userId)}, &groups)
|
||||||
@@ -78,7 +80,7 @@ func (this *GroupService) GetGroups(userId string) ([]info.Group) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 得到我的和我所属组的ids
|
// 得到我的和我所属组的ids
|
||||||
func (this *GroupService) GetMineAndBelongToGroupIds(userId string) ([]bson.ObjectId) {
|
func (this *GroupService) GetMineAndBelongToGroupIds(userId string) []bson.ObjectId {
|
||||||
// 所属组
|
// 所属组
|
||||||
groupIds := this.GetBelongToGroupIds(userId)
|
groupIds := this.GetBelongToGroupIds(userId)
|
||||||
|
|
||||||
@@ -126,7 +128,7 @@ func (this *GroupService) GetGroupsContainOf(userId string) []info.Group {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 得到分组, shareService用
|
// 得到分组, shareService用
|
||||||
func (this *GroupService) GetGroup(userId, groupId string) (info.Group) {
|
func (this *GroupService) GetGroup(userId, groupId string) info.Group {
|
||||||
// 得到分组s
|
// 得到分组s
|
||||||
group := info.Group{}
|
group := info.Group{}
|
||||||
db.GetByIdAndUserId(db.Groups, groupId, userId, &group)
|
db.GetByIdAndUserId(db.Groups, groupId, userId, &group)
|
||||||
@@ -134,7 +136,7 @@ func (this *GroupService) GetGroup(userId, groupId string) (info.Group) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 得到某分组下的用户
|
// 得到某分组下的用户
|
||||||
func (this *GroupService) GetUsers(groupId string) ([]info.User) {
|
func (this *GroupService) GetUsers(groupId string) []info.User {
|
||||||
// 得到UserIds
|
// 得到UserIds
|
||||||
groupUsers := []info.GroupUser{}
|
groupUsers := []info.GroupUser{}
|
||||||
db.ListByQWithFields(db.GroupUsers, bson.M{"GroupId": bson.ObjectIdHex(groupId)}, []string{"UserId"}, &groupUsers)
|
db.ListByQWithFields(db.GroupUsers, bson.M{"GroupId": bson.ObjectIdHex(groupId)}, []string{"UserId"}, &groupUsers)
|
||||||
@@ -150,7 +152,7 @@ func (this *GroupService) GetUsers(groupId string) ([]info.User) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 得到我所属的所有分组ids
|
// 得到我所属的所有分组ids
|
||||||
func (this *GroupService) GetBelongToGroupIds(userId string) ([]bson.ObjectId) {
|
func (this *GroupService) GetBelongToGroupIds(userId string) []bson.ObjectId {
|
||||||
// 得到UserIds
|
// 得到UserIds
|
||||||
groupUsers := []info.GroupUser{}
|
groupUsers := []info.GroupUser{}
|
||||||
db.ListByQWithFields(db.GroupUsers, bson.M{"UserId": bson.ObjectIdHex(userId)}, []string{"GroupId"}, &groupUsers)
|
db.ListByQWithFields(db.GroupUsers, bson.M{"UserId": bson.ObjectIdHex(userId)}, []string{"GroupId"}, &groupUsers)
|
||||||
@@ -216,8 +218,8 @@ func (this *GroupService) DeleteUser(ownUserId, groupId, userId string) (ok bool
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 删除该用户分享到本组的笔记本, 笔记
|
// 删除该用户分享到本组的笔记本, 笔记
|
||||||
shareService.DeleteShareNotebookGroupWhenDeleteGroupUser(userId, groupId);
|
shareService.DeleteShareNotebookGroupWhenDeleteGroupUser(userId, groupId)
|
||||||
shareService.DeleteShareNoteGroupWhenDeleteGroupUser(userId, groupId);
|
shareService.DeleteShareNoteGroupWhenDeleteGroupUser(userId, groupId)
|
||||||
|
|
||||||
return db.Delete(db.GroupUsers, bson.M{"GroupId": bson.ObjectIdHex(groupId), "UserId": bson.ObjectIdHex(userId)}), ""
|
return db.Delete(db.GroupUsers, bson.M{"GroupId": bson.ObjectIdHex(groupId), "UserId": bson.ObjectIdHex(userId)}), ""
|
||||||
}
|
}
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
package service
|
package service
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/leanote/leanote/app/info"
|
|
||||||
"github.com/leanote/leanote/app/db"
|
"github.com/leanote/leanote/app/db"
|
||||||
|
"github.com/leanote/leanote/app/info"
|
||||||
// . "github.com/leanote/leanote/app/lea"
|
// . "github.com/leanote/leanote/app/lea"
|
||||||
"gopkg.in/mgo.v2/bson"
|
"gopkg.in/mgo.v2/bson"
|
||||||
// "time"
|
// "time"
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
package service
|
package service
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/leanote/leanote/app/info"
|
|
||||||
"github.com/leanote/leanote/app/db"
|
"github.com/leanote/leanote/app/db"
|
||||||
|
"github.com/leanote/leanote/app/info"
|
||||||
. "github.com/leanote/leanote/app/lea"
|
. "github.com/leanote/leanote/app/lea"
|
||||||
"gopkg.in/mgo.v2/bson"
|
"gopkg.in/mgo.v2/bson"
|
||||||
"regexp"
|
"regexp"
|
||||||
@@ -13,7 +13,7 @@ type NoteImageService struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 通过id, userId得到noteIds
|
// 通过id, userId得到noteIds
|
||||||
func (this *NoteImageService) GetNoteIds(imageId string) ([]bson.ObjectId) {
|
func (this *NoteImageService) GetNoteIds(imageId string) []bson.ObjectId {
|
||||||
noteImages := []info.NoteImage{}
|
noteImages := []info.NoteImage{}
|
||||||
db.ListByQWithFields(db.NoteImages, bson.M{"ImageId": bson.ObjectIdHex(imageId)}, []string{"NoteId"}, ¬eImages)
|
db.ListByQWithFields(db.NoteImages, bson.M{"ImageId": bson.ObjectIdHex(imageId)}, []string{"NoteId"}, ¬eImages)
|
||||||
|
|
||||||
@@ -123,9 +123,9 @@ func (this *NoteImageService) CopyNoteImages(fromNoteId, fromUserId, newNoteId,
|
|||||||
return "getImage?fileId=" + replaceFileId
|
return "getImage?fileId=" + replaceFileId
|
||||||
}
|
}
|
||||||
return each
|
return each
|
||||||
});
|
})
|
||||||
|
|
||||||
return content;
|
return content
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|||||||
+36
-31
@@ -1,8 +1,8 @@
|
|||||||
package service
|
package service
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/leanote/leanote/app/info"
|
|
||||||
"github.com/leanote/leanote/app/db"
|
"github.com/leanote/leanote/app/db"
|
||||||
|
"github.com/leanote/leanote/app/info"
|
||||||
. "github.com/leanote/leanote/app/lea"
|
. "github.com/leanote/leanote/app/lea"
|
||||||
"gopkg.in/mgo.v2/bson"
|
"gopkg.in/mgo.v2/bson"
|
||||||
"time"
|
"time"
|
||||||
@@ -17,6 +17,7 @@ func (this *NoteService) GetNote(noteId, userId string) (note info.Note) {
|
|||||||
db.GetByIdAndUserId(db.Notes, noteId, userId, ¬e)
|
db.GetByIdAndUserId(db.Notes, noteId, userId, ¬e)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// fileService调用
|
// fileService调用
|
||||||
// 不能是已经删除了的, life bug, 客户端删除后, 竟然还能在web上打开
|
// 不能是已经删除了的, life bug, 客户端删除后, 竟然还能在web上打开
|
||||||
func (this *NoteService) GetNoteById(noteId string) (note info.Note) {
|
func (this *NoteService) GetNoteById(noteId string) (note info.Note) {
|
||||||
@@ -35,6 +36,7 @@ func (this *NoteService) GetNoteByIdAndUserId(noteId, userId string) (note info.
|
|||||||
db.GetByQ(db.Notes, bson.M{"_id": bson.ObjectIdHex(noteId), "UserId": bson.ObjectIdHex(userId), "IsDeleted": false}, ¬e)
|
db.GetByQ(db.Notes, bson.M{"_id": bson.ObjectIdHex(noteId), "UserId": bson.ObjectIdHex(userId), "IsDeleted": false}, ¬e)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// 得到blog, blogService用
|
// 得到blog, blogService用
|
||||||
// 不要传userId, 因为是公开的
|
// 不要传userId, 因为是公开的
|
||||||
func (this *NoteService) GetBlogNote(noteId string) (note info.Note) {
|
func (this *NoteService) GetBlogNote(noteId string) (note info.Note) {
|
||||||
@@ -43,6 +45,7 @@ func (this *NoteService) GetBlogNote(noteId string) (note info.Note) {
|
|||||||
"IsBlog": true, "IsTrash": false, "IsDeleted": false}, ¬e)
|
"IsBlog": true, "IsTrash": false, "IsDeleted": false}, ¬e)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// 通过id, userId得到noteContent
|
// 通过id, userId得到noteContent
|
||||||
func (this *NoteService) GetNoteContent(noteContentId, userId string) (noteContent info.NoteContent) {
|
func (this *NoteService) GetNoteContent(noteContentId, userId string) (noteContent info.NoteContent) {
|
||||||
noteContent = info.NoteContent{}
|
noteContent = info.NoteContent{}
|
||||||
@@ -64,7 +67,7 @@ func (this *NoteService) GetSyncNotes(userId string, afterUsn, maxEntry int) []i
|
|||||||
q := db.Notes.Find(bson.M{
|
q := db.Notes.Find(bson.M{
|
||||||
"UserId": bson.ObjectIdHex(userId),
|
"UserId": bson.ObjectIdHex(userId),
|
||||||
"Usn": bson.M{"$gt": afterUsn},
|
"Usn": bson.M{"$gt": afterUsn},
|
||||||
});
|
})
|
||||||
q.Sort("Usn").Limit(maxEntry).All(¬es)
|
q.Sort("Usn").Limit(maxEntry).All(¬es)
|
||||||
|
|
||||||
return this.ToApiNotes(notes)
|
return this.ToApiNotes(notes)
|
||||||
@@ -75,7 +78,7 @@ func (this *NoteService) ToApiNotes(notes []info.Note) []info.ApiNote {
|
|||||||
// 2, 得到所有图片, 附件信息
|
// 2, 得到所有图片, 附件信息
|
||||||
// 查images表, attachs表
|
// 查images表, attachs表
|
||||||
if len(notes) > 0 {
|
if len(notes) > 0 {
|
||||||
noteIds := make([]bson.ObjectId, len(notes));
|
noteIds := make([]bson.ObjectId, len(notes))
|
||||||
for i, note := range notes {
|
for i, note := range notes {
|
||||||
noteIds[i] = note.NoteId
|
noteIds[i] = note.NoteId
|
||||||
}
|
}
|
||||||
@@ -92,7 +95,6 @@ func (this *NoteService) ToApiNotes(notes []info.Note) []info.ApiNote {
|
|||||||
return []info.ApiNote{}
|
return []info.ApiNote{}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// note与apiNote的转换
|
// note与apiNote的转换
|
||||||
func (this *NoteService) ToApiNote(note *info.Note, files []info.NoteFile) info.ApiNote {
|
func (this *NoteService) ToApiNote(note *info.Note, files []info.NoteFile) info.ApiNote {
|
||||||
apiNote := info.ApiNote{
|
apiNote := info.ApiNote{
|
||||||
@@ -121,7 +123,7 @@ func (this *NoteService) ToApiNote(note *info.Note, files []info.NoteFile) info.
|
|||||||
// 查images表, attachs表
|
// 查images表, attachs表
|
||||||
// [待测]
|
// [待测]
|
||||||
func (this *NoteService) getFiles(noteIds []bson.ObjectId) map[string][]info.NoteFile {
|
func (this *NoteService) getFiles(noteIds []bson.ObjectId) map[string][]info.NoteFile {
|
||||||
noteImages := noteImageService.getImagesByNoteIds(noteIds);
|
noteImages := noteImageService.getImagesByNoteIds(noteIds)
|
||||||
noteAttachs := attachService.getAttachsByNoteIds(noteIds)
|
noteAttachs := attachService.getAttachsByNoteIds(noteIds)
|
||||||
|
|
||||||
noteFilesMap := map[string][]info.NoteFile{}
|
noteFilesMap := map[string][]info.NoteFile{}
|
||||||
@@ -135,7 +137,7 @@ func (this *NoteService) getFiles(noteIds []bson.ObjectId) map[string][]info.Not
|
|||||||
noteFiles = append(noteFiles, info.NoteFile{
|
noteFiles = append(noteFiles, info.NoteFile{
|
||||||
FileId: image.FileId.Hex(),
|
FileId: image.FileId.Hex(),
|
||||||
Type: image.Type,
|
Type: image.Type,
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -147,7 +149,7 @@ func (this *NoteService) getFiles(noteIds []bson.ObjectId) map[string][]info.Not
|
|||||||
Type: attach.Type,
|
Type: attach.Type,
|
||||||
Title: attach.Title,
|
Title: attach.Title,
|
||||||
IsAttach: true,
|
IsAttach: true,
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -173,7 +175,7 @@ func (this *NoteService) ListNotes(userId, notebookId string,
|
|||||||
query["NotebookId"] = bson.ObjectIdHex(notebookId)
|
query["NotebookId"] = bson.ObjectIdHex(notebookId)
|
||||||
}
|
}
|
||||||
|
|
||||||
q := db.Notes.Find(query);
|
q := db.Notes.Find(query)
|
||||||
|
|
||||||
// 总记录数
|
// 总记录数
|
||||||
count, _ = q.Count()
|
count, _ = q.Count()
|
||||||
@@ -201,6 +203,7 @@ func (this *NoteService) ListNotesByNoteIdsWithPageSort(noteIds []bson.ObjectId,
|
|||||||
All(¬es)
|
All(¬es)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// shareService调用
|
// shareService调用
|
||||||
func (this *NoteService) ListNotesByNoteIds(noteIds []bson.ObjectId) (notes []info.Note) {
|
func (this *NoteService) ListNotesByNoteIds(noteIds []bson.ObjectId) (notes []info.Note) {
|
||||||
notes = []info.Note{}
|
notes = []info.Note{}
|
||||||
@@ -210,6 +213,7 @@ func (this *NoteService) ListNotesByNoteIds(noteIds []bson.ObjectId) (notes []in
|
|||||||
All(¬es)
|
All(¬es)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// blog需要
|
// blog需要
|
||||||
func (this *NoteService) ListNoteContentsByNoteIds(noteIds []bson.ObjectId) (notes []info.NoteContent) {
|
func (this *NoteService) ListNoteContentsByNoteIds(noteIds []bson.ObjectId) (notes []info.NoteContent) {
|
||||||
notes = []info.NoteContent{}
|
notes = []info.NoteContent{}
|
||||||
@@ -219,6 +223,7 @@ func (this *NoteService) ListNoteContentsByNoteIds(noteIds []bson.ObjectId) (not
|
|||||||
All(¬es)
|
All(¬es)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// 只得到abstract, 不需要content
|
// 只得到abstract, 不需要content
|
||||||
func (this *NoteService) ListNoteAbstractsByNoteIds(noteIds []bson.ObjectId) (notes []info.NoteContent) {
|
func (this *NoteService) ListNoteAbstractsByNoteIds(noteIds []bson.ObjectId) (notes []info.NoteContent) {
|
||||||
notes = []info.NoteContent{}
|
notes = []info.NoteContent{}
|
||||||
@@ -236,9 +241,9 @@ func (this *NoteService) ListNoteContentByNoteIds(noteIds []bson.ObjectId) (note
|
|||||||
// [ok]
|
// [ok]
|
||||||
|
|
||||||
func (this *NoteService) AddNote(note info.Note, fromApi bool) info.Note {
|
func (this *NoteService) AddNote(note info.Note, fromApi bool) info.Note {
|
||||||
if(note.NoteId.Hex() == "") {
|
if note.NoteId.Hex() == "" {
|
||||||
noteId := bson.NewObjectId();
|
noteId := bson.NewObjectId()
|
||||||
note.NoteId = noteId;
|
note.NoteId = noteId
|
||||||
}
|
}
|
||||||
note.CreatedTime = time.Now()
|
note.CreatedTime = time.Now()
|
||||||
note.UpdatedTime = note.CreatedTime
|
note.UpdatedTime = note.CreatedTime
|
||||||
@@ -279,7 +284,6 @@ func (this *NoteService) AddSharedNote(note info.Note, myUserId bson.ObjectId) i
|
|||||||
return info.Note{}
|
return info.Note{}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// 添加笔记本内容
|
// 添加笔记本内容
|
||||||
// [ok]
|
// [ok]
|
||||||
func (this *NoteService) AddNoteContent(noteContent info.NoteContent) info.NoteContent {
|
func (this *NoteService) AddNoteContent(noteContent info.NoteContent) info.NoteContent {
|
||||||
@@ -291,7 +295,7 @@ func (this *NoteService) AddNoteContent(noteContent info.NoteContent) info.NoteC
|
|||||||
// 更新笔记图片
|
// 更新笔记图片
|
||||||
noteImageService.UpdateNoteImages(noteContent.UserId.Hex(), noteContent.NoteId.Hex(), "", noteContent.Content)
|
noteImageService.UpdateNoteImages(noteContent.UserId.Hex(), noteContent.NoteId.Hex(), "", noteContent.Content)
|
||||||
|
|
||||||
return noteContent;
|
return noteContent
|
||||||
}
|
}
|
||||||
|
|
||||||
// API, abstract, desc需要这里获取
|
// API, abstract, desc需要这里获取
|
||||||
@@ -348,10 +352,10 @@ func (this *NoteService) AddNoteAndContentForController(note info.Note, noteCont
|
|||||||
Log("HAS AUTH -----------")
|
Log("HAS AUTH -----------")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return this.AddNoteAndContent(note, noteContent, bson.ObjectIdHex(updatedUserId));
|
return this.AddNoteAndContent(note, noteContent, bson.ObjectIdHex(updatedUserId))
|
||||||
}
|
}
|
||||||
func (this *NoteService) AddNoteAndContent(note info.Note, noteContent info.NoteContent, myUserId bson.ObjectId) info.Note {
|
func (this *NoteService) AddNoteAndContent(note info.Note, noteContent info.NoteContent, myUserId bson.ObjectId) info.Note {
|
||||||
if(note.NoteId.Hex() == "") {
|
if note.NoteId.Hex() == "" {
|
||||||
noteId := bson.NewObjectId()
|
noteId := bson.NewObjectId()
|
||||||
note.NoteId = noteId
|
note.NoteId = noteId
|
||||||
}
|
}
|
||||||
@@ -368,7 +372,7 @@ func (this *NoteService) AddNoteAndContent(note info.Note, noteContent info.Note
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (this *NoteService) AddNoteAndContentApi(note info.Note, noteContent info.NoteContent, myUserId bson.ObjectId) info.Note {
|
func (this *NoteService) AddNoteAndContentApi(note info.Note, noteContent info.NoteContent, myUserId bson.ObjectId) info.Note {
|
||||||
if(note.NoteId.Hex() == "") {
|
if note.NoteId.Hex() == "" {
|
||||||
noteId := bson.NewObjectId()
|
noteId := bson.NewObjectId()
|
||||||
note.NoteId = noteId
|
note.NoteId = noteId
|
||||||
}
|
}
|
||||||
@@ -414,9 +418,9 @@ func (this *NoteService) UpdateNote(updatedUserId, noteId string, needUpdate bso
|
|||||||
delete(needUpdate, "Desc")
|
delete(needUpdate, "Desc")
|
||||||
}
|
}
|
||||||
|
|
||||||
needUpdate["UpdatedUserId"] = bson.ObjectIdHex(updatedUserId);
|
needUpdate["UpdatedUserId"] = bson.ObjectIdHex(updatedUserId)
|
||||||
needUpdate["UpdatedTime"] = time.Now();
|
needUpdate["UpdatedTime"] = time.Now()
|
||||||
afterUsn := userService.IncrUsn(userId);
|
afterUsn := userService.IncrUsn(userId)
|
||||||
needUpdate["Usn"] = afterUsn
|
needUpdate["Usn"] = afterUsn
|
||||||
|
|
||||||
// 添加tag2
|
// 添加tag2
|
||||||
@@ -430,7 +434,7 @@ func (this *NoteService) UpdateNote(updatedUserId, noteId string, needUpdate bso
|
|||||||
if isBlog, ok := needUpdate["IsBlog"]; ok {
|
if isBlog, ok := needUpdate["IsBlog"]; ok {
|
||||||
isBlog2 := isBlog.(bool)
|
isBlog2 := isBlog.(bool)
|
||||||
if note.IsBlog != isBlog2 {
|
if note.IsBlog != isBlog2 {
|
||||||
this.UpdateNoteContentIsBlog(noteId, userId, isBlog2);
|
this.UpdateNoteContentIsBlog(noteId, userId, isBlog2)
|
||||||
|
|
||||||
// 重新发布成博客
|
// 重新发布成博客
|
||||||
if !note.IsBlog {
|
if !note.IsBlog {
|
||||||
@@ -589,7 +593,7 @@ func (this *NoteService) ToBlog(userId, noteId string, isBlog, isTop bool) bool
|
|||||||
ok := db.UpdateByIdAndUserIdMap(db.Notes, noteId, userId, noteUpdate)
|
ok := db.UpdateByIdAndUserIdMap(db.Notes, noteId, userId, noteUpdate)
|
||||||
// 重新计算tags
|
// 重新计算tags
|
||||||
go (func() {
|
go (func() {
|
||||||
this.UpdateNoteContentIsBlog(noteId, userId, isBlog);
|
this.UpdateNoteContentIsBlog(noteId, userId, isBlog)
|
||||||
|
|
||||||
blogService.ReCountBlogTags(userId)
|
blogService.ReCountBlogTags(userId)
|
||||||
})()
|
})()
|
||||||
@@ -623,7 +627,7 @@ func (this *NoteService) MoveNote(noteId, notebookId, userId string) info.Note {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return this.GetNote(noteId, userId);
|
return this.GetNote(noteId, userId)
|
||||||
}
|
}
|
||||||
return info.Note{}
|
return info.Note{}
|
||||||
}
|
}
|
||||||
@@ -643,10 +647,11 @@ func (this *NoteService) updateToNotebookBlog(noteId, notebookId, userId string)
|
|||||||
}
|
}
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
// 判断是否是blog
|
// 判断是否是blog
|
||||||
func (this *NoteService) IsBlog(noteId string) bool {
|
func (this *NoteService) IsBlog(noteId string) bool {
|
||||||
note := info.Note{}
|
note := info.Note{}
|
||||||
db.GetByQWithFields(db.Notes, bson.M{"_id": bson.ObjectIdHex(noteId)}, []string{"IsBlog"}, ¬e);
|
db.GetByQWithFields(db.Notes, bson.M{"_id": bson.ObjectIdHex(noteId)}, []string{"IsBlog"}, ¬e)
|
||||||
return note.IsBlog
|
return note.IsBlog
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -660,11 +665,11 @@ func (this *NoteService) CopyNote(noteId, notebookId, userId string) info.Note {
|
|||||||
noteContent := this.GetNoteContent(noteId, userId)
|
noteContent := this.GetNoteContent(noteId, userId)
|
||||||
|
|
||||||
// 重新生成noteId
|
// 重新生成noteId
|
||||||
note.NoteId = bson.NewObjectId();
|
note.NoteId = bson.NewObjectId()
|
||||||
note.NotebookId = bson.ObjectIdHex(notebookId)
|
note.NotebookId = bson.ObjectIdHex(notebookId)
|
||||||
|
|
||||||
noteContent.NoteId = note.NoteId
|
noteContent.NoteId = note.NoteId
|
||||||
note = this.AddNoteAndContent(note, noteContent, note.UserId);
|
note = this.AddNoteAndContent(note, noteContent, note.UserId)
|
||||||
|
|
||||||
// 更新blog状态
|
// 更新blog状态
|
||||||
isBlog := this.updateToNotebookBlog(note.NoteId.Hex(), notebookId, userId)
|
isBlog := this.updateToNotebookBlog(note.NoteId.Hex(), notebookId, userId)
|
||||||
@@ -693,7 +698,7 @@ func (this *NoteService) CopySharedNote(noteId, notebookId, fromUserId, myUserId
|
|||||||
noteContent := this.GetNoteContent(noteId, fromUserId)
|
noteContent := this.GetNoteContent(noteId, fromUserId)
|
||||||
|
|
||||||
// 重新生成noteId
|
// 重新生成noteId
|
||||||
note.NoteId = bson.NewObjectId();
|
note.NoteId = bson.NewObjectId()
|
||||||
note.NotebookId = bson.ObjectIdHex(notebookId)
|
note.NotebookId = bson.ObjectIdHex(notebookId)
|
||||||
note.UserId = bson.ObjectIdHex(myUserId)
|
note.UserId = bson.ObjectIdHex(myUserId)
|
||||||
note.IsTop = false
|
note.IsTop = false
|
||||||
@@ -712,7 +717,7 @@ func (this *NoteService) CopySharedNote(noteId, notebookId, fromUserId, myUserId
|
|||||||
attachService.CopyAttachs(noteId, note.NoteId.Hex(), myUserId)
|
attachService.CopyAttachs(noteId, note.NoteId.Hex(), myUserId)
|
||||||
|
|
||||||
// 添加之
|
// 添加之
|
||||||
note = this.AddNoteAndContent(note, noteContent, note.UserId);
|
note = this.AddNoteAndContent(note, noteContent, note.UserId)
|
||||||
|
|
||||||
// 更新blog状态
|
// 更新blog状态
|
||||||
isBlog := this.updateToNotebookBlog(note.NoteId.Hex(), notebookId, myUserId)
|
isBlog := this.updateToNotebookBlog(note.NoteId.Hex(), notebookId, myUserId)
|
||||||
@@ -758,7 +763,7 @@ func (this *NoteService) SearchNote(key, userId string, pageNumber, pageSize int
|
|||||||
if isBlog {
|
if isBlog {
|
||||||
query["IsBlog"] = true
|
query["IsBlog"] = true
|
||||||
}
|
}
|
||||||
q := db.Notes.Find(query);
|
q := db.Notes.Find(query)
|
||||||
|
|
||||||
// 总记录数
|
// 总记录数
|
||||||
count, _ = q.Count()
|
count, _ = q.Count()
|
||||||
@@ -794,7 +799,7 @@ func (this *NoteService) searchNoteFromContent(notes []info.Note, userId, key st
|
|||||||
Select(bson.M{"_id": true}).
|
Select(bson.M{"_id": true}).
|
||||||
All(¬eContents)
|
All(¬eContents)
|
||||||
var lenContent = len(noteContents)
|
var lenContent = len(noteContents)
|
||||||
if(lenContent == 0) {
|
if lenContent == 0 {
|
||||||
return notes
|
return notes
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -823,7 +828,7 @@ func (this *NoteService) SearchNoteByTags(tags []string, userId string, pageNumb
|
|||||||
"IsTrash": false,
|
"IsTrash": false,
|
||||||
"Tags": bson.M{"$all": tags}}
|
"Tags": bson.M{"$all": tags}}
|
||||||
|
|
||||||
q := db.Notes.Find(query);
|
q := db.Notes.Find(query)
|
||||||
|
|
||||||
// 总记录数
|
// 总记录数
|
||||||
count, _ = q.Count()
|
count, _ = q.Count()
|
||||||
@@ -881,7 +886,7 @@ func (this *NoteService) UpdateNoteToDeleteTag(userId string, targetTag string)
|
|||||||
if tag == targetTag {
|
if tag == targetTag {
|
||||||
tags = tags
|
tags = tags
|
||||||
tags = append(tags[:i], tags[i+1:]...)
|
tags = append(tags[:i], tags[i+1:]...)
|
||||||
break;
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
usn := userService.IncrUsn(userId)
|
usn := userService.IncrUsn(userId)
|
||||||
|
|||||||
@@ -2,13 +2,13 @@ package service
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
// "fmt"
|
// "fmt"
|
||||||
"gopkg.in/mgo.v2/bson"
|
|
||||||
"github.com/leanote/leanote/app/db"
|
"github.com/leanote/leanote/app/db"
|
||||||
"github.com/leanote/leanote/app/info"
|
"github.com/leanote/leanote/app/info"
|
||||||
. "github.com/leanote/leanote/app/lea"
|
. "github.com/leanote/leanote/app/lea"
|
||||||
|
"gopkg.in/mgo.v2/bson"
|
||||||
"sort"
|
"sort"
|
||||||
"time"
|
|
||||||
"strings"
|
"strings"
|
||||||
|
"time"
|
||||||
// "html"
|
// "html"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -42,7 +42,7 @@ func ParseAndSortNotebooks(userNotebooks []info.Notebook, noParentDelete, needSo
|
|||||||
for _, each := range userNotebooks {
|
for _, each := range userNotebooks {
|
||||||
newNotebooks := info.Notebooks{Subs: info.SubNotebooks{}}
|
newNotebooks := info.Notebooks{Subs: info.SubNotebooks{}}
|
||||||
newNotebooks.NotebookId = each.NotebookId
|
newNotebooks.NotebookId = each.NotebookId
|
||||||
newNotebooks.Title = each.Title;
|
newNotebooks.Title = each.Title
|
||||||
// newNotebooks.Title = html.EscapeString(each.Title)
|
// newNotebooks.Title = html.EscapeString(each.Title)
|
||||||
newNotebooks.Title = strings.Replace(strings.Replace(each.Title, "<script>", "", -1), "</script", "", -1)
|
newNotebooks.Title = strings.Replace(strings.Replace(each.Title, "<script>", "", -1), "</script", "", -1)
|
||||||
newNotebooks.Seq = each.Seq
|
newNotebooks.Seq = each.Seq
|
||||||
@@ -116,9 +116,9 @@ func (this *NotebookService) GetNotebookByUserIdAndUrlTitle(userId, notebookIdOr
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 同步的方法
|
// 同步的方法
|
||||||
func (this *NotebookService) GeSyncNotebooks(userId string, afterUsn, maxEntry int) ([]info.Notebook) {
|
func (this *NotebookService) GeSyncNotebooks(userId string, afterUsn, maxEntry int) []info.Notebook {
|
||||||
notebooks := []info.Notebook{}
|
notebooks := []info.Notebook{}
|
||||||
q := db.Notebooks.Find(bson.M{"UserId": bson.ObjectIdHex(userId), "Usn": bson.M{"$gt": afterUsn}});
|
q := db.Notebooks.Find(bson.M{"UserId": bson.ObjectIdHex(userId), "Usn": bson.M{"$gt": afterUsn}})
|
||||||
q.Sort("Usn").Limit(maxEntry).All(¬ebooks)
|
q.Sort("Usn").Limit(maxEntry).All(¬ebooks)
|
||||||
return notebooks
|
return notebooks
|
||||||
}
|
}
|
||||||
@@ -169,6 +169,7 @@ func (this *NotebookService) AddNotebook(notebook info.Notebook) (bool, info.Not
|
|||||||
}
|
}
|
||||||
return true, notebook
|
return true, notebook
|
||||||
}
|
}
|
||||||
|
|
||||||
// 更新笔记, api
|
// 更新笔记, api
|
||||||
func (this *NotebookService) UpdateNotebookApi(userId, notebookId, title, parentNotebookId string, seq, usn int) (bool, string, info.Notebook) {
|
func (this *NotebookService) UpdateNotebookApi(userId, notebookId, title, parentNotebookId string, seq, usn int) (bool, string, info.Notebook) {
|
||||||
if notebookId == "" {
|
if notebookId == "" {
|
||||||
@@ -183,16 +184,16 @@ func (this *NotebookService) UpdateNotebookApi(userId, notebookId, title, parent
|
|||||||
} else if notebook.Usn != usn {
|
} else if notebook.Usn != usn {
|
||||||
return false, "conflict", notebook
|
return false, "conflict", notebook
|
||||||
}
|
}
|
||||||
notebook.Usn = userService.IncrUsn(userId);
|
notebook.Usn = userService.IncrUsn(userId)
|
||||||
notebook.Title = title;
|
notebook.Title = title
|
||||||
|
|
||||||
updates := bson.M{"Title": title, "Usn": notebook.Usn, "Seq": seq, "UpdatedTime": time.Now()};
|
updates := bson.M{"Title": title, "Usn": notebook.Usn, "Seq": seq, "UpdatedTime": time.Now()}
|
||||||
if(parentNotebookId != "" && bson.IsObjectIdHex(parentNotebookId)) {
|
if parentNotebookId != "" && bson.IsObjectIdHex(parentNotebookId) {
|
||||||
updates["ParentNotebookId"] = bson.ObjectIdHex(parentNotebookId);
|
updates["ParentNotebookId"] = bson.ObjectIdHex(parentNotebookId)
|
||||||
} else {
|
} else {
|
||||||
updates["ParentNotebookId"] = "";
|
updates["ParentNotebookId"] = ""
|
||||||
}
|
}
|
||||||
ok := db.UpdateByIdAndUserIdMap(db.Notebooks, notebookId, userId, updates);
|
ok := db.UpdateByIdAndUserIdMap(db.Notebooks, notebookId, userId, updates)
|
||||||
if ok {
|
if ok {
|
||||||
return ok, "", this.GetNotebookById(notebookId)
|
return ok, "", this.GetNotebookById(notebookId)
|
||||||
}
|
}
|
||||||
@@ -202,7 +203,7 @@ func (this *NotebookService) UpdateNotebookApi(userId, notebookId, title, parent
|
|||||||
// 判断是否是blog
|
// 判断是否是blog
|
||||||
func (this *NotebookService) IsBlog(notebookId string) bool {
|
func (this *NotebookService) IsBlog(notebookId string) bool {
|
||||||
notebook := info.Notebook{}
|
notebook := info.Notebook{}
|
||||||
db.GetByQWithFields(db.Notebooks, bson.M{"_id": bson.ObjectIdHex(notebookId)}, []string{"IsBlog"}, ¬ebook);
|
db.GetByQWithFields(db.Notebooks, bson.M{"_id": bson.ObjectIdHex(notebookId)}, []string{"IsBlog"}, ¬ebook)
|
||||||
return notebook.IsBlog
|
return notebook.IsBlog
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -228,13 +229,13 @@ func (this *NotebookService) UpdateNotebookTitle(notebookId, userId, title strin
|
|||||||
|
|
||||||
// 更新notebook
|
// 更新notebook
|
||||||
func (this *NotebookService) UpdateNotebook(userId, notebookId string, needUpdate bson.M) bool {
|
func (this *NotebookService) UpdateNotebook(userId, notebookId string, needUpdate bson.M) bool {
|
||||||
needUpdate["UpdatedTime"] = time.Now();
|
needUpdate["UpdatedTime"] = time.Now()
|
||||||
needUpdate["Usn"] = userService.IncrUsn(userId)
|
needUpdate["Usn"] = userService.IncrUsn(userId)
|
||||||
return db.UpdateByIdAndUserIdMap(db.Notebooks, notebookId, userId, needUpdate)
|
return db.UpdateByIdAndUserIdMap(db.Notebooks, notebookId, userId, needUpdate)
|
||||||
}
|
}
|
||||||
|
|
||||||
// ToBlog or Not
|
// ToBlog or Not
|
||||||
func (this *NotebookService) ToBlog(userId, notebookId string, isBlog bool) (bool) {
|
func (this *NotebookService) ToBlog(userId, notebookId string, isBlog bool) bool {
|
||||||
updates := bson.M{"IsBlog": isBlog, "Usn": userService.IncrUsn(userId)}
|
updates := bson.M{"IsBlog": isBlog, "Usn": userService.IncrUsn(userId)}
|
||||||
// 笔记本
|
// 笔记本
|
||||||
db.UpdateByIdAndUserIdMap(db.Notebooks, notebookId, userId, updates)
|
db.UpdateByIdAndUserIdMap(db.Notebooks, notebookId, userId, updates)
|
||||||
@@ -329,10 +330,10 @@ func (this *NotebookService) SortNotebooks(userId string, notebookId2Seqs map[st
|
|||||||
func (this *NotebookService) DragNotebooks(userId string, curNotebookId string, parentNotebookId string, siblings []string) bool {
|
func (this *NotebookService) DragNotebooks(userId string, curNotebookId string, parentNotebookId string, siblings []string) bool {
|
||||||
ok := false
|
ok := false
|
||||||
// 如果没parentNotebookId, 则parentNotebookId设空
|
// 如果没parentNotebookId, 则parentNotebookId设空
|
||||||
if(parentNotebookId == "") {
|
if parentNotebookId == "" {
|
||||||
ok = db.UpdateByIdAndUserIdMap(db.Notebooks, curNotebookId, userId, bson.M{"ParentNotebookId": "", "Usn": userService.IncrUsn(userId)});
|
ok = db.UpdateByIdAndUserIdMap(db.Notebooks, curNotebookId, userId, bson.M{"ParentNotebookId": "", "Usn": userService.IncrUsn(userId)})
|
||||||
} else {
|
} else {
|
||||||
ok = db.UpdateByIdAndUserIdMap(db.Notebooks, curNotebookId, userId, bson.M{"ParentNotebookId": bson.ObjectIdHex(parentNotebookId), "Usn": userService.IncrUsn(userId)});
|
ok = db.UpdateByIdAndUserIdMap(db.Notebooks, curNotebookId, userId, bson.M{"ParentNotebookId": bson.ObjectIdHex(parentNotebookId), "Usn": userService.IncrUsn(userId)})
|
||||||
}
|
}
|
||||||
|
|
||||||
if !ok {
|
if !ok {
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
package service
|
package service
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"gopkg.in/mgo.v2/bson"
|
|
||||||
"github.com/leanote/leanote/app/db"
|
"github.com/leanote/leanote/app/db"
|
||||||
"github.com/leanote/leanote/app/info"
|
"github.com/leanote/leanote/app/info"
|
||||||
. "github.com/leanote/leanote/app/lea"
|
. "github.com/leanote/leanote/app/lea"
|
||||||
|
"gopkg.in/mgo.v2/bson"
|
||||||
)
|
)
|
||||||
|
|
||||||
// 找回密码
|
// 找回密码
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
package service
|
package service
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/leanote/leanote/app/info"
|
|
||||||
"github.com/leanote/leanote/app/db"
|
"github.com/leanote/leanote/app/db"
|
||||||
|
"github.com/leanote/leanote/app/info"
|
||||||
. "github.com/leanote/leanote/app/lea"
|
. "github.com/leanote/leanote/app/lea"
|
||||||
"gopkg.in/mgo.v2/bson"
|
"gopkg.in/mgo.v2/bson"
|
||||||
"time"
|
"time"
|
||||||
@@ -17,6 +17,7 @@ func (this *SessionService) Update(sessionId, key string, value interface{}) boo
|
|||||||
return db.UpdateByQMap(db.Sessions, bson.M{"SessionId": sessionId},
|
return db.UpdateByQMap(db.Sessions, bson.M{"SessionId": sessionId},
|
||||||
bson.M{key: value, "UpdatedTime": time.Now()})
|
bson.M{key: value, "UpdatedTime": time.Now()})
|
||||||
}
|
}
|
||||||
|
|
||||||
// 注销时清空session
|
// 注销时清空session
|
||||||
func (this *SessionService) Clear(sessionId string) bool {
|
func (this *SessionService) Clear(sessionId string) bool {
|
||||||
return db.Delete(db.Sessions, bson.M{"SessionId": sessionId})
|
return db.Delete(db.Sessions, bson.M{"SessionId": sessionId})
|
||||||
@@ -45,10 +46,12 @@ func (this *SessionService) LoginTimesIsOver(sessionId string) bool {
|
|||||||
session := this.Get(sessionId)
|
session := this.Get(sessionId)
|
||||||
return session.LoginTimes > 5
|
return session.LoginTimes > 5
|
||||||
}
|
}
|
||||||
|
|
||||||
// 登录成功后清空错误次数
|
// 登录成功后清空错误次数
|
||||||
func (this *SessionService) ClearLoginTimes(sessionId string) bool {
|
func (this *SessionService) ClearLoginTimes(sessionId string) bool {
|
||||||
return this.Update(sessionId, "LoginTimes", 0)
|
return this.Update(sessionId, "LoginTimes", 0)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 增加错误次数
|
// 增加错误次数
|
||||||
func (this *SessionService) IncrLoginTimes(sessionId string) bool {
|
func (this *SessionService) IncrLoginTimes(sessionId string) bool {
|
||||||
session := this.Get(sessionId)
|
session := this.Get(sessionId)
|
||||||
|
|||||||
+44
-43
@@ -1,12 +1,12 @@
|
|||||||
package service
|
package service
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/leanote/leanote/app/info"
|
|
||||||
"github.com/leanote/leanote/app/db"
|
"github.com/leanote/leanote/app/db"
|
||||||
|
"github.com/leanote/leanote/app/info"
|
||||||
. "github.com/leanote/leanote/app/lea"
|
. "github.com/leanote/leanote/app/lea"
|
||||||
"gopkg.in/mgo.v2/bson"
|
"gopkg.in/mgo.v2/bson"
|
||||||
"time"
|
|
||||||
"sort"
|
"sort"
|
||||||
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
// 共享Notebook, Note服务
|
// 共享Notebook, Note服务
|
||||||
@@ -45,7 +45,7 @@ func (this *ShareService) getOrQ(userId string) bson.M {
|
|||||||
// 不是trash的
|
// 不是trash的
|
||||||
q["$or"] = orQ
|
q["$or"] = orQ
|
||||||
} else {
|
} else {
|
||||||
q["ToUserId"] = bson.ObjectIdHex(userId);
|
q["ToUserId"] = bson.ObjectIdHex(userId)
|
||||||
}
|
}
|
||||||
return q
|
return q
|
||||||
}
|
}
|
||||||
@@ -68,12 +68,12 @@ func (this *ShareService) GetShareNotebooks(userId string) (info.ShareNotebooksB
|
|||||||
|
|
||||||
userIds := append(userIds1, userIds2...)
|
userIds := append(userIds1, userIds2...)
|
||||||
|
|
||||||
userInfos := userService.GetUserInfosOrderBySeq(userIds);
|
userInfos := userService.GetUserInfosOrderBySeq(userIds)
|
||||||
// 不要我的id
|
// 不要我的id
|
||||||
for i, userInfo := range userInfos {
|
for i, userInfo := range userInfos {
|
||||||
if userInfo.UserId.Hex() == myUserId {
|
if userInfo.UserId.Hex() == myUserId {
|
||||||
userInfos = append(userInfos[:i], userInfos[i+1:]...)
|
userInfos = append(userInfos[:i], userInfos[i+1:]...)
|
||||||
break;
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -115,7 +115,7 @@ func (this *ShareService) GetShareNotebooks(userId string) (info.ShareNotebooksB
|
|||||||
userId := eachSub.Notebook.UserId
|
userId := eachSub.Notebook.UserId
|
||||||
// 我自己的, 算了
|
// 我自己的, 算了
|
||||||
if userId.Hex() == myUserId {
|
if userId.Hex() == myUserId {
|
||||||
continue;
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
if _, ok := shareNotebooksByUsersMap[userId]; ok {
|
if _, ok := shareNotebooksByUsersMap[userId]; ok {
|
||||||
@@ -124,7 +124,7 @@ func (this *ShareService) GetShareNotebooks(userId string) (info.ShareNotebooksB
|
|||||||
shareNotebooksByUsersMap[userId] = []info.ShareNotebooks{eachSub}
|
shareNotebooksByUsersMap[userId] = []info.ShareNotebooks{eachSub}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
shareNotebooksByUser := info.ShareNotebooksByUser{};
|
shareNotebooksByUser := info.ShareNotebooksByUser{}
|
||||||
for userId, eachShareNotebooks := range shareNotebooksByUsersMap {
|
for userId, eachShareNotebooks := range shareNotebooksByUsersMap {
|
||||||
// 4, 按用户排序
|
// 4, 按用户排序
|
||||||
shareNotebooksByUser[userId.Hex()] = sortSubShareNotebooks(eachShareNotebooks)
|
shareNotebooksByUser[userId.Hex()] = sortSubShareNotebooks(eachShareNotebooks)
|
||||||
@@ -173,11 +173,11 @@ func (this *ShareService) parseToSubShareNotebooks(subNotebooks *info.SubNoteboo
|
|||||||
|
|
||||||
// 得到共享笔记本下的notes
|
// 得到共享笔记本下的notes
|
||||||
func (this *ShareService) ListShareNotesByNotebookId(notebookId, myUserId, sharedUserId string,
|
func (this *ShareService) ListShareNotesByNotebookId(notebookId, myUserId, sharedUserId string,
|
||||||
page, pageSize int, sortField string, isAsc bool) ([]info.ShareNoteWithPerm) {
|
page, pageSize int, sortField string, isAsc bool) []info.ShareNoteWithPerm {
|
||||||
// 1 首先判断是否真的sharedUserId 共享了 notebookId 给 myUserId
|
// 1 首先判断是否真的sharedUserId 共享了 notebookId 给 myUserId
|
||||||
q := this.getOrQ(myUserId)
|
q := this.getOrQ(myUserId)
|
||||||
q["NotebookId"] = bson.ObjectIdHex(notebookId);
|
q["NotebookId"] = bson.ObjectIdHex(notebookId)
|
||||||
q["UserId"] = bson.ObjectIdHex(sharedUserId);
|
q["UserId"] = bson.ObjectIdHex(sharedUserId)
|
||||||
shareNotebook := info.ShareNotebook{}
|
shareNotebook := info.ShareNotebook{}
|
||||||
db.GetByQ(db.ShareNotebooks,
|
db.GetByQ(db.ShareNotebooks,
|
||||||
q,
|
q,
|
||||||
@@ -190,7 +190,7 @@ func (this *ShareService) ListShareNotesByNotebookId(notebookId, myUserId, share
|
|||||||
perm := shareNotebook.Perm
|
perm := shareNotebook.Perm
|
||||||
|
|
||||||
// 2 得到该notebook下分页显示所有的notes
|
// 2 得到该notebook下分页显示所有的notes
|
||||||
_, notes := noteService.ListNotes(sharedUserId, notebookId, false, page, pageSize, sortField, isAsc, false);
|
_, notes := noteService.ListNotes(sharedUserId, notebookId, false, page, pageSize, sortField, isAsc, false)
|
||||||
|
|
||||||
// 3 添加权限信息
|
// 3 添加权限信息
|
||||||
// 3.1 如果该notebook自己有其它权限信息, 比如1, 那么覆盖notebook的权限信息
|
// 3.1 如果该notebook自己有其它权限信息, 比如1, 那么覆盖notebook的权限信息
|
||||||
@@ -210,12 +210,12 @@ func (this *ShareService) ListShareNotesByNotebookId(notebookId, myUserId, share
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
Log("笔记权限")
|
Log("笔记权限")
|
||||||
LogJ(notePerms);
|
LogJ(notePerms)
|
||||||
|
|
||||||
// 3.2 组合
|
// 3.2 组合
|
||||||
notesWithPerm := make([]info.ShareNoteWithPerm, len(notes))
|
notesWithPerm := make([]info.ShareNoteWithPerm, len(notes))
|
||||||
for i, each := range notes {
|
for i, each := range notes {
|
||||||
thisPerm := perm;
|
thisPerm := perm
|
||||||
if selfPerm, ok := notePerms[each.NoteId]; ok {
|
if selfPerm, ok := notePerms[each.NoteId]; ok {
|
||||||
thisPerm = selfPerm
|
thisPerm = selfPerm
|
||||||
}
|
}
|
||||||
@@ -247,13 +247,13 @@ func (this *ShareService) ListShareNotesByNotebookId(notebookId, myUserId, share
|
|||||||
// 可以这样! 到时将零散的共享noteId放在用户基本数据中
|
// 可以这样! 到时将零散的共享noteId放在用户基本数据中
|
||||||
// 这里不好排序
|
// 这里不好排序
|
||||||
func (this *ShareService) ListShareNotes(myUserId, sharedUserId string,
|
func (this *ShareService) ListShareNotes(myUserId, sharedUserId string,
|
||||||
pageNumber, pageSize int, sortField string, isAsc bool) ([]info.ShareNoteWithPerm) {
|
pageNumber, pageSize int, sortField string, isAsc bool) []info.ShareNoteWithPerm {
|
||||||
|
|
||||||
skipNum, _ := parsePageAndSort(pageNumber, pageSize, sortField, isAsc)
|
skipNum, _ := parsePageAndSort(pageNumber, pageSize, sortField, isAsc)
|
||||||
shareNotes := []info.ShareNote{}
|
shareNotes := []info.ShareNote{}
|
||||||
|
|
||||||
q := this.getOrQ(myUserId)
|
q := this.getOrQ(myUserId)
|
||||||
q["UserId"] = bson.ObjectIdHex(sharedUserId);
|
q["UserId"] = bson.ObjectIdHex(sharedUserId)
|
||||||
|
|
||||||
db.ShareNotes.
|
db.ShareNotes.
|
||||||
Find(q).
|
Find(q).
|
||||||
@@ -297,7 +297,7 @@ func (this *ShareService) notes2NotesWithPerm(notes []info.Note) {
|
|||||||
// [ok]
|
// [ok]
|
||||||
func (this *ShareService) AddShareNotebook1(shareNotebook info.ShareNotebook) bool {
|
func (this *ShareService) AddShareNotebook1(shareNotebook info.ShareNotebook) bool {
|
||||||
// 添加一条记录说明两者存在关系
|
// 添加一条记录说明两者存在关系
|
||||||
this.AddHasShareNote(shareNotebook.UserId.Hex(), shareNotebook.ToUserId.Hex());
|
this.AddHasShareNote(shareNotebook.UserId.Hex(), shareNotebook.ToUserId.Hex())
|
||||||
|
|
||||||
shareNotebook.CreatedTime = time.Now()
|
shareNotebook.CreatedTime = time.Now()
|
||||||
return db.Insert(db.ShareNotebooks, shareNotebook)
|
return db.Insert(db.ShareNotebooks, shareNotebook)
|
||||||
@@ -316,13 +316,13 @@ func (this *ShareService) AddShareNotebook(notebookId string, perm int, userId,
|
|||||||
// 第三方注册时没有email
|
// 第三方注册时没有email
|
||||||
func (this *ShareService) AddShareNotebookToUserId(notebookId string, perm int, userId, toUserId string) (bool, string, string) {
|
func (this *ShareService) AddShareNotebookToUserId(notebookId string, perm int, userId, toUserId string) (bool, string, string) {
|
||||||
// 添加一条记录说明两者存在关系
|
// 添加一条记录说明两者存在关系
|
||||||
this.AddHasShareNote(userId, toUserId);
|
this.AddHasShareNote(userId, toUserId)
|
||||||
|
|
||||||
// 先删除之
|
// 先删除之
|
||||||
db.Delete(db.ShareNotebooks, bson.M{"NotebookId": bson.ObjectIdHex(notebookId),
|
db.Delete(db.ShareNotebooks, bson.M{"NotebookId": bson.ObjectIdHex(notebookId),
|
||||||
"UserId": bson.ObjectIdHex(userId),
|
"UserId": bson.ObjectIdHex(userId),
|
||||||
"ToUserId": bson.ObjectIdHex(toUserId),
|
"ToUserId": bson.ObjectIdHex(toUserId),
|
||||||
});
|
})
|
||||||
|
|
||||||
shareNotebook := info.ShareNotebook{NotebookId: bson.ObjectIdHex(notebookId),
|
shareNotebook := info.ShareNotebook{NotebookId: bson.ObjectIdHex(notebookId),
|
||||||
UserId: bson.ObjectIdHex(userId),
|
UserId: bson.ObjectIdHex(userId),
|
||||||
@@ -353,13 +353,13 @@ func (this *ShareService) AddShareNote(noteId string, perm int, userId, email st
|
|||||||
// 第三方测试没有userId
|
// 第三方测试没有userId
|
||||||
func (this *ShareService) AddShareNoteToUserId(noteId string, perm int, userId, toUserId string) (bool, string, string) {
|
func (this *ShareService) AddShareNoteToUserId(noteId string, perm int, userId, toUserId string) (bool, string, string) {
|
||||||
// 添加一条记录说明两者存在关系
|
// 添加一条记录说明两者存在关系
|
||||||
this.AddHasShareNote(userId, toUserId);
|
this.AddHasShareNote(userId, toUserId)
|
||||||
|
|
||||||
// 先删除之
|
// 先删除之
|
||||||
db.Delete(db.ShareNotes, bson.M{"NoteId": bson.ObjectIdHex(noteId),
|
db.Delete(db.ShareNotes, bson.M{"NoteId": bson.ObjectIdHex(noteId),
|
||||||
"UserId": bson.ObjectIdHex(userId),
|
"UserId": bson.ObjectIdHex(userId),
|
||||||
"ToUserId": bson.ObjectIdHex(toUserId),
|
"ToUserId": bson.ObjectIdHex(toUserId),
|
||||||
});
|
})
|
||||||
|
|
||||||
shareNote := info.ShareNote{NoteId: bson.ObjectIdHex(noteId),
|
shareNote := info.ShareNote{NoteId: bson.ObjectIdHex(noteId),
|
||||||
UserId: bson.ObjectIdHex(userId),
|
UserId: bson.ObjectIdHex(userId),
|
||||||
@@ -370,7 +370,6 @@ func (this *ShareService) AddShareNoteToUserId(noteId string, perm int, userId,
|
|||||||
return db.Insert(db.ShareNotes, shareNote), "", toUserId
|
return db.Insert(db.ShareNotes, shareNote), "", toUserId
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// updatedUserId是否有查看userId noteId的权限?
|
// updatedUserId是否有查看userId noteId的权限?
|
||||||
// userId是所有者
|
// userId是所有者
|
||||||
func (this *ShareService) HasReadPerm(userId, updatedUserId, noteId string) bool {
|
func (this *ShareService) HasReadPerm(userId, updatedUserId, noteId string) bool {
|
||||||
@@ -443,13 +442,14 @@ func (this *ShareService) HasUpdateNotebookPerm(userId, updatedUserId, notebookI
|
|||||||
// 共享note, notebook时使用
|
// 共享note, notebook时使用
|
||||||
func (this *ShareService) AddHasShareNote(userId, toUserId string) bool {
|
func (this *ShareService) AddHasShareNote(userId, toUserId string) bool {
|
||||||
db.Insert(db.HasShareNotes, info.HasShareNote{UserId: bson.ObjectIdHex(userId), ToUserId: bson.ObjectIdHex(toUserId)})
|
db.Insert(db.HasShareNotes, info.HasShareNote{UserId: bson.ObjectIdHex(userId), ToUserId: bson.ObjectIdHex(toUserId)})
|
||||||
return true;
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
// userId是否被共享了noteId
|
// userId是否被共享了noteId
|
||||||
func (this *ShareService) HasSharedNote(noteId, myUserId string) bool {
|
func (this *ShareService) HasSharedNote(noteId, myUserId string) bool {
|
||||||
return db.Has(db.ShareNotes, bson.M{"ToUserId": bson.ObjectIdHex(myUserId), "NoteId": bson.ObjectIdHex(noteId)})
|
return db.Has(db.ShareNotes, bson.M{"ToUserId": bson.ObjectIdHex(myUserId), "NoteId": bson.ObjectIdHex(noteId)})
|
||||||
}
|
}
|
||||||
|
|
||||||
// noteId的notebook是否共享了给我
|
// noteId的notebook是否共享了给我
|
||||||
func (this *ShareService) HasSharedNotebook(noteId, myUserId, sharedUserId string) bool {
|
func (this *ShareService) HasSharedNotebook(noteId, myUserId, sharedUserId string) bool {
|
||||||
notebookId := noteService.GetNotebookId(noteId)
|
notebookId := noteService.GetNotebookId(noteId)
|
||||||
@@ -591,7 +591,6 @@ func (this *ShareService) ListNotebookShareUserInfo(notebookId, userId string) [
|
|||||||
return shareUserInfos
|
return shareUserInfos
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//----------------
|
//----------------
|
||||||
// 改变note share权限
|
// 改变note share权限
|
||||||
func (this *ShareService) UpdateShareNotePerm(noteId string, perm int, userId, toUserId string) bool {
|
func (this *ShareService) UpdateShareNotePerm(noteId string, perm int, userId, toUserId string) bool {
|
||||||
@@ -622,6 +621,7 @@ func (this *ShareService) DeleteShareNoteAll(noteId string, userId string) bool
|
|||||||
return db.DeleteAll(db.ShareNotes,
|
return db.DeleteAll(db.ShareNotes,
|
||||||
bson.M{"NoteId": bson.ObjectIdHex(noteId), "UserId": bson.ObjectIdHex(userId)})
|
bson.M{"NoteId": bson.ObjectIdHex(noteId), "UserId": bson.ObjectIdHex(userId)})
|
||||||
}
|
}
|
||||||
|
|
||||||
// 删除share notebook
|
// 删除share notebook
|
||||||
func (this *ShareService) DeleteShareNotebook(notebookId string, userId, toUserId string) bool {
|
func (this *ShareService) DeleteShareNotebook(notebookId string, userId, toUserId string) bool {
|
||||||
return db.DeleteAll(db.ShareNotebooks,
|
return db.DeleteAll(db.ShareNotebooks,
|
||||||
@@ -631,9 +631,9 @@ func (this *ShareService) DeleteShareNotebook(notebookId string, userId, toUserI
|
|||||||
// 删除userId分享给toUserId的所有
|
// 删除userId分享给toUserId的所有
|
||||||
func (this *ShareService) DeleteUserShareNoteAndNotebook(userId, toUserId string) bool {
|
func (this *ShareService) DeleteUserShareNoteAndNotebook(userId, toUserId string) bool {
|
||||||
query := bson.M{"UserId": bson.ObjectIdHex(userId), "ToUserId": bson.ObjectIdHex(toUserId)}
|
query := bson.M{"UserId": bson.ObjectIdHex(userId), "ToUserId": bson.ObjectIdHex(toUserId)}
|
||||||
db.DeleteAll(db.ShareNotebooks, query);
|
db.DeleteAll(db.ShareNotebooks, query)
|
||||||
db.DeleteAll(db.ShareNotes, query);
|
db.DeleteAll(db.ShareNotes, query)
|
||||||
db.DeleteAll(db.HasShareNotes, query);
|
db.DeleteAll(db.HasShareNotes, query)
|
||||||
|
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
@@ -641,10 +641,10 @@ func (this *ShareService) DeleteUserShareNoteAndNotebook(userId, toUserId string
|
|||||||
// 用户userId是否有修改noteId的权限
|
// 用户userId是否有修改noteId的权限
|
||||||
func (this *ShareService) HasUpdateNotePerm(noteId, userId string) bool {
|
func (this *ShareService) HasUpdateNotePerm(noteId, userId string) bool {
|
||||||
if noteId == "" || userId == "" {
|
if noteId == "" || userId == "" {
|
||||||
return false;
|
return false
|
||||||
}
|
}
|
||||||
note := noteService.GetNoteById(noteId)
|
note := noteService.GetNoteById(noteId)
|
||||||
LogJ(note);
|
LogJ(note)
|
||||||
if note.UserId != "" {
|
if note.UserId != "" {
|
||||||
noteUserId := note.UserId.Hex()
|
noteUserId := note.UserId.Hex()
|
||||||
if noteUserId != userId {
|
if noteUserId != userId {
|
||||||
@@ -652,20 +652,20 @@ func (this *ShareService) HasUpdateNotePerm(noteId, userId string) bool {
|
|||||||
if this.HasUpdatePerm(noteUserId, userId, noteId) {
|
if this.HasUpdatePerm(noteUserId, userId, noteId) {
|
||||||
return true
|
return true
|
||||||
} else {
|
} else {
|
||||||
return false;
|
return false
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
return false;
|
return false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 用户userId是否有查看noteId的权限
|
// 用户userId是否有查看noteId的权限
|
||||||
func (this *ShareService) HasReadNotePerm(noteId, userId string) bool {
|
func (this *ShareService) HasReadNotePerm(noteId, userId string) bool {
|
||||||
if noteId == "" || userId == "" {
|
if noteId == "" || userId == "" {
|
||||||
return false;
|
return false
|
||||||
}
|
}
|
||||||
note := noteService.GetNoteById(noteId)
|
note := noteService.GetNoteById(noteId)
|
||||||
if note.UserId != "" {
|
if note.UserId != "" {
|
||||||
@@ -675,13 +675,13 @@ func (this *ShareService) HasReadNotePerm(noteId, userId string) bool {
|
|||||||
if this.HasReadPerm(noteUserId, userId, noteId) {
|
if this.HasReadPerm(noteUserId, userId, noteId) {
|
||||||
return true
|
return true
|
||||||
} else {
|
} else {
|
||||||
return false;
|
return false
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
return false;
|
return false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -708,7 +708,7 @@ func (this *ShareService) GetNoteShareGroups(noteId, userId string) []info.Share
|
|||||||
if !ok {
|
if !ok {
|
||||||
share = info.ShareNote{}
|
share = info.ShareNote{}
|
||||||
}
|
}
|
||||||
share.ToGroup = group;
|
share.ToGroup = group
|
||||||
shares2[i] = share
|
shares2[i] = share
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -716,7 +716,7 @@ func (this *ShareService) GetNoteShareGroups(noteId, userId string) []info.Share
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 共享笔记给分组
|
// 共享笔记给分组
|
||||||
func (this *ShareService) AddShareNoteGroup(userId, noteId, groupId string, perm int) (bool) {
|
func (this *ShareService) AddShareNoteGroup(userId, noteId, groupId string, perm int) bool {
|
||||||
if !groupService.IsExistsGroupUser(userId, groupId) {
|
if !groupService.IsExistsGroupUser(userId, groupId) {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
@@ -738,7 +738,7 @@ func (this *ShareService) DeleteShareNoteGroup(userId, noteId, groupId string) b
|
|||||||
return db.Delete(db.ShareNotes, bson.M{"NoteId": bson.ObjectIdHex(noteId),
|
return db.Delete(db.ShareNotes, bson.M{"NoteId": bson.ObjectIdHex(noteId),
|
||||||
"UserId": bson.ObjectIdHex(userId),
|
"UserId": bson.ObjectIdHex(userId),
|
||||||
"ToGroupId": bson.ObjectIdHex(groupId),
|
"ToGroupId": bson.ObjectIdHex(groupId),
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
//-------
|
//-------
|
||||||
@@ -764,14 +764,15 @@ func (this *ShareService) GetNotebookShareGroups(notebookId, userId string) []in
|
|||||||
if !ok {
|
if !ok {
|
||||||
share = info.ShareNotebook{}
|
share = info.ShareNotebook{}
|
||||||
}
|
}
|
||||||
share.ToGroup = group;
|
share.ToGroup = group
|
||||||
shares2[i] = share
|
shares2[i] = share
|
||||||
}
|
}
|
||||||
|
|
||||||
return shares2
|
return shares2
|
||||||
}
|
}
|
||||||
|
|
||||||
// 共享笔记给分组
|
// 共享笔记给分组
|
||||||
func (this *ShareService) AddShareNotebookGroup(userId, notebookId, groupId string, perm int) (bool) {
|
func (this *ShareService) AddShareNotebookGroup(userId, notebookId, groupId string, perm int) bool {
|
||||||
if !groupService.IsExistsGroupUser(userId, groupId) {
|
if !groupService.IsExistsGroupUser(userId, groupId) {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
@@ -793,7 +794,7 @@ func (this *ShareService) DeleteShareNotebookGroup(userId, notebookId, groupId s
|
|||||||
return db.Delete(db.ShareNotebooks, bson.M{"NotebookId": bson.ObjectIdHex(notebookId),
|
return db.Delete(db.ShareNotebooks, bson.M{"NotebookId": bson.ObjectIdHex(notebookId),
|
||||||
"UserId": bson.ObjectIdHex(userId),
|
"UserId": bson.ObjectIdHex(userId),
|
||||||
"ToGroupId": bson.ObjectIdHex(groupId),
|
"ToGroupId": bson.ObjectIdHex(groupId),
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------
|
//--------------------
|
||||||
@@ -803,12 +804,12 @@ func (this *ShareService) DeleteShareNotebookGroup(userId, notebookId, groupId s
|
|||||||
func (this *ShareService) DeleteAllShareNotebookGroup(groupId string) bool {
|
func (this *ShareService) DeleteAllShareNotebookGroup(groupId string) bool {
|
||||||
return db.Delete(db.ShareNotebooks, bson.M{
|
return db.Delete(db.ShareNotebooks, bson.M{
|
||||||
"ToGroupId": bson.ObjectIdHex(groupId),
|
"ToGroupId": bson.ObjectIdHex(groupId),
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
func (this *ShareService) DeleteAllShareNoteGroup(groupId string) bool {
|
func (this *ShareService) DeleteAllShareNoteGroup(groupId string) bool {
|
||||||
return db.Delete(db.ShareNotes, bson.M{
|
return db.Delete(db.ShareNotes, bson.M{
|
||||||
"ToGroupId": bson.ObjectIdHex(groupId),
|
"ToGroupId": bson.ObjectIdHex(groupId),
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------
|
//--------------------
|
||||||
@@ -819,12 +820,12 @@ func (this *ShareService) DeleteShareNotebookGroupWhenDeleteGroupUser(userId, gr
|
|||||||
return db.Delete(db.ShareNotebooks, bson.M{
|
return db.Delete(db.ShareNotebooks, bson.M{
|
||||||
"UserId": bson.ObjectIdHex(userId),
|
"UserId": bson.ObjectIdHex(userId),
|
||||||
"ToGroupId": bson.ObjectIdHex(groupId),
|
"ToGroupId": bson.ObjectIdHex(groupId),
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func (this *ShareService) DeleteShareNoteGroupWhenDeleteGroupUser(userId, groupId string) bool {
|
func (this *ShareService) DeleteShareNoteGroupWhenDeleteGroupUser(userId, groupId string) bool {
|
||||||
return db.Delete(db.ShareNotes, bson.M{
|
return db.Delete(db.ShareNotes, bson.M{
|
||||||
"UserId": bson.ObjectIdHex(userId),
|
"UserId": bson.ObjectIdHex(userId),
|
||||||
"ToGroupId": bson.ObjectIdHex(groupId),
|
"ToGroupId": bson.ObjectIdHex(groupId),
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
package service
|
package service
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/leanote/leanote/app/info"
|
|
||||||
"github.com/leanote/leanote/app/db"
|
"github.com/leanote/leanote/app/db"
|
||||||
|
"github.com/leanote/leanote/app/info"
|
||||||
// . "github.com/leanote/leanote/app/lea"
|
// . "github.com/leanote/leanote/app/lea"
|
||||||
"gopkg.in/mgo.v2/bson"
|
"gopkg.in/mgo.v2/bson"
|
||||||
// "time"
|
// "time"
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
package service
|
package service
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/leanote/leanote/app/info"
|
|
||||||
"github.com/leanote/leanote/app/db"
|
"github.com/leanote/leanote/app/db"
|
||||||
|
"github.com/leanote/leanote/app/info"
|
||||||
// . "github.com/leanote/leanote/app/lea"
|
// . "github.com/leanote/leanote/app/lea"
|
||||||
"gopkg.in/mgo.v2/bson"
|
"gopkg.in/mgo.v2/bson"
|
||||||
"time"
|
"time"
|
||||||
@@ -83,7 +83,7 @@ func (this *TagService) AddOrUpdateTag(userId string, tag string) info.NoteTag {
|
|||||||
func (this *TagService) GetTags(userId string) []info.NoteTag {
|
func (this *TagService) GetTags(userId string) []info.NoteTag {
|
||||||
tags := []info.NoteTag{}
|
tags := []info.NoteTag{}
|
||||||
query := bson.M{"UserId": bson.ObjectIdHex(userId), "IsDeleted": false}
|
query := bson.M{"UserId": bson.ObjectIdHex(userId), "IsDeleted": false}
|
||||||
q := db.NoteTags.Find(query);
|
q := db.NoteTags.Find(query)
|
||||||
sortFieldR := "-UpdatedTime"
|
sortFieldR := "-UpdatedTime"
|
||||||
q.Sort(sortFieldR).All(&tags)
|
q.Sort(sortFieldR).All(&tags)
|
||||||
return tags
|
return tags
|
||||||
@@ -95,7 +95,7 @@ func (this *TagService) GetTags(userId string) []info.NoteTag {
|
|||||||
func (this *TagService) DeleteTag(userId string, tag string) map[string]int {
|
func (this *TagService) DeleteTag(userId string, tag string) map[string]int {
|
||||||
usn := userService.IncrUsn(userId)
|
usn := userService.IncrUsn(userId)
|
||||||
if db.UpdateByQMap(db.NoteTags, bson.M{"UserId": bson.ObjectIdHex(userId), "Tag": tag}, bson.M{"Usn": usn, "IsDeleted": true}) {
|
if db.UpdateByQMap(db.NoteTags, bson.M{"UserId": bson.ObjectIdHex(userId), "Tag": tag}, bson.M{"Usn": usn, "IsDeleted": true}) {
|
||||||
return noteService.UpdateNoteToDeleteTag(userId, tag);
|
return noteService.UpdateNoteToDeleteTag(userId, tag)
|
||||||
}
|
}
|
||||||
return map[string]int{}
|
return map[string]int{}
|
||||||
}
|
}
|
||||||
@@ -124,14 +124,14 @@ func (this *TagService) reCountTagCount(userId string, tags []string) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
for _, tag := range tags {
|
for _, tag := range tags {
|
||||||
this.AddOrUpdateTag(userId, tag);
|
this.AddOrUpdateTag(userId, tag)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 同步用
|
// 同步用
|
||||||
func (this *TagService) GeSyncTags(userId string, afterUsn, maxEntry int) ([]info.NoteTag) {
|
func (this *TagService) GeSyncTags(userId string, afterUsn, maxEntry int) []info.NoteTag {
|
||||||
noteTags := []info.NoteTag{}
|
noteTags := []info.NoteTag{}
|
||||||
q := db.NoteTags.Find(bson.M{"UserId": bson.ObjectIdHex(userId), "Usn": bson.M{"$gt": afterUsn}});
|
q := db.NoteTags.Find(bson.M{"UserId": bson.ObjectIdHex(userId), "Usn": bson.M{"$gt": afterUsn}})
|
||||||
q.Sort("Usn").Limit(maxEntry).All(¬eTags)
|
q.Sort("Usn").Limit(maxEntry).All(¬eTags)
|
||||||
return noteTags
|
return noteTags
|
||||||
}
|
}
|
||||||
+27
-24
@@ -1,20 +1,20 @@
|
|||||||
package service
|
package service
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/revel/revel"
|
"encoding/json"
|
||||||
"github.com/leanote/leanote/app/info"
|
"fmt"
|
||||||
"github.com/leanote/leanote/app/db"
|
"github.com/leanote/leanote/app/db"
|
||||||
|
"github.com/leanote/leanote/app/info"
|
||||||
. "github.com/leanote/leanote/app/lea"
|
. "github.com/leanote/leanote/app/lea"
|
||||||
"github.com/leanote/leanote/app/lea/archive"
|
"github.com/leanote/leanote/app/lea/archive"
|
||||||
|
"github.com/revel/revel"
|
||||||
"gopkg.in/mgo.v2/bson"
|
"gopkg.in/mgo.v2/bson"
|
||||||
"time"
|
|
||||||
"strings"
|
|
||||||
"os"
|
|
||||||
"fmt"
|
|
||||||
"html/template"
|
"html/template"
|
||||||
"regexp"
|
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"encoding/json"
|
"os"
|
||||||
|
"regexp"
|
||||||
|
"strings"
|
||||||
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
// 主题
|
// 主题
|
||||||
@@ -29,6 +29,7 @@ var fixedStyle = "blog_left_fixed"
|
|||||||
func (this *ThemeService) getDefaultThemeBasePath() string {
|
func (this *ThemeService) getDefaultThemeBasePath() string {
|
||||||
return revel.BasePath + "/public/blog/themes"
|
return revel.BasePath + "/public/blog/themes"
|
||||||
}
|
}
|
||||||
|
|
||||||
// 默认主题路径
|
// 默认主题路径
|
||||||
func (this *ThemeService) getDefaultThemePath(style string) string {
|
func (this *ThemeService) getDefaultThemePath(style string) string {
|
||||||
if style == elegantStyle {
|
if style == elegantStyle {
|
||||||
@@ -39,6 +40,7 @@ func (this *ThemeService) getDefaultThemePath(style string) string {
|
|||||||
return this.getDefaultThemeBasePath() + "/default"
|
return this.getDefaultThemeBasePath() + "/default"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// blogService用
|
// blogService用
|
||||||
func (this *ThemeService) GetDefaultThemePath(style string) string {
|
func (this *ThemeService) GetDefaultThemePath(style string) string {
|
||||||
if style == elegantStyle {
|
if style == elegantStyle {
|
||||||
@@ -141,7 +143,7 @@ func (this *ThemeService) NewTheme(userId string) (ok bool, themeId string) {
|
|||||||
themeService.NewThemeForFirst(userBlog)
|
themeService.NewThemeForFirst(userBlog)
|
||||||
}
|
}
|
||||||
// 再copy一个默认主题
|
// 再copy一个默认主题
|
||||||
userBlog.Style = "defaultStyle";
|
userBlog.Style = "defaultStyle"
|
||||||
ok, themeId = this.CopyDefaultTheme(userBlog)
|
ok, themeId = this.CopyDefaultTheme(userBlog)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -227,7 +229,7 @@ func (this *ThemeService) GetUserThemes(userId string) (theme info.Theme, themes
|
|||||||
|
|
||||||
// 创建时间逆序
|
// 创建时间逆序
|
||||||
query := bson.M{"UserId": bson.ObjectIdHex(userId)}
|
query := bson.M{"UserId": bson.ObjectIdHex(userId)}
|
||||||
q := db.Themes.Find(query);
|
q := db.Themes.Find(query)
|
||||||
q.Sort("-CreatedTime").All(&themes)
|
q.Sort("-CreatedTime").All(&themes)
|
||||||
if len(themes) == 0 {
|
if len(themes) == 0 {
|
||||||
userBlog := blogService.GetUserBlog(userId)
|
userBlog := blogService.GetUserBlog(userId)
|
||||||
@@ -285,6 +287,7 @@ func (this *ThemeService) GetThemePath(userId, themeId string) string {
|
|||||||
}
|
}
|
||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
|
|
||||||
// 更新模板内容
|
// 更新模板内容
|
||||||
func (this *ThemeService) UpdateTplContent(userId, themeId, filename, content string) (ok bool, msg string) {
|
func (this *ThemeService) UpdateTplContent(userId, themeId, filename, content string) (ok bool, msg string) {
|
||||||
basePath := this.GetThemeAbsolutePath(userId, themeId)
|
basePath := this.GetThemeAbsolutePath(userId, themeId)
|
||||||
@@ -375,7 +378,6 @@ func (this *ThemeService) PublicTheme(userId, themeId string) (ok bool) {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// 导出主题
|
// 导出主题
|
||||||
func (this *ThemeService) ExportTheme(userId, themeId string) (ok bool, path string) {
|
func (this *ThemeService) ExportTheme(userId, themeId string) (ok bool, path string) {
|
||||||
theme := this.GetThemeById(themeId)
|
theme := this.GetThemeById(themeId)
|
||||||
@@ -406,6 +408,7 @@ func (this *ThemeService) ExportTheme(userId, themeId string) (ok bool, path str
|
|||||||
|
|
||||||
return true, targetName
|
return true, targetName
|
||||||
}
|
}
|
||||||
|
|
||||||
// 导入主题
|
// 导入主题
|
||||||
// path == /llllllll/..../public/upload/.../aa.zip, 绝对路径
|
// path == /llllllll/..../public/upload/.../aa.zip, 绝对路径
|
||||||
func (this *ThemeService) ImportTheme(userId, path string) (ok bool, msg string) {
|
func (this *ThemeService) ImportTheme(userId, path string) (ok bool, msg string) {
|
||||||
@@ -525,7 +528,7 @@ func (this *ThemeService) InstallTheme(userId, themeId string) (ok bool) {
|
|||||||
ok = db.Insert(db.Themes, theme)
|
ok = db.Insert(db.Themes, theme)
|
||||||
|
|
||||||
// 激活之
|
// 激活之
|
||||||
this.ActiveTheme(userId, themeId);
|
this.ActiveTheme(userId, themeId)
|
||||||
|
|
||||||
return ok
|
return ok
|
||||||
}
|
}
|
||||||
@@ -538,10 +541,10 @@ func (this *ThemeService) ValidateTheme(path string, filename, newContent string
|
|||||||
// 建立一个有向图
|
// 建立一个有向图
|
||||||
// 将该path下的所有文件提出, 得到文件的引用情况
|
// 将该path下的所有文件提出, 得到文件的引用情况
|
||||||
files := ListDir(path)
|
files := ListDir(path)
|
||||||
LogJ(files);
|
LogJ(files)
|
||||||
size := len(files)
|
size := len(files)
|
||||||
if(size > 100) {
|
if size > 100 {
|
||||||
ok = false;
|
ok = false
|
||||||
msg = "tooManyFiles"
|
msg = "tooManyFiles"
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -559,7 +562,7 @@ func (this *ThemeService) ValidateTheme(path string, filename, newContent string
|
|||||||
// 得到文件内容, 和建立索引, 每个文件都有一个index, 对应数组位置
|
// 得到文件内容, 和建立索引, 每个文件都有一个index, 对应数组位置
|
||||||
for _, t := range files {
|
for _, t := range files {
|
||||||
if !strings.Contains(t, ".html") {
|
if !strings.Contains(t, ".html") {
|
||||||
continue;
|
continue
|
||||||
}
|
}
|
||||||
if t != filename {
|
if t != filename {
|
||||||
fileBytes, err := ioutil.ReadFile(path + "/" + t)
|
fileBytes, err := ioutil.ReadFile(path + "/" + t)
|
||||||
@@ -567,7 +570,7 @@ func (this *ThemeService) ValidateTheme(path string, filename, newContent string
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
fileIndexMap[t] = index;
|
fileIndexMap[t] = index
|
||||||
// html内容
|
// html内容
|
||||||
fileStr := string(fileBytes)
|
fileStr := string(fileBytes)
|
||||||
fileContent[t] = fileStr
|
fileContent[t] = fileStr
|
||||||
@@ -607,7 +610,7 @@ func (this *ThemeService) ValidateTheme(path string, filename, newContent string
|
|||||||
} else {
|
} else {
|
||||||
ok = true
|
ok = true
|
||||||
}
|
}
|
||||||
return;
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// 检测有向图是否有环, DFS
|
// 检测有向图是否有环, DFS
|
||||||
@@ -616,8 +619,8 @@ func (this *ThemeService) hasRound(vector [][]int, size int) (ok bool) {
|
|||||||
visited := make([]int, size)
|
visited := make([]int, size)
|
||||||
if this.hasRoundEach(vector, i, size, visited) {
|
if this.hasRoundEach(vector, i, size, visited) {
|
||||||
Log(">>")
|
Log(">>")
|
||||||
Log(i);
|
Log(i)
|
||||||
return true;
|
return true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false
|
return false
|
||||||
@@ -630,13 +633,13 @@ func (this *ThemeService) hasRoundEach(vector [][]int, index int, size int, visi
|
|||||||
Log(index)
|
Log(index)
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
visited[index] = 1;
|
visited[index] = 1
|
||||||
// 遍历它的孩子
|
// 遍历它的孩子
|
||||||
for i := 0; i < size; i++ {
|
for i := 0; i < size; i++ {
|
||||||
if vector[index][i] > 0 {
|
if vector[index][i] > 0 {
|
||||||
return this.hasRoundEach(vector, i, size, visited);
|
return this.hasRoundEach(vector, i, size, visited)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
visited[index] = 0;
|
visited[index] = 0
|
||||||
return false;
|
return false
|
||||||
}
|
}
|
||||||
@@ -1,10 +1,10 @@
|
|||||||
package service
|
package service
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"gopkg.in/mgo.v2/bson"
|
|
||||||
"github.com/leanote/leanote/app/db"
|
"github.com/leanote/leanote/app/db"
|
||||||
"github.com/leanote/leanote/app/info"
|
"github.com/leanote/leanote/app/info"
|
||||||
. "github.com/leanote/leanote/app/lea"
|
. "github.com/leanote/leanote/app/lea"
|
||||||
|
"gopkg.in/mgo.v2/bson"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
package service
|
package service
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"gopkg.in/mgo.v2/bson"
|
|
||||||
"github.com/leanote/leanote/app/db"
|
"github.com/leanote/leanote/app/db"
|
||||||
"github.com/leanote/leanote/app/info"
|
"github.com/leanote/leanote/app/info"
|
||||||
|
"gopkg.in/mgo.v2/bson"
|
||||||
)
|
)
|
||||||
|
|
||||||
// 回收站
|
// 回收站
|
||||||
@@ -25,9 +25,9 @@ type TrashService struct {
|
|||||||
// 应该放在回收站里
|
// 应该放在回收站里
|
||||||
// 有trashService
|
// 有trashService
|
||||||
func (this *TrashService) DeleteNote(noteId, userId string) bool {
|
func (this *TrashService) DeleteNote(noteId, userId string) bool {
|
||||||
note := noteService.GetNote(noteId, userId);
|
note := noteService.GetNote(noteId, userId)
|
||||||
// 如果是垃圾, 则彻底删除
|
// 如果是垃圾, 则彻底删除
|
||||||
if (note.IsTrash) {
|
if note.IsTrash {
|
||||||
return this.DeleteTrash(noteId, userId)
|
return this.DeleteTrash(noteId, userId)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -63,12 +63,12 @@ func (this *TrashService) recoverNote(noteId, notebookId, userId string) bool {
|
|||||||
bson.M{"$set": bson.M{"IsTrash": false,
|
bson.M{"$set": bson.M{"IsTrash": false,
|
||||||
"Usn": userService.IncrUsn(userId),
|
"Usn": userService.IncrUsn(userId),
|
||||||
"NotebookId": bson.ObjectIdHex(notebookId)}})
|
"NotebookId": bson.ObjectIdHex(notebookId)}})
|
||||||
return re;
|
return re
|
||||||
}
|
}
|
||||||
|
|
||||||
// 删除trash
|
// 删除trash
|
||||||
func (this *TrashService) DeleteTrash(noteId, userId string) bool {
|
func (this *TrashService) DeleteTrash(noteId, userId string) bool {
|
||||||
note := noteService.GetNote(noteId, userId);
|
note := noteService.GetNote(noteId, userId)
|
||||||
if note.NoteId == "" {
|
if note.NoteId == "" {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,14 +1,13 @@
|
|||||||
package service
|
package service
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"github.com/leanote/leanote/app/db"
|
||||||
"github.com/leanote/leanote/app/info"
|
"github.com/leanote/leanote/app/info"
|
||||||
. "github.com/leanote/leanote/app/lea"
|
. "github.com/leanote/leanote/app/lea"
|
||||||
"github.com/leanote/leanote/app/db"
|
|
||||||
"gopkg.in/mgo.v2/bson"
|
"gopkg.in/mgo.v2/bson"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
type UpgradeService struct {
|
type UpgradeService struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -164,17 +163,17 @@ func (this *UpgradeService) Api(userId string) (ok bool, msg string) {
|
|||||||
|
|
||||||
// notebook
|
// notebook
|
||||||
db.UpdateByQField(db.Notebooks, bson.M{}, "IsDeleted", false)
|
db.UpdateByQField(db.Notebooks, bson.M{}, "IsDeleted", false)
|
||||||
this.setNotebookUsn();
|
this.setNotebookUsn()
|
||||||
|
|
||||||
// note
|
// note
|
||||||
// 1-N
|
// 1-N
|
||||||
db.UpdateByQField(db.Notes, bson.M{}, "IsDeleted", false)
|
db.UpdateByQField(db.Notes, bson.M{}, "IsDeleted", false)
|
||||||
this.setNoteUsn();
|
this.setNoteUsn()
|
||||||
|
|
||||||
// tag
|
// tag
|
||||||
// 1-N
|
// 1-N
|
||||||
/// tag, 要重新插入, 将之前的Tag表迁移到NoteTag中
|
/// tag, 要重新插入, 将之前的Tag表迁移到NoteTag中
|
||||||
this.moveTag();
|
this.moveTag()
|
||||||
|
|
||||||
configService.UpdateGlobalStringConfig(userId, "UpgradeBetaToBeta4", "1")
|
configService.UpdateGlobalStringConfig(userId, "UpgradeBetaToBeta4", "1")
|
||||||
|
|
||||||
|
|||||||
+19
-14
@@ -1,12 +1,12 @@
|
|||||||
package service
|
package service
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/leanote/leanote/app/info"
|
|
||||||
"github.com/leanote/leanote/app/db"
|
"github.com/leanote/leanote/app/db"
|
||||||
|
"github.com/leanote/leanote/app/info"
|
||||||
. "github.com/leanote/leanote/app/lea"
|
. "github.com/leanote/leanote/app/lea"
|
||||||
"gopkg.in/mgo.v2/bson"
|
"gopkg.in/mgo.v2/bson"
|
||||||
"time"
|
|
||||||
"strings"
|
"strings"
|
||||||
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
type UserService struct {
|
type UserService struct {
|
||||||
@@ -47,8 +47,8 @@ func (this *UserService) AddUser(user info.User) bool {
|
|||||||
go func() {
|
go func() {
|
||||||
emailService.RegisterSendActiveEmail(user, user.Email)
|
emailService.RegisterSendActiveEmail(user, user.Email)
|
||||||
// 发送给我 life@leanote.com
|
// 发送给我 life@leanote.com
|
||||||
emailService.SendEmail("life@leanote.com", "新增用户", "{header}用户名" + user.Email + "{footer}");
|
emailService.SendEmail("life@leanote.com", "新增用户", "{header}用户名"+user.Email+"{footer}")
|
||||||
}();
|
}()
|
||||||
}
|
}
|
||||||
|
|
||||||
return db.Insert(db.Users, user)
|
return db.Insert(db.Users, user)
|
||||||
@@ -129,6 +129,7 @@ func (this *UserService) GetUserInfo(userId string) info.User {
|
|||||||
this.setUserLogo(&user)
|
this.setUserLogo(&user)
|
||||||
return user
|
return user
|
||||||
}
|
}
|
||||||
|
|
||||||
// 得到用户信息 email
|
// 得到用户信息 email
|
||||||
func (this *UserService) GetUserInfoByEmail(email string) info.User {
|
func (this *UserService) GetUserInfoByEmail(email string) info.User {
|
||||||
user := info.User{}
|
user := info.User{}
|
||||||
@@ -137,6 +138,7 @@ func (this *UserService) GetUserInfoByEmail(email string) info.User {
|
|||||||
this.setUserLogo(&user)
|
this.setUserLogo(&user)
|
||||||
return user
|
return user
|
||||||
}
|
}
|
||||||
|
|
||||||
// 得到用户信息 username
|
// 得到用户信息 username
|
||||||
func (this *UserService) GetUserInfoByUsername(username string) info.User {
|
func (this *UserService) GetUserInfoByUsername(username string) info.User {
|
||||||
user := info.User{}
|
user := info.User{}
|
||||||
@@ -163,6 +165,7 @@ func (this *UserService) ListUserInfosByEmails(emails []string) []info.User {
|
|||||||
db.ListByQ(db.Users, bson.M{"Email": bson.M{"$in": emails}}, &users)
|
db.ListByQ(db.Users, bson.M{"Email": bson.M{"$in": emails}}, &users)
|
||||||
return users
|
return users
|
||||||
}
|
}
|
||||||
|
|
||||||
// 用户信息即可
|
// 用户信息即可
|
||||||
func (this *UserService) MapUserInfoByUserIds(userIds []bson.ObjectId) map[bson.ObjectId]info.User {
|
func (this *UserService) MapUserInfoByUserIds(userIds []bson.ObjectId) map[bson.ObjectId]info.User {
|
||||||
users := []info.User{}
|
users := []info.User{}
|
||||||
@@ -175,6 +178,7 @@ func (this *UserService) MapUserInfoByUserIds(userIds []bson.ObjectId) map[bson.
|
|||||||
}
|
}
|
||||||
return userMap
|
return userMap
|
||||||
}
|
}
|
||||||
|
|
||||||
// 用户信息和博客设置信息
|
// 用户信息和博客设置信息
|
||||||
func (this *UserService) MapUserInfoAndBlogInfosByUserIds(userIds []bson.ObjectId) map[bson.ObjectId]info.User {
|
func (this *UserService) MapUserInfoAndBlogInfosByUserIds(userIds []bson.ObjectId) map[bson.ObjectId]info.User {
|
||||||
return this.MapUserInfoByUserIds(userIds)
|
return this.MapUserInfoByUserIds(userIds)
|
||||||
@@ -249,7 +253,7 @@ func (this *UserService) GetUserAndBlog(userId string) info.UserAndBlog {
|
|||||||
// 通过ids得到users, 按id的顺序组织users
|
// 通过ids得到users, 按id的顺序组织users
|
||||||
func (this *UserService) GetUserInfosOrderBySeq(userIds []bson.ObjectId) []info.User {
|
func (this *UserService) GetUserInfosOrderBySeq(userIds []bson.ObjectId) []info.User {
|
||||||
users := []info.User{}
|
users := []info.User{}
|
||||||
db.ListByQ(db.Users, bson.M{"_id": bson.M{"$in": userIds}}, &users);
|
db.ListByQ(db.Users, bson.M{"_id": bson.M{"$in": userIds}}, &users)
|
||||||
|
|
||||||
usersMap := map[bson.ObjectId]info.User{}
|
usersMap := map[bson.ObjectId]info.User{}
|
||||||
for _, user := range users {
|
for _, user := range users {
|
||||||
@@ -257,7 +261,7 @@ func (this *UserService) GetUserInfosOrderBySeq(userIds []bson.ObjectId) []info.
|
|||||||
}
|
}
|
||||||
|
|
||||||
hasAppend := map[bson.ObjectId]bool{} // 为了防止userIds有重复的
|
hasAppend := map[bson.ObjectId]bool{} // 为了防止userIds有重复的
|
||||||
users2 := []info.User{};
|
users2 := []info.User{}
|
||||||
for _, userId := range userIds {
|
for _, userId := range userIds {
|
||||||
if user, ok := usersMap[userId]; ok && !hasAppend[userId] {
|
if user, ok := usersMap[userId]; ok && !hasAppend[userId] {
|
||||||
hasAppend[userId] = true
|
hasAppend[userId] = true
|
||||||
@@ -300,7 +304,7 @@ func (this *UserService) UpdateUsername(userId, username string) (bool, string)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 修改头像
|
// 修改头像
|
||||||
func (this *UserService) UpdateAvatar(userId, avatarPath string) (bool) {
|
func (this *UserService) UpdateAvatar(userId, avatarPath string) bool {
|
||||||
userIdO := bson.ObjectIdHex(userId)
|
userIdO := bson.ObjectIdHex(userId)
|
||||||
return db.UpdateByQField(db.Users, bson.M{"_id": userIdO}, "Logo", avatarPath)
|
return db.UpdateByQField(db.Users, bson.M{"_id": userIdO}, "Logo", avatarPath)
|
||||||
}
|
}
|
||||||
@@ -337,7 +341,7 @@ func (this *UserService) ResetPwd(adminUserId, userId, pwd string) (ok bool, msg
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 修改主题
|
// 修改主题
|
||||||
func (this *UserService) UpdateTheme(userId, theme string) (bool) {
|
func (this *UserService) UpdateTheme(userId, theme string) bool {
|
||||||
ok := db.UpdateByQField(db.Users, bson.M{"_id": bson.ObjectIdHex(userId)}, "Theme", theme)
|
ok := db.UpdateByQField(db.Users, bson.M{"_id": bson.ObjectIdHex(userId)}, "Theme", theme)
|
||||||
return ok
|
return ok
|
||||||
}
|
}
|
||||||
@@ -436,6 +440,7 @@ func (this *UserService)UpdateColumnWidth(userId string, notebookWidth, noteList
|
|||||||
return db.UpdateByQMap(db.Users, bson.M{"_id": bson.ObjectIdHex(userId)},
|
return db.UpdateByQMap(db.Users, bson.M{"_id": bson.ObjectIdHex(userId)},
|
||||||
bson.M{"NotebookWidth": notebookWidth, "NoteListWidth": noteListWidth, "MdEditorWidth": mdEditorWidth})
|
bson.M{"NotebookWidth": notebookWidth, "NoteListWidth": noteListWidth, "MdEditorWidth": mdEditorWidth})
|
||||||
}
|
}
|
||||||
|
|
||||||
// 左侧是否隐藏
|
// 左侧是否隐藏
|
||||||
func (this *UserService) UpdateLeftIsMin(userId string, leftIsMin bool) bool {
|
func (this *UserService) UpdateLeftIsMin(userId string, leftIsMin bool) bool {
|
||||||
return db.UpdateByQMap(db.Users, bson.M{"_id": bson.ObjectIdHex(userId)}, bson.M{"LeftIsMin": leftIsMin})
|
return db.UpdateByQMap(db.Users, bson.M{"_id": bson.ObjectIdHex(userId)}, bson.M{"LeftIsMin": leftIsMin})
|
||||||
@@ -454,7 +459,7 @@ func (this *UserService) ListUsers(pageNumber, pageSize int, sortField string, i
|
|||||||
}
|
}
|
||||||
query["$or"] = orQ
|
query["$or"] = orQ
|
||||||
}
|
}
|
||||||
q := db.Users.Find(query);
|
q := db.Users.Find(query)
|
||||||
// 总记录数
|
// 总记录数
|
||||||
count, _ := q.Count()
|
count, _ := q.Count()
|
||||||
// 列表
|
// 列表
|
||||||
@@ -479,9 +484,9 @@ func (this *UserService) GetAllUserByFilter(userFilterEmail, userFilterWhiteList
|
|||||||
bson.M{"Username": bson.M{"$regex": bson.RegEx{".*?" + userFilterEmail + ".*", "i"}}},
|
bson.M{"Username": bson.M{"$regex": bson.RegEx{".*?" + userFilterEmail + ".*", "i"}}},
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
if(userFilterWhiteList != "") {
|
if userFilterWhiteList != "" {
|
||||||
userFilterWhiteList = strings.Replace(userFilterWhiteList, "\r", "", -1)
|
userFilterWhiteList = strings.Replace(userFilterWhiteList, "\r", "", -1)
|
||||||
emails := strings.Split(userFilterWhiteList, "\n");
|
emails := strings.Split(userFilterWhiteList, "\n")
|
||||||
orQ = append(orQ, bson.M{"Email": bson.M{"$in": emails}})
|
orQ = append(orQ, bson.M{"Email": bson.M{"$in": emails}})
|
||||||
}
|
}
|
||||||
if len(orQ) > 0 {
|
if len(orQ) > 0 {
|
||||||
@@ -489,16 +494,16 @@ func (this *UserService) GetAllUserByFilter(userFilterEmail, userFilterWhiteList
|
|||||||
}
|
}
|
||||||
|
|
||||||
emailQ := bson.M{}
|
emailQ := bson.M{}
|
||||||
if(userFilterBlackList != "") {
|
if userFilterBlackList != "" {
|
||||||
userFilterWhiteList = strings.Replace(userFilterBlackList, "\r", "", -1)
|
userFilterWhiteList = strings.Replace(userFilterBlackList, "\r", "", -1)
|
||||||
bEmails := strings.Split(userFilterBlackList, "\n");
|
bEmails := strings.Split(userFilterBlackList, "\n")
|
||||||
emailQ["$nin"] = bEmails
|
emailQ["$nin"] = bEmails
|
||||||
query["Email"] = emailQ
|
query["Email"] = emailQ
|
||||||
}
|
}
|
||||||
|
|
||||||
LogJ(query)
|
LogJ(query)
|
||||||
users := []info.User{}
|
users := []info.User{}
|
||||||
q := db.Users.Find(query);
|
q := db.Users.Find(query)
|
||||||
q.All(&users)
|
q.All(&users)
|
||||||
Log(len(users))
|
Log(len(users))
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
package service
|
package service
|
||||||
|
|
||||||
import (
|
import ()
|
||||||
)
|
|
||||||
|
|
||||||
// service 通用方法
|
// service 通用方法
|
||||||
|
|
||||||
|
|||||||
+5
-5
@@ -1,13 +1,13 @@
|
|||||||
package service
|
package service
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"regexp"
|
|
||||||
"strings"
|
|
||||||
"net/url"
|
|
||||||
"strconv"
|
|
||||||
"gopkg.in/mgo.v2"
|
|
||||||
"github.com/leanote/leanote/app/db"
|
"github.com/leanote/leanote/app/db"
|
||||||
|
"gopkg.in/mgo.v2"
|
||||||
"gopkg.in/mgo.v2/bson"
|
"gopkg.in/mgo.v2/bson"
|
||||||
|
"net/url"
|
||||||
|
"regexp"
|
||||||
|
"strconv"
|
||||||
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
// init service, for share service bettween services
|
// init service, for share service bettween services
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
package tests
|
package tests
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"testing"
|
|
||||||
"github.com/leanote/leanote/app/db"
|
"github.com/leanote/leanote/app/db"
|
||||||
|
"testing"
|
||||||
// . "github.com/leanote/leanote/app/lea"
|
// . "github.com/leanote/leanote/app/lea"
|
||||||
"github.com/leanote/leanote/app/service"
|
"github.com/leanote/leanote/app/service"
|
||||||
// "gopkg.in/mgo.v2"
|
// "gopkg.in/mgo.v2"
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
package tests
|
package tests
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"testing"
|
|
||||||
"github.com/leanote/leanote/app/db"
|
"github.com/leanote/leanote/app/db"
|
||||||
|
"testing"
|
||||||
// . "github.com/leanote/leanote/app/lea"
|
// . "github.com/leanote/leanote/app/lea"
|
||||||
// "github.com/leanote/leanote/app/service"
|
// "github.com/leanote/leanote/app/service"
|
||||||
// "gopkg.in/mgo.v2"
|
// "gopkg.in/mgo.v2"
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
package tests
|
package tests
|
||||||
|
|
||||||
func a() {
|
func a() {
|
||||||
}
|
}
|
||||||
Reference in new issue
Block a user