Несколько пользователей

Хотя в планировщике нет встроенной поддержки отдельных календарей, вы можете имитировать это, загружая несколько источников данных в один экземпляр планировщика.

// загрузить два источника данных
scheduler.load("events_shared.php?user=1");
scheduler.load("events_shared.php?user=2");
scheduler.config.readonly = true;

На серверной стороне это может выглядеть так:

$scheduler->render_sql("select * from events_shared where event_type=1 AND 
userId = ".$user_id,"event_id","start_date,end_date,text,event_type,userId");

Этот способ позволяет отображать данные из нескольких источников одновременно. userId в примере — это просто заполнитель; на практике вы можете применять любые правила, которые подходят под ваши задачи.

Этот подход можно расширить для более сложных сценариев, например, когда пользователи видят все события, но могут редактировать только свои:

//включить сохранение для первого источника данных
var dp =  scheduler.createDataProcessor("events.php?user");
dp.init(scheduler);
 
//разрешить операции редактирования только для своих событий
function allow_own(id){
    var ev = this.getEvent(id);
    return ev.userId == 1;
}
scheduler.attachEvent("onClick",allow_own);
scheduler.attachEvent("onDblClick",allow_own);
 
//значения по умолчанию для нового события
scheduler.attachEvent("onEventCreated",function(id){
    const ev = this.getEvent(id);
    // userId будет отправлен на сервер через DataProcessor,
    // обязательно проверьте это на сервере
    ev.userId = CURRENT_USER_ID; 
});
Наверх