gest366/modules/agenda_calendar/edit.php

477 lines
18 KiB
PHP

<?php
include_once(__DIR__."/../../core.php");
//Impostazione filtri di default a tutte le selezioni la prima volta
if( !isset($_SESSION['agenda']['idtecnici']) ){
$rs = $dbo->fetchArray("SELECT an_anagrafiche.idanagrafica AS id FROM an_anagrafiche INNER JOIN (an_tipianagrafiche_anagrafiche INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica) ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica WHERE deleted=0 AND descrizione='Tecnico'");
$_SESSION['agenda']['idtecnici'] = array("'-1'");
for( $i=0; $i<sizeof($rs); $i++ ){
array_push( $_SESSION['agenda']['idtecnici'], "'".$rs[$i]['id']."'" );
}
}
if( !isset($_SESSION['agenda']['idstatoagenda']) ){
$rs = $dbo->fetchArray("SELECT idstatoagenda AS id, descrizione FROM agenda_stati");
$_SESSION['agenda']['idstatoagenda'] = array("'-1'");
for( $i=0; $i<sizeof($rs); $i++ ){
array_push( $_SESSION['agenda']['idstatoagenda'], "'".$rs[$i]['id']."'" );
}
}
if( !isset($_SESSION['agenda']['idtipoagenda']) ){
$rs = $dbo->fetchArray("SELECT idtipoagenda AS id, descrizione FROM agenda_tipi");
$_SESSION['agenda']['idtipoagenda'] = array("'-1'");
for( $i=0; $i<sizeof($rs); $i++ ){
array_push( $_SESSION['agenda']['idtipoagenda'], "'".$rs[$i]['id']."'" );
}
}
?>
<link rel="stylesheet" href="<?php echo $css ?>/fullcalendar.min.css">
<script src="<?php echo $js ?>/fullcalendar.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
// comandi seleziona tutti
$('#selectallstati').click(function(event) {
$(this).parent().parent().find('li input[type=checkbox]').each(function() { //loop through each checkbox
this.checked = true;
});
update_counter( 'idstati_count', $('#idstati_ul').find('input:checked').length );
$('#calendar').fullCalendar('refetchEvents');
});
$('#selectalltipi').click(function(event) {
$(this).parent().parent().find('li input[type=checkbox]').each(function() { //loop through each checkbox
this.checked = true;
});
update_counter( 'idtipi_count', $('#idtipi_ul').find('input:checked').length );
$('#calendar').fullCalendar('refetchEvents');
});
$('#selectalltecnici').click(function(event) {
$(this).parent().parent().find('li input[type=checkbox]').each(function() { //loop through each checkbox
this.checked = true;
});
update_counter( 'idtecnici_count', $('#idtecnici_ul').find('input:checked').length );
$('#calendar').fullCalendar('refetchEvents');
});
$('#selectallzone').click(function(event) {
$(this).parent().parent().find('li input[type=checkbox]').each(function() { //loop through each checkbox
this.checked = true;
});
update_counter( 'idzone_count', $('#idzone_ul').find('input:checked').length );
$('#calendar').fullCalendar('refetchEvents');
});
// comandi deseleziona tutti
$('#deselectallstati').click(function(event) {
$(this).parent().parent().find('li input[type=checkbox]').each(function() { //loop through each checkbox
if( this.checked == true ) session_set_array( 'agenda,idstatoagenda', this.value, 1 );
this.checked = false;
});
update_counter( 'idstati_count', $('#idstati_ul').find('input:checked').length );
$('#calendar').fullCalendar('refetchEvents');
});
$('#deselectalltipi').click(function(event) {
$(this).parent().parent().find('li input[type=checkbox]').each(function() { //loop through each checkbox
if( this.checked == true ) session_set_array( 'agenda,idtipoagenda', this.value, 1 );
this.checked = false;
});
update_counter( 'idtipi_count', $('#idtipi_ul').find('input:checked').length );
$('#calendar').fullCalendar('refetchEvents');
});
$('#deselectalltecnici').click(function(event) {
$(this).parent().parent().find('li input[type=checkbox]').each(function() { //loop through each checkbox
if( this.checked == true ) session_set_array( 'agenda,idtecnici', this.value, 1 );
this.checked = false;
});
update_counter( 'idtecnici_count', $('#idtecnici_ul').find('input:checked').length );
$('#calendar').fullCalendar('refetchEvents');
});
$('#deselectallzone').click(function(event) {
$(this).parent().parent().find('li input[type=checkbox]').each(function() { //loop through each checkbox
if( this.checked == true ) session_set_array( 'agenda,idzone', this.value, 1 );
this.checked = false;
});
update_counter( 'idzone_count', $('#idzone_ul').find('input:checked').length );
$('#calendar').fullCalendar('refetchEvents');
});
});
</script>
<!-- Filtri -->
<div class="row">
<?php
$checks = '';
$count = 0;
$total = 0;
$rs = $dbo->fetchArray("SELECT idstatoagenda AS id, descrizione, colore FROM agenda_stati ORDER BY descrizione ASC");
$total = sizeof($rs);
$allchecksstati = "";
for( $i=0; $i<sizeof($rs); $i++ ){
$attr = '';
foreach( $_SESSION['agenda']['idstatoagenda'] as $idx => $val ){
if( $val == "'".$rs[$i]['id']."'" ){
$attr = 'checked="checked"';
$count++;
}
}
$checks .= "<li><input type='checkbox' id='idstato_".$rs[$i]['id']."' value=\"".$rs[$i]['id']."\" ".$attr." onclick=\"session_set_array( 'agenda,idstatoagenda', '".$rs[$i]['id']."' ); $('#calendar').fullCalendar('refetchEvents'); update_counter( 'idstati_count', $('#idstati_ul').find('input:checked').length );\"> <label for='idstato_".$rs[$i]['id']."'> <span class='badge' style=\"color:#333; background:".$rs[$i]['colore'].";\">".$rs[$i]['descrizione']."</span></label></li>\n";
$allchecksstati .= "session_set_array( 'agenda,idstatoagenda', '".$rs[$i]['id']."', 0 ); ";
}
if( $count == $total ){
$class = "btn-success";
}
else if( $count == 0 ){
$class = "btn-danger";
}
else{
$class = "btn-warning";
}
if ($total==0)
$class = "btn-primary disabled";
?>
<!-- STATI Agenda -->
<div class="dropdown col-md-3">
<a class="btn <?php echo $class ?> btn-block" data-toggle="dropdown" href="javascript:;" id="idstati_count"><i class="fa fa-filter"></i> Stato (<?php echo $count."/".$total ?>) <i class="caret"></i></a>
<ul class="dropdown-menu" role="menu" id="idstati_ul">
<?php echo $checks ?>
<div class="btn-group pull-right">
<button id="selectallstati" onclick="<?php echo $allchecksstati; ?>" class="btn btn-primary btn-xs" type="button"><?php echo _("Tutti"); ?></button>
<button id="deselectallstati" class="btn btn-danger btn-xs" type="button"><?php echo _("&times;"); ?></button>
</div>
</ul>
</div>
<!-- TIPI Agenda -->
<?php
$checks = '';
$count = 0;
$total = 0;
$rs = $dbo->fetchArray("SELECT idtipoagenda AS id, descrizione FROM agenda_tipi ORDER BY descrizione ASC");
$total = sizeof($rs);
$allcheckstipi = "";
for( $i=0; $i<sizeof($rs); $i++ ){
$attr = '';
foreach( $_SESSION['agenda']['idtipoagenda'] as $idx => $val ){
if( $val == "'".$rs[$i]['id']."'" ){
$attr = 'checked="checked"';
$count++;
}
}
$checks .= "<li><input type='checkbox' id='idtipo_".$rs[$i]['id']."' value=\"".$rs[$i]['id']."\" ".$attr." onclick=\"session_set_array( 'agenda,idtipoagenda', '".$rs[$i]['id']."' ); $('#calendar').fullCalendar('refetchEvents'); update_counter( 'idtipi_count', $('#idtipi_ul').find('input:checked').length );\"> <label for='idtipo_".$rs[$i]['id']."'> ".$rs[$i]['descrizione']."</label></li>\n";
$allcheckstipi .= "session_set_array( 'agenda,idtipoagenda', '".$rs[$i]['id']."', 0 ); ";
}
if( $count == $total ){
$class = "btn-success";
}
else if( $count == 0 ){
$class = "btn-danger";
}
else{
$class = "btn-warning";
}
if ($total==0)
$class = "btn-primary disabled";
?>
<div class="dropdown col-md-3">
<a class="btn <?php echo $class ?> btn-block" data-toggle="dropdown" href="javascript:;" id="idtipi_count"><i class="fa fa-filter"></i> Tipologia (<?php echo $count."/".$total ?>) <i class="caret"></i></a>
<ul class="dropdown-menu" role="menu" id="idtipi_ul">
<?php echo $checks ?>
<div class="btn-group pull-right">
<button id="selectalltipi" onclick="<?php echo $allcheckstipi; ?>" class="btn btn-primary btn-xs" type="button"><?php echo _("Tutti"); ?></button>
<button id="deselectalltipi" class="btn btn-danger btn-xs" type="button"><?php echo _("&times;"); ?></button>
</div>
</ul>
</div>
<!-- TECNICI -->
<?php
$checks = '';
$count = 0;
$total = 0;
$totale_tecnici = 0; // conteggia tecnici eliminati e non
$rs = $dbo->fetchArray("SELECT an_anagrafiche.idanagrafica AS id, ragione_sociale FROM an_anagrafiche INNER JOIN (an_tipianagrafiche_anagrafiche INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica) ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica WHERE deleted=0 AND descrizione='Tecnico' ORDER BY ragione_sociale ASC");
$total = sizeof($rs);
$totale_tecnici += $total;
$allchecktecnici = "";
for( $i=0; $i<sizeof($rs); $i++ ){
$attr = '';
foreach( $_SESSION['agenda']['idtecnici'] as $idx => $val ){
if( $val == "'".$rs[$i]['id']."'" ){
$attr = 'checked="checked"';
$count++;
}
}
$checks .= "<li><input type='checkbox' id='tech_".$rs[$i]['id']."' value=\"".$rs[$i]['id']."\" ".$attr." onclick=\"session_set_array( 'agenda,idtecnici', '".$rs[$i]['id']."' ); $('#calendar').fullCalendar('refetchEvents'); update_counter( 'idtecnici_count', $('#idtecnici_ul').find('input:checked').length );\"> <label for='tech_".$rs[$i]['id']."'> ".$rs[$i]['ragione_sociale']."</label></li>\n";
$allchecktecnici .= "session_set_array( 'agenda,idtecnici', '".$rs[$i]['id']."', 0 ); ";
}
// TECNICI ELIMINATI
$rs = $dbo->fetchArray("SELECT an_anagrafiche.idanagrafica AS id, ragione_sociale FROM an_anagrafiche INNER JOIN (an_tipianagrafiche_anagrafiche INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica) ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica WHERE deleted=1 AND descrizione='Tecnico' ORDER BY ragione_sociale ASC");
$total = sizeof($rs);
$totale_tecnici += $total;
if( $total>0 ){
$checks .= "<li><hr>Tecnici eliminati:</li>\n";
for( $i=0; $i<sizeof($rs); $i++ ){
$attr = '';
foreach( $_SESSION['agenda']['idtecnici'] as $idx => $val ){
if( $val == "'".$rs[$i]['id']."'" ){
$attr = 'checked="checked"';
$count++;
}
}
$checks .= "<li><input type='checkbox' id='tech_".$rs[$i]['id']."' value=\"".$rs[$i]['id']."\" ".$attr." onclick=\"session_set_array( 'agenda,idtecnici', '".$rs[$i]['id']."' ); $('#calendar').fullCalendar('refetchEvents'); update_counter( 'idtecnici_count', $('#idtecnici_ul').find('input:checked').length );\"> <label for='tech_".$rs[$i]['id']."'> ".$rs[$i]['ragione_sociale']."</label></li>\n";
$allchecktecnici .= "session_set_array( 'agenda,idtecnici', '".$rs[$i]['id']."', 0 ); ";
} // end for
} // end if
if( $count == $totale_tecnici ){
$class = "btn-success";
}
else if( $count == 0 ){
$class = "btn-danger";
}
else{
$class = "btn-warning";
}
if ($totale_tecnici==0)
$class = "btn-primary disabled";
?>
<div class="dropdown col-md-3">
<a class="btn <?php echo $class ?> btn-block" data-toggle="dropdown" href="javascript:;" id="idtecnici_count"><i class="fa fa-filter"></i> Operatore (<?php echo $count."/".$totale_tecnici ?>) <i class="caret"></i></a>
<ul class="dropdown-menu" role="menu" id="idtecnici_ul">
<?php echo $checks ?>
<div class="btn-group pull-right">
<button id="selectalltecnici" onclick="<?php echo $allchecktecnici; ?>" class="btn btn-primary btn-xs" type="button"><?php echo _("Tutti"); ?></button>
<button id="deselectalltecnici" class="btn btn-danger btn-xs" type="button"><?php echo _("&times;"); ?></button>
</div>
</ul>
</div>
</div>
<br>
<div id="calendar"></div>
<script type="text/javascript">
$(document).ready(function() {
create_calendar();
});
function create_calendar(){
var calendar = $('#calendar').fullCalendar({
monthNames: ['<?php echo _("Gennaio") ?>','<?php echo _("Febbraio") ?>','<?php echo _("Marzo") ?>','<?php echo _("Aprile") ?>','<?php echo _("Maggio") ?>','<?php echo _("Giugno") ?>','<?php echo _("Luglio") ?>','<?php echo _("Agosto") ?>','<?php echo _("Settembre") ?>','<?php echo _("Ottobre") ?>','<?php echo _("Novembre") ?>','<?php echo _("Dicembre") ?>'],
monthNamesShort: ['<?php echo _("gen") ?>','<?php echo _("feb") ?>','<?php echo _("mar") ?>','<?php echo _("apr") ?>','<?php echo _("mag") ?>','<?php echo _("giu") ?>','<?php echo _("lug") ?>','<?php echo _("ago") ?>','<?php echo _("set") ?>','<?php echo _("ott") ?>','<?php echo _("nov") ?>','<?php echo _("dic") ?>'],
dayNames: ['<?php echo _("Domenica") ?>','<?php echo _("Lunedì") ?>','<?php echo _("Martedì") ?>','<?php echo _("Mercoledì") ?>','<?php echo _("Giovedì") ?>','<?php echo _("Venerdì") ?>','<?php echo _("Sabato") ?>'],
dayNamesShort: ['<?php echo _("Dom") ?>','<?php echo _("Lun") ?>','<?php echo _("Mar") ?>','<?php echo _("Mer") ?>','<?php echo _("Gio") ?>','<?php echo _("Ven") ?>','<?php echo _("Sab") ?>'],
firstDay: 1,
<?php if( get_var("Visualizzare la domenica sul calendario") == "0" ){ ?>
hiddenDays: [ 0 ],
<?php } ?>
buttonText: {
today: '<?php echo _("Oggi") ?>',
day: '<?php echo _("Giorno") ?>',
week:'<?php echo _("Settimana") ?>',
month:'<?php echo _("Mese") ?>'
},
titleFormat: {
month: "MMMM YYYY",
week: "D MMMM YYYY",
day: "D MMMM YYYY"
},
columnFormat: {
month: "ddd",
week: "ddd D/M",
day: "dddd D MMMM"
},
header: {
left: 'prev,next today',
center: 'title',
right: 'month,agendaWeek,agendaDay'
},
timeFormat: 'H:mm\n',
slotDuration: '00:15:00',
<?php if( get_var("Vista agenda") == "mese" ){ ?>
defaultView: 'month',
<?php }elseif( get_var("Vista agenda") == "giorno" ){ ?>
defaultView: 'agendaDay',
<?php }else{ ?>
defaultView: 'agendaWeek',
<?php } ?>
<?php if( get_var("Abilitare orario lavorativo") == "1" ){ ?>
minTime: '08:00:00',
maxTime: '20:00:00',
<?php } ?>
axisFormat: "H:mm",
selectable: true,
selectHelper: true,
editable: true,
eventLimit: false, // allow "more" link when too many events
allDaySlot: false,
select: function(start, end, allDay) {
data = moment(start).format("YYYY-MM-DD");
ora_dal = moment(start).format("HH:mm");
ora_al = moment(end).format("HH:mm");
<?php
if( $modules_info[$module_name]["permessi"] == 'rw' ){
?>
launch_modal( 'Aggiungi', '<?php echo $rootdir ?>/add.php?id_module=<?php echo $modules_info['Agenda']['id'] ?>&ref=agenda&data='+data+'&orario_inizio='+ora_dal+'&orario_fine='+ora_al, 1 );
<?php
}
?>
$('#calendar').fullCalendar('unselect');
},
events: {
url: "<?php echo $rootdir ?>/modules/agenda_calendar/ajaxreq.php?op=get_current_month",
type: 'GET',
error: function() {
alert('Errore durante la creazione degli eventi.');
}
},
eventResize: function(event,dayDelta,minuteDelta,revertFunc) {
$.get("<?php echo $rootdir ?>/modules/agenda_calendar/ajaxreq.php?op=update_intervento&id="+event.id+"&timeStart="+moment(event.start).format("YYYY-MM-DD HH:mm")+"&timeEnd="+moment(event.end).format("YYYY-MM-DD HH:mm"), function(data,response){
if( response=="success" ){
data = $.trim(data);
if( data!="ok" ){
alert( data );
$('#calendar').fullCalendar('refetchEvents');
revertFunc();
}
else{
//$('#calendar').fullCalendar('refetchEvents');
return false;
}
}
});
},
eventDrop: function(event,dayDelta,minuteDelta,revertFunc) {
$.get("<?php echo $rootdir ?>/modules/agenda_calendar/ajaxreq.php?op=update_intervento&id="+event.id+"&timeStart="+moment(event.start).format("YYYY-MM-DD HH:mm")+"&timeEnd="+moment(event.end).format("YYYY-MM-DD HH:mm"), function(data,response){
if( response=="success" ){
data = $.trim(data);
if( data!="ok" ){
alert( data );
$('#calendar').fullCalendar('refetchEvents');
revertFunc();
}
else{
//$('#calendar').fullCalendar('refetchEvents');
return false;
}
}
});
},
eventAfterRender : function(event, element) {
//alert(element.find('.fc-event-title').html();
element.find('.fc-title').html(event.title);
<?php if( get_var("Utilizzare i tooltip sul calendario") == "1" ){ ?>
$.get("<?php echo $rootdir ?>/modules/agenda_calendar/ajaxreq.php?op=get_more_info&id="+event.id+"&timeStart="+moment(event.start).format("YYYY-MM-DD HH:mm")+"&timeEnd="+moment(event.end).format("YYYY-MM-DD HH:mm"), function(data,response){
if( response=="success" ){
data = $.trim(data);
if( data!="ok" ){
element.tooltipster({
content: $(''+data+''),
animation: 'grow',
contentAsHTML: true,
hideOnClick: true,
onlyOne: true,
speed: 200,
delay: 100,
maxWidth: 400,
theme: 'tooltipster-shadow',
touchDevices: true,
trigger: 'hover',
position: 'left'
});
}
else{
return false;
}
}
});
<?php } ?>
}
});
}
</script>