diff --git a/CHANGES.md b/CHANGES.md index caaf5e4..6b59d08 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,5 +1,15 @@ ## 版本更新记录 +### v0.5.7 2020-08 + +- 修复搜索的权限问题 +- 修复文集协作的权限问题; +- 优化文档目录显示; +- 优化文集协作管理; + + +- 优化文档编辑器排版; + ### v0.5.6 2020-07-31 - 修复Markdown编辑器插入图片、表格、音视频等内容时光标丢失的问题; diff --git a/MrDoc/settings.py b/MrDoc/settings.py index 094dd5c..b0bce77 100644 --- a/MrDoc/settings.py +++ b/MrDoc/settings.py @@ -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.5.6' +VERSIONS = '0.5.7' ALLOWED_HOSTS = ['*'] diff --git a/README.md b/README.md index bf707c0..db5f856 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ ## MrDoc觅道文档 - 记录文档,汇聚思想 - [English](./README_ENG.md) -![mrdoc](https://img.shields.io/badge/MrDoc-v0.5.6-brightgreen.svg) ![python](https://img.shields.io/badge/Python-3.5+-blue.svg) ![mrdoc](https://img.shields.io/badge/Django-v2.2-important.svg) +![mrdoc](https://img.shields.io/badge/MrDoc-v0.5.7-brightgreen.svg) ![python](https://img.shields.io/badge/Python-3.5+-blue.svg) ![mrdoc](https://img.shields.io/badge/Django-v2.2-important.svg) ![Mrdoc首页](./captrue/mrdoc-index.png) diff --git a/README_ENG.md b/README_ENG.md index 905c446..cd4797e 100644 --- a/README_ENG.md +++ b/README_ENG.md @@ -1,6 +1,6 @@ ## MrDoc - Writing documents, gathering ideas -![mrdoc](https://img.shields.io/badge/MrDoc-v0.5.6-brightgreen.svg) ![python](https://img.shields.io/badge/Python-3.5+-blue.svg) ![mrdoc](https://img.shields.io/badge/Django-v2.2-important.svg) +![mrdoc](https://img.shields.io/badge/MrDoc-v0.5.7-brightgreen.svg) ![python](https://img.shields.io/badge/Python-3.5+-blue.svg) ![mrdoc](https://img.shields.io/badge/Django-v2.2-important.svg) ![Mrdoc首页](./captrue/mrdoc-index.png) diff --git a/app_doc/views.py b/app_doc/views.py index 9748f82..2160388 100644 --- a/app_doc/views.py +++ b/app_doc/views.py @@ -454,7 +454,9 @@ def manage_project_collaborator(request,pro_id): if request.method == 'GET': pro = project[0] - collaborator = ProjectCollaborator.objects.filter(project=pro) + collaborator = ProjectCollaborator.objects.filter(project=pro) # 获取文集的协作者 + colla_user_list = [i.user for i in collaborator] # 文集协作用户的ID + colla_docs = Doc.objects.filter(top_doc=pro.id,create_user__in=colla_user_list) # 获取文集协作用户创建的文档 return render(request, 'app_doc/manage_project_collaborator.html', locals()) elif request.method == 'POST': @@ -637,9 +639,18 @@ def modify_doc(request,doc_id): doc = Doc.objects.get(id=doc_id) # 查询文档信息 project = Project.objects.get(id=doc.top_doc) # 查询文档所属的文集信息 pro_colla = ProjectCollaborator.objects.filter(project=project,user=request.user) # 查询用户的协作文集信息 + if pro_colla.count() == 0: + is_pro_colla = False + elif pro_colla[0].role == 1: + is_pro_colla = True + else: + is_pro_colla = False project_list = Project.objects.filter(create_user=request.user) # 自己创建的文集列表 colla_project_list = ProjectCollaborator.objects.filter(user=request.user) # 协作的文集列表 - if (request.user == doc.create_user) or (pro_colla[0].role == 1): + # 判断用户是否有权限进行修改 + if (request.user == doc.create_user) or \ + (is_pro_colla is True) or \ + (request.user == project.create_user): doc_list = Doc.objects.filter(top_doc=project.id) doctemp_list = DocTemp.objects.filter(create_user=request.user) history_list = DocHistory.objects.filter(doc=doc).order_by('-create_time') @@ -652,7 +663,7 @@ def modify_doc(request,doc_id): elif request.method == 'POST': try: doc_id = request.POST.get('doc_id','') # 文档ID - project = request.POST.get('project', '') # 文集ID + project_id = request.POST.get('project', '') # 文集ID parent_doc = request.POST.get('parent_doc', '') # 上级文档ID doc_name = request.POST.get('doc_name', '') # 文档名称 doc_content = request.POST.get('content', '') # 文档内容 @@ -660,11 +671,18 @@ def modify_doc(request,doc_id): sort = request.POST.get('sort', '') # 文档排序 status = request.POST.get('status',1) # 文档状态 - if doc_id != '' and project != '' and doc_name != '' and project != '-1': + if doc_id != '' and project_id != '' and doc_name != '' and project_id != '-1': doc = Doc.objects.get(id=doc_id) + project = Project.objects.get(id=project_id) pro_colla = ProjectCollaborator.objects.filter(project=project, user=request.user) + if pro_colla.count() == 0: + is_pro_colla = False + elif pro_colla[0].role == 1: + is_pro_colla = True + else: + is_pro_colla = False # 验证用户有权限修改文档 - 文档的创建者或文集的高级协作者 - if (request.user == doc.create_user) or (pro_colla[0].role == 1): + if (request.user == doc.create_user) or (is_pro_colla is True) or (request.user == project.create_user): # 将现有文档内容写入到文档历史中 DocHistory.objects.create( doc = doc, diff --git a/static/editor.md/editormd.js b/static/editor.md/editormd.js index df8dfd9..81f29ae 100644 --- a/static/editor.md/editormd.js +++ b/static/editor.md/editormd.js @@ -3720,15 +3720,17 @@ text = trim(text); + var isChinese = /^[\u4e00-\u9fa5]+$/.test(text); + //var id = (isChinese) ? escape(text).replace(/\%/g, "") : text.toLowerCase().replace(/[^\w]+/g, "-"); + var id = escape(text.toLowerCase().replace(' ','')).replace(/\%/g, "") // 生成包含中文编码的标题ID + var escapedText = text.toLowerCase().replace(/[^\w]+/g, "-"); var toc = { text : text, level : level, - slug : escapedText + slug : escapedText, + id : "h"+ level + "-" + this.options.headerPrefix + id }; - - var isChinese = /^[\u4e00-\u9fa5]+$/.test(text); - var id = (isChinese) ? escape(text).replace(/\%/g, "") : text.toLowerCase().replace(/[^\w]+/g, "-"); markdownToC.push(toc); @@ -3884,6 +3886,7 @@ { var text = toc[i].text; var level = toc[i].level; + var id = toc[i].id; if (level < startLevel) { continue; @@ -3902,7 +3905,8 @@ html += ""; } - html += "
  • " + text + "