我正在使用FullCalendar jQuery插件以及ColdFusion和MySQL。我有两个用户级别,'Admin'和'Read-Only'。我希望“只读”用户只能查看日历上的事件而不进行任何更改,而“管理员”角色具有完整的编辑功能。我希望通过向FullCalendar editable
选项添加一个函数来实现此目的,如果用户的角色是Admin,则设置为true
,如果用户角色为只读,则设置为false
。
基于ColdFusion会话变量在页眉中设置变量userRole
。我在javascript中调用时验证userRole
确实包含正确的字符串。
我尝试了什么:
$("#calendar").fullCalendar({
// other options and callbacks
// ....
editable: function(){
if (userRole == 'Read-Only') {
return false //events can not be modified
}
else if (userRole == 'Admin') {
return true //events can be modified
}
},
// other callbacks
// ...
});
当我使用Firebug逐步执行代码时,将跳过editable
选项的整个函数,并且可以为两种用户类型编辑事件。
我的jQuery函数是否有缺陷(我是jQuery编程的新手)? FullCalendar editable
选项不允许使用函数吗?
我可以通过对每个FullCalendar回调进行用户角色检查来解决这个问题(例如eventDrop,eventResize,select和eventClick)
select: function(start, end, allDay) {
// check if user is Admin, if not, unselect and return
if (userRole != 'Admin') {
alert("You do not have the permissions to edit events.");
$("#calendar").fullCalendar( 'unselect' );
return
}
// proceed if user is Admin
// ...
}
并且只有在用户角色为“Admin”时才会继续,但我希望能够更全面地设置角色。
想法?
答案 0 :(得分:1)
根据日历的实施情况,有几种方法可以解决此问题。
由于您已使用ColdFusion设置JavaScript变量,因此您不能简单地执行以下操作:
editable: <cfif session.userType eq 'Admin'>true<cfelse>false</cfif>
或者,我控制它的方式是通过Event对象。我通常默认将日历设置为“editable:false”,然后有选择地允许事件对象基于每个对象进行编辑。我通过返回JSON的webservice cfc从ColdFusion生成我的事件,让ColdFusion决定谁编辑什么,只使用FullCalendar进行显示。