ColdFusion と MySQL と共にFullCalendar jQuery プラグインを使用しています。「管理者」と「読み取り専用」の 2 つのユーザー レベルがあります。「管理者」ロールには完全な編集機能があり、「読み取り専用」ユーザーにはカレンダーのイベントを表示することしかできず、変更を加えないようにしたいと考えています。ユーザーの役割が管理者で、ユーザーの役割が読み取り専用の場合に設定される関数を FullCalendareditable
オプションに追加することで、これを行うことを望んでいました。true
false
この変数userRole
は、ColdFusion セッション変数に基づいてページ ヘッダーに設定されます。userRole
JavaScriptで呼び出されたときに正しい文字列が含まれていることを確認しました。
私が試したこと:
$("#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
// ...
}
ユーザーの役割が「管理者」の場合にのみ続行しますが、役割をよりグローバルに設定できることを望んでいました。
アイデア?