数据库中的数据会随 MySQL数据库中的时间戳一起保存.
现在我的目标是在左边有一个小笔记,告诉用户文档的每个部分都已经创建(分辨率应该是几天).
现在的问题是:如何保存最好的信息(哪些部分已经改变)?
到目前为止,我考虑了以下选项:
>每次用户访问文档末尾的站点时,我都会插入一个标志(例如一个带有类的emtpy范围和存储开始编辑的数据属性).当调用保存脚本时,此标志将保存到数据库中.这个选项可以很容易地显示日期 – 我只是把它们放在与空白跨度相同的高度上,而跨度告诉我日期.缺点是:用户可能会意外删除时间戳范围,如果用户长时间没有关闭窗口,则不会插入新的时间跨度(这可能会通过每X分钟插入新的时间戳跨度来避免,因此删除部分是更相关)
>每次将数据传递到保存脚本时,尝试执行字符串差异比较,并仅使用时间戳保存差异.然后,当页面被加载时,所有的零件在正确的顺序和Javascript中将日期说明放在正确的地方.对于我来说,这听起来像是很多开销,但是当旧的部分被更改时,两个部分可能会变成一个等等.所有这些选项听起来都很复杂.
任何投入/想法/建议高度赞赏!
要做到这一点,你需要一种方法来使差异(php-diff可以做这个工作),并获得文本的版本.
有几个策略:
>存储最新版本,只保留三角洲(如统一差异,我的偏好)
>存储所有的版本和计算三角洲
一旦你有你当前的版本和三角洲列表(你可以肯定缩短列表,如果超过说几十个delta,让用户询问更多,如果真的很重要).你一起组成三角洲,这是注释阶段发生的地方,因为你可以从这个部分记住哪一个版本来自每一行.组合实际上很简单(从最新开始,补丁中添加的所有行都是从最新的,另一个需要解释,所以再次启动下一个补丁,直到你到达你想要治疗的最古老的补丁剩下的那一行是从那个版本或最早的,所以一些标志说’在或之前’可以使用).
Google has a diff library for Javascript可以在用户机上做所有的辛勤工作.他们也有这个库中的补丁部分.我没有找到一个注释/怪物库.