新增文集图标配置功能

This commit is contained in:
yangjian 2020-12-22 21:02:57 +08:00
parent 5bac21f545
commit 2a468fa468
20 changed files with 2636 additions and 61 deletions

View File

@ -0,0 +1,23 @@
# Generated by Django 2.2.12 on 2020-12-21 20:42
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('app_doc', '0034_doc_show_children'),
]
operations = [
migrations.AddField(
model_name='project',
name='icon',
field=models.CharField(blank=True, default=None, max_length=50, null=True, verbose_name='文集图标'),
),
migrations.AlterField(
model_name='project',
name='name',
field=models.CharField(max_length=50, verbose_name='文集名称'),
),
]

View File

@ -4,7 +4,8 @@ from django.contrib.auth.models import User
# 文集模型
class Project(models.Model):
name = models.CharField(verbose_name="文档名称",max_length=50)
name = models.CharField(verbose_name="文集名称",max_length=50)
icon= models.CharField(verbose_name="文集图标",max_length=50,blank=True,null=True,default=None)
intro = models.TextField(verbose_name="介绍")
# 文集权限说明0表示公开1表示私密,2表示指定用户可见,3表示访问码可见 默认公开
role = models.IntegerField(choices=((0,0),(1,1),(2,2),(3,3)), default=0,verbose_name="文集权限")

View File

@ -14,7 +14,7 @@ def get_doc_count(value):
# 获取文集下最新的文档及其修改时间
@register.filter(name='get_new_doc')
def get_new_doc(value):
new_doc = Doc.objects.filter(top_doc=int(value),status=1).order_by('-modify_time').first()
new_doc = Doc.objects.filter(top_doc=int(value),status=1).order_by('-modify_time')[:2]
if new_doc is None:
new_doc = '它还没有文档……'
return new_doc

View File

@ -282,12 +282,14 @@ def create_project(request):
try:
name = request.POST.get('pname','')
name = validateTitle(name)
icon = request.POST.get('picon',None)
desc = request.POST.get('desc','')
role = request.POST.get('role',0)
role_list = ['0','1','2','3',0,1,2,3]
if name != '':
project = Project.objects.create(
name=validateTitle(name),
icon = icon,
intro=desc[:100],
create_user=request.user,
role = int(role) if role in role_list else 0
@ -388,9 +390,11 @@ def modify_project(request):
# 验证用户有权限修改文集
if (request.user == project.create_user) or request.user.is_superuser:
name = request.POST.get('name',None)
icon = request.POST.get('picon', None)
content = request.POST.get('desc',None)
project.name = validateTitle(name)
project.intro = content
project.icon = icon
project.save()
return JsonResponse({'status':True,'data':'修改成功'})
else:

539
static/iconFont/demo.css Normal file
View File

@ -0,0 +1,539 @@
/* Logo 字体 */
@font-face {
font-family: "iconfont logo";
src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834');
src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834#iefix') format('embedded-opentype'),
url('https://at.alicdn.com/t/font_985780_km7mi63cihi.woff?t=1545807318834') format('woff'),
url('https://at.alicdn.com/t/font_985780_km7mi63cihi.ttf?t=1545807318834') format('truetype'),
url('https://at.alicdn.com/t/font_985780_km7mi63cihi.svg?t=1545807318834#iconfont') format('svg');
}
.logo {
font-family: "iconfont logo";
font-size: 160px;
font-style: normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
/* tabs */
.nav-tabs {
position: relative;
}
.nav-tabs .nav-more {
position: absolute;
right: 0;
bottom: 0;
height: 42px;
line-height: 42px;
color: #666;
}
#tabs {
border-bottom: 1px solid #eee;
}
#tabs li {
cursor: pointer;
width: 100px;
height: 40px;
line-height: 40px;
text-align: center;
font-size: 16px;
border-bottom: 2px solid transparent;
position: relative;
z-index: 1;
margin-bottom: -1px;
color: #666;
}
#tabs .active {
border-bottom-color: #f00;
color: #222;
}
.tab-container .content {
display: none;
}
/* 页面布局 */
.main {
padding: 30px 100px;
width: 960px;
margin: 0 auto;
}
.main .logo {
color: #333;
text-align: left;
margin-bottom: 30px;
line-height: 1;
height: 110px;
margin-top: -50px;
overflow: hidden;
*zoom: 1;
}
.main .logo a {
font-size: 160px;
color: #333;
}
.helps {
margin-top: 40px;
}
.helps pre {
padding: 20px;
margin: 10px 0;
border: solid 1px #e7e1cd;
background-color: #fffdef;
overflow: auto;
}
.icon_lists {
width: 100% !important;
overflow: hidden;
*zoom: 1;
}
.icon_lists li {
width: 100px;
margin-bottom: 10px;
margin-right: 20px;
text-align: center;
list-style: none !important;
cursor: default;
}
.icon_lists li .code-name {
line-height: 1.2;
}
.icon_lists .icon {
display: block;
height: 100px;
line-height: 100px;
font-size: 42px;
margin: 10px auto;
color: #333;
-webkit-transition: font-size 0.25s linear, width 0.25s linear;
-moz-transition: font-size 0.25s linear, width 0.25s linear;
transition: font-size 0.25s linear, width 0.25s linear;
}
.icon_lists .icon:hover {
font-size: 100px;
}
.icon_lists .svg-icon {
/* 通过设置 font-size 来改变图标大小 */
width: 1em;
/* 图标和文字相邻时,垂直对齐 */
vertical-align: -0.15em;
/* 通过设置 color 来改变 SVG 的颜色/fill */
fill: currentColor;
/* path stroke 溢出 viewBox 部分在 IE 下会显示
normalize.css 中也包含这行 */
overflow: hidden;
}
.icon_lists li .name,
.icon_lists li .code-name {
color: #666;
}
/* markdown 样式 */
.markdown {
color: #666;
font-size: 14px;
line-height: 1.8;
}
.highlight {
line-height: 1.5;
}
.markdown img {
vertical-align: middle;
max-width: 100%;
}
.markdown h1 {
color: #404040;
font-weight: 500;
line-height: 40px;
margin-bottom: 24px;
}
.markdown h2,
.markdown h3,
.markdown h4,
.markdown h5,
.markdown h6 {
color: #404040;
margin: 1.6em 0 0.6em 0;
font-weight: 500;
clear: both;
}
.markdown h1 {
font-size: 28px;
}
.markdown h2 {
font-size: 22px;
}
.markdown h3 {
font-size: 16px;
}
.markdown h4 {
font-size: 14px;
}
.markdown h5 {
font-size: 12px;
}
.markdown h6 {
font-size: 12px;
}
.markdown hr {
height: 1px;
border: 0;
background: #e9e9e9;
margin: 16px 0;
clear: both;
}
.markdown p {
margin: 1em 0;
}
.markdown>p,
.markdown>blockquote,
.markdown>.highlight,
.markdown>ol,
.markdown>ul {
width: 80%;
}
.markdown ul>li {
list-style: circle;
}
.markdown>ul li,
.markdown blockquote ul>li {
margin-left: 20px;
padding-left: 4px;
}
.markdown>ul li p,
.markdown>ol li p {
margin: 0.6em 0;
}
.markdown ol>li {
list-style: decimal;
}
.markdown>ol li,
.markdown blockquote ol>li {
margin-left: 20px;
padding-left: 4px;
}
.markdown code {
margin: 0 3px;
padding: 0 5px;
background: #eee;
border-radius: 3px;
}
.markdown strong,
.markdown b {
font-weight: 600;
}
.markdown>table {
border-collapse: collapse;
border-spacing: 0px;
empty-cells: show;
border: 1px solid #e9e9e9;
width: 95%;
margin-bottom: 24px;
}
.markdown>table th {
white-space: nowrap;
color: #333;
font-weight: 600;
}
.markdown>table th,
.markdown>table td {
border: 1px solid #e9e9e9;
padding: 8px 16px;
text-align: left;
}
.markdown>table th {
background: #F7F7F7;
}
.markdown blockquote {
font-size: 90%;
color: #999;
border-left: 4px solid #e9e9e9;
padding-left: 0.8em;
margin: 1em 0;
}
.markdown blockquote p {
margin: 0;
}
.markdown .anchor {
opacity: 0;
transition: opacity 0.3s ease;
margin-left: 8px;
}
.markdown .waiting {
color: #ccc;
}
.markdown h1:hover .anchor,
.markdown h2:hover .anchor,
.markdown h3:hover .anchor,
.markdown h4:hover .anchor,
.markdown h5:hover .anchor,
.markdown h6:hover .anchor {
opacity: 1;
display: inline-block;
}
.markdown>br,
.markdown>p>br {
clear: both;
}
.hljs {
display: block;
background: white;
padding: 0.5em;
color: #333333;
overflow-x: auto;
}
.hljs-comment,
.hljs-meta {
color: #969896;
}
.hljs-string,
.hljs-variable,
.hljs-template-variable,
.hljs-strong,
.hljs-emphasis,
.hljs-quote {
color: #df5000;
}
.hljs-keyword,
.hljs-selector-tag,
.hljs-type {
color: #a71d5d;
}
.hljs-literal,
.hljs-symbol,
.hljs-bullet,
.hljs-attribute {
color: #0086b3;
}
.hljs-section,
.hljs-name {
color: #63a35c;
}
.hljs-tag {
color: #333333;
}
.hljs-title,
.hljs-attr,
.hljs-selector-id,
.hljs-selector-class,
.hljs-selector-attr,
.hljs-selector-pseudo {
color: #795da3;
}
.hljs-addition {
color: #55a532;
background-color: #eaffea;
}
.hljs-deletion {
color: #bd2c00;
background-color: #ffecec;
}
.hljs-link {
text-decoration: underline;
}
/* 代码高亮 */
/* PrismJS 1.15.0
https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript */
/**
* prism.js default theme for JavaScript, CSS and HTML
* Based on dabblet (http://dabblet.com)
* @author Lea Verou
*/
code[class*="language-"],
pre[class*="language-"] {
color: black;
background: none;
text-shadow: 0 1px white;
font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
text-align: left;
white-space: pre;
word-spacing: normal;
word-break: normal;
word-wrap: normal;
line-height: 1.5;
-moz-tab-size: 4;
-o-tab-size: 4;
tab-size: 4;
-webkit-hyphens: none;
-moz-hyphens: none;
-ms-hyphens: none;
hyphens: none;
}
pre[class*="language-"]::-moz-selection,
pre[class*="language-"] ::-moz-selection,
code[class*="language-"]::-moz-selection,
code[class*="language-"] ::-moz-selection {
text-shadow: none;
background: #b3d4fc;
}
pre[class*="language-"]::selection,
pre[class*="language-"] ::selection,
code[class*="language-"]::selection,
code[class*="language-"] ::selection {
text-shadow: none;
background: #b3d4fc;
}
@media print {
code[class*="language-"],
pre[class*="language-"] {
text-shadow: none;
}
}
/* Code blocks */
pre[class*="language-"] {
padding: 1em;
margin: .5em 0;
overflow: auto;
}
:not(pre)>code[class*="language-"],
pre[class*="language-"] {
background: #f5f2f0;
}
/* Inline code */
:not(pre)>code[class*="language-"] {
padding: .1em;
border-radius: .3em;
white-space: normal;
}
.token.comment,
.token.prolog,
.token.doctype,
.token.cdata {
color: slategray;
}
.token.punctuation {
color: #999;
}
.namespace {
opacity: .7;
}
.token.property,
.token.tag,
.token.boolean,
.token.number,
.token.constant,
.token.symbol,
.token.deleted {
color: #905;
}
.token.selector,
.token.attr-name,
.token.string,
.token.char,
.token.builtin,
.token.inserted {
color: #690;
}
.token.operator,
.token.entity,
.token.url,
.language-css .token.string,
.style .token.string {
color: #9a6e3a;
background: hsla(0, 0%, 100%, .5);
}
.token.atrule,
.token.attr-value,
.token.keyword {
color: #07a;
}
.token.function,
.token.class-name {
color: #DD4A68;
}
.token.regex,
.token.important,
.token.variable {
color: #e90;
}
.token.important,
.token.bold {
font-weight: bold;
}
.token.italic {
font-style: italic;
}
.token.entity {
cursor: help;
}

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

Binary file not shown.

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,317 @@
{
"id": "2281207",
"name": "觅道文档图标",
"font_family": "iconfont",
"css_prefix_text": "mrdoc-icon-",
"description": "用于觅道文档的文集文档图标",
"glyphs": [
{
"icon_id": "2353251",
"name": "鸟瞰logo",
"font_class": "pro-44",
"unicode": "e603",
"unicode_decimal": 58883
},
{
"icon_id": "4077657",
"name": "金",
"font_class": "pro-43",
"unicode": "e607",
"unicode_decimal": 58887
},
{
"icon_id": "4767599",
"name": "风车",
"font_class": "pro-42",
"unicode": "e61e",
"unicode_decimal": 58910
},
{
"icon_id": "7107786",
"name": "水",
"font_class": "pro-41",
"unicode": "e600",
"unicode_decimal": 58880
},
{
"icon_id": "9181931",
"name": "月亮",
"font_class": "pro-40",
"unicode": "e652",
"unicode_decimal": 58962
},
{
"icon_id": "9255920",
"name": "龙",
"font_class": "pro-39",
"unicode": "e6a3",
"unicode_decimal": 59043
},
{
"icon_id": "10425576",
"name": "土壤",
"font_class": "pro-38",
"unicode": "e624",
"unicode_decimal": 58916
},
{
"icon_id": "10768035",
"name": "树",
"font_class": "pro-37",
"unicode": "e602",
"unicode_decimal": 58882
},
{
"icon_id": "11054404",
"name": "木工",
"font_class": "pro-36",
"unicode": "e657",
"unicode_decimal": 58967
},
{
"icon_id": "11217722",
"name": "火 (1)",
"font_class": "pro-35",
"unicode": "e63c",
"unicode_decimal": 58940
},
{
"icon_id": "12519675",
"name": "鱼",
"font_class": "pro-34",
"unicode": "e601",
"unicode_decimal": 58881
},
{
"icon_id": "13673407",
"name": "新",
"font_class": "pro-33",
"unicode": "e625",
"unicode_decimal": 58917
},
{
"icon_id": "13784708",
"name": "猫",
"font_class": "pro-32",
"unicode": "e62f",
"unicode_decimal": 58927
},
{
"icon_id": "14689313",
"name": "凤凰云logo带色",
"font_class": "pro-31",
"unicode": "e666",
"unicode_decimal": 58982
},
{
"icon_id": "17875944",
"name": "密 + 椭圆形 蒙版",
"font_class": "pro-3",
"unicode": "e609",
"unicode_decimal": 58889
},
{
"icon_id": "18922192",
"name": "pro-2",
"font_class": "pro-2",
"unicode": "e614",
"unicode_decimal": 58900
},
{
"icon_id": "18922195",
"name": "pro-1",
"font_class": "pro-1",
"unicode": "e617",
"unicode_decimal": 58903
},
{
"icon_id": "18922198",
"name": "pro-8",
"font_class": "pro-8",
"unicode": "e61a",
"unicode_decimal": 58906
},
{
"icon_id": "18922199",
"name": "pro-9",
"font_class": "pro-9",
"unicode": "e61b",
"unicode_decimal": 58907
},
{
"icon_id": "18922200",
"name": "pro-11",
"font_class": "pro-11",
"unicode": "e61c",
"unicode_decimal": 58908
},
{
"icon_id": "18922201",
"name": "pro-7",
"font_class": "pro-7",
"unicode": "e61d",
"unicode_decimal": 58909
},
{
"icon_id": "18922203",
"name": "pro-12",
"font_class": "pro-12",
"unicode": "e61f",
"unicode_decimal": 58911
},
{
"icon_id": "18922204",
"name": "pro-10",
"font_class": "pro-10",
"unicode": "e620",
"unicode_decimal": 58912
},
{
"icon_id": "18922205",
"name": "pro-16",
"font_class": "pro-16",
"unicode": "e621",
"unicode_decimal": 58913
},
{
"icon_id": "18922206",
"name": "pro-15",
"font_class": "pro-15",
"unicode": "e622",
"unicode_decimal": 58914
},
{
"icon_id": "18922207",
"name": "pro-17",
"font_class": "pro-17",
"unicode": "e623",
"unicode_decimal": 58915
},
{
"icon_id": "18922210",
"name": "pro-18",
"font_class": "pro-18",
"unicode": "e626",
"unicode_decimal": 58918
},
{
"icon_id": "18922213",
"name": "pro-26",
"font_class": "pro-26",
"unicode": "e629",
"unicode_decimal": 58921
},
{
"icon_id": "18922216",
"name": "pro-24",
"font_class": "pro-24",
"unicode": "e62c",
"unicode_decimal": 58924
},
{
"icon_id": "18922218",
"name": "pro-27",
"font_class": "pro-27",
"unicode": "e62e",
"unicode_decimal": 58926
},
{
"icon_id": "18922220",
"name": "pro-32",
"font_class": "pro-30",
"unicode": "e630",
"unicode_decimal": 58928
},
{
"icon_id": "18922221",
"name": "pro-33",
"font_class": "pro-29",
"unicode": "e631",
"unicode_decimal": 58929
},
{
"icon_id": "18922222",
"name": "pro-29",
"font_class": "pro-28",
"unicode": "e632",
"unicode_decimal": 58930
},
{
"icon_id": "18922223",
"name": "pro-30",
"font_class": "pro-25",
"unicode": "e633",
"unicode_decimal": 58931
},
{
"icon_id": "18922224",
"name": "pro-34",
"font_class": "pro-23",
"unicode": "e634",
"unicode_decimal": 58932
},
{
"icon_id": "18922225",
"name": "pro-31",
"font_class": "pro-22",
"unicode": "e635",
"unicode_decimal": 58933
},
{
"icon_id": "18922227",
"name": "pro-36",
"font_class": "pro-21",
"unicode": "e637",
"unicode_decimal": 58935
},
{
"icon_id": "18922229",
"name": "pro-38",
"font_class": "pro-20",
"unicode": "e639",
"unicode_decimal": 58937
},
{
"icon_id": "18922230",
"name": "pro-40",
"font_class": "pro-19",
"unicode": "e63a",
"unicode_decimal": 58938
},
{
"icon_id": "18922231",
"name": "pro-42",
"font_class": "pro-14",
"unicode": "e63b",
"unicode_decimal": 58939
},
{
"icon_id": "18922234",
"name": "pro-43",
"font_class": "pro-13",
"unicode": "e63e",
"unicode_decimal": 58942
},
{
"icon_id": "18922235",
"name": "pro-46",
"font_class": "pro-6",
"unicode": "e63f",
"unicode_decimal": 58943
},
{
"icon_id": "18922237",
"name": "pro-39",
"font_class": "pro-5",
"unicode": "e641",
"unicode_decimal": 58945
},
{
"icon_id": "18922238",
"name": "pro-48",
"font_class": "pro-4",
"unicode": "e642",
"unicode_decimal": 58946
}
]
}

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 114 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -156,6 +156,32 @@
color: #2176ff !important;
}
/* 图标选择器 */
.layui-iconpicker {max-width: 280px;}
.layui-iconpicker{position:absolute;left:0;top:42px;padding:5px 0;z-index:899;min-width:100%;border:1px solid #d2d2d2;max-height:200px;overflow-y:auto;background-color:#fff;border-radius:2px;box-shadow:0 2px 4px rgba(0,0,0,.12);box-sizing:border-box;}
.layui-iconpicker-item{border:1px solid #e6e6e6;width:90px;height:38px;border-radius:4px;cursor:pointer;position:relative;}
.layui-iconpicker-icon{border-right:1px solid #e6e6e6;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;width:60px;height:100%;float:left;text-align:center;background:#fff;transition:all .3s;}
.layui-iconpicker-icon i{line-height:38px;font-size:18px;}
.layui-iconpicker-item > .layui-edge{left:70px;}
.layui-iconpicker-item:hover{border-color:#D2D2D2!important;}
.layui-iconpicker-item:hover .layui-iconpicker-icon{border-color:#D2D2D2!important;}
.layui-iconpicker.layui-form-selected .layui-anim{display:block;}
.layui-iconpicker-body{padding:6px;}
.layui-iconpicker .layui-iconpicker-list{background-color:#fff;border:1px solid #ccc;border-radius:4px;}
.layui-iconpicker .layui-iconpicker-icon-item{display:inline-block;width:21.1%;line-height:36px;text-align:center;cursor:pointer;vertical-align:top;height:36px;margin:4px;border:1px solid #ddd;border-radius:2px;transition:300ms;}
.layui-iconpicker .layui-iconpicker-icon-item i.layui-icon{font-size:17px;}
.layui-iconpicker .layui-iconpicker-icon-item:hover{background-color:#eee;border-color:#ccc;-webkit-box-shadow:0 0 2px #aaa,0 0 2px #fff inset;-moz-box-shadow:0 0 2px #aaa,0 0 2px #fff inset;box-shadow:0 0 2px #aaa,0 0 2px #fff inset;text-shadow:0 0 1px #fff;}
.icon {
width: 1em; height: 1em;
vertical-align: -0.15em;
fill: currentColor;
overflow: hidden;
}
.hide-project-icon-list{
display: none;
}
/* 文字悬浮提示样式 */
/* tooltip样式 */
[tooltip] {

View File

@ -484,6 +484,32 @@ input#doc-name,input#doctemp-name{
background-color: #2176ff;
}
/* 图标选择器 */
.layui-iconpicker {max-width: 280px;}
.layui-iconpicker{position:absolute;left:0;top:42px;padding:5px 0;z-index:899;min-width:100%;border:1px solid #d2d2d2;max-height:200px;overflow-y:auto;background-color:#fff;border-radius:2px;box-shadow:0 2px 4px rgba(0,0,0,.12);box-sizing:border-box;}
.layui-iconpicker-item{border:1px solid #e6e6e6;width:90px;height:38px;border-radius:4px;cursor:pointer;position:relative;}
.layui-iconpicker-icon{border-right:1px solid #e6e6e6;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;width:60px;height:100%;float:left;text-align:center;background:#fff;transition:all .3s;}
.layui-iconpicker-icon i{line-height:38px;font-size:18px;}
.layui-iconpicker-item > .layui-edge{left:70px;}
.layui-iconpicker-item:hover{border-color:#D2D2D2!important;}
.layui-iconpicker-item:hover .layui-iconpicker-icon{border-color:#D2D2D2!important;}
.layui-iconpicker.layui-form-selected .layui-anim{display:block;}
.layui-iconpicker-body{padding:6px;}
.layui-iconpicker .layui-iconpicker-list{background-color:#fff;border:1px solid #ccc;border-radius:4px;}
.layui-iconpicker .layui-iconpicker-icon-item{display:inline-block;width:21.1%;line-height:36px;text-align:center;cursor:pointer;vertical-align:top;height:36px;margin:4px;border:1px solid #ddd;border-radius:2px;transition:300ms;}
.layui-iconpicker .layui-iconpicker-icon-item i.layui-icon{font-size:17px;}
.layui-iconpicker .layui-iconpicker-icon-item:hover{background-color:#eee;border-color:#ccc;-webkit-box-shadow:0 0 2px #aaa,0 0 2px #fff inset;-moz-box-shadow:0 0 2px #aaa,0 0 2px #fff inset;box-shadow:0 0 2px #aaa,0 0 2px #fff inset;text-shadow:0 0 1px #fff;}
.icon {
width: 1em; height: 1em;
vertical-align: -0.15em;
fill: currentColor;
overflow: hidden;
}
.hide-project-icon-list{
display: none;
}
/* 文字悬浮提示样式 */
/* tooltip样式 */
[tooltip] {

View File

@ -252,7 +252,7 @@ $("#doc-cache-btn").click(function(){
$('div.editormd-preview').on('click','a',function(e){
e.target.target = '_blank';
});
$("#editor-md").on('click','a',function(e){
$("div.editormd-preview").on('click','a',function(e){
e.target.target = '_blank';
})

View File

@ -47,6 +47,9 @@
</form>
<!-- 文集名称 -->
<div class="project-title">
{% if project.icon %}
<svg class="icon" aria-hidden="true"><use xlink:href="#{{project.icon}}"></use></svg>
{% endif %}
<a href="{% url 'pro_index' pro_id=project.id %}">{{ project.name }}
{% if project.role == 1 %}
<i class="layui-icon layui-icon-password" title="{% trans '私密文档' %}"></i>
@ -295,6 +298,7 @@
<script src="{% static 'viewerjs/viewer.js' %}"></script>
<script src="{% static 'qrcodejs/qrcode.min.js' %}"></script>
<script src="{% static 'mrdoc/mrdoc-docs.js' %}?version={{mrdoc_version}}"></script>
<script src="{% static 'iconFont/iconfont.js' %}"></script>
<script>
{% if toc_cnt > 999 %}

View File

@ -44,6 +44,23 @@
<input class="layui-input" type="text" id="pname" style="margin-bottom:10px;" placeholder="{% trans '输入文集名' %}" required lay-verify="required" value="{{pro.name}}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">文集图标</label>
<div class="layui-input-block">
<button class="layui-btn layui-btn-primary layui-btn-sm" id="project-icon-select">
{% if pro.icon %}
<svg class="icon" aria-hidden="true"><use xlink:href="#{{pro.icon}}"></use></svg>
{% else %}
<i class="layui-icon layui-icon-addition"></i>
{% endif %}
</button>
<input type="hidden" name="picon" id="picon" value="{{pro.icon}}"/>
<div class="layui-anim layui-anim-upbit layui-iconpicker hide-project-icon-list" id="project-icon-select-box">
<div class="layui-iconpicker-list" id="mrdoc-project-icon-list">
</div>
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">{% trans "文集简介" %}</label>
<div class="layui-input-block">
@ -190,7 +207,7 @@
</div>
{% endblock %}
{% block custom_script %}
<script src="{% static 'iconFont/iconfont.js' %}"></script>
<script src="{% static 'jquery/3.1.1/jquery.min.js' %}"></script>
<script src="{% static 'layui/layui.all.js' %}"></script>
<script src="{% static '/tagsInput/tagsinput.js' %}" type="text/javascript" charset="utf-8"></script>
@ -201,23 +218,41 @@
var form = layui.form;
//监听单选事件
form.on('radio(role)', function(data){
console.log(data.elem); //得到radio原始DOM对象
console.log(data.value); //被点击的radio的value值
if(data.value in [0,1]){
$("#role-pwd").css("display","none");
$("#role-user").css("display","none");
}else if(data.value == 2){
$("#role-user").css("display","block");
$("#role-pwd").css("display","none");
}else if(data.value == 3){
$("#role-user").css("display","none");
$("#role-pwd").css("display","block");
}
console.log(data.elem); //得到radio原始DOM对象
console.log(data.value); //被点击的radio的value值
if(data.value in [0,1]){
$("#role-pwd").css("display","none");
$("#role-user").css("display","none");
}else if(data.value == 2){
$("#role-user").css("display","block");
$("#role-pwd").css("display","none");
}else if(data.value == 3){
$("#role-user").css("display","none");
$("#role-pwd").css("display","block");
}
});
// 动态生成文集图标列表
for(var i=1;i<44;i++){
var icon_elem = '<div class="layui-iconpicker-icon-item" style="width:20%" data-icon="mrdoc-icon-pro-'+ i +'"><svg class="icon" aria-hidden="true"><use xlink:href="#mrdoc-icon-pro-'+ i +'"></use></svg></div>'
$("#mrdoc-project-icon-list").append(icon_elem)
}
// 点击图标选择按钮
$("#project-icon-select").click(function(){
$("#project-icon-select-box").toggleClass("hide-project-icon-list")
});
// 选中图标
$(".layui-iconpicker-icon-item").click(function(e){
var selected_icon = e.currentTarget.dataset.icon;
var selected_icon_svg = '<svg class="icon" aria-hidden="true"><use xlink:href="#'+ selected_icon +'"></use></svg>'
console.log(selected_icon)
$("#project-icon-select").html(selected_icon_svg)
$("#picon").val(selected_icon)
})
//修改文集基础信息
modifyProject = function(pro_id,pro_name,pro_intro){
layer.load(1);
var project_data = {
'picon':$("#picon").val(),
'pro_id':'{{pro.id}}',
'name':$("#pname").val(),
'desc':$("#desc").val(),

View File

@ -15,6 +15,7 @@
<link href="{% static 'layui/css/layui.css' %}" rel="stylesheet">
<link href="{% static 'mrdoc/mrdoc.css' %}?version={{mrdoc_version}}" rel="stylesheet">
<link rel="icon" href="{% static 'search/mrdoc_logo_300.png' %}" sizes="192x192" />
<!-- <link href="//at.alicdn.com/t/font_2281207_xtauo52jlgk.css" rel="stylesheet"> -->
<style>
.layui-nav .layui-this:after, .layui-nav-bar, .layui-nav-tree, .layui-nav-itemed:after {
background-color: #333 !important;
@ -26,6 +27,12 @@
.layui-laypage .layui-laypage-curr .layui-laypage-em{
background-color: #333 !important;
}
.layui-form-label{
width: 30px !important;
}
.layui-input-block{
margin-left: 60px !important;
}
/* 控制栏表单下拉框样式 */
.index-control .layui-input-inline{
width: 100px;
@ -127,30 +134,33 @@
{% for p in projects %}
<!-- 网格布局 -->
<div class="layui-col-md3 layui-col-xs12 project-item">
<a href="{% url 'pro_index' p.id %}" title="{{p.name}}">
<a href="{% url 'pro_index' p.id %}">
<div class="layui-card">
<div class="layui-card-header" >
{% if p.role == 1 %}
<p class="layui-elip" style="font-weight: 700;"><i class="layui-icon layui-icon-circle-dot" style="color: #FF5722;"></i> {{ p.name }}</p>
{% elif p.role == 2 %}
<p class="layui-elip" style="font-weight: 700;"><i class="layui-icon layui-icon-circle-dot" style="color: #009688;"></i> {{ p.name }}</p>
{% elif p.role == 3 %}
<p class="layui-elip" style="font-weight: 700;"><i class="layui-icon layui-icon-circle-dot" style="color: #1E9FFF;"></i> {{ p.name }}</p>
{% 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 }}</p>
{% else %}
<p class="layui-elip" style="font-weight: 700;"><i class="layui-icon layui-icon-circle-dot" style="color: #5FB878;"></i> {{ p.name }}</p>
<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 }}</p>
{% endif %}
</div>
<div class="layui-card-body" style="font-size: 12px;">
<p class="layui-word-aux layui-elip">{% trans "作者:" %}{% if p.create_user.first_name != '' %} {{p.create_user.first_name}} {% else %} {{p.create_user}}{% endif %}</p>
<p class="layui-word-aux layui-elip">{% trans "最新:" %}{{p.id | get_new_doc}}</p>
<p class="tooltip layui-word-aux">{% trans "简介:" %}
{% if p.intro == "" %}
<span class="">{% trans "此文集没有填写简介" %}</span>
{% else %}
<span class="">{{ p.intro | slice:'30' }}…</span>
<span class="tooltip-content clearfix">{{ p.intro }}</span>
{% endif %}
<p class="layui-word-aux layui-elip"><i class="layui-icon layui-icon-user"></i> {% if p.create_user.first_name != '' %} {{p.create_user.first_name}} {% else %} {{p.create_user}}{% endif %}</p>
<p class="tooltip layui-word-aux">
<i class="layui-icon layui-icon-speaker"></i>
{% if p.intro == "" %}
<span class="">{% trans "此文集没有填写简介" %}</span>
{% else %}
<span class="">{{ p.intro | slice:'20' }}…</span>
<span class="tooltip-content clearfix">{{ p.intro }}</span>
{% endif %}
</p>
{% for new_doc in p.id|get_new_doc %}
<p class="layui-word-aux layui-elip">
<i class="layui-icon layui-icon-form"></i>
<span>{{new_doc.name}}</span>
<span style="float: right;">{{new_doc.modify_time|date:"n-d"}}</span></p>
{% endfor %}
</div>
</div>
</a>
@ -231,6 +241,48 @@
{% include 'app_doc/foot_base.html' %}
<!-- 页脚结束 -->
<!-- 新建文集div块 -->
<div style="padding: 20px;display:none;" id="create-project-div">
<div class="layui-form">
<div class="layui-form-item">
<label class="layui-form-label">图标</label>
<div class="layui-input-block">
<button class="layui-btn layui-btn-primary layui-btn-sm" id="project-icon-select">
<i class="layui-icon layui-icon-addition"></i>
</button>
<input type="hidden" name="picon" id="picon" />
<div class="layui-anim layui-anim-upbit layui-iconpicker hide-project-icon-list" id="project-icon-select-box">
<div class="layui-iconpicker-list" id="mrdoc-project-icon-list">
</div>
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">名称</label>
<div class="layui-input-block">
<input class="layui-input" type="text" id="pname" style="margin-bottom:10px;" placeholder="输入文集名" required lay-verify="required">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">简介</label>
<div class="layui-input-block">
<textarea name="desc" id="desc" placeholder="输入文集简介不超过100个字超出将被截断" maxlength="100" class="layui-textarea"></textarea>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">权限</label>
<div class="layui-input-block">
<input type="radio" name="project-role" value="0" title="公开" checked>
<input type="radio" name="project-role" value="1" title="私密">
</div>
</div>
<div style="color:red;font-size:12px;">{% trans "*在可个人中心对文集权限进行进一步控制" %}</div>
</div>
</div>
<!-- 结束新建文集div块 -->
<script src="{% static 'iconFont/iconfont.js' %}"></script>
<script src="{% static 'jquery/3.1.1/jquery.min.js' %}"></script>
<script src="{% static 'layui/layui.all.js' %}"></script>
{% block custom_script %}
@ -276,35 +328,66 @@
var filter_data = form.val("filter-project-form");
console.log(filter_data)
window.location.href = '/?sort=' + filter_data['sort'] + '&role=' + filter_data['role'] + '&kw={{kw}}'
});
});
// 动态生成文集图标列表
for(var i=1;i<44;i++){
var icon_elem = '<div class="layui-iconpicker-icon-item" style="width:20%" data-icon="mrdoc-icon-pro-'+ i +'"><svg class="icon" aria-hidden="true"><use xlink:href="#mrdoc-icon-pro-'+ i +'"></use></svg></div>'
$("#mrdoc-project-icon-list").append(icon_elem)
}
// 点击图标选择按钮
$("#project-icon-select").click(function(){
$("#project-icon-select-box").toggleClass("hide-project-icon-list")
});
// 选中图标
$(".layui-iconpicker-icon-item").click(function(e){
var selected_icon = e.currentTarget.dataset.icon;
var selected_icon_svg = '<svg class="icon" aria-hidden="true"><use xlink:href="#'+ selected_icon +'"></use></svg>'
console.log(selected_icon)
$("#project-icon-select").html(selected_icon_svg)
$("#picon").val(selected_icon)
})
</script>
<script>
//创建新文集
createPro = function () {
layer.open({
type:1,
title:'{% trans "新建文集" %}',
area:'300px;',
area:'400px;',
id:'createPro',//配置ID
content: $('#create-project-div'),
btn:['{% trans "确定" %}','{% trans "取消" %}'], //添加按钮
btnAlign:'c', //按钮居中
sucess:function(){
form.render();
},
yes:function (index,layero) {
layer.load(1)
data = {
'picon':$("#picon").val(),
'pname':$("#pname").val(),
'desc':$("#desc").val(),
'role':$("#project-role").val(),
'role':$("input[name=project-role]:checked").val(),
}
$.post("{% url 'create_project' %}",data,function(r){
if(r.status){
window.location.reload();
}else{
//创建失败,提示
console.log(r)
$.ajax({
url:"{% url 'create_project' %}",
type:'post',
data:data,
success:function(r){
if(r.status){
window.location.reload();
}else{
//创建失败,提示
console.log(r)
layer.closeAll('loading')
layer.msg(r.data)
}
},
error:function(){
layer.closeAll('loading')
layer.msg(r.data)
layer.msg("创建异常")
}
})
},
@ -391,23 +474,6 @@
{% endif %}
<!-- 统计代码结束 -->
<!-- 新建文集div块 -->
<div style="padding: 20px;display:none;" id="create-project-div">
<input class="layui-input" type="text" id="pname" style="margin-bottom:10px;" placeholder="输入文集名" required lay-verify="required">
<textarea name="desc" id="desc" placeholder="输入文集简介不超过100个字超出将被截断" maxlength="100" class="layui-textarea"></textarea>
<div class="layui-form-item" style="margin-top:10px;">
<label class="layui-form-label" style="text-align:left;padding:9px 0px;">{% trans "文集权限" %}</label>
<div class="layui-input-block">
<select name="project-role" lay-verify="" class="layui-select" id="project-role">
<!--<option value="">选择文集权限</option>-->
<option value="0">{% trans "公开" %}</option>
<option value="1">{% trans "私密" %}</option>
</select>
</div>
</div>
<div style="color:red;font-size:12px;">{% trans "*在可个人中心对文集权限进行进一步控制" %}</div>
</div>
<!-- 结束新建文集div块 -->
{% endblock %}
</body>
</html>