<?php session_start(); // lien d'accès borne: /admin/auth.php?ref=borne&MAT=M006567&IDA=RAPEE00501_HZNnwBs&APP_ID=BORNE_AA if(!isset($_SESSION['auth']) || !in_array("view_calendar",$_SESSION['permissions'])) { header("location:../index.php"); } if(!in_array("view_calendar",$_SESSION['permissions']) && !in_array("edit_agence_calendar",$_SESSION['permissions'])) { header("location:../dashboard.php"); } /* if(!isset($_SESSION['id_conseiller'])) { header("location:../dashboard.php"); }*/ require_once("../../inc/confNetisse.php"); $editCalendar = in_array("edit_calendar",$_SESSION['permissions']); $q = "SELECT nom_agence FROM ca_agences WHERE id_agence =". intval($_SESSION["agence"]); $r = excuteQuery($q); if (!$r['status']) wts_die (var_dump($r['stmt']->errorInfo())); // print "<pre>"; print_r($_SESSION); $nom_agence = ""; if($r && $r['stmt']->rowCount()>0){ $nom_agence = $r['stmt']->fetchObject(); $nom_agence = $nom_agence->nom_agence; } ?> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title><?php echo $PROJECT_TITLE;?> : GESTION DES MOBILITES</title> <link href='fullcalendar.css' rel='stylesheet' /> <link rel="stylesheet" href="../css/font-awesome.min.css" /> <link rel="stylesheet" type="text/css" href="../css/cadif.css" /> <link rel="stylesheet" type="text/css" href="../css/dashboard.css" /> <link href='fullcalendar.print.css' rel='stylesheet' media='print' /> <link type="text/css" rel='stylesheet' href="jquery.qtip.min.css" /> <link rel="stylesheet" href="jquery-ui.css" /> <script type="text/javascript" src="lib/11/jquery.min.js"></script> <script type="text/javascript" src='lib/moment.min.js'></script> <script type="text/javascript" src='lib/jquery-ui.custom.min.js'></script> <script type="text/javascript" src='fullcalendar.min.js'></script> <script type="text/javascript" src="jquery.qtip.min.js"></script> <script type="text/javascript" src='mobilite.js'></script> <script type="text/javascript" src='lang-all.js'></script> <script src="lib/bootstrap.min.js"></script> <script src="lib/jquery-ui.min.js"></script> <script src="lib/bootstrap-modal.min.js"></script> <script> $(document).ready(function() { setInterval(refreshCalendar, 60000); if ( !Date.prototype.toISOString ) { (function() { function pad(number) { var r = String(number); if ( r.length === 1 ) { r = '0' + r; } return r; } Date.prototype.toISOString = function() { return this.getUTCFullYear() + '-' + pad( this.getUTCMonth() + 1 ) + '-' + pad( this.getUTCDate() ) + 'T' + pad( this.getUTCHours() ) + ':' + pad( this.getUTCMinutes() ) + ':' + pad( this.getUTCSeconds() ) + '.' + String( (this.getUTCMilliseconds()/1000).toFixed(3) ).slice( 2, 5 ) + 'Z'; }; }() ); } // GET CRS //<?php if($editCalendar){?>getCRs();<?php } ?> var currentLangCode = 'fr'; /* initialize the external events -----------------------------------------------------------------*/ $('#external-events .fc-event').each(function() { // store data so the calendar knows to render an event upon drop $(this).data('event', { title: $.trim($(this).text()), // use the element's text as the event title stick: true // maintain when user navigates (see docs on the renderEvent method) }); <?php if($editCalendar){?> // make the event draggable using jQuery UI $(this).draggable({ zIndex: 999, revert: true, // will cause the event to go back to its revertDuration: 0 // original position after the drag }); <?php } ?> }); /* initialize the calendar -----------------------------------------------------------------*/ $('#calendar').fullCalendar({ header: { left: 'prev,next today', center: 'title', right: 'month,agendaWeek,agendaDay' }, lang: currentLangCode, //weekNumbers: true, selectable: true, selectHelper: true, select: function(start, end, allDay) { $('#calendar').fullCalendar('unselect'); }, <?php if($editCalendar){?> editable: true, droppable: true, <?php }?> //weekends: false, eventLimit: true, events: { url: 'getEventsDA.php', data : function() { return { agencies : $('#calendar_filter').val() , }; }, error: function() { $('#script-warning').show(); } }, /* eventSources: [ 'getEventsDA.php' ], */ <?php if($editCalendar){?> eventDrop: function(event, delta, revertFunc, jsEvent, ui, view) { var checkDay = new Date(event.start.format()); var events = $('#calendar').fullCalendar('clientEvents'); var duplicate = false; var startDate = new Date(checkDay.getFullYear(), checkDay.getMonth(), checkDay.getDate(), 8, 0, 0).toISOString(); var endDate = new Date(checkDay.getFullYear(), checkDay.getMonth(), checkDay.getDate(), 21, 0, 0).toISOString(); for(var i=0;i<events.length - 1;i++){ var startEvent = moment(events[i].start).hours(8).toISOString(); var endEvent = moment(events[i].start).hours(20).toISOString(); var target = jsEvent.toElement || jsEvent.relatedTarget || jsEvent.target; if((target.id == events[i].matricule) && ((startEvent >= startDate && startEvent <= endDate) || (endEvent >= startDate && endEvent <= endDate)) ){ duplicate = events[i]; break; } } var today = new Date(); if(duplicate){ alert('Attention ce créneau est déjà occupé.'); revertFunc(); } else{ if (checkDay.getDay() == 0 || checkDay.toISOString().slice(0, 10) < today.toISOString().slice(0, 10)) { alert('Déplacement impossible!'); revertFunc(); } else{ updateEvent(event); } } }, eventResize: function (event, dayDelta, minuteDelta) { updateEvent(event); }, <?php }?> eventClick: function(event, jsEvent, view) { /* $("#startTime").html(moment(event.start).format('LLLL')); if(event.end === "" || event.end === undefined || event.end === null){ $("#endTime").html('Fin de la journée'); } else{ $("#endTime").html(moment(event.end).format('LLLL')); } $("#eventInfo").html(event.nom); $("#eventLink").click(function(){ choix = confirm("Voulez-vous supprimer cet évènement?"); if (choix) { $("#eventContent").dialog("close"); deleteEvent(event); } else { $("#eventContent").dialog("close"); } }); $("#eventContent").dialog({ modal: true, title: event.title, width:350});*/ var date= new Date(event.start); $('#calendar').fullCalendar( 'changeView', 'agendaDay' ); $('#calendar').fullCalendar('gotoDate', event.start); }, loading: function(bool) { if (bool) $('#loading').show(); else $('#loading').hide(); }, <?php if($editCalendar){?> drop: function(date, jsEvent, ui) { //TO DO : EnD TiMe var checkDay = new Date(date.format()); var events = $('#calendar').fullCalendar('clientEvents'); var duplicate = false; var startDate = new Date(checkDay.getFullYear(), checkDay.getMonth(), checkDay.getDate(), 8, 0, 0).toISOString(); var endDate = new Date(checkDay.getFullYear(), checkDay.getMonth(), checkDay.getDate(), 21, 0, 0).toISOString(); for(var i=0;i<events.length - 1;i++){ var startEvent = moment(events[i].start).hours(8).toISOString(); var endEvent = moment(events[i].start).hours(20).toISOString(); var target = jsEvent.toElement || jsEvent.relatedTarget || jsEvent.target; if((target.id == events[i].matricule) && ((startEvent >= startDate && startEvent <= endDate) || (endEvent >= startDate && endEvent <= endDate)) ){ duplicate = events[i]; break; } } var today = new Date(); if(duplicate){ alert('Attention ce créneau est déjà occupé.'); refreshCalendar(date.id); } else{ if (checkDay.getDay() == 0 || checkDay.toISOString().slice(0, 10) < today.toISOString().slice(0, 10)){ alert('Déplacement impossible!'); refreshCalendar(date.id); } else{ if ($('#drop-remove').is(':checked')) { $(this).remove(); } var element = $(this)[0]; addEvent(date, element); } } }, <?php }?> eventRender: function(event, element) { if(event.id_conseiller){ var id_conseiller = event.id_conseiller; var nb = id_conseiller.length; //Construire une couleur pour chaque conseiller var color = '#5'+id_conseiller.substring(1,6)+'c9ed'; color = color.substring(0, 7); element.css('background-color', color); element.css('border-color', color); } else{ element.css('background-color', '#ccc'); element.css('border-color', '#ccc'); } var endTime = startTime = ''; if(event.end === "" || event.end === undefined || event.end === null){ endTime = 'Fin de la journée'; } else{ endTime = moment(event.end).format('LLLL'); } if(event.allDay){ startTime = moment(event.start).hours(8).format('LLLL') ; } else{ startTime = moment(event.start).format('LLLL') ; } element.qtip({ content : {text:'<b>Conseiller:</b> '+event.nom + '<br/><b>Agence:</b> '+event.nom_agence + '<br/><b>Début:</b> ' + startTime + '<br/><b>Fin:</b> ' + endTime}, position: { adjust: { screen: true }, corner: { target: 'bottomMiddle', tooltip: 'topLeft' } }, show: { solo: true, effect: { type: 'slide' }, effect: function () { $(this).fadeTo(200, 0.8); } }, hide: { when: 'mouseout', fixed: true }, style: { tip: true, // Give it a speech bubble tip border: { width: 2, radius: 5, color: '#474968' }, title: { color: '#fff', background: '#9193c4' }, } }); element.bind('dblclick', function() { choix = confirm("Voulez-vous supprimer cette afffectation?"); if (choix) { deleteEvent(event); } else { } }); }, dayRender: function(date, cell){ var today = new Date(); if (date.toISOString().slice(0, 10) < today.toISOString().slice(0, 10)){ $(cell).addClass('disabled'); } } }); //Filter agences $('#agence-search-filter').keyup(function(){ var valThis = $(this).val(); $('#listeConseillers>li').each(function(){ var text = $(this).text().toLowerCase(); (text.indexOf(valThis.toLowerCase()) != -1) ? $(this).show() : $(this).hide(); }); }); }); function formatFCDate(date){ var dateObj = new Date(date) var dateIntNTZ = dateObj.getTime();// - dateObj.getTimezoneOffset() * 60 * 1000; var dateObjNTZ = new Date(dateIntNTZ); var dateISOString = dateObjNTZ.toISOString(); var formattedDate = dateISOString.slice(0, 10) + " " + dateISOString.slice(11, 19); return formattedDate; } <?php if($editCalendar){?> function addEvent(date, element){ var tempDate = new Date(date); var MorningtempDate = new Date(date); var MorningdateEvent = MorningtempDate.setHours(9); var dateEvent = formatFCDate(MorningdateEvent); var allDay = 1; var currentView = $('#calendar').fullCalendar('getView').type; switch(currentView){ case 'month': var addHours = tempDate.setHours(21); addHours = tempDate.setMinutes(0); addHours = tempDate.setSeconds(0); allDay = 1; break; case 'agendaWeek': var addHours = tempDate.setHours(tempDate.getHours()+2); allDay = 0; break; case 'agendaDay': var addHours = tempDate.setHours(tempDate.getHours()+2); allDay = 0; break; } var endEvent = formatFCDate(addHours); var event_data = ""; event_data += "&id_agence=<?php print $_SESSION['agence'];?>"; event_data += "&id_conseiller=" + element.id; event_data += "&title=<?php print $nom_agence;?>";// $("#"+element.id).data('agence'); event_data += "&start=" + dateEvent; event_data += "&end=" + endEvent; event_data += "&allDay=" + allDay; // console.log(event_data); // console.log($("#"+element.id).data('agence')); $.ajax({ type: 'POST', url: 'addEventDA.php', data: event_data, success: function(response){ // console.log(response); refreshCalendar(); } }); } function updateEvent(event){ var event_data = ""; if(event.allDay){ var temp = new Date(event.start); temp = temp.setHours(9); var start_date = formatFCDate(temp);//event.start.format(); } else{ var start_date = formatFCDate(event.start);//event.start.format(); } var end_date = event.end ? formatFCDate(event.end) : ''; // console.log(event.end); var allDay = event.allDay; /*switch($('#calendar').fullCalendar('getView').type){ case 'agendaWeek': allDay = 0; break; case 'agendaDay': allDay = 0; break; } */ if(event.allDay) allDay = 1; else allDay = 0; event_data += "&id_event=" + event.id_event; event_data += "&id_agence=" + event.id_agence; event_data += "&id_conseiller=" + event.id_conseiller; event_data += "&title=<?php print $nom_agence;?>"; event_data += "&start=" + start_date; event_data += "&end=" + end_date; event_data += "&allDay=" + allDay; event_data += "&view=" + $('#calendar').fullCalendar('getView').type; // console.log(event_data); $.ajax({ type: 'POST', url: 'updateEventDA.php', data: event_data, success: function(response){ // console.log(response); refreshCalendar(); } }); } function deleteEvent(event){ $.ajax({ type: "POST", url: "deleteEvent.php", data: "&id_event=" + event.id_event, success: function(response){ // console.log('response'); refreshCalendar(event.id_event); } }); } function refreshCalendar(id){ if(id === "" || id === undefined || id === null){ $('#calendar').fullCalendar('removeEvents',id); } else{ // $('#calendar').fullCalendar('removeEvents'); } if (navigator.userAgent.indexOf('MSIE') !== -1 || navigator.appVersion.indexOf('Trident/') > 0) { location.reload(); } else{ $('#calendar').fullCalendar('refetchEvents'); } } <?php } ?> </script> </head> <?php $nb = 0; if($editCalendar){ $DATA = "<ul id='listeConseillers'>"; $query = "SELECT cons.id_agent matricule,cons.nom,cons.prenom, cons.id_conseiller, a.nom_agence FROM ca_conseillers cons LEFT JOIN ca_agences a ON a.id_agence = cons.id_agence WHERE cons.supp=0 and cons.pro=1 GROUP BY cons.id_agent"; $results = excuteQuery($query); while($o = $results['stmt']->fetchObject()) { $nomAgence = $o->nom_agence; $id_conseiller = $o->matricule; $nomConseiller = $o->nom . " " . $o->prenom; $DATA .= "<li class='fc-event' data-agence='".$nomAgence."' id='".$id_conseiller."'>".$nomConseiller."</li>"; $nb++; } $DATA .= "</ul>"; } /* LOAD MORE STUFF */ /* if($nb>10){ $DATA .= '<div id="loadMore">Afficher plus</div><div id="showLess">Afficher moins</div>'; } */ ?> <input type="hidden" id="calendar_filter" value="-1"/> <div id="globalLong"> <div id="home"> <div id="logo"><a href="../dashboard.php"><img src="../img/logo.png" border="0"/></a></div> <div id="username"> <b><?php echo isset($_SESSION["nom"]) ? $_SESSION["nom"] : $_SESSION["matricule"];?></b> | <a href="../close.php" class="link" title="Fermer et clore votre session">Déconnexion</a> <br/> </div> </div> <div id='wrap'> <?php if($editCalendar){?> <div id='external-events'> <h4>Liste des conseillers</h4> <input type="text" name="filter" id="agence-search-filter" size="18" placeholder="Filtrer les conseillers..." /> <?php echo $DATA; ?> <p> <input type='checkbox' id='drop-remove' /> <label for='drop-remove'>Enlever après dépôt</label> </p> </div> <div id="populated-selects"></div> <?php } ?> <div id='script-warning'> Problème de chargement de données. </div> <!--<button type="button" onclick="refreshCalendar();">Refresh</button>--> <div class="main-content"> <div id="title"> Gestion des mobilités <?php if($editCalendar){?> de l'agence <span class="agcTitle"><?php echo $nom_agence; ?></span><?php } ?> </div> <div id='calendar' <?php if(!$editCalendar){ print " style='width:100%'";}?>></div> </div> <!--<input type="button" value="Sauvegarder mes disponibilités" onclick="saveCalendrier();" />--> <div style='clear:both'></div> </div> </div> <div id="eventContent" title="Event Details" style="display:none;text-align:left;"> <table> <tr><td><strong>Début: </strong></td><td><span id="startTime"></span></td></tr> <tr><td><strong>Fin: </strong></td><td><span id="endTime"></span></td></tr> <tr><td><strong>Conseiller: </strong></td><td><span id="eventInfo"></span></td></tr> </table> <?php if($editCalendar){?><p><strong><a id="eventLink" class="formNav" href="javascript:">Supprimer</a></strong></p><?php } ?> </div> <?php include '../footer.php';?> </html>