diff --git a/app_doc/migrations/0036_auto_20201229_2004.py b/app_doc/migrations/0036_auto_20201229_2004.py new file mode 100644 index 0000000..3d897c3 --- /dev/null +++ b/app_doc/migrations/0036_auto_20201229_2004.py @@ -0,0 +1,28 @@ +# Generated by Django 2.2.12 on 2020-12-29 20:04 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('app_doc', '0035_auto_20201221_2042'), + ] + + operations = [ + migrations.AddField( + model_name='project', + name='is_watermark', + field=models.BooleanField(default=False, verbose_name='水印状态'), + ), + migrations.AddField( + model_name='project', + name='watermark_type', + field=models.IntegerField(default=1, verbose_name='水印类型'), + ), + migrations.AddField( + model_name='project', + name='watermark_value', + field=models.CharField(blank=True, default='', max_length=250, null=True, verbose_name='水印内容'), + ), + ] diff --git a/app_doc/models.py b/app_doc/models.py index 792b588..d694331 100644 --- a/app_doc/models.py +++ b/app_doc/models.py @@ -10,6 +10,9 @@ class Project(models.Model): # 文集权限说明:0表示公开,1表示私密,2表示指定用户可见,3表示访问码可见 默认公开 role = models.IntegerField(choices=((0,0),(1,1),(2,2),(3,3)), default=0,verbose_name="文集权限") role_value = models.TextField(verbose_name="文集权限值",blank=True,null=True) + is_watermark = models.BooleanField(verbose_name="水印状态",default=False) + watermark_type = models.IntegerField(verbose_name="水印类型",default=1) # 1表示文字水印 2表示图片水印 + watermark_value = models.CharField(verbose_name="水印内容",null=True,blank=True,default='',max_length=250) create_user = models.ForeignKey(User,on_delete=models.CASCADE) create_time = models.DateTimeField(auto_now_add=True) modify_time = models.DateTimeField(auto_now=True) diff --git a/app_doc/views.py b/app_doc/views.py index 9173bee..72bbdd4 100644 --- a/app_doc/views.py +++ b/app_doc/views.py @@ -397,9 +397,17 @@ def modify_project(request): name = request.POST.get('name',None) icon = request.POST.get('picon', None) content = request.POST.get('desc',None) + is_watermark = request.POST.get('is_watermark',False) + if is_watermark == 'true': + is_watermark = True + else: + is_watermark = False + watermark_value = request.POST.get('watermark_value','') project.name = validateTitle(name) project.intro = content project.icon = icon + project.is_watermark = is_watermark + project.watermark_value = watermark_value project.save() return JsonResponse({'status':True,'data':'修改成功'}) else: diff --git a/static/mrdoc/mrdoc-docs.css b/static/mrdoc/mrdoc-docs.css index 8affc50..efb7f0e 100644 --- a/static/mrdoc/mrdoc-docs.css +++ b/static/mrdoc/mrdoc-docs.css @@ -1,90 +1,104 @@ - /*一级无序li显示实心圆点*/ - .doc-content ul li{ - list-style:disc; - } - /*二级无序li显示空心圆点*/ - .doc-content ul > li > ul > li{ - list-style-type: circle; - } - /*有序li显示数字*/ - .doc-content ol li{ - list-style-type: decimal; - } - .doc-content ol ol ul,.doc-content ol ul ul,.doc-content ul ol ul,.doc-content ul ul ul { - list-style-type: square; - } - /* 三级及以下无序li显示小方块 */ - .doc-content ul ul ul li{ - list-style-type: square; - } - /* 下拉目录隐藏li样式 */ - .editormd-toc-menu ul.markdown-toc-list li{ - /*list-style:none;*/ - } - /* 弹出框文档目录样式 */ - ul.markdown-toc-list{ - list-style-position:inside; - } - ul.markdown-toc-list li{ - list-style: none!important; - line-height: 24px; - } - ul.markdown-toc-list > li > ul > li,ul.markdown-toc-list > li > ul li{ - padding-left:15px; - } - ul.markdown-toc-list a{ - /* text-decoration: underline!important; */ - } - /* 块级代码和行内代码去除边框 */ - .markdown-body p code{ - border:none; - } - /* HTML预览样式 */ - .markdown-body h1{ - font-size: 1.7em; - } - .markdown-body h2{ - font-size: 1.5em; - } - .markdown-body h3{ - font-size: 1.25em; - } - .markdown-body h4{ - font-size: 1em; - } - .markdown-body h5{ - font-size: .875em; - } - .markdown-body h6{ - font-size: .85em; - } - #url_qrcode img{ - margin: auto; - } - /* 文档代码块样式 */ - ol.linenums li{ - width: max-content; - } - pre.linenums{ - max-height: 500px; - } - li.L1, li.L3, li.L5, li.L7, li.L9 { - background: none !important; - } +/*一级无序li显示实心圆点*/ +.doc-content ul li{ + list-style:disc; +} +/*二级无序li显示空心圆点*/ +.doc-content ul > li > ul > li{ + list-style-type: circle; +} +/*有序li显示数字*/ +.doc-content ol li{ + list-style-type: decimal; +} +.doc-content ol ol ul,.doc-content ol ul ul,.doc-content ul ol ul,.doc-content ul ul ul { + list-style-type: square; +} +/* 三级及以下无序li显示小方块 */ +.doc-content ul ul ul li{ + list-style-type: square; +} +/* 下拉目录隐藏li样式 */ +.editormd-toc-menu ul.markdown-toc-list li{ + /*list-style:none;*/ +} +/* 弹出框文档目录样式 */ +ul.markdown-toc-list{ + list-style-position:inside; +} +ul.markdown-toc-list li{ + list-style: none!important; + line-height: 24px; +} +ul.markdown-toc-list > li > ul > li,ul.markdown-toc-list > li > ul li{ + padding-left:15px; +} +ul.markdown-toc-list a{ + /* text-decoration: underline!important; */ +} +/* 块级代码和行内代码去除边框 */ +.markdown-body p code{ + border:none; +} +/* HTML预览样式 */ +.markdown-body h1{ + font-size: 1.7em; +} +.markdown-body h2{ + font-size: 1.5em; +} +.markdown-body h3{ + font-size: 1.25em; +} +.markdown-body h4{ + font-size: 1em; +} +.markdown-body h5{ + font-size: .875em; +} +.markdown-body h6{ + font-size: .85em; +} +#url_qrcode img{ + margin: auto; +} +/* 文档代码块样式 */ +ol.linenums li{ + width: max-content; +} +pre.linenums{ + max-height: 500px; +} +li.L1, li.L3, li.L5, li.L7, li.L9 { + background: none !important; +} - /* layui弹出框颜色 */ - .layui-tab-brief>.layui-tab-more li.layui-this:after, .layui-tab-brief>.layui-tab-title .layui-this:after{ - border-bottom: 2px solid #333; - } - .layui-tab-brief>.layui-tab-title .layui-this{ - color: #333; - } - /* 覆盖vditor样式 */ - .vditor-outline__item{ - padding: 0; - padding-bottom: 5px; - color: #333; - } - .vditor-reset pre>code{ - font-size: 100%; - } \ No newline at end of file +/* layui弹出框颜色 */ +.layui-tab-brief>.layui-tab-more li.layui-this:after, .layui-tab-brief>.layui-tab-title .layui-this:after{ + border-bottom: 2px solid #333; +} +.layui-tab-brief>.layui-tab-title .layui-this{ + color: #333; +} +/* 覆盖vditor样式 */ +.vditor-outline__item{ + padding: 0; + padding-bottom: 5px; + color: #333; +} +.vditor-reset pre>code{ + font-size: 100%; +} +/* 文档图片悬浮鼠标样式 */ +#content img:hover{ + cursor: -moz-zoom-in; + cursor: -webkit-zoom-in; + cursor: zoom-in; +} +#wm{ + width: 100%; + height: 100%; + display: block; + position: absolute; + opacity: 0.1; + pointer-events: none; +} \ No newline at end of file diff --git a/static/mrdoc/mrdoc-docs.js b/static/mrdoc/mrdoc-docs.js index 1957257..5c9c76d 100644 --- a/static/mrdoc/mrdoc-docs.js +++ b/static/mrdoc/mrdoc-docs.js @@ -247,7 +247,7 @@ function SwitchToc(i){ console.log("点击了") var $me = $(this); $(this).parent().next("ul").toggleClass("toc-close"); //切换展开收起样式 - $(this).toggleClass("fa-chevron-left fa-chevron-down");//切换图标 + $(this).toggleClass("layui-icon-left layui-icon-down");//切换图标 }; // 展开文档树 @@ -255,7 +255,7 @@ 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");//切换图标 + $(this).prev().children('i').toggleClass("layui-icon-left layui-icon-down");//切换图标 }) }; @@ -264,7 +264,7 @@ 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");//切换图标 + $(this).prev().children('i').toggleClass("layui-icon-left layui-icon-down");//切换图标 }) }; @@ -308,6 +308,21 @@ doc_qrcode = function(){ doc_qrcode(); +textBecomeImg = function(text,fontsize,fontcolor){ + var canvas = document.createElement('canvas'); + canvas.height = 180; + canvas.width = 400; + var context = canvas.getContext('2d'); + // 擦除(0,0)位置大小为200x200的矩形,擦除的意思是把该区域变为透明 + context.clearRect(0, 0, canvas.width, canvas.height); + context.fillStyle = fontcolor; + context.font=fontsize+"px Arial"; + context.rotate(-25 * Math.PI / 180) + context.fillText(text,10,160); + + var dataUrl = canvas.toDataURL('image/png');//注意这里背景透明的话,需要使用png + return dataUrl; +} /* ######################################################## ### 文集阅读页面JavaScript函数和变量定义 ### diff --git a/static/mrdoc/mrdoc.css b/static/mrdoc/mrdoc.css index 562bed9..4042455 100644 --- a/static/mrdoc/mrdoc.css +++ b/static/mrdoc/mrdoc.css @@ -533,6 +533,7 @@ input#doc-name,input#doctemp-name{ box-shadow:0 2px 4px rgba(0,0,0,.12); box-sizing:border-box; margin-right: 2px; + margin-bottom: 2px; padding-right: 5px; } .mrdoc-import-doc-item a{ diff --git a/template/app_doc/doc.html b/template/app_doc/doc.html index 264258e..0db5266 100644 --- a/template/app_doc/doc.html +++ b/template/app_doc/doc.html @@ -12,10 +12,10 @@ {% if request.user == doc.create_user or request.user == project.create_user %} | - + - + @@ -24,11 +24,11 @@ | {% if colla_user_role == 1 %} - + {% endif %} - + {% endif %} @@ -72,14 +72,14 @@