因为蚂蚁不支持模板功能,所以很多时候我都是需要直接复制某个已经定义好格式的笔记然后再去修改。这时候才发现蚂蚁里无法在同一笔记本里进行复制,好在人家开源,直接自己处理吧。 ## 网站 ### 服务端: ``` leanote/app/service/NoteService.go ``` 直接搜索: ``` func (this *NoteService) CopyNote(noteId, notebookId, userId string) info.Note { ``` 找到后在该函数的 ``` noteContent := this.GetNoteContent(noteId, userId) ``` 下添加: ``` // 复制的位置是否相同 if note.NotebookId == bson.ObjectIdHex(notebookId) { note.Title = note.Title + " 复制" note.UrlTitle = note.UrlTitle + "-copy" } ``` ### 前端 网站的前端已经打包了,名字是app.min.js ``` leanote/public/js/app.min.js ``` 打开后搜索: ``` if(l.IsTrash||l.NotebookId==i)continue ``` 修改为: ``` if(l.IsTrash)continue ``` 再往下搜索: ``` Notebook.incrNotebookNumberNotes(i) ``` 修改为: ``` Notebook.incrNotebookNumberNotes(i),l.NotebookId==i&&window.location.reload() ``` 这个主要是实现同笔记本复制后刷新页面的。 ## 客户端 客户端的复制是自身来完成复制动作然后同步到服务端的,所以需要单独处理一下。 我平时主要是使用电脑,然后Windows和Mac用到的打包代码都是一样的,这里就拿Windows客户端的修改来说明。 ### 文件1: ``` YOU_LEANOTE_PATH/resource/app/public/js/app/note.js ``` 搜索: ``` // 得到需要复制的 var needNoteIds = []; for (var i = 0; i < noteIds.length; ++i) { var noteId = noteIds[i]; var note = me.getNote(noteId); if (note) { needNoteIds.push(noteId); } } ``` 修改为: ``` // 得到需要复制的 var needNoteIds = []; for (var i = 0; i < noteIds.length; ++i) { var noteId = noteIds[i]; var note = me.getNote(noteId); var copyToSelf = false; if (note) { // trash不能复制, 不能复制给自己 // 因为contexmenu不能disable有子menu的项, 所以允许复制trash if ( /*note.IsTrash || */ note.NotebookId == toNotebookId) { copyToSelf = true; } needNoteIds.push(noteId); } } ``` 在下面的`for (var i = 0; i < notes.length; ++i) {`循环之外添加一行: ``` copyToSelf && window.location.reload(); ``` 实现同笔记本复制后的刷新动作。 ### 文件2 ``` YOU_LEANOTE_PATH/resource/app/src/note.js ``` 查找: ``` // 复制单个笔记 _copyNote: function (noteId, notebookId, callback) { var me = this; me.getNote(noteId, function(note) { if(!note) { callback(false); return; } // 新Id delete note['_id']; delete note['ServerNoteId']; note.NoteId = Common.objectId(); note.IsDirty = true; note.LocalIsNew = true; // 新增加的 note.InitSync = false; // 都是本地的, 相当于新建的笔记 note.LocalIsDelete = false; note.IsTrash = false; note.NotebookId = notebookId; ``` 修改为: ``` // 复制单个笔记 _copyNote: function (noteId, notebookId, callback) { var me = this; me.getNote(noteId, function(note) { if(!note) { callback(false); return; } // 新Id delete note['_id']; delete note['ServerNoteId']; note.NoteId = Common.objectId(); note.IsDirty = true; note.LocalIsNew = true; // 新增加的 note.InitSync = false; // 都是本地的, 相当于新建的笔记 note.LocalIsDelete = false; note.IsTrash = false; if(note.NotebookId == notebookId) { //复制到自身,这里给标题处理一下 note.Title += ' 复制'; note.UrlTitle += '-copy'; } note.NotebookId = notebookId; ``` 最后修改:5月前 © 著作权归作者所有