Hi !
I have a very specific and complex dev using DHTMLX. Let’s see what I have to do :
- I have three buttons to create event (I must not create event from calendar directly)
- Every button must open specific form :
- two buttons open forms defined in form_sections
- one button must open an iframe with a document form specific to project model
Here is my actual code :
var urlLoad = "?app=CALENDAR&action=GET_EVENTS&id=[CALENDAR_ID]";
var sections_type = {
module: [
{name: "description", type: "textarea", map_to: "description"},
{name: "module", type: "select", map_to: "module_id", options: scheduler.serverList("module")},
{name: "cours", type: "select", map_to: "cours_id", options: scheduler.serverList("cours")},
{name: "recurring", type: "recurring", map_to: "rec_type", button: "recurring"},
{name: "time", height: 72, type: "time", map_to: "auto"}
],
corps: [
{name: "libelle", type: "textarea", map_to: "libelle"},
{name: "description", type: "textarea", map_to: "description"},
{name: "time", height: 72, type: "time", map_to: "auto"}
]
};
var current_type = null;
var current_form = null;
function init_scheduler()
{
scheduler.config.full_day = true; // enable parameter to get full day event option on the lightbox form
scheduler.config.details_on_dblclick = true; // Détail sur double click
scheduler.config.multi_day = true; // Permet l'affichage d'événement durant plusieurs jours
scheduler.config.repeat_precise = true; // Permet, lors de la création d'un événement récurrent, de ne pas créer
// les événements avant la date du premier événement créé
scheduler.config.time_step = 15; // Pas des événements en minutes
scheduler.config.xml_date="%d/%m/%Y %H:%i"; // Format de date
scheduler.config.day_date = "%l %j %F"; // Format de date
scheduler.config.scroll_hour = 8; // Scroll de l'écran jusqu'à l'heure indiquée
scheduler.config.details_on_create = true; // Ouverture de la lightbox à la création
scheduler.config.xml_date="%Y-%m-%d %H:%i"; // Format de date utilisé
// suppression de la barre de détail
scheduler.xy.menu_width = 0;
scheduler.attachEvent("onClick",function(){ return false; });
// configuration du contenu de la box
scheduler.templates.event_text = function(start,end,ev){
return ev.description;
};
scheduler.attachEvent("onEventSave",function(id,data){
ev = scheduler.getEvent(id);
if (ev.type != undefined && ev.type != "")
{
data.type = ev.type;
}
else
{
data.type = current_type;
}
return true;
});
// configuration de la lightbox
// labels des sections du formulaire
scheduler.locale.labels.section_cohorte = "Cohorte";
scheduler.locale.labels.section_module = "Module";
scheduler.locale.labels.section_cours = "Cours";
scheduler.locale.labels.section_description = "Description";
scheduler.locale.labels.section_libelle = "Libellé";
scheduler.config.lightbox.sections = sections_type["module"];
// initialisation de l'affichage du calendrier à la date du jour
scheduler.init('scheduler_here', new Date(), "week");
// chargement des données à l'initialisation du calendrier
scheduler.load(urlLoad);
// configuration de l'url des actions pour les événements (create/update/delete)
var dp = new dataProcessor("?app=CALENDAR&action=EVENT_ACTION&cal_id=[CALENDAR_ID]");
// initialisation de l'objet avec ses configurations
dp.init(scheduler);
// workaround : rafraichissement du calendrier après une création (bug récurrence)
scheduler.attachEvent("onEventAdded", clearCalendar);
}
scheduler.showLightbox = function(id){
var ev = scheduler.getEvent(id);
var form_id = "div-form-";
var type = null;
// édition d'un évément existant
if (ev.type != undefined && ev.type != "")
{
form_id += ev.type;
type = ev.type;
}
else
{
// création d'un événement à partir d'un bouton
form_id += current_type;
type = current_type;
}
if (type == "cours")
{
// chargement de l'iframe
var iframe = document.getElementById("form-iframe-cours");
iframe.src = "?app=GENERIC&action=GENERIC_EDIT&id=FICHE_SEANCE";
scheduler.startLightbox(ev.id, document.getElementById("div-form-cours"));
}
else
{
scheduler.config.lightbox.sections = sections_type[current_type];
scheduler.startLightbox(ev.id);
}
}
When I click on my button to open iframe, it’s works perfectly. But when I click on the others buttons, it’s only display the div
<div class="dhx_cal_cover" style="height: 533px;"></div>
without content, nothing appear but the screen is locked (grey color and impossible to click anywhere, escape touch don’t do anything).
How can I make the scheduler behave like I want ?
Thanks in advance.