如何标记文本,以跟踪唯一编辑

时间:2014-07-15 07:59:16

标签: tagging

所以,例如在数据库中我有三个用户:Peter,John和Sara。有一个特定的字段,所有三个用户都可以写。 彼得写道:

  

"我喜欢苹果"

之后,John追加

  

"我喜欢香蕉"

。现在我有字段说

  

"我喜欢苹果,我喜欢香蕉和#34;

,所以如果我想显示哪个部分是由谁写的,我的approuch将是创建html标签: 该字段将是:

<span class="text-sequence-1">I like apples</span><span class="text-sequence-2"> and I like bananas</span>

然后,从数据库中我会按顺序选择句子,并在悬停时使用CSS悬停显示其他内容,悬停在每个部分上。

  1. 第一个问题。问题是如果第三个用户Sara来了 更新属于两者的文本。哪个可以 如果我允许逐个编辑Johns和Peters标签,请克服。 然后我在原始跨度内编辑跨度并可以跟踪 编辑了哪部分以及如何编辑。如果我这样做,我仍然会 面临第二个问题:
  2. 第二个问题。如果Sara决定编辑,例如Johns部分,那么 倍。我仍然会严重嵌套。 我可以使用类似#number标签而不是跨度的东西,所以我可以跟踪每个版本的结束位置,但是我无法将CSS代码应用于它们以着色哪个部分属于谁并对悬停应用其他效果,如显示一个盒子,谁编辑它和什么时候。 任何想法我怎么能实现它? 抱歉我的英文不好。

2 个答案:

答案 0 :(得分:1)

我认为这种做法并不好。正如你所注意到的,你会得到很多令人讨厌的嵌套。

如果somone只编辑一个字母怎么办?

而不是那样,考虑行比较方法。就像Git一样。因此,比较第一行是否更改并存储每个版本。(更复杂的方式是仅存储已更改的行并应用git补丁等更改。)

我认为你的方式注定会失败。它太复杂了,没有逻辑比较方法可供使用。

John is cool John is uncool John is Uncool John is weak

想想你会如何标记这些。如果somone删除了一段文字怎么办?编辑将不可见或您将插入一个空标记(不可见)?

不要标记,比较。我认为标记不是你想要的。另请参阅:Text comparison algorithm

答案 1 :(得分:1)

由于您使用的是数据库,因此请在单独的表中跟踪编辑内容。对于每次编辑,请保留以下字段:

  • 此编辑的行ID(主键)
  • 父行ID(编辑开始/确认时“当前编辑”的行ID;请参阅下面的使用方法)
  • 编辑事物的作者
  • 时间戳
  • 描述更改内容的可选短文(例如,“固定拼写”)

显示该字段时,您可以显示指向“历史记录”的链接,该链接将显示谁编辑了什么时间。当你查看页面的历史时,你可以显示维基百科所做的individual differences between any two versions - 有许多库可以做到这一点,突出显示所有。 This library似乎很好,但有many others,各种语言。

当有人开始编辑时,让他们修改当时的版本(最高时间戳)。当他们提交编辑时(单击accept或类似),再次检查是否有其他人在编辑时没有更改内容(父编辑的时间戳仍然最高)。如果有人做了更改了某些内容,请向他们展示您的父行和编辑之间的区别,并告诉他们在提交之前修复内容(可能会有几个编辑内容帐户)。这是“wikipedia方式”,它相当于一种轻量级版本控制(比Git更容易实现)