优化了一些细节

This commit is contained in:
yangjian 2020-02-17 23:02:53 +08:00
parent 79f64bb91c
commit 460327492c
12 changed files with 124 additions and 28 deletions

View File

@ -1,5 +1,15 @@
## 版本更新记录
### v0.2.9 2020-02-17
- 优化文本编辑器排版
- 优化文档发布成功时候的跳转路径
- 优化编辑器预览的样式
- 添加页脚信息
- 优化文档修改页面排版
- 添加文档编辑页面中文集的权限显示
### v0.2.8 2020-01-15
- 文档页添加上一篇文档和下一篇文档链接;

View File

@ -25,7 +25,7 @@ SECRET_KEY = '5&71mt9@^58zdg*_!t(x6g14q*@84d%ptr%%s6e0l50zs0we3d'
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = False
VERSIONS = '0.2.8'
VERSIONS = '0.2.9'
ALLOWED_HOSTS = ['*']

View File

@ -309,7 +309,7 @@ def create_doc(request):
create_user=request.user,
status = status
)
return JsonResponse({'status':True,'data':doc.id})
return JsonResponse({'status':True,'data':{'pro':project,'doc':doc.id}})
else:
return JsonResponse({'status':False,'data':'参数错误'})
except Exception as e:

4
static/jquery/3.1.1/jquery.min.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@ -13,12 +13,24 @@
<link rel="stylesheet" href="{% static 'editor.md/css/editormd.css' %}" />
<link href="{% static 'mrdoc.css' %}?version={{mrdoc_version}}" rel="stylesheet">
<link rel="icon" href="{% static 'favicon_16.png' %}"/>
<style>
.markdown-body ul li{
list-style:disc;
}
.markdown-body ul > li > ul > li{
list-style-type: circle;
}
.markdown-body ol li{
list-style-type: decimal;
}
</style>
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script>
<![endif]-->
{% block custom_style %}{% endblock %}
</head>
<body class="layui-container">
<!-- 页头 -->
@ -54,7 +66,7 @@
"h1", "h2", "h3", "h4", "h5", "h6", "|",
"list-ul", "list-ol", "hr", "|",
"link", "reference-link", "image", "code", "preformatted-text", "code-block", "table", "datetime", "emoji", "html-entities", "pagebreak", "|",
"watch", "preview", "clear", "search", "|",
"watch", "preview", "|",
"help"
]
},
@ -102,6 +114,7 @@
//未保存离开提示
window.onbeforeunload =function() {
   if(md_changed){
//console.log("页面未保存数据")
return 1;
}else{
return null;

View File

@ -15,7 +15,6 @@
</div><br>
<div class="layui-row">
<div class="layui-col-md4 layui-col-sm6 " style="padding-bottom:10px;">
<label class="doc-form-label"><i class="fa fa-file-text"></i> 所属文集</label>
<div class="layui-input-inline">
@ -23,7 +22,15 @@
<option value=""></option>
<option value="-1">新建文集</option>
{% for p in project_list %}
<option value="{{ p.id }}">《{{ p.name }}》</option>
{% if p.role == 1 %}
<option value="{{ p.id }}">[私密]《{{ p.name }}》</option>
{% elif p.role == 2 %}
<option value="{{ p.id }}">[指定用户]《{{ p.name }}》</option>
{% elif p.role == 3 %}
<option value="{{ p.id }}">[访问码]《{{ p.name }}》</option>
{% else %}
<option value="{{ p.id }}">[公开]《{{ p.name }}》</option>
{% endif %}
{% endfor %}
</select>
</div>
@ -146,12 +153,16 @@
$.post("{% url 'create_doc' %}",data,function(r){
if(r.status){
//创建成功
layer.msg('发布成功',function(){
window.location.href = "{% url 'pro_list' %}";
layer.msg('发布文档成功,即将跳转到文档页面',function(){
md_changed = false;
//跳转到首页
//window.location.href = "{% url 'pro_list' %}";
//跳转到发布的文档
window.location.href = "/project/" + r.data.pro + "/" + r.data.doc
});
}else{
//创建失败
layer.msg('保存失败:'+r.data);
layer.msg('发布文档失败:'+r.data);
}
});
}
@ -178,12 +189,12 @@
$.post("{% url 'create_doc' %}",data,function(r){
if(r.status){
//创建成功
layer.msg('保存成功',function(){
layer.msg('保存草稿成功',function(){
window.location.href = "/modify_doc/"+r.data+"/";
});
}else{
//创建失败
layer.msg('保存失败:'+r.data);
layer.msg('保存草稿失败:'+r.data);
}
});
}

View File

@ -3,6 +3,8 @@
<!-- 引入静态文件 -->
{% load staticfiles %}
{% block keyword %}{{ doc.name }},{{ project.name }},{% endblock %}
{% block description %}{{doc.pre_content | slice:"0:100"}}{% endblock %}
{% block title %}{{ doc.name }} - {{ project.name }}{% endblock %}
{% block head_toolbar %}
@ -37,7 +39,8 @@
{% block doc_previous_next %}
{% load doc_filter %}
<div class="layui-row" style="margin-top: 10px;padding:10px;display:flex;justify-content:space-around;">
<div class="layui-row" style="margin-top: 10px;padding:10px;display:flex;justify-content:space-around;border-top: 1px #e6e6e6 solid;">
<hr>
<div>
{% if doc.id|get_doc_previous == None %}
<button class="layui-btn layui-btn-disabled layui-btn-sm"><i class="layui-icon layui-icon-prev "></i>上一篇</button>

View File

@ -8,6 +8,8 @@
<meta http-equiv="Cache-Control" content="no-siteapp" />
<meta http-equiv="Cache-Control" content="max-age=7200" />
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<meta name="keywords" content="{% block keyword %}{% endblock %}mrdoc"/>
<meta name="description" content="{% block description %}{% endblock %}" />
<title>{% block title %}{% endblock %} - MrDoc</title>
<link href="{% static 'layui/css/layui.css' %}" rel="stylesheet">
<link rel="stylesheet" href="{% static 'editor.md/css/editormd.css' %}" />

View File

@ -0,0 +1,6 @@
<div class="layui-footer" style="border-top: 1px #e6e6e6 solid;text-align:center;margin:20px;width:100%;">
<div style="margin-top:10px;">
© <a href="/">MrDoc 2019</a>&nbsp;-&nbsp;
基于<a href="https://www.djangoproject.com/" target="_blank">Django框架</a>&nbsp;-&nbsp;
<a href="https://zmister.com" target="_blank">州的先生</a>出品</div>
</div>

View File

@ -25,6 +25,16 @@
</li>
</ul>
</div>
<!-- 州的先生博客链接 -->
<div class="layui-hide-xs" style="">
<ul class="layui-nav" style="">
<li class="layui-nav-item">
<a href="https://zmister.com" target="_blank">
<i class="layui-icon layui-icon-website"></i> <span class="">州的先生</span>
</a>
</li>
</ul>
</div>
<!-- 用户菜单 -->
<div class="">
<ul class="layui-nav layui-layout-right">

View File

@ -20,26 +20,40 @@
{% block content %}
<div class="create-doc-form">
<div class="layui-form">
<label class="doc-form-label">标题</label>
<div class="layui-input-inline">
<input type="text" name="doc-name" id="doc-name" required lay-verify="required" placeholder="请输入文档标题" value="{{ doc.name }}" class="layui-input" >
</div>
<!-- 标题 -->
<div>
<label class="layui-form-label" style="padding-left:0px;padding-right:0px;"><i class="layui-icon layui-icon-edit"></i> 文档标题</label>
<div class="layui-input-block" style="margin-left:95px;">
<input type="text" name="doc-name" id="doc-name" required lay-verify="required" placeholder="请输入文档标题" value="{{ doc.name }}" class="layui-input">
</div>
</div><br>
<!--<label class="doc-form-label">标题</label>-->
<!--<div class="layui-input-inline">-->
<!--<input type="text" name="doc-name" id="doc-name" required lay-verify="required" placeholder="请输入文档标题" value="{{ doc.name }}" class="layui-input" >-->
<!--</div>-->
<label class="doc-form-label">文集</label>
<div class="layui-input-inline">
<select name="pro_id" lay-verify="required" lay-filter="project" id="project" disabled>
<option value="{{ project.id }}">{{ project.name }}</option>
</select>
</div>
<label class="doc-form-label">上级文档</label>
<div class="layui-input-inline">
<select name="parent_id" lay-verify="required" id="parent-doc">
<option value="0"></option>
</select>
</div>
<label class="doc-form-label">排序</label>
<div class="layui-input-inline">
<input class="layui-input" placeholder="99" style="width:50px;" name="sort" id="sort" value="{{doc.sort}}"/>
</div>
<label class="doc-form-label">
<button class="layui-btn layui-btn-primary layui-btn-sm" id="sel-doctemp">插入模板</button>
</label>
@ -49,6 +63,7 @@
<label class="doc-form-label">
<button class="layui-btn layui-btn-normal layui-btn-sm" onclick="createDoc()">发布文档</button>
</label>
</div>
</div>
<div id="editor-md">

View File

@ -7,6 +7,8 @@
<meta http-equiv="Cache-Control" content="no-transform" />
<meta http-equiv="Cache-Control" content="no-siteapp" />
<meta http-equiv="Cache-Control" content="max-age=7200" />
<meta name="keywords" content="mrdoc,markdown,文档写作,在线教程"/>
<meta name="description" content="MrDoc是由州的先生zmister.com开发的基于Python的Django框架的在线MarkDown文档写作系统。" />
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<title>MrDoc - 一个简单的文档写作系统</title>
<link href="{% static 'layui/css/layui.css' %}" rel="stylesheet">
@ -19,7 +21,7 @@
<!-- 页头结束 -->
<!-- 主体 -->
<div class="" style="display:flex;flex-wrap:wrap;">
<div class="layui-container project-list-content" style="display:flex;flex-wrap:wrap;">
<!-- 遍历文集列表 -->
{% for p in project_list %}
<div class="project-item layui-col-md3 layui-col-xs12">
@ -51,20 +53,14 @@
</a>
</div>
{% endfor %}
<!-- 新建文档 -->
<!--<div class="project-item layui-hide-xs">-->
<!--<a href="{% url 'create_doc' %}" target="_blank">-->
<!--<div class="layui-card">-->
<!--<div class="layui-card-header"><i class="layui-icon layui-icon-add-1"></i> 创建文档</div>-->
<!--<div class="layui-card-body">-->
<!--新建一个文档,马上开始写作……-->
<!--</div>-->
<!--</div>-->
<!--</a>-->
<!--</div>-->
</div>
<!-- 主体结束 -->
<script src="https://cdn.bootcss.com/jquery/3.1.1/jquery.min.js"></script>
<!-- 页脚 -->
{% include 'app_doc/foot_base.html' %}
<!-- 页脚结束 -->
<script src="{% static 'jquery/3.1.1/jquery.min.js' %}"></script>
<script src="{% static 'layui/layui.all.js' %}"></script>
{% block custom_script %}
<script>
@ -163,6 +159,32 @@
{{ static_code | safe }}
{% endif %}
<!-- 统计代码结束 -->
<script>
$(window).bind("load", function() {
var footerHeight = 0;
var footerTop = 0;
positionFooter();
function positionFooter() {
// 获取页脚的高度
footerHeight = $(".layui-footer").height();
// 获取页脚的高度
/*
scrollTop() 设置或获取位于对象最顶端和窗口中可见内容的最顶端之间的距离
*/
footerTop = ($(window).scrollTop()+$(window).height()-footerHeight-40)+"px";
console.log(footerHeight)
console.log(footerTop)
console.log($(".layui-header").height()+$(".layui-container").height())
console.log($(window).height())
//如果页面内容高度小于屏幕高度div#footer将绝对定位到屏幕底部否则div#footer保留它的正常静态定位
if(($(".layui-header").height()+$(".project-list-content").height()) < $(window).height()) {
console.log("页脚置底")
$(".layui-footer").css({ position: "absolute",left:"0" }).stop().css({top:footerTop});
}
}
//$(window).scroll(positionFooter).resize(positionFooter);
});
</script>
{% endblock %}
</body>
</html>