terwer / siyuan-plugin-blog Goto Github PK
View Code? Open in Web Editor NEWThe notion like sharing feature you've always dreamed of is here, too 您梦寐以求的类 notion 分享功能,这里也有
Home Page: https://blog.terwer.space
License: MIT License
The notion like sharing feature you've always dreamed of is here, too 您梦寐以求的类 notion 分享功能,这里也有
Home Page: https://blog.terwer.space
License: MIT License
如果需要我可以提供我写好的
文章预览默认带密码,custom-publish-access 字段控制,公开是 public,带密码是 protected ,默认 private。提供设置为公开按钮。
NUXT_PUBLIC_SIYUAN_API_URL=http://note:6806
note为思源的docker容器名称
报错内容为:
[intlify] Not found 'go.home' key in 'zh_CN' locale messages.
[intlify] Not found 'syp.about' key in 'zh_CN' locale messages.
[intlify] Not found 'theme.mode.dark' key in 'zh_CN' locale messages.
本地 yarn dev 启动后访问报错
1 of 1 unhandled error
Server Error
TypeError: Cannot read properties of null (reading 'useContext')
This error happened while generating the page. Any console logs will be displayed in the terminal window.
Call Stack
Object.useContext
file:///D:/code/node-siyuan/node_modules/react/cjs/react.development.js (1618:21)
Html
node_modules\next\dist\pages\_document.js (260:105)
renderWithHooks
file:///D:/code/node-siyuan/node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js (5661:16)
renderIndeterminateComponent
file:///D:/code/node-siyuan/node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js (5734:15)
renderElement
file:///D:/code/node-siyuan/node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js (5949:7)
renderNodeDestructiveImpl
file:///D:/code/node-siyuan/node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js (6107:11)
renderNodeDestructive
file:///D:/code/node-siyuan/node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js (6079:14)
finishClassComponent
file:///D:/code/node-siyuan/node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js (5691:3)
renderClassComponent
file:///D:/code/node-siyuan/node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js (5699:3)
renderElement
file:///D:/code/node-siyuan/node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js (5946:7)
renderNodeDestructiveImpl
file:///D:/code/node-siyuan/node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js (6107:11)
renderNodeDestructive
file:///D:/code/node-siyuan/node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js (6079:14)
renderContextProvider
file:///D:/code/node-siyuan/node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js (5923:3)
renderElement
file:///D:/code/node-siyuan/node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js (6020:11)
renderNodeDestructiveImpl
file:///D:/code/node-siyuan/node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js (6107:11)
renderNodeDestructive
file:///D:/code/node-siyuan/node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js (6079:14)
renderContextProvider
file:///D:/code/node-siyuan/node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js (5923:3)
renderElement
file:///D:/code/node-siyuan/node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js (6020:11)
renderNodeDestructiveImpl
file:///D:/code/node-siyuan/node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js (6107:11)
renderNodeDestructive
file:///D:/code/node-siyuan/node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js (6079:14)
retryTask
file:///D:/code/node-siyuan/node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js (6531:5)
performWork
file:///D:/code/node-siyuan/node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js (6579:7)
<unknown>
file:///D:/code/node-siyuan/node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js (6903:12)
scheduleWork
file:///D:/code/node-siyuan/node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js (77:3)
startWork
file:///D:/code/node-siyuan/node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js (6902:3)
renderToStringImpl
file:///D:/code/node-siyuan/node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js (6976:3)
Object.renderToStaticMarkup
file:///D:/code/node-siyuan/node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js (7001:10)
Object.renderToHTML
file:///D:/code/node-siyuan/node_modules/next/dist/server/render.js (969:41)
async doRender
file:///D:/code/node-siyuan/node_modules/next/dist/server/base-server.js (915:38)
async cacheEntry.responseCache.get.isManualRevalidate.isManualRevalidate
file:///D:/code/node-siyuan/node_modules/next/dist/server/base-server.js (1020:28)
async
file:///D:/code/node-siyuan/node_modules/next/dist/server/response-cache.js (69:36)
默认使用客户端渲染,提升性能
Windows IP 配置
未知适配器 本地连接:
连接特定的 DNS 后缀 . . . . . . . :
本地链接 IPv6 地址. . . . . . . . : fe80::5e3a:878e:919a:c767%23
IPv4 地址 . . . . . . . . . . . . : 192.168.63.61
子网掩码 . . . . . . . . . . . . : 255.255.255.0
默认网关. . . . . . . . . . . . . :
未知适配器 BCC:
连接特定的 DNS 后缀 . . . . . . . :
本地链接 IPv6 地址. . . . . . . . : fe80::896d:973b:2597:105d%11
自动配置 IPv4 地址 . . . . . . . : 169.254.195.44
子网掩码 . . . . . . . . . . . . : 255.255.0.0
默认网关. . . . . . . . . . . . . :
未知适配器 tun2socks:
连接特定的 DNS 后缀 . . . . . . . :
本地链接 IPv6 地址. . . . . . . . : fe80::8d:1306:5ae2:fef5%55
IPv4 地址 . . . . . . . . . . . . : 192.0.2.233
子网掩码 . . . . . . . . . . . . : 255.255.255.255
默认网关. . . . . . . . . . . . . :
以太网适配器 以太网:
连接特定的 DNS 后缀 . . . . . . . :
IPv6 地址 . . . . . . . . . . . . : 240e:3a1:d60:fea0::79
IPv6 地址 . . . . . . . . . . . . : 240e:3a1:d60:fea0:18e8:e44:9b0a:8d33
临时 IPv6 地址. . . . . . . . . . : 240e:3a1:d60:fea0:59b9:ca7d:4838:47e
本地链接 IPv6 地址. . . . . . . . : fe80::4061:9fa5:f095:6b39%13
IPv4 地址 . . . . . . . . . . . . : 192.168.31.79
子网掩码 . . . . . . . . . . . . : 255.255.255.0
默认网关. . . . . . . . . . . . . : fe80::8ac3:97ff:fec1:c01a%13
192.168.31.1
无线局域网适配器 本地连接* 1:
媒体状态 . . . . . . . . . . . . : 媒体已断开连接
连接特定的 DNS 后缀 . . . . . . . :
无线局域网适配器 本地连接* 2:
媒体状态 . . . . . . . . . . . . : 媒体已断开连接
连接特定的 DNS 后缀 . . . . . . . :
无线局域网适配器 WLAN:
媒体状态 . . . . . . . . . . . . : 媒体已断开连接
连接特定的 DNS 后缀 . . . . . . . :
以太网适配器 VMware Network Adapter VMnet1:
连接特定的 DNS 后缀 . . . . . . . :
本地链接 IPv6 地址. . . . . . . . : fe80::23f3:9410:c7b4:40b7%5
IPv4 地址 . . . . . . . . . . . . : 192.168.79.1
子网掩码 . . . . . . . . . . . . : 255.255.255.0
默认网关. . . . . . . . . . . . . :
以太网适配器 VMware Network Adapter VMnet8:
连接特定的 DNS 后缀 . . . . . . . :
IPv6 地址 . . . . . . . . . . . . : fd15:4ba5:5a2b:1008:5337:8865:d57b:44e8
临时 IPv6 地址. . . . . . . . . . : fd15:4ba5:5a2b:1008:84e0:9e84:4781:6d10
本地链接 IPv6 地址. . . . . . . . : fe80::768:58bb:f74a:5904%12
IPv4 地址 . . . . . . . . . . . . : 192.168.80.1
子网掩码 . . . . . . . . . . . . : 255.255.255.0
默认网关. . . . . . . . . . . . . : fe80::250:56ff:fec0:2222%12
以太网适配器 蓝牙网络连接:
媒体状态 . . . . . . . . . . . . : 媒体已断开连接
连接特定的 DNS 后缀 . . . . . . . :
以太网适配器 vEthernet (WSL):
连接特定的 DNS 后缀 . . . . . . . :
本地链接 IPv6 地址. . . . . . . . : fe80::2409:60fe:d19f:85a6%45
IPv4 地址 . . . . . . . . . . . . : 172.26.0.1
子网掩码 . . . . . . . . . . . . : 255.255.240.0
默认网关. . . . . . . . . . . . . :
开了 vpn 的情况下,获取的 ip 有误,是否可以自行选择使用哪个 ip 进行分享
不用下面的,自己写
yarn add react-tag-input
yarn add -D @types/react-tag-input
yarn add react-dnd react-dnd-html5-backend
点“复制网页链接”,然后再去粘贴,只有链接,可否考虑增加标题带链接方式,类似如下这样:
分享:思源笔记实现公司局域网内笔记分享 (比如开会时) - a2930610542 的回帖 - 链滴
另外,我发现分享出去的网页,在打印时,只能显示一页,不能完整打印
如题,按Shift+F5强制刷新,仍不生效
这是bug,还是什么问题?
【建议】创建分享链接时,把文章标题也带上
实际使用体验时,他人看到链接会有几个疑问:
① 这个链接样子很奇怪,不会是什么不正常链接吧
② 这个链接是啥?(尤其是消息很多的 办公场景,很容易遗忘)
修改样式举例:
我给你分享了一篇文章:xxxxxxx (有效期 xxx小时)
打开链接:http://10.0.29.170:50201/plugins/siyuan-blog/#/s/xxxxxx
具体信息样式建议配置成可选。
大佬,后续浮窗会支持吗?
如题。我用的PC端思源,版本号2.9.9
在本机上的浏览器上使用。
其实最好做成这种,用户可以自己设置几个固定IP及其别名,方便切换。
已完成
移动端间距有点大,需要适配一下
未复现,等待后续跟踪
参考api
async 判定id权限(块id) {
let flag = false;
let 块信息数组 = await 思源api.以sql向思源请求块数据(
`${this.realoption.思源伺服地址}:${this.realoption.思源伺服端口}`,
"",
`select root_id , path from blocks where id = '${块id}'`
);
if (块信息数组 && 块信息数组[0]) {
let 路径数据 = await this.解析路径(块信息数组[0].path, this.realoption);
for (doc in 路径数据) {
路径数据[doc]["custom-publish"] ? (flag = true) : null;
}
}
return flag;
},
解析路径: async function (path, realoption) {
let pathArray = path.replace(".sy", "").split("/");
pathArray = pathArray.slice(1, pathArray.length);
let obj = {};
for (let i = 0; i < pathArray.length; i++) {
let element = pathArray[i];
obj[element] = {};
let attrs = await 思源api.以sql向思源请求块数据(
`${realoption.思源伺服地址}:${realoption.思源伺服端口}`,
"",
`select * from attributes where root_id = '${element}'`
);
attrs.forEach((attr) =>
attr ? (obj[element][attr.name] = attr.value) : null
);
}
return obj;
},
已实现权限与密码控制
已完成
抽取成新挂件,与发布挂件联动
Markdown文档有600行,分享出来的页面只有460行,下面的内容没有显示
根据我目前的使用经验,分享插件只能在网络伺服打开的状态下使用
而生成的分享链接有完整的ip地址和网络伺服端口号,也就是说在没有设置授权码的情况下,对方是可以访问完整工作空间的
是否可能生成一个新的端口,只用于在线分享,没有权限访问完整工作空间
node v16.16.0
yarn 1.22.19
分类较多时候样式还需要处理
由于我的笔记比较多,可能有时分享了很多个。回头想关闭分享又忘记了那些是分享过的,像群晖里有个栏里面显示着已经分享过笔记本列表。再点取消就可以了。我看到这个插件上并没有类似的功能,还是说我不知道如何操作。
参考
vercel/next.js#11328
vercel/next.js#16522
局域网可用
解决了思源一大痛点,配合docker简直完美,希望作者持续更下去呀!!
部署到Vercel
文章发布按钮
支持
传入参数p即可
next/router
使用接口适配器适配各种平台,只需要传入参数 ?t= 即可
服务端属性
request阶段生成,非常适合复杂交互
export const getServerSideProps: GetServerSideProps<Props> = async (context) => {
const query = context.query || {}
if (query.t instanceof Array) {
throw new Error("参数类型错误")
}
let result = []
const type = query.t || API_TYPE_CONSTANTS.API_TYPE_SIYUAN
const api = new API(type)
result = await api.getRecentPosts(10)
return {
props: {
posts: result
}
}
}
客户端属性
构建阶段生成,不适合动态变化的页面
export const getStaticProps: GetStaticProps<Props, Params> = async (context) => {
// 本地测试
let pageId = "20220724172444-16a2oc1"
let page = await getPage(pageId)
if (!page) {
page = {}
}
// ! is a non-null assertion
const params = context.params! || {}
return {
props: {
page: page,
params: params
}
}
}
关闭分享后,链接仍能打开
版本:1.8.3
已添加
简洁版实现
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.