mirror of
https://github.com/zmister2016/MrDoc.git
synced 2025-04-18 20:40:48 +08:00
优化了文档和一些配置
This commit is contained in:
parent
a9e5030b8c
commit
79f64bb91c
@ -1,5 +1,12 @@
|
||||
## 版本更新记录
|
||||
|
||||
### v0.2.8 2020-01-15
|
||||
|
||||
- 文档页添加上一篇文档和下一篇文档链接;
|
||||
- 优化文集样式,私密文集会在首页和文集、文档页使用锁图标标识;
|
||||
- 优化文档搜索页面样式;
|
||||
- 在Django调试模式下(DEBUG=True)不启用统计代码和广告代码;
|
||||
|
||||
### v0.2.7 2020-01-01
|
||||
|
||||
- 添加文件权限控制功能,支持:公开、私密、指定用户可见、访问码可见4中权限模式;
|
||||
|
@ -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.7'
|
||||
VERSIONS = '0.2.8'
|
||||
|
||||
ALLOWED_HOSTS = ['*']
|
||||
|
||||
|
@ -11,7 +11,7 @@
|
||||
## 介绍
|
||||
基于Python的一个简单文档写作系统。
|
||||
|
||||
当前版本为:**v0.2.7**,版本发布时间为**2020-01-01**,更新记录详见:[CHANGES.md](./CHANGES.md)
|
||||
当前版本为:**v0.2.8**,版本发布时间为**2020-01-15**,更新记录详见:[CHANGES.md](./CHANGES.md)
|
||||
|
||||
|
||||
MrDoc拥有以下特点:
|
||||
|
@ -11,6 +11,8 @@ def sys_setting(request):
|
||||
setting_dict = dict()
|
||||
# 设置网站版本
|
||||
setting_dict['mrdoc_version'] = settings.VERSIONS
|
||||
# 设置debug状态
|
||||
setting_dict['debug'] = settings.DEBUG
|
||||
# 获取系统设置状态
|
||||
datas = SysSetting.objects.filter(types="basic")
|
||||
for data in datas:
|
||||
|
@ -29,3 +29,14 @@ def open_register(function):
|
||||
return function(request, *args, **kwargs)
|
||||
|
||||
return _inner
|
||||
|
||||
# 请求头验证
|
||||
def check_headers(function):
|
||||
def _inner(request,*args,**kwargs):
|
||||
metas = request.META
|
||||
if 'HTTP_COOKIE' not in metas:
|
||||
raise Http404
|
||||
elif 'HTTP_USER_AGENT' not in metas:
|
||||
raise Http404
|
||||
return function(request, *args, **kwargs)
|
||||
return _inner
|
@ -21,4 +21,98 @@ def get_doc_parent(value):
|
||||
if int(value) != 0:
|
||||
return Doc.objects.get(id=int(value))
|
||||
else:
|
||||
return '无上级文档'
|
||||
return '无上级文档'
|
||||
|
||||
# 获取文档的下一篇文档
|
||||
@register.filter(name='get_doc_next')
|
||||
def get_doc_next(value):
|
||||
try:
|
||||
doc_id = value
|
||||
doc = Doc.objects.get(id=int(doc_id)) # 当前文档
|
||||
docs = Doc.objects.filter(parent_doc=doc.parent_doc, top_doc=doc.top_doc, status=1).order_by('sort') # 同级所有文档
|
||||
docs_list = [d.id for d in docs]
|
||||
|
||||
subdoc = Doc.objects.filter(parent_doc=doc.id,top_doc=doc.top_doc, status=1) # 获取当前文档的所有子级文档
|
||||
|
||||
# 没有下级文档
|
||||
if subdoc.count() == 0:
|
||||
# 如果文档为同级最后一个文档,则没有下一篇文档
|
||||
if docs_list.index(doc.id) == len(docs_list) - 1:
|
||||
try:
|
||||
parentdoc = Doc.objects.get(id=doc.parent_doc) # 获取当前文档的上级文档
|
||||
parents = Doc.objects.filter(parent_doc=parentdoc.parent_doc, top_doc=doc.top_doc, status=1).order_by('sort') # 获取上级文档的所有同级文档
|
||||
parent_list = [d.id for d in parents]
|
||||
except:
|
||||
return None
|
||||
if parent_list.index(parentdoc.id) == len(parent_list) - 1:
|
||||
# 获取上级文档的上一级文档
|
||||
try:
|
||||
parentdoc2 = Doc.objects.get(id=parentdoc.parent_doc)
|
||||
parents2 = Doc.objects.filter(parent_doc = parentdoc2.parent_doc,top_doc=parentdoc.top_doc,status=1).order_by('sort')
|
||||
parent_list2 = [d.id for d in parents2]
|
||||
except:
|
||||
return None
|
||||
if parent_list2.index(parentdoc2.id) == len(parent_list2) - 1:
|
||||
next_doc = None
|
||||
return next_doc
|
||||
else:
|
||||
next_id = parent_list2[parent_list2.index(parentdoc2.id) + 1]
|
||||
return next_id
|
||||
else:
|
||||
next_id = parent_list[parent_list.index(parentdoc.id) + 1]
|
||||
return next_id
|
||||
else:
|
||||
next_id = docs_list[docs_list.index(doc.id) + 1]
|
||||
next_doc = Doc.objects.get(id=next_id)
|
||||
# print("下一篇:", next_doc.id, next_doc)
|
||||
return next_doc.id
|
||||
# 存在下级文档
|
||||
else:
|
||||
# 下一篇文档为下级第一篇文档
|
||||
next_doc = subdoc.order_by('sort')[0]
|
||||
# print("下一篇:", next_doc.id, next_doc)
|
||||
return next_doc.id
|
||||
except Exception as e:
|
||||
import traceback
|
||||
print(traceback.print_exc())
|
||||
|
||||
# 获取文档的上一篇文档
|
||||
@register.filter(name='get_doc_previous')
|
||||
def get_doc_previous(value):
|
||||
try:
|
||||
doc_id = value
|
||||
doc = Doc.objects.get(id=int(doc_id)) # 当前文档
|
||||
docs = Doc.objects.filter(parent_doc=doc.parent_doc,top_doc=doc.top_doc,status=1).order_by('sort') # 同级所有文档
|
||||
docs_list = [d.id for d in docs]
|
||||
# 文档为同级中的第一个,
|
||||
if docs_list.index(doc.id) == 0:
|
||||
# 如果其为顶级文档,那么没有上一篇文档,
|
||||
if doc.parent_doc == 0:
|
||||
# print("无上一篇文档")
|
||||
previous = None
|
||||
return previous
|
||||
# 如果其为次级文档,那么其上一篇文档为上级文档
|
||||
else:
|
||||
previous = Doc.objects.get(id=doc.parent_doc) # 获取
|
||||
# print("上一篇:", previous.id, previous)
|
||||
return previous.id
|
||||
# 文档为同级中的非第一个,那么上一篇为索引号的前一个文档
|
||||
else:
|
||||
previou_id = docs_list[docs_list.index(doc.id) - 1] # 获取前一个文档的ID
|
||||
previous = Doc.objects.get(id=previou_id) # 获取前一个文档
|
||||
# 查询以此文档为上级的文档
|
||||
previous_subdoc = Doc.objects.filter(parent_doc=previous.id,top_doc=doc.top_doc,status=1).order_by('-sort')
|
||||
# 如果没有文档以此文档为上级文档,那么为上一篇文档
|
||||
if previous_subdoc.count() == 0:
|
||||
return previou_id
|
||||
else:# 否则,上一篇文档为以此文档作为上级文档的文档里面的最后一篇文档
|
||||
previous = previous_subdoc[:1][0]
|
||||
parent_list = Doc.objects.filter(parent_doc=previous.id,top_doc=doc.top_doc,status=1).order_by('-sort')
|
||||
if parent_list.count() == 0:
|
||||
return previous.id
|
||||
else:
|
||||
previous = parent_list[:1][0]
|
||||
return previous.id
|
||||
except Exception as e:
|
||||
import traceback
|
||||
print(traceback.print_exc())
|
@ -11,6 +11,7 @@ from django.db.models import Q
|
||||
import datetime
|
||||
import traceback
|
||||
from app_doc.report_utils import *
|
||||
from app_admin.decorators import check_headers
|
||||
|
||||
|
||||
# 文集列表
|
||||
@ -53,6 +54,7 @@ def create_project(request):
|
||||
|
||||
# 文集页
|
||||
@require_http_methods(['GET'])
|
||||
@check_headers
|
||||
def project_index(request,pro_id):
|
||||
# 获取文集
|
||||
try:
|
||||
|
@ -223,7 +223,7 @@ body, html {
|
||||
background: #fff;
|
||||
border-bottom: 1px solid rgba(0,0,0,.07);
|
||||
border-top: 1px solid rgba(0,0,0,.07);
|
||||
/*margin-bottom: 10px;*/
|
||||
border-radius:9px;
|
||||
margin-top: -1px;
|
||||
}
|
||||
.doc-summary ul.summary {
|
||||
|
@ -40,7 +40,7 @@
|
||||
<div class="layui-form-item layui-form-text">
|
||||
<label class="layui-form-label">统计代码</label>
|
||||
<div class="layui-input-block">
|
||||
<textarea name="static_code" placeholder="如果需要调用第三方的统计功能,请将第三方统计工具代码输入至此,可以包含<script>标签" class="layui-textarea"></textarea>
|
||||
<textarea name="static_code" placeholder="如果需要调用第三方的统计功能,请将第三方统计工具代码输入至此,可以包含<script>标签" class="layui-textarea">{{static_code}}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
@ -33,4 +33,24 @@
|
||||
}
|
||||
</style>
|
||||
<textarea id="" style="display: none;">{{ doc.pre_content }}</textarea>
|
||||
{% endblock %}
|
||||
|
||||
{% block doc_previous_next %}
|
||||
{% load doc_filter %}
|
||||
<div class="layui-row" style="margin-top: 10px;padding:10px;display:flex;justify-content:space-around;">
|
||||
<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>
|
||||
{% else %}
|
||||
<a href="{% url 'doc' doc.top_doc doc.id|get_doc_previous %}" class="layui-btn layui-btn-normal layui-btn-sm"><i class="layui-icon layui-icon-prev "></i>上一篇</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div>
|
||||
{% if doc.id|get_doc_next == None %}
|
||||
<button class="layui-btn layui-btn-disabled layui-btn-sm">下一篇<i class="layui-icon layui-icon-next"></i></button>
|
||||
{% else %}
|
||||
<a href="{% url 'doc' doc.top_doc doc.id|get_doc_next %}" class="layui-btn layui-btn-normal layui-btn-sm">下一篇<i class="layui-icon layui-icon-next"></i></a>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
@ -45,7 +45,11 @@
|
||||
</form>
|
||||
<!-- 文集名称 -->
|
||||
<div class="project-title">
|
||||
<a href="{% url 'pro_index' pro_id=project.id %}">{{ project.name }}</a>
|
||||
<a href="{% url 'pro_index' pro_id=project.id %}">{{ project.name }}
|
||||
{% if project.role == 1 %}
|
||||
<i class="layui-icon layui-icon-password"></i>
|
||||
{% endif %}
|
||||
</a>
|
||||
</div>
|
||||
<hr>
|
||||
<!-- 遍历文集大纲 -->
|
||||
@ -89,7 +93,7 @@
|
||||
</ul>
|
||||
</nav>
|
||||
<div class="bq">
|
||||
<a href="" class="mrdoc-link">本文档使用MrDoc发布</a>
|
||||
<a href="https://gitee.com/zmister/MrDoc" target="_blank" class="mrdoc-link">本文档使用MrDoc发布</a>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 左侧目录栏结束 -->
|
||||
@ -132,10 +136,13 @@
|
||||
{% endblock %}
|
||||
|
||||
<!-- 广告代码开始 -->
|
||||
{% if ad_code %}
|
||||
<div class="ad-code">
|
||||
{{ ad_code | safe }}
|
||||
</div>
|
||||
{% if debug %}
|
||||
{% else %}
|
||||
{% if ad_code %}
|
||||
<div class="ad-code">
|
||||
{{ ad_code | safe }}
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
<!-- 广告代码结束 -->
|
||||
</div>
|
||||
@ -151,6 +158,7 @@
|
||||
<div class="doc-cata">
|
||||
<div id="toc-container"></div>
|
||||
</div>
|
||||
{% block doc_previous_next %}{% endblock %}
|
||||
<!-- 社交分享 -->
|
||||
<div class="share-div" style="margin-top: 10px;padding:10px;text-align: center;background-color: #fafafa">
|
||||
分享到:<span class="social-share"></span>
|
||||
@ -342,7 +350,10 @@
|
||||
</script>
|
||||
|
||||
<!-- 统计代码开始 -->
|
||||
{{ static | safe }}
|
||||
{% if debug %}
|
||||
{% else %}
|
||||
{{ static_code | safe }}
|
||||
{% endif %}
|
||||
<!-- 统计代码结束 -->
|
||||
{% endblock %}
|
||||
</body>
|
||||
|
@ -26,7 +26,14 @@
|
||||
<a href="{% url 'pro_index' p.id %}">
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-header">
|
||||
<strong>{{ p.name }}</strong>
|
||||
{% if p.role == 1 %}
|
||||
<strong><i class="layui-icon layui-icon-password"></i> {{ p.name }}</strong>
|
||||
{% elif p.role == 2 %}
|
||||
<strong><i class="layui-icon layui-icon-user"></i> {{ p.name }}</strong>
|
||||
{% else %}
|
||||
<strong>{{ p.name }}</strong>
|
||||
{% endif %}
|
||||
|
||||
</div>
|
||||
<div class="layui-card-body">
|
||||
<p>作者:{{p.create_user}}</p>
|
||||
@ -151,7 +158,10 @@
|
||||
};
|
||||
</script>
|
||||
<!-- 统计代码开始 -->
|
||||
{{ static | safe }}
|
||||
{% if debug %}
|
||||
{% else %}
|
||||
{{ static_code | safe }}
|
||||
{% endif %}
|
||||
<!-- 统计代码结束 -->
|
||||
{% endblock %}
|
||||
</body>
|
||||
|
@ -3,7 +3,7 @@
|
||||
<!-- 引入静态文件 -->
|
||||
{% load staticfiles %}
|
||||
|
||||
{% block title %}搜索{{kw}}结果 - {{ project.name }}{% endblock %}
|
||||
{% block title %}搜索“{{kw}}”的结果 - {{ project.name }}{% endblock %}
|
||||
|
||||
{% block head_toolbar %}
|
||||
{% if request.user == project.create_user %}
|
||||
@ -14,7 +14,7 @@
|
||||
{% endblock %}
|
||||
|
||||
{% block content_head %}
|
||||
<h1>搜索{{kw}}共有{{ search_result.count }}个结果 - {{project.name}}</h1><hr>
|
||||
<h1>搜索“{{kw}}”共有{{ search_result.count }}个结果 - {{project.name}}</h1><hr>
|
||||
{% endblock %}
|
||||
|
||||
{% block page_content %}
|
||||
|
Loading…
x
Reference in New Issue
Block a user