mirror of
https://github.com/leanote/desktop-app.git
synced 2025-10-14 07:00:53 +00:00
notebook,note, tag OK
This commit is contained in:
858
index.html
Executable file
858
index.html
Executable file
@@ -0,0 +1,858 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
|
||||
<meta name="apple-touch-fullscreen" content="yes">
|
||||
<meta name=”apple-mobile-web-app-capable” content=”yes” />
|
||||
<meta name="keywords" content="leanote,leanote.com">
|
||||
<meta name="description" content="leanote, Not Just A Notebook">
|
||||
<title>Leanote, Not Just A Notebook</title>
|
||||
|
||||
<link href="public/css/bootstrap.css" rel="stylesheet" />
|
||||
<!-- 先加载, 没有样式, 宽度不定 -->
|
||||
<link rel="stylesheet" href="public/tinymce/skins/custom/skin.min.css" rel="stylesheet"/>
|
||||
<!-- leanote css -->
|
||||
<link href="public/css/font-awesome-4.2.0/css/font-awesome.css" rel="stylesheet" />
|
||||
<link href="public/css/zTreeStyle/zTreeStyle.css" rel="stylesheet" />
|
||||
<!-- theme -->
|
||||
<link rel="stylesheet" href="public/css/theme/simple.css" type="text/css" />
|
||||
<!-- context-menu -->
|
||||
<link rel="stylesheet" href="public/js/contextmenu/css/contextmenu.css" type="text/css" />
|
||||
<!-- mdeditor -->
|
||||
<link href="public/dist/themes/default.css" rel="stylesheet" />
|
||||
|
||||
<!-- For Develop writting mod -->
|
||||
<script>
|
||||
function log(o) {
|
||||
console.log(o);
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="page">
|
||||
<div id="pageInner">
|
||||
|
||||
<!-- 头部 -->
|
||||
<!-- <div id="headerContainer"> -->
|
||||
<div id="header">
|
||||
|
||||
<!--
|
||||
<div id="headerLeft" class="pull-left">
|
||||
</div>
|
||||
-->
|
||||
<div id="logo" class="pull-left">
|
||||
<!--<span>lea</span>note -->
|
||||
<!--<img style="height: 45px;" src="/images/logo/leanote_white.png" title="leanote, 不一样的笔记" alt="leanote">-->
|
||||
</div>
|
||||
<div id="switcher" class="pull-left">
|
||||
<i class="fa fa-align-justify" id="leftSwitcher" title="Hidden slide bar"></i>
|
||||
<span id="leftSwitcher2" title="Show slide bar"></span>
|
||||
</div>
|
||||
<!-- search -->
|
||||
<div class="pull-left" id="searchWrap">
|
||||
<form class="navbar-form form-inline col-lg-2" id="searchNote">
|
||||
<input class="form-control" placeholder="Search" type="text" id="searchNoteInput">
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<!-- 全局按钮 -->
|
||||
<div class="pull-left" style="" id="newNoteWrap">
|
||||
<!-- 新建笔记 -->
|
||||
<div id="newMyNote">
|
||||
<a id="newNoteBtn" title="New note">
|
||||
<i class="fa fa-file-o"></i>
|
||||
<span class="new-note-text">New note</span>
|
||||
<span class="new-note-text-abbr">New</span>
|
||||
</a>
|
||||
<span class="new-split">|</span>
|
||||
<a id="newNoteMarkdownBtn" title="New markdown note">
|
||||
<span class="new-markdown-text">New Markdown</span>
|
||||
<span class="new-markdown-text-abbr">Md</span>
|
||||
</a>
|
||||
<span class="for-split"> - </span>
|
||||
<span id="curNotebookForNewNote" notebookId=""></span>
|
||||
<!--
|
||||
<div class="dropdown" style="display: inline-block">
|
||||
<a class="ios7-a dropdown-toggle"
|
||||
id="listNotebookDropdownMenu" data-toggle="dropdown">
|
||||
<i class="fa fa-angle-down"></i>
|
||||
</a>
|
||||
<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="listNotebookDropdownMenu" id="notebookNavForNewNote">
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
-->
|
||||
</div>
|
||||
|
||||
<!-- 只为新建别人的笔记 -->
|
||||
<div id="newSharedNote" style="display: none">
|
||||
<a id="newSharedNoteBtn">
|
||||
<i class="fa fa-file-o"></i>
|
||||
<span class="new-note-text">New note</span>
|
||||
<span class="new-note-text-abbr">New</span>
|
||||
</a>
|
||||
<span class="new-split">|</span>
|
||||
<a id="newShareNoteMarkdownBtn" title="New markdown note">
|
||||
<span class="new-markdown-text">Markdown</span>
|
||||
<span class="new-markdown-text-abbr">Md</span>
|
||||
</a>
|
||||
<span class="for-split"> - </span>
|
||||
<span id="curNotebookForNewSharedNote" notebookId="" userId=""></span>
|
||||
<div class="dropdown" style="display: inline-block">
|
||||
<a id="listShareNotebookDropdownMenu" class="ios7-a dropdown-toggle" data-toggle="dropdown">
|
||||
<i class="fa fa-angle-down"></i>
|
||||
</a>
|
||||
<div class="dropdown-menu dropdown-list" id="searchNotebookForAddShareDropdownList" >
|
||||
<ul id="notebookNavForNewSharedNote"></ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="pull-left" id="leanoteMsg">
|
||||
<span id="msg" style="display: inline-block;"></span>
|
||||
<span id="loading">
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div class="pull-right" style="margin: 0 10px" id="myProfile">
|
||||
<div class="dropdown">
|
||||
<a class="dropdown-toggle" title="{{.userInfo.Username}}" data-toggle="dropdown" style="line-height: 60px;">
|
||||
<span class="username">
|
||||
lif@leanote.com
|
||||
</span>
|
||||
<i class="fa fa-angle-down"></i>
|
||||
</a>
|
||||
<ul class="dropdown-menu li-a" role="menu">
|
||||
<li role="presentation" class="my-link" >
|
||||
<a target="_blank" href="{{$.blogUrl}}/{{.userInfo.Username}}">
|
||||
<i class="fa fa-bold"></i>
|
||||
Blog</a>
|
||||
</li>
|
||||
|
||||
<li role="presentation" class="divider"></li>
|
||||
<li role="presentation" onclick="logout()">
|
||||
<i class="fa fa-sign-out"></i>
|
||||
Logout
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="pull-right top-nav writting-hide" id="myBlog">
|
||||
<a target="_blank" href="{{$.blogUrl}}/{{.userInfo.Username}}">
|
||||
Blog
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div style="clear: both"></div>
|
||||
</div>
|
||||
|
||||
<div id="mainContainer" class="clearfix">
|
||||
<div id="mainMask">
|
||||
<img src="public/images/loading-30.gif" />
|
||||
<br />
|
||||
<br />
|
||||
loading...
|
||||
</div>
|
||||
<div id="leftNotebook">
|
||||
<div id="notebook">
|
||||
<div class="folderNote opened" id="myNotebooks">
|
||||
<div class="folderHeader clearfix">
|
||||
<i class="fa fa-book pull-left fa-left"></i>
|
||||
<span class="pull-left">
|
||||
Notebook
|
||||
</span>
|
||||
<div class="pull-right" id="addNotebookPlus" title="Add notebook">
|
||||
<i class="fa fa-plus" title="Add notebook"></i>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<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">
|
||||
<div class="folderHeader">
|
||||
<i class="fa fa-bookmark fa-left"></i>
|
||||
<span>
|
||||
Tag
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<ul class="folderBody clearfix" id="tagNav">
|
||||
<li data-tag="red"><a> <span class="label label-red">red</span></a></li>
|
||||
<li data-tag="blue"><a> <span class="label label-blue">blue</span></a></li>
|
||||
<li data-tag="yellow"><a> <span class="label label-yellow">yellow</span></a></li>
|
||||
<li data-tag="green"><a> <span class="label label-green">green</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="folderNote closed" id="myShareNotebooks">
|
||||
<div class="folderHeader">
|
||||
<i class="fa fa-file fa-left"></i>
|
||||
<span>
|
||||
Recent Notes
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<ul class="folderBody" id="shareNotebooks">
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<!--
|
||||
<div class="folderNote closed" id="myShareNotebooks">
|
||||
<div class="folderHeader">
|
||||
<i class="fa fa-user fa-left"></i>
|
||||
<span>
|
||||
Share
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<ul class="folderBody" id="shareNotebooks">
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- 缩小版 todo 不要展示, 点击展开即可 -->
|
||||
<div id="notebookMin">
|
||||
<!-- 这里隐藏, 不要 -->
|
||||
<div target="#notebookList" title="Notebook" class="minContainer">
|
||||
<i class="fa fa-book"></i>
|
||||
<ul class="dropdown-menu" id="minNotebookList">
|
||||
</ul>
|
||||
</div>
|
||||
<div target="#tagNav" title="My tag" class="minContainer">
|
||||
<i class="fa fa-bookmark"></i>
|
||||
<ul class="dropdown-menu" id="minTagNav">
|
||||
</ul>
|
||||
</div>
|
||||
<div id="minShareNotebooks">
|
||||
<div class="minContainer" target="#friendContainer0" title="Share">
|
||||
<i class="fa fa-user"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!--
|
||||
底下隐藏/展开
|
||||
<div id="notebookBottom">
|
||||
<i class="fa fa-angle-left" id="leftSwitcher"></i>
|
||||
</div>
|
||||
-->
|
||||
</div>
|
||||
|
||||
<div class="noteSplit" id="notebookSplitter"></div>
|
||||
|
||||
<div id="noteAndEditor">
|
||||
<div id="noteAndEditorMask">
|
||||
<img src="public/images/loading-24.gif"/>
|
||||
<br />
|
||||
loading...
|
||||
</div>
|
||||
<div id="noteList">
|
||||
<div class="clearfix" id="notesAndSort" style="position: relative">
|
||||
<div class="pull-left">
|
||||
<!-- 我的笔记本 -->
|
||||
<div class="dropdown" id="myNotebookNavForListNav">
|
||||
<a class="ios7-a dropdown-toggle" id="dropdownMenu1" data-toggle="dropdown">
|
||||
<span id="curNotebookForListNote">Newest</span>
|
||||
<!--
|
||||
<i class="fa fa-angle-down"></i>
|
||||
-->
|
||||
</a>
|
||||
<!-- 如果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">Newest</span>
|
||||
<!--
|
||||
<i class="fa fa-angle-down"></i>
|
||||
-->
|
||||
</a>
|
||||
<ul class="dropdown-menu" role="menu"
|
||||
aria-labelledby="dropdownMenu2" style="left: 5px;" id="sharedNotebookNavForListNote">
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="pull-left" id="tagSearch" style="line-height: 38px">
|
||||
</div>
|
||||
<div id="sortType">
|
||||
<div class="dropdown">
|
||||
<a class="ios7-a dropdown-toggle" id="dropdownMenu1"
|
||||
data-toggle="dropdown">
|
||||
<!--
|
||||
<i class="fa fa-sort-alpha-asc">
|
||||
</i>Sort <i class="fa fa-angle-down"></i>
|
||||
-->
|
||||
</a>
|
||||
<!--
|
||||
<ul class="dropdown-menu" role="menu"
|
||||
aria-labelledby="dropdownMenu1"
|
||||
style="right: 3px; ! important; left: -100px; min-width: 100px;">
|
||||
<li role="presentation"><a role="menuitem" tabindex="-1"
|
||||
href="#">创建日期</a></li>
|
||||
<li role="presentation"><a role="menuitem" tabindex="-1"
|
||||
href="#">修改日期</a></li>
|
||||
<li role="presentation"><a role="menuitem" tabindex="-1"
|
||||
href="#">标题</a></li>
|
||||
<li role="presentation" class="divider"></li>
|
||||
<li role="presentation"><a role="menuitem" tabindex="-1"
|
||||
href="#">Separated </a></li>
|
||||
</ul>
|
||||
-->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 笔记列表 -->
|
||||
<!-- wrap 为了slimScroll -->
|
||||
<div id="noteItemListWrap">
|
||||
<ul id="noteItemList">
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="noteSplit" id="noteSplitter"></div>
|
||||
|
||||
<div id="note">
|
||||
<!-- 只读模式 -->
|
||||
<div id="noteRead">
|
||||
<div id="noteReadContainer">
|
||||
<div id="noteReadTop">
|
||||
<h2 id="noteReadTitle"></h2>
|
||||
<div class="clearfix" id="noteReadInfo">
|
||||
<i class="fa fa-bookmark-o"></i>
|
||||
<span id="noteReadTags"></span>
|
||||
|
||||
<!-- 修改时间 -->
|
||||
<i class="fa fa-clock-o"></i>Update
|
||||
<span id="noteReadUpdatedTime"></span>
|
||||
|
||||
<!-- 修改时间 -->
|
||||
<i class="fa fa-clock-o"></i>Create
|
||||
<span id="noteReadCreatedTime"></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="noteReadContent">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 遮罩, 为了resize3Columns用 -->
|
||||
<div id="noteMask" class="note-mask"></div>
|
||||
<div id="noteMaskForLoading" class="note-mask">
|
||||
<img src="public/images/loading-24.gif"/>
|
||||
<br />
|
||||
loading...
|
||||
</div>
|
||||
<div id="editorMask">
|
||||
The notebook is empty, why not...
|
||||
<br />
|
||||
<br />
|
||||
<div id="editorMaskBtns">
|
||||
<a class="note">New note</a>
|
||||
<a class="markdown">New Markdown Note</a>
|
||||
</div>
|
||||
<div id="editorMaskBtnsEmpty">
|
||||
Sorry, cannot new note in here, please choose a notebook at first.
|
||||
</div>
|
||||
</div>
|
||||
<div id="noteTop">
|
||||
<!-- 左侧放tag, 右侧放按钮, 比如save, info, move, delete -->
|
||||
<div id="tool" class="clearfix">
|
||||
<!-- tag可以参考 mac的文件tag, 预定义一些颜色, 用户也可以自己输入-->
|
||||
|
||||
<!--
|
||||
<div class="pull-left" id="noteTitleDiv">
|
||||
<input name="noteTitle" id="noteTitle" value="" placeholder="无标题">
|
||||
</div>
|
||||
-->
|
||||
|
||||
<div class="pull-left" id="tag">
|
||||
<div id="tags" style="display: inline-block; line-height: 25px;">
|
||||
</div>
|
||||
|
||||
<div class="dropdown" style="display: inline-block"
|
||||
id="tagDropdown">
|
||||
<i class="fa fa-bookmark-o"></i>
|
||||
<a
|
||||
class="metro-a dropdown-toggle" data-toggle="dropdown"
|
||||
id="addTagTrigger" style="cursor: text; padding-left: 0">
|
||||
<span class="add-tag-text">
|
||||
Click to add Tag
|
||||
</span>
|
||||
</a>
|
||||
<input type="text" id="addTagInput" />
|
||||
<ul class="dropdown-menu" role="menu" id="tagColor">
|
||||
<li role="presentation"><span class="label label-red">red</span>
|
||||
</li>
|
||||
<li role="presentation"><span class="label label-blue">blue</span>
|
||||
</li>
|
||||
<li role="presentation"><span class="label label-yellow">yellow</span></li>
|
||||
<li role="presentation"><span class="label label-green">green</span></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<ul class="pull-right" id="editorTool">
|
||||
<li><a class="ios7-a " id="saveBtn" title="ctrl+s"
|
||||
data-toggle="dropdown">
|
||||
<span class="fa fa-save"></span>
|
||||
Save</a></li>
|
||||
|
||||
<li class="dropdown" id="attachDropdown">
|
||||
<a class="ios7-a dropdown-toggle" data-toggle="dropdown" id="showAttach">
|
||||
<span class="fa fa-paperclip"></span>
|
||||
attachments<span id="attachNum"></span>
|
||||
</a>
|
||||
<div class="dropdown-menu" id="attachMenu">
|
||||
<ul id="attachList">
|
||||
|
||||
</ul>
|
||||
<form id="uploadAttach" method="post" action="/attach/UploadAttach" enctype="multipart/form-data">
|
||||
<div id="dropAttach" class="dropzone">
|
||||
<a class="btn btn-success btn-choose-file">
|
||||
<i class="fa fa-upload"></i>
|
||||
<span>Choose File</span>
|
||||
</a>
|
||||
<a class="btn btn-default" id="downloadAllBtn">
|
||||
<i class="fa fa-download"></i>
|
||||
<span>Download All</span>
|
||||
</a>
|
||||
<a class="btn btn-default" id="linkAllBtn">
|
||||
<i class="fa fa-link"></i>
|
||||
<span>Link All</span>
|
||||
</a>
|
||||
<input type="file" name="file" multiple/>
|
||||
</div>
|
||||
<div id="attachUploadMsg">
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li><a class="ios7-a " id="tipsBtn"
|
||||
data-toggle="dropdown">
|
||||
<span class="fa fa-question"></span>
|
||||
Tips</a></li>
|
||||
<li><a class="ios7-a " id="contentHistory"
|
||||
data-toggle="dropdown">
|
||||
<span class="fa fa-history"></span>
|
||||
Histories</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div id="noteTitleDiv">
|
||||
<input name="noteTitle" id="noteTitle" value="" placeholder="UnTitled" tabindex="1" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="editor">
|
||||
<!-- 编辑器 -->
|
||||
<div id="mceToolbar">
|
||||
<div id="popularToolbar"
|
||||
style="position: absolute; right: 30px; left: 0"></div>
|
||||
<a
|
||||
style="dispaly: block; position: absolute; cursor: pointer; right: 10px; padding: 3px 10px"
|
||||
id="moreBtn"> <i class="fa fa-angle-down"></i>
|
||||
</a>
|
||||
</div>
|
||||
<div class="editorBg"></div>
|
||||
<div id="leanoteNav" class="leanoteNav">
|
||||
<h1>
|
||||
<i class="fa fa-align-justify" title="Note nav"></i>
|
||||
<span>Note nav</span>
|
||||
</h1>
|
||||
<div id="leanoteNavContent" class="leanoteNavContent">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- leaui image drop image to editor-->
|
||||
<form id="upload" method="post" action="/file/uploadImageLeaui" enctype="multipart/form-data" style="margin-top: 5px;">
|
||||
<div id="drop">
|
||||
Drop images to here
|
||||
<input type="file" name="file" multiple style="display: none"/>
|
||||
</div>
|
||||
<ul id="uploadMsg">
|
||||
</ul>
|
||||
</form>
|
||||
|
||||
<!-- 由此可以算高度 -->
|
||||
<div id="editorContent" name="editorContent" tabindex="2" />
|
||||
{{.noteContent}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="mdEditor">
|
||||
|
||||
|
||||
<div class="layout-wrapper-l1">
|
||||
<div class="layout-wrapper-l2">
|
||||
<div class="navbar navbar-default">
|
||||
<div class="navbar-inner" id="wmd-button-bar">
|
||||
<ul class="nav left-buttons">
|
||||
<li class="wmd-button-group1 btn-group"></li>
|
||||
</ul>
|
||||
<ul class="nav left-buttons">
|
||||
<li class="wmd-button-group2 btn-group"></li>
|
||||
</ul>
|
||||
<ul class="nav left-buttons">
|
||||
<li class="wmd-button-group3 btn-group"></li>
|
||||
</ul>
|
||||
<ul class="nav left-buttons">
|
||||
<li class="wmd-button-group5 btn-group"></li>
|
||||
</ul>
|
||||
<!-- 帮助 -->
|
||||
<ul class="nav left-buttons">
|
||||
<li class="wmd-button-group6 btn-group">
|
||||
<li class="wmd-button btn btn-success" id="wmd-help-button" title="Markdown syntax" style="left: 0px; display: none;"><span style="display: none; background-position: 0px 0px;"></span><i class="fa fa-question-circle"></i></li>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<!--
|
||||
<ul class="nav pull-right right-buttons">
|
||||
<li class="offline-status hide">
|
||||
<div class="text-danger">
|
||||
<i class="icon-attention-circled"></i>offline
|
||||
</div>
|
||||
</li>
|
||||
<li class="extension-buttons"></li>
|
||||
</ul>
|
||||
<ul class="nav pull-right title-container">
|
||||
<li><div class="working-indicator"></div></li>
|
||||
<li><a class="btn btn-success file-title-navbar" href="#"
|
||||
title="Rename document"> </a></li>
|
||||
<li><div class="input-file-title-container"><input type="text"
|
||||
class="col-sm-4 form-control hide input-file-title"
|
||||
placeholder="Document title" /></div></li>
|
||||
</ul>
|
||||
-->
|
||||
</div>
|
||||
<div class="editorBg"></div>
|
||||
</div>
|
||||
<div class="layout-wrapper-l3">
|
||||
<div id="left-column">
|
||||
<pre id="wmd-input" class="form-control"><div class="editor-content mousetrap" contenteditable=true></div><div class="editor-margin"></div></pre>
|
||||
</div>
|
||||
<div id="right-column">
|
||||
<div class="preview-panel panel-open" id="preview-panel">
|
||||
<div id="mdSplitter2" class="layout-resizer layout-resizer-preview open" style="-webkit-user-select: none; -webkit-user-drag: none; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); touch-action: none;"></div>
|
||||
<div class="layout-toggler layout-toggler-preview btn btn-info open" title="Toggle preview" data-open="1"><i class="fa fa-angle-right"></i></div>
|
||||
<div class="preview-container">
|
||||
<div id="preview-contents">
|
||||
<div id="wmd-preview" class="preview-content"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="extension-preview-buttons">
|
||||
<div id="leanoteNavMd" class="leanoteNav">
|
||||
<h1>
|
||||
<i class="fa fa-align-justify" title="Note nav"></i>
|
||||
<span>Note nav</span>
|
||||
</h1>
|
||||
<div id="leanoteNavContentMd" class="leanoteNavContent table-of-contents">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="wmd-button-bar" class="hide"></div>
|
||||
</div>
|
||||
|
||||
<!--
|
||||
<div id="wmd-button-bar" id="mdBar"></div>
|
||||
<div class="editorBg"></div>
|
||||
|
||||
<div class="clearfix" id="mdEditorPreview">
|
||||
<div id="left-column">
|
||||
<div id="wmd-panel-editor" class="wmd-panel-editor">
|
||||
<textarea class="wmd-input theme" id="wmd-input" spellcheck="false" tabindex="3"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div id="mdSplitter"></div>
|
||||
<div id="right-column">
|
||||
<div id="wmd-panel-preview" class="wmd-panel-preview preview-container">
|
||||
<div id="wmd-preview" class="wmd-preview"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<textarea id="md-section-helper"></textarea>
|
||||
-->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- mdEditor -->
|
||||
<!-- v2 -->
|
||||
<div class="modal fade modal-insert-link">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal"
|
||||
aria-hidden="true">×</button>
|
||||
<h4 class="modal-title">Hyperlink</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<p>Please provide the link URL and an optional title:</p>
|
||||
<div class="input-group">
|
||||
<span class="input-group-addon"><i class="icon-globe"></i></span><input
|
||||
id="input-insert-link" type="text" class="col-sm-5 form-control"
|
||||
placeholder='http://example.com/ "optional title"' />
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<a href="#" class="btn btn-default" data-dismiss="modal">Cancel</a>
|
||||
<a href="#" class="btn btn-primary action-insert-link"
|
||||
data-dismiss="modal">OK</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 插入图片 -->
|
||||
<div class="modal fade modal-insert-image">
|
||||
<div class="modal-dialog" style="width: 840px;max-width:100%;">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal"
|
||||
aria-hidden="true">×</button>
|
||||
<h4 class="modal-title">Image</h4>
|
||||
</div>
|
||||
<div class="modal-body" style="padding-top: 0; padding-bottom: 0">
|
||||
<iframe name="mdImageManager" style="width: 100%; height: 350px" scrolling="no" id="leauiIfrForMD" src="" frameborder="0"></iframe>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<a href="#" class="btn btn-default"
|
||||
data-dismiss="modal">Cancel</a> <a href="#"
|
||||
class="btn btn-primary action-insert-image" data-dismiss="modal">Insert Image</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- v1 -->
|
||||
<!-- Hidden Popup Modal -->
|
||||
<div class="modal fade bs-modal-sm" id="editorDialog" tabindex="-1" role="dialog" aria-labelledby="mySmallModalLabel" aria-hidden="true">
|
||||
<div class="modal-dialog modal-sm">
|
||||
<div class="modal-content">
|
||||
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
||||
<h4 class="modal-title" id="editorDialog-title"></h4>
|
||||
</div>
|
||||
|
||||
<div class="modal-body">
|
||||
<p></p>
|
||||
<div class="input-group">
|
||||
<span class="input-group-addon">
|
||||
<i></i>
|
||||
</span>
|
||||
<input type="text" class="form-control" placeholder="">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
|
||||
<button type="button" class="btn btn-primary" id="editorDialog-confirm">confirm</button>
|
||||
</div>
|
||||
|
||||
</div><!-- /.modal-content -->
|
||||
</div><!-- /.modal-dialog -->
|
||||
</div><!-- /.modal -->
|
||||
<!-- 弹出框 模板 -->
|
||||
<div class="modal fade bs-modal-sm" id="leanoteDialogRemote" tabindex="-1" role="dialog" aria-labelledby="mySmallModalLabel" aria-hidden="true">
|
||||
</div>
|
||||
|
||||
<div class="modal fade bs-modal-sm" id="leanoteDialog" tabindex="-1" role="dialog" aria-labelledby="mySmallModalLabel" aria-hidden="true">
|
||||
<div class="modal-dialog modal-sm">
|
||||
<div class="modal-content">
|
||||
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
||||
<h4 class="modal-title" id="modalTitle">操作</h4>
|
||||
</div>
|
||||
|
||||
<div class="modal-body">
|
||||
内容区
|
||||
</div>
|
||||
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
|
||||
<button type="button" class="btn btn-primary">Save changes</button>
|
||||
</div>
|
||||
|
||||
</div><!-- /.modal-content -->
|
||||
</div><!-- /.modal-dialog -->
|
||||
</div><!-- /.modal -->
|
||||
|
||||
<div class="modal fade bs-modal-sm" id="sendRegisterEmailDialog" tabindex="-1" role="dialog" aria-labelledby="mySmallModalLabel" aria-hidden="true">
|
||||
<div class="modal-dialog modal-sm">
|
||||
<div class="modal-content">
|
||||
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
||||
<h4 class="modal-title" class="modalTitle">邀请好友</h4>
|
||||
</div>
|
||||
|
||||
<div class="modal-body">
|
||||
<form role="form">
|
||||
<div class="form-group">
|
||||
<div id="registerEmailMsg" class="alert alert-warning" style="display: none">
|
||||
</div>
|
||||
<input type="hidden" id="toEmail"/>
|
||||
<label for="emailContent">邮件内容</label>
|
||||
<textarea class="form-control" id="emailContent">Hi, 我是life, leanote非常好用, 快来注册吧.</textarea>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-default" data-dismiss="modal">取消</button>
|
||||
<button type="button" class="btn btn-success" id="registerEmailBtn">发送</button>
|
||||
</div>
|
||||
|
||||
</div><!-- /.modal-content -->
|
||||
</div><!-- /.modal-dialog -->
|
||||
</div><!-- /.modal -->
|
||||
|
||||
<!-- theme -->
|
||||
<div class="modal fade bs-modal-sm" id="setThemeDialog" tabindex="-1" role="dialog" aria-labelledby="mySmallModalLabel" aria-hidden="true">
|
||||
<div class="modal-dialog modal-sm">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
||||
<h4 class="modal-title" class="modalTitle">theme</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<table id="themeForm">
|
||||
<tr>
|
||||
<td>
|
||||
<label>
|
||||
<img src="public/images/slider/all.gif" height="100px">
|
||||
<br />
|
||||
<input type="radio" name="theme" value="default"> Default
|
||||
</label>
|
||||
</td>
|
||||
<td>
|
||||
<label>
|
||||
<img src="public/images/slider/all-simple.gif" height="100px">
|
||||
<br />
|
||||
<input type="radio" name="theme" value="simple"> Simple
|
||||
</label>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
|
||||
</div>
|
||||
</div><!-- /.modal-content -->
|
||||
</div><!-- /.modal-dialog -->
|
||||
</div><!-- /.modal -->
|
||||
|
||||
<!-- 编辑器提示 -->
|
||||
<div class="modal fade bs-modal-sm" id="tipsDialog" tabindex="-1" role="dialog" aria-labelledby="mySmallModalLabel" aria-hidden="true">
|
||||
<div class="modal-dialog modal-sm">
|
||||
<div class="modal-content">
|
||||
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
||||
<h4 class="modal-title" class="modalTitle">Tips</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<h4>1. Short cuts</h4>ctrl+shift+c Toggle code <br /> ctrl+shift+i Insert/edit image <h4>2. shift+enter Get out of current block</h4> eg. <img src="/images/outofcode.png" style="width: 90px"/> in this situation you can use shift+enter to get out of current code block.
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
|
||||
</div>
|
||||
|
||||
</div><!-- /.modal-content -->
|
||||
</div><!-- /.modal-dialog -->
|
||||
</div><!-- /.modal -->
|
||||
|
||||
<!-- modal 静态区域 -->
|
||||
<div class="display: hidden">
|
||||
<div class="hide" id="copyDiv"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="public/js/jquery-1.9.0.min.js"></script>
|
||||
<script src="public/js/jquery.ztree.all-3.5.js"></script>
|
||||
<script src="public/js/i18n/msg.en.js"></script>
|
||||
<script src="public/js/app/service.js"></script>
|
||||
<script src="public/js/common.js"></script>
|
||||
<script>
|
||||
var UrlPrefix = '{{.siteUrl}}'; // 为了发weibo
|
||||
var UserInfo = {};
|
||||
var notebooks = [{NotebookId: "123232323", Title: "Default"}];
|
||||
var shareNotebooks = [];
|
||||
var sharedUserInfos = [];
|
||||
var curNoteId = '';
|
||||
var curNotebookId = '';
|
||||
var curSharedNoteNotebookId = '';
|
||||
var curSharedUserId = '';
|
||||
var notes = [];
|
||||
var latestNotes = [];
|
||||
var noteContentJson = {};
|
||||
var tagsJson = {};
|
||||
LEA.locale = "en";
|
||||
var GlobalConfigs = {}; // 2014/11/9 beta2
|
||||
</script>
|
||||
|
||||
<script>
|
||||
window.requireNode = window.require;
|
||||
window.require = undefined;
|
||||
</script>
|
||||
<!-- 渲染view -->
|
||||
<script src="public/tinymce/tinymce.dev.js"></script>
|
||||
<script src="public/libs/ace/ace.js"></script>
|
||||
<script src="public/js/app/page.js"></script>
|
||||
<script src="public/js/jQuery-slimScroll-1.3.0/jquery.slimscroll.js"></script>
|
||||
<script src="public/js/contextmenu/jquery.contextmenu.js"></script>
|
||||
<script src="public/js/bootstrap-min.js"></script>
|
||||
<script src="public/js/app/note.js"></script>
|
||||
<script src="public/js/app/tag.js"></script>
|
||||
<script src="public/js/app/notebook.js"></script>
|
||||
<script src="public/js/app/share.js"></script>
|
||||
<script src="public/js/object_id-min.js"></script>
|
||||
<script>
|
||||
initPage();
|
||||
</script>
|
||||
|
||||
<!-- v2 use require.js, mdeditor -->
|
||||
<script>
|
||||
window.require = window.requireNode;
|
||||
/*
|
||||
window.baseDir = 'public/dist';
|
||||
window.require = {
|
||||
baseUrl: window.baseDir,
|
||||
};
|
||||
*/
|
||||
</script>
|
||||
<script src="public/tinymce/plugins/leaui_image/public/js/jquery.ui.widget.js"></script>
|
||||
<script src="public/tinymce/plugins/leaui_image/public/js/jquery.fileupload.js"></script>
|
||||
<script src="public/tinymce/plugins/leaui_image/public/js/jquery.iframe-transport.js"></script>
|
||||
<!-- <script src="public/js/app/paste.js"></script> -->
|
||||
|
||||
<!-- <script src="public/js/require.js"></script> -->
|
||||
<!-- <script src="public/js/main.js"></script> -->
|
||||
</body>
|
||||
</html>
|
26
main copy.js
26
main copy.js
@@ -1,26 +0,0 @@
|
||||
global.$ = $;
|
||||
|
||||
var abar = require('address_bar');
|
||||
var folder_view = require('folder_view');
|
||||
var path = require('path');
|
||||
var shell = require('nw.gui').Shell;
|
||||
|
||||
$(document).ready(function() {
|
||||
var folder = new folder_view.Folder($('#files'));
|
||||
var addressbar = new abar.AddressBar($('#addressbar'));
|
||||
|
||||
folder.open(process.cwd());
|
||||
addressbar.set(process.cwd());
|
||||
|
||||
folder.on('navigate', function(dir, mime) {
|
||||
if (mime.type == 'folder') {
|
||||
addressbar.enter(mime);
|
||||
} else {
|
||||
shell.openItem(mime.path);
|
||||
}
|
||||
});
|
||||
|
||||
addressbar.on('navigate', function(dir) {
|
||||
folder.open(dir);
|
||||
});
|
||||
});
|
4
node_modules/common.js
generated
vendored
4
node_modules/common.js
generated
vendored
@@ -2,6 +2,7 @@ var fs = require('fs');
|
||||
var User = require('user');
|
||||
var Image = require('image');
|
||||
var Evt = require('evt');
|
||||
var ObjectId = require('objectid');
|
||||
|
||||
// var gui = require('nw.gui');
|
||||
// console.log(gui.App);
|
||||
@@ -9,6 +10,9 @@ var Evt = require('evt');
|
||||
function log(o) {console.log(o)}
|
||||
|
||||
var Common = {
|
||||
objectId: function() {
|
||||
return ObjectId()
|
||||
},
|
||||
_uuid: 1,
|
||||
uuid: function() {
|
||||
this._uuid++;
|
||||
|
9
node_modules/note.js
generated
vendored
9
node_modules/note.js
generated
vendored
@@ -1,6 +1,7 @@
|
||||
var db = require('db');
|
||||
var User = require('user');
|
||||
var Notebook = require('notebook');
|
||||
var Tag = require('tag');
|
||||
var Notes = db.notes;
|
||||
|
||||
function log(o) {
|
||||
@@ -50,6 +51,10 @@ var Note = {
|
||||
|
||||
// 重新统计笔记本的笔记数量
|
||||
Notebook.reCountNotebookNumberNotes(noteOrContent.NotebookId);
|
||||
// 标签
|
||||
if(noteOrContent.Tags && noteOrContent.Tags.length > 0) {
|
||||
Tag.addTags(noteOrContent.Tags);
|
||||
}
|
||||
}
|
||||
});
|
||||
// 更新笔记
|
||||
@@ -73,6 +78,10 @@ var Note = {
|
||||
callback && callback(false);
|
||||
} else {
|
||||
callback && callback(noteOrContent);
|
||||
// 标签
|
||||
if(noteOrContent.Tags && noteOrContent.Tags.length > 0) {
|
||||
Tag.addTags(noteOrContent.Tags);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
109
node_modules/objectid.js
generated
vendored
Normal file
109
node_modules/objectid.js
generated
vendored
Normal file
@@ -0,0 +1,109 @@
|
||||
/*
|
||||
*
|
||||
* Copyright (c) 2011 Justin Dearing (zippy1981@gmail.com)
|
||||
* Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
|
||||
* and GPL (http://www.opensource.org/licenses/gpl-license.php) version 2 licenses.
|
||||
* This software is not distributed under version 3 or later of the GPL.
|
||||
*
|
||||
* Version 1.0.1-dev
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* Javascript class that mimics how WCF serializes a object of type MongoDB.Bson.ObjectId
|
||||
* and converts between that format and the standard 24 character representation.
|
||||
*/
|
||||
var ObjectId = (function () {
|
||||
var increment = 0;
|
||||
var pid = Math.floor(Math.random() * (32767));
|
||||
var machine = Math.floor(Math.random() * (16777216));
|
||||
|
||||
/*
|
||||
if (typeof (localStorage) != 'undefined') {
|
||||
var mongoMachineId = parseInt(localStorage['mongoMachineId']);
|
||||
if (mongoMachineId >= 0 && mongoMachineId <= 16777215) {
|
||||
machine = Math.floor(localStorage['mongoMachineId']);
|
||||
}
|
||||
// Just always stick the value in.
|
||||
localStorage['mongoMachineId'] = machine;
|
||||
document.cookie = 'mongoMachineId=' + machine + ';expires=Tue, 19 Jan 2038 05:00:00 GMT'
|
||||
}
|
||||
else {
|
||||
var cookieList = document.cookie.split('; ');
|
||||
for (var i in cookieList) {
|
||||
var cookie = cookieList[i].split('=');
|
||||
if (cookie[0] == 'mongoMachineId' && cookie[1] >= 0 && cookie[1] <= 16777215) {
|
||||
machine = cookie[1];
|
||||
break;
|
||||
}
|
||||
}
|
||||
document.cookie = 'mongoMachineId=' + machine + ';expires=Tue, 19 Jan 2038 05:00:00 GMT';
|
||||
|
||||
}
|
||||
*/
|
||||
|
||||
function ObjId() {
|
||||
if (!(this instanceof ObjectId)) {
|
||||
return new ObjectId(arguments[0], arguments[1], arguments[2], arguments[3]).toString();
|
||||
}
|
||||
|
||||
if (typeof (arguments[0]) == 'object') {
|
||||
this.timestamp = arguments[0].timestamp;
|
||||
this.machine = arguments[0].machine;
|
||||
this.pid = arguments[0].pid;
|
||||
this.increment = arguments[0].increment;
|
||||
}
|
||||
else if (typeof (arguments[0]) == 'string' && arguments[0].length == 24) {
|
||||
this.timestamp = Number('0x' + arguments[0].substr(0, 8)),
|
||||
this.machine = Number('0x' + arguments[0].substr(8, 6)),
|
||||
this.pid = Number('0x' + arguments[0].substr(14, 4)),
|
||||
this.increment = Number('0x' + arguments[0].substr(18, 6))
|
||||
}
|
||||
else if (arguments.length == 4 && arguments[0] != null) {
|
||||
this.timestamp = arguments[0];
|
||||
this.machine = arguments[1];
|
||||
this.pid = arguments[2];
|
||||
this.increment = arguments[3];
|
||||
}
|
||||
else {
|
||||
this.timestamp = Math.floor(new Date().valueOf() / 1000);
|
||||
this.machine = machine;
|
||||
this.pid = pid;
|
||||
this.increment = increment++;
|
||||
if (increment > 0xffffff) {
|
||||
increment = 0;
|
||||
}
|
||||
}
|
||||
};
|
||||
return ObjId;
|
||||
})();
|
||||
|
||||
ObjectId.prototype.getDate = function () {
|
||||
return new Date(this.timestamp * 1000);
|
||||
};
|
||||
|
||||
ObjectId.prototype.toArray = function () {
|
||||
var strOid = this.toString();
|
||||
var array = [];
|
||||
var i;
|
||||
for(i = 0; i < 12; i++) {
|
||||
array[i] = parseInt(strOid.slice(i*2, i*2+2), 16);
|
||||
}
|
||||
return array;
|
||||
};
|
||||
|
||||
/**
|
||||
* Turns a WCF representation of a BSON ObjectId into a 24 character string representation.
|
||||
*/
|
||||
ObjectId.prototype.toString = function () {
|
||||
var timestamp = this.timestamp.toString(16);
|
||||
var machine = this.machine.toString(16);
|
||||
var pid = this.pid.toString(16);
|
||||
var increment = this.increment.toString(16);
|
||||
return '00000000'.substr(0, 8 - timestamp.length) + timestamp +
|
||||
'000000'.substr(0, 6 - machine.length) + machine +
|
||||
'0000'.substr(0, 4 - pid.length) + pid +
|
||||
'000000'.substr(0, 6 - increment.length) + increment;
|
||||
};
|
||||
|
||||
module.exports = ObjectId;
|
66
node_modules/tag.js
generated
vendored
66
node_modules/tag.js
generated
vendored
@@ -1,6 +1,70 @@
|
||||
var db = require('db');
|
||||
var Common = require('common');
|
||||
var User = require('user');
|
||||
var Tags = db.tags;
|
||||
/*
|
||||
TagId
|
||||
UserId
|
||||
Title
|
||||
NumberNotes
|
||||
CreatedTime
|
||||
UpdatedTime
|
||||
Usn
|
||||
*/
|
||||
// 笔记本服务
|
||||
var Tag = {
|
||||
|
||||
// 添加多个标签
|
||||
addTags: function(titles) {
|
||||
for(var i in titles) {
|
||||
var title = titles[i];
|
||||
this.addTag(title);
|
||||
}
|
||||
},
|
||||
// 添加标签, 先查询是否存在
|
||||
addTag: function(title, callback) {
|
||||
userId = User.getCurActiveUserId();
|
||||
Tags.count({UserId: userId, Title: title}, function(err, count) {
|
||||
if(count) {
|
||||
callback && callback({Ok: false, IsExists: true});
|
||||
} else {
|
||||
var date = new Date();
|
||||
Tags.insert({
|
||||
TagId: Common.objectId(),
|
||||
UserId: userId,
|
||||
Title: title,
|
||||
CreatedTime: date,
|
||||
UpdatedTime: date
|
||||
}, function(err, doc) {
|
||||
if(!err) {
|
||||
callback && callback({Ok: false, Inserted: false});
|
||||
} else {
|
||||
callback && callback(doc);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
// 更新标签标题
|
||||
updateTagTitle: function(tagId, Title, callback) {
|
||||
userId = User.getCurActiveUserId();
|
||||
// Tags.update({TagId: tagId, userId: userId}, {$set: {NumberNotes: count}}, {})
|
||||
Tags.update({TagId: tagId, userId: userId}, {$set: {Title: title}}, {}, function(err) {
|
||||
if(err) {
|
||||
callback && callback(false);
|
||||
} else {
|
||||
callback && callback(true);
|
||||
}
|
||||
});
|
||||
},
|
||||
// 得到标签
|
||||
getTags: function(callback) {
|
||||
Tags.find({UserId: User.getCurActiveUserId()}, function(err, tags) {
|
||||
if(err) {
|
||||
callback && callback(false);
|
||||
} else {
|
||||
callback && callback(tags);
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
module.exports = Tag;
|
@@ -1,25 +0,0 @@
|
||||
0 info it worked if it ends with ok
|
||||
1 verbose cli [ 'node', '/usr/bin/npm', 'install', 'life' ]
|
||||
2 info using npm@2.1.11
|
||||
3 info using node@v0.10.33
|
||||
4 verbose node symlink /usr/bin/node
|
||||
5 verbose stack Error: Invalid version: "0.1"
|
||||
5 verbose stack at Object.module.exports.fixVersionField (/usr/lib/node_modules/npm/node_modules/normalize-package-data/lib/fixer.js:190:13)
|
||||
5 verbose stack at /usr/lib/node_modules/npm/node_modules/normalize-package-data/lib/normalize.js:30:38
|
||||
5 verbose stack at Array.forEach (native)
|
||||
5 verbose stack at normalize (/usr/lib/node_modules/npm/node_modules/normalize-package-data/lib/normalize.js:29:15)
|
||||
5 verbose stack at final (/usr/lib/node_modules/npm/node_modules/read-package-json/read-json.js:342:33)
|
||||
5 verbose stack at then (/usr/lib/node_modules/npm/node_modules/read-package-json/read-json.js:126:33)
|
||||
5 verbose stack at /usr/lib/node_modules/npm/node_modules/read-package-json/read-json.js:331:40
|
||||
5 verbose stack at evalmachine.<anonymous>:271:14
|
||||
5 verbose stack at /usr/lib/node_modules/npm/node_modules/graceful-fs/graceful-fs.js:102:5
|
||||
5 verbose stack at Object.oncomplete (evalmachine.<anonymous>:107:15)
|
||||
6 verbose cwd /Users/life/Documents/kuaipan/leanote/desktop-app
|
||||
7 error Darwin 13.4.0
|
||||
8 error argv "node" "/usr/bin/npm" "install" "life"
|
||||
9 error node v0.10.33
|
||||
10 error npm v2.1.11
|
||||
11 error Invalid version: "0.1"
|
||||
12 error If you need help, you may report this error at:
|
||||
12 error <http://github.com/npm/npm/issues>
|
||||
13 verbose exit [ 1, true ]
|
@@ -1318,7 +1318,10 @@ function initPage() {
|
||||
}
|
||||
}
|
||||
|
||||
Tag.renderTagNav(tagsJson);
|
||||
// 标签
|
||||
Service.tagService.getTags(function(tags) {
|
||||
Tag.renderTagNav(tags);
|
||||
});
|
||||
|
||||
// init notebook后才调用
|
||||
// initSlimScroll();
|
||||
|
@@ -5,7 +5,8 @@ var Service = {
|
||||
notebookService: require('notebook'),
|
||||
noteService: require('note'),
|
||||
tagService: require('tag'),
|
||||
userService: require('user')
|
||||
userService: require('user'),
|
||||
tagService: require('tag')
|
||||
};
|
||||
// 分发服务
|
||||
// route = /note/notebook
|
||||
|
@@ -191,13 +191,13 @@ function reRenderTags() {
|
||||
Tag.renderTagNav = function(tags) {
|
||||
tags = tags || [];
|
||||
for(var i in tags) {
|
||||
var tag = tags[i];
|
||||
var tag = tags[i].Title;
|
||||
if(tag == "red" || tag == "blue" || tag == "yellow" || tag == "green") {
|
||||
continue;
|
||||
}
|
||||
var text = Tag.mapEn2Cn[tag] || tag;
|
||||
var classes = Tag.classes[tag] || "label label-default";
|
||||
$("#tagNav").append(tt('<li data-tag="?"><a> <span class="?">?</span></li>', text, classes, text));
|
||||
$("#tagNav").append(tt('<li data-tag="?"><a> <span class="?">?</span></li>', text, classes, text));
|
||||
}
|
||||
}
|
||||
|
||||
|
1
public/tinymce/plugins/leanote_code/plugin.min.js
vendored
Normal file
1
public/tinymce/plugins/leanote_code/plugin.min.js
vendored
Normal file
@@ -0,0 +1 @@
|
||||
tinymce.PluginManager.requireLangPack("leanote_code"),tinymce.PluginManager.add("leanote_code",function(e,t){function n(e){return e?("object"==typeof e&&(e=$(e).html()),e.replace(/\<br *\/*\>/gi,"\n").replace(/<\/(p|li|div|ul|ol|hr)>/,"\n").replace(/(<([^>]+)>)/gi,"").replace(/\n\n/g,"\n")):e}function o(e){return e?("object"==typeof e&&(e=$(e).html()),e.replace(/\n/g,"<br />")):e}function a(e){r=tinymce.activeEditor;var t,a=r.selection.getNode(),c=r.selection.getContent(),i=LeaAce.isInAce(a),l=!1,d=!1;if(i&&(l=i[0],d=i[1]),$("#editorContent .toggle-raw").remove(),log("curNode:"),log(a),e&&"convert"!=e){if(l&&l.session.setMode("ace/mode/"+e),d||"PRE"!=a.nodeName||(d=$(a)),d){var s=LeaAce.getPreBrush(d);return void d.removeClass(s).addClass("brush:"+e)}}else if(e&&("BODY"==a.nodeName||"editorContent"==$(a).attr("id")))return;if(LeaAce.canAce()){var p=LeaAce.getAceId();if(LeaAce.disableAddHistory(),l){var g=l.getValue();g=g.replace(/</g,"<"),g=g.replace(/>/g,">"),g=g.replace(/\n/g,"<br />"),d.replaceWith("<p>"+g+"</p>"),l.destroy()}else{if("PRE"==a.nodeName){var d=$(a),g=d.html();return g&&(g=g.replace(/\n/g,"<br />")),void d.replaceWith("<p>"+g+"</p>")}var t=c;if(!t&&("BODY"==a.nodeName||"editorContent"==$(a).attr("id")))return;t?(t=n(t),r.insertContent('<pre id="'+p+'">'+t+"</pre>")):(t=n(a),$(a).replaceWith("<pre id='"+p+"'>"+t+"</pre>"));var u=LeaAce.initAce(p);u&&(u.focus(),e&&u.session.setMode("ace/mode/"+e))}LeaAce.resetAddHistory()}else if("PRE"!=a.nodeName&&(a=$(a).closest("pre").get(0)),a&&"PRE"==a.nodeName){var d=$(a),g=d.html();g&&(g=g.replace(/\n/g,"<br />")),d.replaceWith("<p>"+g+"</p>")}else{try{t=$.trim($(c).text())}catch(v){}t||(t=$.trim(c));var h=null,p=LeaAce.getAceId();t?(t=o(t),h='<pre id="'+p+'">'+t+"</pre>",r.insertContent(h)):a?(t=o(a),h='<pre id="'+p+'">'+t+"</pre>",$(a).replaceWith(h)):(h='<pre id="'+p+'">'+t+"</pre>",r.insertContent(h))}}function c(){return function(){var t=this;e.on("nodeChange",function(){var n=null;try{var o=e.selection.getNode();if("PRE"!=o.nodeName&&(o=$(o).closest("pre").get(0)),o){var a=LeaAce.isInAce(o),c=!1,r=!1;if(a||"PRE"==o.nodeName){a?(c=a[0],r=a[1]):r=$(o);var i=LeaAce.getPreBrush(r);n=$.trim(i.split(":")[1]),t.diableValue("convert",!1)}else t.diableValue("convert",!0)}}catch(l){log(l)}"convert"!=n&&t.value(n)})}}var r=e;e.addButton("leanote_code",function(){var e=["Convert Code:convert","CSS:css","C/C++:c_cpp","C#:csharp","HTML:html","Javascript:javascript","Java:java","PHP:php","Python:python","Shell:shell","Delphi:delphi","Golang:golang","Erlang:erlang","Groovy:groovy","ActionScript:actionScript"],t=[];for(var n in e){var o=e[n].split(":");t.push({text:o[0],value:o[1]})}return{type:"listbox",text:"codeLang",tooltip:"toggleCode",values:t,fixedWidth:!0,onselect:function(e){e.control.settings.value&&a(e.control.settings.value)},onPostRender:c(t)}}),e.addButton("leanote_inline_code",{icon:"code",tooltip:"Inline Code",stateSelector:"code",onclick:function(){e.execCommand("mceToggleFormat",!1,"code")}}),LeaAce.canAce()&&e.addButton("leanote_ace_pre",{icon:"code",image:t+"/img/ace-pre2.png",tooltip:"Toggle ace with raw html",active:LeaAce.isAce===!1,onclick:function(){LeaAce.isAce===!1?(this.active(!1),LeaAce.isAce=!0,LeaAce.initAceFromContent(e)):(this.active(!0),LeaAce.allToPre(e),LeaAce.isAce=!1)}}),r.addCommand("toggleCode",a),r.addShortcut("ctrl+shift+c","","toggleCode"),r.addShortcut("command+shift+c","","toggleCode"),LeaAce.canAce()&&e.on("keydown",function(){var e=LeaAce.nowIsInAce();return e?(setTimeout(function(){e[0].focus()}),!0):void 0}),r.on("keydown",function(e){var t=e.which?e.which:e.keyCode;return 9==t?(e.shiftKey||r.insertContent(" "),e.preventDefault(),e.stopPropagation(),!1):void 0})});
|
Reference in New Issue
Block a user