根据用户角色更改全日历中的全局"editable"回调值



我正在使用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进行显示。

相关内容

  • 没有找到相关文章

最新更新