Notebook.curNotebookId = ""; Notebook.cache = {}; // notebookId => {}; Notebook.notebooks = []; // 按次序 //
  • CSS
  • Notebook.notebookNavForListNote = ""; // html 为了note list上面和新建时的ul Notebook.notebookNavForNewNote = ""; // html 为了note list上面和新建时的ul // 设置缓存 Notebook.setCache = function(notebook) { var notebookId = notebook.NotebookId; if(!notebookId) { return; } if(!Notebook.cache[notebookId]) { Notebook.cache[notebookId] = {}; } $.extend(Notebook.cache[notebookId], notebook); } Notebook.getCurNotebookId = function() { return Notebook.curNotebookId; }; // 笔记本的笔记数量更新 Notebook._updateNotebookNumberNotes = function(notebookId, n) { var self = this; var notebook = self.getNotebook(notebookId); if(!notebook) { return; } notebook.NumberNotes += n; if(notebook.NumberNotes < 0) { notebook.NumberNotes = 0; } $("#numberNotes_" + notebookId).html(notebook.NumberNotes); }; // addNote, copyNote, moveNote Notebook.incrNotebookNumberNotes = function(notebookId) { var self = this; self._updateNotebookNumberNotes(notebookId, 1); }; // moteNote, deleteNote Notebook.minusNotebookNumberNotes = function(notebookId) { var self = this; self._updateNotebookNumberNotes(notebookId, -1); }; // 得到notebook标题, 给note显示其notebook标题用 // called by Note Notebook.getNotebook = function(notebookId) { return Notebook.cache[notebookId]; } // called by Note Notebook.getNotebookTitle = function(notebookId) { var notebook = Notebook.cache[notebookId]; if(notebook) { return notebook.Title; } else { return "未知"; } } /** * 我的notebooks */ 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($('' + (treeNode.NumberNotes || 0) + '')); icoObj.after($('')); } } else { if(!Share.isDefaultNotebookId(treeNode.NotebookId)) { icoObj.after($('')); } } if (treeNode.level > 1) { var spaceStr = ""; switchObj.before(spaceStr); } } // 拖拽 function beforeDrag(treeId, treeNodes) { for (var i=0,l=treeNodes.length; i
    ?
    M
    ', classes, notebook.NotebookId, notebook.Title, notebook.NotebookId); if(!isEmpty(notebook.Subs)) { eachForNew += ""; } eachForNew += ''; 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); 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); } /** * 我的共享notebooks
    */ // TODO 层级 Notebook.renderShareNotebooks = function(sharedUserInfos, shareNotebooks) { if(isEmpty(sharedUserInfos)) { return; } if(!shareNotebooks || typeof shareNotebooks != "object" || shareNotebooks.length < 0) { return; } var $shareNotebooks = $("#shareNotebooks"); var user2ShareNotebooks = {}; for(var i in shareNotebooks) { var userNotebooks = shareNotebooks[i]; user2ShareNotebooks[userNotebooks.UserId] = userNotebooks; } for(var i in sharedUserInfos) { var userInfo = sharedUserInfos[i]; var userNotebooks = user2ShareNotebooks[userInfo.UserId] || {ShareNotebooks:[]}; userNotebooks.ShareNotebooks = [{NotebookId: "-2", Title: "默认共享"}].concat(userNotebooks.ShareNotebooks) var username = userInfo.Username || userInfo.Email; var header = tt('
    ', username, username); var body = '
      '; for(var j in userNotebooks.ShareNotebooks) { var notebook = userNotebooks.ShareNotebooks[j]; body += tt('
    • ?
    • ', notebook.NotebookId, notebook.Title) } body += "
    "; $shareNotebooks.append(header + body + "
    ") } } // 左侧导航, 选中某个notebook Notebook.selectNotebook = function(target) { $(".notebook-item").removeClass("curSelectedNode"); $(target).addClass("curSelectedNode"); }; // 新建笔记导航 Notebook.changeNotebookNavForNewNote = function(notebookId, title) { // 没有notebookId, 则选择第1个notebook // 第一个是全部笔记 if(!notebookId) { var notebook = Notebook.notebooks[0]; notebookId = notebook.NotebookId; title = notebook.Title; } if(!title) { var notebook = Notebook.cache[0]; title = notebook.Title; } if(!Notebook.isAllNotebookId(notebookId) && !Notebook.isTrashNotebookId(notebookId)) { $("#curNotebookForNewNote").html(title).attr("notebookId", notebookId); } else if(!$("#curNotebookForNewNote").attr("notebookId")) { // 但又没有一个笔记, 默认选第一个吧 // 这里很可能会死循环, 万一用户没有其它笔记呢? // 服务端肯定要在新建一个用户时给他创建一个默认笔记本的 if(Notebook.notebooks.length > 2) { var notebook = Notebook.notebooks[1]; notebookId = notebook.NotebookId; title = notebook.Title; Notebook.changeNotebookNavForNewNote(notebookId, title); } } } // 改变导航, 两处 // 单击左侧, 单击新建下拉时调用 // 1 选中左侧导航, // 2 notelist上面 > // 3 新建笔记 - js > // 转成我的nav <-> 共享 Notebook.toggleToMyNav = function(userId, notebookId) { $("#sharedNotebookNavForListNav").hide(); $("#myNotebookNavForListNav").show(); $("#newMyNote").show(); $("#newSharedNote").hide(); // 搜索tag隐藏 $("#tagSearch").hide(); } Notebook.changeNotebookNav = function(notebookId) { Notebook.toggleToMyNav(); // 1 Notebook.selectNotebook($(tt('#notebookList [notebookId="?"]', notebookId))); var notebook = Notebook.cache[notebookId]; if(!notebook) { return; } // 2 $("#curNotebookForListNote").html(notebook.Title); // 3 Notebook.changeNotebookNavForNewNote(notebookId, notebook.Title); } Notebook.isAllNotebookId = function(notebookId) { return notebookId == Notebook.allNotebookId; } Notebook.isTrashNotebookId = function(notebookId) { return notebookId == Notebook.trashNotebookId; } // 当前选中的笔记本是否是"所有" // called by Note Notebook.curActiveNotebookIsAll = function() { return Notebook.isAllNotebookId($("#notebookList .active").attr("notebookId")); } // 改变笔记本 // 0. 改变样式 // 1. 改变note, 此时需要先保存 // 2. ajax得到该notebook下的所有note // 3. 使用Note.RederNotes() Notebook.changeNotebook = function(notebookId) { Notebook.changeNotebookNav(notebookId); Notebook.curNotebookId = notebookId; // 1 Note.curChangedSaveIt(); // 2 先清空所有 Note.clearAll(); var url = "/note/ListNotes/"; var param = {notebookId: notebookId}; // 废纸篓 if(Notebook.isTrashNotebookId(notebookId)) { url = "/note/listTrashNotes"; param = {}; } else if(Notebook.isAllNotebookId(notebookId)) { param = {}; // 得到全部的... cacheNotes = Note.getNotesByNotebookId(); if(!isEmpty(cacheNotes)) { // 万一真的是没有呢? Note.renderNotesAndFirstOneContent(cacheNotes); return; } } else { cacheNotes = Note.getNotesByNotebookId(notebookId); if(!isEmpty(cacheNotes)) { // 万一真的是没有呢? Note.renderNotesAndFirstOneContent(cacheNotes); return; } } // 2 得到笔记本 // 这里可以缓存起来, note按notebookId缓存 ajaxGet(url, param, Note.renderNotesAndFirstOneContent); } // 是否是当前选中的notebookId // 还包括共享 // called by Note Notebook.isCurNotebook = function(notebookId) { return $(tt('#notebookList [notebookId="?"], #shareNotebooks [notebookId="?"]', notebookId, notebookId)).attr("class") == "active"; } // 改变nav, 为了新建note // called by Note Notebook.changeNotebookForNewNote = function(notebookId) { // 废纸篓 if(Notebook.isTrashNotebookId(notebookId) || Notebook.isAllNotebookId(notebookId)) { return; } Notebook.changeNotebookNav(notebookId); Notebook.curNotebookId = notebookId; var url = "/note/ListNotes/"; var param = {notebookId: notebookId}; // 2 得到笔记本 // 这里可以缓存起来, note按notebookId缓存 ajaxGet(url, param, function(ret) { // note 导航 Note.renderNotes(ret, true); }); }; //--------------------------- // 显示共享信息 Notebook.listNotebookShareUserInfo = function(target) { var notebookId = $(target).attr("notebookId"); showDialogRemote("share/listNotebookShareUserInfo", {notebookId: notebookId}); } // 共享笔记本 Notebook.shareNotebooks= function(target) { var title = $(target).text(); showDialog("dialogShareNote", {title: "分享笔记本给好友-" + title}); setTimeout(function() { $("#friendsEmail").focus(); }, 500); var notebookId = $(target).attr("notebookId"); shareNoteOrNotebook(notebookId, false); } //----------------------------- // 设为blog/unset Notebook.setNotebook2Blog = function(target) { var notebookId = $(target).attr("notebookId"); var notebook = Notebook.cache[notebookId]; var isBlog = true; if(notebook.IsBlog != undefined) { isBlog = !notebook.IsBlog; } // 那么, 如果当前是该notebook下, 重新渲染之 if(Notebook.curNotebookId == notebookId) { if(isBlog) { $("#noteList .item-blog").show(); } else { $("#noteList .item-blog").hide(); } // 如果当前在所有笔记本下 } else if(Notebook.curNotebookId == Notebook.allNotebookId){ $("#noteItemList .item").each(function(){ var noteId = $(this).attr("noteId"); var note = Note.cache[noteId]; if(note.NotebookId == notebookId) { if(isBlog) $(this).find(".item-blog").show(); else $(this).find(".item-blog").hide(); } }); } ajaxPost("notebook/setNotebook2Blog", {notebookId: notebookId, isBlog: isBlog}, function(ret) { if(ret) { // 这里要设置notebook下的note的blog状态 Note.setAllNoteBlogStatus(notebookId, isBlog); Notebook.setCache({NotebookId: notebookId, IsBlog: isBlog}); } }); } // 添加, 修改完后都要对notebook的列表重新计算 TODO // 修改笔记本标题 Notebook.updateNotebookTitle = function(target) { 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(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); } }); } //----------- // 添加笔记本 // 1 确保是展开的 // 2 在所有后面添加
  • Notebook.addNotebookSeq = 1; // inputId Notebook.addNotebook = function() { var self = Notebook; if($("#myNotebooks").hasClass("closed")) { $("#myNotebooks .folderHeader").trigger("click"); } // 添加并修改 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; } 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 { alert(ret.Msg); } }); } $(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: 180, items: [ { text: getMsg("shareToFriends"), alias: 'shareToFriends', icon: "", faIcon: "fa-share-square-o", action: Notebook.listNotebookShareUserInfo}, { type: "splitLine" }, { text: getMsg("publicAsBlog"), alias: 'set2Blog', faIcon: "fa-bold", action: Notebook.setNotebook2Blog }, { text: getMsg("cancelPublic"), alias: 'unset2Blog',faIcon: "fa-undo", action: Notebook.setNotebook2Blog }, // Unset { type: "splitLine" }, { text: getMsg("addChildNotebook"), faIcon: "fa-sitemap", action: Notebook.addChildNotebook }, { text: getMsg("rename"), faIcon: "fa-pencil", action: Notebook.updateNotebookTitle }, { text: getMsg("delete"), icon: "", alias: 'delete', faIcon: "fa-trash-o", action: Notebook.deleteNotebook } ], onShow: applyrule, onContextMenu: beforeContextMenu, parent: "#notebookList ", children: "li a" } // for search var notebookListMenu2 = { width: 180, items: [ { text: getMsg("shareToFriends"), alias: 'shareToFriends', icon: "", faIcon: "fa-share-square-o", action: Notebook.listNotebookShareUserInfo}, { type: "splitLine" }, { text: getMsg("publicAsBlog"), alias: 'set2Blog', faIcon: "fa-bold", action: Notebook.setNotebook2Blog }, { text: getMsg("cancelPublic"), alias: 'unset2Blog',faIcon: "fa-undo", action: Notebook.setNotebook2Blog }, // Unset { type: "splitLine" }, { text: getMsg("rename"), icon: "", action: Notebook.updateNotebookTitle }, { text: getMsg("delete"), icon: "", alias: 'delete', faIcon: "fa-trash-o", action: Notebook.deleteNotebook } ], onShow: applyrule, onContextMenu: beforeContextMenu, parent: "#notebookListForSearch ", children: "li a" } function applyrule(menu) { var notebookId = $(this).attr("notebookId"); var notebook = Notebook.cache[notebookId]; if(!notebook) { return; } // disabled的items var items = []; // 是否已公开为blog if(!notebook.IsBlog) { items.push("unset2Blog"); } else { items.push("set2Blog"); } //asktalk bebug#23 if(notebookId=="548125adf4e872105c000007"){ items.push("delete"); } // 是否还有笔记 if(Note.notebookHasNotes(notebookId)) { items.push("delete"); } menu.applyrule({ name: "target2", disable: true, items: items }); } // 哪个不能 function beforeContextMenu() { var notebookId = $(this).attr("notebookId"); return !Notebook.isTrashNotebookId(notebookId) && !Notebook.isAllNotebookId(notebookId); } Notebook.contextmenu = $("#notebookList li a").contextmenu(notebookListMenu); 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); }); });