国际化, , ,

This commit is contained in:
life
2014-12-09 23:17:36 +08:00
parent e2e90f8618
commit 17718732cc
525 changed files with 3631 additions and 381 deletions
app
messages
public
css
js
member
css
js
ace
ck
ace-min.jsext-beautify-min.jsext-chromevox-min.jsext-elastic_tabstops_lite-min.jsext-emmet-min.jsext-error_marker-min.jsext-keybinding_menu-min.jsext-language_tools-min.jsext-linking-min.jsext-modelist-min.jsext-old_ie-min.jsext-prompt-min.jsext-searchbox-min.jsext-settings_menu-min.jsext-spellcheck-min.jsext-split-min.jsext-static_highlight-min.jsext-statusbar-min.jsext-textarea-min.jsext-themelist-min.jsext-whitespace-min.jskeybinding-emacs-min.jskeybinding-vim-min.jsmode-abap-min.jsmode-actionscript-min.jsmode-ada-min.jsmode-apache_conf-min.jsmode-applescript-min.jsmode-asciidoc-min.jsmode-assembly_x86-min.jsmode-autohotkey-min.jsmode-batchfile-min.jsmode-c9search-min.jsmode-c_cpp-min.jsmode-cirru-min.jsmode-clojure-min.jsmode-cobol-min.jsmode-coffee-min.jsmode-coldfusion-min.jsmode-csharp-min.jsmode-css-min.jsmode-curly-min.jsmode-d-min.jsmode-dart-min.jsmode-diff-min.jsmode-django-min.jsmode-dockerfile-min.jsmode-dot-min.jsmode-ejs-min.jsmode-erlang-min.jsmode-forth-min.jsmode-ftl-min.jsmode-gherkin-min.jsmode-glsl-min.jsmode-golang-min.jsmode-groovy-min.jsmode-haml-min.jsmode-handlebars-min.jsmode-haskell-min.jsmode-haxe-min.jsmode-html-min.jsmode-html_completions-min.jsmode-html_ruby-min.jsmode-ini-min.jsmode-jack-min.jsmode-jade-min.jsmode-java-min.jsmode-javascript-min.jsmode-json-min.jsmode-jsoniq-min.jsmode-jsp-min.jsmode-jsx-min.jsmode-julia-min.jsmode-latex-min.jsmode-less-min.jsmode-liquid-min.jsmode-lisp-min.jsmode-livescript-min.jsmode-logiql-min.jsmode-lsl-min.jsmode-lua-min.jsmode-luapage-min.jsmode-lucene-min.jsmode-makefile-min.jsmode-markdown-min.jsmode-matlab-min.jsmode-mel-min.jsmode-mushcode-min.jsmode-mushcode_high_rules-min.jsmode-mysql-min.jsmode-nix-min.jsmode-objectivec-min.jsmode-ocaml-min.jsmode-pascal-min.jsmode-perl-min.jsmode-pgsql-min.jsmode-php-min.jsmode-plain_text-min.jsmode-powershell-min.jsmode-prolog-min.jsmode-properties-min.jsmode-protobuf-min.jsmode-python-min.jsmode-r-min.jsmode-rdoc-min.jsmode-rhtml-min.jsmode-ruby-min.jsmode-rust-min.jsmode-sass-min.jsmode-scad-min.jsmode-scala-min.jsmode-scheme-min.jsmode-scss-min.jsmode-sh-min.jsmode-sjs-min.jsmode-smarty-min.jsmode-snippets-min.jsmode-soy_template-min.jsmode-space-min.jsmode-sql-min.jsmode-stylus-min.jsmode-svg-min.jsmode-tcl-min.jsmode-tex-min.jsmode-textile-min.jsmode-toml-min.jsmode-twig-min.jsmode-typescript-min.jsmode-vala-min.jsmode-vbscript-min.jsmode-verilog-min.jsmode-vhdl-min.jsmode-xml-min.jsmode-yaml-min.js
mode-abap.jsmode-actionscript.jsmode-ada.jsmode-apache_conf.jsmode-applescript.jsmode-asciidoc.jsmode-assembly_x86.jsmode-autohotkey.jsmode-batchfile.jsmode-c9search.jsmode-c_cpp.jsmode-cirru.jsmode-clojure.jsmode-cobol.jsmode-coffee.jsmode-coldfusion.jsmode-csharp.jsmode-curly.jsmode-d.jsmode-dart.jsmode-diff.jsmode-django.jsmode-dockerfile.jsmode-dot.jsmode-ejs.jsmode-erlang.jsmode-forth.jsmode-ftl.jsmode-gherkin.jsmode-glsl.jsmode-golang.jsmode-groovy.jsmode-haml.jsmode-handlebars.jsmode-haskell.jsmode-haxe.jsmode-html_completions.jsmode-html_ruby.jsmode-ini.jsmode-jack.jsmode-jade.jsmode-java.jsmode-json.jsmode-jsoniq.jsmode-jsp.jsmode-jsx.jsmode-julia.jsmode-latex.jsmode-liquid.jsmode-lisp.jsmode-livescript.jsmode-logiql.jsmode-lsl.jsmode-lua.jsmode-luapage.jsmode-lucene.jsmode-makefile.jsmode-markdown.jsmode-matlab.jsmode-mel.jsmode-mushcode.jsmode-mushcode_high_rules.jsmode-mysql.jsmode-nix.jsmode-objectivec.jsmode-ocaml.jsmode-pascal.jsmode-perl.jsmode-pgsql.jsmode-php.jsmode-plain_text.jsmode-powershell.jsmode-prolog.jsmode-properties.jsmode-protobuf.jsmode-python.jsmode-r.jsmode-rdoc.jsmode-rhtml.jsmode-ruby.jsmode-rust.jsmode-sass.jsmode-scad.jsmode-scala.jsmode-scheme.jsmode-scss.jsmode-sh.jsmode-sjs.jsmode-smarty.jsmode-snippets.jsmode-soy_template.jsmode-space.jsmode-sql.jsmode-stylus.jsmode-svg.jsmode-tcl.jsmode-tex.jsmode-textile.jsmode-toml.jsmode-twig.jsmode-typescript.jsmode-vala.jsmode-vbscript.jsmode-velocity.jsmode-verilog.jsmode-vhdl.jsmode-xml.jsmode-xquery.jsmode-yaml.js
snippets
abap.jsactionscript.jsada.jsapache_conf.jsapplescript.jsasciidoc.jsassembly_x86.jsautohotkey.jsbatchfile.jsc9search.jsc_cpp.jscirru.js
ck
clojure.jscobol.jscoffee.jscoldfusion.jscsharp.jscurly.jsd.jsdart.jsdiff.jsdjango.jsdockerfile.jsdot.jsejs.jserlang.jsforth.jsftl.jsgherkin.jsglsl.jsgolang.jsgroovy.jshaml.jshandlebars.jshaskell.jshaxe.jshtml_completions.jshtml_ruby.jsini.jsjack.jsjade.jsjava.jsjson.jsjsoniq.jsjsp.jsjsx.jsjulia.jslatex.jsliquid.jslisp.jslivescript.jslogiql.jslsl.jslua.jsluapage.jslucene.jsmakefile.jsmarkdown.jsmatlab.jsmel.jsmushcode.jsmushcode_high_rules.jsmysql.jsnix.jsobjectivec.jsocaml.jspascal.jsperl.jspgsql.jsphp.jsplain_text.jspowershell.jsprolog.jsproperties.jsprotobuf.jspython.jsr.jsrdoc.jsrhtml.jsruby.jsrust.jssass.jsscad.jsscala.jsscheme.jsscss.jssh.jssjs.jssmarty.jssnippets.jssoy_template.jsspace.jssql.jsstylus.jssvg.jstcl.jstex.jstextile.jstoml.jstwig.jstypescript.jsvala.jsvbscript.jsvelocity.jsverilog.jsvhdl.jsxml.jsxquery.jsyaml.js
theme-ambiance.jstheme-chaos.jstheme-chrome.jstheme-cloud9_day.jstheme-cloud9_night.jstheme-cloud9_night_low_color.jstheme-clouds.jstheme-clouds_midnight.jstheme-cobalt.jstheme-crimson_editor.jstheme-dawn.jstheme-dreamweaver.jstheme-eclipse.jstheme-github.jstheme-idle_fingers.jstheme-katzenmilch.jstheme-kr.jstheme-kuroir.jstheme-merbivore.jstheme-merbivore_soft.jstheme-mono_industrial.jstheme-monokai.jstheme-pastel_on_dark.jstheme-solarized_dark.jstheme-solarized_light.jstheme-terminal.jstheme-textmate.jstheme-tomorrow_night.jstheme-tomorrow_night_blue.jstheme-tomorrow_night_bright.jstheme-tomorrow_night_eighties.jstheme-twilight.jstheme-vibrant_ink.jstheme-xcode.js
member.js

@ -22,9 +22,8 @@ type Note struct {
// 笔记首页, 判断是否已登录
// 已登录, 得到用户基本信息(notebook, shareNotebook), 跳转到index.html中
// 否则, 转向登录页面
func (c Note) Index() revel.Result {
func (c Note) Index(noteId string) revel.Result {
c.SetLocale()
userInfo := c.GetUserInfo()
userId := userInfo.UserId.Hex()
@ -35,7 +34,7 @@ func (c Note) Index() revel.Result {
}
c.RenderArgs["openRegister"] = configService.IsOpenRegister()
// 已登录了, 那么得到所有信息
notebooks := notebookService.GetNotebooks(userId)
shareNotebooks, sharedUserInfos := shareService.GetShareNotebooks(userId)
@ -43,22 +42,78 @@ func (c Note) Index() revel.Result {
// 还需要按时间排序(DESC)得到notes
notes := []info.Note{}
noteContent := info.NoteContent{}
if len(notebooks) > 0 {
// _, notes = noteService.ListNotes(c.GetUserId(), "", false, c.GetPage(), pageSize, defaultSortField, false, false);
// 变成最新
_, notes = noteService.ListNotes(c.GetUserId(), "", false, c.GetPage(), 50, defaultSortField, false, false);
if len(notes) > 0 {
noteContent = noteService.GetNoteContent(notes[0].NoteId.Hex(), userId)
// noteId是否存在
// 是否传入了正确的noteId
hasRightNoteId := false
if IsObjectId(noteId) {
note := noteService.GetNoteById(noteId)
var noteOwner = note.UserId.Hex()
noteContent = noteService.GetNoteContent(noteId, noteOwner)
if note.NoteId != "" {
hasRightNoteId = true
c.RenderArgs["curNoteId"] = noteId
c.RenderArgs["curNotebookId"] = note.NotebookId.Hex()
// 打开的是共享的笔记, 那么判断是否是共享给我的默认笔记
if noteOwner != c.GetUserId() {
if shareService.HasReadPerm(noteOwner, c.GetUserId(), noteId) {
// 不要获取notebook下的笔记
// 在前端下发请求
c.RenderArgs["curSharedNoteNotebookId"] = note.NotebookId.Hex()
c.RenderArgs["curSharedUserId"] = noteOwner;
// 没有读写权限
} else {
hasRightNoteId = false
}
} else {
_, notes = noteService.ListNotes(c.GetUserId(), note.NotebookId.Hex(), false, c.GetPage(), 50, defaultSortField, false, false);
// 如果指定了某笔记, 则该笔记放在首位
lenNotes := len(notes)
if lenNotes > 1 {
notes2 := make([]info.Note, len(notes))
notes2[0] = note
i := 1
for _, note := range notes {
if note.NoteId.Hex() != noteId {
if i == lenNotes { // 防止越界
break;
}
notes2[i] = note
i++
}
}
notes = notes2
}
}
}
// 得到最近的笔记
_, latestNotes := noteService.ListNotes(c.GetUserId(), "", false, c.GetPage(), 50, defaultSortField, false, false);
c.RenderArgs["latestNotes"] = latestNotes
}
// 没有传入笔记
// 那么得到最新笔记
if !hasRightNoteId {
_, notes = noteService.ListNotes(c.GetUserId(), "", false, c.GetPage(), 50, defaultSortField, false, false);
if len(notes) > 0 {
noteContent = noteService.GetNoteContent(notes[0].NoteId.Hex(), userId)
c.RenderArgs["curNoteId"] = notes[0].NoteId.Hex()
}
}
}
// 当然, 还需要得到第一个notes的content
//...
Log(configService.GetAdminUsername())
c.RenderArgs["isAdmin"] = configService.GetAdminUsername() == userInfo.Username
c.RenderArgs["userInfo"] = userInfo
c.RenderArgs["notebooks"] = notebooks
c.RenderArgs["shareNotebooks"] = shareNotebooks
c.RenderArgs["shareNotebooks"] = shareNotebooks // note信息在notes列表中
c.RenderArgs["sharedUserInfos"] = sharedUserInfos
c.RenderArgs["notes"] = notes
@ -69,6 +124,7 @@ func (c Note) Index() revel.Result {
c.RenderArgs["globalConfigs"] = configService.GetGlobalConfigForUser()
if isDev, _ := revel.Config.Bool("mode.dev"); isDev {
return c.RenderTemplate("note/note-dev.html")
} else {

@ -35,7 +35,7 @@ func (c MemberGroup) UpdateGroupTitle(groupId, title string) revel.Result {
func (c MemberGroup) DeleteGroup(groupId string) revel.Result {
re := info.NewRe()
re.Ok, re.Msg = groupService.DeleteGroup(c.GetUserId(), groupId)
return c.RenderJson(re)
return c.RenderRe(re)
}
// 添加用户

@ -27,9 +27,12 @@ func (this *GroupService) AddGroup(userId, title string) (bool, info.Group) {
// 删除分组
// 判断是否有好友
func (this *GroupService) DeleteGroup(userId, groupId string) (ok bool, msg string) {
/*
if db.Has(db.GroupUsers, bson.M{"GroupId": bson.ObjectIdHex(groupId)}) {
return false, "hasUsers"
return false, "groupHasUsers"
}
*/
db.DeleteAll(db.GroupUsers, bson.M{"GroupId": bson.ObjectIdHex(groupId)})
return db.DeleteByIdAndUserId(db.Groups, groupId, userId), ""
// TODO 删除分组后, 在shareNote, shareNotebook中也要删除

@ -1,9 +1,9 @@
{{template "member/top.html" .}}
<div class="m-b-md"> <h3 class="m-b-none">
{{if .page}}
修改页面
{{msg . "updateSingle"}}
{{else}}
添加页面
{{msg . "addSingle"}}
{{end}}
</h3></div>
@ -16,18 +16,18 @@
<div class="alert alert-danger" id="baseMsg" style="display: none"></div>
<input type="hidden" id="singleId" value="{{.single.SingleId.Hex}}" />
<div class="form-group">
<label>标题</label>
<label>{{msg . "title"}}</label>
<input type="text" class="form-control" id="title" name="title"
value="{{.single.Title}}"
data-rules='[
{rule: "required", msg: "请输入页面标题"},
{rule: "required", msg: "{{msg . "inputSingleTitle"}}"},
]'
data-msg_target="#baseMsg"
/>
</div>
<div class="form-group">
<label for="content1">内容</label>
<label for="content1">{{msg . "content"}}</label>
<div id="popularToolbar"></div>
<textarea id="content1" name="content">{{.single.Content}}</textarea>
</div>

@ -1,26 +1,23 @@
{{template "member/top.html" .}}
<div class="m-b-md"> <h3 class="m-b-none">{{msg . "baseInfoSet"}}</h3></div>
<div class="m-b-md"> <h3 class="m-b-none">{{msg $ "basicInfoSet"}}</h3></div>
<div class="row">
<div class="col-sm-10">
<div class="col-sm-8">
<div id="formData">
<section class="panel panel-default">
<div class="panel-body">
<div class="alert alert-danger" id="baseMsg" style="display: none"></div>
<div class="form-horizontal" role="form" id="userBlogForm">
<div role="form" id="userBlogForm">
<div class="form-group">
<label for="title" class="col-sm-2 control-label">{{msg . "blogName"}}</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="Title" name="Title"
<label for="title" >{{msg . "blogName"}}</label>
<input type="text" class="form-control" id="Title" name="Title"
placeholder="eg: leanote's blog"
value="{{if .userBlog.Title}}{{.userBlog.Title}}{{else}}{{.userInfo.Email}} 's blog{{end}}">
</div>
</div>
<div class="form-group">
<label for="logo" class="col-sm-2 control-label">{{msg . "blogLogo"}}</label>
<div class="col-sm-10">
<label for="logo">{{msg . "blogLogo"}}</label>
<input type="hidden" name="Logo" id="Logo"
value="{{.userBlog.Logo}}" />
<form id="formLogo" action="{{$.siteUrl}}/file/uploadBlogLogo" method="post"
@ -37,16 +34,13 @@
</div>
</form>
<iframe id="logoTarget" name="logoTarget" src="#" style="display: none"></iframe>
</div>
</div>
<div class="form-group">
<label for="subTitle" class="col-sm-2 control-label">{{msg . "blogDesc"}}</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="SubTitle"
<label for="subTitle">{{msg . "blogDesc"}}</label>
<input type="text" class="form-control" id="SubTitle"
name="SubTitle" value="{{.userBlog.SubTitle}}"
placeholder="eg: leanote, Not Just A Notebook">
</div>
</div>
<div class="form-group">

@ -1,29 +1,37 @@
{{template "member/top.html" .}}
<div class="m-b-md"> <h3 class="m-b-none">(笔记本)分类</h3></div>
<div class="m-b-md"> <h3 class="m-b-none">{{msg . "cate"}}</h3></div>
<div class="row">
<div class="col-sm-8">
<section class="panel panel-default">
<div class="panel-body">
分类是公开为博客的笔记本
{{msg . "cateIsPublicNotebook"}}
<br />
拖动可排序
{{if .notebooks}}
{{msg . "dragAndSort"}}
<ul class="list-group gutter list-group-lg list-group-sp sortable">
{{range .notebooks}}
<li class="list-group-item" draggable="true" data-id="{{.NotebookId.Hex}}">
<span class="pull-left media-xs"><i class="fa fa-sort text-muted fa m-r-sm"></i></span>
<div class="pull-right" style="margin-right: 10px">
固定链接: /cate/<input data-id="{{.NotebookId.Hex}}" class="url-title" type="text" value="{{if .UrlTitle}}{{.UrlTitle|decodeUrlValue}}{{else}}{{.NotebookId.Hex}}{{end}}"/>
{{msg $ "permanentLink"}}: /cate/<input data-id="{{.NotebookId.Hex}}" class="url-title" type="text" value="{{if .UrlTitle}}{{.UrlTitle|decodeUrlValue}}{{else}}{{.NotebookId.Hex}}{{end}}"/>
</div>
{{.Title}}
</li>
{{end}}
</ul>
{{else}}
{{msg . "noCates"}}
{{end}}
</div>
{{if .notebooks}}
<footer class="panel-footer text-right bg-light lter">
<button type="submit" id="baseBtn" class="btn btn-success">{{msg . "submit"}}</button>
<button type="submit" id="baseBtn" class="btn btn-success">{{msg . "saveSort"}}</button>
</footer>
{{end}}
</section>
</div>
</div>

@ -22,7 +22,7 @@
<input type="radio"
name="commentType"
value="default"
{{if or (not .userBlog.CommentType) (eq .userBlog.CommentType "default")}}checked="checked"{{end}} > Default
{{if or (not .userBlog.CommentType) (eq .userBlog.CommentType "default")}}checked="checked"{{end}} > {{msg $ "defaultComment"}}
</label>
<label>

@ -1,5 +1,5 @@
{{template "member/top.html" .}}
<div class="m-b-md"><h3 class="m-b-none">文章列表</h3></div>
<div class="m-b-md"><h3 class="m-b-none">{{msg . "postList"}}</h3></div>
<style>
.url-title {
width: 260px;
@ -13,7 +13,7 @@
</div>
<div class="col-sm-3">
<div class="input-group search-group">
<input type="text" class="input-sm form-control" placeholder="Title" id="keywords" value="{{.keywords}}" />
<input type="text" class="input-sm form-control" placeholder="{{msg . "title"}}" id="keywords" value="{{.keywords}}" />
<span class="input-group-btn">
<button class="btn btn-sm btn-default" type="button" data-url="/member/blog/index">Search</button>
</span>
@ -40,7 +40,7 @@
style="width: 300px"
{{sorterTh $url "urlTitle" .sorter}}
>
固定链接
{{msg $ "permanentLink"}}
<span class="th-sort">
<i class="fa fa-sort-down"></i>
<i class="fa fa-sort-up"></i>
@ -50,7 +50,7 @@
<th
{{sorterTh $url "publicTime" .sorter}}
>
发布日期
{{msg . "publicTime"}}
<span class="th-sort">
<i class="fa fa-sort-down"></i>
<i class="fa fa-sort-up"></i>
@ -61,7 +61,7 @@
<th
{{sorterTh $url "updatedTime" .sorter}}
>
更新日期
{{msg . "updatedTime"}}
<span class="th-sort">
<i class="fa fa-sort-down"></i>
<i class="fa fa-sort-up"></i>
@ -71,7 +71,7 @@
<th
{{sorterTh $url "createdTime" .sorter}}
>
创建日期
{{msg . "createdTime"}}
<span class="th-sort">
<i class="fa fa-sort-down"></i>
<i class="fa fa-sort-up"></i>
@ -114,13 +114,13 @@
<a
{{if .HasSelfDefined}}
title="已设置"
title="{{msg $ "hasSelfDefined"}}"
class="btn btn-sm btn-success"
{{else}}
title="未设置"
title="{{msg $ "noSelfDefined"}}"
class="btn btn-sm btn-default"
{{end}}
href="/member/blog/updateBlogAbstract?noteId={{.NoteId.Hex}}">摘要设置</a>
href="/member/blog/updateBlogAbstract?noteId={{.NoteId.Hex}}">{{msg $ "setAbstract"}}</a>
</td>
</tr>
{{end}}

@ -1,5 +1,5 @@
{{template "member/top.html" .}}
<div class="m-b-md"> <h3 class="m-b-none">分页与排序设置</h3></div>
<div class="m-b-md"> <h3 class="m-b-none">{{msg $ "pagingAndSort"}}</h3></div>
<div class="row">
<div class="col-sm-8">
@ -8,43 +8,35 @@
<div class="panel-body">
<div class="alert alert-danger" id="domainMsg" style="display: none"></div>
<form class="form-horizontal" role="form" id="dataFrom">
<form role="form" id="dataFrom">
<div class="form-group">
<label for="perPageSize" class="col-sm-2 control-label">每页记录数</label>
<div class="col-sm-10">
<input type="text" class="form-control"
<label for="perPageSize">{{msg . "perPageSize"}}</label>
<input type="text" class="form-control"
placeholder="10"
id="perPageSize"
name="perPageSize"
value="{{.userBlog.PerPageSize}}" />
</div>
</div>
<div class="form-group">
<label for="perPageSize" class="col-sm-2 control-label">排序字段</label>
<div class="col-sm-10">
<select class="form-control"
id="sortField"
name="sortField"
value="">
<option value="PublicTime" {{if eq $.userBlog.SortField "PublicTime"}}selected{{end}}>公开为博客时间</option>
<option value="CreatedTime" {{if eq $.userBlog.SortField "CreatedTimeTime"}}selected{{end}}>创建时间</option>
<option value="UpdatedTime" {{if eq $.userBlog.SortField "UpdatedTime"}}selected{{end}}>更新时间</option>
<option value="Title" {{if eq $.userBlog.SortField "Title"}}selected{{end}}>标题</option>
</select>
</div>
<label for="perPageSize" >{{msg . "sortField"}}</label>
<select class="form-control"
id="sortField"
name="sortField"
value="">
<option value="PublicTime" {{if eq $.userBlog.SortField "PublicTime"}}selected{{end}}>{{msg $ "publicTime"}}</option>
<option value="CreatedTime" {{if eq $.userBlog.SortField "CreatedTimeTime"}}selected{{end}}>{{msg $ "createdTime"}}</option>
<option value="UpdatedTime" {{if eq $.userBlog.SortField "UpdatedTime"}}selected{{end}}>{{msg $ "updatedTime"}}</option>
<option value="Title" {{if eq $.userBlog.SortField "Title"}}selected{{end}}>{{msg . "title"}}</option>
</select>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">排序类型</label>
<div class="col-sm-10" style="margin-top: 5px;">
<label><input type="radio" name="isAsc" value="0" {{if not .userBlog.IsAsc}}checked{{end}}> 降序</label>
<label><input type="radio" name="isAsc" value="1" {{if .userBlog.IsAsc}}checked{{end}}> 升序</label>
<label>{{msg $ "sortType"}}</label>
<div>
<label><input type="radio" name="isAsc" value="0" {{if not .userBlog.IsAsc}}checked{{end}}> {{msg . "desc"}}</label>
<label><input type="radio" name="isAsc" value="1" {{if .userBlog.IsAsc}}checked{{end}}> {{msg . "asc"}}</label>
</div>
</div>
</form>
</div>
<footer class="panel-footer text-right bg-light lter">
<button type="submit" id="baseBtn" class="btn btn-success">{{msg . "submit"}}</button>

@ -1,13 +1,13 @@
{{template "member/top.html" .}}
<div class="m-b-md"> <h3 class="m-b-none">单页面</h3></div>
<div class="m-b-md"> <h3 class="m-b-none">{{msg . "single"}}</h3></div>
<div class="row">
<div class="col-sm-8">
<section class="panel panel-default">
<div class="panel-body">
<p>
您可以添加多个单页面
<a href="/member/blog/addOrUpdateSingle" id="addBtn" class="btn btn-success">添加页面</a>
{{msg $ "singleTips"}}
<a href="/member/blog/addOrUpdateSingle" id="addBtn" class="btn btn-success">{{msg $ "addSingle"}}</a>
</p>
<ul class="list-group gutter list-group-lg list-group-sp sortable">
{{range .singles}}
@ -18,7 +18,7 @@
<a href="#"><i class="fa fa-times icon-muted fa-fw page-delete" data-id="{{.SingleId}}"></i></a>
</span>
<div class="pull-right" style="margin-right: 10px">
固定链接: /single/<input data-id="{{.SingleId}}" class="url-title" type="text" value="{{if .UrlTitle}}{{.UrlTitle|decodeUrlValue}}{{else}}{{.SingleId}}{{end}}"/>
{{msg $ "permanentLink"}}: /single/<input data-id="{{.SingleId}}" class="url-title" type="text" value="{{if .UrlTitle}}{{.UrlTitle|decodeUrlValue}}{{else}}{{.SingleId}}{{end}}"/>
</div>
<div class="clear">
{{.Title}}
@ -29,7 +29,7 @@
</div>
{{if .singles}}
<footer class="panel-footer text-right bg-light lter">
<button type="submit" id="baseBtn" class="btn btn-success">保存排序</button>
<button type="submit" id="baseBtn" class="btn btn-success">{{msg . "saveSort"}}</button>
</footer>
{{end}}
</section>

@ -2,7 +2,10 @@
<div class="m-b-md clearfix">
<h3 class="m-b-none">
{{msg . "themeSet"}}
<small>(<a href="http://blog.leanote.com/post/545f1a5c380782565e000000" target="_blank">{{msg . "needHelp"}}</a>)</small>
<small>
(<a href="http://blog.leanote.com/post/545f1a5c380782565e000000" target="_blank">{{msg . "needHelp"}}</a>
<a target="_blank" href="https://github.com/leanote/leanote/wiki/leanote-blog-theme-api">Leanote Blog Theme Api</a>)
</small>
</h3>
</div>
<div class="row">
@ -12,9 +15,9 @@
<div>
<form id="uploadAvatar" method="post" action="/member/blog/importTheme" enctype="multipart/form-data">
<div id="dropAvatar" class="dropzone">
<a class="btn btn-default btn-new" href="/member/blog/newTheme"><span class="fa fa-plus"></span> 新建主题</a>
<a class="btn btn-default btn-new" href="/member/blog/newTheme"><span class="fa fa-plus"></span> {{msg . "addTheme"}}</a>
<a class="btn btn-success btn-choose-file">
<span class="fa fa-upload"></span> 导入主题(.zip)
<span class="fa fa-upload"></span> {{msg . "importTheme"}}(.zip)
</a>
<input type="file" name="file" multiple/>
<div id="avatarUploadMsg"></div>
@ -22,7 +25,7 @@
</form>
</div>
<p>
当前主题:
{{msg . "currentTheme"}}:
</p>
<ul class="themes">
<li class="theme">
@ -37,9 +40,9 @@
</span>
<div class="theme-btns">
<div class="btn-group" data-id="{{.activeTheme.ThemeId.Hex}}">
<a class="btn btn-default btn-sm btn-export"><span class="fa fa-download"></span> 导出</a>
<a class="btn btn-default btn-sm" href="{{$.siteUrl}}/preview?themeId={{.activeTheme.ThemeId.Hex}}" target="_blank"><span class="fa fa-eye"></span> 预览</a>
<a class="btn btn-primary btn-sm" target="_blank" href="/member/blog/updateTheme?themeId={{if .activeTheme.ThemeId}}{{.activeTheme.ThemeId.Hex}}{{end}}"><span class="fa fa-pencil"></span> 编辑</a>
<a class="btn btn-default btn-sm btn-export"><span class="fa fa-download"></span> {{msg $ "export"}}</a>
<a class="btn btn-default btn-sm" href="{{$.siteUrl}}/preview?themeId={{.activeTheme.ThemeId.Hex}}" target="_blank"><span class="fa fa-eye"></span> {{msg $ "preview"}}</a>
<a class="btn btn-primary btn-sm" target="_blank" href="/member/blog/updateTheme?themeId={{if .activeTheme.ThemeId}}{{.activeTheme.ThemeId.Hex}}{{end}}"><span class="fa fa-pencil"></span> {{msg $ "edit"}}</a>
</div>
</div>
</li>
@ -47,7 +50,7 @@
<hr />
<p>
我的其它主题:
{{msg . "myOtherThemes"}}:
</p>
<ul class="themes">
{{range $.otherThemes}}
@ -64,11 +67,11 @@
</span>
<div class="theme-btns">
<div class="btn-group" data-id="{{.ThemeId.Hex}}">
<a class="btn btn-default btn-sm btn-delete" data-loading-text="..."><span class="fa fa-remove"></span> 删除</a>
<a class="btn btn-default btn-sm btn-export"><span class="fa fa-download"></span> 导出</a>
<a class="btn btn-default btn-sm" href="{{$.siteUrl}}/preview?themeId={{.ThemeId.Hex}}" target="_blank"><span class="fa fa-eye"></span> 预览</a>
<a class="btn btn-default btn-sm" target="_blank" href="/member/blog/updateTheme?themeId={{.ThemeId.Hex}}"><span class="fa fa-pencil"></span> 编辑</a>
<a class="btn btn-primary btn-sm btn-active" data-loading-text="..."><span class="fa fa-check"></span> 使用</a>
<a class="btn btn-default btn-sm btn-delete" data-loading-text="..."><span class="fa fa-remove"></span> {{msg $ "delete"}}</a>
<a class="btn btn-default btn-sm btn-export"><span class="fa fa-download"></span> {{msg $ "export"}}</a>
<a class="btn btn-default btn-sm" href="{{$.siteUrl}}/preview?themeId={{.ThemeId.Hex}}" target="_blank"><span class="fa fa-eye"></span> {{msg $ "preview"}}</a>
<a class="btn btn-default btn-sm" target="_blank" href="/member/blog/updateTheme?themeId={{.ThemeId.Hex}}"><span class="fa fa-pencil"></span> {{msg $ "edit"}}</a>
<a class="btn btn-primary btn-sm btn-active" data-loading-text="..."><span class="fa fa-check"></span> {{msg $ "use"}}</a>
{{if $.isAdmin}}
<a class="btn btn-default btn-sm btn-public" data-loading-text="...">
{{if .IsDefault}}
@ -83,13 +86,13 @@
</li>
{{end}}
{{else}}
{{msg $ "none"}}
{{end}}
</ul>
<hr />
<p>
leanote主题市场:
{{msg . "leanoteThemeMarket"}}:
</p>
<ul class="themes">
{{range $.optionThemes}}
@ -104,7 +107,7 @@
By: <a href="{{.AuthorUrl}}" target="_blank">{{.Author}}</a>
</span>
<p class="theme-btns" data-id="{{.ThemeId.Hex}}">
<a class="btn btn-primary btn-sm btn-install"><span class="fa fa-gear"></span> 安装</a>
<a class="btn btn-primary btn-sm btn-install"><span class="fa fa-gear"></span> {{msg $ "install"}}</a>
</p>
</li>
{{end}}

@ -2,13 +2,18 @@
<div class="m-b-md">
<h3 class="m-b-none">
{{if .isNew}}
新建主题
{{msg $ "addTheme"}}
{{else}}
编辑主题
{{msg $ "updateTheme"}}
-
{{.theme.Name}}
{{end}}
<a class="btn btn-default" href="{{$.siteUrl}}/preview?themeId={{.themeId}}" target="_blank"><span class="fa fa-eye"></span> 预览</a>
<a class="btn btn-default" href="{{$.siteUrl}}/preview?themeId={{.themeId}}" target="_blank"><span class="fa fa-eye"></span> {{msg . "preview"}}</a>
<small>
(<a href="http://blog.leanote.com/post/545f1a5c380782565e000000" target="_blank">{{msg . "needHelp"}}</a>
<a target="_blank" href="https://github.com/leanote/leanote/wiki/leanote-blog-theme-api">Leanote Blog Theme Api</a>)
</small>
</h3>
</div>
@ -42,7 +47,7 @@
<div class="col-sm-4">
<section class="panel panel-default">
<header class="panel-heading">
模板, 样式, 脚本:
{{msg . "tplStyleScript"}}:
</header>
<div class="panel-body" style="height:430px;overflow: auto;">
@ -58,14 +63,14 @@
</div>
</div>
<footer class="panel-footer text-right bg-light lter">
<a class="btn btn-default" id="newFile">新建文件</a>
<a class="btn btn-default" id="newFile">{{msg . "newFile"}}</a>
</footer>
</section>
</div>
<div class="col-sm-8">
<section class="panel panel-default">
<header class="panel-heading">
当前文件: <span id="curTpl">header.html</span>
{{msg . "currentFile"}}: <span id="curTpl">header.html</span>
<span id="msg"></span>
</header>
<div class="panel-body">
@ -82,7 +87,7 @@
<div class="col-sm-12">
<section class="panel panel-default">
<header class="panel-heading">
图片: images/
{{msg . "image"}}: images/
</header>
<div class="panel-body">
<ul class="image-list" id="imageList">
@ -118,7 +123,7 @@ var theme = {
saveBtnO: $("#saveBtn"),
newFileO: $("#newFile"),
curTpl: "",
tplInfos: {"header.html": "头部", "footer.html": "底部", "index.html": "首页", "cate.html": "分类页", "search.html": "搜索页", "single.html": "单页", "archive.html": "归档页", "post.html": "文章页", "tags.html": "标签页", "tag_posts.html": "标签文章页", "share_comment.html": "分享评论", "404.html":"404", "theme.json": "主题配置", "paging.html": "分页", "highlight.html": "高亮"},
tplInfos: {"header.html": "{{msg . "header"}}", "footer.html": "{{msg . "footer"}}", "index.html": "{{msg . "header"}}", "cate.html": "{{msg . "cate"}}", "search.html": "{{msg . "search"}}", "single.html": "{{msg . "single"}}", "archive.html": "{{msg . "archive"}}", "post.html": "{{msg . "post"}}", "tags.html": "{{msg . "tags"}}", "tag_posts.html": "{{msg . "tag_posts"}}", "share_comment.html": "{{msg . "share_comment"}}", "404.html":"404", "theme.json": "{{msg . "themeJson"}}", "paging.html": "{{msg . "paging"}}", "highlight.html": "{{msg . "highlight"}}"},
init: function() {
var self = this;
self.showTplInfo();
@ -183,11 +188,11 @@ var theme = {
info = self.tplInfos[file];
if(!info) {
if(file.indexOf(".css") > 0) {
info = "样式";
info = "{{msg . "style"}}";
} else if(file.indexOf(".js") > 0) {
info = "脚本";
info = "{{msg . "script"}}";
} else if(file.indexOf(".html") > 0) {
info = "模板";
info = "{{msg . "tpl"}}";
}
} else {
$(this).find(".remove-file").remove();
@ -209,7 +214,7 @@ var theme = {
if(t) {
t.button("loading");
}
self.msgO.html("正在保存...");
self.msgO.html("...");
ajaxPost("/member/blog/updateTplContent", {themeId: themeId, filename: self.curTpl, content: content}, function(re) {
if(t) {
t.button("reset");
@ -217,7 +222,7 @@ var theme = {
if(reIsOk(re)) {
self.cache[filename] = content;
// art.tips("Success");
self.msgO.html("保存成功")
self.msgO.html("{{msg . "saveSuccess"}}")
setTimeout(function() {
self.msgO.html("");
}, 3000);

@ -8,17 +8,19 @@
width: 200px;
}
</style>
<div class="m-b-md"> <h3 class="m-b-none">项目组/成员</h3></div>
<div class="m-b-md"> <h3 class="m-b-none">{{msg . "group"}}</h3></div>
<p>
<a class="btn btn-default btn-add-group"><span class="fa fa-plus"></span> 新建分组</a>
<a class="btn btn-default btn-add-group"><span class="fa fa-plus"></span> {{msg . "newGroup"}}</a>
</p>
<script type="text/x-jsrender" id="tUser">
<li class="list-group-item" data-id="[[:UserId]]">
[[:Username]] [[if Email != Username]]([[:Email]])[[/if]]
<span class="fa fa-remove pull-right text-xs m-t-sm"></span>
<a title="{{msg . "deleteMember"}}" class="delete-user">
<span class="fa fa-remove pull-right text-xs m-t-sm"></span>
</a>
</li>
</script>
@ -30,7 +32,7 @@
<div class="clear">
<div class="h3 m-t-xs m-b-xs text-white">
<input type="text" data-ever="[[:Title]]" value="[[:Title]]" class="group-title" />
<a title="删除分组" class="delete-group">
<a title="{{msg . "deleteGroup"}}" class="delete-group">
<i class="fa fa-remove text-white pull-right text-xs m-t-sm"></i>
</a>
</div>
@ -39,7 +41,7 @@
</header>
<ul class="list-group no-radius">
<li class="list-group-item">
<input type="text" class="add-user-input form-control" placeholder="输入用户名或邮箱添加成员" />
<input type="text" class="add-user-input form-control" placeholder="{{msg . "addMemberTips"}}" />
</li>
</ul>
</section>
@ -57,7 +59,7 @@
<div class="clear">
<div class="h3 m-t-xs m-b-xs text-white">
<input type="text" data-ever="{{.Title}}" value="{{.Title}}" class="group-title" />
<a title="删除分组" class="delete-group">
<a title="{{msg $ "deleteGroup"}}" class="delete-group">
<i class="fa fa-remove text-white pull-right text-xs m-t-sm"></i>
</a>
</div>
@ -69,13 +71,13 @@
{{range .Users}}
<li class="list-group-item" data-id="{{.UserId.Hex}}">
{{.Username}} {{if not (eq .Email .Username)}}({{.Email}}){{end}}
<a title="删除成员" class="delete-user">
<a title="{{msg $ "deleteMember"}}" class="delete-user">
<span class="fa fa-remove pull-right text-xs m-t-sm"></span>
</a>
</li>
{{end}}
<li class="list-group-item">
<input type="text" class="add-user-input form-control" placeholder="输入用户名或邮箱添加成员" />
<input type="text" class="add-user-input form-control" placeholder="{{msg $ "addMemberTips"}}" />
</li>
</ul>
</section>
@ -85,7 +87,7 @@
</div>
{{template "member/footer.html" .}}
<script src="http://leanote.com/public/blog/js/jsrender.js"></script>
<script src="/public/blog/js/jsrender.js"></script>
<script>
var group = {
tGroupO: $("#tGroup"),
@ -111,7 +113,7 @@ var group = {
addGroupEvent: function() {
var self = this;
$('.btn-add-group').click(function() {
ajaxPost("/member/group/addGroup", {title: "分组名"}, function(re) {
ajaxPost("/member/group/addGroup", {title: "Group Title"}, function(re) {
if(reIsOk(re)) {
var group = re.Item;
self.groupsO.prepend(self.tGroupO.render(group))
@ -217,4 +219,4 @@ $(function() {
});
</script>
{{template "member/end.html" .}}
{{template "member/end.html" .}}

@ -1,5 +1,5 @@
{{template "member/top.html" .}}
<div class="m-b-md"> <h3 class="m-b-none">{{.userInfo.Username}}, 欢迎来到leanote</h3></div>
<div class="m-b-md"> <h3 class="m-b-none">{{.userInfo.Username}}, {{msg . "welcomeToLeanote"}}.</h3></div>
<section class="panel panel-default">
<div class="row m-l-none m-r-none bg-light lter">
@ -26,11 +26,10 @@
</div>
</div>
</section>
<!-- 最新动态 -->
<section class="panel panel-default">
<h4 class="font-thin padder">
Leanote 动态
{{msg . "leanoteEvents"}}
</h4>
<ul class="list-group" id="eventsList"></ul>
</section>

@ -26,45 +26,47 @@
</i>
</span>
<span>
帐户信息
{{msg . "accountInfo"}}
</span>
</a>
<!-- 导航列表 -->
<ul class="nav lt">
{{if $.userInfo.Email}}
<li>
<a href="/member/user/username">
<span>
用户名
</span>
</a>
</li>
<li>
<a href="/member/user/avatar">
<span>
头像
{{msg . "avatar"}}
</span>
</a>
</li>
{{if $.userInfo.Email}}
<li>
<a href="/member/user/username">
<span>
{{msg . "username"}}
</span>
</a>
</li>
<li>
<a href="/member/user/email">
<span>
邮箱
{{msg . "email"}}
</span>
</a>
</li>
<li>
<a href="/member/user/password">
<span>
密码
{{msg . "password"}}
</span>
</a>
</li>
{{else}}
<li>
<a href="/member/user/add_account">
<a href="/member/user/addAccount">
<span>
添加leanote帐户
{{msg . "addLeanoteAccount"}}
</span>
</a>
</li>
@ -85,14 +87,14 @@
</i>
</span>
<span>
博客
{{msg . "blog"}}
</span>
</a>
<ul class="nav lt">
<li>
<a href="/member/blog/index">
<span>
文章列表
{{msg . "postList"}}
</span>
</a>
</li>
@ -100,42 +102,43 @@
<li>
<a href="/member/blog/base">
<span>
基本信息
{{msg . "basicInfoSet"}}
</span>
</a>
</li>
<li>
<a href="/member/blog/comment">
<span>
评论
{{msg . "comment"}}
</span>
</a>
</li>
<li>
<a href="/member/blog/cate">
<span>
分类
{{msg . "cate"}}
</span>
</a>
</li>
<li>
<a href="/member/blog/single">
<span>
单页面
{{msg . "single"}}
</span>
</a>
</li>
<li>
<a href="/member/blog/paging">
<span>
分页与排序设置
{{msg . "pagingAndSort"}}
</span>
</a>
</li>
<li>
<a href="/member/blog/theme">
<span>
主题
{{msg . "theme"}}
</span>
</a>
</li>
@ -149,9 +152,9 @@
</b>
</i>
<span>
项目组/成员
{{msg . "group"}}
</span>
</a>
</li>
</ul>
</nav>
</nav>

@ -38,7 +38,7 @@
</a>
</li>
<li class="hidden-xs">
<a href="/blog/{{$.session.Username}}" class="dk" target="_blank">
<a href="http://blog.leanote.com/{{$.session.Username}}" class="dk" target="_blank">
{{msg . "myBlog"}}
</a>
</li>
@ -115,4 +115,4 @@ padding: 10px 15px;text-align:center;">
</ul>
-->
<!-- 主要内容区 -->

@ -1,9 +1,9 @@
{{template "member/top.html" .}}
<div class="m-b-md"> <h3 class="m-b-none">用户名设置</h3></div>
<div class="m-b-md"> <h3 class="m-b-none">{{msg . "addLeanoteAccount"}}</h3></div>
<div class="row">
<div class="col-sm-6">
<div class="col-sm-8">
<form id="formData">
<section class="panel panel-default">
<div class="panel-body">

@ -1,10 +1,10 @@
{{template "member/top.html" .}}
<div class="m-b-md"> <h3 class="m-b-none">头像设置</h3></div>
<div class="m-b-md"> <h3 class="m-b-none">{{msg . "avatar"}}</h3></div>
<div class="row">
<div class="col-sm-6">
<div class="col-sm-8">
<form id="uploadAvatar" method="post" action="/file/uploadAvatar" enctype="multipart/form-data">
<section class="panel panel-default">
<div class="panel-body">
@ -14,7 +14,7 @@
<img src="{{if .userInfo.Logo}}{{.userInfo.Logo}}{{else}}/images/blog/default_avatar.png{{end}}" id="avatar"/>
</div>
<a class="btn btn-success btn-choose-file">
<span class="fa fa-upload"></span> Choose Image
<span class="fa fa-upload"></span> {{msg . "chooseImage"}}
</a>
<input type="file" name="file" multiple/>
</div>

@ -1,9 +1,9 @@
{{template "member/top.html" .}}
<div class="m-b-md"> <h3 class="m-b-none">邮箱设置</h3></div>
<div class="m-b-md"> <h3 class="m-b-none">{{msg . "email"}}</h3></div>
<div class="row">
<div class="col-sm-6">
<div class="col-sm-8">
<form id="formData">
<section class="panel panel-default">
<div class="panel-body">

@ -1,9 +1,7 @@
{{template "member/top.html" .}}
<div class="m-b-md"> <h3 class="m-b-none">用户名设置</h3></div>
<div class="m-b-md"> <h3 class="m-b-none">{{msg . "password"}}</h3></div>
<div class="row">
<div class="col-sm-6">
<div class="col-sm-8">
<form id="formData">
<section class="panel panel-default">
<div class="panel-body">

@ -1,9 +1,9 @@
{{template "member/top.html" .}}
<div class="m-b-md"> <h3 class="m-b-none">用户名设置</h3></div>
<div class="m-b-md"> <h3 class="m-b-none">{{msg . "username"}}</h3></div>
<div class="row">
<div class="col-sm-6">
<div class="col-sm-8">
<form id="formData">
<section class="panel panel-default">
<div class="panel-body">

@ -12,17 +12,17 @@
<link href="/css/bootstrap.css" rel="stylesheet" />
<!-- 先加载, 没有样式, 宽度不定 -->
<link rel="stylesheet" href="tinymce/skins/custom/skin.min.css" rel="stylesheet"/>
<link rel="stylesheet" href="/tinymce/skins/custom/skin.min.css" rel="stylesheet"/>
<!-- leanote css -->
<link href="css/font-awesome-4.2.0/css/font-awesome.css" rel="stylesheet" />
<link href="css/zTreeStyle/zTreeStyle.css" rel="stylesheet" />
<link href="/css/font-awesome-4.2.0/css/font-awesome.css" rel="stylesheet" />
<link href="/css/zTreeStyle/zTreeStyle.css" rel="stylesheet" />
<script>
var hash = location.hash;
if(hash == "#writing") {
var files = '<link rel="stylesheet" href="css/theme/writting-overwrite.css" type="text/css" id="themeLink" />';
if(hash.indexOf("writing") >= 0) {
var files = '<link rel="stylesheet" href="/css/theme/writting-overwrite.css" type="text/css" id="themeLink" />';
} else {
var files ='<link rel="stylesheet" href="css/theme/{{if .userInfo.Theme}}{{.userInfo.Theme}}{{else}}default{{end}}.css" type="text/css" id="themeLink" />';
var files ='<link rel="stylesheet" href="/css/theme/{{if .userInfo.Theme}}{{.userInfo.Theme}}{{else}}default{{end}}.css" type="text/css" id="themeLink" />';
}
document.write(files);
</script>
@ -184,6 +184,14 @@ function log(o) {
</div>
</div>
<!--
<div class="pull-right top-nav writting-hide lea-blog">
<a target="_blank" href="http://lea.leanote.com">
lea++
</a>
</div>
-->
<div class="pull-right top-nav writting-hide" id="myBlog">
<a target="_blank" href="{{$.blogUrl}}/{{.userInfo.Username}}">
{{msg . "myBlog"}}
@ -327,6 +335,11 @@ function log(o) {
<div class="noteSplit" id="notebookSplitter"></div>
<div id="noteAndEditor">
<div id="noteAndEditorMask">
<img src="/images/loading-24.gif"/>
<br />
loading...
</div>
<div id="noteList">
<div class="clearfix" id="notesAndSort" style="position: relative">
<div class="pull-left">
@ -411,11 +424,11 @@ function log(o) {
<span id="noteReadTags"></span>
<!-- 修改时间 -->
<i class="fa fa-calendar"></i>{{msg . "update"}}
<i class="fa fa-clock-o"></i>{{msg . "update"}}
<span id="noteReadUpdatedTime"></span>
<!-- 修改时间 -->
<i class="fa fa-calendar"></i>{{msg . "create"}}
<i class="fa fa-clock-o"></i>{{msg . "create"}}
<span id="noteReadCreatedTime"></span>
</div>
</div>
@ -737,17 +750,22 @@ function log(o) {
</div>
</div>
</div>
<script src="js/jquery-1.9.0.min.js"></script>
<script src="js/jquery.ztree.all-3.5.js"></script>
<script src="js/i18n/msg.{{.locale}}.js"></script>
<script src="js/common.js"></script>
<script src="/js/jquery-1.9.0.min.js"></script>
<script src="/js/jquery.ztree.all-3.5.js"></script>
<script src="/js/i18n/msg.{{.locale}}.js"></script>
<script src="/js/common.js"></script>
<script>
var UrlPrefix = "{{.siteUrl}}"; // 为了发weibo
var UrlPrefix = '{{.siteUrl}}'; // 为了发weibo
var UserInfo = {{.userInfo|jsonJs}};
var notebooks = {{.notebooks|jsonJs}};
var shareNotebooks = {{.shareNotebooks|jsonJs}};
var sharedUserInfos = {{.sharedUserInfos|jsonJs}};
var notes = {{.notes|jsonJs}}
var curNoteId = '{{.curNoteId}}';
var curNotebookId = '{{.curNotebookId}}';
var curSharedNoteNotebookId = '{{.curSharedNoteNotebookId}}';
var curSharedUserId = '{{.curSharedUserId}}';
var notes = {{.notes|jsonJs}};
var latestNotes = {{if .latestNotes}}{{.latestNotes|jsonJs}}{{else}}[]{{end}};
var noteContentJson = {{.noteContentJson|jsonJs}};
var tagsJson = {{.tags|jsonJs}};
LEA.locale = "{{.locale}}";
@ -755,35 +773,20 @@ var GlobalConfigs = {{.globalConfigs|jsonJs}}; // 2014/11/9 beta2
</script>
<!-- 渲染view -->
<script src="tinymce/tinymce.js"></script>
<script src="js/app/page.js"></script>
<script src="/tinymce/tinymce.js"></script>
<script src="/js/app/page.js"></script>
<script src="/js/jQuery-slimScroll-1.3.0/jquery.slimscroll.js"></script>
<script src="/js/contextmenu/jquery.contextmenu.js"></script>
<script src="js/jquery-cookie.js"></script>
<script src="js/bootstrap-min.js"></script>
<script src="js/app/note.js"></script>
<script src="js/app/tag.js"></script>
<script src="js/app/notebook.js"></script>
<script src="js/app/share.js"></script>
<script src="js/object_id-min.js"></script>
<script src="js/ZeroClipboard/ZeroClipboard-min.js"></script>
<script src="/js/jquery-cookie.js"></script>
<script src="/js/bootstrap-min.js"></script>
<script src="/js/app/note.js"></script>
<script src="/js/app/tag.js"></script>
<script src="/js/app/notebook.js"></script>
<script src="/js/app/share.js"></script>
<script src="/js/object_id-min.js"></script>
<script src="/js/ZeroClipboard/ZeroClipboard-min.js"></script>
<script>
Notebook.renderNotebooks(notebooks);
Share.renderShareNotebooks(sharedUserInfos, shareNotebooks);
Note.setNoteCache(noteContentJson);
Note.renderNotes(notes);
if(!isEmpty(notes)) {
Note.changeNote(notes[0].NoteId);
}
// Note.chanteNote设置content
// Note.renderNoteContent(noteContentJson)
Tag.renderTagNav(tagsJson);
// init notebook后才调用
initSlimScroll();
initPage();
</script>
<!-- context-menu -->

@ -12,17 +12,17 @@
<link href="/css/bootstrap.css" rel="stylesheet" />
<!-- 先加载, 没有样式, 宽度不定 -->
<link rel="stylesheet" href="tinymce/skins/custom/skin.min.css" rel="stylesheet"/>
<link rel="stylesheet" href="/tinymce/skins/custom/skin.min.css" rel="stylesheet"/>
<!-- leanote css -->
<link href="css/font-awesome-4.2.0/css/font-awesome.css" rel="stylesheet" />
<link href="css/zTreeStyle/zTreeStyle.css" rel="stylesheet" />
<link href="/css/font-awesome-4.2.0/css/font-awesome.css" rel="stylesheet" />
<link href="/css/zTreeStyle/zTreeStyle.css" rel="stylesheet" />
<script>
var hash = location.hash;
if(hash == "#writing") {
var files = '<link rel="stylesheet" href="css/theme/writting-overwrite.css" type="text/css" id="themeLink" />';
if(hash.indexOf("writing") >= 0) {
var files = '<link rel="stylesheet" href="/css/theme/writting-overwrite.css" type="text/css" id="themeLink" />';
} else {
var files ='<link rel="stylesheet" href="css/theme/{{if .userInfo.Theme}}{{.userInfo.Theme}}{{else}}default{{end}}.css" type="text/css" id="themeLink" />';
var files ='<link rel="stylesheet" href="/css/theme/{{if .userInfo.Theme}}{{.userInfo.Theme}}{{else}}default{{end}}.css" type="text/css" id="themeLink" />';
}
document.write(files);
</script>
@ -184,6 +184,14 @@ function log(o) {
</div>
</div>
<!--
<div class="pull-right top-nav writting-hide lea-blog">
<a target="_blank" href="http://lea.leanote.com">
lea++
</a>
</div>
-->
<div class="pull-right top-nav writting-hide" id="myBlog">
<a target="_blank" href="{{$.blogUrl}}/{{.userInfo.Username}}">
{{msg . "myBlog"}}
@ -327,6 +335,11 @@ function log(o) {
<div class="noteSplit" id="notebookSplitter"></div>
<div id="noteAndEditor">
<div id="noteAndEditorMask">
<img src="/images/loading-24.gif"/>
<br />
loading...
</div>
<div id="noteList">
<div class="clearfix" id="notesAndSort" style="position: relative">
<div class="pull-left">
@ -411,11 +424,11 @@ function log(o) {
<span id="noteReadTags"></span>
<!-- 修改时间 -->
<i class="fa fa-calendar"></i>{{msg . "update"}}
<i class="fa fa-clock-o"></i>{{msg . "update"}}
<span id="noteReadUpdatedTime"></span>
<!-- 修改时间 -->
<i class="fa fa-calendar"></i>{{msg . "create"}}
<i class="fa fa-clock-o"></i>{{msg . "create"}}
<span id="noteReadCreatedTime"></span>
</div>
</div>
@ -737,17 +750,22 @@ function log(o) {
</div>
</div>
</div>
<script src="js/jquery-1.9.0.min.js"></script>
<script src="js/jquery.ztree.all-3.5.js"></script>
<script src="js/i18n/msg.{{.locale}}.js"></script>
<script src="js/common-min.js"></script>
<script src="/js/jquery-1.9.0.min.js"></script>
<script src="/js/jquery.ztree.all-3.5.js"></script>
<script src="/js/i18n/msg.{{.locale}}.js"></script>
<script src="/js/common-min.js"></script>
<script>
var UrlPrefix = "{{.siteUrl}}"; // 为了发weibo
var UrlPrefix = '{{.siteUrl}}'; // 为了发weibo
var UserInfo = {{.userInfo|jsonJs}};
var notebooks = {{.notebooks|jsonJs}};
var shareNotebooks = {{.shareNotebooks|jsonJs}};
var sharedUserInfos = {{.sharedUserInfos|jsonJs}};
var notes = {{.notes|jsonJs}}
var curNoteId = '{{.curNoteId}}';
var curNotebookId = '{{.curNotebookId}}';
var curSharedNoteNotebookId = '{{.curSharedNoteNotebookId}}';
var curSharedUserId = '{{.curSharedUserId}}';
var notes = {{.notes|jsonJs}};
var latestNotes = {{if .latestNotes}}{{.latestNotes|jsonJs}}{{else}}[]{{end}};
var noteContentJson = {{.noteContentJson|jsonJs}};
var tagsJson = {{.tags|jsonJs}};
LEA.locale = "{{.locale}}";
@ -755,35 +773,20 @@ var GlobalConfigs = {{.globalConfigs|jsonJs}}; // 2014/11/9 beta2
</script>
<!-- 渲染view -->
<script src="tinymce/tinymce.js"></script>
<script src="js/app/page-min.js"></script>
<script src="/tinymce/tinymce.js"></script>
<script src="/js/app/page-min.js"></script>
<script src="/js/jQuery-slimScroll-1.3.0/jquery.slimscroll.js"></script>
<script src="/js/contextmenu/jquery.contextmenu-min.js"></script>
<script src="js/jquery-cookie.js"></script>
<script src="js/bootstrap-min.js"></script>
<script src="js/app/note-min.js"></script>
<script src="js/app/tag-min.js"></script>
<script src="js/app/notebook-min.js"></script>
<script src="js/app/share-min.js"></script>
<script src="js/object_id-min.js"></script>
<script src="js/ZeroClipboard/ZeroClipboard-min.js"></script>
<script src="/js/jquery-cookie.js"></script>
<script src="/js/bootstrap-min.js"></script>
<script src="/js/app/note-min.js"></script>
<script src="/js/app/tag-min.js"></script>
<script src="/js/app/notebook-min.js"></script>
<script src="/js/app/share-min.js"></script>
<script src="/js/object_id-min.js"></script>
<script src="/js/ZeroClipboard/ZeroClipboard-min.js"></script>
<script>
Notebook.renderNotebooks(notebooks);
Share.renderShareNotebooks(sharedUserInfos, shareNotebooks);
Note.setNoteCache(noteContentJson);
Note.renderNotes(notes);
if(!isEmpty(notes)) {
Note.changeNote(notes[0].NoteId);
}
// Note.chanteNote设置content
// Note.renderNoteContent(noteContentJson)
Tag.renderTagNav(tagsJson);
// init notebook后才调用
initSlimScroll();
initPage();
</script>
<!-- context-menu -->