forked from mirror/MrDoc
优化文档和标签文档样式及引用
This commit is contained in:
parent
3428770427
commit
49ea023e71
@ -1,6 +1,11 @@
|
||||
## 版本更新记录
|
||||
|
||||
### v0.6.6 2021-04
|
||||
### v0.6.7 2021-04
|
||||
- [修复]XSS过滤漏洞;
|
||||
- [优化]文档类型标识;
|
||||
- [优化]文档标签相关页面;
|
||||
|
||||
### v0.6.6 2021-04-11
|
||||
|
||||
- [新增]站点语言配置项,英文和繁体中文语言包;
|
||||
- [新增]文集批量导出Markdown压缩包;
|
||||
|
@ -40,7 +40,7 @@ SECRET_KEY = '5&71mt9@^58zdg*_!t(x6g14q*@84d%ptr%%s6e0l50zs0we3d'
|
||||
# SECURITY WARNING: don't run with debug turned on in production!
|
||||
DEBUG = CONFIG.getboolean('site','debug')
|
||||
|
||||
VERSIONS = '0.6.6'
|
||||
VERSIONS = '0.6.7'
|
||||
|
||||
ALLOWED_HOSTS = ['*']
|
||||
|
||||
|
@ -63,13 +63,14 @@ def get_pro_toc(pro_id):
|
||||
doc_list = []
|
||||
n = 0
|
||||
# 获取一级文档
|
||||
top_docs = Doc.objects.filter(top_doc=pro_id, parent_doc=0, status=1).values('id', 'name','open_children').order_by('sort')
|
||||
top_docs = Doc.objects.filter(top_doc=pro_id, parent_doc=0, status=1).values('id', 'name','open_children','editor_mode').order_by('sort')
|
||||
# 遍历一级文档
|
||||
for doc in top_docs:
|
||||
top_item = {
|
||||
'id': doc['id'],
|
||||
'name': doc['name'],
|
||||
'open_children':doc['open_children']
|
||||
'open_children':doc['open_children'],
|
||||
'editor_mode':doc['editor_mode']
|
||||
# 'spread': True,
|
||||
# 'level': 1
|
||||
}
|
||||
@ -80,13 +81,14 @@ def get_pro_toc(pro_id):
|
||||
top_doc=pro_id,
|
||||
parent_doc=doc['id'],
|
||||
status=1
|
||||
).values('id', 'name','open_children').order_by('sort')
|
||||
).values('id', 'name','open_children','editor_mode').order_by('sort')
|
||||
top_item['children'] = []
|
||||
for doc in sec_docs:
|
||||
sec_item = {
|
||||
'id': doc['id'],
|
||||
'name': doc['name'],
|
||||
'open_children': doc['open_children']
|
||||
'open_children': doc['open_children'],
|
||||
'editor_mode': doc['editor_mode']
|
||||
# 'level': 2
|
||||
}
|
||||
# 如果二级文档存在下级文档,查询第三级文档
|
||||
@ -96,12 +98,13 @@ def get_pro_toc(pro_id):
|
||||
top_doc=pro_id,
|
||||
parent_doc=doc['id'],
|
||||
status=1
|
||||
).values('id','name').order_by('sort')
|
||||
).values('id','name','editor_mode').order_by('sort')
|
||||
sec_item['children'] = []
|
||||
for doc in thr_docs:
|
||||
item = {
|
||||
'id': doc['id'],
|
||||
'name': doc['name'],
|
||||
'editor_mode': doc['editor_mode']
|
||||
# 'level': 3
|
||||
}
|
||||
sec_item['children'].append(item)
|
||||
|
@ -102,7 +102,7 @@
|
||||
<li>
|
||||
{% if docs.children %}
|
||||
<div style="display:flex;justify-content:space-between;">
|
||||
<a href="{% url 'doc' pro_id=pro_id doc_id=docs.id %}" title="{{docs.name}}"><i class="iconfont mrdoc-icon-wendang"></i> {{ docs.name }}</a>
|
||||
<a href="{% url 'doc' pro_id=pro_id doc_id=docs.id %}" title="{{docs.name}}">{% if docs.editor_mode == 4 %}<i class="layui-icon layui-icon-table"></i>{% else %}<i class="iconfont mrdoc-icon-wendang"></i>{% endif %} {{ docs.name }}</a>
|
||||
{% if docs.open_children %}
|
||||
<i class="layui-icon layui-icon-down switch-toc"></i>
|
||||
{% else %}
|
||||
@ -120,7 +120,7 @@
|
||||
<li>
|
||||
{% if node.id|get_next_doc %}
|
||||
<div style="display:flex;justify-content:space-between;">
|
||||
<a href="{% url 'doc' pro_id=pro_id doc_id=node.id %}" title="{{node.name}}"><i class="iconfont mrdoc-icon-wendang"></i> {{ node.name }}</a>
|
||||
<a href="{% url 'doc' pro_id=pro_id doc_id=node.id %}" title="{{node.name}}"><i class="{% if node.editor_mode == 4 %}layui-icon layui-icon-table {% else %}iconfont mrdoc-icon-wendang{% endif %}"></i> {{ node.name }}</a>
|
||||
{% if node.open_children %}
|
||||
<i class="layui-icon layui-icon-down switch-toc"></i>
|
||||
{% else %}
|
||||
@ -135,17 +135,17 @@
|
||||
|
||||
<!-- 三级目录 -->
|
||||
{% for doc in node.children %}
|
||||
<li><a href="{% url 'doc' pro_id=pro_id doc_id=doc.id %}" title="{{doc.name}}"><i class="iconfont mrdoc-icon-wendang"></i> {{ doc.name }}</a></li>
|
||||
<li><a href="{% url 'doc' pro_id=pro_id doc_id=doc.id %}" title="{{doc.name}}"><i class="{% if doc.editor_mode == 4 %}layui-icon layui-icon-table {% else %}iconfont mrdoc-icon-wendang{% endif %}"></i> {{ doc.name }}</a></li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% else %}
|
||||
<a href="{% url 'doc' pro_id=pro_id doc_id=node.id %}" title="{{node.name}}"><i class="iconfont mrdoc-icon-wendang"></i> {{ node.name }}</a>
|
||||
<a href="{% url 'doc' pro_id=pro_id doc_id=node.id %}" title="{{node.name}}"><i class="{% if node.editor_mode == 4 %}layui-icon layui-icon-table {% else %}iconfont mrdoc-icon-wendang{% endif %}"></i> {{ node.name }}</a>
|
||||
{% endif %}
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% else %}
|
||||
<a href="{% url 'doc' pro_id=pro_id doc_id=docs.id %}" title="{{docs.name}}"><i class="iconfont mrdoc-icon-wendang"></i> {{ docs.name }}</a>
|
||||
<a href="{% url 'doc' pro_id=pro_id doc_id=docs.id %}" title="{{docs.name}}"><i class="{% if docs.editor_mode == 4 %}layui-icon layui-icon-table {% else %}iconfont mrdoc-icon-wendang{% endif %}"></i> {{ docs.name }}</a>
|
||||
{% endif %}
|
||||
</li>
|
||||
{% endfor %}
|
||||
@ -153,7 +153,7 @@
|
||||
</nav>
|
||||
{% endif %}
|
||||
<div class="bq">
|
||||
<a href="javascript:void(0);" class="mrdoc-link" id="dashang">{% trans "本文档使用MrDoc发布" %}</a>
|
||||
<a href="javascript:void(0);" class="mrdoc-link" id="dashang">{% trans "本文档使用 MrDoc 发布" %}</a>
|
||||
</div>
|
||||
<!-- 右下角广告块 -->
|
||||
<!-- 广告代码开始 -->
|
||||
@ -319,6 +319,7 @@
|
||||
<script src="{% static 'qrcodejs/qrcode.min.js' %}?version={{mrdoc_version}}"></script>
|
||||
<script src="{% static 'mrdoc/mrdoc-docs.js' %}?version={{mrdoc_version}}"></script>
|
||||
<script src="{% static 'iconFont/iconfont.js' %}?version={{mrdoc_version}}"></script>
|
||||
<script src="{% static 'editor.md/lib/purify.min.js' %}?version={{mrdoc_version}}"></script>
|
||||
<script>
|
||||
var layer = layui.layer;
|
||||
{% if toc_cnt > 999 %}
|
||||
@ -331,7 +332,6 @@
|
||||
<script src="{% static 'vditor/dist/method.min.js' %}?version={{mrdoc_version}}"></script>
|
||||
{% elif doc.editor_mode == 1 %}
|
||||
<script src="{% static 'editor.md/lib/marked.min.js' %}?version={{mrdoc_version}}"></script>
|
||||
<script src="{% static 'editor.md/lib/purify.min.js' %}?version={{mrdoc_version}}"></script>
|
||||
<script src="{% static 'editor.md/editormd.js' %}?version={{mrdoc_version}}"></script>
|
||||
{% elif doc.editor_mode == 4 %}
|
||||
<!-- 在线表格 -->
|
||||
|
@ -16,8 +16,19 @@
|
||||
<title>{% block title %}{% trans "标签:" %}{{tag.name}}{% endblock %} - {% if site_name != None and site_name != '' %}{{ site_name }}{% else %}{% trans "站点标题" %}{% endif %}</title>
|
||||
|
||||
<link href="{% static 'layui/css/layui.css' %}?version={{mrdoc_version}}" rel="stylesheet">
|
||||
<link rel="stylesheet" href="{% static 'editor.md/css/editormd.css' %}?version={{mrdoc_version}}" />
|
||||
<link rel="stylesheet" href="{% static 'katex/katex.min.css' %}?version={{mrdoc_version}}" />
|
||||
{% if doc.editor_mode != 4 %}
|
||||
<link rel="stylesheet" href="{% static 'editor.md/css/editormd.css' %}?version={{mrdoc_version}}" />
|
||||
{% endif %}
|
||||
{% if doc.editor_mode == 2 %}
|
||||
<link rel="stylesheet" href="{% static 'vditor/dist/index.css' %}?version={{mrdoc_version}}" />
|
||||
{% endif %}
|
||||
{% if doc.editor_mode == 4 %}
|
||||
<!-- 在线表格 -->
|
||||
<link rel='stylesheet' href="{% static 'luckysheet/dist/plugins/css/pluginsCss.css' %}?version={{mrdoc_version}}" />
|
||||
<link rel='stylesheet' href="{% static 'luckysheet/dist/plugins/plugins.css' %}?version={{mrdoc_version}}" />
|
||||
<link rel='stylesheet' href="{% static 'luckysheet/dist/css/luckysheet.css' %}?version={{mrdoc_version}}" />
|
||||
<link rel='stylesheet' href="{% static 'luckysheet/dist/assets/iconfont/iconfont.css' %}?version={{mrdoc_version}}" />
|
||||
{% endif %}
|
||||
<link href="{% static 'viewerjs/viewer.min.css' %}?version={{mrdoc_version}}" rel="stylesheet">
|
||||
<link rel="icon" href="{% static 'search/mrdoc_logo_300.png' %}" sizes="192x192" />
|
||||
<link href="{% static 'mrdoc/mrdoc.css' %}?version={{mrdoc_version}}" rel="stylesheet">
|
||||
@ -29,6 +40,9 @@
|
||||
max-width: 350px;
|
||||
}
|
||||
{% endif %}
|
||||
/* html{
|
||||
filter: invert(1) hue-rotate(180deg);
|
||||
} */
|
||||
</style>
|
||||
<!--[if lt IE 9]>
|
||||
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
|
||||
@ -63,13 +77,13 @@
|
||||
<!-- 一级目录 -->
|
||||
{% for doc in docs %}
|
||||
<li tooltip="{{doc.doc.top_doc | get_doc_top}}" placement="bottom">
|
||||
<a href="{% url 'tag_doc' tag_id=tag.id doc_id=doc.doc.id %}" target="_blank" ><i class="iconfont mrdoc-icon-wendang"></i> {{ doc.doc.name }}</a>
|
||||
<a href="{% url 'tag_doc' tag_id=tag.id doc_id=doc.doc.id %}" target="_blank" ><i class="{% if doc.doc.editor_mode == 4 %}layui-icon layui-icon-table {% else %}iconfont mrdoc-icon-wendang{% endif %}"></i> {{ doc.doc.name }}</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</nav>
|
||||
<div class="bq">
|
||||
<a href="javascript:void(0);" class="mrdoc-link" id="dashang">{% trans "本文档使用MrDoc发布" %}</a>
|
||||
<a href="javascript:void(0);" class="mrdoc-link" id="dashang">{% trans "本文档使用 MrDoc 发布" %}</a>
|
||||
</div>
|
||||
<!-- 右下角广告块 -->
|
||||
<!-- 广告代码开始 -->
|
||||
@ -165,13 +179,80 @@
|
||||
</div>
|
||||
</div>
|
||||
<!-- 右侧文档栏结束 -->
|
||||
<div class="toTop"><i class="layui-icon layui-icon-top" style="font-size: 40px;"></i></div>
|
||||
{% block right_widget %} {% endblock %}
|
||||
<div class="fixed-tool-bar">
|
||||
<div class="toTop" ><i class="layui-icon layui-icon-up"></i></div>
|
||||
{% block right_widget %} {% endblock %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 分享选项卡模板 -->
|
||||
<div id="share_div" style="display: none;">
|
||||
<div class="layui-tab layui-tab-brief" lay-filter="docDemoTabBrief">
|
||||
<ul class="layui-tab-title">
|
||||
<li class="layui-this">微信扫一扫</li>
|
||||
<li>复制链接</li>
|
||||
</ul>
|
||||
<div class="layui-tab-content" style="height: 100px;">
|
||||
<div class="layui-tab-item layui-show" align='center'>
|
||||
<p style="font-weight: 700;margin-bottom: 10px;">手机扫一扫进行分享</p>
|
||||
<div id="url_qrcode"></div>
|
||||
</div>
|
||||
<div class="layui-tab-item" align='center'>
|
||||
<input type="text" id="copy_crt_url" name="current_url" class="layui-input" /><br>
|
||||
<button class="layui-btn layui-btn-radius layui-btn-xs" style="background-color: #333;" onclick="copyUrl();">复制链接</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 打赏选项卡模板 -->
|
||||
<div id="dashang_img" style="display: none;">
|
||||
<div class="layui-tab layui-tab-brief">
|
||||
<ul class="layui-tab-title">
|
||||
<li class="layui-this">微信</li>
|
||||
<li>支付宝</li>
|
||||
<li>QQ支付</li>
|
||||
<li>PayPal</li>
|
||||
<li>项目源码</li>
|
||||
</ul>
|
||||
<div class="layui-tab-content" style="height: 100px;">
|
||||
<div class="layui-tab-item layui-show" align='center'>
|
||||
<img src="{% static 'dashang/dashang_wx.webp' %}" style="width: 300px;height: auto;" />
|
||||
</div>
|
||||
|
||||
<div class="layui-tab-item" align='center'>
|
||||
<img src="{% static 'dashang/dashang_alipay.webp' %}" style="width: 300px;height: auto;" />
|
||||
</div>
|
||||
|
||||
<div class="layui-tab-item" align='center'>
|
||||
<img src="{% static 'dashang/dashang_qq.webp' %}" style="width: 300px;height: auto;" />
|
||||
</div>
|
||||
|
||||
<div class="layui-tab-item" align='center'>
|
||||
<a href="https://paypal.me/zmister" target="_blank">
|
||||
<img src="{% static 'dashang/dashang_paypal.png' %}" style="width: 280px;height: auto;" />
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="layui-tab-item" align='center'>
|
||||
<p><a href="https://github.com/zmister2016/MrDoc" target="_blank">GitHub:https://github.com/zmister2016/MrDoc</a></p>
|
||||
<br>
|
||||
<p><a href="https://gitee.com/zmister/MrDoc" target="_blank">码云:https://gitee.com/zmister/MrDoc</a> </p>
|
||||
<br>
|
||||
<p><a href="https://zmister.com" target="_blank">作者博客:https://zmister.com</a></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="{% static 'jquery/3.1.1/jquery.min.js' %}"></script>
|
||||
<script src="{% static 'layui/layui.all.js' %}"></script>
|
||||
|
||||
<script src="{% static 'layui/layui.all.js' %}?version={{mrdoc_version}}"></script>
|
||||
<script src="{% static 'viewerjs/viewer.min.js' %}?version={{mrdoc_version}}"></script>
|
||||
<script src="{% static 'qrcodejs/qrcode.min.js' %}?version={{mrdoc_version}}"></script>
|
||||
<script src="{% static 'mrdoc/mrdoc-docs.js' %}?version={{mrdoc_version}}"></script>
|
||||
<script src="{% static 'iconFont/iconfont.js' %}?version={{mrdoc_version}}"></script>
|
||||
<script src="{% static 'editor.md/lib/purify.min.js' %}?version={{mrdoc_version}}"></script>
|
||||
<script src="{% static 'editor.md/lib/echarts.min.js' %}?version={{mrdoc_version}}"></script>
|
||||
<!-- 生成文集目录大纲 -->
|
||||
<script>
|
||||
$.ajaxSetup({
|
||||
@ -249,298 +330,52 @@
|
||||
};
|
||||
</script>
|
||||
|
||||
<!-- 小屏自动收起左侧文集大纲 -->
|
||||
<script>
|
||||
//加载页面时执行一次
|
||||
changeSidebar();
|
||||
//监听浏览器宽度的改变
|
||||
window.onresize = function(){
|
||||
changeSidebar();
|
||||
};
|
||||
function changeSidebar(){
|
||||
// 获取匹配指定的媒体查询
|
||||
var screen_width = window.matchMedia('(max-width: 768px)');
|
||||
//判断匹配状态
|
||||
if(screen_width.matches){
|
||||
//如果匹配到,切换侧边栏
|
||||
//console.log('小屏幕')
|
||||
$("body").addClass("big-page");
|
||||
}else{
|
||||
$("body").removeClass("big-page");
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<script src="{% static 'editor.md/lib/marked.min.js' %}"></script>
|
||||
<script src="{% static 'editor.md/lib/prettify.min.js' %}"></script>
|
||||
<script src="{% static 'editor.md/lib/raphael.min.js' %}"></script>
|
||||
<script src="{% static 'editor.md/lib/underscore.min.js' %}"></script>
|
||||
<script src="{% static 'editor.md/lib/sequence-diagram.min.js' %}"></script>
|
||||
<script src="{% static 'editor.md/lib/flowchart.min.js' %}"></script>
|
||||
<script src="{% static 'editor.md/lib/jquery.flowchart.min.js' %}"></script>
|
||||
<script src="{% static 'editor.md/lib/echarts.min.js' %}"></script>
|
||||
<!-- 脑图开始 -->
|
||||
<script src="{% static 'mindmap/d3@5.js' %}"></script>
|
||||
<script src="{% static 'mindmap/transform.min.js' %}"></script>
|
||||
<script src="{% static 'mindmap/view.min.js' %}"></script>
|
||||
<!-- 脑图结束 -->
|
||||
|
||||
<!-- <script src="{% static 'editor.md/editormd.min.js' %}?version={{mrdoc_version}}"></script> -->
|
||||
{% if doc.editor_mode == 2 %}
|
||||
<script src="{% static 'vditor/dist/method.min.js' %}?version={{mrdoc_version}}"></script>
|
||||
{% elif doc.editor_mode == 1 %}
|
||||
<script src="{% static 'editor.md/lib/marked.min.js' %}?version={{mrdoc_version}}"></script>
|
||||
<script src="{% static 'editor.md/editormd.js' %}?version={{mrdoc_version}}"></script>
|
||||
<script src="{% static 'qrcodejs/qrcode.min.js' %}"></script>
|
||||
{% elif doc.editor_mode == 4 %}
|
||||
<!-- 在线表格 -->
|
||||
<script src="{% static 'luckysheet/dist/plugins/js/plugin.js' %}?version={{mrdoc_version}}"></script>
|
||||
<script src="{% static 'luckysheet/dist/luckysheet.umd.js' %}?version={{mrdoc_version}}"></script>
|
||||
{% endif %}
|
||||
|
||||
<!-- 解析Markdown -->
|
||||
<script>
|
||||
//解析Markdown为HTML
|
||||
editormd.markdownToHTML("content", {
|
||||
htmlDecode : "style,script,iframe",
|
||||
emoji : true, //emoji表情
|
||||
taskList : true, // 任务列表
|
||||
tex : true, // 科学公式
|
||||
flowChart : true, // 流程图
|
||||
sequenceDiagram : true, // 时序图
|
||||
tocm : true, //目录
|
||||
toc :true,
|
||||
tocContainer : "#toc-container",
|
||||
tocDropdown : false,
|
||||
atLink : false,//禁用@链接
|
||||
|
||||
});
|
||||
// 显示分享弹出框
|
||||
$("#share").click(function(r){
|
||||
var layer = layui.layer;
|
||||
layer.open({
|
||||
type: 1,
|
||||
title: false,
|
||||
closeBtn: 0,
|
||||
area: ['350px','350px'],
|
||||
shadeClose: true,
|
||||
content: $('#share_div')
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
<!-- 页面初始化字体设置 -->
|
||||
<script>
|
||||
font_stauts = window.localStorage.getItem('font-sans')
|
||||
if(font_stauts == 'serif'){// 字体类型
|
||||
$(".doc-content").toggleClass("switch-font")
|
||||
$("#content").toggleClass("switch-font")
|
||||
}
|
||||
if(window.localStorage.getItem('font-size')){// 字体大小
|
||||
font_size = window.localStorage.getItem('font-size')
|
||||
console.log(font_size)
|
||||
$('#content').css({'font-size':font_size+'rem'})
|
||||
}else{
|
||||
window.localStorage.setItem('font-size',1.0)
|
||||
}
|
||||
</script>
|
||||
|
||||
<!-- 返回顶部 -->
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() {
|
||||
// 初始时,“返回顶部”标签隐藏
|
||||
$(".toTop").hide();
|
||||
$(window).scroll(function() {
|
||||
// 若滚动的高度,超出指定的高度后,“返回顶部”的标签出现。
|
||||
if($(document).scrollTop() >= 150) {
|
||||
$(".toTop").show();
|
||||
} else {
|
||||
$(".toTop").hide();
|
||||
// 外部链接添加图标
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
Array.prototype.filter.call(document.links, function(link) {
|
||||
return link.hostname && link.hostname !== location.hostname;
|
||||
})
|
||||
.forEach(function(link) {
|
||||
// console.log(link,$(link).children('img').length)
|
||||
if($(link).children().length == 0){
|
||||
link.classList.add('external');
|
||||
}
|
||||
})
|
||||
// 绑定点击事件,实现返回顶部的效果
|
||||
$(".toTop").click(function() {
|
||||
$(document).scrollTop(0);
|
||||
});
|
||||
// 生成当前网页链接
|
||||
$("input[name=current_url]").val(document.URL)
|
||||
});
|
||||
|
||||
</script>
|
||||
|
||||
<!-- 切换隐藏侧边栏 -->
|
||||
<script>
|
||||
// 切换侧边栏
|
||||
$(function(){
|
||||
$(".js-toolbar-action").click(toggleSidebar);
|
||||
});
|
||||
//切换侧边栏显示隐藏
|
||||
function toggleSidebar(){
|
||||
console.log("切换侧边栏")
|
||||
$("body").toggleClass("big-page");
|
||||
return false;
|
||||
}
|
||||
</script>
|
||||
|
||||
<!-- 切换内容字体 -->
|
||||
<script>
|
||||
//切换文档内容字体类型
|
||||
$(function(){
|
||||
$('.font-switch').click(switchFont);
|
||||
});
|
||||
function switchFont(){
|
||||
if(font_stauts == 'serif'){
|
||||
$(".doc-content").toggleClass("switch-font")
|
||||
$("#content").toggleClass("switch-font")
|
||||
window.localStorage.setItem('font-sans','sans')
|
||||
}else{
|
||||
$(".doc-content").toggleClass("switch-font")
|
||||
$("#content").toggleClass("switch-font")
|
||||
window.localStorage.setItem('font-sans','serif')
|
||||
}
|
||||
};
|
||||
//放大字体
|
||||
$(function(){
|
||||
$('.font-large').click(largeFont);
|
||||
});
|
||||
function largeFont(){
|
||||
var font_size = window.localStorage.getItem('font-size')
|
||||
console.log(font_size)
|
||||
if(parseFloat(font_size) < 1.4){
|
||||
size = parseFloat(font_size) + 0.1
|
||||
$('#content').css({'font-size':size+'rem'})
|
||||
window.localStorage.setItem('font-size',size)
|
||||
}else{
|
||||
console.log("xxx")
|
||||
}
|
||||
};
|
||||
//缩小字体
|
||||
$(function(){
|
||||
$('.font-small').click(smallFont);
|
||||
});
|
||||
function smallFont(){
|
||||
var font_size = window.localStorage.getItem('font-size')
|
||||
if(parseFloat(font_size) >= 0.6){
|
||||
size = parseFloat(font_size) - 0.1
|
||||
$('#content').css({'font-size':size+'rem'})
|
||||
window.localStorage.setItem('font-size',size)
|
||||
}else{
|
||||
console.log("xxx")
|
||||
}
|
||||
};
|
||||
|
||||
// 显示打赏图片
|
||||
$("#dashang").click(function(r){
|
||||
var layer = layui.layer;
|
||||
layer.open({
|
||||
type: 1,
|
||||
title: false,
|
||||
closeBtn: 0,
|
||||
area: ['480px','400px'],
|
||||
shadeClose: true,
|
||||
content: $('#dashang_img')
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
<!-- 分享选项卡模板 -->
|
||||
<div id="share_div" style="display: none;">
|
||||
<div class="layui-tab layui-tab-brief" lay-filter="docDemoTabBrief">
|
||||
<ul class="layui-tab-title">
|
||||
<li class="layui-this">微信扫一扫</li>
|
||||
<li>复制链接</li>
|
||||
</ul>
|
||||
<div class="layui-tab-content" style="height: 100px;">
|
||||
<div class="layui-tab-item layui-show" align='center'>
|
||||
<p style="font-weight: 700;margin-bottom: 10px;">手机扫一扫进行分享</p>
|
||||
<div id="url_qrcode"></div>
|
||||
</div>
|
||||
<div class="layui-tab-item" align='center'>
|
||||
<input type="text" id="copy_crt_url" name="current_url" class="layui-input" /><br>
|
||||
<button class="layui-btn layui-btn-radius layui-btn-xs" style="background-color: #333;" onclick="copyUrl();">复制链接</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 动态添加广告代码 -->
|
||||
{% if debug %}
|
||||
{% else %}
|
||||
<div id="ad-1">
|
||||
{{ad_code|safe}}
|
||||
</div>
|
||||
<div id="ad-2">
|
||||
{{ad_code_2|safe}}
|
||||
</div>
|
||||
<div id="ad-3">
|
||||
{{ad_code_3|safe}}
|
||||
</div>
|
||||
|
||||
<!-- 打赏选项卡模板 -->
|
||||
<div id="dashang_img" style="display: none;">
|
||||
<div class="layui-tab layui-tab-brief">
|
||||
<ul class="layui-tab-title">
|
||||
<li class="layui-this">微信</li>
|
||||
<li>支付宝</li>
|
||||
<li>QQ支付</li>
|
||||
<li>PayPal</li>
|
||||
<li>项目源码</li>
|
||||
</ul>
|
||||
<div class="layui-tab-content" style="height: 100px;">
|
||||
<div class="layui-tab-item layui-show" align='center'>
|
||||
<img src="{% static 'dashang/dashang_wx.webp' %}" style="width: 300px;height: auto;" />
|
||||
</div>
|
||||
|
||||
<div class="layui-tab-item" align='center'>
|
||||
<img src="{% static 'dashang/dashang_alipay.webp' %}" style="width: 300px;height: auto;" />
|
||||
</div>
|
||||
|
||||
<div class="layui-tab-item" align='center'>
|
||||
<img src="{% static 'dashang/dashang_qq.webp' %}" style="width: 300px;height: auto;" />
|
||||
</div>
|
||||
|
||||
<div class="layui-tab-item" align='center'>
|
||||
<a href="https://paypal.me/zmister" target="_blank">
|
||||
<img src="{% static 'dashang/dashang_paypal.png' %}" style="width: 280px;height: auto;" />
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="layui-tab-item" align='center'>
|
||||
<p><a href="https://github.com/zmister2016/MrDoc" target="_blank">GitHub:https://github.com/zmister2016/MrDoc</a></p>
|
||||
<br>
|
||||
<p><a href="https://gitee.com/zmister/MrDoc" target="_blank">码云:https://gitee.com/zmister/MrDoc</a> </p>
|
||||
<br>
|
||||
<p><a href="https://zmister.com" target="_blank">作者博客:https://zmister.com</a></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
// 展开收起左边目录
|
||||
$(function(){
|
||||
// $(".switch-toc").click(SwitchToc);
|
||||
$("body").on('click','.switch-toc',SwitchToc)
|
||||
});
|
||||
function SwitchToc(i){
|
||||
console.log("点击了")
|
||||
var $me = $(this);
|
||||
$(this).parent().next("ul").toggleClass("toc-close"); //切换展开收起样式
|
||||
$(this).toggleClass("fa-chevron-left fa-chevron-down");//切换图标
|
||||
};
|
||||
|
||||
// 展开文档树
|
||||
function openDocTree(){
|
||||
$("nav ul.summary ul").each(function(obj){
|
||||
console.log(obj,this)
|
||||
$(this).removeClass("toc-close")
|
||||
$(this).prev().children('i').toggleClass("fa-chevron-left fa-chevron-down");//切换图标
|
||||
})
|
||||
|
||||
};
|
||||
// 收起文档树
|
||||
function closeDocTree(){
|
||||
$("nav ul.summary ul").each(function(obj){
|
||||
console.log(obj,this)
|
||||
$(this).addClass("toc-close")
|
||||
$(this).prev().children('i').toggleClass("fa-chevron-left fa-chevron-down");//切换图标
|
||||
})
|
||||
};
|
||||
// 文档分享 - 复制链接
|
||||
copyUrl = function(){
|
||||
var crt_url_val = document.getElementById("copy_crt_url");
|
||||
crt_url_val.select();
|
||||
window.clipb
|
||||
document.execCommand("Copy");
|
||||
layer.msg("链接复制成功!")
|
||||
}
|
||||
// 生成二维码
|
||||
var qrcode = new QRCode("url_qrcode", {
|
||||
text: document.URL,
|
||||
width: 200,
|
||||
height: 200,
|
||||
colorDark : "#000000",
|
||||
colorLight : "#ffffff",
|
||||
correctLevel : QRCode.CorrectLevel.H
|
||||
});
|
||||
$("#ad-1").appendTo($("#ad-code-1"));
|
||||
$("#ad-2").appendTo($("#ad-code-2"));
|
||||
$("#ad-3").appendTo($("#ad-code-3"));
|
||||
</script>
|
||||
{% endif %}
|
||||
<!-- 广告代码结束 -->
|
||||
|
||||
<!-- 统计代码开始 -->
|
||||
{% if debug %}
|
||||
|
@ -41,7 +41,16 @@
|
||||
{% endblock %}
|
||||
|
||||
{% block page_content %}
|
||||
{% if doc.editor_mode == 3 %}
|
||||
{{ doc.content | safe }}
|
||||
{% elif doc.editor_mode == 2 %}
|
||||
<textarea style="display: none;">{{ doc.pre_content }}</textarea>
|
||||
{% elif doc.editor_mode == 4 %}
|
||||
<div id="luckysheet" style="margin:0px;padding:0px;width:100%;min-height:500px;left: 0px;top: 0px;"></div>
|
||||
<textarea id="sheet_table_content" style="display: none;">{{ doc.pre_content }}</textarea>
|
||||
{% else %}
|
||||
<textarea style="display: none;">{{ doc.pre_content }}</textarea>
|
||||
{% endif %}
|
||||
|
||||
{% endblock %}
|
||||
|
||||
@ -104,10 +113,41 @@
|
||||
{% endblock %}
|
||||
|
||||
{% block right_widget %}
|
||||
<div class="tocMenu" style="display: none;">{% trans "目录" %}</div>
|
||||
<!-- 修改文档 -->
|
||||
{% if doc.create_user == request.user %}
|
||||
<a class="editDoc" href="{% url 'modify_doc' doc_id=doc.id %}" title="{% trans '修改文档' %}"><i class="fa fa-pencil"></i></a>
|
||||
{% endif %}
|
||||
<!-- 目录 -->
|
||||
<div class="tocMenu" style="display: none;"><i class="fa fa-list"></i></div>
|
||||
<!-- 分享按钮 -->
|
||||
{% if project.role == 1 and request.user == doc.create_user %}
|
||||
<div class="shareDoc" id="shareDoc"><i class="fa fa-share"></i></div>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
{% block custom_script %}
|
||||
<!-- 解析渲染Markdown -->
|
||||
<script>
|
||||
var editor_mode = {{ doc.editor_mode }};
|
||||
var pro_id = {{doc.top_doc}};
|
||||
var doc_id = {{doc.id}};
|
||||
initDocRender(mode=editor_mode);
|
||||
{% if doc.editor_mode != 2 %}
|
||||
// 图片放大显示
|
||||
var img_options = {
|
||||
url: 'data-original',
|
||||
fullscreen:false,//全屏
|
||||
rotatable:false,//旋转
|
||||
scalable:false,//翻转
|
||||
button:false,//关闭按钮
|
||||
toolbar:false,
|
||||
title:false,
|
||||
};
|
||||
var img_viewer = new Viewer(document.getElementById('content'), img_options);
|
||||
{% endif %}
|
||||
|
||||
</script>
|
||||
|
||||
<!-- 下载选项卡模板 -->
|
||||
<div id="download_div" style="display: none;">
|
||||
<div class="layui-row" style="margin: 10px;">
|
||||
@ -116,20 +156,71 @@
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<script src="{% static 'toc/doctoc.js' %}"></script>
|
||||
<script src="{% static 'viewerjs/viewer.js' %}"></script>
|
||||
<!-- 分享文档选项卡模板 -->
|
||||
<div id="share_doc_div" style="display: none;">
|
||||
<div class="layui-tab-content">
|
||||
<div class="layui-form layui-form-pane">
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">{% trans "分享" %}</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="checkbox" name="switch"
|
||||
lay-skin="switch" lay-text="{% trans '开启|关闭' %}" lay-filter="share-switch"
|
||||
{% if is_share and doc_share.is_enable %}checked{%endif%}
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form" style="display: {% if is_share and doc_share.is_enable %}block;{% else %}none;{% endif %}" id="share-link">
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">{% trans "链接" %}</label>
|
||||
<div class="layui-input-block" id='copy_link'>
|
||||
<input type="text" name="share_link" class="layui-input" id="share_link" readonly>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item" style="display:{% if is_share and doc_share.is_enable %}block;{% else %}none;{% endif %}" id="share-type">
|
||||
<label class="layui-form-label">{% trans "类型" %}</label>
|
||||
<div class="layui-input-block">
|
||||
{% if doc_share.share_type == 1 %}
|
||||
<input type="radio" name="share_type" value="0" title="{% trans '公开' %}" lay-filter="share_type">
|
||||
<input type="radio" name="share_type" value="1" title="{% trans '私密' %}" checked lay-filter="share_type">
|
||||
{% else %}
|
||||
<input type="radio" name="share_type" value="0" title="{% trans '公开' %}" checked lay-filter="share_type">
|
||||
<input type="radio" name="share_type" value="1" title="{% trans '私密' %}" lay-filter="share_type">
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="layui-form" style="display:{% if is_share and doc_share.is_enable and doc_share.share_type == 1 %}block;{% else %}none;{% endif %}" id="share_value_item">
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">{% trans "密码" %}</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" name="share_value" value='{{doc_share.share_value}}' disabled class="layui-input" id="share_doc_value">
|
||||
</div>
|
||||
<div class="layui-form-mid layui-word-aux">
|
||||
<button class="layui-btn layui-btn-xs layui-btn-primary" id="updateShareValue"><i class="fa fa-repeat"></i> {% trans "更新密码" %}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="{% static 'toc/doctoc.js' %}?version={{mrdoc_version}}"></script>
|
||||
<script>
|
||||
var layer = layui.layer;
|
||||
// 手机屏幕上默认最小化目录
|
||||
if(window.outerWidth < 1300){
|
||||
console.log('最小化目录');
|
||||
// setTimeout(function(){
|
||||
var form = layui.form;
|
||||
// Ajax默认配置
|
||||
$.ajaxSetup({
|
||||
data: {csrfmiddlewaretoken: '{{ csrf_token }}' },
|
||||
});
|
||||
// 非小屏默认展开文档目录
|
||||
if(window.innerWidth > 1650){
|
||||
$(".sidebar").toggleClass("doc-toc-hide");
|
||||
// },300)
|
||||
}
|
||||
// 切换文档目录显示与否
|
||||
$(".tocMenu").click(function() {
|
||||
console.log("隐藏文档目录")
|
||||
// console.log("切换文档目录显示")
|
||||
$(".sidebar").toggleClass("doc-toc-hide");
|
||||
});
|
||||
|
||||
@ -137,18 +228,6 @@
|
||||
$('#content').on('click','a',function(e){
|
||||
e.target.target = '_blank';
|
||||
});
|
||||
// 图片放大显示
|
||||
var img_options = {
|
||||
url: 'data-original',
|
||||
fullscreen:false,//全屏
|
||||
rotatable:false,//旋转
|
||||
scalable:false,//翻转
|
||||
button:false,//关闭按钮
|
||||
toolbar:false,
|
||||
title:false,
|
||||
};
|
||||
var viewer = new Viewer(document.getElementById('content'), img_options);
|
||||
|
||||
// 显示文档下载弹出框
|
||||
$("#download_doc").click(function(r){
|
||||
var layer = layui.layer;
|
||||
@ -161,7 +240,129 @@
|
||||
content: $('#download_div')
|
||||
});
|
||||
});
|
||||
|
||||
// 生成随机分享码
|
||||
function randomWord(randomFlag, min, max){
|
||||
var str = "",
|
||||
range = min,
|
||||
arr = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'];
|
||||
// 随机产生
|
||||
if(randomFlag){
|
||||
range = Math.round(Math.random() * (max-min)) + min;
|
||||
}
|
||||
for(var i=0; i<range; i++){
|
||||
pos = Math.round(Math.random() * (arr.length-1));
|
||||
str += arr[pos];
|
||||
}
|
||||
return str;
|
||||
};
|
||||
|
||||
// 更新文档分享状态
|
||||
function updateDocShare(data){
|
||||
$.post("{% url 'share_doc' %}",data,function(r){
|
||||
if(r.status){
|
||||
layer.msg("{% trans '设置成功' %}",{offset: 't'})
|
||||
console.log(r.data)
|
||||
$("input[name=share_link]").val(document.location.protocol + '//' + document.location.host + '/share_doc/?token=' + r.data.doc)
|
||||
}else{
|
||||
layer.msg("{% trans '设置出错' %}")
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// 分享文档
|
||||
$("#shareDoc").click(function(){
|
||||
layer.open({
|
||||
type:1,
|
||||
title:'{% trans "分享文档" %}:{{doc.name}}',
|
||||
content:$("#share_doc_div"),
|
||||
area:'450px',
|
||||
success : function(index, layero) { // 成功弹出后回调
|
||||
form.render();
|
||||
},
|
||||
})
|
||||
})
|
||||
{% if is_share %}
|
||||
$("input[name=share_link]").val(window.location.protocol + '//' + document.location.host + '/share_doc/?token={{doc_share.token}}')
|
||||
{% endif %}
|
||||
|
||||
var share_data = {
|
||||
'id':'{{doc.id}}',
|
||||
}
|
||||
|
||||
//监听链接栏被单击
|
||||
$('#copy_link').click(function(){
|
||||
var target = document.getElementById("share_link");
|
||||
// 选择内容
|
||||
target.focus();
|
||||
target.setSelectionRange(0, target.value.length);
|
||||
document.execCommand("copy");
|
||||
layer.msg('链接地址已复制', {
|
||||
time: 2000, //2s后自动关闭
|
||||
btn: '好的',
|
||||
btnAlign: 'c'
|
||||
});
|
||||
})
|
||||
|
||||
//监听分享框分享类型的单选事件
|
||||
form.on('radio(share_type)', function(data){
|
||||
// console.log(data.value); //被点击的radio的value值
|
||||
if(data.value == 0){ // 公开
|
||||
$("#share_value_item").css("display","none");
|
||||
share_data['share_type'] = 0;
|
||||
share_data['share_value'] = $("#share_doc_value").val();
|
||||
share_data['is_enable'] = true
|
||||
updateDocShare(share_data);
|
||||
|
||||
}else if(data.value == 1){ // 私密
|
||||
$("#share_value_item").css("display","block");
|
||||
{% if doc_share.share_value == '' or doc_share is None %}
|
||||
$("#share_doc_value").val(randomWord(false,4))
|
||||
{% endif %}
|
||||
share_data['share_type'] = 1;
|
||||
share_data['share_value'] = $("#share_doc_value").val();
|
||||
share_data['is_enable'] = true
|
||||
updateDocShare(share_data);
|
||||
}
|
||||
});
|
||||
|
||||
// 监听分享开关事件
|
||||
form.on('switch(share-switch)', function(data){
|
||||
console.log(data.elem.checked); //开关是否开启,true或者false
|
||||
if(data.elem.checked){ // 开启
|
||||
console.log("开启分享")
|
||||
$("#share-type").css('display',"block");
|
||||
$("#share-expire").css('display',"block");
|
||||
$("#share-link").css("display","block");
|
||||
if($("input[name='share_type']:checked").val() == 1){
|
||||
$("#share_value_item").css("display","block");
|
||||
}
|
||||
// 开启
|
||||
share_data['share_type'] = $("input[name='share_type']:checked").val();
|
||||
share_data['share_value'] = $("#share_doc_value").val();
|
||||
share_data['is_enable'] = true
|
||||
updateDocShare(share_data);
|
||||
}else{
|
||||
console.log("关闭分享")
|
||||
layer.msg("{% trans '关闭分享' %}",{offset: 't'})
|
||||
$("#share-type").css('display',"none")
|
||||
$("#share-expire").css('display',"none")
|
||||
$("#share_value_item").css("display","none");
|
||||
$("#share-link").css("display","none");
|
||||
share_data['share_type'] = $("input[name='share_type']:checked").val();
|
||||
share_data['share_value'] = $("#share_doc_value").val();
|
||||
share_data['is_enable'] = false
|
||||
updateDocShare(share_data);
|
||||
}
|
||||
});
|
||||
|
||||
// 更新文档分享密码
|
||||
$("#updateShareValue").click(function(){
|
||||
$("#share_doc_value").val(randomWord(false,4));
|
||||
share_data['share_type'] = 1;
|
||||
share_data['share_value'] = $("#share_doc_value").val();
|
||||
share_data['is_enable'] = true
|
||||
updateDocShare(share_data);
|
||||
})
|
||||
</script>
|
||||
|
||||
|
||||
{% endblock %}
|
Loading…
x
Reference in New Issue
Block a user