2010-01-10 60 views
0

我正在构建的当前应用程序是一个协作应用程序,可以在可以访问一组项目的“团队”或公司中拥有多个用户。每个项目都有自己的文档。策略:当用户离开页面时解锁文档

我想保护团队用户不会碰到彼此,所以我建立了一个系统,第一个用户锁定文档以访问它们。当以下任何发生的文档,然后解锁:

  • 用户关闭文件
  • 用户登录并摧毁他/她的会话
  • 用户留下没有注销,但该会话的垃圾收集解锁文件

这一切运作良好,但有一点是留给修复...

我需要当用户离开一个项目,而不解锁知道文档(基本上只是离开页面),因为他可以走进另一个项目并编辑另一个文档。

我到目前为止唯一的选择是通过捕获我的基本控制器类(CodeIgniter MVC)中的http referrer并对url进行搜索以查看它是否与项目匹配...然后解锁文档。

虽然http referrer变量不可预测,但这不是一个强有力的选项。

你会怎么做? (两个窗口中的同一文档中的同一用户是可以忽略的问题)

回答

1

解决方法之一是使用Javascript事件window.onUnload向服务器发回页面正在离开的信号。最好在当前页面上使用AJAX进行通信,因为现在大多数浏览器都会阻止弹出窗口。

+0

我会研究它。 – Christoffer 2010-01-10 16:12:12

1

保留对当前正在会话中编辑的文档的引用,然后打开文档时检查并查看如果不同?如果是这样,解锁前一个?

+0

是的,但我希望用户能够一次编辑两个项目,也许检查一个旧的参考等 – Christoffer 2010-01-10 10:41:00