全局只读逻辑优化讨论

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

目前现状

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

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

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

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

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

解决方案

这里抛砖引玉提两个方案

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

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

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


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

是否支持

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

  • 思源笔记

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

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

    22357 引用 • 89473 回帖 • 1 关注
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 更新了该帖

相关帖子

欢迎来到这里!

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

注册 关于
请输入回帖内容 ...
  • Yylicon 1 赞同

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

  • 其他回帖
  • temacc0531 2 评论
    作者

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

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

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

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

    1 回复
  • zxkmm 2 赞同

    个人觉得最好的方案:

    启用全局只读时:

    • 所有内容锁上,想要编辑就按 锁头 按钮解锁,解锁后可以编辑该篇内容,但是这个 可编辑与否 属性不用记录到文档的属性中。所以关闭文档(或者关闭 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 更新了该回帖
  • 查看全部回帖

推荐标签 标签

  • TextBundle

    TextBundle 文件格式旨在应用程序之间交换 Markdown 或 Fountain 之类的纯文本文件时,提供更无缝的用户体验。

    1 引用 • 2 回帖 • 49 关注
  • 新人

    让我们欢迎这对新人。哦,不好意思说错了,让我们欢迎这位新人!
    新手上路,请谨慎驾驶!

    52 引用 • 228 回帖
  • JRebel

    JRebel 是一款 Java 虚拟机插件,它使得 Java 程序员能在不进行重部署的情况下,即时看到代码的改变对一个应用程序带来的影响。

    26 引用 • 78 回帖 • 665 关注
  • 持续集成

    持续集成(Continuous Integration)是一种软件开发实践,即团队开发成员经常集成他们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。

    15 引用 • 7 回帖 • 1 关注
  • 笔记

    好记性不如烂笔头。

    308 引用 • 793 回帖
  • OpenStack

    OpenStack 是一个云操作系统,通过数据中心可控制大型的计算、存储、网络等资源池。所有的管理通过前端界面管理员就可以完成,同样也可以通过 Web 接口让最终用户部署资源。

    10 引用 • 5 关注
  • 微软

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

    8 引用 • 44 回帖 • 1 关注
  • 程序员

    程序员是从事程序开发、程序维护的专业人员。

    568 引用 • 3532 回帖 • 1 关注
  • 游戏

    沉迷游戏伤身,强撸灰飞烟灭。

    176 引用 • 815 回帖
  • 深度学习

    深度学习(Deep Learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。

    53 引用 • 40 回帖
  • BAE

    百度应用引擎(Baidu App Engine)提供了 PHP、Java、Python 的执行环境,以及云存储、消息服务、云数据库等全面的云服务。它可以让开发者实现自动地部署和管理应用,并且提供动态扩容和负载均衡的运行环境,让开发者不用考虑高成本的运维工作,只需专注于业务逻辑,大大降低了开发者学习和迁移的成本。

    19 引用 • 75 回帖 • 642 关注
  • CentOS

    CentOS(Community Enterprise Operating System)是 Linux 发行版之一,它是来自于 Red Hat Enterprise Linux 依照开放源代码规定释出的源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定的服务器以 CentOS 替代商业版的 Red Hat Enterprise Linux 使用。两者的不同在于 CentOS 并不包含封闭源代码软件。

    238 引用 • 224 回帖
  • 锤子科技

    锤子科技(Smartisan)成立于 2012 年 5 月,是一家制造移动互联网终端设备的公司,公司的使命是用完美主义的工匠精神,打造用户体验一流的数码消费类产品(智能手机为主),改善人们的生活质量。

    4 引用 • 31 回帖 • 2 关注
  • 强迫症

    强迫症(OCD)属于焦虑障碍的一种类型,是一组以强迫思维和强迫行为为主要临床表现的神经精神疾病,其特点为有意识的强迫和反强迫并存,一些毫无意义、甚至违背自己意愿的想法或冲动反反复复侵入患者的日常生活。

    15 引用 • 161 回帖
  • Telegram

    Telegram 是一个非盈利性、基于云端的即时消息服务。它提供了支持各大操作系统平台的开源的客户端,也提供了很多强大的 APIs 给开发者创建自己的客户端和机器人。

    5 引用 • 35 回帖 • 3 关注
  • SQLite

    SQLite 是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite 是全世界使用最为广泛的数据库引擎。

    5 引用 • 7 回帖
  • Oracle

    Oracle(甲骨文)公司,全称甲骨文股份有限公司(甲骨文软件系统有限公司),是全球最大的企业级软件公司,总部位于美国加利福尼亚州的红木滩。1989 年正式进入中国市场。2013 年,甲骨文已超越 IBM,成为继 Microsoft 后全球第二大软件公司。

    105 引用 • 127 回帖 • 382 关注
  • flomo

    flomo 是新一代 「卡片笔记」 ,专注在碎片化时代,促进你的记录,帮你积累更多知识资产。

    5 引用 • 107 回帖
  • uTools

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

    6 引用 • 14 回帖 • 2 关注
  • 知乎

    知乎是网络问答社区,连接各行各业的用户。用户分享着彼此的知识、经验和见解,为中文互联网源源不断地提供多种多样的信息。

    10 引用 • 66 回帖
  • Electron

    Electron 基于 Chromium 和 Node.js,让你可以使用 HTML、CSS 和 JavaScript 构建应用。它是一个由 GitHub 及众多贡献者组成的活跃社区共同维护的开源项目,兼容 Mac、Windows 和 Linux,它构建的应用可在这三个操作系统上面运行。

    15 引用 • 136 回帖
  • DevOps

    DevOps(Development 和 Operations 的组合词)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。

    47 引用 • 25 回帖
  • Firefox

    Mozilla Firefox 中文俗称“火狐”(正式缩写为 Fx 或 fx,非正式缩写为 FF),是一个开源的网页浏览器,使用 Gecko 排版引擎,支持多种操作系统,如 Windows、OSX 及 Linux 等。

    8 引用 • 30 回帖 • 407 关注
  • C

    C 语言是一门通用计算机编程语言,应用广泛。C 语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

    85 引用 • 165 回帖 • 2 关注
  • Postman

    Postman 是一款简单好用的 HTTP API 调试工具。

    4 引用 • 3 回帖 • 4 关注
  • Log4j

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

    20 引用 • 18 回帖 • 30 关注
  • RIP

    愿逝者安息!

    8 引用 • 92 回帖 • 351 关注