BUG重现:
简单说,当审核通过前查看/编辑帖子,并停留在链接中带有 modthreadkey 的编辑页面,帖子审核通过后再在该页面上编辑提交,就会造成帖子重新进入审核列表且无法移除(实际帖子处于正常可浏览状态)。
我先说说我个人的审核操作习惯。不少网友的帖子正文格式凌乱或者标题没有概括性,我通常会在审核后一一去适当编辑调整。在Discuz! 7.2版本时,审核通过后会显示刚才通过的帖子的标题和链接,方便逐一进行后续处理。
而Discuz! X版本审核通过后只会显示“已通过X帖,已把X帖放入回收站,已忽略X帖”类似的提示后返回待审列表,并不显示刚才已通过的帖子的标题和链接,这造成我们只能事先在待审页面上一一点击待审帖右侧的“查看”链接打开帖子页,审核通过后再切换到已经提前打开的帖子页进行编辑。那么问题来了!
在待审页上点击“查看”进入帖子页时,由于该帖尚未审核通过,此时帖子的链接带有 modthreadkey ,帖子页面上的“编辑”链接同样带有 modthreadkey 。当审核通过后,如果再在事先打开的链接带有 modthreadkey 的帖子页面上点击“编辑”进入编辑页面,编辑提交后,该帖子会重新进入待审核列表,而且无论如何也通过不了(选择“通过”并提交后,返回看到该帖依然还在待审列表中),而实际上该帖已经处于正常可浏览状态。
同样,进入回收站的帖子,编辑提交后也会重新出现在审核列表中且无法通过!很显然是个BUG。
我有两种解决思路,
第一种,造成这个问题的原因可能是,当编辑页面的链接带有 modthreadkey 时,编辑提交后程序会重新向 pre_forum_thread_moderate 数据表写入该帖子ID且status为0,找到程序中执行这个操作的语句去掉即可(或者在写入该数据的同时,修改 pre_forum_thread 表中对应tid的 displayorder 为 -2),由于时间有限,我暂时没往这个方向研究,如果大家有空可以尝试查找一下,找到了别忘了留个言分享分享。
第二种方式,就是去掉“编辑”链接中的 modthreadkey ,只需要修改 viewthread_node.htm (或可能在 viewthread_node_body.htm 中,不同模板可能不同)即可,用这种方法唯一的缺点时,如果帖子没有审核通过,点“编辑”就进不去了,看个人的操作习惯吧,根据我自己的操作习惯基本是没有影响,所以我暂时采用了这个简单的方法。
完美解决方法(2015/08/21):
若您喜欢这篇文章,欢迎订阅老张小站以获得最新内容。 / 欢迎交流探讨,请发电子邮件至 mail[at]vdazhang.com 。
欢迎谈谈你的看法(无须登录) *正文中请勿包含"http://"否则将被拦截