From 7a1a0921f502e4daeb509b89bd9f9de92d55a6fb Mon Sep 17 00:00:00 2001 From: life Date: Wed, 7 May 2014 16:44:44 +0800 Subject: [PATCH] style --- .project | 2 +- app/routes/routes.go | 470 +++++++++++++++--------------- app/tmp/main.go | 382 ++++++++++++------------ bin/leanote-mac | Bin 11258864 -> 11258864 bytes public/css/blog/blog_daqi.less | 2 +- public/css/blog/blog_default.less | 2 +- public/css/blog/blog_default2.css | 197 ------------- public/css/bootstrap.css | 29 +- 8 files changed, 431 insertions(+), 653 deletions(-) delete mode 100644 public/css/blog/blog_default2.css diff --git a/.project b/.project index 1fb066d..94ff2e0 100644 --- a/.project +++ b/.project @@ -1,6 +1,6 @@ - leanote-leanote + leanote-public leanote, your own cloud note! diff --git a/app/routes/routes.go b/app/routes/routes.go index 315e5ab..8bd4db2 100644 --- a/app/routes/routes.go +++ b/app/routes/routes.go @@ -75,82 +75,241 @@ func (_ tStatic) ServeModule( } -type tFile struct {} -var File tFile +type tAuth struct {} +var Auth tAuth -func (_ tFile) UploadImage( - renderHtml string, +func (_ tAuth) Login( + email string, ) string { args := make(map[string]string) - revel.Unbind(args, "renderHtml", renderHtml) - return revel.MainRouter.Reverse("File.UploadImage", args).Url + revel.Unbind(args, "email", email) + return revel.MainRouter.Reverse("Auth.Login", args).Url } -func (_ tFile) UploadBlogLogo( +func (_ tAuth) DoLogin( + email string, + pwd string, ) string { args := make(map[string]string) - return revel.MainRouter.Reverse("File.UploadBlogLogo", args).Url + revel.Unbind(args, "email", email) + revel.Unbind(args, "pwd", pwd) + return revel.MainRouter.Reverse("Auth.DoLogin", args).Url } -func (_ tFile) UploadImageJson( - renderHtml string, +func (_ tAuth) Logout( ) string { args := make(map[string]string) - revel.Unbind(args, "renderHtml", renderHtml) - return revel.MainRouter.Reverse("File.UploadImageJson", args).Url + return revel.MainRouter.Reverse("Auth.Logout", args).Url } - -type tNotebook struct {} -var Notebook tNotebook - - -func (_ tNotebook) Index( - notebook interface{}, - i int, - name string, +func (_ tAuth) Demo( ) string { args := make(map[string]string) - revel.Unbind(args, "notebook", notebook) - revel.Unbind(args, "i", i) - revel.Unbind(args, "name", name) - return revel.MainRouter.Reverse("Notebook.Index", args).Url + return revel.MainRouter.Reverse("Auth.Demo", args).Url } -func (_ tNotebook) DeleteNotebook( +func (_ tAuth) Register( + ) string { + args := make(map[string]string) + + return revel.MainRouter.Reverse("Auth.Register", args).Url +} + +func (_ tAuth) DoRegister( + email string, + pwd string, + ) string { + args := make(map[string]string) + + revel.Unbind(args, "email", email) + revel.Unbind(args, "pwd", pwd) + return revel.MainRouter.Reverse("Auth.DoRegister", args).Url +} + +func (_ tAuth) FindPassword( + ) string { + args := make(map[string]string) + + return revel.MainRouter.Reverse("Auth.FindPassword", args).Url +} + +func (_ tAuth) DoFindPassword( + email string, + ) string { + args := make(map[string]string) + + revel.Unbind(args, "email", email) + return revel.MainRouter.Reverse("Auth.DoFindPassword", args).Url +} + +func (_ tAuth) FindPassword2( + token string, + ) string { + args := make(map[string]string) + + revel.Unbind(args, "token", token) + return revel.MainRouter.Reverse("Auth.FindPassword2", args).Url +} + +func (_ tAuth) FindPasswordUpdate( + token string, + pwd string, + ) string { + args := make(map[string]string) + + revel.Unbind(args, "token", token) + revel.Unbind(args, "pwd", pwd) + return revel.MainRouter.Reverse("Auth.FindPasswordUpdate", args).Url +} + + +type tBlog struct {} +var Blog tBlog + + +func (_ tBlog) SetNote2Blog( + noteId string, + isBlog bool, + isTop bool, + ) string { + args := make(map[string]string) + + revel.Unbind(args, "noteId", noteId) + revel.Unbind(args, "isBlog", isBlog) + revel.Unbind(args, "isTop", isTop) + return revel.MainRouter.Reverse("Blog.SetNote2Blog", args).Url +} + +func (_ tBlog) SetNotebook2Blog( notebookId string, + isBlog bool, ) string { args := make(map[string]string) revel.Unbind(args, "notebookId", notebookId) - return revel.MainRouter.Reverse("Notebook.DeleteNotebook", args).Url + revel.Unbind(args, "isBlog", isBlog) + return revel.MainRouter.Reverse("Blog.SetNotebook2Blog", args).Url } -func (_ tNotebook) AddNotebook( +func (_ tBlog) Index( + userId string, notebookId string, - title string, ) string { args := make(map[string]string) + revel.Unbind(args, "userId", userId) revel.Unbind(args, "notebookId", notebookId) - revel.Unbind(args, "title", title) - return revel.MainRouter.Reverse("Notebook.AddNotebook", args).Url + return revel.MainRouter.Reverse("Blog.Index", args).Url } -func (_ tNotebook) UpdateNotebookTitle( - notebookId string, - title string, +func (_ tBlog) View( + noteId string, ) string { args := make(map[string]string) - revel.Unbind(args, "notebookId", notebookId) - revel.Unbind(args, "title", title) - return revel.MainRouter.Reverse("Notebook.UpdateNotebookTitle", args).Url + revel.Unbind(args, "noteId", noteId) + return revel.MainRouter.Reverse("Blog.View", args).Url +} + +func (_ tBlog) SearchBlog( + userId string, + key string, + ) string { + args := make(map[string]string) + + revel.Unbind(args, "userId", userId) + revel.Unbind(args, "key", key) + return revel.MainRouter.Reverse("Blog.SearchBlog", args).Url +} + +func (_ tBlog) Set( + ) string { + args := make(map[string]string) + + return revel.MainRouter.Reverse("Blog.Set", args).Url +} + +func (_ tBlog) SetUserBlogBase( + userBlog interface{}, + ) string { + args := make(map[string]string) + + revel.Unbind(args, "userBlog", userBlog) + return revel.MainRouter.Reverse("Blog.SetUserBlogBase", args).Url +} + +func (_ tBlog) SetUserBlogComment( + userBlog interface{}, + ) string { + args := make(map[string]string) + + revel.Unbind(args, "userBlog", userBlog) + return revel.MainRouter.Reverse("Blog.SetUserBlogComment", args).Url +} + +func (_ tBlog) SetUserBlogStyle( + userBlog interface{}, + ) string { + args := make(map[string]string) + + revel.Unbind(args, "userBlog", userBlog) + return revel.MainRouter.Reverse("Blog.SetUserBlogStyle", args).Url +} + +func (_ tBlog) AboutMe( + userId string, + ) string { + args := make(map[string]string) + + revel.Unbind(args, "userId", userId) + return revel.MainRouter.Reverse("Blog.AboutMe", args).Url +} + + +type tIndex struct {} +var Index tIndex + + +func (_ tIndex) Index( + ) string { + args := make(map[string]string) + + return revel.MainRouter.Reverse("Index.Index", args).Url +} + +func (_ tIndex) Suggestion( + addr string, + suggestion string, + ) string { + args := make(map[string]string) + + revel.Unbind(args, "addr", addr) + revel.Unbind(args, "suggestion", suggestion) + return revel.MainRouter.Reverse("Index.Suggestion", args).Url +} + + +type tMobile struct {} +var Mobile tMobile + + +func (_ tMobile) Index( + ) string { + args := make(map[string]string) + + return revel.MainRouter.Reverse("Mobile.Index", args).Url +} + +func (_ tMobile) Logout( + ) string { + args := make(map[string]string) + + return revel.MainRouter.Reverse("Mobile.Logout", args).Url } @@ -558,241 +717,82 @@ func (_ tUser) UpdateLeftIsMin( } -type tAuth struct {} -var Auth tAuth +type tFile struct {} +var File tFile -func (_ tAuth) Login( - email string, +func (_ tFile) UploadImage( + renderHtml string, ) string { args := make(map[string]string) - revel.Unbind(args, "email", email) - return revel.MainRouter.Reverse("Auth.Login", args).Url + revel.Unbind(args, "renderHtml", renderHtml) + return revel.MainRouter.Reverse("File.UploadImage", args).Url } -func (_ tAuth) DoLogin( - email string, - pwd string, +func (_ tFile) UploadBlogLogo( ) string { args := make(map[string]string) - revel.Unbind(args, "email", email) - revel.Unbind(args, "pwd", pwd) - return revel.MainRouter.Reverse("Auth.DoLogin", args).Url + return revel.MainRouter.Reverse("File.UploadBlogLogo", args).Url } -func (_ tAuth) Logout( +func (_ tFile) UploadImageJson( + renderHtml string, ) string { args := make(map[string]string) - return revel.MainRouter.Reverse("Auth.Logout", args).Url + revel.Unbind(args, "renderHtml", renderHtml) + return revel.MainRouter.Reverse("File.UploadImageJson", args).Url } -func (_ tAuth) Demo( + +type tNotebook struct {} +var Notebook tNotebook + + +func (_ tNotebook) Index( + notebook interface{}, + i int, + name string, ) string { args := make(map[string]string) - return revel.MainRouter.Reverse("Auth.Demo", args).Url + revel.Unbind(args, "notebook", notebook) + revel.Unbind(args, "i", i) + revel.Unbind(args, "name", name) + return revel.MainRouter.Reverse("Notebook.Index", args).Url } -func (_ tAuth) Register( - ) string { - args := make(map[string]string) - - return revel.MainRouter.Reverse("Auth.Register", args).Url -} - -func (_ tAuth) DoRegister( - email string, - pwd string, - ) string { - args := make(map[string]string) - - revel.Unbind(args, "email", email) - revel.Unbind(args, "pwd", pwd) - return revel.MainRouter.Reverse("Auth.DoRegister", args).Url -} - -func (_ tAuth) FindPassword( - ) string { - args := make(map[string]string) - - return revel.MainRouter.Reverse("Auth.FindPassword", args).Url -} - -func (_ tAuth) DoFindPassword( - email string, - ) string { - args := make(map[string]string) - - revel.Unbind(args, "email", email) - return revel.MainRouter.Reverse("Auth.DoFindPassword", args).Url -} - -func (_ tAuth) FindPassword2( - token string, - ) string { - args := make(map[string]string) - - revel.Unbind(args, "token", token) - return revel.MainRouter.Reverse("Auth.FindPassword2", args).Url -} - -func (_ tAuth) FindPasswordUpdate( - token string, - pwd string, - ) string { - args := make(map[string]string) - - revel.Unbind(args, "token", token) - revel.Unbind(args, "pwd", pwd) - return revel.MainRouter.Reverse("Auth.FindPasswordUpdate", args).Url -} - - -type tBlog struct {} -var Blog tBlog - - -func (_ tBlog) SetNote2Blog( - noteId string, - isBlog bool, - isTop bool, - ) string { - args := make(map[string]string) - - revel.Unbind(args, "noteId", noteId) - revel.Unbind(args, "isBlog", isBlog) - revel.Unbind(args, "isTop", isTop) - return revel.MainRouter.Reverse("Blog.SetNote2Blog", args).Url -} - -func (_ tBlog) SetNotebook2Blog( - notebookId string, - isBlog bool, - ) string { - args := make(map[string]string) - - revel.Unbind(args, "notebookId", notebookId) - revel.Unbind(args, "isBlog", isBlog) - return revel.MainRouter.Reverse("Blog.SetNotebook2Blog", args).Url -} - -func (_ tBlog) Index( - userId string, +func (_ tNotebook) DeleteNotebook( notebookId string, ) string { args := make(map[string]string) - revel.Unbind(args, "userId", userId) revel.Unbind(args, "notebookId", notebookId) - return revel.MainRouter.Reverse("Blog.Index", args).Url + return revel.MainRouter.Reverse("Notebook.DeleteNotebook", args).Url } -func (_ tBlog) View( - noteId string, +func (_ tNotebook) AddNotebook( + notebookId string, + title string, ) string { args := make(map[string]string) - revel.Unbind(args, "noteId", noteId) - return revel.MainRouter.Reverse("Blog.View", args).Url + revel.Unbind(args, "notebookId", notebookId) + revel.Unbind(args, "title", title) + return revel.MainRouter.Reverse("Notebook.AddNotebook", args).Url } -func (_ tBlog) SearchBlog( - userId string, - key string, +func (_ tNotebook) UpdateNotebookTitle( + notebookId string, + title string, ) string { args := make(map[string]string) - revel.Unbind(args, "userId", userId) - revel.Unbind(args, "key", key) - return revel.MainRouter.Reverse("Blog.SearchBlog", args).Url -} - -func (_ tBlog) Set( - ) string { - args := make(map[string]string) - - return revel.MainRouter.Reverse("Blog.Set", args).Url -} - -func (_ tBlog) SetUserBlogBase( - userBlog interface{}, - ) string { - args := make(map[string]string) - - revel.Unbind(args, "userBlog", userBlog) - return revel.MainRouter.Reverse("Blog.SetUserBlogBase", args).Url -} - -func (_ tBlog) SetUserBlogComment( - userBlog interface{}, - ) string { - args := make(map[string]string) - - revel.Unbind(args, "userBlog", userBlog) - return revel.MainRouter.Reverse("Blog.SetUserBlogComment", args).Url -} - -func (_ tBlog) SetUserBlogStyle( - userBlog interface{}, - ) string { - args := make(map[string]string) - - revel.Unbind(args, "userBlog", userBlog) - return revel.MainRouter.Reverse("Blog.SetUserBlogStyle", args).Url -} - -func (_ tBlog) AboutMe( - userId string, - ) string { - args := make(map[string]string) - - revel.Unbind(args, "userId", userId) - return revel.MainRouter.Reverse("Blog.AboutMe", args).Url -} - - -type tIndex struct {} -var Index tIndex - - -func (_ tIndex) Index( - ) string { - args := make(map[string]string) - - return revel.MainRouter.Reverse("Index.Index", args).Url -} - -func (_ tIndex) Suggestion( - addr string, - suggestion string, - ) string { - args := make(map[string]string) - - revel.Unbind(args, "addr", addr) - revel.Unbind(args, "suggestion", suggestion) - return revel.MainRouter.Reverse("Index.Suggestion", args).Url -} - - -type tMobile struct {} -var Mobile tMobile - - -func (_ tMobile) Index( - ) string { - args := make(map[string]string) - - return revel.MainRouter.Reverse("Mobile.Index", args).Url -} - -func (_ tMobile) Logout( - ) string { - args := make(map[string]string) - - return revel.MainRouter.Reverse("Mobile.Logout", args).Url + revel.Unbind(args, "notebookId", notebookId) + revel.Unbind(args, "title", title) + return revel.MainRouter.Reverse("Notebook.UpdateNotebookTitle", args).Url } diff --git a/app/tmp/main.go b/app/tmp/main.go index acf941e..a0ea4c0 100644 --- a/app/tmp/main.go +++ b/app/tmp/main.go @@ -102,27 +102,83 @@ func main() { }) - revel.RegisterController((*controllers.File)(nil), + revel.RegisterController((*controllers.Auth)(nil), []*revel.MethodType{ &revel.MethodType{ - Name: "UploadImage", + Name: "Login", Args: []*revel.MethodArg{ - &revel.MethodArg{Name: "renderHtml", Type: reflect.TypeOf((*string)(nil)) }, + &revel.MethodArg{Name: "email", Type: reflect.TypeOf((*string)(nil)) }, }, RenderArgNames: map[int][]string{ }, }, &revel.MethodType{ - Name: "UploadBlogLogo", + Name: "DoLogin", + Args: []*revel.MethodArg{ + &revel.MethodArg{Name: "email", Type: reflect.TypeOf((*string)(nil)) }, + &revel.MethodArg{Name: "pwd", Type: reflect.TypeOf((*string)(nil)) }, + }, + RenderArgNames: map[int][]string{ + }, + }, + &revel.MethodType{ + Name: "Logout", Args: []*revel.MethodArg{ }, RenderArgNames: map[int][]string{ }, }, &revel.MethodType{ - Name: "UploadImageJson", + Name: "Demo", Args: []*revel.MethodArg{ - &revel.MethodArg{Name: "renderHtml", Type: reflect.TypeOf((*string)(nil)) }, + }, + RenderArgNames: map[int][]string{ + }, + }, + &revel.MethodType{ + Name: "Register", + Args: []*revel.MethodArg{ + }, + RenderArgNames: map[int][]string{ + }, + }, + &revel.MethodType{ + Name: "DoRegister", + Args: []*revel.MethodArg{ + &revel.MethodArg{Name: "email", Type: reflect.TypeOf((*string)(nil)) }, + &revel.MethodArg{Name: "pwd", Type: reflect.TypeOf((*string)(nil)) }, + }, + RenderArgNames: map[int][]string{ + }, + }, + &revel.MethodType{ + Name: "FindPassword", + Args: []*revel.MethodArg{ + }, + RenderArgNames: map[int][]string{ + }, + }, + &revel.MethodType{ + Name: "DoFindPassword", + Args: []*revel.MethodArg{ + &revel.MethodArg{Name: "email", Type: reflect.TypeOf((*string)(nil)) }, + }, + RenderArgNames: map[int][]string{ + }, + }, + &revel.MethodType{ + Name: "FindPassword2", + Args: []*revel.MethodArg{ + &revel.MethodArg{Name: "token", Type: reflect.TypeOf((*string)(nil)) }, + }, + RenderArgNames: map[int][]string{ + }, + }, + &revel.MethodType{ + Name: "FindPasswordUpdate", + Args: []*revel.MethodArg{ + &revel.MethodArg{Name: "token", Type: reflect.TypeOf((*string)(nil)) }, + &revel.MethodArg{Name: "pwd", Type: reflect.TypeOf((*string)(nil)) }, }, RenderArgNames: map[int][]string{ }, @@ -130,40 +186,128 @@ func main() { }) - revel.RegisterController((*controllers.Notebook)(nil), + revel.RegisterController((*controllers.Blog)(nil), + []*revel.MethodType{ + &revel.MethodType{ + Name: "SetNote2Blog", + Args: []*revel.MethodArg{ + &revel.MethodArg{Name: "noteId", Type: reflect.TypeOf((*string)(nil)) }, + &revel.MethodArg{Name: "isBlog", Type: reflect.TypeOf((*bool)(nil)) }, + &revel.MethodArg{Name: "isTop", Type: reflect.TypeOf((*bool)(nil)) }, + }, + RenderArgNames: map[int][]string{ + }, + }, + &revel.MethodType{ + Name: "SetNotebook2Blog", + Args: []*revel.MethodArg{ + &revel.MethodArg{Name: "notebookId", Type: reflect.TypeOf((*string)(nil)) }, + &revel.MethodArg{Name: "isBlog", Type: reflect.TypeOf((*bool)(nil)) }, + }, + RenderArgNames: map[int][]string{ + }, + }, + &revel.MethodType{ + Name: "Index", + Args: []*revel.MethodArg{ + &revel.MethodArg{Name: "userId", Type: reflect.TypeOf((*string)(nil)) }, + &revel.MethodArg{Name: "notebookId", Type: reflect.TypeOf((*string)(nil)) }, + }, + RenderArgNames: map[int][]string{ + }, + }, + &revel.MethodType{ + Name: "View", + Args: []*revel.MethodArg{ + &revel.MethodArg{Name: "noteId", Type: reflect.TypeOf((*string)(nil)) }, + }, + RenderArgNames: map[int][]string{ + }, + }, + &revel.MethodType{ + Name: "SearchBlog", + Args: []*revel.MethodArg{ + &revel.MethodArg{Name: "userId", Type: reflect.TypeOf((*string)(nil)) }, + &revel.MethodArg{Name: "key", Type: reflect.TypeOf((*string)(nil)) }, + }, + RenderArgNames: map[int][]string{ + }, + }, + &revel.MethodType{ + Name: "Set", + Args: []*revel.MethodArg{ + }, + RenderArgNames: map[int][]string{ + }, + }, + &revel.MethodType{ + Name: "SetUserBlogBase", + Args: []*revel.MethodArg{ + &revel.MethodArg{Name: "userBlog", Type: reflect.TypeOf((*info.UserBlogBase)(nil)) }, + }, + RenderArgNames: map[int][]string{ + }, + }, + &revel.MethodType{ + Name: "SetUserBlogComment", + Args: []*revel.MethodArg{ + &revel.MethodArg{Name: "userBlog", Type: reflect.TypeOf((*info.UserBlogComment)(nil)) }, + }, + RenderArgNames: map[int][]string{ + }, + }, + &revel.MethodType{ + Name: "SetUserBlogStyle", + Args: []*revel.MethodArg{ + &revel.MethodArg{Name: "userBlog", Type: reflect.TypeOf((*info.UserBlogStyle)(nil)) }, + }, + RenderArgNames: map[int][]string{ + }, + }, + &revel.MethodType{ + Name: "AboutMe", + Args: []*revel.MethodArg{ + &revel.MethodArg{Name: "userId", Type: reflect.TypeOf((*string)(nil)) }, + }, + RenderArgNames: map[int][]string{ + }, + }, + + }) + + revel.RegisterController((*controllers.Index)(nil), []*revel.MethodType{ &revel.MethodType{ Name: "Index", Args: []*revel.MethodArg{ - &revel.MethodArg{Name: "notebook", Type: reflect.TypeOf((*info.Notebook)(nil)) }, - &revel.MethodArg{Name: "i", Type: reflect.TypeOf((*int)(nil)) }, - &revel.MethodArg{Name: "name", Type: reflect.TypeOf((*string)(nil)) }, }, RenderArgNames: map[int][]string{ }, }, &revel.MethodType{ - Name: "DeleteNotebook", + Name: "Suggestion", + Args: []*revel.MethodArg{ + &revel.MethodArg{Name: "addr", Type: reflect.TypeOf((*string)(nil)) }, + &revel.MethodArg{Name: "suggestion", Type: reflect.TypeOf((*string)(nil)) }, + }, + RenderArgNames: map[int][]string{ + }, + }, + + }) + + revel.RegisterController((*controllers.Mobile)(nil), + []*revel.MethodType{ + &revel.MethodType{ + Name: "Index", Args: []*revel.MethodArg{ - &revel.MethodArg{Name: "notebookId", Type: reflect.TypeOf((*string)(nil)) }, }, RenderArgNames: map[int][]string{ }, }, &revel.MethodType{ - Name: "AddNotebook", + Name: "Logout", Args: []*revel.MethodArg{ - &revel.MethodArg{Name: "notebookId", Type: reflect.TypeOf((*string)(nil)) }, - &revel.MethodArg{Name: "title", Type: reflect.TypeOf((*string)(nil)) }, - }, - RenderArgNames: map[int][]string{ - }, - }, - &revel.MethodType{ - Name: "UpdateNotebookTitle", - Args: []*revel.MethodArg{ - &revel.MethodArg{Name: "notebookId", Type: reflect.TypeOf((*string)(nil)) }, - &revel.MethodArg{Name: "title", Type: reflect.TypeOf((*string)(nil)) }, }, RenderArgNames: map[int][]string{ }, @@ -516,83 +660,27 @@ func main() { }) - revel.RegisterController((*controllers.Auth)(nil), + revel.RegisterController((*controllers.File)(nil), []*revel.MethodType{ &revel.MethodType{ - Name: "Login", + Name: "UploadImage", Args: []*revel.MethodArg{ - &revel.MethodArg{Name: "email", Type: reflect.TypeOf((*string)(nil)) }, + &revel.MethodArg{Name: "renderHtml", Type: reflect.TypeOf((*string)(nil)) }, }, RenderArgNames: map[int][]string{ }, }, &revel.MethodType{ - Name: "DoLogin", - Args: []*revel.MethodArg{ - &revel.MethodArg{Name: "email", Type: reflect.TypeOf((*string)(nil)) }, - &revel.MethodArg{Name: "pwd", Type: reflect.TypeOf((*string)(nil)) }, - }, - RenderArgNames: map[int][]string{ - }, - }, - &revel.MethodType{ - Name: "Logout", + Name: "UploadBlogLogo", Args: []*revel.MethodArg{ }, RenderArgNames: map[int][]string{ }, }, &revel.MethodType{ - Name: "Demo", + Name: "UploadImageJson", Args: []*revel.MethodArg{ - }, - RenderArgNames: map[int][]string{ - }, - }, - &revel.MethodType{ - Name: "Register", - Args: []*revel.MethodArg{ - }, - RenderArgNames: map[int][]string{ - }, - }, - &revel.MethodType{ - Name: "DoRegister", - Args: []*revel.MethodArg{ - &revel.MethodArg{Name: "email", Type: reflect.TypeOf((*string)(nil)) }, - &revel.MethodArg{Name: "pwd", Type: reflect.TypeOf((*string)(nil)) }, - }, - RenderArgNames: map[int][]string{ - }, - }, - &revel.MethodType{ - Name: "FindPassword", - Args: []*revel.MethodArg{ - }, - RenderArgNames: map[int][]string{ - }, - }, - &revel.MethodType{ - Name: "DoFindPassword", - Args: []*revel.MethodArg{ - &revel.MethodArg{Name: "email", Type: reflect.TypeOf((*string)(nil)) }, - }, - RenderArgNames: map[int][]string{ - }, - }, - &revel.MethodType{ - Name: "FindPassword2", - Args: []*revel.MethodArg{ - &revel.MethodArg{Name: "token", Type: reflect.TypeOf((*string)(nil)) }, - }, - RenderArgNames: map[int][]string{ - }, - }, - &revel.MethodType{ - Name: "FindPasswordUpdate", - Args: []*revel.MethodArg{ - &revel.MethodArg{Name: "token", Type: reflect.TypeOf((*string)(nil)) }, - &revel.MethodArg{Name: "pwd", Type: reflect.TypeOf((*string)(nil)) }, + &revel.MethodArg{Name: "renderHtml", Type: reflect.TypeOf((*string)(nil)) }, }, RenderArgNames: map[int][]string{ }, @@ -600,128 +688,40 @@ func main() { }) - revel.RegisterController((*controllers.Blog)(nil), + revel.RegisterController((*controllers.Notebook)(nil), []*revel.MethodType{ - &revel.MethodType{ - Name: "SetNote2Blog", - Args: []*revel.MethodArg{ - &revel.MethodArg{Name: "noteId", Type: reflect.TypeOf((*string)(nil)) }, - &revel.MethodArg{Name: "isBlog", Type: reflect.TypeOf((*bool)(nil)) }, - &revel.MethodArg{Name: "isTop", Type: reflect.TypeOf((*bool)(nil)) }, - }, - RenderArgNames: map[int][]string{ - }, - }, - &revel.MethodType{ - Name: "SetNotebook2Blog", - Args: []*revel.MethodArg{ - &revel.MethodArg{Name: "notebookId", Type: reflect.TypeOf((*string)(nil)) }, - &revel.MethodArg{Name: "isBlog", Type: reflect.TypeOf((*bool)(nil)) }, - }, - RenderArgNames: map[int][]string{ - }, - }, &revel.MethodType{ Name: "Index", Args: []*revel.MethodArg{ - &revel.MethodArg{Name: "userId", Type: reflect.TypeOf((*string)(nil)) }, + &revel.MethodArg{Name: "notebook", Type: reflect.TypeOf((*info.Notebook)(nil)) }, + &revel.MethodArg{Name: "i", Type: reflect.TypeOf((*int)(nil)) }, + &revel.MethodArg{Name: "name", Type: reflect.TypeOf((*string)(nil)) }, + }, + RenderArgNames: map[int][]string{ + }, + }, + &revel.MethodType{ + Name: "DeleteNotebook", + Args: []*revel.MethodArg{ &revel.MethodArg{Name: "notebookId", Type: reflect.TypeOf((*string)(nil)) }, }, RenderArgNames: map[int][]string{ }, }, &revel.MethodType{ - Name: "View", + Name: "AddNotebook", Args: []*revel.MethodArg{ - &revel.MethodArg{Name: "noteId", Type: reflect.TypeOf((*string)(nil)) }, + &revel.MethodArg{Name: "notebookId", Type: reflect.TypeOf((*string)(nil)) }, + &revel.MethodArg{Name: "title", Type: reflect.TypeOf((*string)(nil)) }, }, RenderArgNames: map[int][]string{ }, }, &revel.MethodType{ - Name: "SearchBlog", - Args: []*revel.MethodArg{ - &revel.MethodArg{Name: "userId", Type: reflect.TypeOf((*string)(nil)) }, - &revel.MethodArg{Name: "key", Type: reflect.TypeOf((*string)(nil)) }, - }, - RenderArgNames: map[int][]string{ - }, - }, - &revel.MethodType{ - Name: "Set", - Args: []*revel.MethodArg{ - }, - RenderArgNames: map[int][]string{ - }, - }, - &revel.MethodType{ - Name: "SetUserBlogBase", - Args: []*revel.MethodArg{ - &revel.MethodArg{Name: "userBlog", Type: reflect.TypeOf((*info.UserBlogBase)(nil)) }, - }, - RenderArgNames: map[int][]string{ - }, - }, - &revel.MethodType{ - Name: "SetUserBlogComment", - Args: []*revel.MethodArg{ - &revel.MethodArg{Name: "userBlog", Type: reflect.TypeOf((*info.UserBlogComment)(nil)) }, - }, - RenderArgNames: map[int][]string{ - }, - }, - &revel.MethodType{ - Name: "SetUserBlogStyle", - Args: []*revel.MethodArg{ - &revel.MethodArg{Name: "userBlog", Type: reflect.TypeOf((*info.UserBlogStyle)(nil)) }, - }, - RenderArgNames: map[int][]string{ - }, - }, - &revel.MethodType{ - Name: "AboutMe", - Args: []*revel.MethodArg{ - &revel.MethodArg{Name: "userId", Type: reflect.TypeOf((*string)(nil)) }, - }, - RenderArgNames: map[int][]string{ - }, - }, - - }) - - revel.RegisterController((*controllers.Index)(nil), - []*revel.MethodType{ - &revel.MethodType{ - Name: "Index", - Args: []*revel.MethodArg{ - }, - RenderArgNames: map[int][]string{ - }, - }, - &revel.MethodType{ - Name: "Suggestion", - Args: []*revel.MethodArg{ - &revel.MethodArg{Name: "addr", Type: reflect.TypeOf((*string)(nil)) }, - &revel.MethodArg{Name: "suggestion", Type: reflect.TypeOf((*string)(nil)) }, - }, - RenderArgNames: map[int][]string{ - }, - }, - - }) - - revel.RegisterController((*controllers.Mobile)(nil), - []*revel.MethodType{ - &revel.MethodType{ - Name: "Index", - Args: []*revel.MethodArg{ - }, - RenderArgNames: map[int][]string{ - }, - }, - &revel.MethodType{ - Name: "Logout", + Name: "UpdateNotebookTitle", Args: []*revel.MethodArg{ + &revel.MethodArg{Name: "notebookId", Type: reflect.TypeOf((*string)(nil)) }, + &revel.MethodArg{Name: "title", Type: reflect.TypeOf((*string)(nil)) }, }, RenderArgNames: map[int][]string{ }, diff --git a/bin/leanote-mac b/bin/leanote-mac index 8f5e6ca9f0eafce3229fcdc1c32fb42eaa2f82f6..35cb3d630e5edcb1e886ac917bd50a8ec40bab80 100755 GIT binary patch delta 43263 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 fSFU;l*Q2-|!?g$3*%@!pvu@R9*=WuU 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

2=WuL zH-*(PfrWquQTXxH!WM(S+7ICw46<%^L6sIoK9X!1{rplm$oUrJZE_I zPs?e=XTT#ZOlRw-uXo^Dg=;mgD{x(jYYnbWTx)TC8P`>~uEuo@u4{2!hpP+M^|)@p zbtA5?;JOLd&A4vC)s1T%uK&UHRa{@gb*uB~>t8Qi;T)@8zuFQP&s<+o@_-e&aBoTK zj3d@N%XjB|XZeGcec9eJ(OR>9PG#O(*6Y?=`S>6G*Lth-NI~i>Ms)vJJTP`{8SB@(3p@|HkGO5?*iI*R*81;#wRo@l z*u7St74>ZHJa%l46`j8M27Bup`_|*?!SxO2jeWP}Ie8!9+mCM7mBL!H@f6XyU}Ld3 zylV3VXUWAIe&iOPU9sWRaa-M!J^y35OFboG`HBryV)d09#*1I9*w8U9&vFmCJeKAD zp;&k2hSRJ!#gUa8s>M&P+^{4tN~*{+V&P>Qz7S8X*iexJA&Q-| zF5hs(61QHqVUc64+%TLo!DH=l|G?#OTbH|cI*~OSZcbZQi(^YRF0zWZE^6M0>vmjs zIE$J?-^iO3e}F9Pa&=67;}*}3t*PXb&iEERy<+RN=mRa$w zpRU^Me7b5&&voLbN4Es5IpUv3x11p+zp^FZ-rXfW_;|~Vy?@v;McnwxmO}B-D_dr{ zKkpI~U)^%1`0Kg*1MaTt#r{{e)C&L6EjeQ6%UeptC9eYKo$JMIgi~|we!qyEx8Lht zc7uo<-Ey^TJbr`t*HMh39ua+ccSz5xqW{d zZ~fDG^|HRl##;-V?l1SbE$g?=SFh@eSZ+_5xbvF6sgCcOzO%+#`^1{=zHeJsIG=a- zT|dQZ%_CB8dsa<#?%34VJJD)%@^#^+mUXT}$Or8(Yr?;wO_f8AE@w7a)| z#S1IHlDGY1xAlm4a@_V8tpexf@!K!Uvt~N4OxZrgW0gATY1_Y1V0}$oGJX4iRV>E) zw?AZUbDs2Xf6QyW>#Ur$y{OXiIX9fP{o&o#lcMlv+Yh)ao)D9NwY^-t^sChqocDgV z{fFE@U-)bB;paQ*or@0dxU>u*{qWCrI1m5qTbti= zTb~f}46$R}Rr$`PPw#xL&>i?xEPrk1Y>`-cRiSg{(Vh1eTY1ih@9uQG?(h6VeCWAn zrg-VSogc!o``_PbU+4bQ1hM>q9c9A*gKy7qdd`Y`UgDlVi61$UDPRZ?&vQyxY;P)eSviE=w`-#n6pdZD3Gr0du5Vahh^$q&PUQJrgKn$WS^MIyx_dp>VAE@L?XGYVD|b(u z<}G-Qk|NioLtfEVIUoho0R13wQe0V)?Ij*NX1W`zJe2V)s?&dTM?TUZ3wS7B6hN zf0DE8-@AwBSrS#IIe*K)r)<8b@*!|)zGsFQ`s3ztVrasF zJm>VLdm1Ntjy}S}0?z%X-BW0Jx({H-eirbaUwd<%<%Dq3fCOThK?hSao;rB`Xn(hbu&e=2eUWM%Tfm;;K+*{$K z0(pg;h$_tsV z{6K|s>n(f#J{`GH)q?Q-!StJb-zUEJoj-g2x}B5{Vdw~dfqn)#T|dGi4=!(%OWK7CM} zd8+q^UDQ$d*#lKh`-kGKDW2F@Jfh_@QS6-hH?gI_yYUw4f8(XctHej2i(THi-PArd z_(-X<`wQ`9%Q{{B{g}AJ^YS{6sGAloduC_!PnUWYZSsga*G5Z3a68twWwXAM?>w*~ zdhS=fe~i%ZWf#OMopG;6=S{T!;4J=m^q3oD7XKpptS7kFBi6kaEpzgJiI=C=Kb)&R zh{CvcIRE)DdPk0Ry0hW;(aTOpRR3hozQ?@?#@iR|`);21dWXnHCbs)T?4$#^&IL>M z{n7318K9>ho^-$`EV|99T9SnH zdU?xC_f=iu)2sGZ3;(TK#!<;}W#{jooBKJ?R@E7G#M0}HUbiyD!*38zsq27wn(wz2ruscFTGDXHj8t(|P-A-7nlof&`dg?w`>QY1W;$ zKd@C?u-_3EJb3#pP-^)RkSa2>$)D6TlJ$8bIFl&$*C HyWRgErfNWS diff --git a/public/css/blog/blog_daqi.less b/public/css/blog/blog_daqi.less index a99adab..0257ea4 100644 --- a/public/css/blog/blog_daqi.less +++ b/public/css/blog/blog_daqi.less @@ -79,7 +79,7 @@ a:hover { margin: auto; } #postsContainer { - background: #f5f5f5 url("../images/noise.png"); + background: #f5f5f5 url("../../images/noise.png"); padding-bottom: 5px; } diff --git a/public/css/blog/blog_default.less b/public/css/blog/blog_default.less index 9d2d2b3..014dc68 100644 --- a/public/css/blog/blog_default.less +++ b/public/css/blog/blog_default.less @@ -77,7 +77,7 @@ a:hover { margin: auto; } #postsContainer { - background: #f5f5f5 url("../images/noise.png"); + background: #f5f5f5 url("../../images/noise.png"); // margin-top: @headerHeight; padding-bottom: 5px; } diff --git a/public/css/blog/blog_default2.css b/public/css/blog/blog_default2.css deleted file mode 100644 index 1f1789f..0000000 --- a/public/css/blog/blog_default2.css +++ /dev/null @@ -1,197 +0,0 @@ -@font-face { - font-family: 'Open Sans'; - font-style: normal; - font-weight: 300; - src: local('Open Sans Light'), local('OpenSans-Light'), url('../../fonts/open-sans2/DXI1ORHCpsQm3Vp6mXoaTXhCUOGz7vYGh680lGh-uXM.woff') format('woff'); -} -@font-face { - font-family: 'Open Sans'; - font-style: normal; - font-weight: 400; - src: local('Open Sans'), local('OpenSans'), url('../../fonts/open-sans2/cJZKeOuBrn4kERxqtaUH3T8E0i7KZn-EPnyo3HZu7kw.woff') format('woff'); -} -@font-face { - font-family: 'Open Sans'; - font-style: normal; - font-weight: 700; - src: local('Open Sans Bold'), local('OpenSans-Bold'), url('../../fonts/open-sans2/k3k702ZOKiLJc3WVjuplzHhCUOGz7vYGh680lGh-uXM.woff') format('woff'); -} -@font-face { - font-family: 'Open Sans'; - font-style: italic; - font-weight: 400; - src: local('Open Sans Italic'), local('OpenSans-Italic'), url('../../fonts/open-sans2/xjAJXh38I15wypJXxuGMBobN6UDyHWBl620a-IRfuBk.woff') format('woff'); -} -/*"HelveticaNeue-Light","Helvetica Neue Light","Helvetica Neue", Helvetica, "Microsoft Yahei", Verdana, Simsun, "Segoe UI", "Segoe UI Web Regular", "Segoe UI Symbol", "BBAlpha Sans", "S60 Sans", Arial, sans-serif;*/ -::selection { - background: #000000; - color: #ffffff; -} -::-moz-selection { - background: #000000; - color: #ffffff; -} -::-webkit-selection { - background: #000000; - color: #ffffff; -} -*, -body { - font-family: 'Open Sans', '微软雅黑', Arial, Tahoma, sans-serif; - font-weight: 300; - font-size: 14px; -} -h1, -h2, -h3 { - font-family: 'Open Sans', '微软雅黑', Arial, Tahoma, sans-serif; - font-weight: 300 !important; -} -a { - cursor: pointer; -} -a:hover { - text-decoration: none !important; -} -#headerAndNav { - position: fixed; - left: 0; - top: 0; - bottom: 0; - width: 200px; - border-right: 1px solid #ebeff2; - text-align: right; -} -#headerContainer { - width: 190px; -} -#headerContainer { - background-color: #fff; -} -#postsContainer { - margin-left: 211px; -} -#postsContainer { - padding-bottom: 5px; -} -#postsContainer .container, -#footerContainer .container { - width: 800px; -} -#postsContainer .container { - margin-left: 12px; -} -/* header */ -#header { - color: #000000; - padding: 0 0 20px 0; - margin-top: 15px; -} -#header h1 { - margin: 0; - font-size: 32px; -} -#header h1 a { - color: #000000; - font-size: 32px; -} -#header h1 a img { - height: 40px; -} -#header #blogDesc { - margin-top: 10px; - padding-bottom: 10px; - border-bottom: 1px dashed #ebeff2; -} -.navbar { - margin-bottom: 0; - border-radius: 0; - border: none; -} -.navbar .container { - width: 200px; -} -.navbar-default { - background: none; - border-color: #e7e7e7; -} -.navbar-collapse { - padding-left: 0; - padding-right: 0; -} -.navbar-form { - padding: 0; -} -.navbar-nav { - float: none; -} -.navbar-nav > li { - float: none; -} -.navbar-default .navbar-nav > .active > a, -.navbar-default .navbar-nav > .active > a:hover, -.navbar-default .navbar-nav > .active > a:focus { - font-weight: bold; - background: none; -} -.navbar-nav > li > a { - padding-top: 10px; - padding-bottom: 10px; -} -/* posts */ -#posts { - width: 800px; -} -#posts .each-post { - border-bottom: 1px solid #ebeff2; - margin-bottom: 10px; - padding: 30px; - padding-top: 10px; -} -#posts .each-post .title { - font-size: 32px; - color: #0fb264; - padding: 0 0 15px 0; -} -#posts .each-post .title a { - font-size: 32px; - color: #0fb264; - padding: 0 0 15px 0; -} -#posts .each-post .created-time { - border-bottom: 1px dashed #eee; - padding-bottom: 3px; - margin-bottom: 5px; -} -#posts .each-post .more { - background: #0fb264; - padding: 9px 10px; - border-radius: 2px; - line-height: 1; - font-size: 13px; - display: inline-block; - text-transform: uppercase; - margin-top: 15px; - margin-bottom: 15px; - color: #fff; -} -#disqus_thread { - border-top: 1px solid #eee; - padding: 5px 0 0 0; -} -#search { - width: 170px; - padding-right: 15px; -} -#footerContainer { - background-color: #ffffff; - color: #666666; -} -#footerContainer #footer a { - color: #666666; -} -#footerContainer #footer ul { - list-style: none; - margin: 0; - padding-left: 20px; -} diff --git a/public/css/bootstrap.css b/public/css/bootstrap.css index 50d7892..bb87038 100644 --- a/public/css/bootstrap.css +++ b/public/css/bootstrap.css @@ -7,31 +7,6 @@ */ /*! normalize.css v2.1.3 | MIT License | git.io/normalize */ -@font-face { - font-family: 'Open Sans'; - font-style: normal; - font-weight: 300; - src: local('Open Sans Light'), local('OpenSans-Light'), url('../fonts/OpenSans-Light.woff') format('woff'); -} -@font-face { - font-family: 'Open Sans'; - font-style: normal; - font-weight: 400; - src: local('Open Sans'), local('OpenSans'), url('../fonts/OpenSans.woff') format('woff'); -} -@font-face { - font-family: 'Open Sans'; - font-style: normal; - font-weight: 700; - src: local('Open Sans Bold'), local('OpenSans-Bold'), url('../fonts/OpenSans-Bold.woff') format('woff'); -} -@font-face { - font-family: 'Open Sans'; - font-style: italic; - font-weight: 400; - src: local('Open Sans Italic'), local('OpenSans-Italic'), url('../fonts/OpenSans-Italic.woff') format('woff'); -} - article, aside, details, @@ -329,7 +304,7 @@ html { } body { - font-family: 'Open Sans', Arial, Tahoma, sans-serif, "Helvetica Neue", Helvetica, Arial, sans-serif; + font-family: Arial, Tahoma, sans-serif, "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 14px; line-height: 1.428571429; color: #333333; @@ -505,7 +480,7 @@ h6, .h4, .h5, .h6 { -font-family: 'Open Sans', Arial, Tahoma, sans-serif, "HelveticaNeue-Light","Helvetica Neue Light","Helvetica Neue", Helvetica, "Microsoft Yahei", Arial,sans-serif; +font-family: Arial, Tahoma, sans-serif, "HelveticaNeue-Light","Helvetica Neue Light","Helvetica Neue", Helvetica, "Microsoft Yahei", Arial,sans-serif; font-weight: 500; line-height: 1.1; color: inherit;