绿皮实现文档渲染前置挂件槽

本贴最后更新于 899 天前,其中的信息可能已经水流花落

savor 主题实现了显示文档修改时间,就像这样:

image.png

稍微想了下,好像略微改一下代码就能够实现显示挂件了;

原本渲染修改时间的挂件是这样的:

/**----------------------------------为打开文档的标题下显示文档创建日期----------------------------------*/ function showDocumentCreationDate() { setInterval(DocumentCreationDate, 300); } function DocumentCreationDate() { var openDoc = document.querySelectorAll(".layout-tab-container>.fn__flex-1.protyle:not(.fn__none):not([CreatTimeOK])"); var allDocumentTitleElement = []; for (let index = 0; index < openDoc.length; index++) { const element = openDoc[index]; element.setAttribute("CreatTimeOK", true); allDocumentTitleElement.push(element.children[1].children[1].children[1]); } for (let index = 0; index < allDocumentTitleElement.length; index++) { const element = allDocumentTitleElement[index]; var documentCreatTimeElement = creatTimeSpanElement(element.parentElement); documentCreatTimeElement.innerText = "获取文档创建日期中……"; tilteWhlie(element, documentCreatTimeElement); } } function tilteWhlie(element, documentCreatTimeElement) { var setID = setInterval(() => { var time = getDocumentTime(element); if (time != "") { documentCreatTimeElement.innerText = time; clearInterval(setID); }; }, 3000); }

毛过来稍微修改一下

/**-- 在所有文档前面加上一个挂件插槽--**/ function showPreviousWidgetsSlot() { setInterval(DocumentShowPreviousWidget, 300); } DocumentShowPreviousWidget() showPreviousWidgetsSlot() function DocumentShowPreviousWidget() { var openDoc = document.querySelectorAll(".layout-tab-container>.fn__flex-1.protyle:not(.fn__none)"); var allDocumentTitleElement = []; for (let index = 0; index < openDoc.length; index++) { const element = openDoc[index]; element.setAttribute("withPreviousWidgets", true); allDocumentTitleElement.push(element.children[1].children[1].children[1]); } for (let index = 0; index < allDocumentTitleElement.length; index++) { const element = allDocumentTitleElement[index]; if ( !element.parentElement.querySelector('.previous-widgets-slot')&&element.parentElement.parentElement.querySelector('[data-node-id]')) { var documentPreviousWidgetsSlotElement = CreatePreviousWidgetsSlot(element.parentElement); element.parentElement.appendChild(documentPreviousWidgetsSlotElement) } } } function CreatePreviousWidgetsSlot(element) { let cloneNode = element.parentElement.querySelector(".protyle-wysiwyg.protyle-wysiwyg--attr").cloneNode(false) cloneNode.innerHTML = ` <div class="iframe-content"> <iframe src="/widgets/${cloneNode.getAttribute('custom-previousWidget') || 'listChildDocs'}/" ></iframe> </div> ` let id = element.parentElement.parentElement.querySelector('[data-node-id]').getAttribute('data-node-id') cloneNode.setAttribute('data-node-id',id) cloneNode.setAttribute('contenteditable',false) cloneNode.setAttribute('style', "padding: 0;") let div = document.createElement('div') div.setAttribute('class', 'previous-widgets-slot') div.setAttribute('contenteditable', false) div.setAttribute('style', "padding: 0;") let root = div.attachShadow({ mode: 'open' }) root.innerHTML = ` <style> iframe{ width:100%; min-height:400px; border:none; margin:0; padding:0 } </style> ` root.appendChild(cloneNode) return div };

ok,完工,很多老哥说的默认显示子文档列表就成了,改文档的 custom-previousWidget 属性可以换成其他挂件,效果像这样:

image.png

或者是这样:

image.png

这玩意是之前写挂件教程的时候鼓捣出来的,要的话看这里):

思源笔记折腾记录-简单挂件-更美观地展示属性 - 知乎 (zhihu.com)

教程本身也还在写所以也就是个半成品。

高度好像没有弄很好,用的时候自己调整一下吧。

  • 思源笔记

    思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。

    融合块、大纲和双向链接,重构你的思维。

    25482 引用 • 105382 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • wolai

    我来 wolai:不仅仅是未来的云端笔记!

    2 引用 • 14 回帖 • 5 关注
  • 服务器

    服务器,也称伺服器,是提供计算服务的设备。由于服务器需要响应服务请求,并进行处理,因此一般来说服务器应具备承担服务并且保障服务的能力。

    125 引用 • 585 回帖
  • uTools

    uTools 是一个极简、插件化、跨平台的现代桌面软件。通过自由选配丰富的插件,打造你得心应手的工具集合。

    7 引用 • 27 回帖 • 1 关注
  • 宕机

    宕机,多指一些网站、游戏、网络应用等服务器一种区别于正常运行的状态,也叫“Down 机”、“当机”或“死机”。宕机状态不仅仅是指服务器“挂掉了”、“死机了”状态,也包括服务器假死、停用、关闭等一些原因而导致出现的不能够正常运行的状态。

    13 引用 • 82 回帖 • 77 关注
  • IBM

    IBM(国际商业机器公司)或万国商业机器公司,简称 IBM(International Business Machines Corporation),总公司在纽约州阿蒙克市。1911 年托马斯·沃森创立于美国,是全球最大的信息技术和业务解决方案公司,拥有全球雇员 30 多万人,业务遍及 160 多个国家和地区。

    17 引用 • 53 回帖 • 141 关注
  • 反馈

    Communication channel for makers and users.

    121 引用 • 907 回帖 • 273 关注
  • 单点登录

    单点登录(Single Sign On)是目前比较流行的企业业务整合的解决方案之一。SSO 的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。

    9 引用 • 25 回帖
  • Markdown

    Markdown 是一种轻量级标记语言,用户可使用纯文本编辑器来排版文档,最终通过 Markdown 引擎将文档转换为所需格式(比如 HTML、PDF 等)。

    170 引用 • 1529 回帖
  • Python

    Python 是一种面向对象、直译式电脑编程语言,具有近二十年的发展历史,成熟且稳定。它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务。它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用缩进来定义语句块。

    557 引用 • 675 回帖
  • SVN

    SVN 是 Subversion 的简称,是一个开放源代码的版本控制系统,相较于 RCS、CVS,它采用了分支管理系统,它的设计目标就是取代 CVS。

    29 引用 • 98 回帖 • 688 关注
  • danl
    164 关注
  • Webswing

    Webswing 是一个能将任何 Swing 应用通过纯 HTML5 运行在浏览器中的 Web 服务器,详细介绍请看 将 Java Swing 应用变成 Web 应用

    1 引用 • 15 回帖 • 639 关注
  • FlowUs

    FlowUs.息流 个人及团队的新一代生产力工具。

    让复杂的信息管理更轻松、自由、充满创意。

    1 引用
  • InfluxDB

    InfluxDB 是一个开源的没有外部依赖的时间序列数据库。适用于记录度量,事件及实时分析。

    2 引用 • 91 关注
  • 分享

    有什么新发现就分享给大家吧!

    248 引用 • 1794 回帖 • 1 关注
  • 阿里云

    阿里云是阿里巴巴集团旗下公司,是全球领先的云计算及人工智能科技公司。提供云服务器、云数据库、云安全等云计算服务,以及大数据、人工智能服务、精准定制基于场景的行业解决方案。

    84 引用 • 324 回帖 • 1 关注
  • ReactiveX

    ReactiveX 是一个专注于异步编程与控制可观察数据(或者事件)流的 API。它组合了观察者模式,迭代器模式和函数式编程的优秀思想。

    1 引用 • 2 回帖 • 181 关注
  • Sym

    Sym 是一款用 Java 实现的现代化社区(论坛/BBS/社交网络/博客)系统平台。

    下一代的社区系统,为未来而构建

    524 引用 • 4601 回帖 • 707 关注
  • Log4j

    Log4j 是 Apache 开源的一款使用广泛的 Java 日志组件。

    20 引用 • 18 回帖 • 29 关注
  • 微服务

    微服务架构是一种架构模式,它提倡将单一应用划分成一组小的服务。服务之间互相协调,互相配合,为用户提供最终价值。每个服务运行在独立的进程中。服务于服务之间才用轻量级的通信机制互相沟通。每个服务都围绕着具体业务构建,能够被独立的部署。

    96 引用 • 155 回帖 • 4 关注
  • 音乐

    你听到信仰的声音了么?

    62 引用 • 512 回帖
  • 七牛云

    七牛云是国内领先的企业级公有云服务商,致力于打造以数据为核心的场景化 PaaS 服务。围绕富媒体场景,七牛先后推出了对象存储,融合 CDN 加速,数据通用处理,内容反垃圾服务,以及直播云服务等。

    29 引用 • 230 回帖 • 128 关注
  • 周末

    星期六到星期天晚,实行五天工作制后,指每周的最后两天。再过几年可能就是三天了。

    14 引用 • 297 回帖
  • OAuth

    OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是 oAuth 的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权,因此 oAuth 是安全的。oAuth 是 Open Authorization 的简写。

    36 引用 • 103 回帖 • 29 关注
  • HTML

    HTML5 是 HTML 下一个的主要修订版本,现在仍处于发展阶段。广义论及 HTML5 时,实际指的是包括 HTML、CSS 和 JavaScript 在内的一套技术组合。

    108 引用 • 295 回帖
  • Linux

    Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 Unix 的多用户、多任务、支持多线程和多 CPU 的操作系统。它能运行主要的 Unix 工具软件、应用程序和网络协议,并支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

    952 引用 • 944 回帖
  • RabbitMQ

    RabbitMQ 是一个开源的 AMQP 实现,服务器端用 Erlang 语言编写,支持多种语言客户端,如:Python、Ruby、.NET、Java、C、PHP、ActionScript 等。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。

    49 引用 • 60 回帖 • 345 关注