diff --git a/.gitignore b/.gitignore
index b87d680..2abff53 100644
--- a/.gitignore
+++ b/.gitignore
@@ -56,7 +56,7 @@ coverage.xml
# Django stuff:
*.log
local_settings.py
-# db.sqlite3
+db.sqlite3
# Flask stuff:
instance/
diff --git a/app_admin/views.py b/app_admin/views.py
index 0f4099d..edcba02 100644
--- a/app_admin/views.py
+++ b/app_admin/views.py
@@ -3,7 +3,7 @@ from django.http.response import JsonResponse,HttpResponse
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.core.paginator import Paginator,PageNotAnInteger,EmptyPage,InvalidPage
+from django.core.paginator import Paginator,PageNotAnInteger,EmptyPage,InvalidPage # 后端分页
from app_admin.decorators import superuser_only
import json
import datetime
@@ -209,8 +209,8 @@ def admin_del_user(request):
@superuser_only
def admin_project(request):
if request.method == 'GET':
- username = request.GET.get('kw','')
- if username == '':
+ search_kw = request.GET.get('kw','')
+ if search_kw == '':
project_list = Project.objects.all()
paginator = Paginator(project_list,20)
page = request.GET.get('page',1)
@@ -221,15 +221,17 @@ def admin_project(request):
except EmptyPage:
projects = paginator.page(paginator.num_pages)
else:
- project_list = Project.objects.filter(intro__icontains=username)
+ project_list = Project.objects.filter(intro__icontains=search_kw)
paginator = Paginator(project_list, 20)
page = request.GET.get('page', 1)
+
try:
projects = paginator.page(page)
except PageNotAnInteger:
projects = paginator.page(1)
except EmptyPage:
projects = paginator.page(paginator.num_pages)
+ projects.kw = search_kw
return render(request,'app_admin/admin_project.html',locals())
else:
return HttpResponse('方法错误')
@@ -260,6 +262,7 @@ def admin_doc(request):
docs = paginator.page(1)
except EmptyPage:
docs = paginator.page(paginator.num_pages)
+ docs.kw = kw
return render(request,'app_admin/admin_doc.html',locals())
@@ -288,6 +291,7 @@ def admin_doctemp(request):
doctemps = paginator.page(1)
except EmptyPage:
doctemps = paginator.page(paginator.num_pages)
+ doctemps.kw = kw
return render(request,'app_admin/admin_doctemp.html',locals())
diff --git a/app_doc/views.py b/app_doc/views.py
index 3746e85..d2103c7 100644
--- a/app_doc/views.py
+++ b/app_doc/views.py
@@ -1,6 +1,7 @@
from django.shortcuts import render
from django.http.response import JsonResponse,Http404,HttpResponseNotAllowed,HttpResponse
from django.contrib.auth.decorators import login_required # 登录需求装饰器
+from django.core.paginator import Paginator,PageNotAnInteger,EmptyPage,InvalidPage # 后端分页
from app_doc.models import Project,Doc,DocTemp
from django.contrib.auth.models import User
from django.db.models import Q
@@ -22,7 +23,7 @@ def create_project(request):
if name != '':
project = Project.objects.create(
name=name,
- intro=desc,
+ intro=desc[:100],
create_user=request.user
)
project.save()
@@ -69,7 +70,7 @@ def modify_project(request):
try:
pro_id = request.POST.get('pro_id',None)
project = Project.objects.get(id=pro_id)
- if request.user == project.create_user:
+ if (request.user == project.create_user) or request.user.is_superuser:
name = request.POST.get('name',None)
content = request.POST.get('desc',None)
project.name = name
@@ -91,7 +92,7 @@ def del_project(request):
pro_id = request.POST.get('pro_id','')
if pro_id != '':
pro = Project.objects.get(id=pro_id)
- if request.user == pro.create_user:
+ if (request.user == pro.create_user) or request.user.is_superuser:
# 删除文集下的文档
pro_doc_list = Doc.objects.filter(top_doc=int(pro_id))
pro_doc_list.delete()
@@ -114,8 +115,25 @@ def manage_project(request):
search_kw = request.GET.get('kw', None)
if search_kw:
pro_list = Project.objects.filter(create_user=request.user,intro__icontains=search_kw)
+ paginator = Paginator(pro_list, 10)
+ page = request.GET.get('page', 1)
+ try:
+ pros = paginator.page(page)
+ except PageNotAnInteger:
+ pros = paginator.page(1)
+ except EmptyPage:
+ pros = paginator.page(paginator.num_pages)
+ pros.kw = search_kw
else:
pro_list = Project.objects.filter(create_user=request.user)
+ paginator = Paginator(pro_list, 10)
+ page = request.GET.get('page', 1)
+ try:
+ pros = paginator.page(page)
+ except PageNotAnInteger:
+ pros = paginator.page(1)
+ except EmptyPage:
+ pros = paginator.page(paginator.num_pages)
return render(request,'app_doc/manage_project.html',locals())
except Exception as e:
return HttpResponse('请求出错')
@@ -248,8 +266,25 @@ def manage_doc(request):
search_kw = request.GET.get('kw',None)
if search_kw:
doc_list = Doc.objects.filter(create_user=request.user,content__icontains=search_kw)
+ paginator = Paginator(doc_list, 10)
+ page = request.GET.get('page', 1)
+ try:
+ docs = paginator.page(page)
+ except PageNotAnInteger:
+ docs = paginator.page(1)
+ except EmptyPage:
+ docs = paginator.page(paginator.num_pages)
+ docs.kw = search_kw
else:
doc_list = Doc.objects.filter(create_user=request.user)
+ paginator = Paginator(doc_list, 10)
+ page = request.GET.get('page', 1)
+ try:
+ docs = paginator.page(page)
+ except PageNotAnInteger:
+ docs = paginator.page(1)
+ except EmptyPage:
+ docs = paginator.page(paginator.num_pages)
return render(request,'app_doc/manage_doc.html',locals())
else:
return HttpResponse('方法不允许')
@@ -340,8 +375,25 @@ def manage_doctemp(request):
search_kw = request.GET.get('kw', None)
if search_kw:
doctemp_list = DocTemp.objects.filter(create_user=request.user,content__icontains=search_kw)
+ paginator = Paginator(doctemp_list, 10)
+ page = request.GET.get('page', 1)
+ try:
+ doctemps = paginator.page(page)
+ except PageNotAnInteger:
+ doctemps = paginator.page(1)
+ except EmptyPage:
+ doctemps = paginator.page(paginator.num_pages)
+ doctemps.kw = search_kw
else:
doctemp_list = DocTemp.objects.filter(create_user=request.user)
+ paginator = Paginator(doctemp_list, 10)
+ page = request.GET.get('page', 1)
+ try:
+ doctemps = paginator.page(page)
+ except PageNotAnInteger:
+ doctemps = paginator.page(1)
+ except EmptyPage:
+ doctemps = paginator.page(paginator.num_pages)
return render(request, 'app_doc/manage_doctemp.html', locals())
except Exception as e:
return HttpResponse('请求出错')
diff --git a/static/style.css b/static/style.css
index fb32256..cf76f9f 100644
--- a/static/style.css
+++ b/static/style.css
@@ -44,13 +44,94 @@
.project-item{
float: left;
width: 200px;
- height: 120px;
+ /*height: 120px;*/
margin-top: 20px;
margin-left: 20px;
border: 1px solid #ddd;
border-radius: 4px;
box-shadow: 0 1px 3px rgba(0,0,0,.055);
}
+.project-desc{
+ overflow:hidden;
+ text-overflow:ellipsis; /* 加省略号 */
+ white-space:nowrap; /* 强制不换行 */
+}
+
+.tooltip {
+ display: inline;
+ /*position: relative;*/
+ z-index: 999;
+}
+
+/* Gap filler */
+
+.tooltip-item::after {
+ content: '';
+ position: absolute;
+ width: 360px;
+ height: 20px;
+ bottom: 100%;
+ left: 50%;
+ pointer-events: none;
+ -webkit-transform: translateX(-50%);
+ transform: translateX(-50%);
+}
+
+.tooltip:hover .tooltip-item::after {
+ pointer-events: auto;
+}
+
+/* 文集简介提示工具 */
+
+.tooltip-content {
+ position: absolute;
+ z-index: 9999;
+ width: 170px;
+ left: 78%;
+ margin: 0 -60px 20px -150px;
+ padding:10px;
+ top: 100%;
+ text-align: left;
+ box-shadow: -5px -5px 15px rgba(48,54,61,0.2);
+ background: #2a3035;
+ opacity: 0;
+ cursor: default;
+ pointer-events: none;
+ font-size: 0.68em;
+ line-height: 1.35;
+ display: block;
+ color: #fff;
+ -webkit-transform: translate3d(0,-10px,0);
+ transform: translate3d(0,-10px,0);
+ -webkit-transition: opacity 0.3s, -webkit-transform 0.3s;
+ transition: opacity 0.3s, transform 0.3s;
+}
+
+.tooltip:hover .tooltip-content {
+ pointer-events: auto;
+ opacity: 1;
+ -webkit-transform: translate3d(0,0,0) rotate3d(0,0,0,0);
+ transform: translate3d(0,0,0) rotate3d(0,0,0,0);
+}
+
+/* 箭头 */
+
+.tooltip-content::after {
+ content: '';
+ bottom: 100%; /* 箭头在头部 */
+ left: 50%;
+ border: solid transparent;
+ height: 0;
+ width: 0;
+ position: absolute;
+ pointer-events: none;
+ border-color: transparent;
+ border-bottom-color: #2a3035;
+ border-width: 10px;
+ /*margin-left: 10px;8*/
+}
+
+
.layui-card{
box-shadow:0 0 0 0;
}
@@ -242,7 +323,7 @@ li.active > a{
font-size: 28px;
font-weight: 700;
}
-
+/* 返回顶部 */
.toTop {
width: 70px;
height: 70px;
@@ -264,7 +345,7 @@ li.active > a{
cursor: pointer;
color: red;
}
-
+/*切换字号*/
.switch-font{
font-family: Serif;
}
diff --git a/template/app_admin/admin_base.html b/template/app_admin/admin_base.html
index 37b5613..f5ec857 100644
--- a/template/app_admin/admin_base.html
+++ b/template/app_admin/admin_base.html
@@ -19,7 +19,7 @@
{#
#}
| 文集名称 | @@ -55,13 +63,13 @@|
|---|---|
| {{ doc.name }} | {{ doc.parent_doc|get_doc_parent }} | @@ -54,6 +54,22 @@