新增首页文集置顶功能
This commit is contained in:
parent
8d532cbf8a
commit
577f6c11e8
@ -12,6 +12,7 @@ urlpatterns = [
|
||||
path('modify_pwd',views.change_pwd,name="modify_pwd"), # 普通用户修改密码
|
||||
path('project_manage/',views.admin_project,name='project_manage'), # 文集管理
|
||||
path('project_role_manage/<int:pro_id>/',views.admin_project_role,name="admin_project_role"), # 管理文集权限
|
||||
path('project_manage_istop',views.admin_project_istop,name="admin_project_istop"), # 修改文集置顶状态
|
||||
path('doc_manage/',views.admin_doc,name='doc_manage'), # 文档管理
|
||||
path('doctemp_manage/',views.admin_doctemp,name='doctemp_manage'), # 文档模板管理
|
||||
path('setting/',views.admin_setting,name="sys_setting"), # 应用设置
|
||||
|
||||
@ -4,6 +4,7 @@ from django.http.response import JsonResponse,HttpResponse,Http404
|
||||
from django.contrib.auth import authenticate,login,logout # 认证相关方法
|
||||
from django.contrib.auth.models import User # Django默认用户模型
|
||||
from django.contrib.auth.decorators import login_required # 登录需求装饰器
|
||||
from django.views.decorators.http import require_http_methods,require_GET,require_POST # 视图请求方法装饰器
|
||||
from django.core.paginator import Paginator,PageNotAnInteger,EmptyPage,InvalidPage # 后端分页
|
||||
from app_admin.decorators import superuser_only,open_register
|
||||
from django.core.exceptions import ObjectDoesNotExist
|
||||
@ -402,6 +403,7 @@ def admin_project(request):
|
||||
'role': project.role,
|
||||
'role_value': project.role_value,
|
||||
'colla_total': ProjectCollaborator.objects.filter(project=project).count(),
|
||||
'is_top':project.is_top,
|
||||
'create_user':project.create_user.username,
|
||||
'create_time': project.create_time,
|
||||
'modify_time': project.modify_time
|
||||
@ -449,6 +451,23 @@ def admin_project_role(request,pro_id):
|
||||
else:
|
||||
return Http404
|
||||
|
||||
# 后台管理 - 控制文集置顶状态
|
||||
@superuser_only
|
||||
@require_POST
|
||||
def admin_project_istop(request):
|
||||
try:
|
||||
project_id = request.POST.get('id')
|
||||
is_top = request.POST.get('is_top')
|
||||
if is_top == 'true':
|
||||
is_top = True
|
||||
else:
|
||||
is_top = False
|
||||
Project.objects.filter(id=project_id).update(is_top=is_top)
|
||||
return JsonResponse({'status':True})
|
||||
except:
|
||||
logger.exception("置顶文集出错")
|
||||
return JsonResponse({'status':False,'data':'执行出错'})
|
||||
|
||||
|
||||
# 后台管理 - 文档管理
|
||||
@superuser_only
|
||||
|
||||
18
app_doc/migrations/0038_project_is_top.py
Normal file
18
app_doc/migrations/0038_project_is_top.py
Normal file
@ -0,0 +1,18 @@
|
||||
# Generated by Django 2.2.12 on 2021-01-31 16:24
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('app_doc', '0037_mycollect'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='project',
|
||||
name='is_top',
|
||||
field=models.BooleanField(default=False, verbose_name='是否置顶'),
|
||||
),
|
||||
]
|
||||
@ -13,6 +13,7 @@ class Project(models.Model):
|
||||
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)
|
||||
is_top = models.BooleanField(verbose_name="是否置顶",default=False)
|
||||
create_user = models.ForeignKey(User,on_delete=models.CASCADE)
|
||||
create_time = models.DateTimeField(auto_now_add=True)
|
||||
modify_time = models.DateTimeField(auto_now=True)
|
||||
|
||||
@ -169,34 +169,36 @@ def project_list(request):
|
||||
Q(role=2,role_value__contains=str(request.user.username)) | \
|
||||
Q(create_user=request.user) | \
|
||||
Q(id__in=colla_list)
|
||||
).order_by("{}create_time".format(sort_str))
|
||||
).order_by('-is_top',"{}create_time".format(sort_str))
|
||||
|
||||
# 没有搜索 and 认证用户 and 有筛选
|
||||
elif (is_kw is False ) and (is_auth) and (is_role):
|
||||
if role in ['0',0]:
|
||||
project_list = Project.objects.filter(role=0).order_by("{}create_time".format(sort_str))
|
||||
project_list = Project.objects.filter(role=0).order_by('-is_top',"{}create_time".format(sort_str))
|
||||
elif role in ['1',1]:
|
||||
project_list = Project.objects.filter(create_user=request.user,role=1).order_by("{}create_time".format(sort_str))
|
||||
project_list = Project.objects.filter(create_user=request.user,role=1).order_by(
|
||||
'-is_top',"{}create_time".format(sort_str))
|
||||
elif role in ['2',2]:
|
||||
project_list = Project.objects.filter(role=2,role_value__contains=str(request.user.username)).order_by("{}create_time".format(sort_str))
|
||||
project_list = Project.objects.filter(role=2,role_value__contains=str(request.user.username)).order_by(
|
||||
'-is_top',"{}create_time".format(sort_str))
|
||||
elif role in ['3',3]:
|
||||
project_list = Project.objects.filter(role=3).order_by("{}create_time".format(sort_str))
|
||||
project_list = Project.objects.filter(role=3).order_by('-is_top',"{}create_time".format(sort_str))
|
||||
elif role in ['99',99]:
|
||||
colla_list = [i.project.id for i in ProjectCollaborator.objects.filter(user=request.user)] # 用户的协作文集列表
|
||||
project_list = Project.objects.filter(id__in=colla_list).order_by("{}create_time".format(sort_str))
|
||||
project_list = Project.objects.filter(id__in=colla_list).order_by('-is_top',"{}create_time".format(sort_str))
|
||||
else:
|
||||
return render(request,'404.html')
|
||||
|
||||
# 没有搜索 and 游客 and 没有筛选
|
||||
elif (is_kw is False) and (is_auth is False) and (is_role is False):
|
||||
project_list = Project.objects.filter(role__in=[0,3]).order_by("{}create_time".format(sort_str))
|
||||
project_list = Project.objects.filter(role__in=[0,3]).order_by('-is_top',"{}create_time".format(sort_str))
|
||||
|
||||
# 没有搜索 and 游客 and 有筛选
|
||||
elif (is_kw is False) and (is_auth is False) and (is_role):
|
||||
if role in ['0',0]:
|
||||
project_list = Project.objects.filter(role=0).order_by("{}create_time".format(sort_str))
|
||||
project_list = Project.objects.filter(role=0).order_by('-is_top',"{}create_time".format(sort_str))
|
||||
elif role in ['3',3]:
|
||||
project_list = Project.objects.filter(role=3).order_by("{}create_time".format(sort_str))
|
||||
project_list = Project.objects.filter(role=3).order_by('-is_top',"{}create_time".format(sort_str))
|
||||
else:
|
||||
return render(request,'404.html')
|
||||
|
||||
@ -210,7 +212,7 @@ def project_list(request):
|
||||
Q(create_user=request.user) | \
|
||||
Q(id__in=colla_list),
|
||||
Q(name__icontains=kw) | Q(intro__icontains=kw)
|
||||
).order_by('{}create_time'.format(sort_str))
|
||||
).order_by('-is_top','{}create_time'.format(sort_str))
|
||||
|
||||
# 有搜索 and 认证用户 and 有筛选
|
||||
elif (is_kw) and (is_auth) and (is_role):
|
||||
@ -218,29 +220,29 @@ def project_list(request):
|
||||
project_list = Project.objects.filter(
|
||||
Q(name__icontains=kw)|Q(intro__icontains=kw),
|
||||
role=0
|
||||
).order_by("{}create_time".format(sort_str))
|
||||
).order_by('-is_top',"{}create_time".format(sort_str))
|
||||
elif role in ['1',1]:
|
||||
project_list = Project.objects.filter(
|
||||
Q(name__icontains=kw) | Q(intro__icontains=kw),
|
||||
create_user=request.user
|
||||
).order_by("{}create_time".format(sort_str))
|
||||
).order_by('-is_top',"{}create_time".format(sort_str))
|
||||
elif role in ['2',2]:
|
||||
project_list = Project.objects.filter(
|
||||
Q(name__icontains=kw) | Q(intro__icontains=kw),
|
||||
role=2,
|
||||
role_value__contains=str(request.user.username)
|
||||
).order_by("{}create_time".format(sort_str))
|
||||
).order_by('-is_top',"{}create_time".format(sort_str))
|
||||
elif role in ['3',3]:
|
||||
project_list = Project.objects.filter(
|
||||
Q(name__icontains=kw) | Q(intro__icontains=kw),
|
||||
role=3
|
||||
).order_by("{}create_time".format(sort_str))
|
||||
).order_by('-is_top',"{}create_time".format(sort_str))
|
||||
elif role in ['99',99]:
|
||||
colla_list = [i.project.id for i in ProjectCollaborator.objects.filter(user=request.user)] # 用户的协作文集列表
|
||||
project_list = Project.objects.filter(
|
||||
Q(name__icontains=kw) | Q(intro__icontains=kw),
|
||||
id__in=colla_list
|
||||
).order_by("{}create_time".format(sort_str))
|
||||
).order_by('-is_top',"{}create_time".format(sort_str))
|
||||
else:
|
||||
return render(request,'404.html')
|
||||
|
||||
@ -249,7 +251,7 @@ def project_list(request):
|
||||
project_list = Project.objects.filter(
|
||||
Q(name__icontains=kw) | Q(intro__icontains=kw),
|
||||
role__in=[0, 3]
|
||||
).order_by("{}create_time".format(sort_str))
|
||||
).order_by('-is_top',"{}create_time".format(sort_str))
|
||||
|
||||
# 有搜索 and 游客 and 有筛选
|
||||
elif (is_kw) and (is_auth is False) and (is_role):
|
||||
@ -257,12 +259,12 @@ def project_list(request):
|
||||
project_list = Project.objects.filter(
|
||||
Q(name__icontains=kw) | Q(intro__icontains=kw),
|
||||
role=0
|
||||
).order_by("{}create_time".format(sort_str))
|
||||
).order_by('-is_top',"{}create_time".format(sort_str))
|
||||
elif role in ['3',3]:
|
||||
project_list = Project.objects.filter(
|
||||
Q(name__icontains=kw) | Q(intro__icontains=kw),
|
||||
role=3
|
||||
).order_by("{}create_time".format(sort_str))
|
||||
).order_by('-is_top',"{}create_time".format(sort_str))
|
||||
else:
|
||||
return render(request,'404.html')
|
||||
|
||||
@ -2016,7 +2018,6 @@ def report_md(request):
|
||||
def genera_project_file(request):
|
||||
report_type = request.POST.get('types',None) # 获取前端传入到导出文件类型参数
|
||||
# 导出EPUB文件
|
||||
|
||||
pro_id = request.POST.get('pro_id')
|
||||
try:
|
||||
project = Project.objects.get(id=int(pro_id))
|
||||
@ -2136,6 +2137,7 @@ def genera_project_file(request):
|
||||
return JsonResponse({'status': True, 'data': pdf_file})
|
||||
|
||||
except Exception as e:
|
||||
logger.exception("生成出错")
|
||||
return JsonResponse({'status': False, 'data': '生成出错'})
|
||||
else:
|
||||
return JsonResponse({'status': False, 'data': '不支持的类型'})
|
||||
|
||||
@ -80,6 +80,14 @@
|
||||
{{layui.util.toDateString(d.create_time, "yyyy-MM-dd HH:mm:ss")}}
|
||||
{% endverbatim %}
|
||||
</script>
|
||||
|
||||
<!-- 文集置顶 -->
|
||||
<script type="text/html" id="is-top">
|
||||
{% verbatim %}
|
||||
<input type="checkbox" name="is_top" value="{{d.id}}" lay-skin="switch" lay-text="是|否" lay-filter="topActive" {{ d.is_top === true ? 'checked' : '' }}>
|
||||
{% endverbatim %}
|
||||
</script>
|
||||
|
||||
{% endblock %}
|
||||
{% block custom_script %}
|
||||
<script>
|
||||
@ -100,6 +108,7 @@
|
||||
{title: '文档数',field: 'doc_total',align: 'left',width:90},
|
||||
{title: '协作人数',field: 'colla_total',align: 'left',templet:"#colla-cnt",width:90},
|
||||
{title: '作者',field: 'create_user',align: 'left',width:90},
|
||||
{title: '置顶',field: 'is_top',align: 'left',width:90,templet:"#is-top"},
|
||||
{title: '创建时间',field: 'create_time',align: 'left',templet:"#project-create-time"},
|
||||
{title: '操作',toolbar: '#project-bar',align: 'left',}
|
||||
]
|
||||
@ -140,6 +149,39 @@
|
||||
})
|
||||
}
|
||||
});
|
||||
|
||||
// 侦听文集置顶开关
|
||||
form.on('switch(topActive)', function(obj){
|
||||
loading = layer.load(1)
|
||||
$.ajax({
|
||||
url:'{% url "admin_project_istop" %}',
|
||||
type:'post',
|
||||
data:{
|
||||
'id':this.value,'is_top':obj.elem.checked,
|
||||
},
|
||||
success: function(r) {
|
||||
layer.close(loading);
|
||||
if (r.status) {
|
||||
layer.msg('修改成功', {
|
||||
icon: 1,
|
||||
time: 1000
|
||||
},function(){
|
||||
table.reload("project-table")
|
||||
});
|
||||
} else {
|
||||
layer.msg(r.data, {
|
||||
icon: 2,
|
||||
time: 1000
|
||||
});
|
||||
}
|
||||
},
|
||||
error:function(){
|
||||
layer.close(loading);
|
||||
layer.msg("置顶失败")
|
||||
}
|
||||
})
|
||||
});
|
||||
|
||||
//创建文集
|
||||
createProject = function(){
|
||||
layer.open({
|
||||
|
||||
@ -98,7 +98,7 @@
|
||||
// {title: '简介',field: 'intro',align: 'left',templet:"#share-type"},
|
||||
// {title: '权限',field: 'role',align: 'left',templet:"#project-role"},
|
||||
{title: '{% trans "文档数" %}',field: 'doc_total',align: 'left',width:90},
|
||||
{title: '{% trans "协作人数" %}',field: 'colla_total',align: 'left',templet:"#colla-cnt",width:90},
|
||||
{title: '{% trans "文集成员" %}',field: 'colla_total',align: 'left',templet:"#colla-cnt",width:90},
|
||||
{title: '{% trans "创建时间" %}',field: 'create_time',align: 'left',templet:"#project-create-time"},
|
||||
{title: '{% trans "操作" %}',toolbar: '#project-bar',align: 'left',}
|
||||
]
|
||||
@ -131,13 +131,13 @@
|
||||
}else if(obj.event === 'batchRemove'){ // 批量删除文集
|
||||
batchRemove(obj)
|
||||
}else if(obj.event === 'search'){ // 搜索文集
|
||||
console.log('搜索文集')
|
||||
// console.log('搜索文集')
|
||||
table.reload('project-table',{
|
||||
where:{
|
||||
'type':1,'kw':$('input[name="project-search-kw"]').val()
|
||||
},
|
||||
'type':1,'kw':$('input[name="project-search-kw"]').val()
|
||||
},
|
||||
})
|
||||
}
|
||||
}
|
||||
});
|
||||
//创建文集
|
||||
createProject = function(){
|
||||
@ -295,7 +295,7 @@
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
})
|
||||
</script>
|
||||
{% endblock %}
|
||||
@ -14,6 +14,7 @@
|
||||
<title>{% if site_name != None and site_name != '' %}{{site_name}} {% else %}{% trans "站点标题" %}{% endif %} - {% if site_sub_name != None %}{{site_sub_name}} {% else %}{% trans "又一个MrDoc站点" %}{% endif %}</title>
|
||||
<link href="{% static 'layui/css/layui.css' %}" rel="stylesheet">
|
||||
<link href="{% static 'mrdoc/mrdoc.css' %}?version={{mrdoc_version}}" rel="stylesheet">
|
||||
<link href="{% static 'iconFont/iconfont.css' %}?version={{mrdoc_version}}" rel="stylesheet">
|
||||
<link rel="icon" href="{% static 'search/mrdoc_logo_300.png' %}" sizes="192x192" />
|
||||
<style>
|
||||
.layui-nav .layui-this:after, .layui-nav-bar, .layui-nav-tree, .layui-nav-itemed:after {
|
||||
@ -134,9 +135,15 @@
|
||||
{% endif %}
|
||||
>
|
||||
{% if p.icon %}
|
||||
<p class="layui-elip" style="font-weight: 700;"><svg class="icon" aria-hidden="true"><use xlink:href="#{{p.icon}}"></use></svg> {{ p.name }} <span class="layui-badge-rim">{{p.id|get_doc_count}}</span></p>
|
||||
<p class="layui-elip" style="font-weight: 700;">
|
||||
{% if p.is_top %}<i class="iconfont mrdoc-icon-totop" title="置顶文集" style="color: red;font-size: 12px;"></i>{% endif %}
|
||||
<svg class="icon" aria-hidden="true"><use xlink:href="#{{p.icon}}"></use></svg> {{ p.name }} <span class="layui-badge-rim">{{p.id|get_doc_count}}</span>
|
||||
</p>
|
||||
{% else %}
|
||||
<p class="layui-elip" style="font-weight: 700;"><svg class="icon" aria-hidden="true"><use xlink:href="#mrdoc-icon-pro-2"></use></svg> {{ p.name }} <span class="layui-badge-rim">{{p.id|get_doc_count}}</span></p>
|
||||
<p class="layui-elip" style="font-weight: 700;">
|
||||
{% if p.is_top %}<i class="iconfont mrdoc-icon-totop" title="置顶文集" style="color: red;font-size: 12px;"></i>{% endif %}
|
||||
<svg class="icon" aria-hidden="true"><use xlink:href="#mrdoc-icon-pro-2"></use></svg> {{ p.name }} <span class="layui-badge-rim">{{p.id|get_doc_count}}</span>
|
||||
</p>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="layui-card-body" style="font-size: 12px;">
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user