Merge branch 'develop'

Conflicts:
	public/css/theme/default.css
	public/css/theme/simple.css
	public/css/theme/writting-overwrite.css
	public/css/theme/writting.css
This commit is contained in:
iiuazz
2014-09-13 13:06:53 +08:00
46 changed files with 4811 additions and 576 deletions

View File

@ -2,7 +2,7 @@ package controllers
import (
"github.com/revel/revel"
// "encoding/json"
"encoding/json"
"github.com/leanote/leanote/app/info"
"gopkg.in/mgo.v2/bson"
// . "github.com/leanote/leanote/app/lea"
@ -29,11 +29,14 @@ func (c Notebook) DeleteNotebook(notebookId string) revel.Result {
}
// 添加notebook
func (c Notebook) AddNotebook(notebookId, title string) revel.Result {
func (c Notebook) AddNotebook(notebookId, title, parentNotebookId string) revel.Result {
notebook := info.Notebook{NotebookId: bson.ObjectIdHex(notebookId),
Title: title,
Seq: -1,
UserId: c.GetObjectUserId()}
if(parentNotebookId != "") {
notebook.ParentNotebookId = bson.ObjectIdHex(parentNotebookId)
}
re := notebookService.AddNotebook(notebook)
if(re) {
@ -46,7 +49,23 @@ func (c Notebook) AddNotebook(notebookId, title string) revel.Result {
func (c Notebook) UpdateNotebookTitle(notebookId, title string) revel.Result {
return c.RenderJson(notebookService.UpdateNotebookTitle(notebookId, c.GetUserId(), title))
}
// 排序
// 无用
func (c Notebook) SortNotebooks(notebookId2Seqs map[string]int) revel.Result {
return c.RenderJson(notebookService.SortNotebooks(c.GetUserId(), notebookId2Seqs))
}
// 调整notebooks, 可能是排序, 可能是移动到其它笔记本下
type DragNotebooksInfo struct {
CurNotebookId string
ParentNotebookId string
Siblings []string
}
// 传过来的data是JSON.stringfy数据
func (c Notebook) DragNotebooks(data string) revel.Result {
info := DragNotebooksInfo{}
json.Unmarshal([]byte(data), &info)
return c.RenderJson(notebookService.DragNotebooks(c.GetUserId(), info.CurNotebookId, info.ParentNotebookId, info.Siblings))
}

View File

@ -21,7 +21,7 @@ type Notebook struct {
}
// 仅仅是为了返回前台
type SubNotebooks []Notebooks
type SubNotebooks []*Notebooks // 存地址, 为了生成tree
type Notebooks struct {
Notebook
Subs SubNotebooks // 子notebook 在数据库中是没有的
@ -32,7 +32,7 @@ func (this SubNotebooks) Len() int {
return len(this)
}
func (this SubNotebooks) Less(i, j int) bool {
return this[i].Seq < this[j].Seq
return (*this[i]).Seq < (*this[j]).Seq
}
func (this SubNotebooks) Swap(i, j int) {
this[i], this[j] = this[j], this[i]

View File

@ -33,7 +33,8 @@ var jss = []string{"js/jquery-cookie", "js/bootstrap",
"js/common", "js/app/note", "js/app/tag", "js/app/notebook", "js/app/share",
"js/object_id", "js/ZeroClipboard/ZeroClipboard"}
var base = "/Users/life/Documents/Go/package/src/github.com/leanote/leanote/public/"
var base1 = "/Users/life/Documents/Go/package2/src/github.com/leanote/leanote/"
var base = "/Users/life/Documents/Go/package2/src/github.com/leanote/leanote/public/"
var cmdPath = "/usr/local/bin/uglifyjs"
func cmdError(err error) {
@ -89,8 +90,8 @@ func dev() {
"/public/mdeditor/editor/scrollLink.js": "/public/mdeditor/editor/scrollLink-min.js",
"console.log(o);": "",
}
path := "/Users/life/Documents/Go/package/src/github.com/leanote/leanote/src/views/note/note-dev.html"
target := "/Users/life/Documents/Go/package/src/github.com/leanote/leanote/src/views/note/note.html"
path := base1 + "/src/views/note/note-dev.html"
target := base1 + "/src/views/note/note.html"
bs, _ := ioutil.ReadFile(path)
content := string(bs)

View File

@ -47,31 +47,40 @@ func ParseAndSortNotebooks(userNotebooks []info.Notebook, noParentDelete, needSo
newNotebooks.NumberNotes = each.NumberNotes
newNotebooks.IsTrash = each.IsTrash
newNotebooks.IsBlog = each.IsBlog
// 存地址
userNotebooksMap[each.NotebookId] = &newNotebooks
}
// 第二遍, 追加到父下
// nilObjectId := bson.ObjectIdHex("")
// 需要删除的id
needDeleteNotebookId := map[bson.ObjectId]bool{}
for id, each := range userNotebooksMap {
// 如果有父, 那么追加到父下, 并剪掉当前, 那么最后就只有根的元素
if each.ParentNotebookId.Hex() != "" {
if userNotebooksMap[each.ParentNotebookId] != nil {
userNotebooksMap[each.ParentNotebookId].Subs = append(userNotebooksMap[each.ParentNotebookId].Subs, *each)
userNotebooksMap[each.ParentNotebookId].Subs = append(userNotebooksMap[each.ParentNotebookId].Subs, each) // Subs是存地址
// 并剪掉
delete(userNotebooksMap, id)
// bug
needDeleteNotebookId[id] = true
// delete(userNotebooksMap, id)
} else if noParentDelete {
// 没有父, 且设置了要删除
delete(userNotebooksMap, id)
needDeleteNotebookId[id] = true
// delete(userNotebooksMap, id)
}
}
}
// 第三遍, 得到所有根
final := make(info.SubNotebooks, len(userNotebooksMap))
final := make(info.SubNotebooks, len(userNotebooksMap)-len(needDeleteNotebookId))
i := 0
for _, each := range userNotebooksMap {
final[i] = *each
i++
for id, each := range userNotebooksMap {
if !needDeleteNotebookId[id] {
final[i] = each
i++
}
}
// 最后排序
@ -182,14 +191,20 @@ func (this *NotebookService) UpdateNotebook(userId, notebookId string, needUpdat
return db.UpdateByIdAndUserIdMap(db.Notebooks, notebookId, userId, needUpdate)
}
// 查看是否有子notebook
// 先查看该notebookId下是否有notes, 没有则删除
func (this *NotebookService) DeleteNotebook(userId, notebookId string) (bool, string) {
if db.Count(db.Notes, bson.M{"NotebookId": bson.ObjectIdHex(notebookId),
"UserId": bson.ObjectIdHex(userId),
"IsTrash": false}) == 0 { // 不包含trash
return db.DeleteByIdAndUserId(db.Notebooks, notebookId, userId), ""
if db.Count(db.Notebooks, bson.M{"ParentNotebookId": bson.ObjectIdHex(notebookId),
"UserId": bson.ObjectIdHex(userId)}) == 0 { // 无
if db.Count(db.Notes, bson.M{"NotebookId": bson.ObjectIdHex(notebookId),
"UserId": bson.ObjectIdHex(userId),
"IsTrash": false}) == 0 { // 不包含trash
return db.DeleteByIdAndUserId(db.Notebooks, notebookId, userId), ""
}
return false, "笔记本下有笔记"
} else {
return false, "笔记本下有子笔记本"
}
return false, "笔记本下有笔记"
}
// 排序
@ -207,5 +222,30 @@ func (this *NotebookService) SortNotebooks(userId string, notebookId2Seqs map[st
}
}
return true
}
func (this *NotebookService) DragNotebooks(userId string, curNotebookId string, parentNotebookId string, siblings []string) bool {
userIdO := bson.ObjectIdHex(userId)
ok := false
// 如果没parentNotebookId, 则parentNotebookId设空
if(parentNotebookId == "") {
ok = db.UpdateByIdAndUserIdField2(db.Notebooks, bson.ObjectIdHex(curNotebookId), userIdO, "ParentNotebookId", "");
} else {
ok = db.UpdateByIdAndUserIdField2(db.Notebooks, bson.ObjectIdHex(curNotebookId), userIdO, "ParentNotebookId", bson.ObjectIdHex(parentNotebookId));
}
if !ok {
return false
}
// 排序
for seq, notebookId := range siblings {
if !db.UpdateByIdAndUserIdField2(db.Notebooks, bson.ObjectIdHex(notebookId), userIdO, "Seq", seq) {
return false
}
}
return true
}

View File

@ -13,6 +13,8 @@
<link rel="stylesheet" href="tinymce/skins/custom/skin.min.css" type="text/css" />
<!-- leanote css -->
<link href="css/font-awesome-4.0.3/css/font-awesome.css" rel="stylesheet" />
<link href="css/zTreeStyle/zTreeStyle.css" rel="stylesheet" />
<script>
var hash = location.hash;
if(hash == "#writing") {
@ -23,7 +25,6 @@ if(hash == "#writing") {
document.write(files);
</script>
<link href="css/font-awesome-4.0.3/css/font-awesome.css" rel="stylesheet" />
<!-- For Develop writting mod -->
@ -80,8 +81,11 @@ function log(o) {
id="dropdownMenu2" data-toggle="dropdown">
<i class="fa fa-angle-down"></i>
</a>
<ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu2" style="width: 180px;left: -5px;" id="notebookNavForNewNote">
</ul>
<div class="dropdown-menu dropdown-list" id="searchNotebookForAddDropdownList">
<input type="text" placeholder="search notebook" class="form-control" id="searchNotebookForAdd"/>
<ul class="clearfix" role="menu" aria-labelledby="dropdownMenu2" id="notebookNavForNewNote">
</ul>
</div>
</div>
</div>
@ -98,12 +102,12 @@ function log(o) {
<span class="for-split"> - </span>
<span id="curNotebookForNewSharedNote" notebookId="" userId=""></span>
<div class="dropdown" style="display: inline-block">
<a class="ios7-a dropdown-toggle"
id="dropdownMenu2" data-toggle="dropdown">
<a class="ios7-a dropdown-toggle" data-toggle="dropdown">
<i class="fa fa-angle-down"></i>
</a>
<ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu2" style="width: 180px;left: -5px;" id="notebookNavForNewSharedNote">
</ul>
<div class="dropdown-menu dropdown-list" style="left: -200px;" >
<ul id="notebookNavForNewSharedNote"></ul>
</div>
</div>
</div>
</div>
@ -233,8 +237,12 @@ function log(o) {
<i class="fa fa-plus" title="{{msg . "addNotebook"}}"></i>
</div>
</div>
<ul class="folderBody" id="notebookList">
</ul>
<div class="folderBody">
<input type="text" class="form-control" id="searchNotebookForList" placeholder="search notebook"/>
<ul class="ztree" id="notebookList"></ul>
<ul class="ztree" id="notebookListForSearch"></ul>
</div>
</div>
<div class="folderNote closed" id="myTag">
@ -245,7 +253,7 @@ function log(o) {
</span>
</div>
<ul class="folderBody" id="tagNav">
<ul class="folderBody clearfix" id="tagNav">
<li><a> <span class="label label-red">{{msg . "red"}}</span></a></li>
<li><a> <span class="label label-blue">{{msg . "blue"}}</span></a></li>
<li><a> <span class="label label-yellow">{{msg . "yellow"}}</span></a></li>
@ -253,7 +261,7 @@ function log(o) {
</ul>
</div>
<div class="folderNote closed" id="">
<div class="folderNote closed" id="myShareNotebooks">
<div class="folderHeader">
<i class="fa fa-user fa-left"></i>
<span>
@ -268,7 +276,7 @@ function log(o) {
</div>
<!-- 缩小版 -->
<!-- 缩小版 todo 不要展示, 点击展开即可 -->
<div id="notebookMin">
<!-- 这里隐藏, 不要 -->
<div target="#notebookList" title="{{msg . "notebook"}}" class="minContainer">
@ -282,13 +290,9 @@ function log(o) {
</ul>
</div>
<div id="minShareNotebooks">
<!--
<div class="minContainer" target="" title="">
<div class="minContainer" target="#friendContainer0" title="{{msg . "share"}}">
<i class="fa fa-user"></i>
<ul class="dropdown-menu">
</ul>
</div>
-->
</div>
</div>
@ -312,19 +316,24 @@ function log(o) {
<div class="dropdown" id="myNotebookNavForListNav">
<a class="ios7-a dropdown-toggle" id="dropdownMenu1" data-toggle="dropdown">
<span id="curNotebookForListNote">{{msg . "all"}}</span>
<!--
<i class="fa fa-angle-down"></i>
-->
</a>
<!-- 如果notebook过多, 则会产生滚动 -->
<ul class="dropdown-menu" role="menu"
aria-labelledby="dropdownMenu1" style="left: 5px;" id="notebookNavForListNote">
</ul>
<!-- 如果notebook过多, 则会产生滚动 弃用
<div class="dropdown-menu dropdown-list" style="left: 5px;">
<ul role="menu" aria-labelledby="dropdownMenu1" id="notebookNavForListNote"></ul>
</div>
-->
</div>
<!-- 共享的笔记本 -->
<div class="dropdown" id="sharedNotebookNavForListNav" style="display: none">
<a class="ios7-a dropdown-toggle" id="dropdownMenu2" data-toggle="dropdown">
<span id="curSharedNotebookForListNote">{{msg . "all"}}</span>
<!--
<i class="fa fa-angle-down"></i>
-->
</a>
<ul class="dropdown-menu" role="menu"
aria-labelledby="dropdownMenu2" style="left: 5px;" id="sharedNotebookNavForListNote">
@ -922,6 +931,7 @@ function log(o) {
</div>
</div>
<script src="js/jquery-1.9.0.min.js"></script>
<script src="js/jquery.ztree.all-3.5.js"></script>
<script src="js/i18n/msg.{{.locale}}.js"></script>
<script src="js/common.js"></script>
<script>
@ -935,9 +945,10 @@ var noteContentJson = json({{.noteContentJson}});
var tagsJson = json({{.tagsJson}});
LEA.locale = "{{.locale}}";
</script>
<!-- 渲染view -->
<script src="/js/jQuery-slimScroll-1.3.0/jquery.slimscroll.js"></script>
<script src="/js/contextmenu/jquery.contextmenu.js"></script>
<script src="js/app/page.js"></script>
<script src="tinymce/tinymce.js"></script>
@ -978,11 +989,13 @@ initSlimScroll();
<script src="/public/mdeditor/editor/underscore-min.js"></script>
<script src="/public/mdeditor/editor/scrollLink.js"></script>
<!--mathjax-->
<!--
<script type="text/x-mathjax-config">
MathJax.Hub.Config({ tex2jax: { inlineMath: [['$','$'], ["\\(","\\)"]], processEscapes: true }, messageStyle: "none"});
</script>
<script src="/public/mdeditor/editor/mathJax-min.js"></script>
<script src="//cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
-->
<script src="/public/mdeditor/editor/jquery.waitforimages-min.js"></script>
<script src="/public/mdeditor/editor/google-code-prettify/prettify.js"></script>
<script src="/public/mdeditor/editor/editor.js"></script>
@ -990,7 +1003,6 @@ initSlimScroll();
<!-- context-menu -->
<link rel="stylesheet" href="/js/contextmenu/css/contextmenu.css" type="text/css" />
<script src="/js/contextmenu/jquery.contextmenu.js"></script>
<!-- version 2.0 -->
<script src="/js/require.js"></script>

View File

@ -13,6 +13,8 @@
<link rel="stylesheet" href="tinymce/skins/custom/skin.min.css" type="text/css" />
<!-- leanote css -->
<link href="css/font-awesome-4.0.3/css/font-awesome.css" rel="stylesheet" />
<link href="css/zTreeStyle/zTreeStyle.css" rel="stylesheet" />
<script>
var hash = location.hash;
if(hash == "#writing") {
@ -23,7 +25,6 @@ if(hash == "#writing") {
document.write(files);
</script>
<link href="css/font-awesome-4.0.3/css/font-awesome.css" rel="stylesheet" />
<!-- For Develop writting mod -->
@ -80,8 +81,11 @@ function log(o) {
id="dropdownMenu2" data-toggle="dropdown">
<i class="fa fa-angle-down"></i>
</a>
<ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu2" style="width: 180px;left: -5px;" id="notebookNavForNewNote">
</ul>
<div class="dropdown-menu dropdown-list" style="left: -200px;" >
<input type="text" placeholder="search notebook" class="form-control" id="searchNotebookForAdd"/>
<ul class="clearfix" role="menu" aria-labelledby="dropdownMenu2" id="notebookNavForNewNote">
</ul>
</div>
</div>
</div>
@ -98,12 +102,12 @@ function log(o) {
<span class="for-split"> - </span>
<span id="curNotebookForNewSharedNote" notebookId="" userId=""></span>
<div class="dropdown" style="display: inline-block">
<a class="ios7-a dropdown-toggle"
id="dropdownMenu2" data-toggle="dropdown">
<a class="ios7-a dropdown-toggle" data-toggle="dropdown">
<i class="fa fa-angle-down"></i>
</a>
<ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu2" style="width: 180px;left: -5px;" id="notebookNavForNewSharedNote">
</ul>
<div class="dropdown-menu dropdown-list" style="left: -200px;" >
<ul id="notebookNavForNewSharedNote"></ul>
</div>
</div>
</div>
</div>
@ -233,8 +237,12 @@ function log(o) {
<i class="fa fa-plus" title="{{msg . "addNotebook"}}"></i>
</div>
</div>
<ul class="folderBody" id="notebookList">
</ul>
<div class="folderBody">
<input type="text" class="form-control" id="searchNotebookForList" placeholder="search notebook"/>
<ul class="ztree" id="notebookList"></ul>
<ul class="ztree" id="notebookListForSearch"></ul>
</div>
</div>
<div class="folderNote closed" id="myTag">
@ -245,7 +253,7 @@ function log(o) {
</span>
</div>
<ul class="folderBody" id="tagNav">
<ul class="folderBody clearfix" id="tagNav">
<li><a> <span class="label label-red">{{msg . "red"}}</span></a></li>
<li><a> <span class="label label-blue">{{msg . "blue"}}</span></a></li>
<li><a> <span class="label label-yellow">{{msg . "yellow"}}</span></a></li>
@ -253,7 +261,7 @@ function log(o) {
</ul>
</div>
<div class="folderNote closed" id="">
<div class="folderNote closed" id="myShareNotebooks">
<div class="folderHeader">
<i class="fa fa-user fa-left"></i>
<span>
@ -268,7 +276,7 @@ function log(o) {
</div>
<!-- 缩小版 -->
<!-- 缩小版 todo 不要展示, 点击展开即可 -->
<div id="notebookMin">
<!-- 这里隐藏, 不要 -->
<div target="#notebookList" title="{{msg . "notebook"}}" class="minContainer">
@ -282,13 +290,9 @@ function log(o) {
</ul>
</div>
<div id="minShareNotebooks">
<!--
<div class="minContainer" target="" title="">
<div class="minContainer" target="#friendContainer0" title="{{msg . "share"}}">
<i class="fa fa-user"></i>
<ul class="dropdown-menu">
</ul>
</div>
-->
</div>
</div>
@ -312,19 +316,24 @@ function log(o) {
<div class="dropdown" id="myNotebookNavForListNav">
<a class="ios7-a dropdown-toggle" id="dropdownMenu1" data-toggle="dropdown">
<span id="curNotebookForListNote">{{msg . "all"}}</span>
<!--
<i class="fa fa-angle-down"></i>
-->
</a>
<!-- 如果notebook过多, 则会产生滚动 -->
<ul class="dropdown-menu" role="menu"
aria-labelledby="dropdownMenu1" style="left: 5px;" id="notebookNavForListNote">
</ul>
<!-- 如果notebook过多, 则会产生滚动 弃用
<div class="dropdown-menu dropdown-list" style="left: 5px;">
<ul role="menu" aria-labelledby="dropdownMenu1" id="notebookNavForListNote"></ul>
</div>
-->
</div>
<!-- 共享的笔记本 -->
<div class="dropdown" id="sharedNotebookNavForListNav" style="display: none">
<a class="ios7-a dropdown-toggle" id="dropdownMenu2" data-toggle="dropdown">
<span id="curSharedNotebookForListNote">{{msg . "all"}}</span>
<!--
<i class="fa fa-angle-down"></i>
-->
</a>
<ul class="dropdown-menu" role="menu"
aria-labelledby="dropdownMenu2" style="left: 5px;" id="sharedNotebookNavForListNote">
@ -922,6 +931,7 @@ function log(o) {
</div>
</div>
<script src="js/jquery-1.9.0.min.js"></script>
<script src="js/jquery.ztree.all-3.5.js"></script>
<script src="js/i18n/msg.{{.locale}}.js"></script>
<script src="js/common-min.js"></script>
<script>
@ -935,9 +945,10 @@ var noteContentJson = json({{.noteContentJson}});
var tagsJson = json({{.tagsJson}});
LEA.locale = "{{.locale}}";
</script>
<!-- 渲染view -->
<script src="/js/jQuery-slimScroll-1.3.0/jquery.slimscroll.js"></script>
<script src="/js/contextmenu/jquery.contextmenu-min.js"></script>
<script src="js/app/page-min.js"></script>
<script src="tinymce/tinymce.js"></script>
@ -978,11 +989,13 @@ initSlimScroll();
<script src="/public/mdeditor/editor/underscore-min.js"></script>
<script src="/public/mdeditor/editor/scrollLink-min.js"></script>
<!--mathjax-->
<!--
<script type="text/x-mathjax-config">
MathJax.Hub.Config({ tex2jax: { inlineMath: [['$','$'], ["\\(","\\)"]], processEscapes: true }, messageStyle: "none"});
</script>
<script src="/public/mdeditor/editor/mathJax-min.js"></script>
<script src="//cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
-->
<script src="/public/mdeditor/editor/jquery.waitforimages-min.js"></script>
<script src="/public/mdeditor/editor/google-code-prettify/prettify.js"></script>
<script src="/public/mdeditor/editor/editor-min.js"></script>
@ -990,7 +1003,6 @@ initSlimScroll();
<!-- context-menu -->
<link rel="stylesheet" href="/js/contextmenu/css/contextmenu.css" type="text/css" />
<script src="/js/contextmenu/jquery.contextmenu-min.js"></script>
<!-- version 2.0 -->
<script src="/js/require.js"></script>

View File

@ -1,3 +0,0 @@
.aaa {
font-size: 12px;
}

File diff suppressed because one or more lines are too long

View File

@ -111,7 +111,7 @@ a.raw:hover {
border-radius: 5px;
background-color: #000;
cursor: pointer;
font-size: 16px;
font-size: 18px;
&:hover {
color: @hColor;
}
@ -169,29 +169,15 @@ a.raw:hover {
}
.dropdown-menu {
border-radius: 0;
margin:0;
-webkit-box-shadow: none;
box-shadow: none;
border: 1px solid @hColor;
overflow-x: hidden;
overflow-y: auto;
}
.dropdown-menu li {
padding-left: 10px;
width: 100%;
height: 30px; // 父设置了line-height, 子下拉也受影响, "新建笔记"
line-height: 30px;
}
.dropdown-menu > li > a {
.dropdown-menu li > a {
color: @aBlackColor;
display: inline-block;
padding: 3px 3px;
}
.dropdown-menu>li:hover, .dropdown-menu>li:focus {
.dropdown-menu li:hover, .dropdown-menu li:focus {
background-color: @borderColor;
}
.dropdown-menu > li > a:hover, .dropdown-menu > li > a:focus {
.dropdown-menu li > a:hover, .dropdown-menu li > a:focus {
background-color: @borderColor;
}
@ -291,6 +277,7 @@ a.raw:hover {
border-color: rgba(255, 255, 255, 0.3);
padding: 5px;
position: relative;
cursor: pointer;
i {
font-size: 20px;
color: #fff;
@ -353,13 +340,7 @@ a.raw:hover {
left: @leftNotebookWidth;
}
#noteList {
position: absolute;
bottom: 0;
top: 0;
width: @noteListWidth;
overflow-x: hidden;
overflow-y: hidden;
border-right: 1px solid #cfcfcf;
border-left: 1px solid #cfcfcf;
}
@ -391,14 +372,14 @@ a.raw:hover {
color: #fff; // @hColor;
font-size: 16px;
}
.folderHeader .fa-left, .each-user .fa {
.folderHeader .fa-left, .friend-header i.fa {
display: inline-block;
line-height: @folderHeaderHeight;
font-size: 16px;
width: @folderHeaderHeight;
border-right: 1px solid rgba(255,255,255,0.05);
text-align: center;
color: #fff; // @hColor;
line-height: @folderHeaderHeight;
font-size: 16px;
width: @folderHeaderHeight;
border-right: 1px solid rgba(255,255,255,0.05);
text-align: center;
color: #fff; // @hColor;
}
.each-user div {
@ -417,15 +398,6 @@ a.raw:hover {
border-right: none;
}
}
.each-user ul {
list-style: none;
margin: 0;
padding:0;
a {
padding-left: 20px;
font-size: 12px;
}
}
#myNotebooks.opened .fa-left {
/*
@ -455,28 +427,32 @@ a.raw:hover {
.closed .folderBody {
display: none;
}
@leftBgColor: #37485e;
.folderBody {
list-style: none;
margin: 0;
padding: 0;
background-color: #37485e;
background-color: @leftBgColor;
}
.folderBody li {
line-height: 30px;
}
.folderBody a {
padding-left: 20px;
display: block;
color: #ADBECE;
cursor: pointer;
.ztree > li {
border-bottom: 1px solid transparent;
border-color: rgba(255,255,255,0.05);
line-height: 35px;
}
.ztree li a.curSelectedNode {
background-color: rgba(0,0,0,0.3);
border-radius: 3px;
color: #fff;
}
.ztree li a {
color: #ADBECE;
}
.folderBody a:hover, .folderBody .contextmenu-hover {
// background-color: @borderColor !important;
color: #fff;
background-color: rgba(0,0,0,0.05) !important;
background-color: rgba(0,0,0,0.1) !important;
}
.folderBody a.active, .folderBody a.active:hover {
background-color: #25313e !important; // @bgColor;
@ -484,13 +460,15 @@ a.raw:hover {
}
// 重命名, 添加notebook
#notebookList input {
border: 1px solid @borderColor;
#notebookList input, #notebookListForSearch input {
border: 1px solid rgba(0,0,0,0.1);
width: 90%;
padding-left:3px;
box-shadow: none;
background: none;
color: #fff;
&:focus {
outline: none !important;
border-color: @hColor;
}
}
@ -636,26 +614,7 @@ a.raw:hover {
color: #666;
}
}
// blog
#noteItemList .item-blog {
position: absolute;
right: 1px;
font-size: 10px;
z-index: 2;
top: 1px;
padding: 3px;
cursor: pointer;
.fa {
color: #fff !important;
}
width: 20px;
text-align: center;
opacity: 0.5;
&:hover {
opacity: 0.8;
}
background-color: #464C5E;
}
.item-title {
/*font-weight: 400;*/
font-size: 16px;
@ -1149,7 +1108,6 @@ background-position:-1px -670px
}
}
.new-note-right {
padding: 0 5px;
&:hover {
background-color:@borderColor;
}
@ -1165,12 +1123,7 @@ background-position:-1px -670px
padding: 5px 0;
}
}
#leanoteMsg {
line-height: 40px; margin-top: 10px; margin-left: 10px;
}
#newNoteWrap {
line-height: 40px; margin-top: 10px;
}
#loading {
display: inline-block;
width: 20px;
@ -1214,4 +1167,39 @@ background-position:-1px -670px
bottom: 10px;
overflow: scroll;
list-style: none;
}
//----------------------
#searchNotebookForList {
color: #ccc;
border: 1px solid rgba(255, 255, 255, 0.1);
background-color: @leftBgColor;
&:focus {
outline: none !important;
border: 1px solid rgba(255, 255, 255, 0.3);
box-shadow: none;
}
}
.label-default {
background-color: #191D2B;
}
.each-user {
border: 1px solid rgba(0, 0, 0, 0.09);
background-color: @leftBgColor;
}
#myShareNotebooks .folderBody {
background: none;
}
.tmpzTreeMove_arrow {
color: #fff;
}
.ztree li a.tmpTargetNode_inner {
padding-top:0px;
background-color: rgba(0, 0, 0, 0.3);
color: #fff;
height: 30px;
border:1px #ccc solid;
opacity: 0.8;
filter:alpha(opacity=80)
}

File diff suppressed because one or more lines are too long

View File

@ -101,11 +101,9 @@ a.raw:hover {
}
}
span {
background-color: #000;
color: #fff;
border-radius: 5px;
cursor: pointer;
font-size: 14px;
font-size: 18px;
&:hover {
color: @hColor;
}
@ -160,29 +158,15 @@ a.raw:hover {
}
.dropdown-menu {
border-radius: 0;
margin:0;
-webkit-box-shadow: none;
box-shadow: none;
border: 1px solid @hColor;
overflow-x: hidden;
overflow-y: auto;
}
.dropdown-menu li {
padding-left: 10px;
width: 100%;
height: 30px; // 父设置了line-height, 子下拉也受影响, "新建笔记"
line-height: 30px;
}
.dropdown-menu > li > a {
.dropdown-menu li > a {
color: @aBlackColor;
display: inline-block;
padding: 3px 3px;
}
.dropdown-menu>li:hover, .dropdown-menu>li:focus {
.dropdown-menu li:hover, .dropdown-menu li:focus {
background-color: @borderColor;
}
.dropdown-menu > li > a:hover, .dropdown-menu > li > a:focus {
.dropdown-menu li > a:hover, .dropdown-menu li > a:focus {
background-color: @borderColor;
}
@ -278,6 +262,7 @@ a.raw:hover {
border-bottom: 1px solid #ccc;
padding: 5px;
position: relative;
cursor: pointer;
i {
font-size: 20px;
color: #000;
@ -342,12 +327,7 @@ a.raw:hover {
}
#noteList {
position: absolute;
bottom: 0;
top: 0;
width: @noteListWidth;
overflow-x: hidden;
overflow-y: hidden;
border-right: 1px solid @borderColor;
border-left: 1px solid @borderColor;
}
@ -380,7 +360,7 @@ a.raw:hover {
color: #000; // @hColor;
font-size: 16px;
}
.folderHeader .fa-left, .each-user .fa {
.folderHeader .fa-left, .friend-header i.fa {
display: inline-block;
line-height: @folderHeaderHeight;
font-size: 16px;
@ -406,15 +386,6 @@ a.raw:hover {
border-right: none;
}
}
.each-user ul {
list-style: none;
margin: 0;
padding:0;
a {
padding-left: 20px;
font-size: 12px;
}
}
#myNotebooks.opened .fa-left {
/*
@ -451,24 +422,21 @@ a.raw:hover {
background-color: @bgColor;
color: @hColor;
}
.folderBody a {
padding-left: 20px;
display: block;
color: #444;
cursor: pointer;
}
.folderBody a:hover, .folderBody .contextmenu-hover {
background-color: @borderColor !important;
}
// 重命名, 添加notebook
#notebookList input {
border: 1px solid @borderColor;
#notebookList input, #notebookListForSearch input {
width: 90%;
border: none;
box-shadow: none;
padding-left:3px;
background: none;
&:focus {
outline: none !important;
border-color: @hColor;
border: none;
}
}
@ -602,26 +570,7 @@ border: 1px solid @borderColor;
color: #666;
}
}
// blog
#noteItemList .item-blog {
position: absolute;
right: 1px;
font-size: 10px;
z-index: 2;
top: 1px;
padding: 3px;
cursor: pointer;
.fa {
color: #fff !important;
}
width: 20px;
text-align: center;
opacity: 0.5;
&:hover {
opacity: 0.8;
}
background-color: #464C5E;
}
.item-title {
/*font-weight: 400;*/
font-size: 16px;
@ -1108,7 +1057,6 @@ background-position:-1px -670px
}
}
.new-note-right {
padding: 0 5px;
&:hover {
background-color:@borderColor;
}
@ -1125,12 +1073,6 @@ background-position:-1px -670px
}
}
#leanoteMsg {
line-height: 40px; margin-top: 10px; margin-left: 10px;
}
#newNoteWrap {
line-height: 40px; margin-top: 10px;
}
#loading {
display: inline-block;
width: 20px;
@ -1175,4 +1117,7 @@ background-position:-1px -670px
bottom: 10px;
overflow: scroll;
list-style: none;
}
#notebookList {
border-top: 1px dashed #eee;
}

File diff suppressed because one or more lines are too long

View File

@ -1,3 +1,4 @@
@import "basic.less";
@bgColor: #fff;
@headerBgColor: #25313e;
@ -151,8 +152,7 @@ a.raw:hover {
-webkit-box-shadow: none;
box-shadow: none;
border: 1px solid @hColor;
overflow-x: hidden;
overflow-y: auto;
overflow: visible;
}
.dropdown-menu li {
padding-left: 10px;
@ -866,7 +866,7 @@ html,body {
position: absolute;
left:0;
right:0;
z-index:1;
z-index:333;
#leanoteMsg {
position: absolute;
width: @editorWidth;
@ -897,7 +897,6 @@ html,body {
#newMyNote, #newSharedNote {
position: relative;
.dropdown-menu {
left: 0px !important;
}
.dropdown {
position: static;
@ -966,7 +965,7 @@ html,body {
}
#noteTop{
position: absolute;
z-index:2;
z-index:9999;
left:0;
right: 150px;
padding: 15px 0;
@ -1090,4 +1089,11 @@ body {
bottom: 10px;
overflow: scroll;
list-style: none;
}
#searchNotebookForAddDropdownList {
left: 0;
}
#searchNotebookForAdd {
background: none;
}

File diff suppressed because one or more lines are too long

View File

@ -1,3 +1,4 @@
@import "basic.less";
@bgColor: #fff;
@headerBgColor: #25313e;

Binary file not shown.

After

Width:  |  Height:  |  Size: 601 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 580 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 570 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 762 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 399 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 710 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 432 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 534 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 529 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 467 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 216 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 421 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 381 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

View File

@ -0,0 +1,84 @@
.ztree * {padding:0; margin:0; font-size:12px;}
.ztree {margin:0; padding:5px; color:#333}
.ztree li{padding:0; margin:0; list-style:none; line-height:14px; text-align:left; white-space:nowrap; outline:0}
.ztree li ul{ margin:0; padding:0 0 0 18px}
.ztree li a {padding:1px 3px 0 0; margin:0; cursor:pointer; height:17px; color:#333; background-color: transparent;
text-decoration:none; vertical-align:top; display: block;
position: relative;
}
.ztree li a:hover {text-decoration:underline}
.ztree li a.curSelectedNode {padding-top:0px; background-color:#FFE6B0; color:black; height:16px; border:1px #FFB951 solid; opacity:0.8;}
.ztree li a.curSelectedNode_Edit {padding-top:0px; background-color:#FFE6B0; color:black; height:16px; border:1px #FFB951 solid; opacity:0.8;}
/* 拖动到上面 */
.ztree li a.tmpTargetNode_inner {
padding-top:0px;
background-color:#eee;
color: #000;
height: 30px;
border:1px #ccc solid;
opacity: 0.8;
filter:alpha(opacity=80)
}
.ztree li span {line-height:16px; margin-right:2px}
.ztree li span.button {line-height:0; margin:0; width:16px; height:16px; display: inline-block; vertical-align:middle;
border:0 none; cursor: pointer;outline:none;}
.ztree li span.button.switch {width:18px; height:18px}
.ztree li span.button.ico_open{margin-right:2px; background-position:-110px -16px; vertical-align:top;
}
.ztree li span.button.ico_close{margin-right:2px; background-position:-110px 0; vertical-align:top; }
.ztree li span.button.ico_docu{margin-right:2px; background-position:-110px -32px; vertical-align:top; }
.ztree li span.button.edit {margin-right:2px; background-position:-110px -48px; vertical-align:top; }
.ztree li span.button.remove {margin-right:2px; background-position:-110px -64px; vertical-align:top; }
ul.tmpTargetzTree {background-color:#FFE6B0; opacity:0.8; filter:alpha(opacity=80)}
/* 移动 箭头*/
span.tmpzTreeMove_arrow {
z-index: 333;width:16px;
height:30px; line-height: 30px;
display: inline-block;
padding:0;
margin:0 0 0 15px;
border:0 none; position:absolute;
}
/* 拖动的副本 */
ul.ztree.zTreeDragUL {z-index: 333;margin:0; padding:0; position:absolute; width:auto; height:auto;overflow:hidden;
background-color: cfcfcf;
border:1px #00B83F dotted; opacity:0.8; filter:alpha(opacity=80)}
.zTreeMask {z-index:1000; background-color:#cfcfcf; opacity:0.0; filter:alpha(opacity=0); position:absolute}
.ztree li ul{ margin:0; padding:0}
.ztree li {line-height:30px;}
.ztree > li {
border-bottom: 1px dashed #eee;
}
.ztree li a {height:30px;padding-top: 0px;}
.ztree li a:hover {text-decoration:none; background-color: #E7E7E7;}
.ztree li a span.button.switch {visibility:hidden}
.ztree.showIcon li a span.button.switch {visibility:visible}
.ztree li a.curSelectedNode {background-color:#eee;border:0;height:30px;}
.ztree li span {line-height:30px;}
.ztree li span.button {margin-top: -5px;}
.ztree li span.button.switch {width: 16px;height: 30px; line-height: 30px; text-align: center}
.ztree li a.level0 span {font-size: 14px;}
.ztree li span.button {
background-image: none;
}
.ztree li span.button.switch.level0 {width: 20px;}
.ztree li span.button.switch.level1 {width: 20px;}
.ztree li span.button.noline_open:before {
content: "\f107";
}
.ztree li span.button.noline_close:before {
content: "\f105";
}
.ztree li span.button.noline_open.level0 {background-position: 0 -18px;}
.ztree li span.button.noline_close.level0 {background-position: -18px -18px;}
/* life */
.ztree .tree-title {
display: inline-block;
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -11,7 +11,7 @@ Note.curNoteId = "";
Note.interval = ""; // 定时器
Note.itemIsBlog = '<div class="item-blog"><i class="fa fa-bold" title="blog"></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
Note.itemTplNoImg = '<div href="#" class="item ?" noteId="?">'
Note.itemTplNoImg += Note.itemIsBlog +'<div class="item-desc" style="right: 0;"><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></div>';
@ -1152,22 +1152,49 @@ Note.copyNote = function(target, data, isShared) {
});
}
// 这里速度不慢, 很快
Note.getContextNotebooks = function(notebooks) {
var moves = [];
var copys = [];
var copys2 = [];
for(var i in notebooks) {
var notebook = notebooks[i];
var move = {text: notebook.Title, notebookId: notebook.NotebookId, action: Note.moveNote}
var copy = {text: notebook.Title, notebookId: notebook.NotebookId, action: Note.copyNote}
var copy2 = {text: notebook.Title, notebookId: notebook.NotebookId, action: Share.copySharedNote}
if(!isEmpty(notebook.Subs)) {
var mc = Note.getContextNotebooks(notebook.Subs);
move.items = mc[0];
copy.items = mc[1];
copy2.items = mc[2];
move.type = "group";
move.width = 150;
copy.type = "group";
copy.width = 150;
copy2.type = "group";
copy2.width = 150;
}
moves.push(move);
copys.push(copy);
copys2.push(copy2);
}
return [moves, copys, copys2];
}
// Notebook调用
Note.contextmenu = null;
Note.notebooksCopy = []; // share会用到
Note.initContextmenu = function() {
var self = Note;
if(Note.contextmenu) {
Note.contextmenu.unbind("contextmenu");
Note.contextmenu.destroy();
}
// 得到可移动的notebook
var notebooksMove = [];
var notebooksCopy = [];
$("#notebookNavForNewNote li div.new-note-left").each(function() {
var notebookId = $(this).attr("notebookId");
var title = $(this).text();
var move = {text: title, notebookId: notebookId, action: Note.moveNote}
var copy = {text: title, notebookId: notebookId, action: Note.copyNote}
notebooksMove.push(move);
notebooksCopy.push(copy);
});
var notebooks = Notebook.everNotebooks;
var mc = self.getContextNotebooks(notebooks);
var notebooksMove = mc[0];
var notebooksCopy = mc[1];
self.notebooksCopy = mc[2];
//---------------------
// context menu
@ -1180,7 +1207,7 @@ Note.initContextmenu = function() {
{ text: "公开为博客", alias: 'set2Blog', icon: "", action: Note.setNote2Blog },
{ text: "取消公开为博客", alias: 'unset2Blog', icon: "", action: Note.setNote2Blog },
{ type: "splitLine" },
// { text: "发送长微博", alias: 'html2Image', icon: "", action: Note.html2Image },
// { text: "发送长微博", alias: 'html2Image', icon: "", action: Note.html2Image , width: 150, type: "group", items:[{text: "a"}]},
// { type: "splitLine" },
{ text: "删除", icon: "", faIcon: "fa-trash-o", action: Note.deleteNote },
{ text: "移动", alias: "move", icon: "",
@ -1204,7 +1231,6 @@ Note.initContextmenu = function() {
function menuAction(target) {
// $('#myModal').modal('show')
showDialog("dialogUpdateNotebook", {title: "修改笔记本", postShow: function() {
}});
}
function applyrule(menu) {
@ -1248,7 +1274,8 @@ Note.initContextmenu = function() {
return this.id != "target3";
}
Note.contextmenu = $("#noteItemList .item").contextmenu(noteListMenu);
// 这里很慢!!
Note.contextmenu = $("#noteItemList .item-my").contextmenu(noteListMenu);
}
//------------------- 事件
@ -1288,12 +1315,23 @@ $(function() {
});
$("#notebookNavForNewNote").on("click", "li div", function() {
var notebookId = $(this).attr("notebookId");
if($(this).text() == "Markdown") {
if($(this).hasClass("new-note-right")) {
Note.newNote(notebookId, false, "", true);
} else {
Note.newNote(notebookId);
}
});
$("#searchNotebookForAdd").click(function(e) {
e.stopPropagation();
});
$("#searchNotebookForAdd").keyup(function() {
var key = $(this).val();
Notebook.searchNotebookForAddNote(key);
});
$("#searchNotebookForList").keyup(function() {
var key = $(this).val();
Notebook.searchNotebookForList(key);
});
//---------------------------
// 搜索, 按enter才搜索
@ -1312,7 +1350,7 @@ $(function() {
});
//--------------------
Note.initContextmenu();
// Note.initContextmenu();
//------------
// 文档历史
@ -1332,6 +1370,14 @@ $(function() {
var noteId = $(this).parent().attr('noteId');
window.open("/blog/view/" + noteId);
});
// note setting
$("#noteItemList").on("click", ".item-my .item-setting", function(e) {
e.preventDefault();
e.stopPropagation();
var $p = $(this).parent();
Note.contextmenu.showMenu(e, $p);
});
});
// 定时器启动

File diff suppressed because one or more lines are too long

View File

@ -43,33 +43,207 @@ Notebook.getNotebookTitle = function(notebookId) {
<li><a class="active">Hadoop</a></li>
<li><a>August 13, 2013</a></li>
</ul>
*/
// TODO 层级
*/
Notebook.getTreeSetting = function(isSearch, isShare){
var noSearch = !isSearch;
var self = this;
// 添加自定义dom
function addDiyDom(treeId, treeNode) {
var spaceWidth = 5;
var switchObj = $("#" + treeId + " #" + treeNode.tId + "_switch"),
icoObj = $("#" + treeId + " #" + treeNode.tId + "_ico");
switchObj.remove();
icoObj.before(switchObj);
if(!isShare) {
if(!Notebook.isAllNotebookId(treeNode.NotebookId) && !Notebook.isTrashNotebookId(treeNode.NotebookId)) {
icoObj.after($('<span class="fa notebook-setting" title="setting"></span>'));
}
} else {
if(!Share.isDefaultNotebookId(treeNode.NotebookId)) {
icoObj.after($('<span class="fa notebook-setting" title="setting"></span>'));
}
}
if (treeNode.level > 1) {
var spaceStr = "<span style='display: inline-block;width:" + (spaceWidth * treeNode.level)+ "px'></span>";
switchObj.before(spaceStr);
}
}
// 拖拽
function beforeDrag(treeId, treeNodes) {
for (var i=0,l=treeNodes.length; i<l; i++) {
if (treeNodes[i].drag === false) {
return false;
}
}
return true;
}
function beforeDrop(treeId, treeNodes, targetNode, moveType) {
return targetNode ? targetNode.drop !== false : true;
}
function onDrop(e, treeId, treeNodes, targetNode, moveType) {
var treeNode = treeNodes[0];
// 搜索不能drag
if(!targetNode) {
return;
}
var parentNode;
var treeObj = self.tree;
var ajaxData = {curNotebookId: treeNode.NotebookId};
// 成为子节点, 那么只需要得到targetNode下所有的子结点即可
if(moveType == "inner") {
parentNode = targetNode;
} else {
parentNode = targetNode.getParentNode();
}
// 在targetNode之前或之后,
// 那么: 1) 需要将该parentNode下所有的node重新排序即可; 2) treeNodes[0]为parentNode的子
if(!parentNode) {
var nodes = treeObj.getNodes(); // 得到所有nodes
} else {
ajaxData.parentNotebookId = parentNode.NotebookId;
var nextLevel = parentNode.level+1;
function filter(node) {
return node.level == nextLevel;
}
var nodes = treeObj.getNodesByFilter(filter, false, parentNode);
}
ajaxData.siblings = [];
for(var i in nodes) {
var notebookId = nodes[i].NotebookId;
if(!Notebook.isAllNotebookId(notebookId) && !Notebook.isTrashNotebookId(notebookId)) {
ajaxData.siblings.push(notebookId);
}
}
ajaxPost("/notebook/dragNotebooks", {data: JSON.stringify(ajaxData)});
// 这里慢!
setTimeout(function() {
Notebook.changeNav();
}, 100);
}
if(!isShare) {
var onClick = function(e, treeId, treeNode) {
var notebookId = treeNode.NotebookId;
Notebook.changeNotebook(notebookId);
};
var onDblClick = function(e) {
var notebookId = $(e.target).attr("notebookId");
if(!Notebook.isAllNotebookId(notebookId) && !Notebook.isTrashNotebookId(notebookId)) {
self.updateNotebookTitle(e.target);
}
}
} else {
var onClick = function(e, treeId, treeNode) {
var notebookId = treeNode.NotebookId;
var fromUserId = $(e.target).closest('.friend-notebooks').attr("fromUserId");
Share.changeNotebook(fromUserId, notebookId);
};
var onDblClick = null;
}
var setting = {
view: {
showLine: false,
showIcon: false,
selectedMulti: false,
dblClickExpand: false,
addDiyDom: addDiyDom
},
data: {
key: {
name: "Title",
children: "Subs",
}
},
edit: {
enable: true,
showRemoveBtn: false,
showRenameBtn: false,
drag: {
isMove: noSearch,
prev: noSearch,
inner: noSearch,
next: noSearch
}
},
callback: {
beforeDrag: beforeDrag,
beforeDrop: beforeDrop,
onDrop: onDrop,
onClick: onClick,
onDblClick: onDblClick,
beforeRename: function(treeId, treeNode, newName, isCancel) {
if(newName == "") {
if(treeNode.IsNew) {
// 删除之
self.tree.removeNode(treeNode);
return true;
}
return false;
}
if(treeNode.Title == newName) {
return true;
}
// 如果是新添加的
if(treeNode.IsNew) {
var parentNode = treeNode.getParentNode();
var parentNotebookId = parentNode ? parentNode.NotebookId : "";
self.doAddNotebook(treeNode.NotebookId, newName, parentNotebookId);
} else {
self.doUpdateNotebookTitle(treeNode.NotebookId, newName);
}
return true;
}
}
};
// 搜索不能拖拽
if(isSearch) {
}
return setting;
}
Notebook.allNotebookId = "0";
Notebook.trashNotebookId = "-1";
Notebook.curNotebookIsTrashOrAll = function() {
return Notebook.curNotebookId == Notebook.trashNotebookId || Notebook.curNotebookId == Notebook.allNotebookId ;
}
Notebook.renderNotebooks = function(notebooks) {
var self = this;
if(!notebooks || typeof notebooks != "object" || notebooks.length < 0) {
notebooks = [];
}
notebooks = [{NotebookId: Notebook.allNotebookId, Title: getMsg("all")}].concat(notebooks);
notebooks.push({NotebookId: Notebook.trashNotebookId, Title: getMsg("trash")});
notebooks = [{NotebookId: Notebook.allNotebookId, Title: getMsg("all"), drop:false, drag: false}].concat(notebooks);
notebooks.push({NotebookId: Notebook.trashNotebookId, Title: getMsg("trash"), drop:false, drag: false});
Notebook.notebooks = notebooks; // 缓存之
self.tree = $.fn.zTree.init($("#notebookList"), self.getTreeSetting(), notebooks);
// 展开/折叠图标
var $notebookList = $("#notebookList");
var nav = "";
for(var i in notebooks) {
var notebook = notebooks[i];
Notebook.cache[notebook.NotebookId] = notebook;
var classes = "";
if(i == 0) {
classes = "active";
Notebook.curNotebookId = notebook.NotebookId;
$notebookList.hover(function () {
if(!$(this).hasClass("showIcon")) {
$(this).addClass("showIcon");
}
$notebookList.append(t('<li><a class="?" notebookId="?">?</a></li>', classes, notebook.NotebookId, notebook.Title))
}, function() {
$(this).removeClass("showIcon");
});
// 缓存所有notebooks信息
if(!isEmpty(notebooks)) {
Notebook.curNotebookId = notebooks[0].NotebookId;
self.cacheAllNotebooks(notebooks);
}
// 渲染nav
@ -79,67 +253,127 @@ Notebook.renderNotebooks = function(notebooks) {
Notebook.changeNotebookNavForNewNote(notebooks[0].NotebookId);
}
Notebook.cacheAllNotebooks = function(notebooks) {
var self = this;
for(var i in notebooks) {
var notebook = notebooks[i];
Notebook.cache[notebook.NotebookId] = notebook;
if(!isEmpty(notebook.Subs)) {
self.cacheAllNotebooks(notebook.Subs);
}
}
}
// RenderNotebooks调用,
// nav 为了新建, 快速选择, 移动笔记
// 这些在添加,修改,删除notebooks都要变动!!!
Notebook.renderNav = function(nav) {
var navForListNote = "";
var navForNewNote = "";
var navForMoveNote = "";
var len = Notebook.notebooks.length-1;
var contextmenu = [];
for(var i in Notebook.notebooks) {
var notebook = Notebook.notebooks[i];
var each = t('<li role="presentation"><a role="menuitem" tabindex="-1" href="#" notebookId="?">?</a></li>', notebook.NotebookId, notebook.Title);
var eachForNew = t('<li role="presentation" class="clearfix"><div class="new-note-left pull-left" title="为该笔记本新建笔记" href="#" notebookId="?">?</div><div title="为该笔记本新建markdown笔记" class="new-note-right pull-left" notebookId="?">Markdown</div></li>', notebook.NotebookId, notebook.Title, notebook.NotebookId);
navForListNote += each;
if(i != 0 && i != len) {
navForMoveNote += each;
navForNewNote += eachForNew;
}
}
$("#notebookNavForListNote").html(navForListNote);
$("#notebookNavForNewNote").html(navForNewNote);
$("#notebookNavForMoveNote").html(navForMoveNote);
var self = this;
self.changeNav();
}
// 搜索notebook
Notebook.searchNotebookForAddNote = function(key) {
var self = this;
if(key) {
var notebooks = self.tree.getNodesByParamFuzzy("Title", key);
notebooks = notebooks || [];
// 过滤下, 把new, trash过滤掉
var notebooks2 = [];
for(var i in notebooks) {
var notebookId = notebooks[i].NotebookId;
if(!self.isAllNotebookId(notebookId) && !self.isTrashNotebookId(notebookId)) {
notebooks2.push(notebooks[i]);
}
}
if(isEmpty(notebooks2)) {
$("#notebookNavForNewNote").html("");
} else {
$("#notebookNavForNewNote").html(self.getChangedNotebooks(notebooks2));
}
} else {
$("#notebookNavForNewNote").html(self.everNavForNewNote);
}
}
// 搜索notebook
Notebook.searchNotebookForList = function(key) {
var self = this;
var $search = $("#notebookListForSearch");
var $notebookList = $("#notebookList");
if(key) {
$search.show();
$notebookList.hide();
var notebooks = self.tree.getNodesByParamFuzzy("Title", key);
log('search');
log(notebooks);
if(isEmpty(notebooks)) {
$search.html("");
} else {
var setting = self.getTreeSetting(true);
self.tree2 = $.fn.zTree.init($search, setting, notebooks);
}
} else {
self.tree2 = null;
$search.hide();
$notebookList.show();
$("#notebookNavForNewNote").html(self.everNavForNewNote);
}
}
// 修改,添加,删除notebook后调用
// 改变nav
// 直接从html中取!
Notebook.changeNav = function() {
var navForListNote = "";
Notebook.getChangedNotebooks = function(notebooks) {
var self = this;
var navForNewNote = "";
var i = 0;
var $list = $("#notebookList li a");
var len = $list.length - 1;
$list.each(function() {
var notebookId = $(this).attr("notebookId");
var notebook = Notebook.cache[notebookId];
var each = t('<li role="presentation"><a role="menuitem" tabindex="-1" href="#" notebookId="?">?</a></li>', notebook.NotebookId, notebook.Title);
var eachForNew = t('<li role="presentation" class="clearfix"><div class="new-note-left pull-left" title="为该笔记本新建笔记" href="#" notebookId="?">?</div><div title="为该笔记本新建markdown笔记" class="new-note-right pull-left" notebookId="?">Markdown</div></li>', notebook.NotebookId, notebook.Title, notebook.NotebookId);
navForListNote += each;
var isActive = $(this).hasClass('active'); // 万一修改的是已选择的, 那么...
if(isActive) {
$("#curNotebookForListNote").html(notebook.Title);
var len = notebooks.length;
for(var i = 0; i < len; ++i) {
var notebook = notebooks[i];
var classes = "";
if(!isEmpty(notebook.Subs)) {
classes = "dropdown-submenu";
}
if(i != 0 && i != len) {
navForNewNote += eachForNew;
if(isActive) {
$("#curNotebookForNewNote").html(notebook.Title);
}
var eachForNew = t('<li role="presentation" class="clearfix ?"><div class="new-note-left pull-left" title="为该笔记本新建笔记" href="#" notebookId="?">?</div><div title="为该笔记本新建markdown笔记" class="new-note-right pull-left" notebookId="?">M</div>', classes, notebook.NotebookId, notebook.Title, notebook.NotebookId);
if(!isEmpty(notebook.Subs)) {
eachForNew += "<ul class='dropdown-menu'>";
eachForNew += self.getChangedNotebooks(notebook.Subs);
eachForNew += "</ul>";
}
i++;
});
eachForNew += '</li>';
navForNewNote += eachForNew;
}
return navForNewNote;
}
Notebook.everNavForNewNote = "";
Notebook.everNotebooks = [];
Notebook.changeNav = function() {
var self = Notebook;
var notebooks = Notebook.tree.getNodes();
var pureNotebooks = notebooks.slice(1, -1); // 不含新和垃圾
var html = self.getChangedNotebooks(pureNotebooks);
$("#notebookNavForListNote").html(navForListNote);
$("#notebookNavForNewNote").html(navForNewNote);
$("#notebookNavForMoveNote").html(navForNewNote);
self.everNavForNewNote = html;
self.everNotebooks = pureNotebooks;
$("#notebookNavForNewNote").html(html);
// 移动, 复制重新来, 因为nav变了, 移动至-----的notebook导航也变了
// 这里速度很慢
var t1 = (new Date()).getTime();
Note.initContextmenu();
Share.initContextmenu(Note.notebooksCopy);
var t2 = (new Date()).getTime();
log(t2-t1);
}
/**
@ -198,8 +432,8 @@ Notebook.renderShareNotebooks = function(sharedUserInfos, shareNotebooks) {
// 左侧导航, 选中某个notebook
Notebook.selectNotebook = function(target) {
$("#notebook li a").removeClass("active");
$(target).addClass("active");
$(".notebook-item").removeClass("curSelectedNode");
$(target).addClass("curSelectedNode");
};
// 新建笔记导航
@ -285,7 +519,7 @@ Notebook.curActiveNotebookIsAll = function() {
// 3. 使用Note.RederNotes()
Notebook.changeNotebook = function(notebookId) {
Notebook.changeNotebookNav(notebookId);
Notebook.curNotebookId = notebookId;
// 1
@ -411,29 +645,30 @@ Notebook.setNotebook2Blog = function(target) {
// 修改笔记本标题
Notebook.updateNotebookTitle = function(target) {
var notebookTitle = $(target).text();
var id = "editNotebookTitle";
$(target).html(t('<input type="text" value="?" everValue="?" id="?" notebookId="?"/>', notebookTitle, notebookTitle, id, $(target).attr("notebookId")));
$("#" + id).focus();
var self = Notebook;
var notebookId = $(target).attr("notebookId");
if(self.tree2) {
self.tree2.editName(self.tree2.getNodeByTId(notebookId));
} else {
self.tree.editName(self.tree.getNodeByTId(notebookId));
}
}
Notebook.doUpdateNotebookTitle = function() {
var title = $(this).val();
var everTitle = $(this).attr("everTitle");
var notebookId = $(this).attr("notebookId");
if(!title) {
title = everTitle;
}
$(this).parent().html(title);
if(title != everTitle) {
ajaxPost("/notebook/updateNotebookTitle", {notebookId: notebookId, title: title}, function(ret) {
// 修改缓存
Notebook.cache[notebookId].Title = title;
// 改变nav
Notebook.changeNav();
});
}
Notebook.doUpdateNotebookTitle = function(notebookId, newTitle) {
var self = Notebook;
ajaxPost("/notebook/updateNotebookTitle", {notebookId: notebookId, title: newTitle}, function(ret) {
// 修改缓存
Notebook.cache[notebookId].Title = newTitle;
// 改变nav
Notebook.changeNav();
// 同步
if(self.tree2) {
var notebook = self.tree.getNodeByTId(notebookId);
notebook.Title = newTitle;
self.tree.updateNode(notebook);
}
});
}
//-----------
@ -442,47 +677,53 @@ Notebook.doUpdateNotebookTitle = function() {
// 2 在所有后面添加<li></li>
Notebook.addNotebookSeq = 1; // inputId
Notebook.addNotebook = function() {
var self = Notebook;
if($("#myNotebooks").hasClass("closed")) {
$("#myNotebooks .folderHeader").trigger("click");
}
var inputId = "newNotebookInput" + Notebook.addNotebookSeq;
Notebook.addNotebookSeq++;
$("#notebookList li").eq(0).after(t('<li><a><input id="?"/></a></li>', inputId));
$("#" + inputId).focus();
// 回车调用blur
enterBlur("#" + inputId);
$("#" + inputId).blur(function() {
// 为防多次发生blur
$(this).unbind("blur");
var title = $(this).val();
if(!title) {
$(this).parent().parent().remove();
} else {
// 添加之
var notebookId = getObjectId();
var $a = $(this).parent();
ajaxPost("/notebook/addNotebook", {notebookId: notebookId, title: title}, function(ret) {
if(ret.NotebookId) {
Notebook.cache[ret.NotebookId] = ret;
$a.attr("notebookId", notebookId);
$a.html(title);
// 选中之
Notebook.changeNotebook(notebookId);
// 改变nav
Notebook.changeNav();
}
});
// 添加并修改
self.tree.addNodes(null, {Title: "", NotebookId: getObjectId(), IsNew: true}, true, true);
}
// rename 调用
Notebook.doAddNotebook = function(notebookId, title, parentNotebookId) {
var self = Notebook;
ajaxPost("/notebook/addNotebook", {notebookId: notebookId, title: title, parentNotebookId: parentNotebookId}, function(ret) {
if(ret.NotebookId) {
Notebook.cache[ret.NotebookId] = ret;
var notebook = self.tree.getNodeByTId(notebookId);
$.extend(notebook, ret);
notebook.IsNew = false;
// 选中之
Notebook.changeNotebook(notebookId);
// 改变nav
Notebook.changeNav();
}
});
}
//-------------
// 添加子笔记本
Notebook.addChildNotebook = function(target) {
var self = Notebook;
if($("#myNotebooks").hasClass("closed")) {
$("#myNotebooks .folderHeader").trigger("click");
}
var notebookId = $(target).attr("notebookId");
// 添加并修改
self.tree.addNodes(self.tree.getNodeByTId(notebookId), {Title: "", NotebookId: getObjectId(), IsNew: true}, false, true);
}
//-------------
// 删除
Notebook.deleteNotebook = function(target) {
var self = Notebook;
var notebookId = $(target).attr("notebookId");
if(!notebookId) {
return;
@ -490,8 +731,15 @@ Notebook.deleteNotebook = function(target) {
ajaxGet("/notebook/deleteNotebook", {notebookId: notebookId}, function(ret) {
if(ret.Ok) {
/*
$(target).parent().remove();
*/
self.tree.removeNode(self.tree.getNodeByTId(notebookId));
if(self.tree2) {
self.tree2.removeNode(self.tree2.getNodeByTId(notebookId));
}
delete Notebook.cache[notebookId];
// 改变nav
Notebook.changeNav();
} else {
@ -503,19 +751,45 @@ Notebook.deleteNotebook = function(target) {
$(function() {
//-------------------
// 点击notebook
/*
$("#myNotebooks").on("click", "ul.folderBody li a", function() {
var notebookId = $(this).attr("notebookId");
Notebook.changeNotebook(notebookId);
});
*/
// min
$("#minNotebookList").on("click", "li", function() {
var notebookId = $(this).find("a").attr("notebookId");
Notebook.changeNotebook(notebookId);
});
// 修改笔记本标题, blur后修改标题之
/*
enterBlur("#notebookList", "input#editNotebookTitle");
$("#notebookList").on("blur", "input#editNotebookTitle", Notebook.doUpdateNotebookTitle);
*/
//-------------------
// 右键菜单
var notebookListMenu = {
width: 150,
items: [
{ text: "分享给好友", alias: 'shareToFriends', icon: "", faIcon: "fa-share-square-o", action: Notebook.listNotebookShareUserInfo},
{ type: "splitLine" },
{ text: "公开为博客", alias: 'set2Blog', icon: "", action: Notebook.setNotebook2Blog },
{ text: "取消公开为博客", alias: 'unset2Blog', icon: "", action: Notebook.setNotebook2Blog }, // Unset
{ type: "splitLine" },
{ text: "添加子笔记本", icon: "", action: Notebook.addChildNotebook },
{ text: "重命名", icon: "", action: Notebook.updateNotebookTitle },
{ text: "删除", icon: "", alias: 'delete', faIcon: "fa-trash-o", action: Notebook.deleteNotebook }
],
onShow: applyrule,
onContextMenu: beforeContextMenu,
parent: "#notebookList ",
children: "li a"
}
var notebookListMenu2 = {
width: 150,
items: [
{ text: "分享给好友", alias: 'shareToFriends', icon: "", faIcon: "fa-share-square-o", action: Notebook.listNotebookShareUserInfo},
@ -528,20 +802,17 @@ $(function() {
],
onShow: applyrule,
onContextMenu: beforeContextMenu,
parent: "#notebookList ",
parent: "#notebookListForSearch ",
children: "li a"
}
// 修改笔记本标题, blur后修改标题之
enterBlur("#notebookList", "input#editNotebookTitle");
$("#notebookList").on("blur", "input#editNotebookTitle", Notebook.doUpdateNotebookTitle);
function applyrule(menu) {
var notebookId = $(this).attr("notebookId");
var notebook = Notebook.cache[notebookId];
if(!notebook) {
return;
}
// disabled的items
var items = [];
// 是否已公开为blog
if(!notebook.IsBlog) {
@ -564,31 +835,28 @@ $(function() {
var notebookId = $(this).attr("notebookId");
return !Notebook.isTrashNotebookId(notebookId) && !Notebook.isAllNotebookId(notebookId);
}
$("#notebookList li a").contextmenu(notebookListMenu);
//------------------
// 添加notebook
// 右键菜单
var addNotebookContextmenu = {
width: 150,
items: [
{ text: "添加笔记本", icon: "", action: Notebook.addNotebook },
],
parent: "#myNotebooks",
children: ""
}
$("#myNotebooks").contextmenu(addNotebookContextmenu);
Notebook.contextmenu = $("#notebookList li a").contextmenu(notebookListMenu);
//---------------
// 点击中部notebook nav
$("#notebookNavForListNote").on("click", "li", function() {
var notebookId = $(this).find("a").attr("notebookId");
Notebook.changeNotebook(notebookId);
});
Notebook.contextmenuSearch = $("#notebookListForSearch li a").contextmenu(notebookListMenu2);
// 添加笔记本
$("#addNotebookPlus").click(function(e) {
e.stopPropagation();
Notebook.addNotebook();
});
// notebook setting
$("#notebookList").on("click", ".notebook-setting", function(e) {
e.preventDefault();
e.stopPropagation();
var $p = $(this).parent();
Notebook.contextmenu.showMenu(e, $p);
});
$("#notebookListForSearch").on("click", ".notebook-setting", function(e) {
e.preventDefault();
e.stopPropagation();
var $p = $(this).parent();
Notebook.contextmenuSearch.showMenu(e, $p);
});
});

File diff suppressed because one or more lines are too long

View File

@ -131,22 +131,21 @@ $(function() {
});
// 左侧, folder 展开与关闭
$(".folderHeader").click(
function() {
var body = $(this).next();
var p = $(this).parent();
if (!body.is(":hidden")) {
$(".folderNote").removeClass("opened").addClass("closed");
$(".folderHeader").click(function() {
var body = $(this).next();
var p = $(this).parent();
if (!body.is(":hidden")) {
$(".folderNote").removeClass("opened").addClass("closed");
// body.hide();
p.removeClass("opened").addClass("closed");
$(this).find(".fa-angle-down").removeClass("fa-angle-down").addClass("fa-angle-right");
} else {
$(".folderNote").removeClass("opened").addClass("closed");
p.removeClass("opened").addClass("closed");
$(this).find(".fa-angle-down").removeClass("fa-angle-down").addClass("fa-angle-right");
} else {
$(".folderNote").removeClass("opened").addClass("closed");
// body.show();
p.removeClass("closed").addClass("opened");
$(this).find(".fa-angle-right").removeClass("fa-angle-right").addClass("fa-angle-down");
}
});
p.removeClass("closed").addClass("opened");
$(this).find(".fa-angle-right").removeClass("fa-angle-right").addClass("fa-angle-down");
}
});
tinymce.init({
setup: function(ed) {
@ -551,6 +550,7 @@ $(function() {
$("#logo").hide();
$("#leftSwitcher").hide();
$("#leftSwitcher2").show();
$("#leftNotebook .slimScrollDiv").hide();
if(save) {
updateLeftIsMin(true);
@ -568,6 +568,7 @@ $(function() {
$("#leftSwitcher2").hide();
$("#logo").show();
$("#leftSwitcher").show();
$("#leftNotebook .slimScrollDiv").show();
if(save) {
updateLeftIsMin(false);
@ -588,6 +589,7 @@ $(function() {
});
// 得到最大dropdown高度
// 废弃
function getMaxDropdownHeight(obj) {
var offset = $(obj).offset();
var maxHeight = $(document).height()-offset.top;
@ -599,16 +601,26 @@ $(function() {
var preHeight = $(obj).find("ul").height();
return preHeight < maxHeight ? preHeight : maxHeight;
}
// mini版
$("#notebookMin div.minContainer").hover(function() {
var target = $(this).attr("target");
// show的时候要计算高度, 防止过高
// 先show再计算, 不然高度有偏差
$(this).find("ul").html($(target).html()).show().height(getMaxDropdownHeight(this));
}, function() {
$(this).find("ul").hide();
// 点击展开
$("#notebookMin div.minContainer").click(function() {
var target = $(this).attr("target");
maxLeft(true);
if(target == "#notebookList") {
if($("#myNotebooks").hasClass("closed")) {
$("#myNotebooks .folderHeader").trigger("click");
}
} else if(target == "#tagNav") {
if($("#myTag").hasClass("closed")) {
$("#myTag .folderHeader").trigger("click");
}
} else {
if($("#myShareNotebooks").hasClass("closed")) {
$("#myShareNotebooks .folderHeader").trigger("click");
}
}
);
});
//------------------------
// 界面设置, 左侧是否是隐藏的
@ -631,7 +643,7 @@ $(function() {
// dropdown
$('.dropdown').on('shown.bs.dropdown', function () {
var $ul = $(this).find("ul");
$ul.height(getMaxDropdownHeight(this));
// $ul.css("max-height", getMaxDropdownHeight(this));
});
//--------
@ -780,6 +792,9 @@ editorMode.prototype.normalMode = function() {
// $("#lock").animate({right:w},1000);
this.resizeEditor();
$("#noteList").width(UserInfo.NoteListWidth);
$("#note").css("left", UserInfo.NoteListWidth);
}
editorMode.prototype.writtingMode = function() {
/*
@ -811,6 +826,9 @@ editorMode.prototype.writtingMode = function() {
// $("body").fadeIn();
this.resizeEditor();
$("#noteList").width(250);
$("#note").css("left", 0);
}
editorMode.prototype.getWritingCss = function() {

File diff suppressed because one or more lines are too long

View File

@ -4,7 +4,7 @@
// 默认共享notebook id
Share.defaultNotebookId = "share0";
Share.defaultNotebookTitle = "默认共享";
Share.defaultNotebookTitle = "Default Share";
Share.sharedUserInfos = {}; // userId => {}
// 在render时就创建, 以后复用之
@ -47,7 +47,48 @@ Share.setCache = function(note) {
*/
// TODO 层级
// shareNotebooks = {userId => {}}
Share.getNotebooksForNew = function(userId, notebooks) {
var self = this;
var navForNewNote = "";
var len = notebooks.length;
for(var i = 0; i < len; ++i) {
var notebook = notebooks[i];
notebook.IsShared = true;
notebook.UserId = userId;
self.notebookCache[notebook.NotebookId] = notebook;
// notebook的cache也缓存一份, 为了显示标题
Notebook.cache[notebook.NotebookId] = notebook;
var classes = "";
var subs = false;
if(!isEmpty(notebook.Subs)) {
log(11);
log(notebook.Subs);
var subs = self.getNotebooksForNew(userId, notebook.Subs);
if(subs) {
classes = "dropdown-submenu";
}
}
var eachForNew = "";
if(notebook.Perm) {
var eachForNew = t('<li role="presentation" class="clearfix ?" userId="?" notebookId="?"><div class="new-note-left pull-left" title="为该笔记本新建笔记" href="#">?</div><div title="为该笔记本新建markdown笔记" class="new-note-right pull-left">M</div>', classes, userId, notebook.NotebookId, notebook.Title);
if(subs) {
eachForNew += "<ul class='dropdown-menu'>";
eachForNew += subs;
eachForNew += "</ul>";
}
eachForNew += '</li>';
}
navForNewNote += eachForNew;
}
return navForNewNote;
}
Share.trees = {};
Share.renderShareNotebooks = function(sharedUserInfos, shareNotebooks) {
var self = Share;
if(isEmpty(sharedUserInfos)) {
return;
}
@ -61,49 +102,98 @@ Share.renderShareNotebooks = function(sharedUserInfos, shareNotebooks) {
// render每一个用户的share给我的笔记本, 之前先建一个默认共享
for(var i in sharedUserInfos) {
var userInfo = sharedUserInfos[i];
var userNotebooks = shareNotebooks[userInfo.UserId] || [];
var userNotebooksPre = shareNotebooks[userInfo.UserId] || [];
userNotebooks = [{NotebookId: Share.defaultNotebookId, Title: Share.defaultNotebookTitle}].concat(userNotebooks)
userNotebooks = [{NotebookId: self.defaultNotebookId, Title: Share.defaultNotebookTitle}].concat(userNotebooksPre)
self.notebookCache[self.defaultNotebookId] = userNotebooks[0];
var username = userInfo.Username || userInfo.Email;
userInfo.Username = username;
Share.sharedUserInfos[userInfo.UserId] = userInfo;
var userId = userInfo.UserId;
var header = t('<li class="each-user"><div class="" fromUserId="?"><i class="fa fa-angle-down"></i><span>?</span></div>', userInfo.UserId, username);
var friendId = "friendContainer" + i;
var body = '<ul class="" id="' + friendId + '">';
var header = t('<li class="each-user"><div class="friend-header" fromUserId="?"><i class="fa fa-angle-down"></i><span>?</span> <span class="fa notebook-setting" title="setting"></span> </div>', userInfo.UserId, username);
var friendId = "friendContainer_" + userId;
var body = '<ul class="friend-notebooks ztree" id="' + friendId + '" fromUserId="' + userId + '"></ul>';
$shareNotebooks.append(header + body + "</li>")
var forList = ""; // 全部
var forNew = ""; // 必须要有权限的
for(var j in userNotebooks) {
var notebook = userNotebooks[j];
// 缓存起来, 像Note
notebook.IsShared = true;
notebook.UserId = userId;
Share.notebookCache[notebook.NotebookId] = notebook;
// notebook的cache也缓存一份, 为了显示标题
Notebook.cache[notebook.NotebookId] = notebook;
body += t('<li><a notebookId="?" fromUserId="?">?</a></li>', notebook.NotebookId, userId, notebook.Title)
//
var each = t('<li role="presentation"><a role="menuitem" tabindex="-1" href="#" userId="?" notebookId="?">?</a></li>', userId, notebook.NotebookId, notebook.Title);
forList += each;
if(j != 0 && notebook.Perm) {
forNew += t('<li role="presentation" class="clearfix" userId="?" notebookId="?"><div class="new-note-left pull-left">?</div><div class="new-note-right pull-left">Markdown</div></li>', userId, notebook.NotebookId, notebook.Title);
}
self.trees[userId] = $.fn.zTree.init($("#" + friendId), Notebook.getTreeSetting(true, true), userNotebooks);
self.userNavs[userId] = {"forNew": self.getNotebooksForNew(userId, userNotebooksPre)};
log(self.userNavs);
}
$(".friend-notebooks").hover(function () {
if (!$(this).hasClass("showIcon")) {
$(this).addClass("showIcon");
}
body += "</ul>";
Share.userNavs[userId] = {"forList": forList, "forNew": forNew};
$shareNotebooks.append(header + body + "</div>")
// mainShare
$("#minShareNotebooks").append('<div class="minContainer" target="#' + friendId + '" title="' + username + ' 的分享"><i class="fa fa-user"></i><ul class="dropdown-menu"></ul></li>')
}
}, function() {
$(this).removeClass("showIcon");
});
$(".friend-header i").click(function() {
var $this = $(this);
var $tree = $(this).parent().next();
if($tree.is(":hidden")) {
$tree.slideDown("fast");
$this.removeClass("fa-angle-right fa-angle-down").addClass("fa-angle-down");
} else {
$tree.slideUp("fast");
$this.removeClass("fa-angle-right fa-angle-down").addClass("fa-angle-right");
}
});
//-----------------------------
// contextmenu shareNotebooks
// 删除共享笔记本
var shareNotebookMenu = {
width: 150,
items: [
{ text: "删除共享笔记本", icon: "", faIcon: "fa-trash-o", action: Share.deleteShareNotebook }
],
onShow: applyrule,
onContextMenu: beforeContextMenu,
parent: "#shareNotebooks",
children: ".notebook-item",
};
function applyrule(menu) {
return;
}
// 默认共享不能删除
function beforeContextMenu() {
var notebookId = $(this).attr("notebookId");
return !Share.isDefaultNotebookId(notebookId);
}
var menuNotebooks = $("#shareNotebooks").contextmenu(shareNotebookMenu);
//---------------------------
// contextmenu shareNotebooks
// 删除某用户所有的
var shareUserMenu = {
width: 150,
items: [
{ text: "删除所有共享", icon: "", faIcon: "fa-trash-o", action: Share.deleteUserShareNoteAndNotebook }
],
parent: "#shareNotebooks",
children: ".friend-header",
};
var menuUser = $("#shareNotebooks").contextmenu(shareUserMenu);
$(".friend-header").on("click", ".notebook-setting", function(e) {
e.preventDefault();
e.stopPropagation();
var $p = $(this).parent();
menuUser.showMenu(e, $p);
});
$("#shareNotebooks .notebook-item").on("click", ".notebook-setting", function(e) {
e.preventDefault();
e.stopPropagation();
var $p = $(this).parent();
menuNotebooks.showMenu(e, $p);
});
};
Share.isDefaultNotebookId = function(notebookId) {
@ -114,13 +204,12 @@ Share.isDefaultNotebookId = function(notebookId) {
// for list和for new
// 如果forNew没有, 那么还是保持我的nav
Share.toggleToSharedNav = function(userId, notebookId) {
var self = this;
// for list
$("#sharedNotebookNavForListNote").html(Share.userNavs[userId].forList);
$("#sharedNotebookNavForListNav").show();
$("#curSharedNotebookForListNote").html(Share.notebookCache[notebookId].Title + '(' + Share.sharedUserInfos[userId].Username + ")");
$("#myNotebookNavForListNav").hide();
$("#curNotebookForListNote").html(Share.notebookCache[notebookId].Title + '(' + Share.sharedUserInfos[userId].Username + ")");
// for new
// 如果该用户下有新建的note, 那么列出, 如果没有, 则列出我的笔记
var forNew = Share.userNavs[userId].forNew;
if(forNew) {
$("#notebookNavForNewSharedNote").html(forNew);
@ -134,7 +223,7 @@ Share.toggleToSharedNav = function(userId, notebookId) {
// 得到第一个
var $f = $("#notebookNavForNewSharedNote li").eq(0);
curNotebookId = $f.attr("notebookId");
curNotebookTitle = $f.text();
curNotebookTitle = $f.find(".new-note-left").text();
}
$("#curNotebookForNewSharedNote").html(curNotebookTitle + '(' + Share.sharedUserInfos[userId].Username + ')');
@ -143,6 +232,11 @@ Share.toggleToSharedNav = function(userId, notebookId) {
$("#newSharedNote").show();
$("#newMyNote").hide();
} else {
// 展示出我的笔记
$("#newMyNote").show();
$("#newSharedNote").hide();
}
// 隐藏tag
@ -156,7 +250,7 @@ Share.toggleToSharedNav = function(userId, notebookId) {
//3. 使用Note.RederNotes()
Share.changeNotebook = function(userId, notebookId) {
// 选中
Notebook.selectNotebook($(t('#shareNotebooks a[notebookId="?"]', notebookId)));
Notebook.selectNotebook($(t('#friendContainer_? a[notebookId="?"]', userId, notebookId)));
// 改变nav!!!! TODO
Share.toggleToSharedNav(userId, notebookId);
@ -206,13 +300,15 @@ Share.hasUpdatePerm = function(notebookId) {
//---------------------------
// 我删除别人共享给我的笔记本
Share.deleteShareNotebook = function(target) {
var notebookId = $(target).attr("notebookId");
var fromUserId = $(target).attr("fromUserId"); // 谁共享给了我 from
ajaxGet("/share/DeleteShareNotebookBySharedUser", {notebookId: notebookId, fromUserId: fromUserId}, function(ret) {
if(ret) {
$(target).parent().remove();
}
});
if(confirm("Are you sure to delete it?")) {
var notebookId = $(target).attr("notebookId");
var fromUserId = $(target).closest(".friend-notebooks").attr("fromUserId"); // 谁共享给了我 from
ajaxGet("/share/DeleteShareNotebookBySharedUser", {notebookId: notebookId, fromUserId: fromUserId}, function(ret) {
if(ret) {
$(target).parent().remove();
}
});
}
}
Share.deleteShareNote = function(target) {
var noteId = $(target).attr("noteId");
@ -224,12 +320,14 @@ Share.deleteShareNote = function(target) {
});
}
Share.deleteUserShareNoteAndNotebook = function(target) {
var fromUserId = $(target).attr("fromUserId"); // 谁共享给了我 from
ajaxGet("/share/deleteUserShareNoteAndNotebook", {fromUserId: fromUserId}, function(ret) {
if(ret) {
$(target).parent().remove();
}
});
if(confirm("Are you sure to delete all shared notebooks and notes?")) {
var fromUserId = $(target).attr("fromUserId"); // 谁共享给了我 from
ajaxGet("/share/deleteUserShareNoteAndNotebook", {fromUserId: fromUserId}, function(ret) {
if(ret) {
$(target).parent().remove();
}
});
}
}
// 新建shared note
@ -260,20 +358,10 @@ Share.copySharedNote = function(target, contextmenuItem) {
}
Share.contextmenu = null;
Share.initContextmenu = function() {
Share.initContextmenu = function(notebooksCopy) {
if(Share.contextmenu) {
Share.contextmenu.unbind("contextmenu");
Share.contextmenu.destroy();
}
// 得到可移动的notebook
var notebooksCopy = [];
// 到时这个可以缓存起来
$("#notebookNavForNewNote li .new-note-left").each(function() {
var notebookId = $(this).attr("notebookId");
var title = $(this).text();
var copy = {text: title, notebookId: notebookId, action: Share.copySharedNote}
notebooksCopy.push(copy);
});
//---------------------
// context menu
@ -316,58 +404,16 @@ Share.initContextmenu = function() {
}
$(function() {
// 点击notebook
$("#shareNotebooks").on("click", "ul li a", function() {
var notebookId = $(this).attr("notebookId");
var userId = $(this).attr("fromUserId");
Share.changeNotebook(userId, notebookId);
});
// min
$("#minShareNotebooks").on("click", "li", function() {
var self = $(this).find("a");
var notebookId = $(self).attr("notebookId");
var userId = $(self).attr("fromUserId");
Share.changeNotebook(userId, notebookId);
// note setting
$("#noteItemList").on("click", ".item-shared .item-setting", function(e) {
e.preventDefault();
e.stopPropagation();
// 得到ID
var $p = $(this).parent();
Share.contextmenu.showMenu(e, $p);
});
//-----------------------------
// contextmenu shareNotebooks
// 删除共享笔记本
var shareNotebookMenu = {
width: 150,
items: [
{ text: "删除共享笔记本", icon: "", faIcon: "fa-trash-o", action: Share.deleteShareNotebook }
],
onShow: applyrule,
onContextMenu: beforeContextMenu,
parent: "#shareNotebooks .folderBody",
children: "li a",
};
function applyrule(menu) {
return;
}
// 默认共享不能删除
function beforeContextMenu() {
var notebookId = $(this).attr("notebookId");
return !Share.isDefaultNotebookId(notebookId);
}
$("#shareNotebooks").contextmenu(shareNotebookMenu);
//---------------------------
// contextmenu shareNotebooks
// 删除某用户所有的
var shareUserMenu = {
width: 150,
items: [
{ text: "删除所有共享", icon: "", faIcon: "fa-trash-o", action: Share.deleteUserShareNoteAndNotebook }
],
parent: "#shareNotebooks",
children: ".folderHeader",
};
$("#shareNotebooks").contextmenu(shareUserMenu);
//---------------------------
// 新建笔记
@ -387,16 +433,13 @@ $(function() {
var notebookId = $(this).parent().attr("notebookId");
var userId = $(this).parent().attr("userId");
if($(this).text() == "Markdown") {
if($(this).text() == "M") {
Note.newNote(notebookId, true, userId, true);
} else {
Note.newNote(notebookId, true, userId);
}
});
//------------------
Share.initContextmenu();
//------------------
// 添加共享
$("#leanoteDialogRemote").on("click", ".change-perm", function() {

View File

@ -10,6 +10,7 @@
-webkit-box-shadow: 0 6px 12px rgba(0,0,0,.175);
box-shadow: 0 6px 12px rgba(0,0,0,.175);
background-clip: padding-box;
overflow: scroll;
}
.b-m-split {
height: 6px;

File diff suppressed because one or more lines are too long

View File

@ -12,8 +12,12 @@ LEA.cmroot = 1;
var gTemplet = $("<div/>").addClass("b-m-mpanel").attr("unselectable", "on").css("display", "none");
var iTemplet = $("<div/>").addClass("b-m-item").attr("unselectable", "on");
var sTemplet = $("<div/>").addClass("b-m-split");
var $body = $("body");
var itemsCache = {}; // idx => items
//build group item, which has sub items
var buildGroup = function(obj) {
var buildGroup = function(obj) { // this = $("")对象, obj=item
groups[obj.alias] = this;
this.gidx = obj.alias;
this.id = obj.alias;
@ -21,7 +25,8 @@ LEA.cmroot = 1;
this.disable = obj.disable;
this.className = "b-m-idisable";
}
$(this).width(obj.width).click(returnfalse).mousedown(returnfalse).appendTo($("body"));
$(this).width(obj.width).click(function(){}).mousedown(returnfalse).appendTo($body);
obj = null;
return this;
};
@ -58,34 +63,49 @@ LEA.cmroot = 1;
//add new items
var addItems = function(gidx, items, parentAlias) {
var tmp = null;
for (var i = 0; i < items.length; i++) {
if (items[i].type == "splitLine") {
//split line
var len = items.length;
for (var i = 0; i < len; i++) {
var item = items[i];
if (item.type == "splitLine") {
tmp = sTemplet.clone()[0];
} else {
// life, alias可以不需要, 从text取, 但必须唯一
if(!items[i].alias) {
if(!item.alias) {
if(parentAlias) {
items[i].alias = parentAlias + "." + items[i].text; // 移动.Hadoop
item.alias = parentAlias + "." + item.text; // 移动.Hadoop
} else {
items[i].alias = items[i].text;
item.alias = item.text;
}
// log(items[i].alias);
// log(item.alias);
}
items[i].gidx = gidx;
if (items[i].type == "group") {
item.gidx = gidx;
if (item.type == "group" && !item.action) {
//group
buildGroup.apply(gTemplet.clone()[0], [items[i]]);
arguments.callee(items[i].alias, items[i].items, items[i].alias); // life 传上级的alias, 避免重复
items[i].type = "arrow";
tmp = buildItem.apply(iTemplet.clone()[0], [items[i]]);
buildGroup.apply(gTemplet.clone()[0], [item]);
itemsCache[item.alias] = item.items;
// 递归调用, 可以动态生成?
// arguments.callee(item.alias, item.items, item.alias); // life 传上级的alias, 避免重复
item.type = "arrow";
tmp = buildItem.apply(iTemplet.clone()[0], [item]);
} else {
//normal item
items[i].type = "ibody";
tmp = buildItem.apply(iTemplet.clone()[0], [items[i]]);
// 如果group有action还是可以点击的 life
if(item.type == "group") {
//group
buildGroup.apply(gTemplet.clone()[0], [item]);
itemsCache[item.alias] = item.items;
// 递归调用
// arguments.callee(item.alias, item.items, item.alias); // life 传上级的alias, 避免重复
item.type = "arrow";
tmp = buildItem.apply(iTemplet.clone()[0], [item]);
} else {
//normal item
item.type = "ibody";
tmp = buildItem.apply(iTemplet.clone()[0], [item]);
}
//
var thisItem = items[i];
var thisItem = item;
// 点击item
// 用闭包来存储变量
(function(thisItem, tmp) {
$(tmp).click(function(e) {
@ -104,16 +124,16 @@ LEA.cmroot = 1;
});
}(thisItem, tmp));
} //end if
$(tmp).bind("contextmenu", returnfalse).hover(overItem, outItem);
}
groups[gidx].appendChild(tmp);
tmp = items[i] = items[i].items = null;
tmp = item = item.items = null;
} //end for
gidx = items = null;
};
// hover
var overItem = function(e) {
//menu item is disabled
if (this.disable)
@ -123,11 +143,12 @@ LEA.cmroot = 1;
if (this.group) {
var pos = $(this).offset();
var width = $(this).outerWidth();
showMenuGroup.apply(groups[this.idx], [pos, width]);
showMenuGroup.apply(groups[this.idx], [pos, width, this]);
}
this.className = "b-m-ifocus";
return false;
};
// hover out
//menu loses focus
var outItem = function(e) {
//disabled item
@ -139,15 +160,26 @@ LEA.cmroot = 1;
} //Endif
return false;
};
//show menu group at specified position
var showMenuGroup = function(pos, width) {
var bwidth = $("body").width();
var bheight = document.documentElement.clientHeight;
// 显示group, 这里可以动态生成
// show menu group at specified position
var showMenuGroup = function(pos, width, t) {
var $this = $(this); // dom 对象
// 没有东西, 那么生成之, 动态生成 life [ok]
if($this.html() == "") {
addItems(t.idx, itemsCache[t.idx], t.idx);
}
var bwidth = $body.width();
// var bheight = $body.height();
var bheight = document.documentElement.clientHeight-10;
bheight = bheight < 0 ? 100 : bheight;
var mwidth = $(this).outerWidth();
var mheight = $(this).outerHeight()-10;
mheight = mheight < 0 ? 100 : mheight;
var mwidth = $(this).outerWidth();
var mheight = $(this).outerHeight();
pos.left = (pos.left + width + mwidth > bwidth) ? (pos.left - mwidth < 0 ? 0 : pos.left - mwidth) : pos.left + width;
pos.top = (pos.top + mheight > bheight) ? (pos.top - mheight + (width > 0 ? 25 : 0) < 0 ? 0 : pos.top - mheight + (width > 0 ? 25 : 0)) : pos.top;
$(this).css(pos).show();
$(this).css(pos).show().css("max-height", bheight);
showGroups.push(this.gidx);
};
//to hide menu
@ -191,7 +223,8 @@ LEA.cmroot = 1;
$(target).addClass("contextmenu-hover");
}
$(document).one('mousedown', function() {
// life , 之前是mousedown
$(document).one('click', function() {
hideMenuPane();
// life
$(target).removeClass("contextmenu-hover");
@ -205,28 +238,14 @@ LEA.cmroot = 1;
root = buildGroup.apply(gTemplet.clone()[0], [option]);
root.applyrule = applyRule;
root.showMenu = showMenu;
// 这里很费时
addItems(option.alias, option.items);
}
else {
root = $root[0];
}
/*
var me = $(this).each(function() {
return $(this).bind('contextmenu', function(e) {
var bShowContext = (option.onContextMenu && $.isFunction(option.onContextMenu)) ? option.onContextMenu.call(this, e) : true;
if (bShowContext) {
if (option.onShow && $.isFunction(option.onShow)) {
option.onShow.call(this, root);
}
root.showMenu(e, this);
}
return false;
});
});
*/
var me = $(option.parent).on('contextmenu', option.children, function(e) {
function onShowMenu(e) {
var bShowContext = (option.onContextMenu && $.isFunction(option.onContextMenu)) ? option.onContextMenu.call(this, e) : true;
if (bShowContext) {
if (option.onShow && $.isFunction(option.onShow)) {
@ -234,17 +253,35 @@ LEA.cmroot = 1;
}
root.showMenu(e, this);
}
// 阻止冒泡, 默认事件
if(e) {
e.preventDefault();
}
return false;
}
// bind event
var me = $(option.parent).on('contextmenu', option.children, function(e){
onShowMenu.call(this, e);
});
//to apply rule
if (option.rule) {
applyRule(option.rule);
}
/*
gTemplet = iTemplet = sTemplet = itemTpl = buildGroup = buildItem = null;
addItems = overItem = outItem = null;
*/
//CollectGarbage();
return me;
var out = {
destroy: function() {
me.unbind("contextmenu");
},
showMenu: function(e, target) {
onShowMenu.call(target, e);
}
}
return out;
}
})(jQuery);

File diff suppressed because it is too large Load Diff

160
public/js/jquery.ztree.all-3.5.min.js vendored Normal file
View File

@ -0,0 +1,160 @@
/*
* JQuery zTree core v3.5.17-beta.2
* http://zTree.me/
*
* Copyright (c) 2010 Hunter.z
*
* Licensed same as jquery - MIT License
* http://www.opensource.org/licenses/mit-license.php
*
* email: hunter.z@263.net
* Date: 2014-05-08
*/
(function(p){var G,H,I,J,K,L,r={},u={},v={},M={treeId:"",treeObj:null,view:{addDiyDom:null,autoCancelSelected:!0,dblClickExpand:!0,expandSpeed:"fast",fontCss:{},nameIsHTML:!1,selectedMulti:!0,showIcon:!0,showLine:!0,showTitle:!0,txtSelectedEnable:!1},data:{key:{children:"children",name:"name",title:"",url:"url"},simpleData:{enable:!1,idKey:"id",pIdKey:"pId",rootPId:null},keep:{parent:!1,leaf:!1}},async:{enable:!1,contentType:"application/x-www-form-urlencoded",type:"post",dataType:"text",url:"",autoParam:[],
otherParam:[],dataFilter:null},callback:{beforeAsync:null,beforeClick:null,beforeDblClick:null,beforeRightClick:null,beforeMouseDown:null,beforeMouseUp:null,beforeExpand:null,beforeCollapse:null,beforeRemove:null,onAsyncError:null,onAsyncSuccess:null,onNodeCreated:null,onClick:null,onDblClick:null,onRightClick:null,onMouseDown:null,onMouseUp:null,onExpand:null,onCollapse:null,onRemove:null}},w=[function(b){var a=b.treeObj,c=e.event;a.bind(c.NODECREATED,function(a,c,g){j.apply(b.callback.onNodeCreated,
[a,c,g])});a.bind(c.CLICK,function(a,c,g,l,h){j.apply(b.callback.onClick,[c,g,l,h])});a.bind(c.EXPAND,function(a,c,g){j.apply(b.callback.onExpand,[a,c,g])});a.bind(c.COLLAPSE,function(a,c,g){j.apply(b.callback.onCollapse,[a,c,g])});a.bind(c.ASYNC_SUCCESS,function(a,c,g,l){j.apply(b.callback.onAsyncSuccess,[a,c,g,l])});a.bind(c.ASYNC_ERROR,function(a,c,g,l,h,e){j.apply(b.callback.onAsyncError,[a,c,g,l,h,e])});a.bind(c.REMOVE,function(a,c,g){j.apply(b.callback.onRemove,[a,c,g])})}],x=[function(b){var a=
e.event;b.treeObj.unbind(a.NODECREATED).unbind(a.CLICK).unbind(a.EXPAND).unbind(a.COLLAPSE).unbind(a.ASYNC_SUCCESS).unbind(a.ASYNC_ERROR).unbind(a.REMOVE)}],y=[function(b){var a=h.getCache(b);a||(a={},h.setCache(b,a));a.nodes=[];a.doms=[]}],z=[function(b,a,c,d,f,g){if(c){var l=h.getRoot(b),e=b.data.key.children;c.level=a;c.tId=b.treeId+"_"+ ++l.zId;c.parentTId=d?d.tId:null;c.open=typeof c.open=="string"?j.eqs(c.open,"true"):!!c.open;c[e]&&c[e].length>0?(c.isParent=!0,c.zAsync=!0):(c.isParent=typeof c.isParent==
"string"?j.eqs(c.isParent,"true"):!!c.isParent,c.open=c.isParent&&!b.async.enable?c.open:!1,c.zAsync=!c.isParent);c.isFirstNode=f;c.isLastNode=g;c.getParentNode=function(){return h.getNodeCache(b,c.parentTId)};c.getPreNode=function(){return h.getPreNode(b,c)};c.getNextNode=function(){return h.getNextNode(b,c)};c.isAjaxing=!1;h.fixPIdKeyValue(b,c)}}],s=[function(b){var a=b.target,c=h.getSetting(b.data.treeId),d="",f=null,g="",l="",i=null,n=null,k=null;if(j.eqs(b.type,"mousedown"))l="mousedown";else if(j.eqs(b.type,
"mouseup"))l="mouseup";else if(j.eqs(b.type,"contextmenu"))l="contextmenu";else if(j.eqs(b.type,"click"))if(j.eqs(a.tagName,"span")&&a.getAttribute("treeNode"+e.id.SWITCH)!==null)d=j.getNodeMainDom(a).id,g="switchNode";else{if(k=j.getMDom(c,a,[{tagName:"a",attrName:"treeNode"+e.id.A}]))d=j.getNodeMainDom(k).id,g="clickNode"}else if(j.eqs(b.type,"dblclick")&&(l="dblclick",k=j.getMDom(c,a,[{tagName:"a",attrName:"treeNode"+e.id.A}])))d=j.getNodeMainDom(k).id,g="switchNode";if(l.length>0&&d.length==0&&
(k=j.getMDom(c,a,[{tagName:"a",attrName:"treeNode"+e.id.A}])))d=j.getNodeMainDom(k).id;if(d.length>0)switch(f=h.getNodeCache(c,d),g){case "switchNode":f.isParent?j.eqs(b.type,"click")||j.eqs(b.type,"dblclick")&&j.apply(c.view.dblClickExpand,[c.treeId,f],c.view.dblClickExpand)?i=G:g="":g="";break;case "clickNode":i=H}switch(l){case "mousedown":n=I;break;case "mouseup":n=J;break;case "dblclick":n=K;break;case "contextmenu":n=L}return{stop:!1,node:f,nodeEventType:g,nodeEventCallback:i,treeEventType:l,
treeEventCallback:n}}],A=[function(b){var a=h.getRoot(b);a||(a={},h.setRoot(b,a));a[b.data.key.children]=[];a.expandTriggerFlag=!1;a.curSelectedList=[];a.noSelection=!0;a.createdNodes=[];a.zId=0;a._ver=(new Date).getTime()}],B=[],C=[],D=[],E=[],F=[],h={addNodeCache:function(b,a){h.getCache(b).nodes[h.getNodeCacheId(a.tId)]=a},getNodeCacheId:function(b){return b.substring(b.lastIndexOf("_")+1)},addAfterA:function(b){C.push(b)},addBeforeA:function(b){B.push(b)},addInnerAfterA:function(b){E.push(b)},
addInnerBeforeA:function(b){D.push(b)},addInitBind:function(b){w.push(b)},addInitUnBind:function(b){x.push(b)},addInitCache:function(b){y.push(b)},addInitNode:function(b){z.push(b)},addInitProxy:function(b,a){a?s.splice(0,0,b):s.push(b)},addInitRoot:function(b){A.push(b)},addNodesData:function(b,a,c){var d=b.data.key.children;a[d]||(a[d]=[]);if(a[d].length>0)a[d][a[d].length-1].isLastNode=!1,i.setNodeLineIcos(b,a[d][a[d].length-1]);a.isParent=!0;a[d]=a[d].concat(c)},addSelectedNode:function(b,a){var c=
h.getRoot(b);h.isSelectedNode(b,a)||c.curSelectedList.push(a)},addCreatedNode:function(b,a){(b.callback.onNodeCreated||b.view.addDiyDom)&&h.getRoot(b).createdNodes.push(a)},addZTreeTools:function(b){F.push(b)},exSetting:function(b){p.extend(!0,M,b)},fixPIdKeyValue:function(b,a){b.data.simpleData.enable&&(a[b.data.simpleData.pIdKey]=a.parentTId?a.getParentNode()[b.data.simpleData.idKey]:b.data.simpleData.rootPId)},getAfterA:function(b,a,c){for(var d=0,f=C.length;d<f;d++)C[d].apply(this,arguments)},
getBeforeA:function(b,a,c){for(var d=0,f=B.length;d<f;d++)B[d].apply(this,arguments)},getInnerAfterA:function(b,a,c){for(var d=0,f=E.length;d<f;d++)E[d].apply(this,arguments)},getInnerBeforeA:function(b,a,c){for(var d=0,f=D.length;d<f;d++)D[d].apply(this,arguments)},getCache:function(b){return v[b.treeId]},getNextNode:function(b,a){if(!a)return null;for(var c=b.data.key.children,d=a.parentTId?a.getParentNode():h.getRoot(b),f=0,g=d[c].length-1;f<=g;f++)if(d[c][f]===a)return f==g?null:d[c][f+1];return null},
getNodeByParam:function(b,a,c,d){if(!a||!c)return null;for(var f=b.data.key.children,g=0,l=a.length;g<l;g++){if(a[g][c]==d)return a[g];var e=h.getNodeByParam(b,a[g][f],c,d);if(e)return e}return null},getNodeCache:function(b,a){if(!a)return null;var c=v[b.treeId].nodes[h.getNodeCacheId(a)];return c?c:null},getNodeName:function(b,a){return""+a[b.data.key.name]},getNodeTitle:function(b,a){return""+a[b.data.key.title===""?b.data.key.name:b.data.key.title]},getNodes:function(b){return h.getRoot(b)[b.data.key.children]},
getNodesByParam:function(b,a,c,d){if(!a||!c)return[];for(var f=b.data.key.children,g=[],l=0,e=a.length;l<e;l++)a[l][c]==d&&g.push(a[l]),g=g.concat(h.getNodesByParam(b,a[l][f],c,d));return g},getNodesByParamFuzzy:function(b,a,c,d){if(!a||!c)return[];for(var f=b.data.key.children,g=[],d=d.toLowerCase(),l=0,e=a.length;l<e;l++)typeof a[l][c]=="string"&&a[l][c].toLowerCase().indexOf(d)>-1&&g.push(a[l]),g=g.concat(h.getNodesByParamFuzzy(b,a[l][f],c,d));return g},getNodesByFilter:function(b,a,c,d,f){if(!a)return d?
null:[];for(var g=b.data.key.children,e=d?null:[],i=0,n=a.length;i<n;i++){if(j.apply(c,[a[i],f],!1)){if(d)return a[i];e.push(a[i])}var k=h.getNodesByFilter(b,a[i][g],c,d,f);if(d&&k)return k;e=d?k:e.concat(k)}return e},getPreNode:function(b,a){if(!a)return null;for(var c=b.data.key.children,d=a.parentTId?a.getParentNode():h.getRoot(b),f=0,g=d[c].length;f<g;f++)if(d[c][f]===a)return f==0?null:d[c][f-1];return null},getRoot:function(b){return b?u[b.treeId]:null},getRoots:function(){return u},getSetting:function(b){return r[b]},
getSettings:function(){return r},getZTreeTools:function(b){return(b=this.getRoot(this.getSetting(b)))?b.treeTools:null},initCache:function(b){for(var a=0,c=y.length;a<c;a++)y[a].apply(this,arguments)},initNode:function(b,a,c,d,f,g){for(var e=0,h=z.length;e<h;e++)z[e].apply(this,arguments)},initRoot:function(b){for(var a=0,c=A.length;a<c;a++)A[a].apply(this,arguments)},isSelectedNode:function(b,a){for(var c=h.getRoot(b),d=0,f=c.curSelectedList.length;d<f;d++)if(a===c.curSelectedList[d])return!0;return!1},
removeNodeCache:function(b,a){var c=b.data.key.children;if(a[c])for(var d=0,f=a[c].length;d<f;d++)arguments.callee(b,a[c][d]);h.getCache(b).nodes[h.getNodeCacheId(a.tId)]=null},removeSelectedNode:function(b,a){for(var c=h.getRoot(b),d=0,f=c.curSelectedList.length;d<f;d++)if(a===c.curSelectedList[d]||!h.getNodeCache(b,c.curSelectedList[d].tId))c.curSelectedList.splice(d,1),d--,f--},setCache:function(b,a){v[b.treeId]=a},setRoot:function(b,a){u[b.treeId]=a},setZTreeTools:function(b,a){for(var c=0,d=
F.length;c<d;c++)F[c].apply(this,arguments)},transformToArrayFormat:function(b,a){if(!a)return[];var c=b.data.key.children,d=[];if(j.isArray(a))for(var f=0,g=a.length;f<g;f++)d.push(a[f]),a[f][c]&&(d=d.concat(h.transformToArrayFormat(b,a[f][c])));else d.push(a),a[c]&&(d=d.concat(h.transformToArrayFormat(b,a[c])));return d},transformTozTreeFormat:function(b,a){var c,d,f=b.data.simpleData.idKey,g=b.data.simpleData.pIdKey,e=b.data.key.children;if(!f||f==""||!a)return[];if(j.isArray(a)){var h=[],i=[];
for(c=0,d=a.length;c<d;c++)i[a[c][f]]=a[c];for(c=0,d=a.length;c<d;c++)i[a[c][g]]&&a[c][f]!=a[c][g]?(i[a[c][g]][e]||(i[a[c][g]][e]=[]),i[a[c][g]][e].push(a[c])):h.push(a[c]);return h}else return[a]}},m={bindEvent:function(b){for(var a=0,c=w.length;a<c;a++)w[a].apply(this,arguments)},unbindEvent:function(b){for(var a=0,c=x.length;a<c;a++)x[a].apply(this,arguments)},bindTree:function(b){var a={treeId:b.treeId},c=b.treeObj;b.view.txtSelectedEnable||c.bind("selectstart",function(a){a=a.originalEvent.srcElement.nodeName.toLowerCase();
return a==="input"||a==="textarea"}).css({"-moz-user-select":"-moz-none"});c.bind("click",a,m.proxy);c.bind("dblclick",a,m.proxy);c.bind("mouseover",a,m.proxy);c.bind("mouseout",a,m.proxy);c.bind("mousedown",a,m.proxy);c.bind("mouseup",a,m.proxy);c.bind("contextmenu",a,m.proxy)},unbindTree:function(b){b.treeObj.unbind("click",m.proxy).unbind("dblclick",m.proxy).unbind("mouseover",m.proxy).unbind("mouseout",m.proxy).unbind("mousedown",m.proxy).unbind("mouseup",m.proxy).unbind("contextmenu",m.proxy)},
doProxy:function(b){for(var a=[],c=0,d=s.length;c<d;c++){var f=s[c].apply(this,arguments);a.push(f);if(f.stop)break}return a},proxy:function(b){var a=h.getSetting(b.data.treeId);if(!j.uCanDo(a,b))return!0;for(var a=m.doProxy(b),c=!0,d=0,f=a.length;d<f;d++){var g=a[d];g.nodeEventCallback&&(c=g.nodeEventCallback.apply(g,[b,g.node])&&c);g.treeEventCallback&&(c=g.treeEventCallback.apply(g,[b,g.node])&&c)}return c}};G=function(b,a){var c=h.getSetting(b.data.treeId);if(a.open){if(j.apply(c.callback.beforeCollapse,
[c.treeId,a],!0)==!1)return!0}else if(j.apply(c.callback.beforeExpand,[c.treeId,a],!0)==!1)return!0;h.getRoot(c).expandTriggerFlag=!0;i.switchNode(c,a);return!0};H=function(b,a){var c=h.getSetting(b.data.treeId),d=c.view.autoCancelSelected&&(b.ctrlKey||b.metaKey)&&h.isSelectedNode(c,a)?0:c.view.autoCancelSelected&&(b.ctrlKey||b.metaKey)&&c.view.selectedMulti?2:1;if(j.apply(c.callback.beforeClick,[c.treeId,a,d],!0)==!1)return!0;d===0?i.cancelPreSelectedNode(c,a):i.selectNode(c,a,d===2);c.treeObj.trigger(e.event.CLICK,
[b,c.treeId,a,d]);return!0};I=function(b,a){var c=h.getSetting(b.data.treeId);j.apply(c.callback.beforeMouseDown,[c.treeId,a],!0)&&j.apply(c.callback.onMouseDown,[b,c.treeId,a]);return!0};J=function(b,a){var c=h.getSetting(b.data.treeId);j.apply(c.callback.beforeMouseUp,[c.treeId,a],!0)&&j.apply(c.callback.onMouseUp,[b,c.treeId,a]);return!0};K=function(b,a){var c=h.getSetting(b.data.treeId);j.apply(c.callback.beforeDblClick,[c.treeId,a],!0)&&j.apply(c.callback.onDblClick,[b,c.treeId,a]);return!0};
L=function(b,a){var c=h.getSetting(b.data.treeId);j.apply(c.callback.beforeRightClick,[c.treeId,a],!0)&&j.apply(c.callback.onRightClick,[b,c.treeId,a]);return typeof c.callback.onRightClick!="function"};var j={apply:function(b,a,c){return typeof b=="function"?b.apply(N,a?a:[]):c},canAsync:function(b,a){var c=b.data.key.children;return b.async.enable&&a&&a.isParent&&!(a.zAsync||a[c]&&a[c].length>0)},clone:function(b){if(b===null)return null;var a=j.isArray(b)?[]:{},c;for(c in b)a[c]=b[c]instanceof
Date?new Date(b[c].getTime()):typeof b[c]==="object"?arguments.callee(b[c]):b[c];return a},eqs:function(b,a){return b.toLowerCase()===a.toLowerCase()},isArray:function(b){return Object.prototype.toString.apply(b)==="[object Array]"},$:function(b,a,c){a&&typeof a!="string"&&(c=a,a="");return typeof b=="string"?p(b,c?c.treeObj.get(0).ownerDocument:null):p("#"+b.tId+a,c?c.treeObj:null)},getMDom:function(b,a,c){if(!a)return null;for(;a&&a.id!==b.treeId;){for(var d=0,f=c.length;a.tagName&&d<f;d++)if(j.eqs(a.tagName,
c[d].tagName)&&a.getAttribute(c[d].attrName)!==null)return a;a=a.parentNode}return null},getNodeMainDom:function(b){return p(b).parent("li").get(0)||p(b).parentsUntil("li").parent().get(0)},isChildOrSelf:function(b,a){return p(b).closest("#"+a).length>0},uCanDo:function(){return!0}},i={addNodes:function(b,a,c,d){if(!b.data.keep.leaf||!a||a.isParent)if(j.isArray(c)||(c=[c]),b.data.simpleData.enable&&(c=h.transformTozTreeFormat(b,c)),a){var f=k(a,e.id.SWITCH,b),g=k(a,e.id.ICON,b),l=k(a,e.id.UL,b);if(!a.open)i.replaceSwitchClass(a,
f,e.folder.CLOSE),i.replaceIcoClass(a,g,e.folder.CLOSE),a.open=!1,l.css({display:"none"});h.addNodesData(b,a,c);i.createNodes(b,a.level+1,c,a);d||i.expandCollapseParentNode(b,a,!0)}else h.addNodesData(b,h.getRoot(b),c),i.createNodes(b,0,c,null)},appendNodes:function(b,a,c,d,f,g){if(!c)return[];for(var e=[],j=b.data.key.children,k=0,m=c.length;k<m;k++){var o=c[k];if(f){var t=(d?d:h.getRoot(b))[j].length==c.length&&k==0;h.initNode(b,a,o,d,t,k==c.length-1,g);h.addNodeCache(b,o)}t=[];o[j]&&o[j].length>
0&&(t=i.appendNodes(b,a+1,o[j],o,f,g&&o.open));g&&(i.makeDOMNodeMainBefore(e,b,o),i.makeDOMNodeLine(e,b,o),h.getBeforeA(b,o,e),i.makeDOMNodeNameBefore(e,b,o),h.getInnerBeforeA(b,o,e),i.makeDOMNodeIcon(e,b,o),h.getInnerAfterA(b,o,e),i.makeDOMNodeNameAfter(e,b,o),h.getAfterA(b,o,e),o.isParent&&o.open&&i.makeUlHtml(b,o,e,t.join("")),i.makeDOMNodeMainAfter(e,b,o),h.addCreatedNode(b,o))}return e},appendParentULDom:function(b,a){var c=[],d=k(a,b);!d.get(0)&&a.parentTId&&(i.appendParentULDom(b,a.getParentNode()),
d=k(a,b));var f=k(a,e.id.UL,b);f.get(0)&&f.remove();f=i.appendNodes(b,a.level+1,a[b.data.key.children],a,!1,!0);i.makeUlHtml(b,a,c,f.join(""));d.append(c.join(""))},asyncNode:function(b,a,c,d){var f,g;if(a&&!a.isParent)return j.apply(d),!1;else if(a&&a.isAjaxing)return!1;else if(j.apply(b.callback.beforeAsync,[b.treeId,a],!0)==!1)return j.apply(d),!1;if(a)a.isAjaxing=!0,k(a,e.id.ICON,b).attr({style:"","class":e.className.BUTTON+" "+e.className.ICO_LOADING});var l={};for(f=0,g=b.async.autoParam.length;a&&
f<g;f++){var q=b.async.autoParam[f].split("="),n=q;q.length>1&&(n=q[1],q=q[0]);l[n]=a[q]}if(j.isArray(b.async.otherParam))for(f=0,g=b.async.otherParam.length;f<g;f+=2)l[b.async.otherParam[f]]=b.async.otherParam[f+1];else for(var m in b.async.otherParam)l[m]=b.async.otherParam[m];var o=h.getRoot(b)._ver;p.ajax({contentType:b.async.contentType,type:b.async.type,url:j.apply(b.async.url,[b.treeId,a],b.async.url),data:l,dataType:b.async.dataType,success:function(f){if(o==h.getRoot(b)._ver){var g=[];try{g=
!f||f.length==0?[]:typeof f=="string"?eval("("+f+")"):f}catch(l){g=f}if(a)a.isAjaxing=null,a.zAsync=!0;i.setNodeLineIcos(b,a);g&&g!==""?(g=j.apply(b.async.dataFilter,[b.treeId,a,g],g),i.addNodes(b,a,g?j.clone(g):[],!!c)):i.addNodes(b,a,[],!!c);b.treeObj.trigger(e.event.ASYNC_SUCCESS,[b.treeId,a,f]);j.apply(d)}},error:function(c,d,f){if(o==h.getRoot(b)._ver){if(a)a.isAjaxing=null;i.setNodeLineIcos(b,a);b.treeObj.trigger(e.event.ASYNC_ERROR,[b.treeId,a,c,d,f])}}});return!0},cancelPreSelectedNode:function(b,
a){for(var c=h.getRoot(b).curSelectedList,d=c.length-1;d>=0;d--)if(!a||a===c[d])if(k(c[d],e.id.A,b).removeClass(e.node.CURSELECTED),a){h.removeSelectedNode(b,a);break}if(!a)h.getRoot(b).curSelectedList=[]},createNodeCallback:function(b){if(b.callback.onNodeCreated||b.view.addDiyDom)for(var a=h.getRoot(b);a.createdNodes.length>0;){var c=a.createdNodes.shift();j.apply(b.view.addDiyDom,[b.treeId,c]);b.callback.onNodeCreated&&b.treeObj.trigger(e.event.NODECREATED,[b.treeId,c])}},createNodes:function(b,
a,c,d){if(c&&c.length!=0){var f=h.getRoot(b),g=b.data.key.children,g=!d||d.open||!!k(d[g][0],b).get(0);f.createdNodes=[];a=i.appendNodes(b,a,c,d,!0,g);d?(d=k(d,e.id.UL,b),d.get(0)&&d.append(a.join(""))):b.treeObj.append(a.join(""));i.createNodeCallback(b)}},destroy:function(b){b&&(h.initCache(b),h.initRoot(b),m.unbindTree(b),m.unbindEvent(b),b.treeObj.empty(),delete r[b.treeId])},expandCollapseNode:function(b,a,c,d,f){var g=h.getRoot(b),l=b.data.key.children;if(a){if(g.expandTriggerFlag){var q=f,
f=function(){q&&q();a.open?b.treeObj.trigger(e.event.EXPAND,[b.treeId,a]):b.treeObj.trigger(e.event.COLLAPSE,[b.treeId,a])};g.expandTriggerFlag=!1}if(!a.open&&a.isParent&&(!k(a,e.id.UL,b).get(0)||a[l]&&a[l].length>0&&!k(a[l][0],b).get(0)))i.appendParentULDom(b,a),i.createNodeCallback(b);if(a.open==c)j.apply(f,[]);else{var c=k(a,e.id.UL,b),g=k(a,e.id.SWITCH,b),n=k(a,e.id.ICON,b);a.isParent?(a.open=!a.open,a.iconOpen&&a.iconClose&&n.attr("style",i.makeNodeIcoStyle(b,a)),a.open?(i.replaceSwitchClass(a,
g,e.folder.OPEN),i.replaceIcoClass(a,n,e.folder.OPEN),d==!1||b.view.expandSpeed==""?(c.show(),j.apply(f,[])):a[l]&&a[l].length>0?c.slideDown(b.view.expandSpeed,f):(c.show(),j.apply(f,[]))):(i.replaceSwitchClass(a,g,e.folder.CLOSE),i.replaceIcoClass(a,n,e.folder.CLOSE),d==!1||b.view.expandSpeed==""||!(a[l]&&a[l].length>0)?(c.hide(),j.apply(f,[])):c.slideUp(b.view.expandSpeed,f))):j.apply(f,[])}}else j.apply(f,[])},expandCollapseParentNode:function(b,a,c,d,f){a&&(a.parentTId?(i.expandCollapseNode(b,
a,c,d),a.parentTId&&i.expandCollapseParentNode(b,a.getParentNode(),c,d,f)):i.expandCollapseNode(b,a,c,d,f))},expandCollapseSonNode:function(b,a,c,d,f){var g=h.getRoot(b),e=b.data.key.children,g=a?a[e]:g[e],e=a?!1:d,j=h.getRoot(b).expandTriggerFlag;h.getRoot(b).expandTriggerFlag=!1;if(g)for(var k=0,m=g.length;k<m;k++)g[k]&&i.expandCollapseSonNode(b,g[k],c,e);h.getRoot(b).expandTriggerFlag=j;i.expandCollapseNode(b,a,c,d,f)},makeDOMNodeIcon:function(b,a,c){var d=h.getNodeName(a,c),d=a.view.nameIsHTML?
d:d.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;");b.push("<span id='",c.tId,e.id.ICON,"' title='' treeNode",e.id.ICON," class='",i.makeNodeIcoClass(a,c),"' style='",i.makeNodeIcoStyle(a,c),"'></span><span id='",c.tId,e.id.SPAN,"'>",d,"</span>")},makeDOMNodeLine:function(b,a,c){b.push("<span id='",c.tId,e.id.SWITCH,"' title='' class='",i.makeNodeLineClass(a,c),"' treeNode",e.id.SWITCH,"></span>")},makeDOMNodeMainAfter:function(b){b.push("</li>")},makeDOMNodeMainBefore:function(b,
a,c){b.push("<li id='",c.tId,"' class='",e.className.LEVEL,c.level,"' tabindex='0' hidefocus='true' treenode>")},makeDOMNodeNameAfter:function(b){b.push("</a>")},makeDOMNodeNameBefore:function(b,a,c){var d=h.getNodeTitle(a,c),f=i.makeNodeUrl(a,c),g=i.makeNodeFontCss(a,c),l=[],k;for(k in g)l.push(k,":",g[k],";");b.push("<a id='",c.tId,e.id.A,"' class='",e.className.LEVEL,c.level,"' treeNode",e.id.A,' onclick="',c.click||"",'" ',f!=null&&f.length>0?"href='"+f+"'":""," target='",i.makeNodeTarget(c),
"' style='",l.join(""),"'");j.apply(a.view.showTitle,[a.treeId,c],a.view.showTitle)&&d&&b.push("title='",d.replace(/'/g,"&#39;").replace(/</g,"&lt;").replace(/>/g,"&gt;"),"'");b.push(">")},makeNodeFontCss:function(b,a){var c=j.apply(b.view.fontCss,[b.treeId,a],b.view.fontCss);return c&&typeof c!="function"?c:{}},makeNodeIcoClass:function(b,a){var c=["ico"];a.isAjaxing||(c[0]=(a.iconSkin?a.iconSkin+"_":"")+c[0],a.isParent?c.push(a.open?e.folder.OPEN:e.folder.CLOSE):c.push(e.folder.DOCU));return e.className.BUTTON+
" "+c.join("_")},makeNodeIcoStyle:function(b,a){var c=[];if(!a.isAjaxing){var d=a.isParent&&a.iconOpen&&a.iconClose?a.open?a.iconOpen:a.iconClose:a.icon;d&&c.push("background:url(",d,") 0 0 no-repeat;");(b.view.showIcon==!1||!j.apply(b.view.showIcon,[b.treeId,a],!0))&&c.push("width:0px;height:0px;")}return c.join("")},makeNodeLineClass:function(b,a){var c=[];b.view.showLine?a.level==0&&a.isFirstNode&&a.isLastNode?c.push(e.line.ROOT):a.level==0&&a.isFirstNode?c.push(e.line.ROOTS):a.isLastNode?c.push(e.line.BOTTOM):
c.push(e.line.CENTER):c.push(e.line.NOLINE);a.isParent?c.push(a.open?e.folder.OPEN:e.folder.CLOSE):c.push(e.folder.DOCU);return i.makeNodeLineClassEx(a)+c.join("_")},makeNodeLineClassEx:function(b){return e.className.BUTTON+" "+e.className.LEVEL+b.level+" "+e.className.SWITCH+" "},makeNodeTarget:function(b){return b.target||"_blank"},makeNodeUrl:function(b,a){var c=b.data.key.url;return a[c]?a[c]:null},makeUlHtml:function(b,a,c,d){c.push("<ul id='",a.tId,e.id.UL,"' class='",e.className.LEVEL,a.level,
" ",i.makeUlLineClass(b,a),"' style='display:",a.open?"block":"none","'>");c.push(d);c.push("</ul>")},makeUlLineClass:function(b,a){return b.view.showLine&&!a.isLastNode?e.line.LINE:""},removeChildNodes:function(b,a){if(a){var c=b.data.key.children,d=a[c];if(d){for(var f=0,g=d.length;f<g;f++)h.removeNodeCache(b,d[f]);h.removeSelectedNode(b);delete a[c];b.data.keep.parent?k(a,e.id.UL,b).empty():(a.isParent=!1,a.open=!1,c=k(a,e.id.SWITCH,b),d=k(a,e.id.ICON,b),i.replaceSwitchClass(a,c,e.folder.DOCU),
i.replaceIcoClass(a,d,e.folder.DOCU),k(a,e.id.UL,b).remove())}}},setFirstNode:function(b,a){var c=b.data.key.children;if(a[c].length>0)a[c][0].isFirstNode=!0},setLastNode:function(b,a){var c=b.data.key.children,d=a[c].length;if(d>0)a[c][d-1].isLastNode=!0},removeNode:function(b,a){var c=h.getRoot(b),d=b.data.key.children,f=a.parentTId?a.getParentNode():c;a.isFirstNode=!1;a.isLastNode=!1;a.getPreNode=function(){return null};a.getNextNode=function(){return null};if(h.getNodeCache(b,a.tId)){k(a,b).remove();
h.removeNodeCache(b,a);h.removeSelectedNode(b,a);for(var g=0,l=f[d].length;g<l;g++)if(f[d][g].tId==a.tId){f[d].splice(g,1);break}i.setFirstNode(b,f);i.setLastNode(b,f);var j,g=f[d].length;if(!b.data.keep.parent&&g==0)f.isParent=!1,f.open=!1,g=k(f,e.id.UL,b),l=k(f,e.id.SWITCH,b),j=k(f,e.id.ICON,b),i.replaceSwitchClass(f,l,e.folder.DOCU),i.replaceIcoClass(f,j,e.folder.DOCU),g.css("display","none");else if(b.view.showLine&&g>0){var n=f[d][g-1],g=k(n,e.id.UL,b),l=k(n,e.id.SWITCH,b);j=k(n,e.id.ICON,b);
f==c?f[d].length==1?i.replaceSwitchClass(n,l,e.line.ROOT):(c=k(f[d][0],e.id.SWITCH,b),i.replaceSwitchClass(f[d][0],c,e.line.ROOTS),i.replaceSwitchClass(n,l,e.line.BOTTOM)):i.replaceSwitchClass(n,l,e.line.BOTTOM);g.removeClass(e.line.LINE)}}},replaceIcoClass:function(b,a,c){if(a&&!b.isAjaxing&&(b=a.attr("class"),b!=void 0)){b=b.split("_");switch(c){case e.folder.OPEN:case e.folder.CLOSE:case e.folder.DOCU:b[b.length-1]=c}a.attr("class",b.join("_"))}},replaceSwitchClass:function(b,a,c){if(a){var d=
a.attr("class");if(d!=void 0){d=d.split("_");switch(c){case e.line.ROOT:case e.line.ROOTS:case e.line.CENTER:case e.line.BOTTOM:case e.line.NOLINE:d[0]=i.makeNodeLineClassEx(b)+c;break;case e.folder.OPEN:case e.folder.CLOSE:case e.folder.DOCU:d[1]=c}a.attr("class",d.join("_"));c!==e.folder.DOCU?a.removeAttr("disabled"):a.attr("disabled","disabled")}}},selectNode:function(b,a,c){c||i.cancelPreSelectedNode(b);k(a,e.id.A,b).addClass(e.node.CURSELECTED);h.addSelectedNode(b,a)},setNodeFontCss:function(b,
a){var c=k(a,e.id.A,b),d=i.makeNodeFontCss(b,a);d&&c.css(d)},setNodeLineIcos:function(b,a){if(a){var c=k(a,e.id.SWITCH,b),d=k(a,e.id.UL,b),f=k(a,e.id.ICON,b),g=i.makeUlLineClass(b,a);g.length==0?d.removeClass(e.line.LINE):d.addClass(g);c.attr("class",i.makeNodeLineClass(b,a));a.isParent?c.removeAttr("disabled"):c.attr("disabled","disabled");f.removeAttr("style");f.attr("style",i.makeNodeIcoStyle(b,a));f.attr("class",i.makeNodeIcoClass(b,a))}},setNodeName:function(b,a){var c=h.getNodeTitle(b,a),d=
k(a,e.id.SPAN,b);d.empty();b.view.nameIsHTML?d.html(h.getNodeName(b,a)):d.text(h.getNodeName(b,a));j.apply(b.view.showTitle,[b.treeId,a],b.view.showTitle)&&k(a,e.id.A,b).attr("title",!c?"":c)},setNodeTarget:function(b,a){k(a,e.id.A,b).attr("target",i.makeNodeTarget(a))},setNodeUrl:function(b,a){var c=k(a,e.id.A,b),d=i.makeNodeUrl(b,a);d==null||d.length==0?c.removeAttr("href"):c.attr("href",d)},switchNode:function(b,a){a.open||!j.canAsync(b,a)?i.expandCollapseNode(b,a,!a.open):b.async.enable?i.asyncNode(b,
a)||i.expandCollapseNode(b,a,!a.open):a&&i.expandCollapseNode(b,a,!a.open)}};p.fn.zTree={consts:{className:{BUTTON:"button",LEVEL:"level",ICO_LOADING:"ico_loading",SWITCH:"switch"},event:{NODECREATED:"ztree_nodeCreated",CLICK:"ztree_click",EXPAND:"ztree_expand",COLLAPSE:"ztree_collapse",ASYNC_SUCCESS:"ztree_async_success",ASYNC_ERROR:"ztree_async_error",REMOVE:"ztree_remove"},id:{A:"_a",ICON:"_ico",SPAN:"_span",SWITCH:"_switch",UL:"_ul"},line:{ROOT:"root",ROOTS:"roots",CENTER:"center",BOTTOM:"bottom",
NOLINE:"noline",LINE:"line"},folder:{OPEN:"open",CLOSE:"close",DOCU:"docu"},node:{CURSELECTED:"curSelectedNode"}},_z:{tools:j,view:i,event:m,data:h},getZTreeObj:function(b){return(b=h.getZTreeTools(b))?b:null},destroy:function(b){if(b&&b.length>0)i.destroy(h.getSetting(b));else for(var a in r)i.destroy(r[a])},init:function(b,a,c){var d=j.clone(M);p.extend(!0,d,a);d.treeId=b.attr("id");d.treeObj=b;d.treeObj.empty();r[d.treeId]=d;if(typeof document.body.style.maxHeight==="undefined")d.view.expandSpeed=
"";h.initRoot(d);b=h.getRoot(d);a=d.data.key.children;c=c?j.clone(j.isArray(c)?c:[c]):[];b[a]=d.data.simpleData.enable?h.transformTozTreeFormat(d,c):c;h.initCache(d);m.unbindTree(d);m.bindTree(d);m.unbindEvent(d);m.bindEvent(d);c={setting:d,addNodes:function(a,b,c){function e(){i.addNodes(d,a,h,c==!0)}if(!b)return null;a||(a=null);if(a&&!a.isParent&&d.data.keep.leaf)return null;var h=j.clone(j.isArray(b)?b:[b]);j.canAsync(d,a)?i.asyncNode(d,a,c,e):e();return h},cancelSelectedNode:function(a){i.cancelPreSelectedNode(d,
a)},destroy:function(){i.destroy(d)},expandAll:function(a){a=!!a;i.expandCollapseSonNode(d,null,a,!0);return a},expandNode:function(a,b,c,e,n){if(!a||!a.isParent)return null;b!==!0&&b!==!1&&(b=!a.open);if((n=!!n)&&b&&j.apply(d.callback.beforeExpand,[d.treeId,a],!0)==!1)return null;else if(n&&!b&&j.apply(d.callback.beforeCollapse,[d.treeId,a],!0)==!1)return null;b&&a.parentTId&&i.expandCollapseParentNode(d,a.getParentNode(),b,!1);if(b===a.open&&!c)return null;h.getRoot(d).expandTriggerFlag=n;if(!j.canAsync(d,
a)&&c)i.expandCollapseSonNode(d,a,b,!0,function(){if(e!==!1)try{k(a,d).focus().blur()}catch(b){}});else if(a.open=!b,i.switchNode(this.setting,a),e!==!1)try{k(a,d).focus().blur()}catch(m){}return b},getNodes:function(){return h.getNodes(d)},getNodeByParam:function(a,b,c){return!a?null:h.getNodeByParam(d,c?c[d.data.key.children]:h.getNodes(d),a,b)},getNodeByTId:function(a){return h.getNodeCache(d,a)},getNodesByParam:function(a,b,c){return!a?null:h.getNodesByParam(d,c?c[d.data.key.children]:h.getNodes(d),
a,b)},getNodesByParamFuzzy:function(a,b,c){return!a?null:h.getNodesByParamFuzzy(d,c?c[d.data.key.children]:h.getNodes(d),a,b)},getNodesByFilter:function(a,b,c,e){b=!!b;return!a||typeof a!="function"?b?null:[]:h.getNodesByFilter(d,c?c[d.data.key.children]:h.getNodes(d),a,b,e)},getNodeIndex:function(a){if(!a)return null;for(var b=d.data.key.children,c=a.parentTId?a.getParentNode():h.getRoot(d),e=0,i=c[b].length;e<i;e++)if(c[b][e]==a)return e;return-1},getSelectedNodes:function(){for(var a=[],b=h.getRoot(d).curSelectedList,
c=0,e=b.length;c<e;c++)a.push(b[c]);return a},isSelectedNode:function(a){return h.isSelectedNode(d,a)},reAsyncChildNodes:function(a,b,c){if(this.setting.async.enable){var j=!a;j&&(a=h.getRoot(d));if(b=="refresh"){for(var b=this.setting.data.key.children,m=0,p=a[b]?a[b].length:0;m<p;m++)h.removeNodeCache(d,a[b][m]);h.removeSelectedNode(d);a[b]=[];j?this.setting.treeObj.empty():k(a,e.id.UL,d).empty()}i.asyncNode(this.setting,j?null:a,!!c)}},refresh:function(){this.setting.treeObj.empty();var a=h.getRoot(d),
b=a[d.data.key.children];h.initRoot(d);a[d.data.key.children]=b;h.initCache(d);i.createNodes(d,0,a[d.data.key.children])},removeChildNodes:function(a){if(!a)return null;var b=a[d.data.key.children];i.removeChildNodes(d,a);return b?b:null},removeNode:function(a,b){a&&(b=!!b,b&&j.apply(d.callback.beforeRemove,[d.treeId,a],!0)==!1||(i.removeNode(d,a),b&&this.setting.treeObj.trigger(e.event.REMOVE,[d.treeId,a])))},selectNode:function(a,b){if(a&&j.uCanDo(d)){b=d.view.selectedMulti&&b;if(a.parentTId)i.expandCollapseParentNode(d,
a.getParentNode(),!0,!1,function(){try{k(a,d).focus().blur()}catch(b){}});else try{k(a,d).focus().blur()}catch(c){}i.selectNode(d,a,b)}},transformTozTreeNodes:function(a){return h.transformTozTreeFormat(d,a)},transformToArray:function(a){return h.transformToArrayFormat(d,a)},updateNode:function(a){a&&k(a,d).get(0)&&j.uCanDo(d)&&(i.setNodeName(d,a),i.setNodeTarget(d,a),i.setNodeUrl(d,a),i.setNodeLineIcos(d,a),i.setNodeFontCss(d,a))}};b.treeTools=c;h.setZTreeTools(d,c);b[a]&&b[a].length>0?i.createNodes(d,
0,b[a]):d.async.enable&&d.async.url&&d.async.url!==""&&i.asyncNode(d);return c}};var N=p.fn.zTree,k=j.$,e=N.consts})(jQuery);
/*
* JQuery zTree excheck v3.5.17-beta.2
* http://zTree.me/
*
* Copyright (c) 2010 Hunter.z
*
* Licensed same as jquery - MIT License
* http://www.opensource.org/licenses/mit-license.php
*
* email: hunter.z@263.net
* Date: 2014-05-08
*/
(function(m){var p,q,r,o={event:{CHECK:"ztree_check"},id:{CHECK:"_check"},checkbox:{STYLE:"checkbox",DEFAULT:"chk",DISABLED:"disable",FALSE:"false",TRUE:"true",FULL:"full",PART:"part",FOCUS:"focus"},radio:{STYLE:"radio",TYPE_ALL:"all",TYPE_LEVEL:"level"}},v={check:{enable:!1,autoCheckTrigger:!1,chkStyle:o.checkbox.STYLE,nocheckInherit:!1,chkDisabledInherit:!1,radioType:o.radio.TYPE_LEVEL,chkboxType:{Y:"ps",N:"ps"}},data:{key:{checked:"checked"}},callback:{beforeCheck:null,onCheck:null}};p=function(c,
a){if(a.chkDisabled===!0)return!1;var b=f.getSetting(c.data.treeId),d=b.data.key.checked;if(k.apply(b.callback.beforeCheck,[b.treeId,a],!0)==!1)return!0;a[d]=!a[d];e.checkNodeRelation(b,a);d=n(a,j.id.CHECK,b);e.setChkClass(b,d,a);e.repairParentChkClassWithSelf(b,a);b.treeObj.trigger(j.event.CHECK,[c,b.treeId,a]);return!0};q=function(c,a){if(a.chkDisabled===!0)return!1;var b=f.getSetting(c.data.treeId),d=n(a,j.id.CHECK,b);a.check_Focus=!0;e.setChkClass(b,d,a);return!0};r=function(c,a){if(a.chkDisabled===
!0)return!1;var b=f.getSetting(c.data.treeId),d=n(a,j.id.CHECK,b);a.check_Focus=!1;e.setChkClass(b,d,a);return!0};m.extend(!0,m.fn.zTree.consts,o);m.extend(!0,m.fn.zTree._z,{tools:{},view:{checkNodeRelation:function(c,a){var b,d,h,i=c.data.key.children,l=c.data.key.checked;b=j.radio;if(c.check.chkStyle==b.STYLE){var g=f.getRadioCheckedList(c);if(a[l])if(c.check.radioType==b.TYPE_ALL){for(d=g.length-1;d>=0;d--)b=g[d],b[l]&&b!=a&&(b[l]=!1,g.splice(d,1),e.setChkClass(c,n(b,j.id.CHECK,c),b),b.parentTId!=
a.parentTId&&e.repairParentChkClassWithSelf(c,b));g.push(a)}else{g=a.parentTId?a.getParentNode():f.getRoot(c);for(d=0,h=g[i].length;d<h;d++)b=g[i][d],b[l]&&b!=a&&(b[l]=!1,e.setChkClass(c,n(b,j.id.CHECK,c),b))}else if(c.check.radioType==b.TYPE_ALL)for(d=0,h=g.length;d<h;d++)if(a==g[d]){g.splice(d,1);break}}else a[l]&&(!a[i]||a[i].length==0||c.check.chkboxType.Y.indexOf("s")>-1)&&e.setSonNodeCheckBox(c,a,!0),!a[l]&&(!a[i]||a[i].length==0||c.check.chkboxType.N.indexOf("s")>-1)&&e.setSonNodeCheckBox(c,
a,!1),a[l]&&c.check.chkboxType.Y.indexOf("p")>-1&&e.setParentNodeCheckBox(c,a,!0),!a[l]&&c.check.chkboxType.N.indexOf("p")>-1&&e.setParentNodeCheckBox(c,a,!1)},makeChkClass:function(c,a){var b=c.data.key.checked,d=j.checkbox,h=j.radio,i="",i=a.chkDisabled===!0?d.DISABLED:a.halfCheck?d.PART:c.check.chkStyle==h.STYLE?a.check_Child_State<1?d.FULL:d.PART:a[b]?a.check_Child_State===2||a.check_Child_State===-1?d.FULL:d.PART:a.check_Child_State<1?d.FULL:d.PART,b=c.check.chkStyle+"_"+(a[b]?d.TRUE:d.FALSE)+
"_"+i,b=a.check_Focus&&a.chkDisabled!==!0?b+"_"+d.FOCUS:b;return j.className.BUTTON+" "+d.DEFAULT+" "+b},repairAllChk:function(c,a){if(c.check.enable&&c.check.chkStyle===j.checkbox.STYLE)for(var b=c.data.key.checked,d=c.data.key.children,h=f.getRoot(c),i=0,l=h[d].length;i<l;i++){var g=h[d][i];g.nocheck!==!0&&g.chkDisabled!==!0&&(g[b]=a);e.setSonNodeCheckBox(c,g,a)}},repairChkClass:function(c,a){if(a&&(f.makeChkFlag(c,a),a.nocheck!==!0)){var b=n(a,j.id.CHECK,c);e.setChkClass(c,b,a)}},repairParentChkClass:function(c,
a){if(a&&a.parentTId){var b=a.getParentNode();e.repairChkClass(c,b);e.repairParentChkClass(c,b)}},repairParentChkClassWithSelf:function(c,a){if(a){var b=c.data.key.children;a[b]&&a[b].length>0?e.repairParentChkClass(c,a[b][0]):e.repairParentChkClass(c,a)}},repairSonChkDisabled:function(c,a,b,d){if(a){var h=c.data.key.children;if(a.chkDisabled!=b)a.chkDisabled=b;e.repairChkClass(c,a);if(a[h]&&d)for(var i=0,l=a[h].length;i<l;i++)e.repairSonChkDisabled(c,a[h][i],b,d)}},repairParentChkDisabled:function(c,
a,b,d){if(a){if(a.chkDisabled!=b&&d)a.chkDisabled=b;e.repairChkClass(c,a);e.repairParentChkDisabled(c,a.getParentNode(),b,d)}},setChkClass:function(c,a,b){a&&(b.nocheck===!0?a.hide():a.show(),a.attr("class",e.makeChkClass(c,b)))},setParentNodeCheckBox:function(c,a,b,d){var h=c.data.key.children,i=c.data.key.checked,l=n(a,j.id.CHECK,c);d||(d=a);f.makeChkFlag(c,a);a.nocheck!==!0&&a.chkDisabled!==!0&&(a[i]=b,e.setChkClass(c,l,a),c.check.autoCheckTrigger&&a!=d&&c.treeObj.trigger(j.event.CHECK,[null,c.treeId,
a]));if(a.parentTId){l=!0;if(!b)for(var h=a.getParentNode()[h],g=0,k=h.length;g<k;g++)if(h[g].nocheck!==!0&&h[g].chkDisabled!==!0&&h[g][i]||(h[g].nocheck===!0||h[g].chkDisabled===!0)&&h[g].check_Child_State>0){l=!1;break}l&&e.setParentNodeCheckBox(c,a.getParentNode(),b,d)}},setSonNodeCheckBox:function(c,a,b,d){if(a){var h=c.data.key.children,i=c.data.key.checked,l=n(a,j.id.CHECK,c);d||(d=a);var g=!1;if(a[h])for(var k=0,m=a[h].length;k<m&&a.chkDisabled!==!0;k++){var o=a[h][k];e.setSonNodeCheckBox(c,
o,b,d);o.chkDisabled===!0&&(g=!0)}if(a!=f.getRoot(c)&&a.chkDisabled!==!0){g&&a.nocheck!==!0&&f.makeChkFlag(c,a);if(a.nocheck!==!0&&a.chkDisabled!==!0){if(a[i]=b,!g)a.check_Child_State=a[h]&&a[h].length>0?b?2:0:-1}else a.check_Child_State=-1;e.setChkClass(c,l,a);c.check.autoCheckTrigger&&a!=d&&a.nocheck!==!0&&a.chkDisabled!==!0&&c.treeObj.trigger(j.event.CHECK,[null,c.treeId,a])}}}},event:{},data:{getRadioCheckedList:function(c){for(var a=f.getRoot(c).radioCheckedList,b=0,d=a.length;b<d;b++)f.getNodeCache(c,
a[b].tId)||(a.splice(b,1),b--,d--);return a},getCheckStatus:function(c,a){if(!c.check.enable||a.nocheck||a.chkDisabled)return null;var b=c.data.key.checked;return{checked:a[b],half:a.halfCheck?a.halfCheck:c.check.chkStyle==j.radio.STYLE?a.check_Child_State===2:a[b]?a.check_Child_State>-1&&a.check_Child_State<2:a.check_Child_State>0}},getTreeCheckedNodes:function(c,a,b,d){if(!a)return[];for(var h=c.data.key.children,i=c.data.key.checked,e=b&&c.check.chkStyle==j.radio.STYLE&&c.check.radioType==j.radio.TYPE_ALL,
d=!d?[]:d,g=0,k=a.length;g<k;g++){if(a[g].nocheck!==!0&&a[g].chkDisabled!==!0&&a[g][i]==b&&(d.push(a[g]),e))break;f.getTreeCheckedNodes(c,a[g][h],b,d);if(e&&d.length>0)break}return d},getTreeChangeCheckedNodes:function(c,a,b){if(!a)return[];for(var d=c.data.key.children,h=c.data.key.checked,b=!b?[]:b,i=0,e=a.length;i<e;i++)a[i].nocheck!==!0&&a[i].chkDisabled!==!0&&a[i][h]!=a[i].checkedOld&&b.push(a[i]),f.getTreeChangeCheckedNodes(c,a[i][d],b);return b},makeChkFlag:function(c,a){if(a){var b=c.data.key.children,
d=c.data.key.checked,h=-1;if(a[b])for(var i=0,e=a[b].length;i<e;i++){var g=a[b][i],f=-1;if(c.check.chkStyle==j.radio.STYLE)if(f=g.nocheck===!0||g.chkDisabled===!0?g.check_Child_State:g.halfCheck===!0?2:g[d]?2:g.check_Child_State>0?2:0,f==2){h=2;break}else f==0&&(h=0);else if(c.check.chkStyle==j.checkbox.STYLE)if(f=g.nocheck===!0||g.chkDisabled===!0?g.check_Child_State:g.halfCheck===!0?1:g[d]?g.check_Child_State===-1||g.check_Child_State===2?2:1:g.check_Child_State>0?1:0,f===1){h=1;break}else if(f===
2&&h>-1&&i>0&&f!==h){h=1;break}else if(h===2&&f>-1&&f<2){h=1;break}else f>-1&&(h=f)}a.check_Child_State=h}}}});var m=m.fn.zTree,k=m._z.tools,j=m.consts,e=m._z.view,f=m._z.data,n=k.$;f.exSetting(v);f.addInitBind(function(c){c.treeObj.bind(j.event.CHECK,function(a,b,d,h){a.srcEvent=b;k.apply(c.callback.onCheck,[a,d,h])})});f.addInitUnBind(function(c){c.treeObj.unbind(j.event.CHECK)});f.addInitCache(function(){});f.addInitNode(function(c,a,b,d){if(b){a=c.data.key.checked;typeof b[a]=="string"&&(b[a]=
k.eqs(b[a],"true"));b[a]=!!b[a];b.checkedOld=b[a];if(typeof b.nocheck=="string")b.nocheck=k.eqs(b.nocheck,"true");b.nocheck=!!b.nocheck||c.check.nocheckInherit&&d&&!!d.nocheck;if(typeof b.chkDisabled=="string")b.chkDisabled=k.eqs(b.chkDisabled,"true");b.chkDisabled=!!b.chkDisabled||c.check.chkDisabledInherit&&d&&!!d.chkDisabled;if(typeof b.halfCheck=="string")b.halfCheck=k.eqs(b.halfCheck,"true");b.halfCheck=!!b.halfCheck;b.check_Child_State=-1;b.check_Focus=!1;b.getCheckStatus=function(){return f.getCheckStatus(c,
b)};c.check.chkStyle==j.radio.STYLE&&c.check.radioType==j.radio.TYPE_ALL&&b[a]&&f.getRoot(c).radioCheckedList.push(b)}});f.addInitProxy(function(c){var a=c.target,b=f.getSetting(c.data.treeId),d="",h=null,e="",l=null;if(k.eqs(c.type,"mouseover")){if(b.check.enable&&k.eqs(a.tagName,"span")&&a.getAttribute("treeNode"+j.id.CHECK)!==null)d=k.getNodeMainDom(a).id,e="mouseoverCheck"}else if(k.eqs(c.type,"mouseout")){if(b.check.enable&&k.eqs(a.tagName,"span")&&a.getAttribute("treeNode"+j.id.CHECK)!==null)d=
k.getNodeMainDom(a).id,e="mouseoutCheck"}else if(k.eqs(c.type,"click")&&b.check.enable&&k.eqs(a.tagName,"span")&&a.getAttribute("treeNode"+j.id.CHECK)!==null)d=k.getNodeMainDom(a).id,e="checkNode";if(d.length>0)switch(h=f.getNodeCache(b,d),e){case "checkNode":l=p;break;case "mouseoverCheck":l=q;break;case "mouseoutCheck":l=r}return{stop:e==="checkNode",node:h,nodeEventType:e,nodeEventCallback:l,treeEventType:"",treeEventCallback:null}},!0);f.addInitRoot(function(c){f.getRoot(c).radioCheckedList=[]});
f.addBeforeA(function(c,a,b){c.check.enable&&(f.makeChkFlag(c,a),b.push("<span ID='",a.tId,j.id.CHECK,"' class='",e.makeChkClass(c,a),"' treeNode",j.id.CHECK,a.nocheck===!0?" style='display:none;'":"","></span>"))});f.addZTreeTools(function(c,a){a.checkNode=function(a,b,c,f){var g=this.setting.data.key.checked;if(a.chkDisabled!==!0&&(b!==!0&&b!==!1&&(b=!a[g]),f=!!f,(a[g]!==b||c)&&!(f&&k.apply(this.setting.callback.beforeCheck,[this.setting.treeId,a],!0)==!1)&&k.uCanDo(this.setting)&&this.setting.check.enable&&
a.nocheck!==!0))a[g]=b,b=n(a,j.id.CHECK,this.setting),(c||this.setting.check.chkStyle===j.radio.STYLE)&&e.checkNodeRelation(this.setting,a),e.setChkClass(this.setting,b,a),e.repairParentChkClassWithSelf(this.setting,a),f&&this.setting.treeObj.trigger(j.event.CHECK,[null,this.setting.treeId,a])};a.checkAllNodes=function(a){e.repairAllChk(this.setting,!!a)};a.getCheckedNodes=function(a){var b=this.setting.data.key.children;return f.getTreeCheckedNodes(this.setting,f.getRoot(this.setting)[b],a!==!1)};
a.getChangeCheckedNodes=function(){var a=this.setting.data.key.children;return f.getTreeChangeCheckedNodes(this.setting,f.getRoot(this.setting)[a])};a.setChkDisabled=function(a,b,c,f){b=!!b;c=!!c;e.repairSonChkDisabled(this.setting,a,b,!!f);e.repairParentChkDisabled(this.setting,a.getParentNode(),b,c)};var b=a.updateNode;a.updateNode=function(c,f){b&&b.apply(a,arguments);if(c&&this.setting.check.enable&&n(c,this.setting).get(0)&&k.uCanDo(this.setting)){var i=n(c,j.id.CHECK,this.setting);(f==!0||this.setting.check.chkStyle===
j.radio.STYLE)&&e.checkNodeRelation(this.setting,c);e.setChkClass(this.setting,i,c);e.repairParentChkClassWithSelf(this.setting,c)}}});var s=e.createNodes;e.createNodes=function(c,a,b,d){s&&s.apply(e,arguments);b&&e.repairParentChkClassWithSelf(c,d)};var t=e.removeNode;e.removeNode=function(c,a){var b=a.getParentNode();t&&t.apply(e,arguments);a&&b&&(e.repairChkClass(c,b),e.repairParentChkClass(c,b))};var u=e.appendNodes;e.appendNodes=function(c,a,b,d,h,i){var j="";u&&(j=u.apply(e,arguments));d&&f.makeChkFlag(c,
d);return j}})(jQuery);
/*
* JQuery zTree exedit v3.5.17-beta.2
* http://zTree.me/
*
* Copyright (c) 2010 Hunter.z
*
* Licensed same as jquery - MIT License
* http://www.opensource.org/licenses/mit-license.php
*
* email: hunter.z@263.net
* Date: 2014-05-08
*/
(function(w){var I={event:{DRAG:"ztree_drag",DROP:"ztree_drop",RENAME:"ztree_rename",DRAGMOVE:"ztree_dragmove"},id:{EDIT:"_edit",INPUT:"_input",REMOVE:"_remove"},move:{TYPE_INNER:"inner",TYPE_PREV:"prev",TYPE_NEXT:"next"},node:{CURSELECTED_EDIT:"curSelectedNode_Edit",TMPTARGET_TREE:"tmpTargetzTree",TMPTARGET_NODE:"tmpTargetNode"}},x={onHoverOverNode:function(b,a){var c=m.getSetting(b.data.treeId),d=m.getRoot(c);if(d.curHoverNode!=a)x.onHoverOutNode(b);d.curHoverNode=a;f.addHoverDom(c,a)},onHoverOutNode:function(b){var b=
m.getSetting(b.data.treeId),a=m.getRoot(b);if(a.curHoverNode&&!m.isSelectedNode(b,a.curHoverNode))f.removeTreeDom(b,a.curHoverNode),a.curHoverNode=null},onMousedownNode:function(b,a){function c(b){if(C.dragFlag==0&&Math.abs(N-b.clientX)<e.edit.drag.minMoveSize&&Math.abs(O-b.clientY)<e.edit.drag.minMoveSize)return!0;var a,c,n,k,i;i=e.data.key.children;M.css("cursor","pointer");if(C.dragFlag==0){if(g.apply(e.callback.beforeDrag,[e.treeId,l],!0)==!1)return r(b),!0;for(a=0,c=l.length;a<c;a++){if(a==0)C.dragNodeShowBefore=
[];n=l[a];n.isParent&&n.open?(f.expandCollapseNode(e,n,!n.open),C.dragNodeShowBefore[n.tId]=!0):C.dragNodeShowBefore[n.tId]=!1}C.dragFlag=1;t.showHoverDom=!1;g.showIfameMask(e,!0);n=!0;k=-1;if(l.length>1){var j=l[0].parentTId?l[0].getParentNode()[i]:m.getNodes(e);i=[];for(a=0,c=j.length;a<c;a++)if(C.dragNodeShowBefore[j[a].tId]!==void 0&&(n&&k>-1&&k+1!==a&&(n=!1),i.push(j[a]),k=a),l.length===i.length){l=i;break}}n&&(H=l[0].getPreNode(),R=l[l.length-1].getNextNode());D=o("<ul class='zTreeDragUL'></ul>",
e);for(a=0,c=l.length;a<c;a++)n=l[a],n.editNameFlag=!1,f.selectNode(e,n,a>0),f.removeTreeDom(e,n),a>e.edit.drag.maxShowNodeNum-1||(k=o("<li id='"+n.tId+"_tmp'></li>",e),k.append(o(n,d.id.A,e).clone()),k.css("padding","0"),k.children("#"+n.tId+d.id.A).removeClass(d.node.CURSELECTED),D.append(k),a==e.edit.drag.maxShowNodeNum-1&&(k=o("<li id='"+n.tId+"_moretmp'><a> ... </a></li>",e),D.append(k)));D.attr("id",l[0].tId+d.id.UL+"_tmp");D.addClass(e.treeObj.attr("class"));D.appendTo(M);B=o("<span class='tmpzTreeMove_arrow'></span>",
e);B.attr("id","zTreeMove_arrow_tmp");B.appendTo(M);e.treeObj.trigger(d.event.DRAG,[b,e.treeId,l])}if(C.dragFlag==1){s&&B.attr("id")==b.target.id&&u&&b.clientX+F.scrollLeft()+2>w("#"+u+d.id.A,s).offset().left?(n=w("#"+u+d.id.A,s),b.target=n.length>0?n.get(0):b.target):s&&(s.removeClass(d.node.TMPTARGET_TREE),u&&w("#"+u+d.id.A,s).removeClass(d.node.TMPTARGET_NODE+"_"+d.move.TYPE_PREV).removeClass(d.node.TMPTARGET_NODE+"_"+I.move.TYPE_NEXT).removeClass(d.node.TMPTARGET_NODE+"_"+I.move.TYPE_INNER));
u=s=null;J=!1;h=e;n=m.getSettings();for(var y in n)if(n[y].treeId&&n[y].edit.enable&&n[y].treeId!=e.treeId&&(b.target.id==n[y].treeId||w(b.target).parents("#"+n[y].treeId).length>0))J=!0,h=n[y];y=F.scrollTop();k=F.scrollLeft();i=h.treeObj.offset();a=h.treeObj.get(0).scrollHeight;n=h.treeObj.get(0).scrollWidth;c=b.clientY+y-i.top;var p=h.treeObj.height()+i.top-b.clientY-y,q=b.clientX+k-i.left,x=h.treeObj.width()+i.left-b.clientX-k;i=c<e.edit.drag.borderMax&&c>e.edit.drag.borderMin;var j=p<e.edit.drag.borderMax&&
p>e.edit.drag.borderMin,K=q<e.edit.drag.borderMax&&q>e.edit.drag.borderMin,G=x<e.edit.drag.borderMax&&x>e.edit.drag.borderMin,p=c>e.edit.drag.borderMin&&p>e.edit.drag.borderMin&&q>e.edit.drag.borderMin&&x>e.edit.drag.borderMin,q=i&&h.treeObj.scrollTop()<=0,x=j&&h.treeObj.scrollTop()+h.treeObj.height()+10>=a,P=K&&h.treeObj.scrollLeft()<=0,Q=G&&h.treeObj.scrollLeft()+h.treeObj.width()+10>=n;if(b.target&&g.isChildOrSelf(b.target,h.treeId)){for(var E=b.target;E&&E.tagName&&!g.eqs(E.tagName,"li")&&E.id!=
h.treeId;)E=E.parentNode;var S=!0;for(a=0,c=l.length;a<c;a++)if(n=l[a],E.id===n.tId){S=!1;break}else if(o(n,e).find("#"+E.id).length>0){S=!1;break}if(S&&b.target&&g.isChildOrSelf(b.target,E.id+d.id.A))s=w(E),u=E.id}n=l[0];if(p&&g.isChildOrSelf(b.target,h.treeId)){if(!s&&(b.target.id==h.treeId||q||x||P||Q)&&(J||!J&&n.parentTId))s=h.treeObj;i?h.treeObj.scrollTop(h.treeObj.scrollTop()-10):j&&h.treeObj.scrollTop(h.treeObj.scrollTop()+10);K?h.treeObj.scrollLeft(h.treeObj.scrollLeft()-10):G&&h.treeObj.scrollLeft(h.treeObj.scrollLeft()+
10);s&&s!=h.treeObj&&s.offset().left<h.treeObj.offset().left&&h.treeObj.scrollLeft(h.treeObj.scrollLeft()+s.offset().left-h.treeObj.offset().left)}D.css({top:b.clientY+y+3+"px",left:b.clientX+k+3+"px"});i=a=0;if(s&&s.attr("id")!=h.treeId){var z=u==null?null:m.getNodeCache(h,u);c=(b.ctrlKey||b.metaKey)&&e.edit.drag.isMove&&e.edit.drag.isCopy||!e.edit.drag.isMove&&e.edit.drag.isCopy;a=!!(H&&u===H.tId);i=!!(R&&u===R.tId);k=n.parentTId&&n.parentTId==u;n=(c||!i)&&g.apply(h.edit.drag.prev,[h.treeId,l,z],
!!h.edit.drag.prev);a=(c||!a)&&g.apply(h.edit.drag.next,[h.treeId,l,z],!!h.edit.drag.next);G=(c||!k)&&!(h.data.keep.leaf&&!z.isParent)&&g.apply(h.edit.drag.inner,[h.treeId,l,z],!!h.edit.drag.inner);if(!n&&!a&&!G){if(s=null,u="",v=d.move.TYPE_INNER,B.css({display:"none"}),window.zTreeMoveTimer)clearTimeout(window.zTreeMoveTimer),window.zTreeMoveTargetNodeTId=null}else{c=w("#"+u+d.id.A,s);i=z.isLastNode?null:w("#"+z.getNextNode().tId+d.id.A,s.next());j=c.offset().top;k=c.offset().left;K=n?G?0.25:a?
0.5:1:-1;G=a?G?0.75:n?0.5:0:-1;y=(b.clientY+y-j)/c.height();(K==1||y<=K&&y>=-0.2)&&n?(a=1-B.width(),i=j-B.height()/2,v=d.move.TYPE_PREV):(G==0||y>=G&&y<=1.2)&&a?(a=1-B.width(),i=i==null||z.isParent&&z.open?j+c.height()-B.height()/2:i.offset().top-B.height()/2,v=d.move.TYPE_NEXT):(a=5-B.width(),i=j,v=d.move.TYPE_INNER);B.css({display:"block",top:i+"px",left:k+a+"px"});c.addClass(d.node.TMPTARGET_NODE+"_"+v);if(T!=u||U!=v)L=(new Date).getTime();if(z&&z.isParent&&v==d.move.TYPE_INNER&&(y=!0,window.zTreeMoveTimer&&
window.zTreeMoveTargetNodeTId!==z.tId?(clearTimeout(window.zTreeMoveTimer),window.zTreeMoveTargetNodeTId=null):window.zTreeMoveTimer&&window.zTreeMoveTargetNodeTId===z.tId&&(y=!1),y))window.zTreeMoveTimer=setTimeout(function(){v==d.move.TYPE_INNER&&z&&z.isParent&&!z.open&&(new Date).getTime()-L>h.edit.drag.autoOpenTime&&g.apply(h.callback.beforeDragOpen,[h.treeId,z],!0)&&(f.switchNode(h,z),h.edit.drag.autoExpandTrigger&&h.treeObj.trigger(d.event.EXPAND,[h.treeId,z]))},h.edit.drag.autoOpenTime+50),
window.zTreeMoveTargetNodeTId=z.tId}}else if(v=d.move.TYPE_INNER,s&&g.apply(h.edit.drag.inner,[h.treeId,l,null],!!h.edit.drag.inner)?s.addClass(d.node.TMPTARGET_TREE):s=null,B.css({display:"none"}),window.zTreeMoveTimer)clearTimeout(window.zTreeMoveTimer),window.zTreeMoveTargetNodeTId=null;T=u;U=v;e.treeObj.trigger(d.event.DRAGMOVE,[b,e.treeId,l])}return!1}function r(b){if(window.zTreeMoveTimer)clearTimeout(window.zTreeMoveTimer),window.zTreeMoveTargetNodeTId=null;U=T=null;F.unbind("mousemove",c);
F.unbind("mouseup",r);F.unbind("selectstart",k);M.css("cursor","auto");s&&(s.removeClass(d.node.TMPTARGET_TREE),u&&w("#"+u+d.id.A,s).removeClass(d.node.TMPTARGET_NODE+"_"+d.move.TYPE_PREV).removeClass(d.node.TMPTARGET_NODE+"_"+I.move.TYPE_NEXT).removeClass(d.node.TMPTARGET_NODE+"_"+I.move.TYPE_INNER));g.showIfameMask(e,!1);t.showHoverDom=!0;if(C.dragFlag!=0){C.dragFlag=0;var a,i,j;for(a=0,i=l.length;a<i;a++)j=l[a],j.isParent&&C.dragNodeShowBefore[j.tId]&&!j.open&&(f.expandCollapseNode(e,j,!j.open),
delete C.dragNodeShowBefore[j.tId]);D&&D.remove();B&&B.remove();var p=(b.ctrlKey||b.metaKey)&&e.edit.drag.isMove&&e.edit.drag.isCopy||!e.edit.drag.isMove&&e.edit.drag.isCopy;!p&&s&&u&&l[0].parentTId&&u==l[0].parentTId&&v==d.move.TYPE_INNER&&(s=null);if(s){var q=u==null?null:m.getNodeCache(h,u);if(g.apply(e.callback.beforeDrop,[h.treeId,l,q,v,p],!0)==!1)f.selectNodes(x,l);else{var A=p?g.clone(l):l;a=function(){if(J){if(!p)for(var a=0,c=l.length;a<c;a++)f.removeNode(e,l[a]);if(v==d.move.TYPE_INNER)f.addNodes(h,
q,A);else if(f.addNodes(h,q.getParentNode(),A),v==d.move.TYPE_PREV)for(a=0,c=A.length;a<c;a++)f.moveNode(h,q,A[a],v,!1);else for(a=-1,c=A.length-1;a<c;c--)f.moveNode(h,q,A[c],v,!1)}else if(p&&v==d.move.TYPE_INNER)f.addNodes(h,q,A);else if(p&&f.addNodes(h,q.getParentNode(),A),v!=d.move.TYPE_NEXT)for(a=0,c=A.length;a<c;a++)f.moveNode(h,q,A[a],v,!1);else for(a=-1,c=A.length-1;a<c;c--)f.moveNode(h,q,A[c],v,!1);f.selectNodes(h,A);o(A[0],e).focus().blur();e.treeObj.trigger(d.event.DROP,[b,h.treeId,A,q,
v,p])};v==d.move.TYPE_INNER&&g.canAsync(h,q)?f.asyncNode(h,q,!1,a):a()}}else f.selectNodes(x,l),e.treeObj.trigger(d.event.DROP,[b,e.treeId,l,null,null,null])}}function k(){return!1}var i,j,e=m.getSetting(b.data.treeId),C=m.getRoot(e),t=m.getRoots();if(b.button==2||!e.edit.enable||!e.edit.drag.isCopy&&!e.edit.drag.isMove)return!0;var p=b.target,q=m.getRoot(e).curSelectedList,l=[];if(m.isSelectedNode(e,a))for(i=0,j=q.length;i<j;i++){if(q[i].editNameFlag&&g.eqs(p.tagName,"input")&&p.getAttribute("treeNode"+
d.id.INPUT)!==null)return!0;l.push(q[i]);if(l[0].parentTId!==q[i].parentTId){l=[a];break}}else l=[a];f.editNodeBlur=!0;f.cancelCurEditNode(e);var F=w(e.treeObj.get(0).ownerDocument),M=w(e.treeObj.get(0).ownerDocument.body),D,B,s,J=!1,h=e,x=e,H,R,T=null,U=null,u=null,v=d.move.TYPE_INNER,N=b.clientX,O=b.clientY,L=(new Date).getTime();g.uCanDo(e)&&F.bind("mousemove",c);F.bind("mouseup",r);F.bind("selectstart",k);b.preventDefault&&b.preventDefault();return!0}};w.extend(!0,w.fn.zTree.consts,I);w.extend(!0,
w.fn.zTree._z,{tools:{getAbs:function(b){b=b.getBoundingClientRect();return[b.left+(document.body.scrollLeft+document.documentElement.scrollLeft),b.top+(document.body.scrollTop+document.documentElement.scrollTop)]},inputFocus:function(b){b.get(0)&&(b.focus(),g.setCursorPosition(b.get(0),b.val().length))},inputSelect:function(b){b.get(0)&&(b.focus(),b.select())},setCursorPosition:function(b,a){if(b.setSelectionRange)b.focus(),b.setSelectionRange(a,a);else if(b.createTextRange){var c=b.createTextRange();
c.collapse(!0);c.moveEnd("character",a);c.moveStart("character",a);c.select()}},showIfameMask:function(b,a){for(var c=m.getRoot(b);c.dragMaskList.length>0;)c.dragMaskList[0].remove(),c.dragMaskList.shift();if(a)for(var d=o("iframe",b),f=0,i=d.length;f<i;f++){var j=d.get(f),e=g.getAbs(j),j=o("<div id='zTreeMask_"+f+"' class='zTreeMask' style='top:"+e[1]+"px; left:"+e[0]+"px; width:"+j.offsetWidth+"px; height:"+j.offsetHeight+"px;'></div>",b);j.appendTo(o("body",b));c.dragMaskList.push(j)}}},view:{addEditBtn:function(b,
a){if(!(a.editNameFlag||o(a,d.id.EDIT,b).length>0)&&g.apply(b.edit.showRenameBtn,[b.treeId,a],b.edit.showRenameBtn)){var c=o(a,d.id.A,b),r="<span class='"+d.className.BUTTON+" edit' id='"+a.tId+d.id.EDIT+"' title='"+g.apply(b.edit.renameTitle,[b.treeId,a],b.edit.renameTitle)+"' treeNode"+d.id.EDIT+" style='display:none;'></span>";c.append(r);o(a,d.id.EDIT,b).bind("click",function(){if(!g.uCanDo(b)||g.apply(b.callback.beforeEditName,[b.treeId,a],!0)==!1)return!1;f.editNode(b,a);return!1}).show()}},
addRemoveBtn:function(b,a){if(!(a.editNameFlag||o(a,d.id.REMOVE,b).length>0)&&g.apply(b.edit.showRemoveBtn,[b.treeId,a],b.edit.showRemoveBtn)){var c=o(a,d.id.A,b),r="<span class='"+d.className.BUTTON+" remove' id='"+a.tId+d.id.REMOVE+"' title='"+g.apply(b.edit.removeTitle,[b.treeId,a],b.edit.removeTitle)+"' treeNode"+d.id.REMOVE+" style='display:none;'></span>";c.append(r);o(a,d.id.REMOVE,b).bind("click",function(){if(!g.uCanDo(b)||g.apply(b.callback.beforeRemove,[b.treeId,a],!0)==!1)return!1;f.removeNode(b,
a);b.treeObj.trigger(d.event.REMOVE,[b.treeId,a]);return!1}).bind("mousedown",function(){return!0}).show()}},addHoverDom:function(b,a){if(m.getRoots().showHoverDom)a.isHover=!0,b.edit.enable&&(f.addEditBtn(b,a),f.addRemoveBtn(b,a)),g.apply(b.view.addHoverDom,[b.treeId,a])},cancelCurEditNode:function(b,a,c){var r=m.getRoot(b),k=b.data.key.name,i=r.curEditNode;if(i){var j=r.curEditInput,a=a?a:c?i[k]:j.val();if(g.apply(b.callback.beforeRename,[b.treeId,i,a,c],!0)===!1)return!1;else i[k]=a,b.treeObj.trigger(d.event.RENAME,
[b.treeId,i,c]);o(i,d.id.A,b).removeClass(d.node.CURSELECTED_EDIT);j.unbind();f.setNodeName(b,i);i.editNameFlag=!1;r.curEditNode=null;r.curEditInput=null;f.selectNode(b,i,!1)}return r.noSelection=!0},editNode:function(b,a){var c=m.getRoot(b);f.editNodeBlur=!1;if(m.isSelectedNode(b,a)&&c.curEditNode==a&&a.editNameFlag)setTimeout(function(){g.inputFocus(c.curEditInput)},0);else{var r=b.data.key.name;a.editNameFlag=!0;f.removeTreeDom(b,a);f.cancelCurEditNode(b);f.selectNode(b,a,!1);o(a,d.id.SPAN,b).html("<input type=text class='rename' id='"+
a.tId+d.id.INPUT+"' treeNode"+d.id.INPUT+" >");var k=o(a,d.id.INPUT,b);k.attr("value",a[r]);b.edit.editNameSelectAll?g.inputSelect(k):g.inputFocus(k);k.bind("blur",function(){f.editNodeBlur||f.cancelCurEditNode(b)}).bind("keydown",function(a){a.keyCode=="13"?(f.editNodeBlur=!0,f.cancelCurEditNode(b)):a.keyCode=="27"&&f.cancelCurEditNode(b,null,!0)}).bind("click",function(){return!1}).bind("dblclick",function(){return!1});o(a,d.id.A,b).addClass(d.node.CURSELECTED_EDIT);c.curEditInput=k;c.noSelection=
!1;c.curEditNode=a}},moveNode:function(b,a,c,r,k,i){var j=m.getRoot(b),e=b.data.key.children;if(a!=c&&(!b.data.keep.leaf||!a||a.isParent||r!=d.move.TYPE_INNER)){var g=c.parentTId?c.getParentNode():j,t=a===null||a==j;t&&a===null&&(a=j);if(t)r=d.move.TYPE_INNER;j=a.parentTId?a.getParentNode():j;if(r!=d.move.TYPE_PREV&&r!=d.move.TYPE_NEXT)r=d.move.TYPE_INNER;if(r==d.move.TYPE_INNER)if(t)c.parentTId=null;else{if(!a.isParent)a.isParent=!0,a.open=!!a.open,f.setNodeLineIcos(b,a);c.parentTId=a.tId}var p;
t?p=t=b.treeObj:(!i&&r==d.move.TYPE_INNER?f.expandCollapseNode(b,a,!0,!1):i||f.expandCollapseNode(b,a.getParentNode(),!0,!1),t=o(a,b),p=o(a,d.id.UL,b),t.get(0)&&!p.get(0)&&(p=[],f.makeUlHtml(b,a,p,""),t.append(p.join(""))),p=o(a,d.id.UL,b));var q=o(c,b);q.get(0)?t.get(0)||q.remove():q=f.appendNodes(b,c.level,[c],null,!1,!0).join("");p.get(0)&&r==d.move.TYPE_INNER?p.append(q):t.get(0)&&r==d.move.TYPE_PREV?t.before(q):t.get(0)&&r==d.move.TYPE_NEXT&&t.after(q);var l=-1,w=0,x=null,t=null,D=c.level;if(c.isFirstNode){if(l=
0,g[e].length>1)x=g[e][1],x.isFirstNode=!0}else if(c.isLastNode)l=g[e].length-1,x=g[e][l-1],x.isLastNode=!0;else for(p=0,q=g[e].length;p<q;p++)if(g[e][p].tId==c.tId){l=p;break}l>=0&&g[e].splice(l,1);if(r!=d.move.TYPE_INNER)for(p=0,q=j[e].length;p<q;p++)j[e][p].tId==a.tId&&(w=p);if(r==d.move.TYPE_INNER){a[e]||(a[e]=[]);if(a[e].length>0)t=a[e][a[e].length-1],t.isLastNode=!1;a[e].splice(a[e].length,0,c);c.isLastNode=!0;c.isFirstNode=a[e].length==1}else a.isFirstNode&&r==d.move.TYPE_PREV?(j[e].splice(w,
0,c),t=a,t.isFirstNode=!1,c.parentTId=a.parentTId,c.isFirstNode=!0,c.isLastNode=!1):a.isLastNode&&r==d.move.TYPE_NEXT?(j[e].splice(w+1,0,c),t=a,t.isLastNode=!1,c.parentTId=a.parentTId,c.isFirstNode=!1,c.isLastNode=!0):(r==d.move.TYPE_PREV?j[e].splice(w,0,c):j[e].splice(w+1,0,c),c.parentTId=a.parentTId,c.isFirstNode=!1,c.isLastNode=!1);m.fixPIdKeyValue(b,c);m.setSonNodeLevel(b,c.getParentNode(),c);f.setNodeLineIcos(b,c);f.repairNodeLevelClass(b,c,D);!b.data.keep.parent&&g[e].length<1?(g.isParent=!1,
g.open=!1,a=o(g,d.id.UL,b),r=o(g,d.id.SWITCH,b),e=o(g,d.id.ICON,b),f.replaceSwitchClass(g,r,d.folder.DOCU),f.replaceIcoClass(g,e,d.folder.DOCU),a.css("display","none")):x&&f.setNodeLineIcos(b,x);t&&f.setNodeLineIcos(b,t);b.check&&b.check.enable&&f.repairChkClass&&(f.repairChkClass(b,g),f.repairParentChkClassWithSelf(b,g),g!=c.parent&&f.repairParentChkClassWithSelf(b,c));i||f.expandCollapseParentNode(b,c.getParentNode(),!0,k)}},removeEditBtn:function(b,a){o(a,d.id.EDIT,b).unbind().remove()},removeRemoveBtn:function(b,
a){o(a,d.id.REMOVE,b).unbind().remove()},removeTreeDom:function(b,a){a.isHover=!1;f.removeEditBtn(b,a);f.removeRemoveBtn(b,a);g.apply(b.view.removeHoverDom,[b.treeId,a])},repairNodeLevelClass:function(b,a,c){if(c!==a.level){var f=o(a,b),g=o(a,d.id.A,b),b=o(a,d.id.UL,b),c=d.className.LEVEL+c,a=d.className.LEVEL+a.level;f.removeClass(c);f.addClass(a);g.removeClass(c);g.addClass(a);b.removeClass(c);b.addClass(a)}},selectNodes:function(b,a){for(var c=0,d=a.length;c<d;c++)f.selectNode(b,a[c],c>0)}},event:{},
data:{setSonNodeLevel:function(b,a,c){if(c){var d=b.data.key.children;c.level=a?a.level+1:0;if(c[d])for(var a=0,f=c[d].length;a<f;a++)c[d][a]&&m.setSonNodeLevel(b,c,c[d][a])}}}});var H=w.fn.zTree,g=H._z.tools,d=H.consts,f=H._z.view,m=H._z.data,o=g.$;m.exSetting({edit:{enable:!1,editNameSelectAll:!1,showRemoveBtn:!0,showRenameBtn:!0,removeTitle:"remove",renameTitle:"rename",drag:{autoExpandTrigger:!1,isCopy:!0,isMove:!0,prev:!0,next:!0,inner:!0,minMoveSize:5,borderMax:10,borderMin:-5,maxShowNodeNum:5,
autoOpenTime:500}},view:{addHoverDom:null,removeHoverDom:null},callback:{beforeDrag:null,beforeDragOpen:null,beforeDrop:null,beforeEditName:null,beforeRename:null,onDrag:null,onDragMove:null,onDrop:null,onRename:null}});m.addInitBind(function(b){var a=b.treeObj,c=d.event;a.bind(c.RENAME,function(a,c,d,f){g.apply(b.callback.onRename,[a,c,d,f])});a.bind(c.DRAG,function(a,c,d,f){g.apply(b.callback.onDrag,[c,d,f])});a.bind(c.DRAGMOVE,function(a,c,d,f){g.apply(b.callback.onDragMove,[c,d,f])});a.bind(c.DROP,
function(a,c,d,f,e,m,o){g.apply(b.callback.onDrop,[c,d,f,e,m,o])})});m.addInitUnBind(function(b){var b=b.treeObj,a=d.event;b.unbind(a.RENAME);b.unbind(a.DRAG);b.unbind(a.DRAGMOVE);b.unbind(a.DROP)});m.addInitCache(function(){});m.addInitNode(function(b,a,c){if(c)c.isHover=!1,c.editNameFlag=!1});m.addInitProxy(function(b){var a=b.target,c=m.getSetting(b.data.treeId),f=b.relatedTarget,k="",i=null,j="",e=null,o=null;if(g.eqs(b.type,"mouseover")){if(o=g.getMDom(c,a,[{tagName:"a",attrName:"treeNode"+d.id.A}]))k=
g.getNodeMainDom(o).id,j="hoverOverNode"}else if(g.eqs(b.type,"mouseout"))o=g.getMDom(c,f,[{tagName:"a",attrName:"treeNode"+d.id.A}]),o||(k="remove",j="hoverOutNode");else if(g.eqs(b.type,"mousedown")&&(o=g.getMDom(c,a,[{tagName:"a",attrName:"treeNode"+d.id.A}])))k=g.getNodeMainDom(o).id,j="mousedownNode";if(k.length>0)switch(i=m.getNodeCache(c,k),j){case "mousedownNode":e=x.onMousedownNode;break;case "hoverOverNode":e=x.onHoverOverNode;break;case "hoverOutNode":e=x.onHoverOutNode}return{stop:!1,
node:i,nodeEventType:j,nodeEventCallback:e,treeEventType:"",treeEventCallback:null}});m.addInitRoot(function(b){var b=m.getRoot(b),a=m.getRoots();b.curEditNode=null;b.curEditInput=null;b.curHoverNode=null;b.dragFlag=0;b.dragNodeShowBefore=[];b.dragMaskList=[];a.showHoverDom=!0});m.addZTreeTools(function(b,a){a.cancelEditName=function(a){m.getRoot(this.setting).curEditNode&&f.cancelCurEditNode(this.setting,a?a:null,!0)};a.copyNode=function(a,b,k,i){if(!b)return null;if(a&&!a.isParent&&this.setting.data.keep.leaf&&
k===d.move.TYPE_INNER)return null;var j=this,e=g.clone(b);if(!a)a=null,k=d.move.TYPE_INNER;k==d.move.TYPE_INNER?(b=function(){f.addNodes(j.setting,a,[e],i)},g.canAsync(this.setting,a)?f.asyncNode(this.setting,a,i,b):b()):(f.addNodes(this.setting,a.parentNode,[e],i),f.moveNode(this.setting,a,e,k,!1,i));return e};a.editName=function(a){a&&a.tId&&a===m.getNodeCache(this.setting,a.tId)&&(a.parentTId&&f.expandCollapseParentNode(this.setting,a.getParentNode(),!0),f.editNode(this.setting,a))};a.moveNode=
function(a,b,k,i){function j(){f.moveNode(e.setting,a,b,k,!1,i)}if(!b)return b;if(a&&!a.isParent&&this.setting.data.keep.leaf&&k===d.move.TYPE_INNER)return null;else if(a&&(b.parentTId==a.tId&&k==d.move.TYPE_INNER||o(b,this.setting).find("#"+a.tId).length>0))return null;else a||(a=null);var e=this;g.canAsync(this.setting,a)&&k===d.move.TYPE_INNER?f.asyncNode(this.setting,a,i,j):j();return b};a.setEditable=function(a){this.setting.edit.enable=a;return this.refresh()}});var N=f.cancelPreSelectedNode;
f.cancelPreSelectedNode=function(b,a){for(var c=m.getRoot(b).curSelectedList,d=0,g=c.length;d<g;d++)if(!a||a===c[d])if(f.removeTreeDom(b,c[d]),a)break;N&&N.apply(f,arguments)};var O=f.createNodes;f.createNodes=function(b,a,c,d){O&&O.apply(f,arguments);c&&f.repairParentChkClassWithSelf&&f.repairParentChkClassWithSelf(b,d)};var V=f.makeNodeUrl;f.makeNodeUrl=function(b,a){return b.edit.enable?null:V.apply(f,arguments)};var L=f.removeNode;f.removeNode=function(b,a){var c=m.getRoot(b);if(c.curEditNode===
a)c.curEditNode=null;L&&L.apply(f,arguments)};var P=f.selectNode;f.selectNode=function(b,a,c){var d=m.getRoot(b);if(m.isSelectedNode(b,a)&&d.curEditNode==a&&a.editNameFlag)return!1;P&&P.apply(f,arguments);f.addHoverDom(b,a);return!0};var Q=g.uCanDo;g.uCanDo=function(b,a){var c=m.getRoot(b);if(a&&(g.eqs(a.type,"mouseover")||g.eqs(a.type,"mouseout")||g.eqs(a.type,"mousedown")||g.eqs(a.type,"mouseup")))return!0;if(c.curEditNode)f.editNodeBlur=!1,c.curEditInput.focus();return!c.curEditNode&&(Q?Q.apply(f,
arguments):!0)}})(jQuery);