diff --git a/app_doc/migrations/0035_auto_20201221_2042.py b/app_doc/migrations/0035_auto_20201221_2042.py new file mode 100644 index 0000000..e6e5be4 --- /dev/null +++ b/app_doc/migrations/0035_auto_20201221_2042.py @@ -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='文集名称'), + ), + ] diff --git a/app_doc/models.py b/app_doc/models.py index 1262f94..792b588 100644 --- a/app_doc/models.py +++ b/app_doc/models.py @@ -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="文集权限") diff --git a/app_doc/templatetags/project_filter.py b/app_doc/templatetags/project_filter.py index 62d3cd5..8937e02 100644 --- a/app_doc/templatetags/project_filter.py +++ b/app_doc/templatetags/project_filter.py @@ -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 diff --git a/app_doc/views.py b/app_doc/views.py index c930ef5..3fbae60 100644 --- a/app_doc/views.py +++ b/app_doc/views.py @@ -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: diff --git a/static/iconFont/demo.css b/static/iconFont/demo.css new file mode 100644 index 0000000..a67054a --- /dev/null +++ b/static/iconFont/demo.css @@ -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; +} diff --git a/static/iconFont/demo_index.html b/static/iconFont/demo_index.html new file mode 100644 index 0000000..03c4556 --- /dev/null +++ b/static/iconFont/demo_index.html @@ -0,0 +1,1182 @@ + + + + + IconFont Demo + + + + + + + + + + + +
+

+ +
+
+
    + +
  • + +
    鸟瞰logo
    +
    
    +
  • + +
  • + +
    +
    
    +
  • + +
  • + +
    风车
    +
    
    +
  • + +
  • + +
    +
    
    +
  • + +
  • + +
    月亮
    +
    
    +
  • + +
  • + +
    +
    
    +
  • + +
  • + +
    土壤
    +
    
    +
  • + +
  • + +
    +
    
    +
  • + +
  • + +
    木工
    +
    
    +
  • + +
  • + +
    火 (1)
    +
    
    +
  • + +
  • + +
    +
    
    +
  • + +
  • + +
    +
    
    +
  • + +
  • + +
    +
    
    +
  • + +
  • + +
    凤凰云logo带色
    +
    
    +
  • + +
  • + +
    密 + 椭圆形 蒙版
    +
    
    +
  • + +
  • + +
    pro-2
    +
    
    +
  • + +
  • + +
    pro-1
    +
    
    +
  • + +
  • + +
    pro-8
    +
    
    +
  • + +
  • + +
    pro-9
    +
    
    +
  • + +
  • + +
    pro-11
    +
    
    +
  • + +
  • + +
    pro-7
    +
    
    +
  • + +
  • + +
    pro-12
    +
    
    +
  • + +
  • + +
    pro-10
    +
    
    +
  • + +
  • + +
    pro-16
    +
    
    +
  • + +
  • + +
    pro-15
    +
    
    +
  • + +
  • + +
    pro-17
    +
    
    +
  • + +
  • + +
    pro-18
    +
    
    +
  • + +
  • + +
    pro-26
    +
    
    +
  • + +
  • + +
    pro-24
    +
    
    +
  • + +
  • + +
    pro-27
    +
    
    +
  • + +
  • + +
    pro-32
    +
    
    +
  • + +
  • + +
    pro-33
    +
    
    +
  • + +
  • + +
    pro-29
    +
    
    +
  • + +
  • + +
    pro-30
    +
    
    +
  • + +
  • + +
    pro-34
    +
    
    +
  • + +
  • + +
    pro-31
    +
    
    +
  • + +
  • + +
    pro-36
    +
    
    +
  • + +
  • + +
    pro-38
    +
    
    +
  • + +
  • + +
    pro-40
    +
    
    +
  • + +
  • + +
    pro-42
    +
    
    +
  • + +
  • + +
    pro-43
    +
    
    +
  • + +
  • + +
    pro-46
    +
    
    +
  • + +
  • + +
    pro-39
    +
    
    +
  • + +
  • + +
    pro-48
    +
    
    +
  • + +
+
+

Unicode 引用

+
+ +

Unicode 是字体在网页端最原始的应用方式,特点是:

+
    +
  • 兼容性最好,支持 IE6+,及所有现代浏览器。
  • +
  • 支持按字体的方式去动态调整图标大小,颜色等等。
  • +
  • 但是因为是字体,所以不支持多色。只能使用平台里单色的图标,就算项目里有多色图标也会自动去色。
  • +
+
+

注意:新版 iconfont 支持多色图标,这些多色图标在 Unicode 模式下将不能使用,如果有需求建议使用symbol 的引用方式

+
+

Unicode 使用步骤如下:

+

第一步:拷贝项目下面生成的 @font-face

+
@font-face {
+  font-family: 'iconfont';
+  src: url('iconfont.eot');
+  src: url('iconfont.eot?#iefix') format('embedded-opentype'),
+      url('iconfont.woff2') format('woff2'),
+      url('iconfont.woff') format('woff'),
+      url('iconfont.ttf') format('truetype'),
+      url('iconfont.svg#iconfont') format('svg');
+}
+
+

第二步:定义使用 iconfont 的样式

+
.iconfont {
+  font-family: "iconfont" !important;
+  font-size: 16px;
+  font-style: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+
+

第三步:挑选相应图标并获取字体编码,应用于页面

+
+<span class="iconfont">&#x33;</span>
+
+
+

"iconfont" 是你项目下的 font-family。可以通过编辑项目查看,默认是 "iconfont"。

+
+
+
+
+
    + +
  • + +
    + 鸟瞰logo +
    +
    .mrdoc-icon-pro-44 +
    +
  • + +
  • + +
    + 金 +
    +
    .mrdoc-icon-pro-43 +
    +
  • + +
  • + +
    + 风车 +
    +
    .mrdoc-icon-pro-42 +
    +
  • + +
  • + +
    + 水 +
    +
    .mrdoc-icon-pro-41 +
    +
  • + +
  • + +
    + 月亮 +
    +
    .mrdoc-icon-pro-40 +
    +
  • + +
  • + +
    + 龙 +
    +
    .mrdoc-icon-pro-39 +
    +
  • + +
  • + +
    + 土壤 +
    +
    .mrdoc-icon-pro-38 +
    +
  • + +
  • + +
    + 树 +
    +
    .mrdoc-icon-pro-37 +
    +
  • + +
  • + +
    + 木工 +
    +
    .mrdoc-icon-pro-36 +
    +
  • + +
  • + +
    + 火 (1) +
    +
    .mrdoc-icon-pro-35 +
    +
  • + +
  • + +
    + 鱼 +
    +
    .mrdoc-icon-pro-34 +
    +
  • + +
  • + +
    + 新 +
    +
    .mrdoc-icon-pro-33 +
    +
  • + +
  • + +
    + 猫 +
    +
    .mrdoc-icon-pro-32 +
    +
  • + +
  • + +
    + 凤凰云logo带色 +
    +
    .mrdoc-icon-pro-31 +
    +
  • + +
  • + +
    + 密 + 椭圆形 蒙版 +
    +
    .mrdoc-icon-pro-3 +
    +
  • + +
  • + +
    + pro-2 +
    +
    .mrdoc-icon-pro-2 +
    +
  • + +
  • + +
    + pro-1 +
    +
    .mrdoc-icon-pro-1 +
    +
  • + +
  • + +
    + pro-8 +
    +
    .mrdoc-icon-pro-8 +
    +
  • + +
  • + +
    + pro-9 +
    +
    .mrdoc-icon-pro-9 +
    +
  • + +
  • + +
    + pro-11 +
    +
    .mrdoc-icon-pro-11 +
    +
  • + +
  • + +
    + pro-7 +
    +
    .mrdoc-icon-pro-7 +
    +
  • + +
  • + +
    + pro-12 +
    +
    .mrdoc-icon-pro-12 +
    +
  • + +
  • + +
    + pro-10 +
    +
    .mrdoc-icon-pro-10 +
    +
  • + +
  • + +
    + pro-16 +
    +
    .mrdoc-icon-pro-16 +
    +
  • + +
  • + +
    + pro-15 +
    +
    .mrdoc-icon-pro-15 +
    +
  • + +
  • + +
    + pro-17 +
    +
    .mrdoc-icon-pro-17 +
    +
  • + +
  • + +
    + pro-18 +
    +
    .mrdoc-icon-pro-18 +
    +
  • + +
  • + +
    + pro-26 +
    +
    .mrdoc-icon-pro-26 +
    +
  • + +
  • + +
    + pro-24 +
    +
    .mrdoc-icon-pro-24 +
    +
  • + +
  • + +
    + pro-27 +
    +
    .mrdoc-icon-pro-27 +
    +
  • + +
  • + +
    + pro-32 +
    +
    .mrdoc-icon-pro-30 +
    +
  • + +
  • + +
    + pro-33 +
    +
    .mrdoc-icon-pro-29 +
    +
  • + +
  • + +
    + pro-29 +
    +
    .mrdoc-icon-pro-28 +
    +
  • + +
  • + +
    + pro-30 +
    +
    .mrdoc-icon-pro-25 +
    +
  • + +
  • + +
    + pro-34 +
    +
    .mrdoc-icon-pro-23 +
    +
  • + +
  • + +
    + pro-31 +
    +
    .mrdoc-icon-pro-22 +
    +
  • + +
  • + +
    + pro-36 +
    +
    .mrdoc-icon-pro-21 +
    +
  • + +
  • + +
    + pro-38 +
    +
    .mrdoc-icon-pro-20 +
    +
  • + +
  • + +
    + pro-40 +
    +
    .mrdoc-icon-pro-19 +
    +
  • + +
  • + +
    + pro-42 +
    +
    .mrdoc-icon-pro-14 +
    +
  • + +
  • + +
    + pro-43 +
    +
    .mrdoc-icon-pro-13 +
    +
  • + +
  • + +
    + pro-46 +
    +
    .mrdoc-icon-pro-6 +
    +
  • + +
  • + +
    + pro-39 +
    +
    .mrdoc-icon-pro-5 +
    +
  • + +
  • + +
    + pro-48 +
    +
    .mrdoc-icon-pro-4 +
    +
  • + +
+
+

font-class 引用

+
+ +

font-class 是 Unicode 使用方式的一种变种,主要是解决 Unicode 书写不直观,语意不明确的问题。

+

与 Unicode 使用方式相比,具有如下特点:

+
    +
  • 兼容性良好,支持 IE8+,及所有现代浏览器。
  • +
  • 相比于 Unicode 语意明确,书写更直观。可以很容易分辨这个 icon 是什么。
  • +
  • 因为使用 class 来定义图标,所以当要替换图标时,只需要修改 class 里面的 Unicode 引用。
  • +
  • 不过因为本质上还是使用的字体,所以多色图标还是不支持的。
  • +
+

使用步骤如下:

+

第一步:引入项目下面生成的 fontclass 代码:

+
<link rel="stylesheet" href="./iconfont.css">
+
+

第二步:挑选相应图标并获取类名,应用于页面:

+
<span class="iconfont mrdoc-icon-xxx"></span>
+
+
+

" + iconfont" 是你项目下的 font-family。可以通过编辑项目查看,默认是 "iconfont"。

+
+
+
+
+
    + +
  • + +
    鸟瞰logo
    +
    #mrdoc-icon-pro-44
    +
  • + +
  • + +
    +
    #mrdoc-icon-pro-43
    +
  • + +
  • + +
    风车
    +
    #mrdoc-icon-pro-42
    +
  • + +
  • + +
    +
    #mrdoc-icon-pro-41
    +
  • + +
  • + +
    月亮
    +
    #mrdoc-icon-pro-40
    +
  • + +
  • + +
    +
    #mrdoc-icon-pro-39
    +
  • + +
  • + +
    土壤
    +
    #mrdoc-icon-pro-38
    +
  • + +
  • + +
    +
    #mrdoc-icon-pro-37
    +
  • + +
  • + +
    木工
    +
    #mrdoc-icon-pro-36
    +
  • + +
  • + +
    火 (1)
    +
    #mrdoc-icon-pro-35
    +
  • + +
  • + +
    +
    #mrdoc-icon-pro-34
    +
  • + +
  • + +
    +
    #mrdoc-icon-pro-33
    +
  • + +
  • + +
    +
    #mrdoc-icon-pro-32
    +
  • + +
  • + +
    凤凰云logo带色
    +
    #mrdoc-icon-pro-31
    +
  • + +
  • + +
    密 + 椭圆形 蒙版
    +
    #mrdoc-icon-pro-3
    +
  • + +
  • + +
    pro-2
    +
    #mrdoc-icon-pro-2
    +
  • + +
  • + +
    pro-1
    +
    #mrdoc-icon-pro-1
    +
  • + +
  • + +
    pro-8
    +
    #mrdoc-icon-pro-8
    +
  • + +
  • + +
    pro-9
    +
    #mrdoc-icon-pro-9
    +
  • + +
  • + +
    pro-11
    +
    #mrdoc-icon-pro-11
    +
  • + +
  • + +
    pro-7
    +
    #mrdoc-icon-pro-7
    +
  • + +
  • + +
    pro-12
    +
    #mrdoc-icon-pro-12
    +
  • + +
  • + +
    pro-10
    +
    #mrdoc-icon-pro-10
    +
  • + +
  • + +
    pro-16
    +
    #mrdoc-icon-pro-16
    +
  • + +
  • + +
    pro-15
    +
    #mrdoc-icon-pro-15
    +
  • + +
  • + +
    pro-17
    +
    #mrdoc-icon-pro-17
    +
  • + +
  • + +
    pro-18
    +
    #mrdoc-icon-pro-18
    +
  • + +
  • + +
    pro-26
    +
    #mrdoc-icon-pro-26
    +
  • + +
  • + +
    pro-24
    +
    #mrdoc-icon-pro-24
    +
  • + +
  • + +
    pro-27
    +
    #mrdoc-icon-pro-27
    +
  • + +
  • + +
    pro-32
    +
    #mrdoc-icon-pro-30
    +
  • + +
  • + +
    pro-33
    +
    #mrdoc-icon-pro-29
    +
  • + +
  • + +
    pro-29
    +
    #mrdoc-icon-pro-28
    +
  • + +
  • + +
    pro-30
    +
    #mrdoc-icon-pro-25
    +
  • + +
  • + +
    pro-34
    +
    #mrdoc-icon-pro-23
    +
  • + +
  • + +
    pro-31
    +
    #mrdoc-icon-pro-22
    +
  • + +
  • + +
    pro-36
    +
    #mrdoc-icon-pro-21
    +
  • + +
  • + +
    pro-38
    +
    #mrdoc-icon-pro-20
    +
  • + +
  • + +
    pro-40
    +
    #mrdoc-icon-pro-19
    +
  • + +
  • + +
    pro-42
    +
    #mrdoc-icon-pro-14
    +
  • + +
  • + +
    pro-43
    +
    #mrdoc-icon-pro-13
    +
  • + +
  • + +
    pro-46
    +
    #mrdoc-icon-pro-6
    +
  • + +
  • + +
    pro-39
    +
    #mrdoc-icon-pro-5
    +
  • + +
  • + +
    pro-48
    +
    #mrdoc-icon-pro-4
    +
  • + +
+
+

Symbol 引用

+
+ +

这是一种全新的使用方式,应该说这才是未来的主流,也是平台目前推荐的用法。相关介绍可以参考这篇文章 + 这种用法其实是做了一个 SVG 的集合,与另外两种相比具有如下特点:

+
    +
  • 支持多色图标了,不再受单色限制。
  • +
  • 通过一些技巧,支持像字体那样,通过 font-size, color 来调整样式。
  • +
  • 兼容性较差,支持 IE9+,及现代浏览器。
  • +
  • 浏览器渲染 SVG 的性能一般,还不如 png。
  • +
+

使用步骤如下:

+

第一步:引入项目下面生成的 symbol 代码:

+
<script src="./iconfont.js"></script>
+
+

第二步:加入通用 CSS 代码(引入一次就行):

+
<style>
+.icon {
+  width: 1em;
+  height: 1em;
+  vertical-align: -0.15em;
+  fill: currentColor;
+  overflow: hidden;
+}
+</style>
+
+

第三步:挑选相应图标并获取类名,应用于页面:

+
<svg class="icon" aria-hidden="true">
+  <use xlink:href="#icon-xxx"></use>
+</svg>
+
+
+
+ +
+
+ + + diff --git a/static/iconFont/iconfont.css b/static/iconFont/iconfont.css new file mode 100644 index 0000000..17ae311 --- /dev/null +++ b/static/iconFont/iconfont.css @@ -0,0 +1,193 @@ +@font-face {font-family: "iconfont"; + src: url('iconfont.eot?t=1608641107394'); /* IE9 */ + src: url('iconfont.eot?t=1608641107394#iefix') format('embedded-opentype'), /* IE6-IE8 */ + url('data:application/x-font-woff2;charset=utf-8;base64,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') format('woff2'), + url('iconfont.woff?t=1608641107394') format('woff'), + url('iconfont.ttf?t=1608641107394') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+ */ + url('iconfont.svg?t=1608641107394#iconfont') format('svg'); /* iOS 4.1- */ +} + +.iconfont { + font-family: "iconfont" !important; + font-size: 16px; + font-style: normal; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.mrdoc-icon-pro-44:before { + content: "\e603"; +} + +.mrdoc-icon-pro-43:before { + content: "\e607"; +} + +.mrdoc-icon-pro-42:before { + content: "\e61e"; +} + +.mrdoc-icon-pro-41:before { + content: "\e600"; +} + +.mrdoc-icon-pro-40:before { + content: "\e652"; +} + +.mrdoc-icon-pro-39:before { + content: "\e6a3"; +} + +.mrdoc-icon-pro-38:before { + content: "\e624"; +} + +.mrdoc-icon-pro-37:before { + content: "\e602"; +} + +.mrdoc-icon-pro-36:before { + content: "\e657"; +} + +.mrdoc-icon-pro-35:before { + content: "\e63c"; +} + +.mrdoc-icon-pro-34:before { + content: "\e601"; +} + +.mrdoc-icon-pro-33:before { + content: "\e625"; +} + +.mrdoc-icon-pro-32:before { + content: "\e62f"; +} + +.mrdoc-icon-pro-31:before { + content: "\e666"; +} + +.mrdoc-icon-pro-3:before { + content: "\e609"; +} + +.mrdoc-icon-pro-2:before { + content: "\e614"; +} + +.mrdoc-icon-pro-1:before { + content: "\e617"; +} + +.mrdoc-icon-pro-8:before { + content: "\e61a"; +} + +.mrdoc-icon-pro-9:before { + content: "\e61b"; +} + +.mrdoc-icon-pro-11:before { + content: "\e61c"; +} + +.mrdoc-icon-pro-7:before { + content: "\e61d"; +} + +.mrdoc-icon-pro-12:before { + content: "\e61f"; +} + +.mrdoc-icon-pro-10:before { + content: "\e620"; +} + +.mrdoc-icon-pro-16:before { + content: "\e621"; +} + +.mrdoc-icon-pro-15:before { + content: "\e622"; +} + +.mrdoc-icon-pro-17:before { + content: "\e623"; +} + +.mrdoc-icon-pro-18:before { + content: "\e626"; +} + +.mrdoc-icon-pro-26:before { + content: "\e629"; +} + +.mrdoc-icon-pro-24:before { + content: "\e62c"; +} + +.mrdoc-icon-pro-27:before { + content: "\e62e"; +} + +.mrdoc-icon-pro-30:before { + content: "\e630"; +} + +.mrdoc-icon-pro-29:before { + content: "\e631"; +} + +.mrdoc-icon-pro-28:before { + content: "\e632"; +} + +.mrdoc-icon-pro-25:before { + content: "\e633"; +} + +.mrdoc-icon-pro-23:before { + content: "\e634"; +} + +.mrdoc-icon-pro-22:before { + content: "\e635"; +} + +.mrdoc-icon-pro-21:before { + content: "\e637"; +} + +.mrdoc-icon-pro-20:before { + content: "\e639"; +} + +.mrdoc-icon-pro-19:before { + content: "\e63a"; +} + +.mrdoc-icon-pro-14:before { + content: "\e63b"; +} + +.mrdoc-icon-pro-13:before { + content: "\e63e"; +} + +.mrdoc-icon-pro-6:before { + content: "\e63f"; +} + +.mrdoc-icon-pro-5:before { + content: "\e641"; +} + +.mrdoc-icon-pro-4:before { + content: "\e642"; +} + diff --git a/static/iconFont/iconfont.eot b/static/iconFont/iconfont.eot new file mode 100644 index 0000000..32509e8 Binary files /dev/null and b/static/iconFont/iconfont.eot differ diff --git a/static/iconFont/iconfont.js b/static/iconFont/iconfont.js new file mode 100644 index 0000000..9bef9c2 --- /dev/null +++ b/static/iconFont/iconfont.js @@ -0,0 +1 @@ +!function(c){var a,l,h,t,p,F,i='',z=(z=document.getElementsByTagName("script"))[z.length-1].getAttribute("data-injectcss");if(z&&!c.__iconfont__svg__cssinject__){c.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(c){console&&console.log(c)}}function d(){p||(p=!0,h())}a=function(){var c,a,l,h;(h=document.createElement("div")).innerHTML=i,i=null,(l=h.getElementsByTagName("svg")[0])&&(l.setAttribute("aria-hidden","true"),l.style.position="absolute",l.style.width=0,l.style.height=0,l.style.overflow="hidden",c=l,(a=document.body).firstChild?(h=c,(l=a.firstChild).parentNode.insertBefore(h,l)):a.appendChild(c))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(a,0):(l=function(){document.removeEventListener("DOMContentLoaded",l,!1),a()},document.addEventListener("DOMContentLoaded",l,!1)):document.attachEvent&&(h=a,t=c.document,p=!1,(F=function(){try{t.documentElement.doScroll("left")}catch(c){return void setTimeout(F,50)}d()})(),t.onreadystatechange=function(){"complete"==t.readyState&&(t.onreadystatechange=null,d())})}(window); \ No newline at end of file diff --git a/static/iconFont/iconfont.json b/static/iconFont/iconfont.json new file mode 100644 index 0000000..258fe84 --- /dev/null +++ b/static/iconFont/iconfont.json @@ -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 + } + ] +} diff --git a/static/iconFont/iconfont.svg b/static/iconFont/iconfont.svg new file mode 100644 index 0000000..d06b9cf --- /dev/null +++ b/static/iconFont/iconfont.svg @@ -0,0 +1,158 @@ + + + + + +Created by iconfont + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/static/iconFont/iconfont.ttf b/static/iconFont/iconfont.ttf new file mode 100644 index 0000000..66abc9d Binary files /dev/null and b/static/iconFont/iconfont.ttf differ diff --git a/static/iconFont/iconfont.woff b/static/iconFont/iconfont.woff new file mode 100644 index 0000000..51b1ffa Binary files /dev/null and b/static/iconFont/iconfont.woff differ diff --git a/static/iconFont/iconfont.woff2 b/static/iconFont/iconfont.woff2 new file mode 100644 index 0000000..aeb6df5 Binary files /dev/null and b/static/iconFont/iconfont.woff2 differ diff --git a/static/mrdoc/mrdoc-admin.css b/static/mrdoc/mrdoc-admin.css index 173670c..4fa3ef9 100644 --- a/static/mrdoc/mrdoc-admin.css +++ b/static/mrdoc/mrdoc-admin.css @@ -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] { diff --git a/static/mrdoc/mrdoc.css b/static/mrdoc/mrdoc.css index b1a195f..0a23c10 100644 --- a/static/mrdoc/mrdoc.css +++ b/static/mrdoc/mrdoc.css @@ -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] { diff --git a/static/mrdoc/mrdoc.editor.js b/static/mrdoc/mrdoc.editor.js index 02dca0f..ae568f4 100644 --- a/static/mrdoc/mrdoc.editor.js +++ b/static/mrdoc/mrdoc.editor.js @@ -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'; }) diff --git a/template/app_doc/docs_base.html b/template/app_doc/docs_base.html index 58641a0..c5434a1 100644 --- a/template/app_doc/docs_base.html +++ b/template/app_doc/docs_base.html @@ -47,6 +47,9 @@
+ {% if project.icon %} + + {% endif %} {{ project.name }} {% if project.role == 1 %} @@ -295,6 +298,7 @@ + @@ -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 = '
' + $("#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 = '' + 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(), diff --git a/template/app_doc/pro_list.html b/template/app_doc/pro_list.html index 9021601..f884c99 100644 --- a/template/app_doc/pro_list.html +++ b/template/app_doc/pro_list.html @@ -15,6 +15,7 @@ +