2010-12-06 54 views
0

我正在PHP和MySQL中开发一个协作工具,并且我想问问什么是最有效的方式来执行以下操作;说我有一段文字,会被不同的用户编辑。我需要记录每个更改,并且在查看更改后的文本时,应该突出显示由特定用户更改的文本(可能使用css和/或jQuery)。协作脚本 - 跟踪用户贡献

我不是在寻找一个特定的代码片段(你可以看到我的问题是相当vaugue),但我希望得到一个想法如何解决这个特定的问题。

一如既往的欢呼所有的建议。

回答

0

好的,所以我想出了一个解决方案,当用户提交新文本,运行diff,并注册已更改的行。这些将被存储在一个mysql表中,用户id是diff返回的字符串,它是相应的行号。这样我可以返回原始文本,为特定用户返回已更改的字符串,并使用正则表达式来突出显示它。

0

执行此操作的一种方法是,如果您使用git进行版本控制,则将使用git blame命令。它会一行一行地告诉你,谁改变了什么,什么时候改变了什么,改变了什么。这是some documentation,这里是gui。我更喜欢在命令行上,

git blame path/to/filename.m 

运行这个如果你不使用git,并希望了解多一点,你可以检查出Git Community Book

+0

erm这是一个web应用程序,html/css/jquery前端,根本不涉及软件开发,所以git没有帮助 – 2010-12-06 01:44:42

+0

为什么?没有任何说你不能从php的后端调用git。 – 2010-12-08 21:25:46

0

如果你打算从头开始构建它,那么我有一个想法。您可以创建一个'Event'表,在其中记录对文档所做的每一项更改。

该表格包括3个概念:“修改时间”,“谁修改”和“什么更改”。 “什么变化”是这里的主要问题。在我看来,由于您很可能需要支持“恢复”能力,因此您应该保存所有文档的版本。因此,在“什么更改”中,只需要2列:引用更改前文件的“before_change_text_link”和更改后引用文件的“after_change_text_link”。通过这种方式,您可以记录所有更改。

然后,您可以突出显示不同用户通过jQuery/css所做的更改,并在服务器上使用一些比较文本过程。