全局只读逻辑优化讨论

本贴最后更新于 495 天前,其中的信息可能已经时移世异

目前现状

目前的全局只读与单篇只读的逻辑:

  1. 全局只读,单篇解锁:可编辑
  2. 全局只读,单篇锁定:不可编辑
  3. 全局编辑,单篇解锁:可编辑
  4. 全局编辑,单篇锁定:不可编辑

简单点说就是文档根据单篇锁定与否来决定是否可以编辑

但还有一个逻辑:当打开全局只读时,没有操作过锁定解锁的文档会变成锁定的状态,如果是操作过锁定解锁的文档则不会改变

个人感觉这个逻辑有点奇怪,因为这样的话,那这个全局只读的意义就不太大,因为我都特意去操作全局只读了,但还是有些文档是直接可以编辑的,就因为这个文档之前被操作过解锁

解决方案

这里抛砖引玉提两个方案

  1. 全局只读和单篇锁定功能独立,不会联动。全局只读优先级高,单篇锁定优先级低。如果打开了全局只读,那文档不管单篇锁定与否都不可编辑
  2. 文档依旧根据单篇锁定与否来决定是否可以编辑,但是打开全局只读时,所有文档的状态均设置成锁定状态,如果用户对单篇文档解锁,则会自动关闭全局只读

个人倾向于方案 1,这样可以在需要全局只读时单独打开,而且打开关闭也不会影响到单篇文档的锁定与否的状态

相关讨论:Issue #9598 · siyuan-note/siyuan


投票选择是否支持优化逻辑,不单指的上述的方案哈

是否支持

单选 公开 永不结束 10 票
支持
60% 6 票
欠妥
10% 1 票
其他(评论区补充)
20% 2 票
酱油通道
10% 1 票

  • 思源笔记

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

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

    24824 引用 • 102112 回帖
6 操作
temacc0531 在 2023-11-21 12:03:08 更新了该帖
temacc0531 在 2023-11-21 09:45:01 更新了该帖
temacc0531 在 2023-11-21 09:44:16 更新了该帖
temacc0531 在 2023-11-21 09:43:07 更新了该帖 temacc0531 在 2023-11-21 09:42:49 更新了该帖 temacc0531 在 2023-11-21 09:40:55 更新了该帖

相关帖子

欢迎来到这里!

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

注册 关于
请输入回帖内容 ...
  • 考虑到使用全局只读的两种场景:

    • 临时开启,用完关闭(临时锁定所有文档,确保不可编辑)
    • 长期开启(多用于在移动端查看 / 只需要特定的某些文档可编辑)

    我提出第 3 种方案:

    • 在关闭全局只读时记忆单篇文档的锁定状态;在开启全局只读时改变的状态不记忆
    • 开启全局只读时默认将所有文档锁定,但保留在开启全局只读前的状态记忆,在关闭全局只读后按照记忆恢复原先的状态
    1 回复
    1 操作
    JeffreyChen 在 2023-11-15 17:00:16 更新了该回帖
  • temacc0531
    作者

    你这个效果类似方案 1,就是逻辑有点复杂 😂

    1 回复
  • 因为前 2 个方案都跟我实际使用方式冲突,目前的逻辑感觉又不够完美,所以只好自己提方案了 trollface

  • m7641 via macOS

    当前的全局只读开关是一个默认值,如果文档已经有 readonly 字段则覆盖全局默认值,没有则按默认值添加进去,也就是文档只读属性优先级高于全局只读。

    只需要改变下优先级即可:

    1. 文档打开状态下,文档的 readonly 字段优先级最高,点了锁定就不能编辑。
    2. 文档关闭状态下,以全局默认值优先级最高,也就是关闭文档就重置文档 readonly 字段为全局值。
    1 回复
  • temacc0531
    作者

    我大概总结一下你的方案,你看看对不对,这里称为方案 4

    1. 文档只根据单篇锁定与否来决定是否可以编辑,全局只读则是作为单篇锁定与否的默认值
    2. 当打开全局只读时,新建文档默认锁定,文档可以手动操作锁定解锁,关闭后恢复默认值锁定
    3. 当关闭全局只读时,新建文档默认解锁,文档可以手动操作锁定解锁,关闭后恢复默认值解锁

    第 3 点有点问题,用户都对单篇锁定了,如果关闭又恢复解锁,那也就是在关闭全局只读的情况下,单篇锁定只有在用户开着文档的时候才会短暂生效,这种场景下的单篇锁定基本就没有用处了。那如果改成这样

    1. 当关闭全局只读时,新建文档默认解锁,文档可以手动操作锁定解锁,关闭后单篇状态不变

    这样用户关闭全局只读后就和正常使用逻辑一致了,如果采用这个方案的话,那把【全局只读】改名叫【默认编辑状态】可能更贴切一些

    这个方案和方案 2 有同样的问题,就是如果打开全局只读就会影响到单篇的状态。但有些用户打开全局只读只是想要暂时把全局设置不能编辑,而不想动到之前设置好的单篇状态,就像前面 a 老哥说的那样

    1 操作
    temacc0531 在 2023-11-16 12:31:56 更新了该回帖
  • 个人感觉全局只读更多是为了临时控制编辑权限,所以开启后,默认是要覆盖所有文档的编辑权限,有需要的单篇再打开即可。而关闭全局只读后,则恢复原来文档的编辑权限。假设原来的文档权限是只读,开启了全局只读还是只读,关闭了全局只读也是只读,如果原来的权限是编辑,开启了全局只读是只读,关闭了全局只读是编辑,如果原来的权限是编辑,开启了全局只读是只读,然后又手工改了权限为编辑,关闭里全局只读也还是编辑。

    综上,全局只读和文档权限分开,恢复的时候根据文档编辑状态。

    1 回复
  • temacc0531
    作者

    是的,这个就是方案 1 了,就是正常情况下用户应该是只使用单篇锁定解锁,全局只读是用在临时全局控制

  • 个人觉得最好的方案:

    启用全局只读时:

    • 所有内容锁上,想要编辑就按 锁头 按钮解锁,解锁后可以编辑该篇内容,但是这个 可编辑与否 属性不用记录到文档的属性中。所以关闭文档(或者关闭 app)再打开,还是上锁的,想要编辑重新按 锁头 解锁。
    • 新建文档属性默认解锁,但是前端编辑限制为符合上一条描述。

    关闭全局只读:

    • 上锁与否根据各文档自身的属性决定。
    • 新建文档属性默认解锁。

    TLDR:全局只读可以作为编辑器的锁,而且这个锁可以通过锁头按钮临时解除一次(不要把改动写到文档的属性),关闭文档后重新上全局锁。


    设计图:

    image.png

    更进:Issue #9598 · siyuan-note/siyuan

    1 回复
    2 操作
    zxkmm 在 2023-11-21 10:22:05 更新了该回帖
    zxkmm 在 2023-11-20 17:13:43 更新了该回帖
  • Yylicon 1 赞同

    我顶一下,感觉现在的逻辑确实有点复杂了,我的场景是电脑端全局编辑,但是手机端就不一样了,手机端需要全局只读,临时编辑(刷新文档后仍是只读)

  • 类似于这样的:image.png

    对的就是这样的逻辑,临时解锁,块折叠 callout 其实也是这样
    Yylicon 1 赞同
    @Yylicon 我也觉得这样合理一些。建议在这里也跟进一下。Issue #9598 · siyuan-note/siyuan
    zxkmm
  • temacc0531 2 评论
    作者

    你这个方案我们称之为方案 5,应该可以说是方案 1 的优化版,我提方案 1 主要是从实现复杂程度考虑,所以简单分为两个优先级

    另外,投票其实是投是否支持优化逻辑的意思,没限制说是我提的方案 😂

    1 操作
    temacc0531 在 2023-11-21 09:47:18 更新了该回帖
    原来如此, 谢谢您的说明!
    zxkmm
    已修改投票
    zxkmm
请输入回帖内容 ...

推荐标签 标签

  • CSS

    CSS(Cascading Style Sheet)“层叠样式表”是用于控制网页样式并允许将样式信息与网页内容分离的一种标记性语言。

    199 引用 • 541 回帖 • 1 关注
  • Linux

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

    951 引用 • 943 回帖
  • PostgreSQL

    PostgreSQL 是一款功能强大的企业级数据库系统,在 BSD 开源许可证下发布。

    22 引用 • 22 回帖 • 1 关注
  • Quicker

    Quicker 您的指尖工具箱!操作更少,收获更多!

    36 引用 • 155 回帖
  • RIP

    愿逝者安息!

    8 引用 • 92 回帖 • 393 关注
  • SSL

    SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS 与 SSL 在传输层对网络连接进行加密。

    70 引用 • 193 回帖 • 413 关注
  • InfluxDB

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

    2 引用 • 87 关注
  • 微软

    微软是一家美国跨国科技公司,也是世界 PC 软件开发的先导,由比尔·盖茨与保罗·艾伦创办于 1975 年,公司总部设立在华盛顿州的雷德蒙德(Redmond,邻近西雅图)。以研发、制造、授权和提供广泛的电脑软件服务业务为主。

    8 引用 • 44 回帖 • 2 关注
  • Sublime

    Sublime Text 是一款可以用来写代码、写文章的文本编辑器。支持代码高亮、自动完成,还支持通过插件进行扩展。

    10 引用 • 5 回帖 • 1 关注
  • Love2D

    Love2D 是一个开源的, 跨平台的 2D 游戏引擎。使用纯 Lua 脚本来进行游戏开发。目前支持的平台有 Windows, Mac OS X, Linux, Android 和 iOS。

    14 引用 • 53 回帖 • 545 关注
  • 七牛云

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

    28 引用 • 226 回帖 • 135 关注
  • jQuery

    jQuery 是一套跨浏览器的 JavaScript 库,强化 HTML 与 JavaScript 之间的操作。由 John Resig 在 2006 年 1 月的 BarCamp NYC 上释出第一个版本。全球约有 28% 的网站使用 jQuery,是非常受欢迎的 JavaScript 库。

    63 引用 • 134 回帖 • 731 关注
  • Gzip

    gzip (GNU zip)是 GNU 自由软件的文件压缩程序。我们在 Linux 中经常会用到后缀为 .gz 的文件,它们就是 Gzip 格式的。现今已经成为互联网上使用非常普遍的一种数据压缩格式,或者说一种文件格式。

    9 引用 • 12 回帖 • 168 关注
  • 酷鸟浏览器

    安全 · 稳定 · 快速
    为跨境从业人员提供专业的跨境浏览器

    3 引用 • 59 回帖 • 45 关注
  • 大数据

    大数据(big data)是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。

    93 引用 • 113 回帖
  • 面试

    面试造航母,上班拧螺丝。多面试,少加班。

    325 引用 • 1395 回帖
  • 微信

    腾讯公司 2011 年 1 月 21 日推出的一款手机通讯软件。用户可以通过摇一摇、搜索号码、扫描二维码等添加好友和关注公众平台,同时可以将自己看到的精彩内容分享到微信朋友圈。

    132 引用 • 796 回帖 • 1 关注
  • 倾城之链
    23 引用 • 66 回帖 • 158 关注
  • wolai

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

    2 引用 • 14 回帖
  • 叶归
    5 引用 • 16 回帖 • 10 关注
  • JWT

    JWT(JSON Web Token)是一种用于双方之间传递信息的简洁的、安全的表述性声明规范。JWT 作为一个开放的标准(RFC 7519),定义了一种简洁的,自包含的方法用于通信双方之间以 JSON 的形式安全的传递信息。

    20 引用 • 15 回帖 • 20 关注
  • 职场

    找到自己的位置,萌新烦恼少。

    127 引用 • 1708 回帖
  • Spark

    Spark 是 UC Berkeley AMP lab 所开源的类 Hadoop MapReduce 的通用并行框架。Spark 拥有 Hadoop MapReduce 所具有的优点;但不同于 MapReduce 的是 Job 中间输出结果可以保存在内存中,从而不再需要读写 HDFS,因此 Spark 能更好地适用于数据挖掘与机器学习等需要迭代的 MapReduce 的算法。

    74 引用 • 46 回帖 • 568 关注
  • JetBrains

    JetBrains 是一家捷克的软件开发公司,该公司位于捷克的布拉格,并在俄国的圣彼得堡及美国麻州波士顿都设有办公室,该公司最为人所熟知的产品是 Java 编程语言开发撰写时所用的集成开发环境:IntelliJ IDEA

    18 引用 • 54 回帖 • 1 关注
  • ZooKeeper

    ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务,是 Google 的 Chubby 一个开源的实现,是 Hadoop 和 HBase 的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

    59 引用 • 29 回帖 • 2 关注
  • 自由行
    1 关注
  • 旅游

    希望你我能在旅途中找到人生的下一站。

    93 引用 • 901 回帖