app
controllers
service
views
messages
public
css
css
theme
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.jssnippets
abap.jsactionscript.jsada.jsapache_conf.jsapplescript.jsasciidoc.jsassembly_x86.jsautohotkey.jsbatchfile.jsc9search.jsc_cpp.jscirru.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.jsck
abap-min.jsactionscript-min.jsada-min.jsapache_conf-min.jsapplescript-min.jsasciidoc-min.jsassembly_x86-min.jsautohotkey-min.jsbatchfile-min.jsc9search-min.jsc_cpp-min.jscirru-min.jsclojure-min.jscobol-min.jscoffee-min.jscoldfusion-min.jscsharp-min.jscss-min.jscurly-min.jsd-min.jsdart-min.jsdiff-min.jsdjango-min.jsdockerfile-min.jsdot-min.jsejs-min.jserlang-min.jsforth-min.jsftl-min.jsgherkin-min.jsglsl-min.jsgolang-min.jsgroovy-min.jshaml-min.jshandlebars-min.jshaskell-min.jshaxe-min.jshtml-min.jshtml_completions-min.jshtml_ruby-min.jsini-min.jsjack-min.jsjade-min.jsjava-min.jsjavascript-min.jsjson-min.jsjsoniq-min.jsjsp-min.jsjsx-min.jsjulia-min.jslatex-min.jsless-min.jsliquid-min.jslisp-min.jslivescript-min.jslogiql-min.jslsl-min.jslua-min.jsluapage-min.jslucene-min.jsmakefile-min.jsmarkdown-min.jsmatlab-min.jsmel-min.jsmushcode-min.jsmushcode_high_rules-min.jsmysql-min.jsnix-min.jsocaml-min.jspascal-min.jsperl-min.jspgsql-min.jsplain_text-min.jspowershell-min.jsprolog-min.jsproperties-min.jspython-min.jsr-min.jsrdoc-min.jsrhtml-min.jsruby-min.jsrust-min.jsscad-min.jsscheme-min.jsscss-min.jssh-min.jssmarty-min.jssnippets-min.jssoy_template-min.jsspace-min.jsstylus-min.jssvg-min.js
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@ -22,9 +22,8 @@ type Note struct {
|
|||||||
// 笔记首页, 判断是否已登录
|
// 笔记首页, 判断是否已登录
|
||||||
// 已登录, 得到用户基本信息(notebook, shareNotebook), 跳转到index.html中
|
// 已登录, 得到用户基本信息(notebook, shareNotebook), 跳转到index.html中
|
||||||
// 否则, 转向登录页面
|
// 否则, 转向登录页面
|
||||||
func (c Note) Index() revel.Result {
|
func (c Note) Index(noteId string) revel.Result {
|
||||||
c.SetLocale()
|
c.SetLocale()
|
||||||
|
|
||||||
userInfo := c.GetUserInfo()
|
userInfo := c.GetUserInfo()
|
||||||
|
|
||||||
userId := userInfo.UserId.Hex()
|
userId := userInfo.UserId.Hex()
|
||||||
@ -35,7 +34,7 @@ func (c Note) Index() revel.Result {
|
|||||||
}
|
}
|
||||||
|
|
||||||
c.RenderArgs["openRegister"] = configService.IsOpenRegister()
|
c.RenderArgs["openRegister"] = configService.IsOpenRegister()
|
||||||
|
|
||||||
// 已登录了, 那么得到所有信息
|
// 已登录了, 那么得到所有信息
|
||||||
notebooks := notebookService.GetNotebooks(userId)
|
notebooks := notebookService.GetNotebooks(userId)
|
||||||
shareNotebooks, sharedUserInfos := shareService.GetShareNotebooks(userId)
|
shareNotebooks, sharedUserInfos := shareService.GetShareNotebooks(userId)
|
||||||
@ -43,22 +42,78 @@ func (c Note) Index() revel.Result {
|
|||||||
// 还需要按时间排序(DESC)得到notes
|
// 还需要按时间排序(DESC)得到notes
|
||||||
notes := []info.Note{}
|
notes := []info.Note{}
|
||||||
noteContent := info.NoteContent{}
|
noteContent := info.NoteContent{}
|
||||||
|
|
||||||
if len(notebooks) > 0 {
|
if len(notebooks) > 0 {
|
||||||
// _, notes = noteService.ListNotes(c.GetUserId(), "", false, c.GetPage(), pageSize, defaultSortField, false, false);
|
// noteId是否存在
|
||||||
// 变成最新
|
// 是否传入了正确的noteId
|
||||||
_, notes = noteService.ListNotes(c.GetUserId(), "", false, c.GetPage(), 50, defaultSortField, false, false);
|
hasRightNoteId := false
|
||||||
if len(notes) > 0 {
|
if IsObjectId(noteId) {
|
||||||
noteContent = noteService.GetNoteContent(notes[0].NoteId.Hex(), userId)
|
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
|
// 当然, 还需要得到第一个notes的content
|
||||||
//...
|
//...
|
||||||
Log(configService.GetAdminUsername())
|
|
||||||
c.RenderArgs["isAdmin"] = configService.GetAdminUsername() == userInfo.Username
|
c.RenderArgs["isAdmin"] = configService.GetAdminUsername() == userInfo.Username
|
||||||
|
|
||||||
c.RenderArgs["userInfo"] = userInfo
|
c.RenderArgs["userInfo"] = userInfo
|
||||||
c.RenderArgs["notebooks"] = notebooks
|
c.RenderArgs["notebooks"] = notebooks
|
||||||
c.RenderArgs["shareNotebooks"] = shareNotebooks
|
c.RenderArgs["shareNotebooks"] = shareNotebooks // note信息在notes列表中
|
||||||
c.RenderArgs["sharedUserInfos"] = sharedUserInfos
|
c.RenderArgs["sharedUserInfos"] = sharedUserInfos
|
||||||
|
|
||||||
c.RenderArgs["notes"] = notes
|
c.RenderArgs["notes"] = notes
|
||||||
@ -69,6 +124,7 @@ func (c Note) Index() revel.Result {
|
|||||||
|
|
||||||
c.RenderArgs["globalConfigs"] = configService.GetGlobalConfigForUser()
|
c.RenderArgs["globalConfigs"] = configService.GetGlobalConfigForUser()
|
||||||
|
|
||||||
|
|
||||||
if isDev, _ := revel.Config.Bool("mode.dev"); isDev {
|
if isDev, _ := revel.Config.Bool("mode.dev"); isDev {
|
||||||
return c.RenderTemplate("note/note-dev.html")
|
return c.RenderTemplate("note/note-dev.html")
|
||||||
} else {
|
} else {
|
||||||
|
@ -35,7 +35,7 @@ func (c MemberGroup) UpdateGroupTitle(groupId, title string) revel.Result {
|
|||||||
func (c MemberGroup) DeleteGroup(groupId string) revel.Result {
|
func (c MemberGroup) DeleteGroup(groupId string) revel.Result {
|
||||||
re := info.NewRe()
|
re := info.NewRe()
|
||||||
re.Ok, re.Msg = groupService.DeleteGroup(c.GetUserId(), groupId)
|
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) {
|
func (this *GroupService) DeleteGroup(userId, groupId string) (ok bool, msg string) {
|
||||||
|
/*
|
||||||
if db.Has(db.GroupUsers, bson.M{"GroupId": bson.ObjectIdHex(groupId)}) {
|
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), ""
|
return db.DeleteByIdAndUserId(db.Groups, groupId, userId), ""
|
||||||
|
|
||||||
// TODO 删除分组后, 在shareNote, shareNotebook中也要删除
|
// TODO 删除分组后, 在shareNote, shareNotebook中也要删除
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
{{template "member/top.html" .}}
|
{{template "member/top.html" .}}
|
||||||
<div class="m-b-md"> <h3 class="m-b-none">
|
<div class="m-b-md"> <h3 class="m-b-none">
|
||||||
{{if .page}}
|
{{if .page}}
|
||||||
修改页面
|
{{msg . "updateSingle"}}
|
||||||
{{else}}
|
{{else}}
|
||||||
添加页面
|
{{msg . "addSingle"}}
|
||||||
{{end}}
|
{{end}}
|
||||||
</h3></div>
|
</h3></div>
|
||||||
|
|
||||||
@ -16,18 +16,18 @@
|
|||||||
<div class="alert alert-danger" id="baseMsg" style="display: none"></div>
|
<div class="alert alert-danger" id="baseMsg" style="display: none"></div>
|
||||||
<input type="hidden" id="singleId" value="{{.single.SingleId.Hex}}" />
|
<input type="hidden" id="singleId" value="{{.single.SingleId.Hex}}" />
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label>标题</label>
|
<label>{{msg . "title"}}</label>
|
||||||
<input type="text" class="form-control" id="title" name="title"
|
<input type="text" class="form-control" id="title" name="title"
|
||||||
value="{{.single.Title}}"
|
value="{{.single.Title}}"
|
||||||
data-rules='[
|
data-rules='[
|
||||||
{rule: "required", msg: "请输入页面标题"},
|
{rule: "required", msg: "{{msg . "inputSingleTitle"}}"},
|
||||||
]'
|
]'
|
||||||
data-msg_target="#baseMsg"
|
data-msg_target="#baseMsg"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="content1">内容</label>
|
<label for="content1">{{msg . "content"}}</label>
|
||||||
<div id="popularToolbar"></div>
|
<div id="popularToolbar"></div>
|
||||||
<textarea id="content1" name="content">{{.single.Content}}</textarea>
|
<textarea id="content1" name="content">{{.single.Content}}</textarea>
|
||||||
</div>
|
</div>
|
||||||
|
@ -1,26 +1,23 @@
|
|||||||
{{template "member/top.html" .}}
|
{{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="row">
|
||||||
<div class="col-sm-10">
|
<div class="col-sm-8">
|
||||||
<div id="formData">
|
<div id="formData">
|
||||||
<section class="panel panel-default">
|
<section class="panel panel-default">
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
<div class="alert alert-danger" id="baseMsg" style="display: none"></div>
|
<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">
|
<div class="form-group">
|
||||||
<label for="title" class="col-sm-2 control-label">{{msg . "blogName"}}</label>
|
<label for="title" >{{msg . "blogName"}}</label>
|
||||||
<div class="col-sm-10">
|
<input type="text" class="form-control" id="Title" name="Title"
|
||||||
<input type="text" class="form-control" id="Title" name="Title"
|
|
||||||
placeholder="eg: leanote's blog"
|
placeholder="eg: leanote's blog"
|
||||||
value="{{if .userBlog.Title}}{{.userBlog.Title}}{{else}}{{.userInfo.Email}} 's blog{{end}}">
|
value="{{if .userBlog.Title}}{{.userBlog.Title}}{{else}}{{.userInfo.Email}} 's blog{{end}}">
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="logo" class="col-sm-2 control-label">{{msg . "blogLogo"}}</label>
|
<label for="logo">{{msg . "blogLogo"}}</label>
|
||||||
<div class="col-sm-10">
|
|
||||||
<input type="hidden" name="Logo" id="Logo"
|
<input type="hidden" name="Logo" id="Logo"
|
||||||
value="{{.userBlog.Logo}}" />
|
value="{{.userBlog.Logo}}" />
|
||||||
<form id="formLogo" action="{{$.siteUrl}}/file/uploadBlogLogo" method="post"
|
<form id="formLogo" action="{{$.siteUrl}}/file/uploadBlogLogo" method="post"
|
||||||
@ -37,16 +34,13 @@
|
|||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
<iframe id="logoTarget" name="logoTarget" src="#" style="display: none"></iframe>
|
<iframe id="logoTarget" name="logoTarget" src="#" style="display: none"></iframe>
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="subTitle" class="col-sm-2 control-label">{{msg . "blogDesc"}}</label>
|
<label for="subTitle">{{msg . "blogDesc"}}</label>
|
||||||
<div class="col-sm-10">
|
<input type="text" class="form-control" id="SubTitle"
|
||||||
<input type="text" class="form-control" id="SubTitle"
|
|
||||||
name="SubTitle" value="{{.userBlog.SubTitle}}"
|
name="SubTitle" value="{{.userBlog.SubTitle}}"
|
||||||
placeholder="eg: leanote, Not Just A Notebook">
|
placeholder="eg: leanote, Not Just A Notebook">
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
|
@ -1,29 +1,37 @@
|
|||||||
{{template "member/top.html" .}}
|
{{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="row">
|
||||||
<div class="col-sm-8">
|
<div class="col-sm-8">
|
||||||
<section class="panel panel-default">
|
<section class="panel panel-default">
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
分类是公开为博客的笔记本
|
{{msg . "cateIsPublicNotebook"}}
|
||||||
<br />
|
<br />
|
||||||
拖动可排序
|
{{if .notebooks}}
|
||||||
|
{{msg . "dragAndSort"}}
|
||||||
<ul class="list-group gutter list-group-lg list-group-sp sortable">
|
<ul class="list-group gutter list-group-lg list-group-sp sortable">
|
||||||
{{range .notebooks}}
|
{{range .notebooks}}
|
||||||
<li class="list-group-item" draggable="true" data-id="{{.NotebookId.Hex}}">
|
<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>
|
<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">
|
<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>
|
</div>
|
||||||
{{.Title}}
|
{{.Title}}
|
||||||
</li>
|
</li>
|
||||||
{{end}}
|
{{end}}
|
||||||
</ul>
|
</ul>
|
||||||
|
{{else}}
|
||||||
|
{{msg . "noCates"}}
|
||||||
|
{{end}}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
{{if .notebooks}}
|
||||||
<footer class="panel-footer text-right bg-light lter">
|
<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>
|
</footer>
|
||||||
|
{{end}}
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
@ -22,7 +22,7 @@
|
|||||||
<input type="radio"
|
<input type="radio"
|
||||||
name="commentType"
|
name="commentType"
|
||||||
value="default"
|
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>
|
||||||
|
|
||||||
<label>
|
<label>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
{{template "member/top.html" .}}
|
{{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>
|
<style>
|
||||||
.url-title {
|
.url-title {
|
||||||
width: 260px;
|
width: 260px;
|
||||||
@ -13,7 +13,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="col-sm-3">
|
<div class="col-sm-3">
|
||||||
<div class="input-group search-group">
|
<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">
|
<span class="input-group-btn">
|
||||||
<button class="btn btn-sm btn-default" type="button" data-url="/member/blog/index">Search</button>
|
<button class="btn btn-sm btn-default" type="button" data-url="/member/blog/index">Search</button>
|
||||||
</span>
|
</span>
|
||||||
@ -40,7 +40,7 @@
|
|||||||
style="width: 300px"
|
style="width: 300px"
|
||||||
{{sorterTh $url "urlTitle" .sorter}}
|
{{sorterTh $url "urlTitle" .sorter}}
|
||||||
>
|
>
|
||||||
固定链接
|
{{msg $ "permanentLink"}}
|
||||||
<span class="th-sort">
|
<span class="th-sort">
|
||||||
<i class="fa fa-sort-down"></i>
|
<i class="fa fa-sort-down"></i>
|
||||||
<i class="fa fa-sort-up"></i>
|
<i class="fa fa-sort-up"></i>
|
||||||
@ -50,7 +50,7 @@
|
|||||||
<th
|
<th
|
||||||
{{sorterTh $url "publicTime" .sorter}}
|
{{sorterTh $url "publicTime" .sorter}}
|
||||||
>
|
>
|
||||||
发布日期
|
{{msg . "publicTime"}}
|
||||||
<span class="th-sort">
|
<span class="th-sort">
|
||||||
<i class="fa fa-sort-down"></i>
|
<i class="fa fa-sort-down"></i>
|
||||||
<i class="fa fa-sort-up"></i>
|
<i class="fa fa-sort-up"></i>
|
||||||
@ -61,7 +61,7 @@
|
|||||||
<th
|
<th
|
||||||
{{sorterTh $url "updatedTime" .sorter}}
|
{{sorterTh $url "updatedTime" .sorter}}
|
||||||
>
|
>
|
||||||
更新日期
|
{{msg . "updatedTime"}}
|
||||||
<span class="th-sort">
|
<span class="th-sort">
|
||||||
<i class="fa fa-sort-down"></i>
|
<i class="fa fa-sort-down"></i>
|
||||||
<i class="fa fa-sort-up"></i>
|
<i class="fa fa-sort-up"></i>
|
||||||
@ -71,7 +71,7 @@
|
|||||||
<th
|
<th
|
||||||
{{sorterTh $url "createdTime" .sorter}}
|
{{sorterTh $url "createdTime" .sorter}}
|
||||||
>
|
>
|
||||||
创建日期
|
{{msg . "createdTime"}}
|
||||||
<span class="th-sort">
|
<span class="th-sort">
|
||||||
<i class="fa fa-sort-down"></i>
|
<i class="fa fa-sort-down"></i>
|
||||||
<i class="fa fa-sort-up"></i>
|
<i class="fa fa-sort-up"></i>
|
||||||
@ -114,13 +114,13 @@
|
|||||||
|
|
||||||
<a
|
<a
|
||||||
{{if .HasSelfDefined}}
|
{{if .HasSelfDefined}}
|
||||||
title="已设置"
|
title="{{msg $ "hasSelfDefined"}}"
|
||||||
class="btn btn-sm btn-success"
|
class="btn btn-sm btn-success"
|
||||||
{{else}}
|
{{else}}
|
||||||
title="未设置"
|
title="{{msg $ "noSelfDefined"}}"
|
||||||
class="btn btn-sm btn-default"
|
class="btn btn-sm btn-default"
|
||||||
{{end}}
|
{{end}}
|
||||||
href="/member/blog/updateBlogAbstract?noteId={{.NoteId.Hex}}">摘要设置</a>
|
href="/member/blog/updateBlogAbstract?noteId={{.NoteId.Hex}}">{{msg $ "setAbstract"}}</a>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
{{end}}
|
{{end}}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
{{template "member/top.html" .}}
|
{{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="row">
|
||||||
<div class="col-sm-8">
|
<div class="col-sm-8">
|
||||||
@ -8,43 +8,35 @@
|
|||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
<div class="alert alert-danger" id="domainMsg" style="display: none"></div>
|
<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">
|
<div class="form-group">
|
||||||
<label for="perPageSize" class="col-sm-2 control-label">每页记录数</label>
|
<label for="perPageSize">{{msg . "perPageSize"}}</label>
|
||||||
<div class="col-sm-10">
|
<input type="text" class="form-control"
|
||||||
<input type="text" class="form-control"
|
|
||||||
placeholder="10"
|
placeholder="10"
|
||||||
id="perPageSize"
|
id="perPageSize"
|
||||||
name="perPageSize"
|
name="perPageSize"
|
||||||
value="{{.userBlog.PerPageSize}}" />
|
value="{{.userBlog.PerPageSize}}" />
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="perPageSize" class="col-sm-2 control-label">排序字段</label>
|
<label for="perPageSize" >{{msg . "sortField"}}</label>
|
||||||
<div class="col-sm-10">
|
<select class="form-control"
|
||||||
<select class="form-control"
|
id="sortField"
|
||||||
id="sortField"
|
name="sortField"
|
||||||
name="sortField"
|
value="">
|
||||||
value="">
|
<option value="PublicTime" {{if eq $.userBlog.SortField "PublicTime"}}selected{{end}}>{{msg $ "publicTime"}}</option>
|
||||||
<option value="PublicTime" {{if eq $.userBlog.SortField "PublicTime"}}selected{{end}}>公开为博客时间</option>
|
<option value="CreatedTime" {{if eq $.userBlog.SortField "CreatedTimeTime"}}selected{{end}}>{{msg $ "createdTime"}}</option>
|
||||||
<option value="CreatedTime" {{if eq $.userBlog.SortField "CreatedTimeTime"}}selected{{end}}>创建时间</option>
|
<option value="UpdatedTime" {{if eq $.userBlog.SortField "UpdatedTime"}}selected{{end}}>{{msg $ "updatedTime"}}</option>
|
||||||
<option value="UpdatedTime" {{if eq $.userBlog.SortField "UpdatedTime"}}selected{{end}}>更新时间</option>
|
<option value="Title" {{if eq $.userBlog.SortField "Title"}}selected{{end}}>{{msg . "title"}}</option>
|
||||||
<option value="Title" {{if eq $.userBlog.SortField "Title"}}selected{{end}}>标题</option>
|
</select>
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-sm-2 control-label">排序类型</label>
|
<label>{{msg $ "sortType"}}</label>
|
||||||
<div class="col-sm-10" style="margin-top: 5px;">
|
<div>
|
||||||
<label><input type="radio" name="isAsc" value="0" {{if not .userBlog.IsAsc}}checked{{end}}> 降序</label>
|
<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}}> 升序</label>
|
<label><input type="radio" name="isAsc" value="1" {{if .userBlog.IsAsc}}checked{{end}}> {{msg . "asc"}}</label>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<footer class="panel-footer text-right bg-light lter">
|
<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 . "submit"}}</button>
|
||||||
|
@ -1,13 +1,13 @@
|
|||||||
{{template "member/top.html" .}}
|
{{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="row">
|
||||||
<div class="col-sm-8">
|
<div class="col-sm-8">
|
||||||
<section class="panel panel-default">
|
<section class="panel panel-default">
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
<p>
|
<p>
|
||||||
您可以添加多个单页面
|
{{msg $ "singleTips"}}
|
||||||
<a href="/member/blog/addOrUpdateSingle" id="addBtn" class="btn btn-success">添加页面</a>
|
<a href="/member/blog/addOrUpdateSingle" id="addBtn" class="btn btn-success">{{msg $ "addSingle"}}</a>
|
||||||
</p>
|
</p>
|
||||||
<ul class="list-group gutter list-group-lg list-group-sp sortable">
|
<ul class="list-group gutter list-group-lg list-group-sp sortable">
|
||||||
{{range .singles}}
|
{{range .singles}}
|
||||||
@ -18,7 +18,7 @@
|
|||||||
<a href="#"><i class="fa fa-times icon-muted fa-fw page-delete" data-id="{{.SingleId}}"></i></a>
|
<a href="#"><i class="fa fa-times icon-muted fa-fw page-delete" data-id="{{.SingleId}}"></i></a>
|
||||||
</span>
|
</span>
|
||||||
<div class="pull-right" style="margin-right: 10px">
|
<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>
|
||||||
<div class="clear">
|
<div class="clear">
|
||||||
{{.Title}}
|
{{.Title}}
|
||||||
@ -29,7 +29,7 @@
|
|||||||
</div>
|
</div>
|
||||||
{{if .singles}}
|
{{if .singles}}
|
||||||
<footer class="panel-footer text-right bg-light lter">
|
<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>
|
</footer>
|
||||||
{{end}}
|
{{end}}
|
||||||
</section>
|
</section>
|
||||||
|
@ -2,7 +2,10 @@
|
|||||||
<div class="m-b-md clearfix">
|
<div class="m-b-md clearfix">
|
||||||
<h3 class="m-b-none">
|
<h3 class="m-b-none">
|
||||||
{{msg . "themeSet"}}
|
{{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>
|
</h3>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
@ -12,9 +15,9 @@
|
|||||||
<div>
|
<div>
|
||||||
<form id="uploadAvatar" method="post" action="/member/blog/importTheme" enctype="multipart/form-data">
|
<form id="uploadAvatar" method="post" action="/member/blog/importTheme" enctype="multipart/form-data">
|
||||||
<div id="dropAvatar" class="dropzone">
|
<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">
|
<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>
|
</a>
|
||||||
<input type="file" name="file" multiple/>
|
<input type="file" name="file" multiple/>
|
||||||
<div id="avatarUploadMsg"></div>
|
<div id="avatarUploadMsg"></div>
|
||||||
@ -22,7 +25,7 @@
|
|||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<p>
|
<p>
|
||||||
当前主题:
|
{{msg . "currentTheme"}}:
|
||||||
</p>
|
</p>
|
||||||
<ul class="themes">
|
<ul class="themes">
|
||||||
<li class="theme">
|
<li class="theme">
|
||||||
@ -37,9 +40,9 @@
|
|||||||
</span>
|
</span>
|
||||||
<div class="theme-btns">
|
<div class="theme-btns">
|
||||||
<div class="btn-group" data-id="{{.activeTheme.ThemeId.Hex}}">
|
<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 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> 预览</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> 编辑</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>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
@ -47,7 +50,7 @@
|
|||||||
|
|
||||||
<hr />
|
<hr />
|
||||||
<p>
|
<p>
|
||||||
我的其它主题:
|
{{msg . "myOtherThemes"}}:
|
||||||
</p>
|
</p>
|
||||||
<ul class="themes">
|
<ul class="themes">
|
||||||
{{range $.otherThemes}}
|
{{range $.otherThemes}}
|
||||||
@ -64,11 +67,11 @@
|
|||||||
</span>
|
</span>
|
||||||
<div class="theme-btns">
|
<div class="theme-btns">
|
||||||
<div class="btn-group" data-id="{{.ThemeId.Hex}}">
|
<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-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> 导出</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> 预览</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> 编辑</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> 使用</a>
|
<a class="btn btn-primary btn-sm btn-active" data-loading-text="..."><span class="fa fa-check"></span> {{msg $ "use"}}</a>
|
||||||
{{if $.isAdmin}}
|
{{if $.isAdmin}}
|
||||||
<a class="btn btn-default btn-sm btn-public" data-loading-text="...">
|
<a class="btn btn-default btn-sm btn-public" data-loading-text="...">
|
||||||
{{if .IsDefault}}
|
{{if .IsDefault}}
|
||||||
@ -83,13 +86,13 @@
|
|||||||
</li>
|
</li>
|
||||||
{{end}}
|
{{end}}
|
||||||
{{else}}
|
{{else}}
|
||||||
无
|
{{msg $ "none"}}
|
||||||
{{end}}
|
{{end}}
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<hr />
|
<hr />
|
||||||
<p>
|
<p>
|
||||||
leanote主题市场:
|
{{msg . "leanoteThemeMarket"}}:
|
||||||
</p>
|
</p>
|
||||||
<ul class="themes">
|
<ul class="themes">
|
||||||
{{range $.optionThemes}}
|
{{range $.optionThemes}}
|
||||||
@ -104,7 +107,7 @@
|
|||||||
By: <a href="{{.AuthorUrl}}" target="_blank">{{.Author}}</a>
|
By: <a href="{{.AuthorUrl}}" target="_blank">{{.Author}}</a>
|
||||||
</span>
|
</span>
|
||||||
<p class="theme-btns" data-id="{{.ThemeId.Hex}}">
|
<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>
|
</p>
|
||||||
</li>
|
</li>
|
||||||
{{end}}
|
{{end}}
|
||||||
|
@ -2,13 +2,18 @@
|
|||||||
<div class="m-b-md">
|
<div class="m-b-md">
|
||||||
<h3 class="m-b-none">
|
<h3 class="m-b-none">
|
||||||
{{if .isNew}}
|
{{if .isNew}}
|
||||||
新建主题
|
{{msg $ "addTheme"}}
|
||||||
{{else}}
|
{{else}}
|
||||||
编辑主题
|
{{msg $ "updateTheme"}}
|
||||||
-
|
-
|
||||||
{{.theme.Name}}
|
{{.theme.Name}}
|
||||||
{{end}}
|
{{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>
|
</h3>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -42,7 +47,7 @@
|
|||||||
<div class="col-sm-4">
|
<div class="col-sm-4">
|
||||||
<section class="panel panel-default">
|
<section class="panel panel-default">
|
||||||
<header class="panel-heading">
|
<header class="panel-heading">
|
||||||
模板, 样式, 脚本:
|
{{msg . "tplStyleScript"}}:
|
||||||
</header>
|
</header>
|
||||||
<div class="panel-body" style="height:430px;overflow: auto;">
|
<div class="panel-body" style="height:430px;overflow: auto;">
|
||||||
|
|
||||||
@ -58,14 +63,14 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<footer class="panel-footer text-right bg-light lter">
|
<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>
|
</footer>
|
||||||
</section>
|
</section>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-8">
|
<div class="col-sm-8">
|
||||||
<section class="panel panel-default">
|
<section class="panel panel-default">
|
||||||
<header class="panel-heading">
|
<header class="panel-heading">
|
||||||
当前文件: <span id="curTpl">header.html</span>
|
{{msg . "currentFile"}}: <span id="curTpl">header.html</span>
|
||||||
<span id="msg"></span>
|
<span id="msg"></span>
|
||||||
</header>
|
</header>
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
@ -82,7 +87,7 @@
|
|||||||
<div class="col-sm-12">
|
<div class="col-sm-12">
|
||||||
<section class="panel panel-default">
|
<section class="panel panel-default">
|
||||||
<header class="panel-heading">
|
<header class="panel-heading">
|
||||||
图片: images/
|
{{msg . "image"}}: images/
|
||||||
</header>
|
</header>
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
<ul class="image-list" id="imageList">
|
<ul class="image-list" id="imageList">
|
||||||
@ -118,7 +123,7 @@ var theme = {
|
|||||||
saveBtnO: $("#saveBtn"),
|
saveBtnO: $("#saveBtn"),
|
||||||
newFileO: $("#newFile"),
|
newFileO: $("#newFile"),
|
||||||
curTpl: "",
|
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() {
|
init: function() {
|
||||||
var self = this;
|
var self = this;
|
||||||
self.showTplInfo();
|
self.showTplInfo();
|
||||||
@ -183,11 +188,11 @@ var theme = {
|
|||||||
info = self.tplInfos[file];
|
info = self.tplInfos[file];
|
||||||
if(!info) {
|
if(!info) {
|
||||||
if(file.indexOf(".css") > 0) {
|
if(file.indexOf(".css") > 0) {
|
||||||
info = "样式";
|
info = "{{msg . "style"}}";
|
||||||
} else if(file.indexOf(".js") > 0) {
|
} else if(file.indexOf(".js") > 0) {
|
||||||
info = "脚本";
|
info = "{{msg . "script"}}";
|
||||||
} else if(file.indexOf(".html") > 0) {
|
} else if(file.indexOf(".html") > 0) {
|
||||||
info = "模板";
|
info = "{{msg . "tpl"}}";
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$(this).find(".remove-file").remove();
|
$(this).find(".remove-file").remove();
|
||||||
@ -209,7 +214,7 @@ var theme = {
|
|||||||
if(t) {
|
if(t) {
|
||||||
t.button("loading");
|
t.button("loading");
|
||||||
}
|
}
|
||||||
self.msgO.html("正在保存...");
|
self.msgO.html("...");
|
||||||
ajaxPost("/member/blog/updateTplContent", {themeId: themeId, filename: self.curTpl, content: content}, function(re) {
|
ajaxPost("/member/blog/updateTplContent", {themeId: themeId, filename: self.curTpl, content: content}, function(re) {
|
||||||
if(t) {
|
if(t) {
|
||||||
t.button("reset");
|
t.button("reset");
|
||||||
@ -217,7 +222,7 @@ var theme = {
|
|||||||
if(reIsOk(re)) {
|
if(reIsOk(re)) {
|
||||||
self.cache[filename] = content;
|
self.cache[filename] = content;
|
||||||
// art.tips("Success");
|
// art.tips("Success");
|
||||||
self.msgO.html("保存成功")
|
self.msgO.html("{{msg . "saveSuccess"}}")
|
||||||
setTimeout(function() {
|
setTimeout(function() {
|
||||||
self.msgO.html("");
|
self.msgO.html("");
|
||||||
}, 3000);
|
}, 3000);
|
||||||
|
@ -8,17 +8,19 @@
|
|||||||
width: 200px;
|
width: 200px;
|
||||||
}
|
}
|
||||||
</style>
|
</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>
|
<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>
|
</p>
|
||||||
|
|
||||||
|
|
||||||
<script type="text/x-jsrender" id="tUser">
|
<script type="text/x-jsrender" id="tUser">
|
||||||
<li class="list-group-item" data-id="[[:UserId]]">
|
<li class="list-group-item" data-id="[[:UserId]]">
|
||||||
[[:Username]] [[if Email != Username]]([[:Email]])[[/if]]
|
[[: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>
|
</li>
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
@ -30,7 +32,7 @@
|
|||||||
<div class="clear">
|
<div class="clear">
|
||||||
<div class="h3 m-t-xs m-b-xs text-white">
|
<div class="h3 m-t-xs m-b-xs text-white">
|
||||||
<input type="text" data-ever="[[:Title]]" value="[[:Title]]" class="group-title" />
|
<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>
|
<i class="fa fa-remove text-white pull-right text-xs m-t-sm"></i>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
@ -39,7 +41,7 @@
|
|||||||
</header>
|
</header>
|
||||||
<ul class="list-group no-radius">
|
<ul class="list-group no-radius">
|
||||||
<li class="list-group-item">
|
<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>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</section>
|
</section>
|
||||||
@ -57,7 +59,7 @@
|
|||||||
<div class="clear">
|
<div class="clear">
|
||||||
<div class="h3 m-t-xs m-b-xs text-white">
|
<div class="h3 m-t-xs m-b-xs text-white">
|
||||||
<input type="text" data-ever="{{.Title}}" value="{{.Title}}" class="group-title" />
|
<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>
|
<i class="fa fa-remove text-white pull-right text-xs m-t-sm"></i>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
@ -69,13 +71,13 @@
|
|||||||
{{range .Users}}
|
{{range .Users}}
|
||||||
<li class="list-group-item" data-id="{{.UserId.Hex}}">
|
<li class="list-group-item" data-id="{{.UserId.Hex}}">
|
||||||
{{.Username}} {{if not (eq .Email .Username)}}({{.Email}}){{end}}
|
{{.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>
|
<span class="fa fa-remove pull-right text-xs m-t-sm"></span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
{{end}}
|
{{end}}
|
||||||
<li class="list-group-item">
|
<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>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</section>
|
</section>
|
||||||
@ -85,7 +87,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{template "member/footer.html" .}}
|
{{template "member/footer.html" .}}
|
||||||
<script src="http://leanote.com/public/blog/js/jsrender.js"></script>
|
<script src="/public/blog/js/jsrender.js"></script>
|
||||||
<script>
|
<script>
|
||||||
var group = {
|
var group = {
|
||||||
tGroupO: $("#tGroup"),
|
tGroupO: $("#tGroup"),
|
||||||
@ -111,7 +113,7 @@ var group = {
|
|||||||
addGroupEvent: function() {
|
addGroupEvent: function() {
|
||||||
var self = this;
|
var self = this;
|
||||||
$('.btn-add-group').click(function() {
|
$('.btn-add-group').click(function() {
|
||||||
ajaxPost("/member/group/addGroup", {title: "分组名"}, function(re) {
|
ajaxPost("/member/group/addGroup", {title: "Group Title"}, function(re) {
|
||||||
if(reIsOk(re)) {
|
if(reIsOk(re)) {
|
||||||
var group = re.Item;
|
var group = re.Item;
|
||||||
self.groupsO.prepend(self.tGroupO.render(group))
|
self.groupsO.prepend(self.tGroupO.render(group))
|
||||||
@ -217,4 +219,4 @@ $(function() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
{{template "member/end.html" .}}
|
{{template "member/end.html" .}}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
{{template "member/top.html" .}}
|
{{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">
|
<section class="panel panel-default">
|
||||||
<div class="row m-l-none m-r-none bg-light lter">
|
<div class="row m-l-none m-r-none bg-light lter">
|
||||||
@ -26,11 +26,10 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<!-- 最新动态 -->
|
<!-- 最新动态 -->
|
||||||
<section class="panel panel-default">
|
<section class="panel panel-default">
|
||||||
<h4 class="font-thin padder">
|
<h4 class="font-thin padder">
|
||||||
Leanote 动态
|
{{msg . "leanoteEvents"}}
|
||||||
</h4>
|
</h4>
|
||||||
<ul class="list-group" id="eventsList"></ul>
|
<ul class="list-group" id="eventsList"></ul>
|
||||||
</section>
|
</section>
|
||||||
|
@ -26,45 +26,47 @@
|
|||||||
</i>
|
</i>
|
||||||
</span>
|
</span>
|
||||||
<span>
|
<span>
|
||||||
帐户信息
|
{{msg . "accountInfo"}}
|
||||||
</span>
|
</span>
|
||||||
</a>
|
</a>
|
||||||
<!-- 导航列表 -->
|
<!-- 导航列表 -->
|
||||||
<ul class="nav lt">
|
<ul class="nav lt">
|
||||||
{{if $.userInfo.Email}}
|
|
||||||
<li>
|
|
||||||
<a href="/member/user/username">
|
|
||||||
<span>
|
|
||||||
用户名
|
|
||||||
</span>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
<li>
|
||||||
<a href="/member/user/avatar">
|
<a href="/member/user/avatar">
|
||||||
<span>
|
<span>
|
||||||
头像
|
{{msg . "avatar"}}
|
||||||
</span>
|
</span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
{{if $.userInfo.Email}}
|
||||||
|
<li>
|
||||||
|
<a href="/member/user/username">
|
||||||
|
<span>
|
||||||
|
{{msg . "username"}}
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
<li>
|
<li>
|
||||||
<a href="/member/user/email">
|
<a href="/member/user/email">
|
||||||
<span>
|
<span>
|
||||||
邮箱
|
{{msg . "email"}}
|
||||||
</span>
|
</span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="/member/user/password">
|
<a href="/member/user/password">
|
||||||
<span>
|
<span>
|
||||||
密码
|
{{msg . "password"}}
|
||||||
</span>
|
</span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
{{else}}
|
{{else}}
|
||||||
<li>
|
<li>
|
||||||
<a href="/member/user/add_account">
|
<a href="/member/user/addAccount">
|
||||||
<span>
|
<span>
|
||||||
添加leanote帐户
|
{{msg . "addLeanoteAccount"}}
|
||||||
</span>
|
</span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
@ -85,14 +87,14 @@
|
|||||||
</i>
|
</i>
|
||||||
</span>
|
</span>
|
||||||
<span>
|
<span>
|
||||||
博客
|
{{msg . "blog"}}
|
||||||
</span>
|
</span>
|
||||||
</a>
|
</a>
|
||||||
<ul class="nav lt">
|
<ul class="nav lt">
|
||||||
<li>
|
<li>
|
||||||
<a href="/member/blog/index">
|
<a href="/member/blog/index">
|
||||||
<span>
|
<span>
|
||||||
文章列表
|
{{msg . "postList"}}
|
||||||
</span>
|
</span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
@ -100,42 +102,43 @@
|
|||||||
<li>
|
<li>
|
||||||
<a href="/member/blog/base">
|
<a href="/member/blog/base">
|
||||||
<span>
|
<span>
|
||||||
基本信息
|
{{msg . "basicInfoSet"}}
|
||||||
</span>
|
</span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="/member/blog/comment">
|
<a href="/member/blog/comment">
|
||||||
<span>
|
<span>
|
||||||
评论
|
{{msg . "comment"}}
|
||||||
</span>
|
</span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li>
|
<li>
|
||||||
<a href="/member/blog/cate">
|
<a href="/member/blog/cate">
|
||||||
<span>
|
<span>
|
||||||
分类
|
{{msg . "cate"}}
|
||||||
</span>
|
</span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="/member/blog/single">
|
<a href="/member/blog/single">
|
||||||
<span>
|
<span>
|
||||||
单页面
|
{{msg . "single"}}
|
||||||
</span>
|
</span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="/member/blog/paging">
|
<a href="/member/blog/paging">
|
||||||
<span>
|
<span>
|
||||||
分页与排序设置
|
{{msg . "pagingAndSort"}}
|
||||||
</span>
|
</span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="/member/blog/theme">
|
<a href="/member/blog/theme">
|
||||||
<span>
|
<span>
|
||||||
主题
|
{{msg . "theme"}}
|
||||||
</span>
|
</span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
@ -149,9 +152,9 @@
|
|||||||
</b>
|
</b>
|
||||||
</i>
|
</i>
|
||||||
<span>
|
<span>
|
||||||
项目组/成员
|
{{msg . "group"}}
|
||||||
</span>
|
</span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</nav>
|
</nav>
|
@ -38,7 +38,7 @@
|
|||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="hidden-xs">
|
<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"}}
|
{{msg . "myBlog"}}
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
@ -115,4 +115,4 @@ padding: 10px 15px;text-align:center;">
|
|||||||
</ul>
|
</ul>
|
||||||
-->
|
-->
|
||||||
<!-- 主要内容区 -->
|
<!-- 主要内容区 -->
|
||||||
|
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
{{template "member/top.html" .}}
|
{{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="row">
|
||||||
|
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-8">
|
||||||
<form id="formData">
|
<form id="formData">
|
||||||
<section class="panel panel-default">
|
<section class="panel panel-default">
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
{{template "member/top.html" .}}
|
{{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="row">
|
||||||
|
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-8">
|
||||||
<form id="uploadAvatar" method="post" action="/file/uploadAvatar" enctype="multipart/form-data">
|
<form id="uploadAvatar" method="post" action="/file/uploadAvatar" enctype="multipart/form-data">
|
||||||
<section class="panel panel-default">
|
<section class="panel panel-default">
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
@ -14,7 +14,7 @@
|
|||||||
<img src="{{if .userInfo.Logo}}{{.userInfo.Logo}}{{else}}/images/blog/default_avatar.png{{end}}" id="avatar"/>
|
<img src="{{if .userInfo.Logo}}{{.userInfo.Logo}}{{else}}/images/blog/default_avatar.png{{end}}" id="avatar"/>
|
||||||
</div>
|
</div>
|
||||||
<a class="btn btn-success btn-choose-file">
|
<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>
|
</a>
|
||||||
<input type="file" name="file" multiple/>
|
<input type="file" name="file" multiple/>
|
||||||
</div>
|
</div>
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
{{template "member/top.html" .}}
|
{{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="row">
|
||||||
|
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-8">
|
||||||
<form id="formData">
|
<form id="formData">
|
||||||
<section class="panel panel-default">
|
<section class="panel panel-default">
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
|
@ -1,9 +1,7 @@
|
|||||||
{{template "member/top.html" .}}
|
{{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="row">
|
||||||
|
<div class="col-sm-8">
|
||||||
<div class="col-sm-6">
|
|
||||||
<form id="formData">
|
<form id="formData">
|
||||||
<section class="panel panel-default">
|
<section class="panel panel-default">
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
{{template "member/top.html" .}}
|
{{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="row">
|
||||||
|
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-8">
|
||||||
<form id="formData">
|
<form id="formData">
|
||||||
<section class="panel panel-default">
|
<section class="panel panel-default">
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
|
@ -12,17 +12,17 @@
|
|||||||
|
|
||||||
<link href="/css/bootstrap.css" rel="stylesheet" />
|
<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 -->
|
<!-- leanote css -->
|
||||||
<link href="css/font-awesome-4.2.0/css/font-awesome.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" />
|
<link href="/css/zTreeStyle/zTreeStyle.css" rel="stylesheet" />
|
||||||
<script>
|
<script>
|
||||||
var hash = location.hash;
|
var hash = location.hash;
|
||||||
if(hash == "#writing") {
|
if(hash.indexOf("writing") >= 0) {
|
||||||
var files = '<link rel="stylesheet" href="css/theme/writting-overwrite.css" type="text/css" id="themeLink" />';
|
var files = '<link rel="stylesheet" href="/css/theme/writting-overwrite.css" type="text/css" id="themeLink" />';
|
||||||
} else {
|
} 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);
|
document.write(files);
|
||||||
</script>
|
</script>
|
||||||
@ -184,6 +184,14 @@ function log(o) {
|
|||||||
</div>
|
</div>
|
||||||
</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">
|
<div class="pull-right top-nav writting-hide" id="myBlog">
|
||||||
<a target="_blank" href="{{$.blogUrl}}/{{.userInfo.Username}}">
|
<a target="_blank" href="{{$.blogUrl}}/{{.userInfo.Username}}">
|
||||||
{{msg . "myBlog"}}
|
{{msg . "myBlog"}}
|
||||||
@ -327,6 +335,11 @@ function log(o) {
|
|||||||
<div class="noteSplit" id="notebookSplitter"></div>
|
<div class="noteSplit" id="notebookSplitter"></div>
|
||||||
|
|
||||||
<div id="noteAndEditor">
|
<div id="noteAndEditor">
|
||||||
|
<div id="noteAndEditorMask">
|
||||||
|
<img src="/images/loading-24.gif"/>
|
||||||
|
<br />
|
||||||
|
loading...
|
||||||
|
</div>
|
||||||
<div id="noteList">
|
<div id="noteList">
|
||||||
<div class="clearfix" id="notesAndSort" style="position: relative">
|
<div class="clearfix" id="notesAndSort" style="position: relative">
|
||||||
<div class="pull-left">
|
<div class="pull-left">
|
||||||
@ -411,11 +424,11 @@ function log(o) {
|
|||||||
<span id="noteReadTags"></span>
|
<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>
|
<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>
|
<span id="noteReadCreatedTime"></span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -737,17 +750,22 @@ function log(o) {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<script src="js/jquery-1.9.0.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/jquery.ztree.all-3.5.js"></script>
|
||||||
<script src="js/i18n/msg.{{.locale}}.js"></script>
|
<script src="/js/i18n/msg.{{.locale}}.js"></script>
|
||||||
<script src="js/common.js"></script>
|
<script src="/js/common.js"></script>
|
||||||
<script>
|
<script>
|
||||||
var UrlPrefix = "{{.siteUrl}}"; // 为了发weibo
|
var UrlPrefix = '{{.siteUrl}}'; // 为了发weibo
|
||||||
var UserInfo = {{.userInfo|jsonJs}};
|
var UserInfo = {{.userInfo|jsonJs}};
|
||||||
var notebooks = {{.notebooks|jsonJs}};
|
var notebooks = {{.notebooks|jsonJs}};
|
||||||
var shareNotebooks = {{.shareNotebooks|jsonJs}};
|
var shareNotebooks = {{.shareNotebooks|jsonJs}};
|
||||||
var sharedUserInfos = {{.sharedUserInfos|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 noteContentJson = {{.noteContentJson|jsonJs}};
|
||||||
var tagsJson = {{.tags|jsonJs}};
|
var tagsJson = {{.tags|jsonJs}};
|
||||||
LEA.locale = "{{.locale}}";
|
LEA.locale = "{{.locale}}";
|
||||||
@ -755,35 +773,20 @@ var GlobalConfigs = {{.globalConfigs|jsonJs}}; // 2014/11/9 beta2
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<!-- 渲染view -->
|
<!-- 渲染view -->
|
||||||
<script src="tinymce/tinymce.js"></script>
|
<script src="/tinymce/tinymce.js"></script>
|
||||||
<script src="js/app/page.js"></script>
|
<script src="/js/app/page.js"></script>
|
||||||
<script src="/js/jQuery-slimScroll-1.3.0/jquery.slimscroll.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/contextmenu/jquery.contextmenu.js"></script>
|
||||||
<script src="js/jquery-cookie.js"></script>
|
<script src="/js/jquery-cookie.js"></script>
|
||||||
<script src="js/bootstrap-min.js"></script>
|
<script src="/js/bootstrap-min.js"></script>
|
||||||
<script src="js/app/note.js"></script>
|
<script src="/js/app/note.js"></script>
|
||||||
<script src="js/app/tag.js"></script>
|
<script src="/js/app/tag.js"></script>
|
||||||
<script src="js/app/notebook.js"></script>
|
<script src="/js/app/notebook.js"></script>
|
||||||
<script src="js/app/share.js"></script>
|
<script src="/js/app/share.js"></script>
|
||||||
<script src="js/object_id-min.js"></script>
|
<script src="/js/object_id-min.js"></script>
|
||||||
<script src="js/ZeroClipboard/ZeroClipboard-min.js"></script>
|
<script src="/js/ZeroClipboard/ZeroClipboard-min.js"></script>
|
||||||
<script>
|
<script>
|
||||||
Notebook.renderNotebooks(notebooks);
|
initPage();
|
||||||
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();
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<!-- context-menu -->
|
<!-- context-menu -->
|
||||||
|
@ -12,17 +12,17 @@
|
|||||||
|
|
||||||
<link href="/css/bootstrap.css" rel="stylesheet" />
|
<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 -->
|
<!-- leanote css -->
|
||||||
<link href="css/font-awesome-4.2.0/css/font-awesome.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" />
|
<link href="/css/zTreeStyle/zTreeStyle.css" rel="stylesheet" />
|
||||||
<script>
|
<script>
|
||||||
var hash = location.hash;
|
var hash = location.hash;
|
||||||
if(hash == "#writing") {
|
if(hash.indexOf("writing") >= 0) {
|
||||||
var files = '<link rel="stylesheet" href="css/theme/writting-overwrite.css" type="text/css" id="themeLink" />';
|
var files = '<link rel="stylesheet" href="/css/theme/writting-overwrite.css" type="text/css" id="themeLink" />';
|
||||||
} else {
|
} 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);
|
document.write(files);
|
||||||
</script>
|
</script>
|
||||||
@ -184,6 +184,14 @@ function log(o) {
|
|||||||
</div>
|
</div>
|
||||||
</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">
|
<div class="pull-right top-nav writting-hide" id="myBlog">
|
||||||
<a target="_blank" href="{{$.blogUrl}}/{{.userInfo.Username}}">
|
<a target="_blank" href="{{$.blogUrl}}/{{.userInfo.Username}}">
|
||||||
{{msg . "myBlog"}}
|
{{msg . "myBlog"}}
|
||||||
@ -327,6 +335,11 @@ function log(o) {
|
|||||||
<div class="noteSplit" id="notebookSplitter"></div>
|
<div class="noteSplit" id="notebookSplitter"></div>
|
||||||
|
|
||||||
<div id="noteAndEditor">
|
<div id="noteAndEditor">
|
||||||
|
<div id="noteAndEditorMask">
|
||||||
|
<img src="/images/loading-24.gif"/>
|
||||||
|
<br />
|
||||||
|
loading...
|
||||||
|
</div>
|
||||||
<div id="noteList">
|
<div id="noteList">
|
||||||
<div class="clearfix" id="notesAndSort" style="position: relative">
|
<div class="clearfix" id="notesAndSort" style="position: relative">
|
||||||
<div class="pull-left">
|
<div class="pull-left">
|
||||||
@ -411,11 +424,11 @@ function log(o) {
|
|||||||
<span id="noteReadTags"></span>
|
<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>
|
<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>
|
<span id="noteReadCreatedTime"></span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -737,17 +750,22 @@ function log(o) {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<script src="js/jquery-1.9.0.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/jquery.ztree.all-3.5.js"></script>
|
||||||
<script src="js/i18n/msg.{{.locale}}.js"></script>
|
<script src="/js/i18n/msg.{{.locale}}.js"></script>
|
||||||
<script src="js/common-min.js"></script>
|
<script src="/js/common-min.js"></script>
|
||||||
<script>
|
<script>
|
||||||
var UrlPrefix = "{{.siteUrl}}"; // 为了发weibo
|
var UrlPrefix = '{{.siteUrl}}'; // 为了发weibo
|
||||||
var UserInfo = {{.userInfo|jsonJs}};
|
var UserInfo = {{.userInfo|jsonJs}};
|
||||||
var notebooks = {{.notebooks|jsonJs}};
|
var notebooks = {{.notebooks|jsonJs}};
|
||||||
var shareNotebooks = {{.shareNotebooks|jsonJs}};
|
var shareNotebooks = {{.shareNotebooks|jsonJs}};
|
||||||
var sharedUserInfos = {{.sharedUserInfos|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 noteContentJson = {{.noteContentJson|jsonJs}};
|
||||||
var tagsJson = {{.tags|jsonJs}};
|
var tagsJson = {{.tags|jsonJs}};
|
||||||
LEA.locale = "{{.locale}}";
|
LEA.locale = "{{.locale}}";
|
||||||
@ -755,35 +773,20 @@ var GlobalConfigs = {{.globalConfigs|jsonJs}}; // 2014/11/9 beta2
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<!-- 渲染view -->
|
<!-- 渲染view -->
|
||||||
<script src="tinymce/tinymce.js"></script>
|
<script src="/tinymce/tinymce.js"></script>
|
||||||
<script src="js/app/page-min.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/jQuery-slimScroll-1.3.0/jquery.slimscroll.js"></script>
|
||||||
<script src="/js/contextmenu/jquery.contextmenu-min.js"></script>
|
<script src="/js/contextmenu/jquery.contextmenu-min.js"></script>
|
||||||
<script src="js/jquery-cookie.js"></script>
|
<script src="/js/jquery-cookie.js"></script>
|
||||||
<script src="js/bootstrap-min.js"></script>
|
<script src="/js/bootstrap-min.js"></script>
|
||||||
<script src="js/app/note-min.js"></script>
|
<script src="/js/app/note-min.js"></script>
|
||||||
<script src="js/app/tag-min.js"></script>
|
<script src="/js/app/tag-min.js"></script>
|
||||||
<script src="js/app/notebook-min.js"></script>
|
<script src="/js/app/notebook-min.js"></script>
|
||||||
<script src="js/app/share-min.js"></script>
|
<script src="/js/app/share-min.js"></script>
|
||||||
<script src="js/object_id-min.js"></script>
|
<script src="/js/object_id-min.js"></script>
|
||||||
<script src="js/ZeroClipboard/ZeroClipboard-min.js"></script>
|
<script src="/js/ZeroClipboard/ZeroClipboard-min.js"></script>
|
||||||
<script>
|
<script>
|
||||||
Notebook.renderNotebooks(notebooks);
|
initPage();
|
||||||
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();
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<!-- context-menu -->
|
<!-- context-menu -->
|
||||||
|
@ -129,9 +129,12 @@ themeSetting=Theme
|
|||||||
setAvatar=Avatar
|
setAvatar=Avatar
|
||||||
logout=Logout
|
logout=Logout
|
||||||
basicInfo=Basic
|
basicInfo=Basic
|
||||||
|
basicInfoSet=Blog Basic Setting
|
||||||
updateEmail=Update email
|
updateEmail=Update email
|
||||||
usernameSetting=Update username
|
usernameSetting=Update username
|
||||||
username=Username
|
username=Username
|
||||||
|
avatar=Avatar
|
||||||
|
chooseImage=Choose Image
|
||||||
oldPassword=Old password
|
oldPassword=Old password
|
||||||
newPassword=New password
|
newPassword=New password
|
||||||
admin=Admin
|
admin=Admin
|
||||||
@ -144,7 +147,7 @@ uploadImage=Upload image
|
|||||||
|
|
||||||
# blog
|
# blog
|
||||||
aboutMe=About me
|
aboutMe=About me
|
||||||
blogSet=Set blog
|
blogSet=Blog Settings
|
||||||
|
|
||||||
# index
|
# index
|
||||||
discussion=Discussion
|
discussion=Discussion
|
||||||
@ -243,8 +246,94 @@ latest=Latest
|
|||||||
|
|
||||||
# 用户中心
|
# 用户中心
|
||||||
memberCenter=Member Center
|
memberCenter=Member Center
|
||||||
userNotExists=该成员沿未注册
|
userNotExists=The user is not exists
|
||||||
hasUsers=已存在该成员
|
hasUsers=The user already exists
|
||||||
|
|
||||||
|
# yu
|
||||||
|
service=Service
|
||||||
|
imageSizeOver=Sorry, you have no image opacity, please <a href="/service">upgrade your account</a>.
|
||||||
|
attachSizeOver=Sorry, you have no attachment opacity, please <a href="/service">upgrade your account</a>.
|
||||||
|
|
||||||
|
|
||||||
|
#memeber
|
||||||
|
welcomeToLeanote=Welcome
|
||||||
|
accountInfo=Account Info
|
||||||
|
accountType=Account Type
|
||||||
|
premiumAccountType=Premium
|
||||||
|
normalAccountType=Normal
|
||||||
|
imageSize=Image Opacity
|
||||||
|
attachSize=Attachment Opacity
|
||||||
|
upgrade=Upgrade My Account
|
||||||
|
leanoteEvents=Leanote News
|
||||||
|
addLeanoteAccount=New Leanote Account
|
||||||
|
defaultComment=Default leanote comment system
|
||||||
|
upgradeAccountTips=I want to using a custom domain for my blog, <a class="btn btn-default" href="/service">Upgrade My Account</a>
|
||||||
|
cateIsPublicNotebook=Category is the published notebooks
|
||||||
|
dragAndSort=Drag it to sort
|
||||||
|
permanentLink=Permanent Link
|
||||||
|
cate=Category
|
||||||
|
noCates=No Category
|
||||||
|
single=Single Page
|
||||||
|
singleTips=You can add many single pages
|
||||||
|
addSingle=New single page
|
||||||
|
updateSingle=Update single page
|
||||||
|
inputSingleTitle=Single page title is required
|
||||||
|
saveSort=Save sequencing
|
||||||
|
pagingAndSort=Paging And Sort Settings
|
||||||
|
perPageSize=Per page size
|
||||||
|
sortField=Sorter field
|
||||||
|
sortType=Sorter type
|
||||||
|
publicTime=Published time
|
||||||
|
createdTime=Created time
|
||||||
|
updatedTime=Updated time
|
||||||
|
desc=Desc
|
||||||
|
asc=Asc
|
||||||
|
postList=Post List
|
||||||
|
hasSelfDefined=Has defined
|
||||||
|
noSelfDefined=Not defined
|
||||||
|
setAbstract=Abstract settings
|
||||||
|
title=Title
|
||||||
|
content=Content
|
||||||
|
|
||||||
|
addTheme=New theme
|
||||||
|
importTheme=Import theme
|
||||||
|
exportTheme=Export theme
|
||||||
|
export=Export
|
||||||
|
preview=Preview
|
||||||
|
edit=Edit
|
||||||
|
use=Use
|
||||||
|
install=Install
|
||||||
|
currentTheme=Current theme
|
||||||
|
myOtherThemes=My other themes
|
||||||
|
leanoteThemeMarket=Leanote theme market
|
||||||
|
updateTheme=Update Theme
|
||||||
|
tplStyleScript=template, style, script
|
||||||
|
newFile=New file
|
||||||
|
image=Image
|
||||||
|
currentFile=Current file
|
||||||
|
tpl=Template
|
||||||
|
style=Style
|
||||||
|
script=Script
|
||||||
|
header=Header
|
||||||
|
footer=Footer
|
||||||
|
index=Home
|
||||||
|
cate=Category
|
||||||
|
search=Search
|
||||||
|
single=Single Page
|
||||||
|
archive=Archive
|
||||||
|
post=Post
|
||||||
|
tags=Tags
|
||||||
|
tag_posts=Tag's posts
|
||||||
|
share_comment=Comments
|
||||||
|
themeJson=Theme settings
|
||||||
|
paging=Paging
|
||||||
|
highlight=Code highlight
|
||||||
|
|
||||||
|
group=Group
|
||||||
|
newGroup=New group
|
||||||
|
deleteGroup=Delete group
|
||||||
|
addMemberTips=Input username or email to add member
|
||||||
|
deleteMember=Delete member
|
||||||
|
|
||||||
# error
|
# error
|
||||||
notFound=This page cann't found.
|
notFound=This page cann't found.
|
||||||
|
@ -150,9 +150,12 @@ themeSetting=主题设置
|
|||||||
setAvatar=头像设置
|
setAvatar=头像设置
|
||||||
logout=退出
|
logout=退出
|
||||||
basicInfo=基本信息
|
basicInfo=基本信息
|
||||||
|
basicInfoSet=博客基本设置
|
||||||
updateEmail=修改Email
|
updateEmail=修改Email
|
||||||
usernameSetting=用户名设置
|
usernameSetting=用户名设置
|
||||||
username=用户名
|
username=用户名
|
||||||
|
avatar=头像
|
||||||
|
chooseImage=选择图片
|
||||||
oldPassword=旧密码
|
oldPassword=旧密码
|
||||||
newPassword=新密码
|
newPassword=新密码
|
||||||
admin=后台管理
|
admin=后台管理
|
||||||
@ -272,5 +275,91 @@ memberCenter=用户中心
|
|||||||
userNotExists=该成员沿未注册
|
userNotExists=该成员沿未注册
|
||||||
hasUsers=已存在该成员
|
hasUsers=已存在该成员
|
||||||
|
|
||||||
|
# yu
|
||||||
|
service=服务
|
||||||
|
imageSizeOver=对不起, 您的图片容量不足, 请<a href="/service">升级您的帐户</a>
|
||||||
|
attachSizeOver=对不起, 您的附件容量不足, 请<a href="/service">升级您的帐户</a>
|
||||||
|
|
||||||
|
#memeber
|
||||||
|
welcomeToLeanote=欢迎来到leanote
|
||||||
|
accountInfo=帐户信息
|
||||||
|
accountType=帐户类型
|
||||||
|
premiumAccountType=彩色套餐
|
||||||
|
normalAccountType=共享套餐
|
||||||
|
imageSize=图片空间
|
||||||
|
attachSize=附件空间
|
||||||
|
upgrade=升级套餐
|
||||||
|
leanoteEvents=Leanote动态
|
||||||
|
addLeanoteAccount=新建Leanote帐户
|
||||||
|
defaultComment=默认leanote评论系统
|
||||||
|
upgradeAccountTips=Leanote支持绑定自己的域名到博客上, 请 <a class="btn btn-default" href="/service">升级您的帐户</a>
|
||||||
|
cateIsPublicNotebook=分类是公开为博客的笔记本
|
||||||
|
dragAndSort=拖动可排序
|
||||||
|
permanentLink=固定链接
|
||||||
|
cate=分类
|
||||||
|
noCates=无分类
|
||||||
|
single=单页面
|
||||||
|
singleTips=您可以添加多个单页面
|
||||||
|
addSingle=添加单页面
|
||||||
|
updateSingle=修改单页面
|
||||||
|
inputSingleTitle=请输入单页面标题
|
||||||
|
saveSort=保存排序
|
||||||
|
pagingAndSort=分页与排序设置
|
||||||
|
perPageSize=每页记录数
|
||||||
|
sortField=排序字段
|
||||||
|
sortType=排序类型
|
||||||
|
publicTime=发表时间
|
||||||
|
createdTime=创建时间
|
||||||
|
updatedTime=更新时间
|
||||||
|
desc=降序
|
||||||
|
asc=升序
|
||||||
|
postList=文章列表
|
||||||
|
hasSelfDefined=已设置
|
||||||
|
noSelfDefined=未设置
|
||||||
|
setAbstract=摘要设置
|
||||||
|
title=标题
|
||||||
|
content=内容
|
||||||
|
|
||||||
|
addTheme=添加主题
|
||||||
|
importTheme=导入主题
|
||||||
|
exportTheme=导出主题
|
||||||
|
export=导出
|
||||||
|
preview=预览
|
||||||
|
edit=编辑
|
||||||
|
use=使用
|
||||||
|
install=安装
|
||||||
|
currentTheme=当前主题
|
||||||
|
myOtherThemes=我的其它主题
|
||||||
|
leanoteThemeMarket=Leanote主题市场
|
||||||
|
updateTheme=编辑主题
|
||||||
|
tplStyleScript=模板, 样式, 脚本
|
||||||
|
newFile=新建文件
|
||||||
|
image=图片
|
||||||
|
currentFile=当前文件
|
||||||
|
tpl=模板
|
||||||
|
style=样式
|
||||||
|
script=脚本
|
||||||
|
header=头部
|
||||||
|
footer=底部
|
||||||
|
index=首页
|
||||||
|
cate=分类页
|
||||||
|
search=搜索页
|
||||||
|
single=单页
|
||||||
|
archive=归档页
|
||||||
|
post=文章页
|
||||||
|
tags=标签页
|
||||||
|
tag_posts=标签文章页
|
||||||
|
share_comment=分享评论
|
||||||
|
themeJson=主题配置
|
||||||
|
paging=分页
|
||||||
|
highlight=高亮
|
||||||
|
|
||||||
|
group=用户组
|
||||||
|
newGroup=新建组
|
||||||
|
deleteGroup=删除组
|
||||||
|
addMemberTips=输入用户名或邮箱添加成员
|
||||||
|
deleteMember=删除成员
|
||||||
|
|
||||||
|
|
||||||
# 必须要加这个, 奇怪
|
# 必须要加这个, 奇怪
|
||||||
[CN]
|
[CN]
|
||||||
|
15
public/css/css/editor-writting-mode.css
Normal file
15
public/css/css/editor-writting-mode.css
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
html {
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
body {
|
||||||
|
background-color: #fbfcf7;
|
||||||
|
}
|
||||||
|
* {
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
pre {
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
img {
|
||||||
|
max-width: 100% !important;
|
||||||
|
}
|
27
public/css/css/editor.css
Normal file
27
public/css/css/editor.css
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
html {
|
||||||
|
margin-top: 3px;
|
||||||
|
padding: 3px;
|
||||||
|
border: 1px solid #ebeff2;
|
||||||
|
border-radius: 5px;
|
||||||
|
-webkit-border-radius: 5px;
|
||||||
|
border-width: 1px;
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
* {
|
||||||
|
font-family: 'Open Sans', 'Helvetica Neue', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', 'WenQuanYi Micro Hei', sans-serif;
|
||||||
|
}
|
||||||
|
.mce-item-table,
|
||||||
|
.mce-item-table td,
|
||||||
|
.mce-item-table th,
|
||||||
|
.mce-item-table caption {
|
||||||
|
border: 1px solid #9B9898;
|
||||||
|
border-collapse: collapse;
|
||||||
|
}
|
||||||
|
img {
|
||||||
|
max-width: 100% !important;
|
||||||
|
}
|
||||||
|
@media screen and (max-width: 500px) {
|
||||||
|
* {
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
}
|
1927
public/css/css/writting-overwrite.css
Normal file
1927
public/css/css/writting-overwrite.css
Normal file
File diff suppressed because it is too large
Load Diff
@ -149,6 +149,20 @@
|
|||||||
overflow-y: hidden;
|
overflow-y: hidden;
|
||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
|
// 笔记列表与editor的遮罩
|
||||||
|
#noteAndEditorMask {
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
top: 0;
|
||||||
|
bottom: 0;
|
||||||
|
background: #fff;
|
||||||
|
text-align: center;
|
||||||
|
padding-top: 60px;
|
||||||
|
opacity: .3;
|
||||||
|
z-index: 20;
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
//-----------------
|
//-----------------
|
||||||
// 下拉菜单
|
// 下拉菜单
|
||||||
@ -625,7 +639,7 @@
|
|||||||
max-width: 30px;
|
max-width: 30px;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
// border: 1px solid #ccc;
|
// border: 1px solid #ccc;
|
||||||
border-radius: 50%;
|
border-radius: 50%;
|
||||||
}
|
}
|
||||||
#tool {
|
#tool {
|
||||||
position: relative;
|
position: relative;
|
||||||
@ -940,4 +954,17 @@ top: 4px;
|
|||||||
|
|
||||||
.dropdown-menu .divider {
|
.dropdown-menu .divider {
|
||||||
margin: 3px 0;
|
margin: 3px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// ace 重置css, 必须
|
||||||
|
.ace_eidtor, .ace_editor * {
|
||||||
|
font: 12px/normal 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', 'source-code-pro', monospace;
|
||||||
|
}
|
||||||
|
|
||||||
|
#editorContent {
|
||||||
|
border: 1px solid #ccc;
|
||||||
|
border-radius: 5px;
|
||||||
|
padding: 5px;
|
||||||
|
outline: none;
|
||||||
|
margin-top: 5px;
|
||||||
}
|
}
|
@ -139,6 +139,19 @@
|
|||||||
overflow-y: hidden;
|
overflow-y: hidden;
|
||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
|
#noteAndEditorMask {
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
top: 0;
|
||||||
|
bottom: 0;
|
||||||
|
background: #fff;
|
||||||
|
text-align: center;
|
||||||
|
padding-top: 60px;
|
||||||
|
opacity: .3;
|
||||||
|
z-index: 20;
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
.dropdown-submenu {
|
.dropdown-submenu {
|
||||||
position: relative;
|
position: relative;
|
||||||
}
|
}
|
||||||
@ -869,6 +882,17 @@
|
|||||||
.dropdown-menu .divider {
|
.dropdown-menu .divider {
|
||||||
margin: 3px 0;
|
margin: 3px 0;
|
||||||
}
|
}
|
||||||
|
.ace_eidtor,
|
||||||
|
.ace_editor * {
|
||||||
|
font: 12px / normal 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', 'source-code-pro', monospace;
|
||||||
|
}
|
||||||
|
#editorContent {
|
||||||
|
border: 1px solid #ccc;
|
||||||
|
border-radius: 5px;
|
||||||
|
padding: 5px;
|
||||||
|
outline: none;
|
||||||
|
margin-top: 5px;
|
||||||
|
}
|
||||||
::selection {
|
::selection {
|
||||||
background: #000000;
|
background: #000000;
|
||||||
color: #ffffff;
|
color: #ffffff;
|
||||||
@ -2012,8 +2036,8 @@ background-position:-1px -670px
|
|||||||
#noteReadContent,
|
#noteReadContent,
|
||||||
#attachList,
|
#attachList,
|
||||||
#tags {
|
#tags {
|
||||||
overflow: scroll !important;
|
|
||||||
-webkit-overflow-scrolling: touch !important;
|
-webkit-overflow-scrolling: touch !important;
|
||||||
|
overflow: auto !important;
|
||||||
}
|
}
|
||||||
#attachMenu {
|
#attachMenu {
|
||||||
width: 320px;
|
width: 320px;
|
||||||
@ -2053,7 +2077,7 @@ background-position:-1px -670px
|
|||||||
opacity: 0.8;
|
opacity: 0.8;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@media screen and (max-device-width: 1024px) and (orientation: landscape) {
|
@media screen and (max-width: 1024px) {
|
||||||
#noteItemList,
|
#noteItemList,
|
||||||
#notebook,
|
#notebook,
|
||||||
#leftNotebook,
|
#leftNotebook,
|
||||||
@ -2067,12 +2091,12 @@ background-position:-1px -670px
|
|||||||
#noteReadContent,
|
#noteReadContent,
|
||||||
#attachList,
|
#attachList,
|
||||||
#tags {
|
#tags {
|
||||||
overflow: scroll !important;
|
overflow: auto !important;
|
||||||
-webkit-overflow-scrolling: touch !important;
|
-webkit-overflow-scrolling: touch !important;
|
||||||
}
|
}
|
||||||
#tag {
|
#tag {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
right: 140px;
|
right: 310px;
|
||||||
left: 0;
|
left: 0;
|
||||||
top: 0;
|
top: 0;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
@ -2121,7 +2145,7 @@ background-position:-1px -670px
|
|||||||
#noteReadContent,
|
#noteReadContent,
|
||||||
#attachList,
|
#attachList,
|
||||||
#tags {
|
#tags {
|
||||||
overflow: scroll !important;
|
overflow: auto !important;
|
||||||
-webkit-overflow-scrolling: touch !important;
|
-webkit-overflow-scrolling: touch !important;
|
||||||
}
|
}
|
||||||
#lea,
|
#lea,
|
||||||
|
@ -216,8 +216,8 @@ a:focus, a:hover, a:active {
|
|||||||
#attachList,
|
#attachList,
|
||||||
#tags
|
#tags
|
||||||
{
|
{
|
||||||
overflow: scroll !important;
|
|
||||||
-webkit-overflow-scrolling: touch !important; // for iphone
|
-webkit-overflow-scrolling: touch !important; // for iphone
|
||||||
|
overflow: auto !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
#attachMenu {
|
#attachMenu {
|
||||||
@ -265,7 +265,8 @@ a:focus, a:hover, a:active {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// ipad
|
// ipad
|
||||||
@media screen and (max-device-width: 1024px) and (orientation: landscape) {
|
// @media screen and (max-device-width: 1024px) and (orientation: landscape) {
|
||||||
|
@media screen and (max-width: 1024px) {
|
||||||
#noteItemList, #notebook, #leftNotebook,
|
#noteItemList, #notebook, #leftNotebook,
|
||||||
.slimScrollDiv,
|
.slimScrollDiv,
|
||||||
#editorContent_ifr,
|
#editorContent_ifr,
|
||||||
@ -276,13 +277,13 @@ a:focus, a:hover, a:active {
|
|||||||
#attachList,
|
#attachList,
|
||||||
#tags
|
#tags
|
||||||
{
|
{
|
||||||
overflow: scroll !important;
|
overflow: auto !important;
|
||||||
-webkit-overflow-scrolling: touch !important; // for iphone
|
-webkit-overflow-scrolling: touch !important; // for iphone
|
||||||
}
|
}
|
||||||
|
|
||||||
#tag {
|
#tag {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
right: 140px;
|
right: 310px;
|
||||||
left:0;
|
left:0;
|
||||||
top:0;
|
top:0;
|
||||||
bottom:0;
|
bottom:0;
|
||||||
@ -332,7 +333,7 @@ a:focus, a:hover, a:active {
|
|||||||
#attachList,
|
#attachList,
|
||||||
#tags
|
#tags
|
||||||
{
|
{
|
||||||
overflow: scroll !important;
|
overflow: auto !important;
|
||||||
-webkit-overflow-scrolling: touch !important; // for iphone
|
-webkit-overflow-scrolling: touch !important; // for iphone
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -139,6 +139,19 @@
|
|||||||
overflow-y: hidden;
|
overflow-y: hidden;
|
||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
|
#noteAndEditorMask {
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
top: 0;
|
||||||
|
bottom: 0;
|
||||||
|
background: #fff;
|
||||||
|
text-align: center;
|
||||||
|
padding-top: 60px;
|
||||||
|
opacity: .3;
|
||||||
|
z-index: 20;
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
.dropdown-submenu {
|
.dropdown-submenu {
|
||||||
position: relative;
|
position: relative;
|
||||||
}
|
}
|
||||||
@ -869,6 +882,17 @@
|
|||||||
.dropdown-menu .divider {
|
.dropdown-menu .divider {
|
||||||
margin: 3px 0;
|
margin: 3px 0;
|
||||||
}
|
}
|
||||||
|
.ace_eidtor,
|
||||||
|
.ace_editor * {
|
||||||
|
font: 12px / normal 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', 'source-code-pro', monospace;
|
||||||
|
}
|
||||||
|
#editorContent {
|
||||||
|
border: 1px solid #ccc;
|
||||||
|
border-radius: 5px;
|
||||||
|
padding: 5px;
|
||||||
|
outline: none;
|
||||||
|
margin-top: 5px;
|
||||||
|
}
|
||||||
::selection {
|
::selection {
|
||||||
background: #000000;
|
background: #000000;
|
||||||
color: #ffffff;
|
color: #ffffff;
|
||||||
@ -1947,8 +1971,8 @@ background-position:-1px -670px
|
|||||||
#noteReadContent,
|
#noteReadContent,
|
||||||
#attachList,
|
#attachList,
|
||||||
#tags {
|
#tags {
|
||||||
overflow: scroll !important;
|
|
||||||
-webkit-overflow-scrolling: touch !important;
|
-webkit-overflow-scrolling: touch !important;
|
||||||
|
overflow: auto !important;
|
||||||
}
|
}
|
||||||
#attachMenu {
|
#attachMenu {
|
||||||
width: 320px;
|
width: 320px;
|
||||||
@ -1988,7 +2012,7 @@ background-position:-1px -670px
|
|||||||
opacity: 0.8;
|
opacity: 0.8;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@media screen and (max-device-width: 1024px) and (orientation: landscape) {
|
@media screen and (max-width: 1024px) {
|
||||||
#noteItemList,
|
#noteItemList,
|
||||||
#notebook,
|
#notebook,
|
||||||
#leftNotebook,
|
#leftNotebook,
|
||||||
@ -2002,12 +2026,12 @@ background-position:-1px -670px
|
|||||||
#noteReadContent,
|
#noteReadContent,
|
||||||
#attachList,
|
#attachList,
|
||||||
#tags {
|
#tags {
|
||||||
overflow: scroll !important;
|
overflow: auto !important;
|
||||||
-webkit-overflow-scrolling: touch !important;
|
-webkit-overflow-scrolling: touch !important;
|
||||||
}
|
}
|
||||||
#tag {
|
#tag {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
right: 140px;
|
right: 310px;
|
||||||
left: 0;
|
left: 0;
|
||||||
top: 0;
|
top: 0;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
@ -2056,7 +2080,7 @@ background-position:-1px -670px
|
|||||||
#noteReadContent,
|
#noteReadContent,
|
||||||
#attachList,
|
#attachList,
|
||||||
#tags {
|
#tags {
|
||||||
overflow: scroll !important;
|
overflow: auto !important;
|
||||||
-webkit-overflow-scrolling: touch !important;
|
-webkit-overflow-scrolling: touch !important;
|
||||||
}
|
}
|
||||||
#lea,
|
#lea,
|
||||||
|
@ -139,6 +139,19 @@
|
|||||||
overflow-y: hidden;
|
overflow-y: hidden;
|
||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
|
#noteAndEditorMask {
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
top: 0;
|
||||||
|
bottom: 0;
|
||||||
|
background: #fff;
|
||||||
|
text-align: center;
|
||||||
|
padding-top: 60px;
|
||||||
|
opacity: .3;
|
||||||
|
z-index: 20;
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
.dropdown-submenu {
|
.dropdown-submenu {
|
||||||
position: relative;
|
position: relative;
|
||||||
}
|
}
|
||||||
@ -869,6 +882,17 @@
|
|||||||
.dropdown-menu .divider {
|
.dropdown-menu .divider {
|
||||||
margin: 3px 0;
|
margin: 3px 0;
|
||||||
}
|
}
|
||||||
|
.ace_eidtor,
|
||||||
|
.ace_editor * {
|
||||||
|
font: 12px / normal 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', 'source-code-pro', monospace;
|
||||||
|
}
|
||||||
|
#editorContent {
|
||||||
|
border: 1px solid #ccc;
|
||||||
|
border-radius: 5px;
|
||||||
|
padding: 5px;
|
||||||
|
outline: none;
|
||||||
|
margin-top: 5px;
|
||||||
|
}
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: 'Open Sans';
|
font-family: 'Open Sans';
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
|
@ -139,6 +139,19 @@
|
|||||||
overflow-y: hidden;
|
overflow-y: hidden;
|
||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
|
#noteAndEditorMask {
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
top: 0;
|
||||||
|
bottom: 0;
|
||||||
|
background: #fff;
|
||||||
|
text-align: center;
|
||||||
|
padding-top: 60px;
|
||||||
|
opacity: .3;
|
||||||
|
z-index: 20;
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
.dropdown-submenu {
|
.dropdown-submenu {
|
||||||
position: relative;
|
position: relative;
|
||||||
}
|
}
|
||||||
@ -869,6 +882,17 @@
|
|||||||
.dropdown-menu .divider {
|
.dropdown-menu .divider {
|
||||||
margin: 3px 0;
|
margin: 3px 0;
|
||||||
}
|
}
|
||||||
|
.ace_eidtor,
|
||||||
|
.ace_editor * {
|
||||||
|
font: 12px / normal 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', 'source-code-pro', monospace;
|
||||||
|
}
|
||||||
|
#editorContent {
|
||||||
|
border: 1px solid #ccc;
|
||||||
|
border-radius: 5px;
|
||||||
|
padding: 5px;
|
||||||
|
outline: none;
|
||||||
|
margin-top: 5px;
|
||||||
|
}
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: 'Open Sans';
|
font-family: 'Open Sans';
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
|
File diff suppressed because one or more lines are too long
2
public/js/app/note-min.js
vendored
2
public/js/app/note-min.js
vendored
File diff suppressed because one or more lines are too long
@ -14,15 +14,15 @@ Note.interval = ""; // 定时器
|
|||||||
Note.itemIsBlog = '<div class="item-blog"><i class="fa fa-bold" title="blog"></i></div><div class="item-setting"><i class="fa fa-cog" title="setting"></i></div>';
|
Note.itemIsBlog = '<div class="item-blog"><i class="fa fa-bold" title="blog"></i></div><div class="item-setting"><i class="fa fa-cog" title="setting"></i></div>';
|
||||||
// for render
|
// for render
|
||||||
Note.itemTplNoImg = '<li href="#" class="item ?" noteId="?">'
|
Note.itemTplNoImg = '<li href="#" class="item ?" noteId="?">'
|
||||||
Note.itemTplNoImg += Note.itemIsBlog +'<div class="item-desc"><p class="item-title">?</p><p class="item-info"><i class="fa fa-book"></i> <span class="note-notebook">?</span> <i class="fa fa-calendar"></i> <span class="updated-time">?</span></p><p class="desc">?</p></div></li>';
|
Note.itemTplNoImg += Note.itemIsBlog +'<div class="item-desc"><p class="item-title">?</p><p class="item-info"><i class="fa fa-book"></i> <span class="note-notebook">?</span> <i class="fa fa-clock-o"></i> <span class="updated-time">?</span></p><p class="desc">?</p></div></li>';
|
||||||
|
|
||||||
// 有image
|
// 有image
|
||||||
Note.itemTpl = '<li href="#" class="item ? item-image" noteId="?"><div class="item-thumb" style=""><img src="?"/></div>'
|
Note.itemTpl = '<li href="#" class="item ? item-image" noteId="?"><div class="item-thumb" style=""><img src="?"/></div>'
|
||||||
Note.itemTpl +=Note.itemIsBlog + '<div class="item-desc" style=""><p class="item-title">?</p><p class="item-info"><i class="fa fa-book"></i> <span class="note-notebook">?</span> <i class="fa fa-calendar"></i> <span class="updated-time">?</span></p><p class="desc">?</p></div></li>';
|
Note.itemTpl +=Note.itemIsBlog + '<div class="item-desc" style=""><p class="item-title">?</p><p class="item-info"><i class="fa fa-book"></i> <span class="note-notebook">?</span> <i class="fa fa-clock-o"></i> <span class="updated-time">?</span></p><p class="desc">?</p></div></li>';
|
||||||
|
|
||||||
// for new
|
// for new
|
||||||
Note.newItemTpl = '<li href="#" class="item item-active ?" fromUserId="?" noteId="?">'
|
Note.newItemTpl = '<li href="#" class="item item-active ?" fromUserId="?" noteId="?">'
|
||||||
Note.newItemTpl += Note.itemIsBlog + '<div class="item-desc" style="right: 0px;"><p class="item-title">?</p><p class="item-text"><i class="fa fa-book"></i> <span class="note-notebook">?</span> <i class="fa fa-calendar"></i> <span class="updated-time">?</span><br /><span class="desc">?</span></p></div></li>';
|
Note.newItemTpl += Note.itemIsBlog + '<div class="item-desc" style="right: 0px;"><p class="item-title">?</p><p class="item-text"><i class="fa fa-book"></i> <span class="note-notebook">?</span> <i class="fa fa-clock-o"></i> <span class="updated-time">?</span><br /><span class="desc">?</span></p></div></li>';
|
||||||
|
|
||||||
Note.noteItemListO = $("#noteItemList");
|
Note.noteItemListO = $("#noteItemList");
|
||||||
|
|
||||||
@ -178,10 +178,9 @@ Note.renderNotesAndFirstOneContent = function(ret) {
|
|||||||
Note.renderNotes(ret);
|
Note.renderNotes(ret);
|
||||||
// 渲染第一个
|
// 渲染第一个
|
||||||
if(!isEmpty(ret[0])) {
|
if(!isEmpty(ret[0])) {
|
||||||
Note.changeNote(ret[0].NoteId);
|
Note.changeNoteForPjax(ret[0].NoteId, true, false);
|
||||||
} else {
|
} else {
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 当前的note是否改变过了?
|
// 当前的note是否改变过了?
|
||||||
@ -255,10 +254,12 @@ Note.curHasChanged = function(force) {
|
|||||||
// 从html中得到...
|
// 从html中得到...
|
||||||
var c = preview || content;
|
var c = preview || content;
|
||||||
|
|
||||||
hasChanged.Desc = Note.genDesc(c);
|
// 不是博客或没有自定义设置的
|
||||||
hasChanged.ImgSrc = Note.getImgSrc(c);
|
if(!cacheNote.HasSelfDefined || !cacheNote.IsBlog) {
|
||||||
hasChanged.Abstract = Note.genAbstract(c);
|
hasChanged.Desc = Note.genDesc(c);
|
||||||
|
hasChanged.ImgSrc = Note.getImgSrc(c);
|
||||||
|
hasChanged.Abstract = Note.genAbstract(c);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
log("text相同");
|
log("text相同");
|
||||||
log(cacheNote.Content == content);
|
log(cacheNote.Content == content);
|
||||||
@ -315,6 +316,9 @@ Note.genDesc = function(content) {
|
|||||||
|
|
||||||
// 得到摘要
|
// 得到摘要
|
||||||
Note.genAbstract = function(content, len) {
|
Note.genAbstract = function(content, len) {
|
||||||
|
if(!content) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
if(len == undefined) {
|
if(len == undefined) {
|
||||||
len = 1000;
|
len = 1000;
|
||||||
}
|
}
|
||||||
@ -392,11 +396,14 @@ Note.curChangedSaveIt = function(force) {
|
|||||||
|
|
||||||
// 保存之
|
// 保存之
|
||||||
showMsg(getMsg("saving"));
|
showMsg(getMsg("saving"));
|
||||||
ajaxPost("/note/UpdateNoteOrContent", hasChanged, function(ret) {
|
ajaxPost("/note/updateNoteOrContent", hasChanged, function(ret) {
|
||||||
if(hasChanged.IsNew) {
|
if(hasChanged.IsNew) {
|
||||||
// 缓存之, 后台得到其它信息
|
// 缓存之, 后台得到其它信息
|
||||||
ret.IsNew = false;
|
ret.IsNew = false;
|
||||||
Note.setNoteCache(ret, false);
|
Note.setNoteCache(ret, false);
|
||||||
|
|
||||||
|
// 新建笔记也要change history
|
||||||
|
Pjax.changeNote(ret);
|
||||||
}
|
}
|
||||||
showMsg(getMsg("saveSuccess"), 1000);
|
showMsg(getMsg("saveSuccess"), 1000);
|
||||||
});
|
});
|
||||||
@ -418,14 +425,93 @@ Note.selectTarget = function(target) {
|
|||||||
// 2. ajax得到现在的note
|
// 2. ajax得到现在的note
|
||||||
Note.showContentLoading = function() {
|
Note.showContentLoading = function() {
|
||||||
$("#noteMaskForLoading").css("z-index", 99999);
|
$("#noteMaskForLoading").css("z-index", 99999);
|
||||||
}
|
};
|
||||||
Note.hideContentLoading = function() {
|
Note.hideContentLoading = function() {
|
||||||
$("#noteMaskForLoading").css("z-index", -1);
|
$("#noteMaskForLoading").css("z-index", -1);
|
||||||
}
|
};
|
||||||
|
|
||||||
|
Note.directToNote = function(noteId) {
|
||||||
|
var $p = $("#noteItemList");
|
||||||
|
var pHeight = $p.height();
|
||||||
|
// 相对于父亲的位置
|
||||||
|
var pTop = $("[noteId='" + noteId + "']").position().top;
|
||||||
|
var scrollTop = $p.scrollTop();
|
||||||
|
pTop += scrollTop;
|
||||||
|
/*
|
||||||
|
log("..");
|
||||||
|
log(noteId);
|
||||||
|
log(pTop + ' ' + pHeight + ' ' + scrollTop);
|
||||||
|
*/
|
||||||
|
|
||||||
|
// 当前的可视范围的元素位置是[scrollTop, pHeight + scrollTop]
|
||||||
|
if(pTop >= scrollTop && pTop <= pHeight + scrollTop) {
|
||||||
|
} else {
|
||||||
|
var top = pTop;
|
||||||
|
log("定位到特定note, 在可视范围内");
|
||||||
|
// 手机不用slimScroll
|
||||||
|
if(!LEA.isMobile && !Mobile.isMobile()) {
|
||||||
|
$("#noteItemList").scrollTop(top);
|
||||||
|
$("#noteItemList").slimScroll({ scrollTo: top + 'px', height: "100%", onlyScrollBar: true});
|
||||||
|
} else {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// mustPush表示是否将状态push到state中, 默认为true
|
||||||
|
// 什么时候为false, 在popstate时
|
||||||
|
// needTargetNobook默认为false, 在点击notebook, renderfirst时为false
|
||||||
|
Note.changeNoteForPjax = function(noteId, mustPush, needTargetNotebook) {
|
||||||
|
var me = this;
|
||||||
|
var note = me.getNote(noteId);
|
||||||
|
if(!note) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var isShare = note.Perm != undefined;
|
||||||
|
if(needTargetNotebook == undefined) {
|
||||||
|
needTargetNotebook = true;
|
||||||
|
}
|
||||||
|
me.changeNote(noteId, isShare, true, function(note) {
|
||||||
|
// push state
|
||||||
|
if(mustPush == undefined) {
|
||||||
|
mustPush = true;
|
||||||
|
}
|
||||||
|
if(mustPush) {
|
||||||
|
Pjax.changeNote(note);
|
||||||
|
}
|
||||||
|
|
||||||
|
// popstate时虽然选中了note, 但位置可能不可见
|
||||||
|
if(needTargetNotebook) {
|
||||||
|
Note.directToNote(noteId);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// 第一次render时定位到第一个笔记的notebook 12.06 life
|
||||||
|
// 或通过pop时
|
||||||
|
// 什么时候需要? 1. 第一次changeNote, 2. pop时, 只有当点击了notebook后才不要
|
||||||
|
|
||||||
|
// 这里, 万一是共享笔记呢?
|
||||||
|
// 切换到共享中
|
||||||
|
if(needTargetNotebook) {
|
||||||
|
if(isShare) {
|
||||||
|
if($("#myShareNotebooks").hasClass("closed")) {
|
||||||
|
$("#myShareNotebooks .folderHeader").trigger("click");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if($("#myNotebooks").hasClass("closed")) {
|
||||||
|
$("#myNotebooks .folderHeader").trigger("click");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 如果是子笔记本, 那么要展开父笔记本
|
||||||
|
Notebook.expandNotebookTo(note.NotebookId);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// 点击notebook时调用, 渲染第一个笔记
|
||||||
Note.contentAjax = null;
|
Note.contentAjax = null;
|
||||||
Note.contentAjaxSeq = 1;
|
Note.contentAjaxSeq = 1;
|
||||||
Note.changeNote = function(selectNoteId, isShare, needSaveChanged) {
|
Note.changeNote = function(selectNoteId, isShare, needSaveChanged, callback) {
|
||||||
var self = this;
|
var self = this;
|
||||||
|
|
||||||
// -1 停止定时器
|
// -1 停止定时器
|
||||||
Note.stopInterval();
|
Note.stopInterval();
|
||||||
|
|
||||||
@ -486,6 +572,8 @@ Note.changeNote = function(selectNoteId, isShare, needSaveChanged) {
|
|||||||
Note.renderNoteContentReadOnly(ret);
|
Note.renderNoteContentReadOnly(ret);
|
||||||
}
|
}
|
||||||
self.hideContentLoading();
|
self.hideContentLoading();
|
||||||
|
|
||||||
|
callback && callback(ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(cacheNote.Content) {
|
if(cacheNote.Content) {
|
||||||
@ -493,10 +581,10 @@ Note.changeNote = function(selectNoteId, isShare, needSaveChanged) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var url = "/note/GetNoteContent";
|
var url = "/note/getNoteContent";
|
||||||
var param = {noteId: selectNoteId};
|
var param = {noteId: selectNoteId};
|
||||||
if(isShare) {
|
if(isShare) {
|
||||||
url = "/share/GetShareNoteContent";
|
url = "/share/getShareNoteContent";
|
||||||
param.sharedUserId = cacheNote.UserId // 谁的笔记
|
param.sharedUserId = cacheNote.UserId // 谁的笔记
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -891,7 +979,7 @@ Note.deleteNote = function(target, contextmenuItem, isShared) {
|
|||||||
// 显示共享信息
|
// 显示共享信息
|
||||||
Note.listNoteShareUserInfo = function(target) {
|
Note.listNoteShareUserInfo = function(target) {
|
||||||
var noteId = $(target).attr("noteId");
|
var noteId = $(target).attr("noteId");
|
||||||
showDialogRemote("share/listNoteShareUserInfo", {noteId: noteId});
|
showDialogRemote("/share/listNoteShareUserInfo", {noteId: noteId});
|
||||||
}
|
}
|
||||||
|
|
||||||
// 共享笔记
|
// 共享笔记
|
||||||
@ -918,7 +1006,7 @@ Note.listNoteContentHistories = function() {
|
|||||||
options.show = true;
|
options.show = true;
|
||||||
$("#leanoteDialog").modal(options);
|
$("#leanoteDialog").modal(options);
|
||||||
|
|
||||||
ajaxGet("noteContentHistory/listHistories", {noteId: Note.curNoteId}, function(re) {
|
ajaxGet("/noteContentHistory/listHistories", {noteId: Note.curNoteId}, function(re) {
|
||||||
if(!isArray(re)) {$content.html(getMsg("noHistories")); return}
|
if(!isArray(re)) {$content.html(getMsg("noHistories")); return}
|
||||||
// 组装成一个tab
|
// 组装成一个tab
|
||||||
var str = "<p>" + getMsg("historiesNum") + '</p><div id="historyList"><table class="table table-hover">';
|
var str = "<p>" + getMsg("historiesNum") + '</p><div id="historyList"><table class="table table-hover">';
|
||||||
@ -1587,7 +1675,8 @@ $(function() {
|
|||||||
}
|
}
|
||||||
// 当前的和所选的是一个, 不改变
|
// 当前的和所选的是一个, 不改变
|
||||||
if(Note.curNoteId != noteId) {
|
if(Note.curNoteId != noteId) {
|
||||||
Note.changeNote(noteId);
|
// 不用重定向到notebook
|
||||||
|
Note.changeNoteForPjax(noteId, true, false);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -1658,7 +1747,7 @@ $(function() {
|
|||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
// 得到ID
|
// 得到ID
|
||||||
var noteId = $(this).parent().attr('noteId');
|
var noteId = $(this).parent().attr('noteId');
|
||||||
window.open("/blog/post/" + noteId);
|
window.open("/blog/view/" + noteId);
|
||||||
});
|
});
|
||||||
|
|
||||||
// note setting
|
// note setting
|
||||||
|
2
public/js/app/notebook-min.js
vendored
2
public/js/app/notebook-min.js
vendored
File diff suppressed because one or more lines are too long
@ -60,13 +60,13 @@ Notebook.getNotebookTitle = function(notebookId) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 我的notebooks
|
* 我的notebooks
|
||||||
<ul class="folderBody" id="notebookList">
|
<ul class="folderBody" id="notebookList">
|
||||||
<li><a class="active">所有</a></li>
|
<li><a class="active">所有</a></li>
|
||||||
<li><a class="active">Hadoop</a></li>
|
<li><a class="active">Hadoop</a></li>
|
||||||
<li><a>August 13, 2013</a></li>
|
<li><a>August 13, 2013</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
Notebook.getTreeSetting = function(isSearch, isShare){
|
Notebook.getTreeSetting = function(isSearch, isShare){
|
||||||
@ -236,7 +236,7 @@ Notebook.getTreeSetting = function(isSearch, isShare){
|
|||||||
}
|
}
|
||||||
|
|
||||||
return setting;
|
return setting;
|
||||||
}
|
}
|
||||||
Notebook.allNotebookId = "0";
|
Notebook.allNotebookId = "0";
|
||||||
Notebook.trashNotebookId = "-1";
|
Notebook.trashNotebookId = "-1";
|
||||||
Notebook.curNotebookIsTrashOrAll = function() {
|
Notebook.curNotebookIsTrashOrAll = function() {
|
||||||
@ -289,6 +289,41 @@ Notebook.cacheAllNotebooks = function(notebooks) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 展开到笔记本
|
||||||
|
Notebook.expandNotebookTo = function(notebookId, userId) {
|
||||||
|
var me = this;
|
||||||
|
var selected = false;
|
||||||
|
var tree = me.tree;
|
||||||
|
|
||||||
|
// 共享的
|
||||||
|
if(userId) {
|
||||||
|
tree = Share.trees[userId];
|
||||||
|
}
|
||||||
|
if(!tree) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var curNode = tree.getNodeByTId(notebookId);
|
||||||
|
if(!curNode) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
while(true) {
|
||||||
|
var pNode = curNode.getParentNode();
|
||||||
|
if(pNode) {
|
||||||
|
tree.expandNode(pNode, true);
|
||||||
|
if(!selected) {
|
||||||
|
Notebook.changeNotebookNav(notebookId);
|
||||||
|
selected = true;
|
||||||
|
}
|
||||||
|
curNode = pNode;
|
||||||
|
} else {
|
||||||
|
if(!selected) {
|
||||||
|
Notebook.changeNotebookNav(notebookId);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// RenderNotebooks调用,
|
// RenderNotebooks调用,
|
||||||
// nav 为了新建, 快速选择, 移动笔记
|
// nav 为了新建, 快速选择, 移动笔记
|
||||||
@ -401,38 +436,38 @@ Notebook.changeNav = function() {
|
|||||||
log(t2-t1);
|
log(t2-t1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 我的共享notebooks
|
* 我的共享notebooks
|
||||||
<div id="shareNotebooks">
|
<div id="shareNotebooks">
|
||||||
<div class="folderNote closed">
|
<div class="folderNote closed">
|
||||||
<div class="folderHeader">
|
<div class="folderHeader">
|
||||||
<a>
|
<a>
|
||||||
<h1>
|
<h1>
|
||||||
<i class="fa fa-angle-right"></i>
|
<i class="fa fa-angle-right"></i>
|
||||||
Life's</h1>
|
Life's</h1>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<ul class="folderBody">
|
<ul class="folderBody">
|
||||||
<li><a>Hadoop</a></li>
|
<li><a>Hadoop</a></li>
|
||||||
<li><a>Node webkit</a></li>
|
<li><a>Node webkit</a></li>
|
||||||
<li><a>Hadoop</a></li>
|
<li><a>Hadoop</a></li>
|
||||||
<li><a>Node webkit</a></li>
|
<li><a>Node webkit</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
*/
|
*/
|
||||||
// TODO 层级
|
// TODO 层级
|
||||||
Notebook.renderShareNotebooks = function(sharedUserInfos, shareNotebooks) {
|
Notebook.renderShareNotebooks = function(sharedUserInfos, shareNotebooks) {
|
||||||
if(isEmpty(sharedUserInfos)) {
|
if(isEmpty(sharedUserInfos)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!shareNotebooks || typeof shareNotebooks != "object" || shareNotebooks.length < 0) {
|
if(!shareNotebooks || typeof shareNotebooks != "object" || shareNotebooks.length < 0) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var $shareNotebooks = $("#shareNotebooks");
|
var $shareNotebooks = $("#shareNotebooks");
|
||||||
var user2ShareNotebooks = {};
|
var user2ShareNotebooks = {};
|
||||||
for(var i in shareNotebooks) {
|
for(var i in shareNotebooks) {
|
||||||
var userNotebooks = shareNotebooks[i];
|
var userNotebooks = shareNotebooks[i];
|
||||||
user2ShareNotebooks[userNotebooks.UserId] = userNotebooks;
|
user2ShareNotebooks[userNotebooks.UserId] = userNotebooks;
|
||||||
}
|
}
|
||||||
@ -442,17 +477,17 @@ Notebook.renderShareNotebooks = function(sharedUserInfos, shareNotebooks) {
|
|||||||
|
|
||||||
userNotebooks.ShareNotebooks = [{NotebookId: "-2", Title: "默认共享"}].concat(userNotebooks.ShareNotebooks)
|
userNotebooks.ShareNotebooks = [{NotebookId: "-2", Title: "默认共享"}].concat(userNotebooks.ShareNotebooks)
|
||||||
|
|
||||||
var username = userInfo.Username || userInfo.Email;
|
var username = userInfo.Username || userInfo.Email;
|
||||||
var header = tt('<div class="folderNote closed"><div class="folderHeader"><a><h1 title="? 的共享"><i class="fa fa-angle-right"></i>?</h1></a></div>', username, username);
|
var header = tt('<div class="folderNote closed"><div class="folderHeader"><a><h1 title="? 的共享"><i class="fa fa-angle-right"></i>?</h1></a></div>', username, username);
|
||||||
var body = '<ul class="folderBody">';
|
var body = '<ul class="folderBody">';
|
||||||
for(var j in userNotebooks.ShareNotebooks) {
|
for(var j in userNotebooks.ShareNotebooks) {
|
||||||
var notebook = userNotebooks.ShareNotebooks[j];
|
var notebook = userNotebooks.ShareNotebooks[j];
|
||||||
body += tt('<li><a notebookId="?">?</a></li>', notebook.NotebookId, notebook.Title)
|
body += tt('<li><a notebookId="?">?</a></li>', notebook.NotebookId, notebook.Title)
|
||||||
}
|
}
|
||||||
body += "</ul>";
|
body += "</ul>";
|
||||||
|
|
||||||
$shareNotebooks.append(header + body + "</div>")
|
$shareNotebooks.append(header + body + "</div>")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 左侧导航, 选中某个notebook
|
// 左侧导航, 选中某个notebook
|
||||||
@ -507,10 +542,11 @@ Notebook.toggleToMyNav = function(userId, notebookId) {
|
|||||||
$("#tagSearch").hide();
|
$("#tagSearch").hide();
|
||||||
}
|
}
|
||||||
Notebook.changeNotebookNav = function(notebookId) {
|
Notebook.changeNotebookNav = function(notebookId) {
|
||||||
|
Notebook.curNotebookId = notebookId;
|
||||||
Notebook.toggleToMyNav();
|
Notebook.toggleToMyNav();
|
||||||
|
|
||||||
// 1
|
// 1 改变当前的notebook
|
||||||
Notebook.selectNotebook($(tt('#notebookList [notebookId="?"]', notebookId)));
|
Notebook.selectNotebook($(tt('#notebook [notebookId="?"]', notebookId)));
|
||||||
|
|
||||||
var notebook = Notebook.cache[notebookId];
|
var notebook = Notebook.cache[notebookId];
|
||||||
|
|
||||||
@ -542,7 +578,9 @@ Notebook.curActiveNotebookIsAll = function() {
|
|||||||
// 1. 改变note, 此时需要先保存
|
// 1. 改变note, 此时需要先保存
|
||||||
// 2. ajax得到该notebook下的所有note
|
// 2. ajax得到该notebook下的所有note
|
||||||
// 3. 使用Note.RederNotes()
|
// 3. 使用Note.RederNotes()
|
||||||
Notebook.changeNotebook = function(notebookId) {
|
// callback Pjax, 当popstate时调用
|
||||||
|
Notebook.changeNotebook = function(notebookId, callback) {
|
||||||
|
var me = this;
|
||||||
Notebook.changeNotebookNav(notebookId);
|
Notebook.changeNotebookNav(notebookId);
|
||||||
|
|
||||||
Notebook.curNotebookId = notebookId;
|
Notebook.curNotebookId = notebookId;
|
||||||
@ -553,7 +591,7 @@ Notebook.changeNotebook = function(notebookId) {
|
|||||||
// 2 先清空所有
|
// 2 先清空所有
|
||||||
Note.clearAll();
|
Note.clearAll();
|
||||||
|
|
||||||
var url = "/note/ListNotes/";
|
var url = "/note/listNotes/";
|
||||||
var param = {notebookId: notebookId};
|
var param = {notebookId: notebookId};
|
||||||
|
|
||||||
// 废纸篓
|
// 废纸篓
|
||||||
@ -565,22 +603,46 @@ Notebook.changeNotebook = function(notebookId) {
|
|||||||
// 得到全部的...
|
// 得到全部的...
|
||||||
cacheNotes = Note.getNotesByNotebookId();
|
cacheNotes = Note.getNotesByNotebookId();
|
||||||
if(!isEmpty(cacheNotes)) { // 万一真的是没有呢?
|
if(!isEmpty(cacheNotes)) { // 万一真的是没有呢?
|
||||||
Note.renderNotesAndFirstOneContent(cacheNotes);
|
if(callback) {
|
||||||
|
callback(cacheNotes);
|
||||||
|
} else {
|
||||||
|
Note.renderNotesAndFirstOneContent(cacheNotes);
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
cacheNotes = Note.getNotesByNotebookId(notebookId);
|
cacheNotes = Note.getNotesByNotebookId(notebookId);
|
||||||
if(!isEmpty(cacheNotes)) { // 万一真的是没有呢?
|
if(!isEmpty(cacheNotes)) { // 万一真的是没有呢? 执行后面的ajax
|
||||||
Note.renderNotesAndFirstOneContent(cacheNotes);
|
if(callback) {
|
||||||
|
callback(cacheNotes);
|
||||||
|
} else {
|
||||||
|
Note.renderNotesAndFirstOneContent(cacheNotes);
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 2 得到笔记本
|
// 2 得到笔记本
|
||||||
// 这里可以缓存起来, note按notebookId缓存
|
// 这里可以缓存起来, note按notebookId缓存
|
||||||
ajaxGet(url, param, Note.renderNotesAndFirstOneContent);
|
me.showNoteAndEditorLoading();
|
||||||
|
ajaxGet(url, param, function(cacheNotes) {
|
||||||
|
if(callback) {
|
||||||
|
callback(cacheNotes);
|
||||||
|
} else {
|
||||||
|
Note.renderNotesAndFirstOneContent(cacheNotes);
|
||||||
|
}
|
||||||
|
me.hideNoteAndEditorLoading();
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 笔记列表与编辑器的mask loading
|
||||||
|
Notebook.showNoteAndEditorLoading = function() {
|
||||||
|
$("#noteAndEditorMask").show();
|
||||||
|
};
|
||||||
|
Notebook.hideNoteAndEditorLoading = function() {
|
||||||
|
$("#noteAndEditorMask").hide();
|
||||||
|
};
|
||||||
|
|
||||||
// 是否是当前选中的notebookId
|
// 是否是当前选中的notebookId
|
||||||
// 还包括共享
|
// 还包括共享
|
||||||
// called by Note
|
// called by Note
|
||||||
@ -596,10 +658,10 @@ Notebook.changeNotebookForNewNote = function(notebookId) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Notebook.changeNotebookNav(notebookId);
|
Notebook.changeNotebookNav(notebookId, true);
|
||||||
Notebook.curNotebookId = notebookId;
|
Notebook.curNotebookId = notebookId;
|
||||||
|
|
||||||
var url = "/note/ListNotes/";
|
var url = "/note/listNotes/";
|
||||||
var param = {notebookId: notebookId};
|
var param = {notebookId: notebookId};
|
||||||
|
|
||||||
// 2 得到笔记本
|
// 2 得到笔记本
|
||||||
@ -614,7 +676,7 @@ Notebook.changeNotebookForNewNote = function(notebookId) {
|
|||||||
// 显示共享信息
|
// 显示共享信息
|
||||||
Notebook.listNotebookShareUserInfo = function(target) {
|
Notebook.listNotebookShareUserInfo = function(target) {
|
||||||
var notebookId = $(target).attr("notebookId");
|
var notebookId = $(target).attr("notebookId");
|
||||||
showDialogRemote("share/listNotebookShareUserInfo", {notebookId: notebookId});
|
showDialogRemote("/share/listNotebookShareUserInfo", {notebookId: notebookId});
|
||||||
}
|
}
|
||||||
// 共享笔记本
|
// 共享笔记本
|
||||||
Notebook.shareNotebooks= function(target) {
|
Notebook.shareNotebooks= function(target) {
|
||||||
@ -657,7 +719,7 @@ Notebook.setNotebook2Blog = function(target) {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
ajaxPost("notebook/setNotebook2Blog", {notebookId: notebookId, isBlog: isBlog}, function(ret) {
|
ajaxPost("/notebook/setNotebook2Blog", {notebookId: notebookId, isBlog: isBlog}, function(ret) {
|
||||||
if(ret) {
|
if(ret) {
|
||||||
// 这里要设置notebook下的note的blog状态
|
// 这里要设置notebook下的note的blog状态
|
||||||
Note.setAllNoteBlogStatus(notebookId, isBlog);
|
Note.setAllNoteBlogStatus(notebookId, isBlog);
|
||||||
@ -846,12 +908,6 @@ $(function() {
|
|||||||
} else {
|
} else {
|
||||||
items.push("set2Blog");
|
items.push("set2Blog");
|
||||||
}
|
}
|
||||||
|
|
||||||
//asktalk bebug#23
|
|
||||||
if(notebookId=="548125adf4e872105c000007"){
|
|
||||||
items.push("delete");
|
|
||||||
}
|
|
||||||
|
|
||||||
// 是否还有笔记
|
// 是否还有笔记
|
||||||
if(Note.notebookHasNotes(notebookId)) {
|
if(Note.notebookHasNotes(notebookId)) {
|
||||||
items.push("delete");
|
items.push("delete");
|
||||||
|
2
public/js/app/page-min.js
vendored
2
public/js/app/page-min.js
vendored
File diff suppressed because one or more lines are too long
@ -4,10 +4,9 @@
|
|||||||
//----------------------
|
//----------------------
|
||||||
// 编辑器模式
|
// 编辑器模式
|
||||||
function editorMode() {
|
function editorMode() {
|
||||||
this.writingHash = "#writing";
|
this.writingHash = "writing";
|
||||||
this.normalHash = "#normal";
|
this.normalHash = "normal";
|
||||||
this.isWritingMode = location.hash == this.writingHash;
|
this.isWritingMode = location.hash.indexOf(this.writingHash) >= 0;
|
||||||
|
|
||||||
this.toggleA = null;
|
this.toggleA = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -17,27 +16,33 @@ editorMode.prototype.toggleAText = function(isWriting) {
|
|||||||
var toggleA = $(".toggle-editor-mode a");
|
var toggleA = $(".toggle-editor-mode a");
|
||||||
var toggleSpan = $(".toggle-editor-mode span");
|
var toggleSpan = $(".toggle-editor-mode span");
|
||||||
if(isWriting) {
|
if(isWriting) {
|
||||||
toggleA.attr("href", self.normalHash);
|
toggleA.attr("href", "#" + self.normalHash);
|
||||||
toggleSpan.text(getMsg("normalMode"));
|
toggleSpan.text(getMsg("normalMode"));
|
||||||
} else {
|
} else {
|
||||||
toggleA.attr("href", self.writingHash);
|
toggleA.attr("href", "#" + self.writingHash);
|
||||||
toggleSpan.text(getMsg("writingMode"));
|
toggleSpan.text(getMsg("writingMode"));
|
||||||
}
|
}
|
||||||
}, 0);
|
}, 0);
|
||||||
}
|
}
|
||||||
editorMode.prototype.isWriting = function(hash) {
|
editorMode.prototype.isWriting = function(hash) {
|
||||||
return hash == this.writingHash;
|
return hash.indexOf(this.writingHash) >= 0
|
||||||
}
|
}
|
||||||
editorMode.prototype.init = function() {
|
editorMode.prototype.init = function() {
|
||||||
this.changeMode(this.isWritingMode);
|
this.changeMode(this.isWritingMode);
|
||||||
var self = this;
|
var self = this;
|
||||||
$(".toggle-editor-mode").click(function() {
|
$(".toggle-editor-mode").click(function(e) {
|
||||||
//
|
e.preventDefault();
|
||||||
saveBookmark();
|
saveBookmark();
|
||||||
var $a = $(this).find("a");
|
var $a = $(this).find("a");
|
||||||
var isWriting = self.isWriting($a.attr("href"));
|
var isWriting = self.isWriting($a.attr("href"));
|
||||||
self.changeMode(isWriting);
|
self.changeMode(isWriting);
|
||||||
//
|
//
|
||||||
|
if(isWriting) {
|
||||||
|
setHash("m", self.writingHash);
|
||||||
|
} else {
|
||||||
|
setHash("m", self.normalHash);
|
||||||
|
}
|
||||||
|
|
||||||
restoreBookmark();
|
restoreBookmark();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -123,7 +128,7 @@ editorMode.prototype.writtingMode = function() {
|
|||||||
|
|
||||||
editorMode.prototype.getWritingCss = function() {
|
editorMode.prototype.getWritingCss = function() {
|
||||||
if(this.isWritingMode) {
|
if(this.isWritingMode) {
|
||||||
return ["css/editor/editor-writting-mode.css"];
|
return ["/css/editor/editor-writting-mode.css"];
|
||||||
}
|
}
|
||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
@ -276,6 +281,7 @@ Mobile = {
|
|||||||
noteO: $("#note"),
|
noteO: $("#note"),
|
||||||
bodyO: $("body"),
|
bodyO: $("body"),
|
||||||
setMenuO: $("#setMenu"),
|
setMenuO: $("#setMenu"),
|
||||||
|
// 弃用, 统一使用Pjax
|
||||||
hashChange: function() {
|
hashChange: function() {
|
||||||
var self = Mobile;
|
var self = Mobile;
|
||||||
var hash = location.hash;
|
var hash = location.hash;
|
||||||
@ -292,8 +298,8 @@ Mobile = {
|
|||||||
init: function() {
|
init: function() {
|
||||||
var self = this;
|
var self = this;
|
||||||
self.isMobile();
|
self.isMobile();
|
||||||
$(window).on("hashchange", self.hashChange);
|
// $(window).on("hashchange", self.hashChange);
|
||||||
self.hashChange();
|
// self.hashChange();
|
||||||
/*
|
/*
|
||||||
$("#noteItemList").on("tap", ".item", function(event) {
|
$("#noteItemList").on("tap", ".item", function(event) {
|
||||||
$(this).click();
|
$(this).click();
|
||||||
@ -320,6 +326,8 @@ Mobile = {
|
|||||||
}
|
}
|
||||||
return LEA.isMobile;
|
return LEA.isMobile;
|
||||||
},
|
},
|
||||||
|
// 改变笔记, 此时切换到编辑器模式下
|
||||||
|
// note.js click事件处理, 先切换到纯编辑器下, 再调用Note.changeNote()
|
||||||
changeNote: function(noteId) {
|
changeNote: function(noteId) {
|
||||||
var self = this;
|
var self = this;
|
||||||
if(!LEA.isMobile) {return true;}
|
if(!LEA.isMobile) {return true;}
|
||||||
@ -331,21 +339,25 @@ Mobile = {
|
|||||||
var self = this;
|
var self = this;
|
||||||
self.bodyO.addClass("full-editor");
|
self.bodyO.addClass("full-editor");
|
||||||
self.noteO.addClass("editor-show");
|
self.noteO.addClass("editor-show");
|
||||||
|
/*
|
||||||
if(changeHash) {
|
if(changeHash) {
|
||||||
if(!noteId) {
|
if(!noteId) {
|
||||||
noteId = Note.curNoteId;
|
noteId = Note.curNoteId;
|
||||||
}
|
}
|
||||||
location.hash = "noteId=" + noteId;
|
location.hash = "noteId=" + noteId;
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
},
|
},
|
||||||
toNormal: function(changeHash) {
|
toNormal: function(changeHash) {
|
||||||
var self = this;
|
var self = this;
|
||||||
self.bodyO.removeClass("full-editor");
|
self.bodyO.removeClass("full-editor");
|
||||||
self.noteO.removeClass("editor-show");
|
self.noteO.removeClass("editor-show");
|
||||||
|
|
||||||
|
/*
|
||||||
if(changeHash) {
|
if(changeHash) {
|
||||||
location.hash = "notebookAndNote";
|
location.hash = "notebookAndNote";
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
},
|
},
|
||||||
switchPage: function() {
|
switchPage: function() {
|
||||||
var self = this;
|
var self = this;
|
||||||
@ -410,13 +422,13 @@ function initEditor() {
|
|||||||
|
|
||||||
// 初始化编辑器
|
// 初始化编辑器
|
||||||
tinymce.init({
|
tinymce.init({
|
||||||
|
// inline: true,
|
||||||
setup: function(ed) {
|
setup: function(ed) {
|
||||||
ed.on('keydown', Note.saveNote);
|
ed.on('keydown', Note.saveNote);
|
||||||
// indent outdent
|
// indent outdent
|
||||||
ed.on('keydown', function(e) {
|
ed.on('keydown', function(e) {
|
||||||
var num = e.which ? e.which : e.keyCode;
|
var num = e.which ? e.which : e.keyCode;
|
||||||
if (num == 9) { // tab pressed
|
if (num == 9) { // tab pressed
|
||||||
|
|
||||||
if(!e.shiftKey) {
|
if(!e.shiftKey) {
|
||||||
// ed.execCommand('Indent');
|
// ed.execCommand('Indent');
|
||||||
// TODO 如果当前在li, ul, ol下不执行!!
|
// TODO 如果当前在li, ul, ol下不执行!!
|
||||||
@ -458,7 +470,8 @@ function initEditor() {
|
|||||||
selector : "#editorContent",
|
selector : "#editorContent",
|
||||||
// height: 100,//这个应该是文档的高度, 而其上层的高度是$("#content").height(),
|
// height: 100,//这个应该是文档的高度, 而其上层的高度是$("#content").height(),
|
||||||
// parentHeight: $("#content").height(),
|
// parentHeight: $("#content").height(),
|
||||||
content_css : ["css/bootstrap.css", "css/editor/editor.css"].concat(em.getWritingCss()),
|
content_css : ["/css/bootstrap.css", "/css/editor/editor.css"].concat(em.getWritingCss()),
|
||||||
|
// content_css : ["/css/editor/editor.css"].concat(em.getWritingCss()),
|
||||||
skin : "custom",
|
skin : "custom",
|
||||||
language: LEA.locale, // 语言
|
language: LEA.locale, // 语言
|
||||||
plugins : [
|
plugins : [
|
||||||
@ -797,3 +810,177 @@ $(function() {
|
|||||||
Mobile.init();
|
Mobile.init();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
//------------
|
||||||
|
// pjax
|
||||||
|
//------------
|
||||||
|
var Pjax = {
|
||||||
|
init: function() {
|
||||||
|
var me = this;
|
||||||
|
// 当history改变时
|
||||||
|
window.addEventListener('popstate', function(evt){
|
||||||
|
var state = evt.state;
|
||||||
|
if(!state) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
document.title = state.title || "Untitled";
|
||||||
|
log("pop");
|
||||||
|
me.changeNotebookAndNote(state.noteId);
|
||||||
|
}, false);
|
||||||
|
|
||||||
|
// ie9
|
||||||
|
if(!history.pushState) {
|
||||||
|
$(window).on("hashchange", function() {
|
||||||
|
var noteId = getHash("noteId");;
|
||||||
|
if(noteId) {
|
||||||
|
me.changeNotebookAndNote(noteId);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// pjax调用
|
||||||
|
// popstate事件发生时, 转换到noteId下, 此时要转换notebookId
|
||||||
|
changeNotebookAndNote: function(noteId) {
|
||||||
|
var note = Note.getNote(noteId);
|
||||||
|
if(!note) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var isShare = note.Perm != undefined;
|
||||||
|
|
||||||
|
var notebookId = note.NotebookId;
|
||||||
|
// 如果是在当前notebook下, 就不要转换notebook了
|
||||||
|
if(Notebook.curNotebookId == notebookId) {
|
||||||
|
// 不push state
|
||||||
|
Note.changeNoteForPjax(noteId, false);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 自己的
|
||||||
|
if(!isShare) {
|
||||||
|
// 先切换到notebook下, 得到notes列表, 再changeNote
|
||||||
|
Notebook.changeNotebook(notebookId, function(notes) {
|
||||||
|
Note.renderNotes(notes);
|
||||||
|
// 不push state
|
||||||
|
Note.changeNoteForPjax(noteId, false, true);
|
||||||
|
});
|
||||||
|
// 共享笔记
|
||||||
|
} else {
|
||||||
|
Share.changeNotebook(note.UserId, notebookId, function(notes) {
|
||||||
|
Note.renderNotes(notes);
|
||||||
|
// 不push state
|
||||||
|
Note.changeNoteForPjax(noteId, false, true);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
// ajax后调用
|
||||||
|
changeNote: function(noteInfo) {
|
||||||
|
var me = this;
|
||||||
|
log("push");
|
||||||
|
var noteId = noteInfo.NoteId;
|
||||||
|
var title = noteInfo.Title;
|
||||||
|
var url = '/note/' + noteId;
|
||||||
|
if(location.hash) {
|
||||||
|
url += location.hash;
|
||||||
|
}
|
||||||
|
// 如果支持pushState
|
||||||
|
if(history.pushState) {
|
||||||
|
var state=({
|
||||||
|
url: url,
|
||||||
|
noteId: noteId,
|
||||||
|
title: title,
|
||||||
|
});
|
||||||
|
history.pushState(state, title, url);
|
||||||
|
document.title = title || 'Untitled';
|
||||||
|
// 不支持, 则用hash
|
||||||
|
} else {
|
||||||
|
setHash("noteId", noteId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
$(function() {
|
||||||
|
Pjax.init();
|
||||||
|
});
|
||||||
|
|
||||||
|
// note.html调用
|
||||||
|
// 实始化页面
|
||||||
|
function initPage() {
|
||||||
|
$(function() {
|
||||||
|
Notebook.renderNotebooks(notebooks);
|
||||||
|
Share.renderShareNotebooks(sharedUserInfos, shareNotebooks);
|
||||||
|
|
||||||
|
// 如果初始打开的是共享的笔记
|
||||||
|
// 那么定位到我的笔记
|
||||||
|
if(curSharedNoteNotebookId) {
|
||||||
|
Share.firstRenderShareNote(curSharedUserId, curSharedNoteNotebookId, curNoteId);
|
||||||
|
// 初始打开的是我的笔记
|
||||||
|
} else {
|
||||||
|
Note.setNoteCache(noteContentJson);
|
||||||
|
Note.renderNotes(notes);
|
||||||
|
if(curNoteId) {
|
||||||
|
// 指定某个note时才target notebook, /note定位到最新
|
||||||
|
// ie10&+要setTimeout
|
||||||
|
setTimeout(function() {
|
||||||
|
Note.changeNoteForPjax(curNoteId, true, curNotebookId);
|
||||||
|
});
|
||||||
|
if(!curNotebookId) {
|
||||||
|
Notebook.selectNotebook($(tt('#notebook [notebookId="?"]', Notebook.allNotebookId)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 指定笔记, 也要保存最新笔记
|
||||||
|
if(latestNotes.length > 0) {
|
||||||
|
for(var i = 0; i < latestNotes.length; ++i) {
|
||||||
|
Note.addNoteCache(latestNotes[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Tag.renderTagNav(tagsJson);
|
||||||
|
// init notebook后才调用
|
||||||
|
initSlimScroll();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------
|
||||||
|
// aceeditor
|
||||||
|
|
||||||
|
var aceEditors = {};
|
||||||
|
function initAce(id, val){
|
||||||
|
var aceEditor = ace.edit(id);
|
||||||
|
aceEditor.setTheme("ace/theme/tomorrow");
|
||||||
|
aceEditor.session.setMode("ace/mode/javascript");
|
||||||
|
aceEditor.setAutoScrollEditorIntoView(true);
|
||||||
|
aceEditor.setOption("maxLines", 100);
|
||||||
|
if(val) {
|
||||||
|
aceEditor.setValue(val);
|
||||||
|
}
|
||||||
|
aceEditors [id] = aceEditor;
|
||||||
|
return aceEditor;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getAce(id) {
|
||||||
|
return aceEditors[id];
|
||||||
|
}
|
||||||
|
// 是否在node内
|
||||||
|
function isInAce(node, brush) {
|
||||||
|
var $node = $(node);
|
||||||
|
var node = $node.get(0);
|
||||||
|
if(node.nodeName == "PRE") {
|
||||||
|
$node.data('brush', brush);
|
||||||
|
var id = $node.attr('id');
|
||||||
|
var aceEditor = getAce(id);
|
||||||
|
if(aceEditor) {
|
||||||
|
return [aceEditor, $node];
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
// 找到父是pre
|
||||||
|
$pre = $node.closest("pre");
|
||||||
|
if($pre.length == 0) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return isInAce($pre, brush);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
2
public/js/app/share-min.js
vendored
2
public/js/app/share-min.js
vendored
File diff suppressed because one or more lines are too long
@ -243,25 +243,47 @@ Share.toggleToSharedNav = function(userId, notebookId) {
|
|||||||
$("#tagSearch").hide();
|
$("#tagSearch").hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 刷新加载共享的笔记本, page.js调用
|
||||||
|
Share.firstRenderShareNote = function(ownerUserId, notebookId, noteId) {
|
||||||
|
$("#myShareNotebooks .folderHeader").trigger("click");
|
||||||
|
// 这里, 可能这个笔记本是子笔记本, 所以先扩展
|
||||||
|
Notebook.expandNotebookTo(notebookId, ownerUserId);
|
||||||
|
Share.changeNotebook(ownerUserId, notebookId, function(notes) {
|
||||||
|
Note.renderNotes(notes);
|
||||||
|
// 不push state
|
||||||
|
Note.changeNoteForPjax(noteId, false, false);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
//改变笔记本
|
//改变笔记本
|
||||||
//0. 改变样式
|
//0. 改变样式
|
||||||
//1. 改变note, 此时需要先保存
|
//1. 改变note, 此时需要先保存
|
||||||
//2. ajax得到该notebook下的所有note
|
//2. ajax得到该notebook下的所有note
|
||||||
//3. 使用Note.RederNotes()
|
//3. 使用Note.RederNotes()
|
||||||
Share.changeNotebook = function(userId, notebookId) {
|
Share.changeNotebook = function(userId, notebookId, callback) {
|
||||||
|
var me = this;
|
||||||
|
Notebook.curNotebookId = notebookId;
|
||||||
// 选中
|
// 选中
|
||||||
Notebook.selectNotebook($(tt('#friendContainer_? a[notebookId="?"]', userId, notebookId)));
|
var $t = $(tt('#friendContainer_? a[notebookId="?"]', userId, notebookId));
|
||||||
|
if($t.length == 0) {
|
||||||
|
// 切换到默认共享中
|
||||||
|
// 表示是popstate的默认共享笔记本下
|
||||||
|
Notebook.selectNotebook($(tt('#friendContainer_? a[notebookId="?"]', userId, me.defaultNotebookId)));
|
||||||
|
notebookId = me.defaultNotebookId;
|
||||||
|
} else {
|
||||||
|
Notebook.selectNotebook($t);
|
||||||
|
}
|
||||||
|
|
||||||
// 改变nav!!!! TODO
|
// 改变nav!!!! TODO
|
||||||
Share.toggleToSharedNav(userId, notebookId);
|
Share.toggleToSharedNav(userId, notebookId);
|
||||||
|
|
||||||
// 1
|
// 1
|
||||||
Note.curChangedSaveIt();
|
Note.curChangedSaveIt();
|
||||||
|
|
||||||
// 2 先清空所有
|
// 2 先清空所有
|
||||||
Note.clearAll();
|
Note.clearAll();
|
||||||
|
|
||||||
var url = "/share/ListShareNotes/";
|
var url = "/share/listShareNotes";
|
||||||
var param = {userId: userId};
|
var param = {userId: userId};
|
||||||
if(!Share.isDefaultNotebookId(notebookId)) {
|
if(!Share.isDefaultNotebookId(notebookId)) {
|
||||||
param.notebookId = notebookId;
|
param.notebookId = notebookId;
|
||||||
@ -276,13 +298,17 @@ Share.changeNotebook = function(userId, notebookId) {
|
|||||||
if(param.notebookId) {
|
if(param.notebookId) {
|
||||||
|
|
||||||
}
|
}
|
||||||
Note.renderNotes(ret, false, true);
|
if(callback) {
|
||||||
// 渲染第一个
|
callback(ret);
|
||||||
// 这里, 有点小复杂, 还要判断权限...
|
|
||||||
if(!isEmpty(ret)) {
|
|
||||||
// 定位
|
|
||||||
Note.changeNote(ret[0].NoteId, true);
|
|
||||||
} else {
|
} else {
|
||||||
|
Note.renderNotes(ret, false, true);
|
||||||
|
// 渲染第一个
|
||||||
|
// 这里, 有点小复杂, 还要判断权限...
|
||||||
|
if(!isEmpty(ret)) {
|
||||||
|
// 定位
|
||||||
|
Note.changeNoteForPjax(ret[0].NoteId, true, false);
|
||||||
|
} else {
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -338,7 +364,7 @@ Share.changeNotebookForNewNote = function(notebookId) {
|
|||||||
Share.toggleToSharedNav(userId, notebookId);
|
Share.toggleToSharedNav(userId, notebookId);
|
||||||
|
|
||||||
// 得到笔记本
|
// 得到笔记本
|
||||||
var url = "/share/ListShareNotes/";
|
var url = "/share/listShareNotes";
|
||||||
var param = {userId: userId, notebookId: notebookId};
|
var param = {userId: userId, notebookId: notebookId};
|
||||||
|
|
||||||
// 2 得到笔记本
|
// 2 得到笔记本
|
||||||
@ -401,7 +427,7 @@ Share.initContextmenu = function(notebooksCopy) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Share.contextmenu = $("#noteItemList .item-shared").contextmenu(noteListMenu);
|
Share.contextmenu = $("#noteItemList .item-shared").contextmenu(noteListMenu);
|
||||||
}
|
};
|
||||||
|
|
||||||
$(function() {
|
$(function() {
|
||||||
// note setting
|
// note setting
|
||||||
@ -413,8 +439,6 @@ $(function() {
|
|||||||
Share.contextmenu.showMenu(e, $p);
|
Share.contextmenu.showMenu(e, $p);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//---------------------------
|
//---------------------------
|
||||||
// 新建笔记
|
// 新建笔记
|
||||||
// 1. 直接点击新建 OR
|
// 1. 直接点击新建 OR
|
||||||
@ -453,10 +477,10 @@ $(function() {
|
|||||||
toHtml = getMsg("readOnly");
|
toHtml = getMsg("readOnly");
|
||||||
toPerm = "0";
|
toPerm = "0";
|
||||||
}
|
}
|
||||||
var url = "/share/UpdateShareNotebookPerm";
|
var url = "/share/updateShareNotebookPerm";
|
||||||
var param = {perm: toPerm, toUserId: toUserId};
|
var param = {perm: toPerm, toUserId: toUserId};
|
||||||
if(Share.dialogIsNote) {
|
if(Share.dialogIsNote) {
|
||||||
url = "/share/UpdateShareNotePerm";
|
url = "/share/updateShareNotePerm";
|
||||||
param.noteId = noteOrNotebookId;
|
param.noteId = noteOrNotebookId;
|
||||||
} else {
|
} else {
|
||||||
param.notebookId = noteOrNotebookId;
|
param.notebookId = noteOrNotebookId;
|
||||||
@ -474,10 +498,10 @@ $(function() {
|
|||||||
var noteOrNotebookId = $(this).attr("noteOrNotebookId");
|
var noteOrNotebookId = $(this).attr("noteOrNotebookId");
|
||||||
var toUserId = $(this).attr("toUserId");
|
var toUserId = $(this).attr("toUserId");
|
||||||
|
|
||||||
var url = "/share/DeleteShareNotebook";
|
var url = "/share/deleteShareNotebook";
|
||||||
var param = {toUserId: toUserId};
|
var param = {toUserId: toUserId};
|
||||||
if(Share.dialogIsNote) {
|
if(Share.dialogIsNote) {
|
||||||
url = "/share/DeleteShareNote";
|
url = "/share/deleteShareNote";
|
||||||
param.noteId = noteOrNotebookId;
|
param.noteId = noteOrNotebookId;
|
||||||
} else {
|
} else {
|
||||||
param.notebookId = noteOrNotebookId;
|
param.notebookId = noteOrNotebookId;
|
||||||
@ -533,10 +557,10 @@ function addShareNoteOrNotebook(trSeq) {
|
|||||||
var shareNotePerm = $(trId + ' input[name="perm' + trSeq + '"]:checked').val() || 0;
|
var shareNotePerm = $(trId + ' input[name="perm' + trSeq + '"]:checked').val() || 0;
|
||||||
var perm = shareNotePerm;
|
var perm = shareNotePerm;
|
||||||
// emails = emails.split(";");
|
// emails = emails.split(";");
|
||||||
var url = "share/addShareNote";
|
var url = "/share/addShareNote";
|
||||||
var data = {noteId: id, emails: [emails], perm: shareNotePerm};
|
var data = {noteId: id, emails: [emails], perm: shareNotePerm};
|
||||||
if(!Share.dialogIsNote) {
|
if(!Share.dialogIsNote) {
|
||||||
url = "share/addShareNotebook";
|
url = "/share/addShareNotebook";
|
||||||
data = {notebookId: id, emails: [emails], perm: shareNotePerm};
|
data = {notebookId: id, emails: [emails], perm: shareNotePerm};
|
||||||
}
|
}
|
||||||
hideAlert("#shareMsg");
|
hideAlert("#shareMsg");
|
||||||
|
2
public/js/common-min.js
vendored
2
public/js/common-min.js
vendored
File diff suppressed because one or more lines are too long
@ -1146,4 +1146,45 @@ var vd = {
|
|||||||
return ok;
|
return ok;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// 返回hash的#a=1&b=3 返回{a:1, b:3}
|
||||||
|
function getHashObject() {
|
||||||
|
var hash = location.hash; // #life
|
||||||
|
if(!hash) {
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
var hashKV = hash.substr(1);
|
||||||
|
var kvs = hashKV.split("&");
|
||||||
|
var kvsObj = {};
|
||||||
|
for(var i = 0; i < kvs.length; ++i) {
|
||||||
|
var kv = kvs[i].split('=');
|
||||||
|
if(kv.length == 2) {
|
||||||
|
kvsObj[kv[0]] = kv[1];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return kvsObj;
|
||||||
|
}
|
||||||
|
function getHash(key, value) {
|
||||||
|
var kvs = getHashObject();
|
||||||
|
return kvs[key];
|
||||||
|
}
|
||||||
|
function setHash(key, value) {
|
||||||
|
var hash = location.hash; // #life
|
||||||
|
if(!hash) {
|
||||||
|
location.href = "#" + key + "=" + value;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var kvs = getHashObject();
|
||||||
|
kvs[key] = value;
|
||||||
|
var str = "";
|
||||||
|
for(var i in kvs) {
|
||||||
|
if(kvs[i]) {
|
||||||
|
if(str) {
|
||||||
|
str += "&";
|
||||||
|
}
|
||||||
|
str += i + '=' + kvs[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
location.href = "#" + str;
|
||||||
|
}
|
||||||
|
@ -4828,4 +4828,4 @@ body.container {
|
|||||||
outline: none;
|
outline: none;
|
||||||
border-bottom: 1px solid #eee;
|
border-bottom: 1px solid #eee;
|
||||||
background: #fffbcc;
|
background: #fffbcc;
|
||||||
}
|
}
|
11
public/member/js/ace/ck/ace-min.js
vendored
Normal file
11
public/member/js/ace/ck/ace-min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
public/member/js/ace/ck/ext-beautify-min.js
vendored
Normal file
1
public/member/js/ace/ck/ext-beautify-min.js
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
ace.define("ace/ext/beautify",["require","exports","module","ace/token_iterator","ace/ext/beautify/php_rules"],function(e,t,a){var p=e("ace/token_iterator").TokenIterator,n=e("./beautify/php_rules").transform;t.beautify=function(e){var t=new p(e,0,0),a=t.getCurrentToken(),r=e.$modeId.split("/").pop(),o=n(t,r);e.doc.setValue(o)},t.commands=[{name:"beautify",exec:function(e){t.beautify(e.session)},bindKey:"Ctrl-Shift-B"}]}),ace.define("ace/ext/beautify/php_rules",["require","exports","module","ace/token_iterator"],function(e,t,a){var p=e("ace/token_iterator").TokenIterator;t.newLines=[{type:"support.php_tag",value:"<?php"},{type:"support.php_tag",value:"<?"},{type:"support.php_tag",value:"?>"},{type:"paren.lparen",value:"{",indent:!0},{type:"paren.rparen",breakBefore:!0,value:"}",indent:!1},{type:"paren.rparen",breakBefore:!0,value:"})",indent:!1,dontBreak:!0},{type:"comment"},{type:"text",value:";"},{type:"text",value:":",context:"php"},{type:"keyword",value:"case",indent:!0,dontBreak:!0},{type:"keyword",value:"default",indent:!0,dontBreak:!0},{type:"keyword",value:"break",indent:!1,dontBreak:!0},{type:"punctuation.doctype.end",value:">"},{type:"meta.tag.punctuation.end",value:">"},{type:"meta.tag.punctuation.begin",value:"<",blockTag:!0,indent:!0,dontBreak:!0},{type:"meta.tag.punctuation.begin",value:"</",indent:!1,breakBefore:!0,dontBreak:!0},{type:"punctuation.operator",value:";"}],t.spaces=[{type:"xml-pe",prepend:!0},{type:"entity.other.attribute-name",prepend:!0},{type:"storage.type",value:"var",append:!0},{type:"storage.type",value:"function",append:!0},{type:"keyword.operator",value:"="},{type:"keyword",value:"as",prepend:!0,append:!0},{type:"keyword",value:"function",append:!0},{type:"support.function",next:/[^\(]/,append:!0},{type:"keyword",value:"or",append:!0,prepend:!0},{type:"keyword",value:"and",append:!0,prepend:!0},{type:"keyword",value:"case",append:!0},{type:"keyword.operator",value:"||",append:!0,prepend:!0},{type:"keyword.operator",value:"&&",append:!0,prepend:!0}],t.singleTags=["!doctype","area","base","br","hr","input","img","link","meta"],t.transform=function(e,a,p){for(var n=e.getCurrentToken(),r=t.newLines,o=t.spaces,u=t.singleTags,l="",i=0,y=!1,d,s,v={},c,f={},k=!1,m="";null!==n;)if(console.log(n),n)if("support.php_tag"==n.type&&"?>"!=n.value?p="php":"support.php_tag"==n.type&&"?>"==n.value?p="html":"meta.tag.name.style"==n.type&&"css"!=p?p="css":"meta.tag.name.style"==n.type&&"css"==p?p="html":"meta.tag.name.script"==n.type&&"js"!=p?p="js":"meta.tag.name.script"==n.type&&"js"==p&&(p="html"),f=e.stepForward(),f&&0==f.type.indexOf("meta.tag.name")&&(c=f.value),"support.php_tag"==v.type&&"<?="==v.value&&(y=!0),"meta.tag.name"==n.type&&(n.value=n.value.toLowerCase()),"text"==n.type&&(n.value=n.value.trim()),n.value){m=n.value;for(var g in o)n.type==o[g].type&&(!o[g].value||n.value==o[g].value)&&f&&(!o[g].next||o[g].next.test(f.value))&&(o[g].prepend&&(m=" "+n.value),o[g].append&&(m+=" "));0==n.type.indexOf("meta.tag.name")&&(d=n.value),k=!1;for(g in r)if(!(n.type!=r[g].type||r[g].value&&n.value!=r[g].value||r[g].blockTag&&-1!==u.indexOf(c)||r[g].context&&r[g].context!==p)){if(r[g].indent===!1&&i--,r[g].breakBefore&&(!r[g].prev||r[g].prev.test(v.value)))for(l+="\n",k=!0,g=0;i>g;g++)l+=" ";break}if(y===!1)for(g in r)if(!(v.type!=r[g].type||r[g].value&&v.value!=r[g].value||r[g].blockTag&&-1!==u.indexOf(d)||r[g].context&&r[g].context!==p)){if(r[g].indent===!0&&i++,!r[g].dontBreak&&!k)for(l+="\n",g=0;i>g;g++)l+=" ";break}if(l+=m,"support.php_tag"==v.type&&"?>"==v.value&&(y=!1),s=d,v=n,n=f,null===n)break}else n=f;else n=e.stepForward();return l}}),function(){ace.require(["ace/ext/beautify"],function(){})}();
|
1
public/member/js/ace/ck/ext-chromevox-min.js
vendored
Normal file
1
public/member/js/ace/ck/ext-chromevox-min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
public/member/js/ace/ck/ext-elastic_tabstops_lite-min.js
vendored
Normal file
1
public/member/js/ace/ck/ext-elastic_tabstops_lite-min.js
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
ace.define("ace/ext/elastic_tabstops_lite",["require","exports","module","ace/editor","ace/config"],function(t,e,s){var i=function(t){this.$editor=t;var e=this,s=[],i=!1;this.onAfterExec=function(){i=!1,e.processRows(s),s=[]},this.onExec=function(){i=!0},this.onChange=function(t){var e=t.data.range;i&&(-1==s.indexOf(e.start.row)&&s.push(e.start.row),e.end.row!=e.start.row&&s.push(e.end.row))}};(function(){this.processRows=function(t){this.$inChange=!0;for(var e=[],s=0,i=t.length;i>s;s++){var o=t[s];if(!(e.indexOf(o)>-1))for(var n=this.$findCellWidthsForBlock(o),r=this.$setBlockCellWidthsToMax(n.cellWidths),h=n.firstRow,a=0,c=r.length;c>a;a++){var l=r[a];e.push(h),this.$adjustRow(h,l),h++}}this.$inChange=!1},this.$findCellWidthsForBlock=function(t){for(var e=[],s,i=t;i>=0&&(s=this.$cellWidthsForRow(i),0!=s.length);)e.unshift(s),i--;var o=i+1;i=t;for(var n=this.$editor.session.getLength();n-1>i&&(i++,s=this.$cellWidthsForRow(i),0!=s.length);)e.push(s);return{cellWidths:e,firstRow:o}},this.$cellWidthsForRow=function(t){for(var e=this.$selectionColumnsForRow(t),s=[-1].concat(this.$tabsForRow(t)),i=s.map(function(t){return 0}).slice(1),o=this.$editor.session.getLine(t),n=0,r=s.length-1;r>n;n++){var h=s[n]+1,a=s[n+1],c=this.$rightmostSelectionInCell(e,a),l=o.substring(h,a);i[n]=Math.max(l.replace(/\s+$/g,"").length,c-h)}return i},this.$selectionColumnsForRow=function(t){var e=[],s=this.$editor.getCursorPosition();return this.$editor.session.getSelection().isEmpty()&&t==s.row&&e.push(s.column),e},this.$setBlockCellWidthsToMax=function(t){for(var e=!0,s,i,o,n=this.$izip_longest(t),r=0,h=n.length;h>r;r++){var a=n[r];if(a.push){a.push(0/0);for(var c=0,l=a.length;l>c;c++){var u=a[c];if(e&&(s=c,o=0,e=!1),isNaN(u)){i=c;for(var f=s;i>f;f++)t[f][r]=o;e=!0}o=Math.max(o,u)}}else console.error(a)}return t},this.$rightmostSelectionInCell=function(t,e){var s=0;if(t.length){for(var i=[],o=0,n=t.length;n>o;o++)i.push(t[o]<=e?o:0);s=Math.max.apply(Math,i)}return s},this.$tabsForRow=function(t){for(var e=[],s=this.$editor.session.getLine(t),i=/\t/g,o;null!=(o=i.exec(s));)e.push(o.index);return e},this.$adjustRow=function(t,e){var s=this.$tabsForRow(t);if(0!=s.length)for(var i=0,o=-1,n=this.$izip(e,s),r=0,h=n.length;h>r;r++){var a=n[r][0],c=n[r][1];o+=1+a,c+=i;var l=o-c;if(0!=l){var u=this.$editor.session.getLine(t).substr(0,c),f=u.replace(/\s*$/g,""),g=u.length-f.length;l>0&&(this.$editor.session.getDocument().insertInLine({row:t,column:c+1},Array(l+1).join(" ")+" "),this.$editor.session.getDocument().removeInLine(t,c,c+1),i+=l),0>l&&g>=-l&&(this.$editor.session.getDocument().removeInLine(t,c+l,c),i+=l)}}},this.$izip_longest=function(t){if(!t[0])return[];for(var e=t[0].length,s=t.length,i=1;s>i;i++){var o=t[i].length;o>e&&(e=o)}for(var n=[],r=0;e>r;r++){for(var h=[],i=0;s>i;i++)h.push(""===t[i][r]?0/0:t[i][r]);n.push(h)}return n},this.$izip=function(t,e){for(var s=t.length>=e.length?e.length:t.length,i=[],o=0;s>o;o++){var n=[t[o],e[o]];i.push(n)}return i}}).call(i.prototype),e.ElasticTabstopsLite=i;var o=t("../editor").Editor;t("../config").defineOptions(o.prototype,"editor",{useElasticTabstops:{set:function(t){t?(this.elasticTabstops||(this.elasticTabstops=new i(this)),this.commands.on("afterExec",this.elasticTabstops.onAfterExec),this.commands.on("exec",this.elasticTabstops.onExec),this.on("change",this.elasticTabstops.onChange)):this.elasticTabstops&&(this.commands.removeListener("afterExec",this.elasticTabstops.onAfterExec),this.commands.removeListener("exec",this.elasticTabstops.onExec),this.removeListener("change",this.elasticTabstops.onChange))}}})}),function(){ace.require(["ace/ext/elastic_tabstops_lite"],function(){})}();
|
1
public/member/js/ace/ck/ext-emmet-min.js
vendored
Normal file
1
public/member/js/ace/ck/ext-emmet-min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
public/member/js/ace/ck/ext-error_marker-min.js
vendored
Normal file
1
public/member/js/ace/ck/ext-error_marker-min.js
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
!function(){ace.require(["ace/ext/error_marker"],function(){})}();
|
1
public/member/js/ace/ck/ext-keybinding_menu-min.js
vendored
Normal file
1
public/member/js/ace/ck/ext-keybinding_menu-min.js
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
ace.define("ace/ext/keybinding_menu",["require","exports","module","ace/editor","ace/ext/menu_tools/overlay_page","ace/ext/menu_tools/get_editor_keyboard_shortcuts"],function(e,o,t){function n(o){if(!document.getElementById("kbshortcutmenu")){var t=e("./menu_tools/overlay_page").overlayPage,n=e("./menu_tools/get_editor_keyboard_shortcuts").getEditorKeybordShortcuts,r=n(o),a=document.createElement("div"),i=r.reduce(function(e,o){return e+'<div class="ace_optionsMenuEntry"><span class="ace_optionsMenuCommand">'+o.command+'</span> : <span class="ace_optionsMenuKey">'+o.key+"</span></div>"},"");a.id="kbshortcutmenu",a.innerHTML="<h1>Keyboard Shortcuts</h1>"+i+"</div>",t(o,a,"0","0","0",null)}}var r=e("ace/editor").Editor;t.exports.init=function(e){r.prototype.showKeyboardShortcuts=function(){n(this)},e.commands.addCommands([{name:"showKeyboardShortcuts",bindKey:{win:"Ctrl-Alt-h",mac:"Command-Alt-h"},exec:function(e,o){e.showKeyboardShortcuts()}}])}}),ace.define("ace/ext/menu_tools/overlay_page",["require","exports","module","ace/lib/dom"],function(e,o,t){var n=e("../../lib/dom"),r="#ace_settingsmenu, #kbshortcutmenu {background-color: #F7F7F7;color: black;box-shadow: -5px 4px 5px rgba(126, 126, 126, 0.55);padding: 1em 0.5em 2em 1em;overflow: auto;position: absolute;margin: 0;bottom: 0;right: 0;top: 0;z-index: 9991;cursor: default;}.ace_dark #ace_settingsmenu, .ace_dark #kbshortcutmenu {box-shadow: -20px 10px 25px rgba(126, 126, 126, 0.25);background-color: rgba(255, 255, 255, 0.6);color: black;}.ace_optionsMenuEntry:hover {background-color: rgba(100, 100, 100, 0.1);-webkit-transition: all 0.5s;transition: all 0.3s}.ace_closeButton {background: rgba(245, 146, 146, 0.5);border: 1px solid #F48A8A;border-radius: 50%;padding: 7px;position: absolute;right: -8px;top: -8px;z-index: 1000;}.ace_closeButton{background: rgba(245, 146, 146, 0.9);}.ace_optionsMenuKey {color: darkslateblue;font-weight: bold;}.ace_optionsMenuCommand {color: darkcyan;font-weight: normal;}";n.importCssString(r),t.exports.overlayPage=function(e,o,t,r,a,i){function c(e){27===e.keyCode&&d.click()}t=t?"top: "+t+";":"",a=a?"bottom: "+a+";":"",r=r?"right: "+r+";":"",i=i?"left: "+i+";":"";var d=document.createElement("div"),s=document.createElement("div");d.style.cssText="margin: 0; padding: 0; position: fixed; top:0; bottom:0; left:0; right:0;z-index: 9990; background-color: rgba(0, 0, 0, 0.3);",d.addEventListener("click",function(){document.removeEventListener("keydown",c),d.parentNode.removeChild(d),e.focus(),d=null}),document.addEventListener("keydown",c),s.style.cssText=t+r+a+i,s.addEventListener("click",function(e){e.stopPropagation()});var u=n.createElement("div");u.style.position="relative";var l=n.createElement("div");l.className="ace_closeButton",l.addEventListener("click",function(){d.click()}),u.appendChild(l),s.appendChild(u),s.appendChild(o),d.appendChild(s),document.body.appendChild(d),e.blur()}}),ace.define("ace/ext/menu_tools/get_editor_keyboard_shortcuts",["require","exports","module","ace/lib/keys"],function(e,o,t){var n=e("../../lib/keys");t.exports.getEditorKeybordShortcuts=function(e){var o=n.KEY_MODS,t=[],r={};return e.keyBinding.$handlers.forEach(function(e){var n=e.commandKeyBinding;for(var a in n){var i=parseInt(a);i=-1==i?"":isNaN(i)?a:""+(i&o.command?"Cmd-":"")+(i&o.ctrl?"Ctrl-":"")+(i&o.alt?"Alt-":"")+(i&o.shift?"Shift-":"");for(var c in n[a]){var d=n[a][c];"string"!=typeof d&&(d=d.name),r[d]?r[d].key+="|"+i+c:(r[d]={key:i+c,command:d},t.push(r[d]))}}}),t}}),function(){ace.require(["ace/ext/keybinding_menu"],function(){})}();
|
1
public/member/js/ace/ck/ext-language_tools-min.js
vendored
Normal file
1
public/member/js/ace/ck/ext-language_tools-min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
public/member/js/ace/ck/ext-linking-min.js
vendored
Normal file
1
public/member/js/ace/ck/ext-linking-min.js
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
ace.define("ace/ext/linking",["require","exports","module","ace/editor","ace/config"],function(e,o,i){function t(e){var o=e.editor,i=e.getAccelKey();if(i){var o=e.editor,t=e.getDocumentPosition(),n=o.session,c=n.getTokenAt(t.row,t.column);o._emit("linkHover",{position:t,token:c})}}function n(e){var o=e.getAccelKey(),i=e.getButton();if(0==i&&o){var t=e.editor,n=e.getDocumentPosition(),c=t.session,r=c.getTokenAt(n.row,n.column);t._emit("linkClick",{position:n,token:r})}}var c=e("ace/editor").Editor;e("../config").defineOptions(c.prototype,"editor",{enableLinking:{set:function(e){e?(this.on("click",n),this.on("mousemove",t)):(this.off("click",n),this.off("mousemove",t))},value:!1}})}),function(){ace.require(["ace/ext/linking"],function(){})}();
|
1
public/member/js/ace/ck/ext-modelist-min.js
vendored
Normal file
1
public/member/js/ace/ck/ext-modelist-min.js
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
ace.define("ace/ext/modelist",["require","exports","module"],function(e,s,t){function a(e){for(var s=c.text,t=e.split(/[\/\\]/).pop(),a=0;a<l.length;a++)if(l[a].supportsFile(t)){s=l[a];break}return s}var l=[],r=function(e,s,t){if(this.name=e,this.caption=s,this.mode="ace/mode/"+e,this.extensions=t,/\^/.test(t))var a=t.replace(/\|(\^)?/g,function(e,s){return"$|"+(s?"^":"^.*\\.")})+"$";else var a="^.*\\.("+t+")$";this.extRe=new RegExp(a,"gi")};r.prototype.supportsFile=function(e){return e.match(this.extRe)};var i={ABAP:["abap"],ActionScript:["as"],ADA:["ada|adb"],Apache_Conf:["^htaccess|^htgroups|^htpasswd|^conf|htaccess|htgroups|htpasswd"],AsciiDoc:["asciidoc"],Assembly_x86:["asm"],AutoHotKey:["ahk"],BatchFile:["bat|cmd"],C9Search:["c9search_results"],C_Cpp:["cpp|c|cc|cxx|h|hh|hpp"],Cirru:["cirru|cr"],Clojure:["clj"],Cobol:["CBL|COB"],coffee:["coffee|cf|cson|^Cakefile"],ColdFusion:["cfm"],CSharp:["cs"],CSS:["css"],Curly:["curly"],D:["d|di"],Dart:["dart"],Diff:["diff|patch"],Dockerfile:["^Dockerfile"],Dot:["dot"],Erlang:["erl|hrl"],EJS:["ejs"],Forth:["frt|fs|ldr"],FTL:["ftl"],Gherkin:["feature"],Glsl:["glsl|frag|vert"],golang:["go"],Groovy:["groovy"],HAML:["haml"],Handlebars:["hbs|handlebars|tpl|mustache"],Haskell:["hs"],haXe:["hx"],HTML:["html|htm|xhtml"],HTML_Ruby:["erb|rhtml|html.erb"],INI:["ini|conf|cfg|prefs"],Jack:["jack"],Jade:["jade"],Java:["java"],JavaScript:["js|jsm"],JSON:["json"],JSONiq:["jq"],JSP:["jsp"],JSX:["jsx"],Julia:["jl"],LaTeX:["tex|latex|ltx|bib"],LESS:["less"],Liquid:["liquid"],Lisp:["lisp"],LiveScript:["ls"],LogiQL:["logic|lql"],LSL:["lsl"],Lua:["lua"],LuaPage:["lp"],Lucene:["lucene"],Makefile:["^Makefile|^GNUmakefile|^makefile|^OCamlMakefile|make"],MATLAB:["matlab"],Markdown:["md|markdown"],MEL:["mel"],MySQL:["mysql"],MUSHCode:["mc|mush"],Nix:["nix"],ObjectiveC:["m|mm"],OCaml:["ml|mli"],Pascal:["pas|p"],Perl:["pl|pm"],pgSQL:["pgsql"],PHP:["php|phtml"],Powershell:["ps1"],Prolog:["plg|prolog"],Properties:["properties"],Protobuf:["proto"],Python:["py"],R:["r"],RDoc:["Rd"],RHTML:["Rhtml"],Ruby:["rb|ru|gemspec|rake|^Guardfile|^Rakefile|^Gemfile"],Rust:["rs"],SASS:["sass"],SCAD:["scad"],Scala:["scala"],Smarty:["smarty|tpl"],Scheme:["scm|rkt"],SCSS:["scss"],SH:["sh|bash|^.bashrc"],SJS:["sjs"],Space:["space"],snippets:["snippets"],Soy_Template:["soy"],SQL:["sql"],Stylus:["styl|stylus"],SVG:["svg"],Tcl:["tcl"],Tex:["tex"],Text:["txt"],Textile:["textile"],Toml:["toml"],Twig:["twig"],Typescript:["ts|typescript|str"],Vala:["vala"],VBScript:["vbs"],Velocity:["vm"],Verilog:["v|vh|sv|svh"],XML:["xml|rdf|rss|wsdl|xslt|atom|mathml|mml|xul|xbl"],XQuery:["xq"],YAML:["yaml|yml"]},o={ObjectiveC:"Objective-C",CSharp:"C#",golang:"Go",C_Cpp:"C/C++",coffee:"CoffeeScript",HTML_Ruby:"HTML (Ruby)",FTL:"FreeMarker"},c={};for(var p in i){var m=i[p],h=(o[p]||p).replace(/_/g," "),f=p.toLowerCase(),u=new r(f,h,m[0]);c[f]=u,l.push(u)}t.exports={getModeForPath:a,modes:l,modesByName:c}}),function(){ace.require(["ace/ext/modelist"],function(){})}();
|
1
public/member/js/ace/ck/ext-old_ie-min.js
vendored
Normal file
1
public/member/js/ace/ck/ext-old_ie-min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
public/member/js/ace/ck/ext-prompt-min.js
vendored
Normal file
1
public/member/js/ace/ck/ext-prompt-min.js
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
ace.define("ace/ext/prompt",["require","exports","module","ace/lib/lang","ace/lib/dom","ace/lib/event","ace/edit_session","ace/undomanager","ace/virtual_renderer","ace/editor","ace/multi_select"],function(e,n,t){function i(e,n){var t=this.pixelToScreenCoordinates(e,n);return this.session.screenToDocumentPosition(Math.min(this.session.getScreenLength()-1,Math.max(t.row,0)),Math.max(t.column,0))}var a=e("../lib/lang"),r=e("ace/lib/dom"),o=e("ace/lib/event"),s=e("ace/edit_session").EditSession,c=e("ace/undomanager").UndoManager,l=e("ace/virtual_renderer").VirtualRenderer,u=e("ace/editor").Editor,d=e("ace/multi_select").MultiSelect;n.singleLineEditor=function(e){var n=new l;n.container.style.overflow="hidden",n.screenToTextCoordinates=i,n.setStyle("ace_one-line");var t=new u(n);return t.session.setUndoManager(new c),t.setOptions({showPrintMargin:!1,showGutter:!1,highlightGutterLine:!1,focusWaitTimout:0,maxLines:4}),t}}),function(){ace.require(["ace/ext/prompt"],function(){})}();
|
1
public/member/js/ace/ck/ext-searchbox-min.js
vendored
Normal file
1
public/member/js/ace/ck/ext-searchbox-min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
public/member/js/ace/ck/ext-settings_menu-min.js
vendored
Normal file
1
public/member/js/ace/ck/ext-settings_menu-min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
public/member/js/ace/ck/ext-spellcheck-min.js
vendored
Normal file
1
public/member/js/ace/ck/ext-spellcheck-min.js
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
ace.define("ace/ext/spellcheck",["require","exports","module","ace/lib/event","ace/editor","ace/config"],function(e,t,n){var i=e("../lib/event");t.contextMenuHandler=function(e){var t=e.target,n=t.textInput.getElement();if(t.selection.isEmpty()){var s=t.getCursorPosition(),o=t.session.getWordRange(s.row,s.column),c=t.session.getTextRange(o);if(t.session.tokenRe.lastIndex=0,t.session.tokenRe.test(c)){var r="",l=c+" "+r;n.value=l,n.setSelectionRange(c.length,c.length+1),n.setSelectionRange(0,0),n.setSelectionRange(0,c.length);var a=!1;i.addListener(n,"keydown",function u(){i.removeListener(n,"keydown",u),a=!0}),t.textInput.setInputHandler(function(e){if(console.log(e,l,n.selectionStart,n.selectionEnd),e==l)return"";if(0===e.lastIndexOf(l,0))return e.slice(l.length);if(e.substr(n.selectionEnd)==l)return e.slice(0,-l.length);if(e.slice(-2)==r){var i=e.slice(0,-2);if(" "==i.slice(-1))return a?i.substring(0,n.selectionEnd):(i=i.slice(0,-1),t.session.replace(o,i),"")}return e})}}};var s=e("../editor").Editor;e("../config").defineOptions(s.prototype,"editor",{spellcheck:{set:function(e){var n=this.textInput.getElement();n.spellcheck=!!e,e?this.on("nativecontextmenu",t.contextMenuHandler):this.removeListener("nativecontextmenu",t.contextMenuHandler)},value:!0}})}),function(){ace.require(["ace/ext/spellcheck"],function(){})}();
|
1
public/member/js/ace/ck/ext-split-min.js
vendored
Normal file
1
public/member/js/ace/ck/ext-split-min.js
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
ace.define("ace/ext/split",["require","exports","module","ace/split"],function(t,i,e){e.exports=t("../split")}),ace.define("ace/split",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter","ace/editor","ace/virtual_renderer","ace/edit_session"],function(t,i,e){function s(t,i){this.$u=t,this.$doc=i}var n=t("./lib/oop"),o=t("./lib/lang"),r=t("./lib/event_emitter").EventEmitter,h=t("./editor").Editor,a=t("./virtual_renderer").VirtualRenderer,c=t("./edit_session").EditSession,l=function(t,i,e){this.BELOW=1,this.BESIDE=0,this.$container=t,this.$theme=i,this.$splits=0,this.$editorCSS="",this.$editors=[],this.$orientation=this.BESIDE,this.setSplits(e||1),this.$cEditor=this.$editors[0],this.on("focus",function(t){this.$cEditor=t}.bind(this))};(function(){n.implement(this,r),this.$createEditor=function(){var t=document.createElement("div");t.className=this.$editorCSS,t.style.cssText="position: absolute; top:0px; bottom:0px",this.$container.appendChild(t);var i=new h(new a(t,this.$theme));return i.on("focus",function(){this._emit("focus",i)}.bind(this)),this.$editors.push(i),i.setFontSize(this.$fontSize),i},this.setSplits=function(t){var i;if(1>t)throw"The number of splits have to be > 0!";if(t!=this.$splits){if(t>this.$splits){for(;this.$splits<this.$editors.length&&this.$splits<t;)i=this.$editors[this.$splits],this.$container.appendChild(i.container),i.setFontSize(this.$fontSize),this.$splits++;for(;this.$splits<t;)this.$createEditor(),this.$splits++}else for(;this.$splits>t;)i=this.$editors[this.$splits-1],this.$container.removeChild(i.container),this.$splits--;this.resize()}},this.getSplits=function(){return this.$splits},this.getEditor=function(t){return this.$editors[t]},this.getCurrentEditor=function(){return this.$cEditor},this.focus=function(){this.$cEditor.focus()},this.blur=function(){this.$cEditor.blur()},this.setTheme=function(t){this.$editors.forEach(function(i){i.setTheme(t)})},this.setKeyboardHandler=function(t){this.$editors.forEach(function(i){i.setKeyboardHandler(t)})},this.forEach=function(t,i){this.$editors.forEach(t,i)},this.$fontSize="",this.setFontSize=function(t){this.$fontSize=t,this.forEach(function(i){i.setFontSize(t)})},this.$cloneSession=function(t){var i=new c(t.getDocument(),t.getMode()),e=t.getUndoManager();if(e){var n=new s(e,i);i.setUndoManager(n)}return i.$informUndoManager=o.delayedCall(function(){i.$deltas=[]}),i.setTabSize(t.getTabSize()),i.setUseSoftTabs(t.getUseSoftTabs()),i.setOverwrite(t.getOverwrite()),i.setBreakpoints(t.getBreakpoints()),i.setUseWrapMode(t.getUseWrapMode()),i.setUseWorker(t.getUseWorker()),i.setWrapLimitRange(t.$wrapLimitRange.min,t.$wrapLimitRange.max),i.$foldData=t.$cloneFoldData(),i},this.setSession=function(t,i){var e;e=null==i?this.$cEditor:this.$editors[i];var s=this.$editors.some(function(i){return i.session===t});return s&&(t=this.$cloneSession(t)),e.setSession(t),t},this.getOrientation=function(){return this.$orientation},this.setOrientation=function(t){this.$orientation!=t&&(this.$orientation=t,this.resize())},this.resize=function(){var t=this.$container.clientWidth,i=this.$container.clientHeight,e;if(this.$orientation==this.BESIDE)for(var s=t/this.$splits,n=0;n<this.$splits;n++)e=this.$editors[n],e.container.style.width=s+"px",e.container.style.top="0px",e.container.style.left=n*s+"px",e.container.style.height=i+"px",e.resize();else for(var o=i/this.$splits,n=0;n<this.$splits;n++)e=this.$editors[n],e.container.style.width=t+"px",e.container.style.top=n*o+"px",e.container.style.left="0px",e.container.style.height=o+"px",e.resize()}}).call(l.prototype),function(){this.execute=function(t){this.$u.execute(t)},this.undo=function(){var t=this.$u.undo(!0);t&&this.$doc.selection.setSelectionRange(t)},this.redo=function(){var t=this.$u.redo(!0);t&&this.$doc.selection.setSelectionRange(t)},this.reset=function(){this.$u.reset()},this.hasUndo=function(){return this.$u.hasUndo()},this.hasRedo=function(){return this.$u.hasRedo()}}.call(s.prototype),i.Split=l}),function(){ace.require(["ace/ext/split"],function(){})}();
|
1
public/member/js/ace/ck/ext-static_highlight-min.js
vendored
Normal file
1
public/member/js/ace/ck/ext-static_highlight-min.js
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
ace.define("ace/ext/static_highlight",["require","exports","module","ace/edit_session","ace/layer/text","ace/config","ace/lib/dom"],function(e,t,i){var n=e("../edit_session").EditSession,s=e("../layer/text").Text,a=".ace_static_highlight {font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', 'source-code-pro', 'Droid Sans Mono', monospace;font-size: 12px;}.ace_static_highlight .ace_gutter {width: 25px !important;display: block;float: left;text-align: right;padding: 0 3px 0 0;margin-right: 3px;position: static !important;}.ace_static_highlight .ace_line { clear: both; }.ace_static_highlight .ace_gutter-cell {-moz-user-select: -moz-none;-khtml-user-select: none;-webkit-user-select: none;user-select: none;}.ace_static_highlight .ace_gutter-cell:before {content: counter(ace_line, decimal);counter-increment: ace_line;}.ace_static_highlight {counter-reset: ace_line;}",c=e("../config"),o=e("../lib/dom"),r=function(e,t,i){var n=e.className.match(/lang-(\w+)/),s=t.mode||n&&"ace/mode/"+n[1];if(!s)return!1;var a=t.theme||"ace/theme/textmate",c="",l=[];if(e.firstElementChild)for(var h=0,d=0;d<e.childNodes.length;d++){var g=e.childNodes[d];3==g.nodeType?(h+=g.data.length,c+=g.data):l.push(h,g)}else c=o.getInnerText(e),t.trim&&(c=c.trim());r.render(c,s,a,t.firstLineNumber,!t.showGutter,function(t){o.importCssString(t.css,"ace_highlight"),e.innerHTML=t.html;for(var n=e.firstChild.firstChild,s=0;s<l.length;s+=2){var a=t.session.doc.indexToPosition(l[s]),c=l[s+1],r=n.children[a.row];r&&r.appendChild(c)}i&&i()})};r.render=function(e,t,i,s,a,o){function l(){var n=r.renderSync(e,t,i,s,a);return o?o(n):n}var h=1,d=n.prototype.$modes;return"string"==typeof i&&(h++,c.loadModule(["theme",i],function(e){i=e,--h||l()})),"string"==typeof t&&(h++,c.loadModule(["mode",t],function(e){d[t]||(d[t]=new e.Mode),t=d[t],--h||l()})),--h||l()},r.renderSync=function(e,t,i,c,o){c=parseInt(c||1,10);var r=new n("");r.setUseWorker(!1),r.setMode(t);var l=new s(document.createElement("div"));l.setSession(r),l.config={characterWidth:10,lineHeight:20},r.setValue(e);for(var h=[],d=r.getLength(),g=0;d>g;g++)h.push("<div class='ace_line'>"),o||h.push("<span class='ace_gutter ace_gutter-cell' unselectable='on'></span>"),l.$renderLine(h,g,!0,!1),h.push("\n</div>");var u="<div class='"+i.cssClass+"'><div class='ace_static_highlight' style='counter-reset:ace_line "+(c-1)+"'>"+h.join("")+"</div></div>";return l.destroy(),{css:a+i.cssText,html:u,session:r}},i.exports=r,i.exports.highlight=r}),function(){ace.require(["ace/ext/static_highlight"],function(){})}();
|
1
public/member/js/ace/ck/ext-statusbar-min.js
vendored
Normal file
1
public/member/js/ace/ck/ext-statusbar-min.js
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
ace.define("ace/ext/statusbar",["require","exports","module","ace/lib/dom","ace/lib/lang"],function(e,t,n){var a=e("ace/lib/dom"),i=e("ace/lib/lang"),c=function(e,t){this.element=a.createElement("div"),this.element.className="ace_status-indicator",this.element.style.cssText="display: inline-block;",t.appendChild(this.element);var n=i.delayedCall(function(){this.updateStatus(e)}.bind(this));e.on("changeStatus",function(){n.schedule(100)}),e.on("changeSelection",function(){n.schedule(100)})};(function(){this.updateStatus=function(e){function t(e,t){e&&n.push(e,t||"|")}var n=[];e.$vimModeHandler?t(e.$vimModeHandler.getStatusText()):e.commands.recording&&t("REC");var a=e.selection.lead;if(t(a.row+":"+a.column," "),!e.selection.isEmpty()){var i=e.getSelectionRange();t("("+(i.end.row-i.start.row)+":"+(i.end.column-i.start.column)+")")}n.pop(),this.element.textContent=n.join("")}}).call(c.prototype),t.StatusBar=c}),function(){ace.require(["ace/ext/statusbar"],function(){})}();
|
1
public/member/js/ace/ck/ext-textarea-min.js
vendored
Normal file
1
public/member/js/ace/ck/ext-textarea-min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
public/member/js/ace/ck/ext-themelist-min.js
vendored
Normal file
1
public/member/js/ace/ck/ext-themelist-min.js
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
ace.define("ace/ext/themelist",["require","exports","module","ace/lib/fixoldbrowsers"],function(r,e,o){r("ace/lib/fixoldbrowsers");var a=[["Chrome"],["Clouds"],["Crimson Editor"],["Dawn"],["Dreamweaver"],["Eclipse"],["GitHub"],["Solarized Light"],["TextMate"],["Tomorrow"],["XCode"],["Kuroir"],["KatzenMilch"],["Ambiance","ambiance","dark"],["Chaos","chaos","dark"],["Clouds Midnight","clouds_midnight","dark"],["Cobalt","cobalt","dark"],["idle Fingers","idle_fingers","dark"],["krTheme","kr_theme","dark"],["Merbivore","merbivore","dark"],["Merbivore Soft","merbivore_soft","dark"],["Mono Industrial","mono_industrial","dark"],["Monokai","monokai","dark"],["Pastel on dark","pastel_on_dark","dark"],["Solarized Dark","solarized_dark","dark"],["Terminal","terminal","dark"],["Tomorrow Night","tomorrow_night","dark"],["Tomorrow Night Blue","tomorrow_night_blue","dark"],["Tomorrow Night Bright","tomorrow_night_bright","dark"],["Tomorrow Night 80s","tomorrow_night_eighties","dark"],["Twilight","twilight","dark"],["Vibrant Ink","vibrant_ink","dark"]];e.themesByName={},e.themes=a.map(function(r){var o=r[1]||r[0].replace(/ /g,"_").toLowerCase(),a={caption:r[0],theme:"ace/theme/"+o,isDark:"dark"==r[2],name:o};return e.themesByName[o]=a,a})}),function(){ace.require(["ace/ext/themelist"],function(){})}();
|
1
public/member/js/ace/ck/ext-whitespace-min.js
vendored
Normal file
1
public/member/js/ace/ck/ext-whitespace-min.js
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
ace.define("ace/ext/whitespace",["require","exports","module","ace/lib/lang"],function(e,t,n){var r=e("../lib/lang");t.$detectIndentation=function(e,t){function n(e){for(var t=0,n=e;n<r.length;n+=e)t+=r[n]||0;return t}for(var r=[],a=[],i=0,s=0,c=Math.min(e.length,1e3),o=0;c>o;o++){var g=e[o];if(/^\s*[^*+\-\s]/.test(g)){var h=g.match(/^\t*/)[0].length;" "==g[0]&&i++;var l=g.match(/^ */)[0].length;if(l&&" "!=g[l]){var f=l-s;f>0&&!(s%f)&&!(l%f)&&(a[f]=(a[f]||0)+1),r[l]=(r[l]||0)+1}for(s=l;c>o&&"\\"==g[g.length-1];)g=e[o++]}}if(r.length){for(var v=a.reduce(function(e,t){return e+t},0),u={score:0,length:0},d=0,o=1;12>o;o++){if(1==o){d=n(o);var m=1}else var m=n(o)/d;a[o]&&(m+=a[o]/v),m>u.score&&(u={score:m,length:o})}if(u.score&&u.score>1.4)var p=u.length;return i>d+1?{ch:" ",length:p}:d+1>i?{ch:" ",length:p}:void 0}},t.detectIndentation=function(e){var n=e.getLines(0,1e3),r=t.$detectIndentation(n)||{};return r.ch&&e.setUseSoftTabs(" "==r.ch),r.length&&e.setTabSize(r.length),r},t.trimTrailingSpace=function(e,t){for(var n=e.getDocument(),r=n.getAllLines(),a=t?-1:0,i=0,s=r.length;s>i;i++){var c=r[i],o=c.search(/\s+$/);o>a&&n.removeInLine(i,o,c.length)}},t.convertIndentation=function(e,t,n){var a=e.getTabString()[0],i=e.getTabSize();n||(n=i),t||(t=a);for(var s=" "==t?t:r.stringRepeat(t,n),c=e.doc,o=c.getAllLines(),g={},h={},l=0,f=o.length;f>l;l++){var v=o[l],u=v.match(/^\s*/)[0];if(u){var d=e.$getStringScreenWidth(u)[0],m=Math.floor(d/i),p=d%i,S=g[m]||(g[m]=r.stringRepeat(s,m));S+=h[p]||(h[p]=r.stringRepeat(" ",p)),S!=u&&(c.removeInLine(l,0,u.length),c.insertInLine({row:l,column:0},S))}}e.setTabSize(n),e.setUseSoftTabs(" "==t)},t.$parseStringArg=function(e){var t={};/t/.test(e)?t.ch=" ":/s/.test(e)&&(t.ch=" ");var n=e.match(/\d+/);return n&&(t.length=parseInt(n[0],10)),t},t.$parseArg=function(e){return e?"string"==typeof e?t.$parseStringArg(e):"string"==typeof e.text?t.$parseStringArg(e.text):e:{}},t.commands=[{name:"detectIndentation",exec:function(e){t.detectIndentation(e.session)}},{name:"trimTrailingSpace",exec:function(e){t.trimTrailingSpace(e.session)}},{name:"convertIndentation",exec:function(e,n){var r=t.$parseArg(n);t.convertIndentation(e.session,r.ch,r.length)}},{name:"setIndentation",exec:function(e,n){var r=t.$parseArg(n);r.length&&e.session.setTabSize(r.length),r.ch&&e.session.setUseSoftTabs(" "==r.ch)}}]}),function(){ace.require(["ace/ext/whitespace"],function(){})}();
|
1
public/member/js/ace/ck/keybinding-emacs-min.js
vendored
Normal file
1
public/member/js/ace/ck/keybinding-emacs-min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
public/member/js/ace/ck/keybinding-vim-min.js
vendored
Normal file
1
public/member/js/ace/ck/keybinding-vim-min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
public/member/js/ace/ck/mode-abap-min.js
vendored
Normal file
1
public/member/js/ace/ck/mode-abap-min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
public/member/js/ace/ck/mode-actionscript-min.js
vendored
Normal file
1
public/member/js/ace/ck/mode-actionscript-min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
public/member/js/ace/ck/mode-ada-min.js
vendored
Normal file
1
public/member/js/ace/ck/mode-ada-min.js
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
ace.define("ace/mode/ada",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/ada_highlight_rules","ace/range"],function(e,t,a){var r=e("../lib/oop"),i=e("./text").Mode,n=e("./ada_highlight_rules").AdaHighlightRules,o=e("../range").Range,s=function(){this.HighlightRules=n};r.inherits(s,i),function(){this.lineCommentStart="--",this.$id="ace/mode/ada"}.call(s.prototype),t.Mode=s}),ace.define("ace/mode/ada_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,a){var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,n=function(){var e="abort|else|new|return|abs|elsif|not|reverse|abstract|end|null|accept|entry|select|access|exception|of|separate|aliased|exit|or|some|all|others|subtype|and|for|out|synchronized|array|function|overriding|at|tagged|generic|package|task|begin|goto|pragma|terminate|body|private|then|if|procedure|type|case|in|protected|constant|interface|until||is|raise|use|declare|range|delay|limited|record|when|delta|loop|rem|while|digits|renames|with|do|mod|requeue|xor",t="true|false|null",a="count|min|max|avg|sum|rank|now|coalesce|main",r=this.createKeywordMapper({"support.function":a,keyword:e,"constant.language":t},"identifier",!0);this.$rules={start:[{token:"comment",regex:"--.*$"},{token:"string",regex:'".*?"'},{token:"string",regex:"'.*?'"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:r,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"\\+|\\-|\\/|\\/\\/|%|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|="},{token:"paren.lparen",regex:"[\\(]"},{token:"paren.rparen",regex:"[\\)]"},{token:"text",regex:"\\s+"}]}};r.inherits(n,i),t.AdaHighlightRules=n});
|
1
public/member/js/ace/ck/mode-apache_conf-min.js
vendored
Normal file
1
public/member/js/ace/ck/mode-apache_conf-min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
public/member/js/ace/ck/mode-applescript-min.js
vendored
Normal file
1
public/member/js/ace/ck/mode-applescript-min.js
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
ace.define("ace/mode/applescript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/tokenizer","ace/mode/applescript_highlight_rules","ace/mode/folding/cstyle"],function(e,t,o){var r=e("../lib/oop"),i=e("./text").Mode,n=e("../tokenizer").Tokenizer,a=e("./applescript_highlight_rules").AppleScriptHighlightRules,s=e("./folding/cstyle").FoldMode,l=function(){this.HighlightRules=a,this.foldingRules=new s};r.inherits(l,i),function(){this.lineCommentStart="--",this.blockComment={start:"(*",end:"*)"}}.call(l.prototype),t.Mode=l}),ace.define("ace/mode/applescript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,o){var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,n=function(){var e="about|above|after|against|and|around|as|at|back|before|beginning|behind|below|beneath|beside|between|but|by|considering|contain|contains|continue|copy|div|does|eighth|else|end|equal|equals|error|every|exit|fifth|first|for|fourth|from|front|get|given|global|if|ignoring|in|into|is|it|its|last|local|me|middle|mod|my|ninth|not|of|on|onto|or|over|prop|property|put|ref|reference|repeat|returning|script|second|set|seventh|since|sixth|some|tell|tenth|that|the|then|third|through|thru|timeout|times|to|transaction|try|until|where|while|whose|with|without",t="AppleScript|false|linefeed|return|pi|quote|result|space|tab|true",o="activate|beep|count|delay|launch|log|offset|read|round|run|say|summarize|write",r="alias|application|boolean|class|constant|date|file|integer|list|number|real|record|string|text|character|characters|contents|day|frontmost|id|item|length|month|name|paragraph|paragraphs|rest|reverse|running|time|version|weekday|word|words|year",i=this.createKeywordMapper({"support.function":o,"constant.language":t,"support.type":r,keyword:e},"identifier");this.$rules={start:[{token:"comment",regex:"--.*$"},{token:"comment",regex:"\\(\\*",next:"comment"},{token:"string",regex:'".*?"'},{token:"support.type",regex:"\\b(POSIX file|POSIX path|(date|time) string|quoted form)\\b"},{token:"support.function",regex:"\\b(clipboard info|the clipboard|info for|list (disks|folder)|mount volume|path to|(close|open for) access|(get|set) eof|current date|do shell script|get volume settings|random number|set volume|system attribute|system info|time to GMT|(load|run|store) script|scripting components|ASCII (character|number)|localized string|choose (application|color|file|file name|folder|from list|remote application|URL)|display (alert|dialog))\\b|^\\s*return\\b"},{token:"constant.language",regex:"\\b(text item delimiters|current application|missing value)\\b"},{token:"keyword",regex:"\\b(apart from|aside from|instead of|out of|greater than|isn't|(doesn't|does not) (equal|come before|come after|contain)|(greater|less) than( or equal)?|(starts?|ends|begins?) with|contained by|comes (before|after)|a (ref|reference))\\b"},{token:i,regex:"[a-zA-Z][a-zA-Z0-9_]*\\b"}],comment:[{token:"comment",regex:"\\*\\)",next:"start"},{defaultToken:"comment"}]},this.normalizeRules()};r.inherits(n,i),t.AppleScriptHighlightRules=n}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,o){var r=e("../../lib/oop"),i=e("../../range").Range,n=e("./fold_mode").FoldMode,a=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(a,n),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.getFoldWidgetRange=function(e,t,o,r){var i=e.getLine(o),n=i.match(this.foldingStartMarker);if(n){var a=n.index;if(n[1])return this.openingBracketBlock(e,n[1],o,a);var s=e.getCommentFoldRange(o,a+n[0].length,1);return s&&!s.isMultiLine()&&(r?s=this.getSectionRange(e,o):"all"!=t&&(s=null)),s}if("markbegin"!==t){var n=i.match(this.foldingStopMarker);if(n){var a=n.index+n[0].length;return n[1]?this.closingBracketBlock(e,n[1],o,a):e.getCommentFoldRange(o,a,-1)}}},this.getSectionRange=function(e,t){var o=e.getLine(t),r=o.search(/\S/),n=t,a=o.length;t+=1;for(var s=t,l=e.getLength();++t<l;){o=e.getLine(t);var c=o.search(/\S/);if(-1!==c){if(r>c)break;var g=this.getFoldWidgetRange(e,"all",t);if(g){if(g.start.row<=n)break;if(g.isMultiLine())t=g.end.row;else if(r==c)break}s=t}}return new i(n,a,s,e.getLine(s).length)}}.call(a.prototype)});
|
1
public/member/js/ace/ck/mode-asciidoc-min.js
vendored
Normal file
1
public/member/js/ace/ck/mode-asciidoc-min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
public/member/js/ace/ck/mode-assembly_x86-min.js
vendored
Normal file
1
public/member/js/ace/ck/mode-assembly_x86-min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
2
public/member/js/ace/ck/mode-autohotkey-min.js
vendored
Normal file
2
public/member/js/ace/ck/mode-autohotkey-min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
public/member/js/ace/ck/mode-batchfile-min.js
vendored
Normal file
1
public/member/js/ace/ck/mode-batchfile-min.js
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
ace.define("ace/mode/batchfile",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/batchfile_highlight_rules","ace/mode/folding/cstyle"],function(e,t,o){var i=e("../lib/oop"),r=e("./text").Mode,n=e("./batchfile_highlight_rules").BatchFileHighlightRules,a=e("./folding/cstyle").FoldMode,l=function(){this.HighlightRules=n,this.foldingRules=new a};i.inherits(l,r),function(){this.lineCommentStart="::",this.blockComment="",this.$id="ace/mode/batchfile"}.call(l.prototype),t.Mode=l}),ace.define("ace/mode/batchfile_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,o){var i=e("../lib/oop"),r=e("./text_highlight_rules").TextHighlightRules,n=function(){this.$rules={start:[{token:"keyword.command.dosbatch",regex:"\\b(?:append|assoc|at|attrib|break|cacls|cd|chcp|chdir|chkdsk|chkntfs|cls|cmd|color|comp|compact|convert|copy|date|del|dir|diskcomp|diskcopy|doskey|echo|endlocal|erase|fc|find|findstr|format|ftype|graftabl|help|keyb|label|md|mkdir|mode|more|move|path|pause|popd|print|prompt|pushd|rd|recover|ren|rename|replace|restore|rmdir|set|setlocal|shift|sort|start|subst|time|title|tree|type|ver|verify|vol|xcopy)\\b",caseInsensitive:!0},{token:"keyword.control.statement.dosbatch",regex:"\\b(?:goto|call|exit)\\b",caseInsensitive:!0},{token:"keyword.control.conditional.if.dosbatch",regex:"\\bif\\s+not\\s+(?:exist|defined|errorlevel|cmdextversion)\\b",caseInsensitive:!0},{token:"keyword.control.conditional.dosbatch",regex:"\\b(?:if|else)\\b",caseInsensitive:!0},{token:"keyword.control.repeat.dosbatch",regex:"\\bfor\\b",caseInsensitive:!0},{token:"keyword.operator.dosbatch",regex:"\\b(?:EQU|NEQ|LSS|LEQ|GTR|GEQ)\\b"},{token:["doc.comment","comment"],regex:"(?:^|\\b)(rem)($|\\s.*$)",caseInsensitive:!0},{token:"comment.line.colons.dosbatch",regex:"::.*$"},{include:"variable"},{token:"punctuation.definition.string.begin.shell",regex:'"',push:[{token:"punctuation.definition.string.end.shell",regex:'"',next:"pop"},{include:"variable"},{defaultToken:"string.quoted.double.dosbatch"}]},{token:"keyword.operator.pipe.dosbatch",regex:"[|]"},{token:"keyword.operator.redirect.shell",regex:"&>|\\d*>&\\d*|\\d*(?:>>|>|<)|\\d*<&|\\d*<>"}],variable:[{token:"constant.numeric",regex:"%%\\w+|%[*\\d]|%\\w+%"},{token:"constant.numeric",regex:"%~\\d+"},{token:["markup.list","constant.other","markup.list"],regex:"(%)(\\w+)(%?)"}]},this.normalizeRules()};n.metaData={name:"Batch File",scopeName:"source.dosbatch",fileTypes:["bat"]},i.inherits(n,r),t.BatchFileHighlightRules=n}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,o){var i=e("../../lib/oop"),r=e("../../range").Range,n=e("./fold_mode").FoldMode,a=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};i.inherits(a,n),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.getFoldWidgetRange=function(e,t,o,i){var r=e.getLine(o),n=r.match(this.foldingStartMarker);if(n){var a=n.index;if(n[1])return this.openingBracketBlock(e,n[1],o,a);var l=e.getCommentFoldRange(o,a+n[0].length,1);return l&&!l.isMultiLine()&&(i?l=this.getSectionRange(e,o):"all"!=t&&(l=null)),l}if("markbegin"!==t){var n=r.match(this.foldingStopMarker);if(n){var a=n.index+n[0].length;return n[1]?this.closingBracketBlock(e,n[1],o,a):e.getCommentFoldRange(o,a,-1)}}},this.getSectionRange=function(e,t){var o=e.getLine(t),i=o.search(/\S/),n=t,a=o.length;t+=1;for(var l=t,s=e.getLength();++t<s;){o=e.getLine(t);var c=o.search(/\S/);if(-1!==c){if(i>c)break;var d=this.getFoldWidgetRange(e,"all",t);if(d){if(d.start.row<=n)break;if(d.isMultiLine())t=d.end.row;else if(i==c)break}l=t}}return new r(n,a,l,e.getLine(l).length)}}.call(a.prototype)});
|
1
public/member/js/ace/ck/mode-c9search-min.js
vendored
Normal file
1
public/member/js/ace/ck/mode-c9search-min.js
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
ace.define("ace/mode/c9search",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/c9search_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/c9search"],function(e,t,n){var r=e("../lib/oop"),i=e("./text").Mode,a=e("./c9search_highlight_rules").C9SearchHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,c=e("./folding/c9search").FoldMode,s=function(){this.HighlightRules=a,this.$outdent=new o,this.foldingRules=new c};r.inherits(s,i),function(){this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t);return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/c9search"}.call(s.prototype),t.Mode=s}),ace.define("ace/mode/c9search_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){function r(e,t){try{return new RegExp(e,t)}catch(n){}}var i=e("../lib/oop"),a=e("../lib/lang"),o=e("./text_highlight_rules").TextHighlightRules,c=function(){this.$rules={start:[{tokenNames:["c9searchresults.constant.numeric","c9searchresults.text","c9searchresults.text","c9searchresults.keyword"],regex:"(^\\s+[0-9]+)(:\\s)(.+)",onMatch:function(e,t,n){var r=this.splitRegex.exec(e),i=this.tokenNames,a=[{type:i[0],value:r[1]},{type:i[1],value:r[2]}],o=n[1],c=r[3],s,u=0;if(o&&o.exec)for(o.lastIndex=0;s=o.exec(c);){var h=c.substring(u,s.index);if(u=o.lastIndex,h&&a.push({type:i[2],value:h}),s[0])a.push({type:i[3],value:s[0]});else if(!h)break}return u<c.length&&a.push({type:i[2],value:c.substr(u)}),a}},{token:["string","text"],regex:"(\\S.*)(:$)"},{regex:"Searching for .*$",onMatch:function(e,t,n){var i=e.split("");if(i.length<3)return"text";var o,c,s,u=0,h=[{value:i[u++]+"'",type:"text"},{value:c=i[u++],type:"text"},{value:"'"+i[u++],type:"text"}];for(" in"!==i[2]&&(s=i[u],h.push({value:"'"+i[u++]+"'",type:"text"},{value:i[u++],type:"text"})),h.push({value:" "+i[u++]+" ",type:"text"}),i[u+1]?(o=i[u+1],h.push({value:"("+i[u+1]+")",type:"text"}),u+=1):u-=1;u++<i.length;)i[u]&&h.push({value:i[u],type:"text"});s&&(c=s,o=""),c&&(/regex/.test(o)||(c=a.escapeRegExp(c)),/whole/.test(o)&&(c="\\b"+c+"\\b"));var l=c&&r("("+c+")",/ sensitive/.test(o)?"g":"ig");return l&&(n[0]=t,n[1]=l),h}},{regex:"\\d+",token:"constant.numeric"}]}};i.inherits(c,o),t.C9SearchHighlightRules=c}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var a=i[1].length,o=e.findMatchingBracket({row:t,column:a});if(!o||o.row==t)return 0;var c=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,a-1),c)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/folding/c9search",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){var r=e("../../lib/oop"),i=e("../../range").Range,a=e("./fold_mode").FoldMode,o=t.FoldMode=function(){};r.inherits(o,a),function(){this.foldingStartMarker=/^(\S.*\:|Searching for.*)$/,this.foldingStopMarker=/^(\s+|Found.*)$/,this.getFoldWidgetRange=function(e,t,n){var r=e.doc.getAllLines(n),a=r[n],o=/^(Found.*|Searching for.*)$/,c=/^(\S.*\:|\s*)$/,s=o.test(a)?o:c,u=n,h=n;if(this.foldingStartMarker.test(a)){for(var l=n+1,g=e.getLength();g>l&&!s.test(r[l]);l++);h=l}else if(this.foldingStopMarker.test(a)){for(var l=n-1;l>=0&&(a=r[l],!s.test(a));l--);u=l}if(u!=h){var d=a.length;return s===o&&(d=a.search(/\(Found[^)]+\)$|$/)),new i(u,d,h,0)}}}.call(o.prototype)});
|
1
public/member/js/ace/ck/mode-c_cpp-min.js
vendored
Normal file
1
public/member/js/ace/ck/mode-c_cpp-min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
public/member/js/ace/ck/mode-cirru-min.js
vendored
Normal file
1
public/member/js/ace/ck/mode-cirru-min.js
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
ace.define("ace/mode/cirru",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/cirru_highlight_rules","ace/mode/folding/coffee"],function(e,t,r){var o=e("../lib/oop"),i=e("./text").Mode,n=e("./cirru_highlight_rules").CirruHighlightRules,g=e("./folding/coffee").FoldMode,a=function(){this.HighlightRules=n,this.foldingRules=new g};o.inherits(a,i),function(){this.lineCommentStart="--",this.$id="ace/mode/cirru"}.call(a.prototype),t.Mode=a}),ace.define("ace/mode/cirru_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,r){var o=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,n=function(){this.$rules={start:[{token:"constant.numeric",regex:/[\d\.]+/},{token:"comment.line.double-dash",regex:/--/,next:"comment"},{token:"storage.modifier",regex:/\(/},{token:"storage.modifier",regex:/\,/,next:"line"},{token:"support.function",regex:/[^\(\)\"\s]+/,next:"line"},{token:"string.quoted.double",regex:/"/,next:"string"},{token:"storage.modifier",regex:/\)/}],comment:[{token:"comment.line.double-dash",regex:/\ +[^\n]+/,next:"start"}],string:[{token:"string.quoted.double",regex:/"/,next:"line"},{token:"constant.character.escape",regex:/\\/,next:"escape"},{token:"string.quoted.double",regex:/[^\\\"]+/}],escape:[{token:"constant.character.escape",regex:/./,next:"string"}],line:[{token:"constant.numeric",regex:/[\d\.]+/},{token:"markup.raw",regex:/^\s*/,next:"start"},{token:"storage.modifier",regex:/\$/,next:"start"},{token:"variable.parameter",regex:/[^\(\)\"\s]+/},{token:"storage.modifier",regex:/\(/,next:"start"},{token:"storage.modifier",regex:/\)/},{token:"markup.raw",regex:/^\ */,next:"start"},{token:"string.quoted.double",regex:/"/,next:"string"}]}};o.inherits(n,i),t.CirruHighlightRules=n}),ace.define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"],function(e,t,r){var o=e("../../lib/oop"),i=e("./fold_mode").FoldMode,n=e("../../range").Range,g=t.FoldMode=function(){};o.inherits(g,i),function(){this.getFoldWidgetRange=function(e,t,r){var o=this.indentationBlock(e,r);if(o)return o;var i=/\S/,g=e.getLine(r),a=g.search(i);if(-1!=a&&"#"==g[a]){for(var s=g.length,d=e.getLength(),l=r,c=r;++r<d;){g=e.getLine(r);var u=g.search(i);if(-1!=u){if("#"!=g[u])break;c=r}}if(c>l){var f=e.getLine(c).length;return new n(l,s,c,f)}}},this.getFoldWidget=function(e,t,r){var o=e.getLine(r),i=o.search(/\S/),n=e.getLine(r+1),g=e.getLine(r-1),a=g.search(/\S/),s=n.search(/\S/);if(-1==i)return e.foldWidgets[r-1]=-1!=a&&s>a?"start":"","";if(-1==a){if(i==s&&"#"==o[i]&&"#"==n[i])return e.foldWidgets[r-1]="",e.foldWidgets[r+1]="","start"}else if(a==i&&"#"==o[i]&&"#"==g[i]&&-1==e.getLine(r-2).search(/\S/))return e.foldWidgets[r-1]="start",e.foldWidgets[r+1]="","";return e.foldWidgets[r-1]=-1!=a&&i>a?"start":"",s>i?"start":""}}.call(g.prototype)});
|
1
public/member/js/ace/ck/mode-clojure-min.js
vendored
Normal file
1
public/member/js/ace/ck/mode-clojure-min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
public/member/js/ace/ck/mode-cobol-min.js
vendored
Normal file
1
public/member/js/ace/ck/mode-cobol-min.js
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
ace.define("ace/mode/cobol",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/cobol_highlight_rules","ace/range"],function(E,e,T){var R=E("../lib/oop"),A=E("./text").Mode,o=E("./cobol_highlight_rules").CobolHighlightRules,t=E("../range").Range,O=function(){this.HighlightRules=o};R.inherits(O,A),function(){this.lineCommentStart="*",this.$id="ace/mode/cobol"}.call(O.prototype),e.Mode=O}),ace.define("ace/mode/cobol_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(E,e,T){var R=E("../lib/oop"),A=E("./text_highlight_rules").TextHighlightRules,o=function(){var E="ACCEPT|MERGE|SUM|ADD||MESSAGE|TABLE|ADVANCING|MODE|TAPE|AFTER|MULTIPLY|TEST|ALL|NEGATIVE|TEXT|ALPHABET|NEXT|THAN|ALSO|NO|THEN|ALTERNATE|NOT|THROUGH|AND|NUMBER|THRU|ANY|OCCURS|TIME|ARE|OF|TO|AREA|OFF|TOP||ASCENDING|OMITTED|TRUE|ASSIGN|ON|TYPE|AT|OPEN|UNIT|AUTHOR|OR|UNTIL|BEFORE|OTHER|UP|BLANK|OUTPUT|USE|BLOCK|PAGE|USING|BOTTOM|PERFORM|VALUE|BY|PIC|VALUES|CALL|PICTURE|WHEN|CANCEL|PLUS|WITH|CD|POINTER|WRITE|CHARACTER|POSITION||ZERO|CLOSE|POSITIVE|ZEROS|COLUMN|PROCEDURE|ZEROES|COMMA|PROGRAM|COMMON|PROGRAM-ID|COMMUNICATION|QUOTE|COMP|RANDOM|COMPUTE|READ|CONTAINS|RECEIVE|CONFIGURATION|RECORD|CONTINUE|REDEFINES|CONTROL|REFERENCE|COPY|REMAINDER|COUNT|REPLACE|DATA|REPORT|DATE|RESERVE|DAY|RESET|DELETE|RETURN|DESTINATION|REWIND|DISABLE|REWRITE|DISPLAY|RIGHT|DIVIDE|RUN|DOWN|SAME|ELSE|SEARCH|ENABLE|SECTION|END|SELECT|ENVIRONMENT|SENTENCE|EQUAL|SET|ERROR|SIGN|EXIT|SEQUENTIAL|EXTERNAL|SIZE|FLASE|SORT|FILE|SOURCE|LENGTH|SPACE|LESS|STANDARD|LIMIT|START|LINE|STOP|LOCK|STRING|LOW-VALUE|SUBTRACT",e="true|false|null",T="count|min|max|avg|sum|rank|now|coalesce|main",R=this.createKeywordMapper({"support.function":T,keyword:E,"constant.language":e},"identifier",!0);this.$rules={start:[{token:"comment",regex:"\\*.*$"},{token:"string",regex:'".*?"'},{token:"string",regex:"'.*?'"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:R,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"\\+|\\-|\\/|\\/\\/|%|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|="},{token:"paren.lparen",regex:"[\\(]"},{token:"paren.rparen",regex:"[\\)]"},{token:"text",regex:"\\s+"}]}};R.inherits(o,A),e.CobolHighlightRules=o});
|
1
public/member/js/ace/ck/mode-coffee-min.js
vendored
Normal file
1
public/member/js/ace/ck/mode-coffee-min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
2
public/member/js/ace/ck/mode-coldfusion-min.js
vendored
Normal file
2
public/member/js/ace/ck/mode-coldfusion-min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
public/member/js/ace/ck/mode-csharp-min.js
vendored
Normal file
1
public/member/js/ace/ck/mode-csharp-min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
public/member/js/ace/ck/mode-css-min.js
vendored
Normal file
1
public/member/js/ace/ck/mode-css-min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
2
public/member/js/ace/ck/mode-curly-min.js
vendored
Normal file
2
public/member/js/ace/ck/mode-curly-min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
public/member/js/ace/ck/mode-d-min.js
vendored
Normal file
1
public/member/js/ace/ck/mode-d-min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
public/member/js/ace/ck/mode-dart-min.js
vendored
Normal file
1
public/member/js/ace/ck/mode-dart-min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
public/member/js/ace/ck/mode-diff-min.js
vendored
Normal file
1
public/member/js/ace/ck/mode-diff-min.js
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
ace.define("ace/mode/diff",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/diff_highlight_rules","ace/mode/folding/diff"],function(e,i,t){var n=e("../lib/oop"),o=e("./text").Mode,a=e("./diff_highlight_rules").DiffHighlightRules,r=e("./folding/diff").FoldMode,d=function(){this.HighlightRules=a,this.foldingRules=new r(["diff","index","\\+{3}","@@|\\*{5}"],"i")};n.inherits(d,o),function(){this.$id="ace/mode/diff"}.call(d.prototype),i.Mode=d}),ace.define("ace/mode/diff_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,i,t){var n=e("../lib/oop"),o=e("./text_highlight_rules").TextHighlightRules,a=function(){this.$rules={start:[{regex:"^(?:\\*{15}|={67}|-{3}|\\+{3})$",token:"punctuation.definition.separator.diff",name:"keyword"},{regex:"^(@@)(\\s*.+?\\s*)(@@)(.*)$",token:["constant","constant.numeric","constant","comment.doc.tag"]},{regex:"^(\\d+)([,\\d]+)(a|d|c)(\\d+)([,\\d]+)(.*)$",token:["constant.numeric","punctuation.definition.range.diff","constant.function","constant.numeric","punctuation.definition.range.diff","invalid"],name:"meta."},{regex:"^(\\-{3}|\\+{3}|\\*{3})( .+)$",token:["constant.numeric","meta.tag"]},{regex:"^([!+>])(.*?)(\\s*)$",token:["support.constant","text","invalid"]},{regex:"^([<\\-])(.*?)(\\s*)$",token:["support.function","string","invalid"]},{regex:"^(diff)(\\s+--\\w+)?(.+?)( .+)?$",token:["variable","variable","keyword","variable"]},{regex:"^Index.+$",token:"variable"},{regex:"^\\s+$",token:"text"},{regex:"\\s*$",token:"invalid"},{defaultToken:"invisible",caseInsensitive:!0}]}};n.inherits(a,o),i.DiffHighlightRules=a}),ace.define("ace/mode/folding/diff",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"],function(e,i,t){var n=e("../../lib/oop"),o=e("./fold_mode").FoldMode,a=e("../../range").Range,r=i.FoldMode=function(e,i){this.regExpList=e,this.flag=i,this.foldingStartMarker=RegExp("^("+e.join("|")+")",this.flag)};n.inherits(r,o),function(){this.getFoldWidgetRange=function(e,i,t){for(var n=e.getLine(t),o={row:t,column:n.length},r=this.regExpList,d=1;d<=r.length;d++){var l=RegExp("^("+r.slice(0,d).join("|")+")",this.flag);if(l.test(n))break}for(var f=e.getLength();++t<f&&(n=e.getLine(t),!l.test(n)););return t!=o.row+1?a.fromPoints(o,{row:t-1,column:n.length}):void 0}}.call(r.prototype)});
|
2
public/member/js/ace/ck/mode-django-min.js
vendored
Normal file
2
public/member/js/ace/ck/mode-django-min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
public/member/js/ace/ck/mode-dockerfile-min.js
vendored
Normal file
1
public/member/js/ace/ck/mode-dockerfile-min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
public/member/js/ace/ck/mode-dot-min.js
vendored
Normal file
1
public/member/js/ace/ck/mode-dot-min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
2
public/member/js/ace/ck/mode-ejs-min.js
vendored
Normal file
2
public/member/js/ace/ck/mode-ejs-min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
public/member/js/ace/ck/mode-erlang-min.js
vendored
Normal file
1
public/member/js/ace/ck/mode-erlang-min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
public/member/js/ace/ck/mode-forth-min.js
vendored
Normal file
1
public/member/js/ace/ck/mode-forth-min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
public/member/js/ace/ck/mode-ftl-min.js
vendored
Normal file
1
public/member/js/ace/ck/mode-ftl-min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
public/member/js/ace/ck/mode-gherkin-min.js
vendored
Normal file
1
public/member/js/ace/ck/mode-gherkin-min.js
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
ace.define("ace/mode/gherkin",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/gherkin_highlight_rules"],function(e,t,n){var i=e("../lib/oop"),r=e("./text").Mode,o=e("./gherkin_highlight_rules").GherkinHighlightRules,g=function(){this.HighlightRules=o};i.inherits(g,r),function(){this.lineCommentStart="#",this.$id="ace/mode/gherkin",this.getNextLineIndent=function(e,t,n){var i=this.$getIndent(t),r=" ",o=this.getTokenizer().getLineTokens(t,e),g=o.tokens;return console.log(e),t.match("[ ]*\\|")&&(i+="| "),g.length&&"comment"==g[g.length-1].type?i:("start"==e&&(t.match("Scenario:|Feature:|Scenario Outline:|Background:")?i+=r:t.match("(Given|Then).+(:)$|Examples:")?i+=r:t.match("\\*.+")&&(i+="* ")),i)}}.call(g.prototype),t.Mode=g}),ace.define("ace/mode/gherkin_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){var i=e("../lib/oop"),r=e("./text_highlight_rules").TextHighlightRules,o="\\\\(x[0-9A-Fa-f]{2}|[0-7]{3}|[\\\\abfnrtv'\"]|U[0-9A-Fa-f]{8}|u[0-9A-Fa-f]{4})",g=function(){this.$rules={start:[{token:"constant.numeric",regex:"(?:(?:[1-9]\\d*)|(?:0))"},{token:"comment",regex:"#.*$"},{token:"keyword",regex:"Feature:|Background:|Scenario:|Scenario Outline:|Examples:|Given|When|Then|And|But|\\*"},{token:"string",regex:'"{3}',next:"qqstring3"},{token:"string",regex:'"',next:"qqstring"},{token:"comment",regex:"@[A-Za-z0-9]+",next:"start"},{token:"comment",regex:"<.+>"},{token:"comment",regex:"\\| ",next:"table-item"},{token:"comment",regex:"\\|$",next:"start"}],qqstring3:[{token:"constant.language.escape",regex:o},{token:"string",regex:'"{3}',next:"start"},{defaultToken:"string"}],qqstring:[{token:"constant.language.escape",regex:o},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"start"},{defaultToken:"string"}],"table-item":[{token:"string",regex:"[A-Za-z0-9 ]*",next:"start"}]}};i.inherits(g,r),t.GherkinHighlightRules=g});
|
1
public/member/js/ace/ck/mode-glsl-min.js
vendored
Normal file
1
public/member/js/ace/ck/mode-glsl-min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user