Coldfusion 根据用户角色更改FullCalendar中的全局“可编辑”回调值

Coldfusion 根据用户角色更改FullCalendar中的全局“可编辑”回调值,coldfusion,fullcalendar,Coldfusion,Fullcalendar,我正在使用jQuery插件以及ColdFusion和MySQL。我有两个用户级别,“管理”和“只读”。我希望“只读”用户只能查看日历上的事件,而不能进行任何更改,“管理员”角色具有完整的编辑功能。我希望通过向FullCalendar editable选项添加一个函数来实现这一点,如果用户角色是管理员,则该函数将设置为true;如果用户角色为只读,则该函数将设置为false 变量userRole是基于ColdFusion会话变量在页面标题中设置的。我验证了在javascript中调用userRol

我正在使用jQuery插件以及ColdFusion和MySQL。我有两个用户级别,“管理”和“只读”。我希望“只读”用户只能查看日历上的事件,而不能进行任何更改,“管理员”角色具有完整的编辑功能。我希望通过向FullCalendar editable选项添加一个函数来实现这一点,如果用户角色是管理员,则该函数将设置为true;如果用户角色为只读,则该函数将设置为false

变量userRole是基于ColdFusion会话变量在页面标题中设置的。我验证了在javascript中调用userRole时,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逐步完成代码时,会跳过可编辑选项的整个函数,并且两种用户类型的事件都是可编辑的

我的jQuery函数有缺陷吗?我是jQuery编程新手?FullCalendar可编辑选项是否不允许功能

我可以通过对每个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”时才继续,但我希望能够更全局地设置角色


想法?

根据日历的实现情况,有几种方法可以解决此问题

既然您已经在使用ColdFusion设置JavaScript变量,您就不能简单地执行以下操作:

editable: <cfif session.userType eq 'Admin'>true<cfelse>false</cfif>

或者,我控制它的方式是通过事件对象。我通常将日历设置为可编辑:默认情况下为false,但随后有选择地允许事件对象在每个对象的基础上进行编辑。我通过返回JSON的webservice cfc从ColdFusion生成我的事件,并让ColdFusion决定谁可以编辑什么,只使用FullCalendar显示。

您在JS中的userRole值在哪里设置?它是在变量userRole='SESSION.userType'中设置的;如果您执行console.loguserRole;输出的值是多少?听起来您的只读值可能没有输出您认为应该输出的内容;显示只读,当以管理员身份登录时,显示AdminI还通过添加alertuserRole测试了userRole变量;作为选择中的第一行:。。。我将研究如何让ColdFusion标记在Javascript中工作——我无法让您的上述建议按书面形式工作。尽管如此,看起来让事情保持现在的状态并为每次回调分别检查用户类型可能会更容易。哦,我忘了提到,我只是将该文件称为javascript,但实际上它调用的是calendar.js.cfm,例如:-