我目前正在使用的cms仅支持数据的实时编辑(新闻,事件,博客,文件等),并且我被要求构建一个支持绘图(具有审核)+修订历史记录系统的系统。我正在使用的cms是在内部开发的,所以我可能需要从头开始编码。
每次保存项目时,它都会将数据快照创建为“时间轴”。草稿也是如此。自动化功能会在需要时将时间线草稿拉入原始记录。
时间表会存储数据类型&主键,数据的版本化版本+创建/修改日期+起草日期(如果将来)
我已经快速浏览了其他系统,但我还没有改进现有的想法。
我确信有人已经建立了这样的系统,我想在开始构建之前改进我的设计。任何好的文章/资源也会有所帮助。
由于
答案 0 :(得分:1)
这对我来说听起来很像维基。您可能希望查看维基百科使用的MediaWiki系统,该系统也使用PHP和MySQL。
答案 1 :(得分:1)
我认为使用serialize()将每一行编码为一个字符串,然后将其保存到中央数据库可能是一种解决方案。
您的“实时”数据库包含相关的表格等,但是当您编辑或创建某些内容(不点击发布)时,它将不会保存在主表中,而是进入如下表格:
id - PRI INT
date - DATETIME
table - VARCHAR
table_id - INT
type - ENUM('UNPUBLISHED','ARCHIVED','DELETED');
data - TEXT/BLOB
...将类型设置为'unpublished'并存储table和table_id,以便它知道它的来源。然后单击发布将序列化当前表的内容,将其存储在上面设置为“archive”的表中,然后读出最新的更改(标记为未发布)并将其放入数据库中。这同样适用于删除行 - 将它们放入并标记为“已删除”以用于潜在的取消删除/回滚功能。
要完成所有工作需要相当多的工作,但应提供完整的发布/取消发布和回滚功能。正确地集成到自定义数据库函数中,也可以透明地执行所有这些操作(从SQL的角度来看)。
我一直在计划将此作为解决您似乎遇到的同样问题的方法,但从我的角度来看它仍然是理论上的,但我认为这个想法是合理的。
答案 2 :(得分:0)
答案 3 :(得分:0)
我认为有很多系统可以支持这种开箱即用的功能。虽然我不了解您进行自定义构建的注意事项,但请考虑查看其中的一些内容。他们很可能能够支持你所需要的东西,然后是一些。
考虑一下Drupal,我认为仍然是发布的领先CMS。 Drupal与工作流程模块结合使用,可满足您的所有需求:
http://drupal.org
http://drupal.org/project/workflow
为可用性添加保存草稿:
http://drupal.org/project/save_draft