-
-
Notifications
You must be signed in to change notification settings - Fork 2.1k
Improve editor read-only mode #9598
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
如果按全局只读优先级更高考虑的话,那单篇的设置就没有意义了,因为无法覆盖全局,永远也设定不了单篇状态。
如果单篇可以控制全局,那么全局就没有意义了。另外还有一种情况是全局只读状态,单篇解锁为可编辑,这时候全局改为解锁,编辑完这篇以后又设置为只读,那么此时全局是否要改变?如果改变为只读,那么全局就完全等价于全局了;如果不改变,那么用户一样会困扰,为什么解锁了这篇其它篇也解锁了? 所以综上,单篇覆盖全局应该是最简单的规则了。 |
不是这么理解,用户使用全局只读时心理的预期就是整个所有文档都不能编辑。也就是说大概率只有在用户需要纯阅读的时候才会打开全局只读的开关,例如手机端,这个时候和单篇锁定没有关系。单篇是用户在例如电脑端使用,存在部分文档需要编辑部分仅阅读时使用,这个时候就保持全局关闭只读 而如果是现在的逻辑的话,用户想要真正的全局只读并不能做到,因为你不知道对于哪一篇文档你是之前有操作过解锁状态的 |
那没有办法了,这里有逻辑冲突,因为要考虑到前面提到的一种场景:全局只读,但是偶尔想修改一篇,修改以后再锁定。 要解决这个问题就只能取一个优先级最高的覆盖低的,思源里面的设置都是局部覆盖全局。 |
方案2也有办法解决
也不是没有意义,如果按方案2的话,起码如果全局是只读的话,那底下的所有文档都是锁定状态的,而如果是全局非只读的话,那底下就是锁定或非锁定的
全局只读不需要改变,其他文档也还是保持未解锁的状态,就是只有单篇解锁关闭全局只读,而这个关闭不会影响其他文档 |
其实这两个方案的核心都是一样的,就是打开全局只读后用户的预期其实是所有文档都无法编辑的,要不然也不叫全局只读这个名字了😂 |
但是只读关闭的话就是可编辑啊,全局只读开关关闭的话就是全局可编辑。 所以逻辑上必然是需要一个优先级的,局部覆盖全局是较为合理的,所以我们才这样设计。 |
那方案2可能比较适合你局部覆盖全局的考虑 我考虑的全局只读可能是类似内核 |
不改了不改了,单篇覆盖全局 👿
…---Original---
From: ***@***.***>
Date: Tue, Nov 7, 2023 22:46 PM
To: ***@***.***>;
Cc: ***@***.******@***.***>;
Subject: Re: [siyuan-note/siyuan] Global Read-Only Optimization (Issue #9598)
那方案2可能比较适合你局部覆盖全局的考虑
我考虑的全局只读可能是类似内核--readonly参数的效果,优先级更高
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you commented.Message ID: ***@***.***>
|
Translate to English Describe the problemTo make it easier to understand, the following read-only/non-read-only is for global, and locked/unlocked is for single document. Current global read-only vs. single-article read-only logic:
To put it simply, whether a document can be edited is determined by whether it is locked or not. But there is another logic: when the global read-only is turned on, documents that have not been locked and unlocked will become locked, while documents that have been locked and unlocked will not change. Personally, I find this logic a bit strange, because in this case, the global read-only is not very meaningful, because I have deliberately to operate the global read-only, but there are still some documents can be edited directly, because the document has been operated before the operation of unlocked Expected resultI think the expected result of a user turning on global read-only should be that all documents are uneditable. There are two options:
Personally prefer option 1, because this can be opened when the need for global read-only alone, and open and close the global read-only will not affect the status of a single document locked or not. |
考虑到使用全局只读的两种场景:
我提出第 3 种方案:
https://ld246.com/article/1700037001804/comment/1700037641465#comments |
一个最简单的解决办法:
|
您的方案1个人感觉不好。因为用户如果误打开全局只读,操作时候会发现不管上不上锁都没法编辑,出现类似bug的表现。会引起用户愤怒。(不是所有用户都能意识到有这个全局只读功能,而且即使知道这个功能,发现疑似bug的表现时候不一定都能想到是这个原因。) 您的方案2个人感觉也不好。全局只读作为一个开关不应该大批量操作各文档属性,因为误操作后回退成本巨大(之前用过一个思源插件,本身在前端渲染就能实现的功能,启用后把我的所有文档都改了一遍,回退成本相当大,非常讨厌这种特性)。 个人觉得最好的方案:
这个恐怕相当不好。 一切看起来像 bug 的 feature 都不应该存在。 |
之前讨论已经说过了,这个设计逻辑上就有冲突,只能选择一个覆盖规则,从设计的一致性角度着手,单篇覆盖全局是合理的。 |
sorry,看走眼了,我还以为采纳楼主的方案(全局覆盖单篇)了。个人认为楼主的方案欠妥。 因为feat看起来像bug. |
不过我还是觉得我的方案目前是最合理的,类似于目前官方的方案,但是个人觉得更合理一点。 |
这个方案主要是从实现复杂程度考虑,所以简单分为两个优先级,逻辑也比较清晰,至于你说的开了全局只读之后用户引起误会其实可以通过提示解决😁,当然你提到优化版本可以更优雅的解决这个问题
确实,全局只读作为一个临时使用的功能会修改单篇锁定状态,不太合理
你可能还没懂现在官方方案问题所在,目前官方方案没有那么复杂,就是按照单篇状态来确定,和全局只读与否没有关系。关键在于打开了全局只读之后,有些文档(编辑过单篇状态的文档)依旧可以直接编辑,这才是最大的问题 最后,你提的方案确实是目前最合理的方案,满足打开全局只读之后,未打开的所有文档默认都是不能直接编辑,需要手动解锁。同时,文档是否可以编辑只取决于单篇状态,也满足了D大提到的单篇覆盖全局的一致性考虑
只有这一点,启动全局只读时,为了保证逻辑统一,新建文档是不是应该默认锁定,用户手动解锁编辑更好一些 |
@Temacc0531 谢谢您的认同和详细的解答!
这个我主要是考虑到只读功能是保护已有内容避免误删或者修改。但是既然新建了页面,既然不存在内容所以也没必要保护,加上既然新建了页面就是想填入内容,所以就不用锁了。 我没有读过思源的源码,不是很清楚实现我的方案是不是原理上可行的。但是我确定逻辑上是可行的。个人感觉或许编辑器的有一部分要重写,工作量可能比较大,所以如果开发者决定不动它的话我们也很理解。 |
@Vanessa219 来评估一下。 |
先看一下需求是不是这样:
|
@Vanessa219 老大您好。如果说的是我的方案的话,是的,大体如此。
是的,不把锁定状态保存到文档的属性(我这样设计是因为客观上如果遵循官方方案的话,用户回锁时候会有一种 “我只是回锁到之前的全局锁定” 的错觉,逻辑上不线性(一个单项开关感觉上有三种状态),无法回退)
是的。 维持现状
是的。 维持现状 目前 @Temacc0531 和社区一位用户同意我的方案是最好的。社区其他人怎么看待我不清楚。 |
全局锁定时,要能临时解锁,其他的正常 |
@Vanessa219 理解应该没啥问题,我再总结一下
|
回复 @Temacc0531 :
这个似乎不是我的方案。我的方案不需要两个各文档属性值。我的方案只有一个
这个似乎也不是我的方案。我的方案是,关闭全局只读后维持该文档的上锁现状, 不是关闭全局只读后把所有文档全都解锁一遍。这个一定要说明清楚。因为 “关闭全局只读后把文档全都解锁一遍“ 这个行为没有道理。任何单刀开关都不应该创造不能回退的行为。
这个描述和您的其他描述是对的。 |
@zxkmm 根据建议我再补充一下
|
全局只读是需要另外一个字段去存这个属性的,它和单篇状态没有关系,所以我说的独立。和你说的不冲突
这个是说文档的默认状态是解锁,例如新建,不是说关闭全局只读后会刷新的意思,下面一点说了用户操作单篇状态后就维持不变了 总体和你方案一致的 |
回复 @Vanessa219 :
是的。我的方案是这个意思。 ^p.s.
这个文案可能写成 “取消临时解锁” 或者 “不再临时解锁” 会更清楚一点 side note: |
@Temacc0531 谢谢您的澄清。我之前只是为了避免误会,所以我比较挑剔用词。抱歉。:) ^ ___^ |
这个是不是按钮改叫临时锁定/临时解锁就可以了,文字太多也不好显示吧... |
回复 @Temacc0531 :
"临时锁定"这个称呼给人一种 edit: |
@Temacc0531 您可以看一下这个界面您觉得合不合适。 |
@zxkmm 我刚刚想岔了,以为现在的单篇状态是用【锁定/解锁】按钮来显示的,但其实就是个小锁头的图标。那我觉得打开全局只读后锁定和解锁都保持小锁头的图标和原来的一致就好(因为对于用户来说逻辑都是一致的,就是单篇小锁头打开可编辑,关闭不可编辑),提示的可以放在小锁头的悬浮文案里面,现在的文案是【锁定编辑/解除锁定】,可以在打开全局只读锁定后文案提示【锁定编辑/临时解锁】,因为实际只有解锁是临时的,锁定是持久的 上面的图我没太看懂😶 |
开了个投票。如果社区观点还是比较零散的话我个人感觉可以维持现状不用再改了。https://ld246.com/article/1700817185016 |
个人感觉这个方案确实已经相当完善了 |
已修改,各位稍后可前往 dev 版本体验。 |
谢谢开发者! 关于锁头图标会代表四个状态( 但是我有点摸不清楚三点菜单下的 |
默认是移除单个文档的只读设置,跟随全局设置。 |
这个【默认】和【禁用】是不是有点重复,单个文档禁用只读之后也是跟随全局设置来的 |
@Temacc0531 我也觉得好像是重复了,但我之前担心可能是我没搞懂所以我没敢回复😄🙏 |
收到,那就先不显示了。 |
@Vanessa219 v2.11.0 还有个小问题,关闭全局只读单个文档禁用只读状态(锁头解锁),只读模式里面显示的是【启用】,应该是【禁用】才对 |
收到,下个版本继续修改。 |
Is there an existing issue for this?
Can the issue be reproduced with the default theme (daylight/midnight)?
Could the issue be due to extensions?
Describe the problem
目前的全局只读与单篇只读的逻辑:
简单点说就是文档根据单篇锁定与否来决定是否可以编辑
但还有一个逻辑:当打开全局只读时,没有操作过锁定解锁的文档会变成锁定的状态,如果是操作过锁定解锁的文档则不会改变
个人感觉这个逻辑有点奇怪,因为这样的话,那这个全局只读的意义就不太大,因为我都特意去操作全局只读了,但还是有些文档是直接可以编辑的,就因为这个文档之前被操作过解锁
Expected result
有两个方案:
个人倾向于方案1,这样可以在需要全局只读时单独打开,而且打开关闭也不会影响到单篇文档的锁定与否的状态
Screenshot or screen recording presentation
No response
Version environment
Log file
null
More information
No response
The text was updated successfully, but these errors were encountered: