Não pode escolher mais do que 25 tópicos
Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
416 linhas
16 KiB
416 linhas
16 KiB
<!doctype html>
|
|
<html lang="en" class="no-js">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
|
<meta name="description" content="码农随笔,个人随笔是一个面向IT技术人员,提供个人平时工作总结和在线记录学习笔记,个人技术博客,在线云笔记,码农笔录,最新的技术博客,www.aiprose.com">
|
|
<meta name="keywords" content="码农随笔,个人随笔,博客,个人博客,个人笔记,技术博客,免费云笔记,云笔记,随笔,IT博客,谷歌地图,码农笔录,aiprose">
|
|
<title>我的笔记 - 码农随笔</title>
|
|
<!--Material Design Iconic Font-->
|
|
<link rel="stylesheet" href="/static/material-design/css/material-design-iconic-font.css"/>
|
|
<!--jSide Menu CSS-->
|
|
<link rel="stylesheet" href="/static/css/jslide/jside-menu.css"/>
|
|
<!--jSide Skins-->
|
|
<link rel="stylesheet" href="/static/css/jslide/jside-skins.css"/>
|
|
<link rel="stylesheet" href="/static/css/jslide/demo-only.css"/>
|
|
|
|
<script type="text/javascript" src="/static/js/checkm.js"></script>
|
|
<link type="text/css" rel="styleSheet" href="/static/css/menu-reset.css"/>
|
|
<link type="text/css" rel="styleSheet" href="/static/css/menunav.css"/>
|
|
|
|
<script type="text/javascript" src="https://cdn.bootcss.com/jquery/3.4.0/jquery.min.js"></script>
|
|
<script type="text/javascript" src="/static/js/layer.js"></script>
|
|
<link rel="stylesheet" href="/static/layui/css/layui.css">
|
|
<script type="text/javascript" src="/static/layui/layui.js"></script>
|
|
<script src="/static/js/wangEditor.min.js"></script>
|
|
<!--<link href="https://cdn.bootcss.com/highlight.js/9.15.6/styles/school-book.min.css" rel="stylesheet">-->
|
|
<link href="https://cdn.bootcss.com/highlight.js/9.15.6/styles/atelier-dune-light.min.css" rel="stylesheet">
|
|
<style>
|
|
html, body {
|
|
height: 100%;
|
|
min-height: 100%;
|
|
}
|
|
|
|
main {
|
|
margin-top: 0 !important;
|
|
margin-bottom: 0 !important;
|
|
background-color: #f5f4e9;
|
|
}
|
|
|
|
.current-title {
|
|
color: #ddd;
|
|
z-index: 5;
|
|
padding: 4px 30px;
|
|
}
|
|
|
|
.skin-container {
|
|
position: absolute;
|
|
right: 5px;
|
|
top: 0;
|
|
}
|
|
|
|
.skin-container select {
|
|
height: 40px;
|
|
color: #fff;
|
|
border: none;
|
|
background-color: rgba(0, 0, 0, 0);
|
|
}
|
|
.skin-container select option{
|
|
color: #222;
|
|
}
|
|
.w-e-toolbar {
|
|
height: 40px;
|
|
line-height: 30px;
|
|
}
|
|
|
|
.w-e-text-container {
|
|
z-index: 5 !important;
|
|
}
|
|
|
|
.w-e-menu {
|
|
z-index: 6 !important;
|
|
}
|
|
|
|
.w-e-menu i {
|
|
color: #ddd !important;
|
|
}
|
|
|
|
::-webkit-scrollbar {
|
|
width: 1px;
|
|
height: 5px;
|
|
}
|
|
|
|
::-webkit-scrollbar-track-piece {
|
|
background-color: rgba(0, 0, 0, 0.1);
|
|
-webkit-border-radius: 6px;
|
|
}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<menu class="menubar">
|
|
<menuitem>
|
|
<button class="menu-trigger"></button>
|
|
</menuitem>
|
|
</menu>
|
|
|
|
<div class="menu-head">
|
|
<span class="layer">
|
|
<div class="col">
|
|
<div class="row for-pic">
|
|
<div class="profile-pic"> <img src="{{.HeadImg}}" alt="Asif Mughal"/></div>
|
|
</div>
|
|
<div class="row for-name">
|
|
<h3 title="User Name"> {{.NickName}}</h3>
|
|
<span class="tagline"> 私密笔记,别人无法看到 </span>
|
|
</div>
|
|
</div> <!--//col-->
|
|
</span>
|
|
</div> <!--//menu-head-->
|
|
|
|
<nav class="menu-container">
|
|
|
|
<ul class="menu-items">
|
|
<!--{{if eq 0 (.NoteColls|len)}}-->
|
|
<!--{{end}}-->
|
|
<li><a href="javascript:void(0)" id="nullNoteColl">新增文件夹</a></li>
|
|
<li><a href="javascript:void(0)" id="nullNote">新增笔记</a></li>
|
|
{{range .NoteColls}}
|
|
<li class="has-sub"><span class="item-icon"> <i class="zmdi zmdi-windows"></i> </span>
|
|
<span class="dropdown-heading">{{.Title}}</span>
|
|
<ul value="{{.Id}}" class="sub-menu">
|
|
{{range .Notes}}
|
|
<li>
|
|
<a href="javascript:void(0)" onclick="noteClick({{.Id}})" value="{{.Id}}">{{.Title}}</a>
|
|
</li>
|
|
{{end}}
|
|
</ul>
|
|
</li>
|
|
{{end}}
|
|
</ul>
|
|
</nav>
|
|
|
|
<div class="dim-overlay"></div>
|
|
|
|
<main>
|
|
<div id="editor" class="editor"></div>
|
|
<nav class="note-nav">
|
|
<input type="checkbox" id="joacims-menu"/>
|
|
<label for="joacims-menu"><span><img src="/static/img/menu.png"
|
|
style="width: 23px;height: 23px;"> </span></label>
|
|
<nav>
|
|
<a href="javascript:void(0)" id="saveNote">保存笔记</a>
|
|
<a href="/" target="_blank">首页</a>
|
|
<a href="javascript:void(0)" id="newNote">新增笔记</a>
|
|
<a href="javascript:void(0)" id="newNoteColl">新增文件夹</a>
|
|
<a href="javascript:void(0)" id="delNote">删除笔记</a>
|
|
<a href="/me/info" target="_blank">个人中心</a>
|
|
<a href="/logout">安全退出</a>
|
|
</nav>
|
|
</nav>
|
|
|
|
<div class="skin-container">
|
|
<select name="skin-select" class="skin-select">
|
|
<option value="between-clouds">默认皮肤</option>
|
|
<option value="red">红色</option>
|
|
<option value="green">绿色</option>
|
|
<option value="blue">天空蓝</option>
|
|
<option value="bnp">紫色</option>
|
|
<option value="orange">橘色</option>
|
|
<option value="greenish">墨绿</option>
|
|
<option value="wood">木材色</option>
|
|
<option value="flickr">渐变红</option>
|
|
<option value="fb-messenger">渐变蓝</option>
|
|
<option value="moonlit">渐变墨绿</option>
|
|
<option value="park-life">渐变绿</option>
|
|
<option value="d2f">橙红渐变</option>
|
|
<option value="steel-man">蓝红渐变</option>
|
|
<option value="crazy-orange">紫橙渐变</option>
|
|
<option value="endless-river">水蓝渐变</option>
|
|
</select>
|
|
</div>
|
|
</main>
|
|
|
|
|
|
</body>
|
|
<script src="/static/js/jslide/jquery.jside.menu.js"></script>
|
|
<!--<script src="/static/js/jslide/demo-only.js"></script>-->
|
|
<script src="https://cdn.bootcss.com/highlight.js/9.15.6/highlight.min.js"></script>
|
|
<script>
|
|
var storage=window.localStorage
|
|
$(document).ready(function () {
|
|
var skin = storage.getItem("skin");
|
|
if(skin){
|
|
$(".skin-select").val(skin);
|
|
}
|
|
$.mjSideMenu = $(".menu-container").jSideMenu({
|
|
jSidePosition: "position-left", //possible options position-left or position-right
|
|
|
|
jSideSticky: true, // menubar will be fixed on top, false to set static
|
|
jSideSkin: skin ? skin : "between-clouds", // to apply custom skin, just put its name in this string
|
|
});
|
|
|
|
$(".skin-select").on('change', function () {
|
|
var skin = $(".skin-select").val();
|
|
storage.setItem("skin",skin);
|
|
$(".menubar").attr('class', skin).addClass("menubar sticky");
|
|
$(".menu-container").attr('class', skin).addClass("menu-container position-left");
|
|
$(".menu-head").attr('class', skin).addClass("menu-head position-left");
|
|
});
|
|
|
|
});
|
|
</script>
|
|
<script>
|
|
hljs.initHighlightingOnLoad();
|
|
var E = window.wangEditor
|
|
var editor = new E('#editor')
|
|
var note = null
|
|
editor.customConfig.uploadImgServer = '/file/upload'
|
|
// 或者 var editor = new E( document.getElementById('editor') )
|
|
editor.customConfig.uploadImgHooks = {
|
|
customInsert: function (insertImg, result, editor) {
|
|
insertImg(result.Data);
|
|
|
|
}
|
|
}
|
|
editor.create()
|
|
editor.txt.html("<p>点击右上角菜单新建或者选择笔记</p><p>点击左上角菜单进行新建笔记或者导航</p><span>一定要记得先新建笔记然后在编辑,ctrl+s 快捷键可以快速保存哦</span>");
|
|
$(".w-e-toolbar").append("<span class='current-title'>新增笔记</span>")
|
|
document.onkeydown = keyDown;
|
|
|
|
function keyDown(e) {
|
|
// e.preventDefault();
|
|
var currKey = 0, e = e || event || window.event;
|
|
currKey = e.keyCode || e.which || e.charCode;
|
|
if (currKey == 83 && (e.ctrlKey || e.metaKey)) {
|
|
layer.msg("ctrl+s")
|
|
saveNote()
|
|
return false;
|
|
}
|
|
|
|
}
|
|
|
|
function saveNote() {
|
|
if (!note || !note.Id) {
|
|
layer.msg('请在左边菜单中选择笔记', function () {
|
|
});
|
|
return
|
|
}
|
|
var noteHtml = editor.txt.html()
|
|
if (!editor.txt.html() && editor.txt.html().trim().length == 0) {
|
|
layer.msg('保存内容为空', function () {
|
|
});
|
|
return
|
|
}
|
|
$.post('/api/note/edit/' + note.Id, {
|
|
noteHtml: noteHtml
|
|
},
|
|
function (data) {
|
|
if (data.Status == 0) {
|
|
layer.msg("保存成功", {icon: 6});
|
|
} else if (data.Status == 401) {
|
|
window.location.href = "/login"
|
|
} else {
|
|
layer.msg("服务器异常", {icon: 5});
|
|
}
|
|
}, 'json')
|
|
}
|
|
|
|
function noteClick(id) {
|
|
$.get('/api/note/' + id,
|
|
function (data) {
|
|
if (!data.Status) {
|
|
|
|
if (data.NoteHtml && data.NoteHtml.trim().length != 0) {
|
|
editor.txt.html(data.NoteHtml);
|
|
$(".current-title").text(data.Title)
|
|
} else if (note) {
|
|
editor.txt.html("");
|
|
}
|
|
note = data
|
|
} else if (data.Status == 401) {
|
|
window.location.href = "/login"
|
|
} else if (data.Status == 403) {
|
|
layer.msg("暂无权限", {icon: 5});
|
|
} else {
|
|
layer.msg("服务器异常", {icon: 5});
|
|
}
|
|
}, 'json')
|
|
|
|
}
|
|
|
|
function addNoteCallback(obj) {
|
|
var subMenu = $(".sub-menu")
|
|
$.each(subMenu, function (index, el) {
|
|
if ($(el).attr("value") == obj.Pid) {
|
|
var child = '<li><a href="javascript:void(0)" onclick="noteClick(' + obj.Id + ')" value="' + obj.Id + '" >' + obj.Title + '</a></li>'
|
|
$(el).append(child)
|
|
if (!note || !note.Id) {
|
|
note = obj
|
|
$(".current-title").text(obj.Title)
|
|
}
|
|
return
|
|
}
|
|
})
|
|
}
|
|
|
|
$(function () {
|
|
var height = document.documentElement.clientHeight
|
|
$(".w-e-text-container").height(height - 40 - 3);
|
|
|
|
layer.tips('文章列表点我', '#slide-container', {
|
|
tips: [3, '#78BA32']
|
|
});
|
|
$("#saveNote").click(function () {
|
|
saveNote()
|
|
})
|
|
|
|
$("#newNote").click(function () {
|
|
layer.open({
|
|
type: 2,
|
|
title: '新增笔记',
|
|
shadeClose: true,
|
|
shade: 0.8,
|
|
area: ['360px', '280px'],
|
|
content: '/iframe/note.html' //iframe的url
|
|
});
|
|
})
|
|
$("#nullNote").click(function () {
|
|
layer.open({
|
|
type: 2,
|
|
title: '新增笔记',
|
|
shadeClose: true,
|
|
shade: 0.8,
|
|
area: ['360px', '280px'],
|
|
content: '/iframe/note.html' //iframe的url
|
|
});
|
|
})
|
|
function newNoteColl(){
|
|
layer.prompt({title: '请输入文件夹名称'}, function (val, index) {
|
|
if (val.trim().length < 3) {
|
|
layer.msg('文件夹名称最低三个字哦', function () {
|
|
});
|
|
layer.close(index);
|
|
return
|
|
}
|
|
$.post('/api/notecoll/save', {
|
|
title: val.trim()
|
|
},
|
|
function (data) {
|
|
if (data.Status == 0) {
|
|
layer.close(index);
|
|
parent.layer.msg("保存成功", {icon: 6});
|
|
|
|
var thtml = '<li class="has-sub"><span class="item-icon"> <i class="zmdi zmdi-windows"></i> </span>\n' +
|
|
' <span class="dropdown-heading dropdown-heading' + data.Data.Id + '">' + data.Data.Title + '' +
|
|
' <i class="zmdi zmdi-chevron-down arrow"></i></span>\n' +
|
|
' <ul value="' + data.Data.Id + '" class="sub-menu">\n' +
|
|
' </ul>\n' +
|
|
' </li>'
|
|
$(".menu-items").append(thtml)
|
|
$(".dropdown-heading" + data.Data.Id).click(function () {
|
|
|
|
var n = $(".has-sub").find("span:hover + ul li").length;
|
|
var h = $(".has-sub").find("span:hover + ul li").outerHeight();
|
|
var dropdown = h * n;
|
|
var todrop = $(".has-sub").find("span:hover + ul");
|
|
var nodrop = $(".has-sub ul");
|
|
|
|
$(todrop).animate({"height": dropdown}, 100);
|
|
$(this).find("i").toggleClass("arrowdown");
|
|
if ($(todrop).height() == dropdown) {
|
|
$(todrop).animate({"height": 0}, 100);
|
|
}
|
|
|
|
if ($(nodrop).height(dropdown)) {
|
|
$(nodrop).not(todrop).height(0);
|
|
$(".dropdown-heading").not(this).find("i").removeClass("arrowdown");
|
|
}
|
|
});
|
|
}
|
|
}, 'json')
|
|
});
|
|
}
|
|
$("#newNoteColl").click(function () {
|
|
newNoteColl();
|
|
})
|
|
|
|
$("#nullNoteColl").click(function () {
|
|
newNoteColl();
|
|
})
|
|
|
|
$("#delNote").click(function () {
|
|
if (!note || !note.Id) {
|
|
layer.msg('请在右边菜单中选择笔记', function () {
|
|
});
|
|
return
|
|
}
|
|
layer.confirm('删除确认', {
|
|
btn: ['确认', '手滑了'] //按钮
|
|
}, function () {
|
|
$.post('/api/note/del/' + note.Id,
|
|
function (data) {
|
|
if (data.Status == 0) {
|
|
var subMenu = $(".sub-menu li a")
|
|
$.each(subMenu, function (index, el) {
|
|
if ($(el).attr("value") == note.Id) {
|
|
$(el).remove()
|
|
return
|
|
}
|
|
})
|
|
note = null
|
|
layer.msg("删除成功", {icon: 6});
|
|
} else if (data.Status == 401) {
|
|
window.location.href = "/login"
|
|
} else if (data.Status == 403) {
|
|
layer.msg("暂无权限", {icon: 5});
|
|
} else {
|
|
layer.msg("服务器异常", {icon: 5});
|
|
}
|
|
}, 'json')
|
|
}, function () {
|
|
|
|
});
|
|
})
|
|
})
|
|
</script>
|
|
</html>
|