我正在使用FullCalendar jQuery插件以及ColdFusion和MySQL。我有两个用户级别,"管理员"one_answers"只读"。我希望"只读"用户只能查看日历上的事件,而不能进行任何更改,而"管理员"角色具有完整的编辑功能。我希望通过在FullCalendareditable
选项中添加一个函数来实现这一点,如果用户的角色是Admin,则该函数将设置为true
,如果用户角色是Read Only,则该功能将设置为false
。
变量userRole
是基于ColdFusion会话变量在页首中设置的。当在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编程的新手)?FullCalendareditable
选项是否不允许函数?
我可以通过对每个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
// ...
}
并且只有当用户角色是"管理员"时才继续,但我希望能够更全局地设置角色。
想法?
根据日历的实现,有几种方法可以解决这个问题。
既然你已经在使用ColdFusion设置JavaScript变量了,你就不能简单地做以下事情吗:
editable: <cfif session.userType eq 'Admin'>true<cfelse>false</cfif>
或者,我控制它的方式是通过Event对象。默认情况下,我通常将日历设置为"可编辑:false",但随后有选择地允许事件对象在每个对象的基础上进行编辑。我通过返回JSON的Web服务cfc从ColdFusion生成我的事件,并让ColdFusions决定谁可以编辑什么,只使用FullCalendar进行显示。