Disable the dates in fullcalendar

1

I am using the FullCalendar library and I need to disable the days that have already passed but I do not know how to do it.

I want to be able to enter the page does not allow me to click on the dates that have already passed.

This is my code:

$(document).ready(function() {

  $('#checkboxeditar').click(function() { // este es el modal? no , esto es un checkbox que habilita/deshabilita campos 
    if ($(this).is(':checked')) {
      document.getElementById("razondeeliminacion").checked = false
      $('.titulo').removeAttr('disabled');
      $('.importancia').removeAttr('disabled');
      $('.lugar').removeAttr('disabled');
      $('.motivo').removeAttr('disabled');
      $('.fuente').removeAttr('disabled');
      $('.hora').removeAttr('disabled');
      $('.fotografo').removeAttr('disabled');
      $('.descripcion').removeAttr('disabled');
      $('.tipo').removeAttr('disabled');
      $('.periodista').removeAttr('disabled');
      $('.etiquetas').removeAttr('disabled');
      $('.razonmodificacion').removeAttr('disabled');
      $('#btsubmit').removeAttr('disabled');

    } else {
      $('.titulo').attr('disabled', 'disabled');
      $('.importancia').attr('disabled', 'disabled');
      $('.lugar').attr('disabled', 'disabled');
      $('.motivo').attr('disabled', 'disabled');
      $('.fuente').attr('disabled', 'disabled');
      $('.hora').attr('disabled', 'disabled');
      $('.fotografo').attr('disabled', 'disabled');
      $('.descripcion').attr('disabled', 'disabled');
      $('.tipo').attr('disabled', 'disabled');
      $('.periodista').attr('disabled', 'disabled');
      $('.etiquetas').attr('disabled', 'disabled');
      $('.razonmodificacion').attr('disabled', 'disabled');
    }
  });

  var date = new Date();
  var yyyy = date.getFullYear().toString();
  var mm = (date.getMonth() + 1).toString().length == 1 ? "0" + (date.getMonth() + 1).toString() : (date.getMonth() + 1).toString();
  var dd = (date.getDate()).toString().length == 1 ? "0" + (date.getDate()).toString() : (date.getDate()).toString();

  $('#calendar').fullCalendar({
    header: {
      language: 'es',
      left: 'prev,next today',
      center: 'title',
      right: 'month,basicWeek,basicDay',
    },
    defaultDate: yyyy + "-" + mm + "-" + dd,
    editable: true,
    eventLimit: true, // allow "more" link when too many events
    selectable: true,
    selectHelper: true,

    select: function(start, end) {

      $('#ModalAdd #start').val(moment(start).format('YYYY-MM-DD'));
      $('#ModalAdd #end').val(moment(end).format('YYYY-MM-DD'));
      $('#ModalAdd').modal('show');
    },
    eventRender: function(event, element) {
      element.bind('dblclick', function() {
        $('#ModalEdit #id').val(event.id);
        $('#ModalEdit #title').val(event.title);
        $('#ModalEdit #color').val(event.color);
        $('#ModalEdit').modal('show');
        /*
    					$('[name="title"]').val(event.title);
    					$('[name="lugar"]').val(event.lugar);
                        $('[name="motivo"]').val(event.motivo);
                        $('[name="fuente"]').val(event.fuente);
                        $('[name="tipo"]').val(event.tipo);
                        $('[name="hora"]').val(event.hora);
                        $('[name="fotografo"]').val(event.fotografo);
                        $('[name="descripcion"]').val(event.descripcion);
                        $('[name="reportero"]').val(event.reportero);
                        $('[name="etiquetas"]').val(event.etiquetas);
    					*/
        var form = hanyerck || $('#hanyerck')[0];
        var keys = Object.keys(event);
        while (key = keys.shift()) {
          //console.log(key);
          try {
            var input = form.querySelector('input[name="' + key + '"],select[name="' + key + '"],textarea[name="' + key + '"]');
            console.log(key, event[key], input);
            if (input.nodeName == 'SELECT') {
              var option = input.querySelector('[value="' + event[key] + '"]');
              if (option != null) {
                console.log('selcet====================================');
                //$(input).find('option').removeAttr('selected');
                //$(option).attr('selected','selected').click();
                option.setAttribute('selected', 'selected');
                // creo que era haci. :) veamos xD
              }
            } else {
              input.value = event[key];
            }
          } catch (e) {}
        }

        //console.log(event);
      });
    },
    eventDrop: function(event, delta, revertFunc) { // si changement de position

      edit(event);

    },
    eventResize: function(event, dayDelta, minuteDelta, revertFunc) { // si changement de longueur

      edit(event);

    },
    events: [{
        id: '1',
        title: 'Titulo 1',
        start: '2018-07-01 07:00:00',
        end: '2018-07-01 09:00:00',
        color: '#beeeef',
        lugar: 'Lugar 1',
        motivo: 'Motivo 1',
        fuente: 'Fuente 1',
        tipo: 'Tipo 1',
        hora: '07:00',
        fotografo: 'Fotografo 1',
        descripcion: 'Descripcion 1',
        reportero: 'Reportero 1',
        etiquetas: 'etiqueta1',
        razonmodificacion: 'Razon 1',
      },
      {
        id: '1',
        title: 'Titulo 2',
        start: '2018-07-10 09:00:00',
        end: '2018-07-10 11:00:00',
        color: '#ffbbee',
        lugar: 'Lugar 2',
        motivo: 'Motivo 2',
        fuente: 'Fuente 2',
        tipo: 'Tipo 2',
        hora: '09:00',
        fotografo: 'Fotografo 2',
        descripcion: 'Descripcion 2',
        reportero: 'Reportero 2',
        etiquetas: 'etiqueta2',
        razonmodificacion: 'Razon 2',
      }
    ]
  });
  //funcion para mover eventos y cambiarlos de fecha
  function edit(event) {
    start = event.start.format('YYYY-MM-DD ');
    if (event.end) {
      end = event.end.format('YYYY-MM-DD ');
    } else {
      end = start;
    }

    id = event.id;

    Event = [];
    Event[0] = id;
    Event[1] = start;
    Event[2] = end;
    //console.log(event,Event);
    $.ajax({
      url: 'editEventDate.php',
      type: "POST",
      data: {
        Event: Event,
        title: event.title
      },
      success: function(rep) {
        if (rep == 'OK') {
          swal({
            position: 'top-end',
            type: 'success',
            title: 'Se ha modificado el dia del evento de forma exitosa',
            showConfirmButton: false,
            timer: 1500
          });
        } else {
          swal({
            type: 'error',
            title: 'Algo salio mal...',
            html: '<i class="fa fa-phone"></i>  <i class="fa fa-whatsapp"></i>   04162910634  '
          });
        }
      }
    });
  }
});

function mayus(texto) {
  let val = texto.value
  let result = val.split(' ').map(item => !item.startsWith('#') && item != '' ? '#' + item : item)
  texto.value = result.join(' ')
}
.fa-facebook,
.fa-facebook-square {
  color: #3b5998
}

.fa-twitter,
.fa-twitter-square {
  color: #00aced
}

.fa-google-plus,
.fa-google-plus-square {
  color: #dd4b39
}

.fa-youtube,
.fa-youtube-play,
.fa-youtube-square {
  color: #bb0000
}

.fa-tumblr,
.fa-tumblr-square {
  color: #32506d
}

.fa-vine {
  color: #00bf8f
}

.fa-flickr {
  color: #ff0084
}

.fa-vimeo-square {
  color: #aad450
}

.fa-pinterest,
.fa-pinterest-square {
  color: #cb2027
}

.fa-linkedin,
.fa-linkedin-square {
  color: #007bb6
}

.fa-instagram {
  #color: #517fa4;
}

.fa-spotify {
  color: #1ED760;
}

#notification-icon {}

body {
  padding-top: 10px;
  background-repeat: no-repeat;
  background-position: center;
  background-image: url(http://prensaalcaldiadearismendi.epizy.com/img/imagendefondo.jpg);
}

#calendar {
  max-width: 940px;
}

.col-centered {
  float: none;
  margin: 0 auto;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css" rel="stylesheet">
<link href='https://cdnjs.cloudflare.com/ajax/libs/fullcalendar/3.9.0/fullcalendar.min.css' rel='stylesheet' />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">



<!-- Page Content -->


<div class="container">

  <div class="row">
    <div class="col-lg-12 text-center">
      <h1>Calendario de actividades</h1>
      <div id="calendar" class="col-centered">
      </div>
    </div>
  </div>
  <!-- /.row -->
  <!--notification -->

  <!-- Modal -->
  <div class="modal fade" id="ModalAdd" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
    <div class="modal-dialog modal-lg" role="document">
      <div class="modal-content">

        <form class="form-horizontal" method="POST" action="addEvent.php">
          <!-- este es para agregar los eventos , mas abajo esta el de editarlos -->
          <div class="modal-header">
            <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
            <h3 class="modal-title" id="myModalLabel">Nuevo evento
              <div align="center"><span class="fa fa-3x fa-facebook-square"></span><span class="fa fa-3x fa-twitter-square"></span><span class="fa fa-3x fa-google-plus-square"></span><span class="fa fa-3x fa-youtube-square"></span><span class="fa fa-3x fa-tumblr-square"></span></span>
                <span class="fa fa-3x fa-vimeo-square"></span>
                </span><span class="fa fa-3x fa-pinterest-square"></span><span class="fa fa-3x fa-linkedin-square"></span><span class="fa fa-3x fa-instagram"></span></div>
            </h3>
          </div>
          <div class="modal-body">

            <div class="form-group">
              <label for="title" class="col-sm-2 control-label">Título</label>
              <div class="col-sm-10">
                <input type="text" name="title" class="form-control" id="title" placeholder="Debe ser corto" required>
              </div>
            </div>
            <div class="form-group">
              <label for="color" class="col-sm-2 control-label">Importancia</label>
              <div class="col-sm-10">
                <select name="color" class="form-control" id="color" required>
                  <option value="">SELECCIONE</option>
                  <option style="color:#000;" value="#000">&#9724; SIN TRASCENDENCIA</option>
                  <option style="color:#008000;" value="#008000">&#9724; IMPORTANTE</option>
                  <option style="color:#FF0000;" value="#FF0000">&#9724; ULTIMA HORA</option>
                  <option style="color:#40E0D0;" value="#40E0D0">&#9724; EFEMERIDES</option>
                  <option style="color:#FFD700;" value="#FFD700">&#9724; OTROS</option>

                </select>
              </div>
            </div>
            <div class="form-group">
              <label for="start" class="col-sm-2 control-label">Fecha Inicial</label>
              <div class="col-sm-10">
                <input type="text" name="start" class="form-control" id="start" readonly>
              </div>
            </div>
            <div class="form-group">
              <label for="end" class="col-sm-2 control-label">Fecha Final</label>
              <div class="col-sm-10">
                <input type="text" name="end" class="form-control" id="end" readonly>
              </div>
            </div>

            <div class="form-group">
              <label for="lugar" class="col-sm-2 control-label">Lugar</label>
              <div class="col-sm-10">
                <input type="text" name="lugar" class="form-control" id="lugar" placeholder="lugar del acontecimiento" required>
              </div>
            </div>


            <div class="form-group">
              <label for="motivo" class="col-sm-2 control-label">Motivo</label>
              <div class="col-sm-10">
                <input type="text" name="motivo" class="form-control" id="motivo" placeholder="motivo" required>
              </div>
            </div>

            <div class="form-group">
              <label for="fuente" class="col-sm-2 control-label">Fuente</label>
              <div class="col-sm-10">
                <input type="text" name="fuente" class="form-control" id="fuente" placeholder="fuente" required>
              </div>
            </div>

            <div class="form-group">
              <label for="hora" class="col-sm-2 control-label">Hora</label>
              <div class="col-sm-10">
                <input type="time" name="hora" class="form-control" id="hora" placeholder="hora del suceso" required>
              </div>
            </div>


            <div class="form-group">
              <label for="fotografo" class="col-sm-2 control-label">Fotógrafo</label>
              <div class="col-sm-10">
                <select name="fotografo" class="form-control" id="fotografo" required>
                  <option value="">SELECCIONE</option>
                  <option value="ANMAIRYS SALAZAR">&#9724; ANMAIRYS SALAZAR</option>
                  <option value="JOSE AGREDAS">&#9724; JOSE AGREDAS</option>
                  <option value="AMBOS">&#9724; TODO EL EQUIPO</option>


                </select>
              </div>
            </div>

            <div class="form-group">
              <label for="descripcion" class="col-sm-2 control-label">Descripción</label>
              <div class="col-sm-10">
                <textarea name="descripcion" class="form-control" id="descripcion" placeholder="describa el suceso con detalles" required></textarea>
              </div>
            </div>


            <div class="form-group">
              <label for="tipo" class="col-sm-2 control-label">Tipo</label>
              <div class="col-sm-10">
                <select name="tipo" class="form-control" id="tipo" required>
                  <option value="">SELECCIONE</option>
                  <option value="ECONOMIA">&#9724; ECONOMIA</option>
                  <option value="CULTURA">&#9724; CULTURA</option>
                  <option value="SOCIEDAD">&#9724; SOCIEDAD</option>
                  <option value="OTROS">&#9724; OTROS</option>

                </select>
              </div>
            </div>

            <div class="form-group">
              <label for="reportero" class="col-sm-2 control-label">Periodista</label>
              <div class="col-sm-10">
                <select name="reportero" class="form-control" id="reportero" required>
                  <option value="">SELECCIONE</option>
                  <option value="EVELYN CHAVEZ">&#9724; EVELYN CHAVEZ</option>
                </select>
              </div>
            </div>

            <div class="form-group">
              <label for="etiquetas" class="col-sm-2 control-label">Etiquetas</label>
              <div class="col-sm-10">
                <textarea name="etiquetas" class="form-control" id="etiquetas" placeholder="escriba y separe con espacio las etiquetas a usar" required onkeyup="mayus(this);" style="color: blue;"></textarea>
              </div>
            </div>




          </div>
          <div class="modal-footer">
            <button type="button" class="btn btn-info" data-dismiss="modal">Cerrar</button>
            <button type="submit" class="btn btn-primary">Guardar</button>
          </div>
        </form>
      </div>
    </div>
  </div>







  <!-- Modal -->
  <div class="modal fade" id="ModalEdit" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
    <div class="modal-dialog modal-lg" role="document">
      <div class="modal-content">
        <form id="hanyerck" class="form-horizontal" method="POST" action="editEventTitle.php">
          <div class="modal-header">
            <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
            <h4 class="modal-title" id="myModalLabel">Ver/Modificar Evento</h4>
          </div>
          <div class="modal-body">

            <div class="form-group">
              <label for="title" class="col-sm-2 control-label">Título</label>
              <div class="col-sm-10">
                <input type="text" name="title" class="form-control titulo" placeholder="Titulo" disabled>
              </div>
            </div>
            <div class="form-group">
              <label for="color" class="col-sm-2 control-label">Importancia</label>
              <div class="col-sm-10">
                <select name="color" class="form-control importancia" id="color" disabled>
                  <option value="">SELECCIONAR</option>
                  <option style="color:#000;" value="#000">&#9724; SIN TRASCENDENCIA</option>
                  <option style="color:#008000;" value="#008000">&#9724; IMPORTANTE</option>
                  <option style="color:#FF0000;" value="#FF0000">&#9724; ULTIMA HORA</option>
                  <option style="color:#40E0D0;" value="#40E0D0">&#9724; EFEMERIDES</option>
                  <option style="color:#FFD700;" value="#FFD700">&#9724; OTROS</option>


                </select>
              </div>
            </div>

            <div class="form-group">
              <label for="lugar" class="col-sm-2 control-label">Lugar</label>
              <div class="col-sm-10">
                <input type="text" name="lugar" class="form-control lugar" id="lugar" placeholder="lugar del acontecimiento" disabled>
              </div>
            </div>

            <div class="form-group">
              <label for="motivo" class="col-sm-2 control-label">Motivo</label>
              <div class="col-sm-10">
                <input type="text" name="motivo" class="form-control motivo" id="motivo" placeholder="motivo" disabled>
              </div>
            </div>

            <div class="form-group">
              <label for="fuente" class="col-sm-2 control-label">Fuente</label>
              <div class="col-sm-10">
                <input type="text" name="fuente" class="form-control fuente" id="fuente" placeholder="fuente" disabled>
              </div>
            </div>

            <div class="form-group">
              <label for="hora" class="col-sm-2 control-label">Hora</label>
              <div class="col-sm-10">
                <input type="time" name="hora" class="form-control hora" id="hora" placeholder="hora del suceso" disabled>
              </div>
            </div>

            <div class="form-group">
              <label for="fotografo" class="col-sm-2 control-label">Fotógrafo</label>
              <div class="col-sm-10">
                <select name="fotografo" class="form-control fotografo" id="fotografo" disabled>
                  <option value="">SELECCIONE</option>
                  <option value="ANMAIRYS SALAZAR">&#9724; ANMAIRYS SALAZAR</option>
                  <option value="JOSE AGREDAS">&#9724; JOSE AGREDAS</option>
                  <option value="AMBOS">&#9724; AMBOS</option>

                </select>
              </div>
            </div>

            <div class="form-group">
              <label for="descripcion" class="col-sm-2 control-label">Descripción</label>
              <div class="col-sm-10">
                <textarea name="descripcion" class="form-control descripcion" id="descripcion" placeholder="describa el suceso" disabled></textarea>
              </div>
            </div>


            <div class="form-group">
              <label for="tipo" class="col-sm-2 control-label">Tipo</label>
              <div class="col-sm-10">
                <select name="tipo" class="form-control tipo" id="tipo" disabled>
                  <option value="">SELECCIONE</option>
                  <option value="ECONOMIA">&#9724; ECONOMIA</option>
                  <option value="CULTURA">&#9724; CULTURA</option>
                  <option value="SOCIEDAD">&#9724; SOCIEDAD</option>
                  <option value="OTROS">&#9724; OTROS</option>

                </select>
              </div>
            </div>

            <div class="form-group">
              <label for="reportero" class="col-sm-2 control-label">Periodista</label>
              <div class="col-sm-10">
                <select name="reportero" class="form-control periodista" id="reportero" disabled>
                  <option value="">SELECCIONE</option>
                  <option value="EVELYN CHAVEZ">&#9724; EVELYN CHAVEZ</option>

                </select>
              </div>
            </div>


            <div class="form-group">
              <label for="etiquetas" class="col-sm-2 control-label">Etiquetas</label>
              <div class="col-sm-10">
                <textarea name="etiquetas" class="form-control etiquetas" id="etiquetas" placeholder="escriba y separe con espacio las etiquetas a usar" required onkeyup="mayus(this);" style="color: blue;" disabled></textarea>
              </div>
            </div>

            <div class="form-group">
              <label for="razonmodificacion" class="col-sm-2 control-label">Razon de la modificacion</label>
              <div class="col-sm-10">
                <textarea name="razonmodificacion" class="form-control razonmodificacion" id="razonmodificacion" placeholder="escriba la razon de la modificacion, si aparece algo aqui fue modificado el evento" required disabled></textarea>
              </div>
            </div>


            <div class="form-group" id="razondeeliminacion" hidden="true">
              <label for="razondeeliminacion" class="col-sm-2 control-label">Razon de la eliminacion</label>
              <div class="col-sm-10">
                <input name="razondeeliminacion" class="form-control razondeeliminacion" id="razondeeliminacion" placeholder="escriba la razon de la eliminacion" disabled pattern=".{15,}" required title="explique con mas de 15 letras por que desea la eliminar el evento"></input>
              </div>
            </div>

            <div class="form-group">
              <div class="col-sm-offset-2 col-sm-10">
                <div class="checkbox">Seleccione una opcion <br/>
                  <label class="text-danger"><input name="checkbox" type="checkbox" id="checkboxeditar" value="checkbox" onclick="activarcasilla(this)"> Editar Evento</label>&nbsp;&nbsp;&nbsp;&nbsp;<label class="text-danger">
    						  </div>
    						</div>
    					</div>

    				  <input type="hidden" name="id" class="form-control" id="id">
    				
    			  </div>

    			  <div class="modal-footer">
    				<button type="button" class="btn btn-danger" data-dismiss="modal">Cerrar</button>
    				<button  id="btsubmit" type="submit" class="btn btn-primary" disabled>Guardar</button>
    			  </div>
    			</form>
    			</div>
    		  </div>
    		</div>
    
        </div>
        <!-- /.container -->
    
    
        <!-- Bootstrap Core JavaScript -->
        <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/js/bootstrap.min.js"></script>
    	
    	<!-- FullCalendar -->
    	<script src='https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js'></script>
    	<script src='https://cdnjs.cloudflare.com/ajax/libs/fullcalendar/3.9.0/fullcalendar.min.js'></script>
    	<script src='https://cdnjs.cloudflare.com/ajax/libs/fullcalendar/4.0.0-alpha/locale/es.js'></script>
    
asked by Juan Ortiz 04.07.2018 в 19:58
source

4 answers

1

What you need to do is something similar to what Alfredo Cebrián says in his answer and also similar to what which is suggested in this English site response : the idea is when you select a date, check the date with the day today and only show the modal if it is greater than today (ie it is in the future).

I have modified the following part of your code (changing the format of FullCalendar for the moment.js that you have in your code, because it gives me less problems with the dates):

  select: function(start, end) {

      // leemos las fechas de inicio de evento y hoy
      var check = moment(start).format('YYYY-MM-DD');
      var today = moment(new Date()).format('YYYY-MM-DD');

      // si el inicio de evento ocurre hoy o en el futuro mostramos el modal
      if (check >= today) {

          // éste es el código que tenías originalmente en el select
          $('#ModalAdd #start').val(moment(start).format('YYYY-MM-DD'));
          $('#ModalAdd #end').val(moment(end).format('YYYY-MM-DD'));
          $('#ModalAdd').modal('show');
      }
      // si no, mostramos una alerta de error
      else {
          alert("No se pueden crear eventos en el pasado!");
      }
  },

Here you can see it working based on your code (test by clicking on a date from the past and another from the future):

$(document).ready(function() {

  $('#checkboxeditar').click(function() { // este es el modal? no , esto es un checkbox que habilita/deshabilita campos 
    if ($(this).is(':checked')) {
      document.getElementById("razondeeliminacion").checked = false
      $('.titulo').removeAttr('disabled');
      $('.importancia').removeAttr('disabled');
      $('.lugar').removeAttr('disabled');
      $('.motivo').removeAttr('disabled');
      $('.fuente').removeAttr('disabled');
      $('.hora').removeAttr('disabled');
      $('.fotografo').removeAttr('disabled');
      $('.descripcion').removeAttr('disabled');
      $('.tipo').removeAttr('disabled');
      $('.periodista').removeAttr('disabled');
      $('.etiquetas').removeAttr('disabled');
      $('.razonmodificacion').removeAttr('disabled');
      $('#btsubmit').removeAttr('disabled');

    } else {
      $('.titulo').attr('disabled', 'disabled');
      $('.importancia').attr('disabled', 'disabled');
      $('.lugar').attr('disabled', 'disabled');
      $('.motivo').attr('disabled', 'disabled');
      $('.fuente').attr('disabled', 'disabled');
      $('.hora').attr('disabled', 'disabled');
      $('.fotografo').attr('disabled', 'disabled');
      $('.descripcion').attr('disabled', 'disabled');
      $('.tipo').attr('disabled', 'disabled');
      $('.periodista').attr('disabled', 'disabled');
      $('.etiquetas').attr('disabled', 'disabled');
      $('.razonmodificacion').attr('disabled', 'disabled');
    }
  });

  var date = new Date();
  var yyyy = date.getFullYear().toString();
  var mm = (date.getMonth() + 1).toString().length == 1 ? "0" + (date.getMonth() + 1).toString() : (date.getMonth() + 1).toString();
  var dd = (date.getDate()).toString().length == 1 ? "0" + (date.getDate()).toString() : (date.getDate()).toString();

  $('#calendar').fullCalendar({

    header: {
      language: 'es',
      left: 'prev,next today',
      center: 'title',
      right: 'month,basicWeek,basicDay',
    },
    defaultDate: yyyy + "-" + mm + "-" + dd,
    editable: true,
    eventLimit: true, // allow "more" link when too many events
    selectable: true,
    selectHelper: true,

    select: function(start, end) {

      // leemos las fechas de inicio de evento y hoy
      var check = moment(start).format('YYYY-MM-DD');
      var today = moment(new Date()).format('YYYY-MM-DD');
      
      // si el inicio de evento ocurre hoy o en el futuro mostramos el modal
      if (check >= today) {
        $('#ModalAdd #start').val(moment(start).format('YYYY-MM-DD'));
        $('#ModalAdd #end').val(moment(end).format('YYYY-MM-DD'));
        $('#ModalAdd').modal('show');
      }
      // si no, mostramos una alerta de error
      else {
        alert("No se pueden crear eventos en el pasado!");
      }
    },
    eventRender: function(event, element) {
      element.bind('dblclick', function() {
        $('#ModalEdit #id').val(event.id);
        $('#ModalEdit #title').val(event.title);
        $('#ModalEdit #color').val(event.color);
        $('#ModalEdit').modal('show');
        /*
    					$('[name="title"]').val(event.title);
    					$('[name="lugar"]').val(event.lugar);
                        $('[name="motivo"]').val(event.motivo);
                        $('[name="fuente"]').val(event.fuente);
                        $('[name="tipo"]').val(event.tipo);
                        $('[name="hora"]').val(event.hora);
                        $('[name="fotografo"]').val(event.fotografo);
                        $('[name="descripcion"]').val(event.descripcion);
                        $('[name="reportero"]').val(event.reportero);
                        $('[name="etiquetas"]').val(event.etiquetas);
    					*/
        var form = hanyerck || $('#hanyerck')[0];
        var keys = Object.keys(event);
        while (key = keys.shift()) {
          //console.log(key);
          try {
            var input = form.querySelector('input[name="' + key + '"],select[name="' + key + '"],textarea[name="' + key + '"]');
            console.log(key, event[key], input);
            if (input.nodeName == 'SELECT') {
              var option = input.querySelector('[value="' + event[key] + '"]');
              if (option != null) {
                console.log('selcet====================================');
                //$(input).find('option').removeAttr('selected');
                //$(option).attr('selected','selected').click();
                option.setAttribute('selected', 'selected');
                // creo que era haci. :) veamos xD
              }
            } else {
              input.value = event[key];
            }
          } catch (e) {}
        }

        //console.log(event);
      });
    },
    eventDrop: function(event, delta, revertFunc) { // si changement de position

      edit(event);

    },
    eventResize: function(event, dayDelta, minuteDelta, revertFunc) { // si changement de longueur

      edit(event);

    },
    events: [{
        id: '1',
        title: 'Titulo 1',
        start: '2018-07-01 07:00:00',
        end: '2018-07-01 09:00:00',
        color: '#beeeef',
        lugar: 'Lugar 1',
        motivo: 'Motivo 1',
        fuente: 'Fuente 1',
        tipo: 'Tipo 1',
        hora: '07:00',
        fotografo: 'Fotografo 1',
        descripcion: 'Descripcion 1',
        reportero: 'Reportero 1',
        etiquetas: 'etiqueta1',
        razonmodificacion: 'Razon 1',
      },
      {
        id: '1',
        title: 'Titulo 2',
        start: '2018-07-10 09:00:00',
        end: '2018-07-10 11:00:00',
        color: '#ffbbee',
        lugar: 'Lugar 2',
        motivo: 'Motivo 2',
        fuente: 'Fuente 2',
        tipo: 'Tipo 2',
        hora: '09:00',
        fotografo: 'Fotografo 2',
        descripcion: 'Descripcion 2',
        reportero: 'Reportero 2',
        etiquetas: 'etiqueta2',
        razonmodificacion: 'Razon 2',
      }
    ]
  });
  //funcion para mover eventos y cambiarlos de fecha
  function edit(event) {
    start = event.start.format('YYYY-MM-DD ');
    if (event.end) {
      end = event.end.format('YYYY-MM-DD ');
    } else {
      end = start;
    }

    id = event.id;

    Event = [];
    Event[0] = id;
    Event[1] = start;
    Event[2] = end;
    //console.log(event,Event);
    $.ajax({
      url: 'editEventDate.php',
      type: "POST",
      data: {
        Event: Event,
        title: event.title
      },
      success: function(rep) {
        if (rep == 'OK') {
          swal({
            position: 'top-end',
            type: 'success',
            title: 'Se ha modificado el dia del evento de forma exitosa',
            showConfirmButton: false,
            timer: 1500
          });
        } else {
          swal({
            type: 'error',
            title: 'Algo salio mal...',
            html: '<i class="fa fa-phone"></i>  <i class="fa fa-whatsapp"></i>   04162910634  '
          });
        }
      }
    });
  }
});

function mayus(texto) {
  let val = texto.value
  let result = val.split(' ').map(item => !item.startsWith('#') && item != '' ? '#' + item : item)
  texto.value = result.join(' ')
}
.fa-facebook,
.fa-facebook-square {
  color: #3b5998
}

.fa-twitter,
.fa-twitter-square {
  color: #00aced
}

.fa-google-plus,
.fa-google-plus-square {
  color: #dd4b39
}

.fa-youtube,
.fa-youtube-play,
.fa-youtube-square {
  color: #bb0000
}

.fa-tumblr,
.fa-tumblr-square {
  color: #32506d
}

.fa-vine {
  color: #00bf8f
}

.fa-flickr {
  color: #ff0084
}

.fa-vimeo-square {
  color: #aad450
}

.fa-pinterest,
.fa-pinterest-square {
  color: #cb2027
}

.fa-linkedin,
.fa-linkedin-square {
  color: #007bb6
}

.fa-instagram {
  #color: #517fa4;
}

.fa-spotify {
  color: #1ED760;
}

#notification-icon {}

body {
  padding-top: 10px;
  background-repeat: no-repeat;
  background-position: center;
  background-image: url(http://prensaalcaldiadearismendi.epizy.com/img/imagendefondo.jpg);
}

#calendar {
  max-width: 940px;
}

.col-centered {
  float: none;
  margin: 0 auto;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css" rel="stylesheet">
<link href='https://cdnjs.cloudflare.com/ajax/libs/fullcalendar/3.9.0/fullcalendar.min.css' rel='stylesheet' />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">



<!-- Page Content -->


<div class="container">

  <div class="row">
    <div class="col-lg-12 text-center">
      <h1>Calendario de actividades</h1>
      <div id="calendar" class="col-centered">
      </div>
    </div>
  </div>
  <!-- /.row -->
  <!--notification -->

  <!-- Modal -->
  <div class="modal fade" id="ModalAdd" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
    <div class="modal-dialog modal-lg" role="document">
      <div class="modal-content">

        <form class="form-horizontal" method="POST" action="addEvent.php">
          <!-- este es para agregar los eventos , mas abajo esta el de editarlos -->
          <div class="modal-header">
            <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
            <h3 class="modal-title" id="myModalLabel">Nuevo evento
              <div align="center"><span class="fa fa-3x fa-facebook-square"></span><span class="fa fa-3x fa-twitter-square"></span><span class="fa fa-3x fa-google-plus-square"></span><span class="fa fa-3x fa-youtube-square"></span><span class="fa fa-3x fa-tumblr-square"></span></span>
                <span class="fa fa-3x fa-vimeo-square"></span>
                </span><span class="fa fa-3x fa-pinterest-square"></span><span class="fa fa-3x fa-linkedin-square"></span><span class="fa fa-3x fa-instagram"></span></div>
            </h3>
          </div>
          <div class="modal-body">

            <div class="form-group">
              <label for="title" class="col-sm-2 control-label">Título</label>
              <div class="col-sm-10">
                <input type="text" name="title" class="form-control" id="title" placeholder="Debe ser corto" required>
              </div>
            </div>
            <div class="form-group">
              <label for="color" class="col-sm-2 control-label">Importancia</label>
              <div class="col-sm-10">
                <select name="color" class="form-control" id="color" required>
                  <option value="">SELECCIONE</option>
                  <option style="color:#000;" value="#000">&#9724; SIN TRASCENDENCIA</option>
                  <option style="color:#008000;" value="#008000">&#9724; IMPORTANTE</option>
                  <option style="color:#FF0000;" value="#FF0000">&#9724; ULTIMA HORA</option>
                  <option style="color:#40E0D0;" value="#40E0D0">&#9724; EFEMERIDES</option>
                  <option style="color:#FFD700;" value="#FFD700">&#9724; OTROS</option>

                </select>
              </div>
            </div>
            <div class="form-group">
              <label for="start" class="col-sm-2 control-label">Fecha Inicial</label>
              <div class="col-sm-10">
                <input type="text" name="start" class="form-control" id="start" readonly>
              </div>
            </div>
            <div class="form-group">
              <label for="end" class="col-sm-2 control-label">Fecha Final</label>
              <div class="col-sm-10">
                <input type="text" name="end" class="form-control" id="end" readonly>
              </div>
            </div>

            <div class="form-group">
              <label for="lugar" class="col-sm-2 control-label">Lugar</label>
              <div class="col-sm-10">
                <input type="text" name="lugar" class="form-control" id="lugar" placeholder="lugar del acontecimiento" required>
              </div>
            </div>


            <div class="form-group">
              <label for="motivo" class="col-sm-2 control-label">Motivo</label>
              <div class="col-sm-10">
                <input type="text" name="motivo" class="form-control" id="motivo" placeholder="motivo" required>
              </div>
            </div>

            <div class="form-group">
              <label for="fuente" class="col-sm-2 control-label">Fuente</label>
              <div class="col-sm-10">
                <input type="text" name="fuente" class="form-control" id="fuente" placeholder="fuente" required>
              </div>
            </div>

            <div class="form-group">
              <label for="hora" class="col-sm-2 control-label">Hora</label>
              <div class="col-sm-10">
                <input type="time" name="hora" class="form-control" id="hora" placeholder="hora del suceso" required>
              </div>
            </div>


            <div class="form-group">
              <label for="fotografo" class="col-sm-2 control-label">Fotógrafo</label>
              <div class="col-sm-10">
                <select name="fotografo" class="form-control" id="fotografo" required>
                  <option value="">SELECCIONE</option>
                  <option value="ANMAIRYS SALAZAR">&#9724; ANMAIRYS SALAZAR</option>
                  <option value="JOSE AGREDAS">&#9724; JOSE AGREDAS</option>
                  <option value="AMBOS">&#9724; TODO EL EQUIPO</option>


                </select>
              </div>
            </div>

            <div class="form-group">
              <label for="descripcion" class="col-sm-2 control-label">Descripción</label>
              <div class="col-sm-10">
                <textarea name="descripcion" class="form-control" id="descripcion" placeholder="describa el suceso con detalles" required></textarea>
              </div>
            </div>


            <div class="form-group">
              <label for="tipo" class="col-sm-2 control-label">Tipo</label>
              <div class="col-sm-10">
                <select name="tipo" class="form-control" id="tipo" required>
                  <option value="">SELECCIONE</option>
                  <option value="ECONOMIA">&#9724; ECONOMIA</option>
                  <option value="CULTURA">&#9724; CULTURA</option>
                  <option value="SOCIEDAD">&#9724; SOCIEDAD</option>
                  <option value="OTROS">&#9724; OTROS</option>

                </select>
              </div>
            </div>

            <div class="form-group">
              <label for="reportero" class="col-sm-2 control-label">Periodista</label>
              <div class="col-sm-10">
                <select name="reportero" class="form-control" id="reportero" required>
                  <option value="">SELECCIONE</option>
                  <option value="EVELYN CHAVEZ">&#9724; EVELYN CHAVEZ</option>
                </select>
              </div>
            </div>

            <div class="form-group">
              <label for="etiquetas" class="col-sm-2 control-label">Etiquetas</label>
              <div class="col-sm-10">
                <textarea name="etiquetas" class="form-control" id="etiquetas" placeholder="escriba y separe con espacio las etiquetas a usar" required onkeyup="mayus(this);" style="color: blue;"></textarea>
              </div>
            </div>




          </div>
          <div class="modal-footer">
            <button type="button" class="btn btn-info" data-dismiss="modal">Cerrar</button>
            <button type="submit" class="btn btn-primary">Guardar</button>
          </div>
        </form>
      </div>
    </div>
  </div>







  <!-- Modal -->
  <div class="modal fade" id="ModalEdit" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
    <div class="modal-dialog modal-lg" role="document">
      <div class="modal-content">
        <form id="hanyerck" class="form-horizontal" method="POST" action="editEventTitle.php">
          <div class="modal-header">
            <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
            <h4 class="modal-title" id="myModalLabel">Ver/Modificar Evento</h4>
          </div>
          <div class="modal-body">

            <div class="form-group">
              <label for="title" class="col-sm-2 control-label">Título</label>
              <div class="col-sm-10">
                <input type="text" name="title" class="form-control titulo" placeholder="Titulo" disabled>
              </div>
            </div>
            <div class="form-group">
              <label for="color" class="col-sm-2 control-label">Importancia</label>
              <div class="col-sm-10">
                <select name="color" class="form-control importancia" id="color" disabled>
                  <option value="">SELECCIONAR</option>
                  <option style="color:#000;" value="#000">&#9724; SIN TRASCENDENCIA</option>
                  <option style="color:#008000;" value="#008000">&#9724; IMPORTANTE</option>
                  <option style="color:#FF0000;" value="#FF0000">&#9724; ULTIMA HORA</option>
                  <option style="color:#40E0D0;" value="#40E0D0">&#9724; EFEMERIDES</option>
                  <option style="color:#FFD700;" value="#FFD700">&#9724; OTROS</option>


                </select>
              </div>
            </div>

            <div class="form-group">
              <label for="lugar" class="col-sm-2 control-label">Lugar</label>
              <div class="col-sm-10">
                <input type="text" name="lugar" class="form-control lugar" id="lugar" placeholder="lugar del acontecimiento" disabled>
              </div>
            </div>

            <div class="form-group">
              <label for="motivo" class="col-sm-2 control-label">Motivo</label>
              <div class="col-sm-10">
                <input type="text" name="motivo" class="form-control motivo" id="motivo" placeholder="motivo" disabled>
              </div>
            </div>

            <div class="form-group">
              <label for="fuente" class="col-sm-2 control-label">Fuente</label>
              <div class="col-sm-10">
                <input type="text" name="fuente" class="form-control fuente" id="fuente" placeholder="fuente" disabled>
              </div>
            </div>

            <div class="form-group">
              <label for="hora" class="col-sm-2 control-label">Hora</label>
              <div class="col-sm-10">
                <input type="time" name="hora" class="form-control hora" id="hora" placeholder="hora del suceso" disabled>
              </div>
            </div>

            <div class="form-group">
              <label for="fotografo" class="col-sm-2 control-label">Fotógrafo</label>
              <div class="col-sm-10">
                <select name="fotografo" class="form-control fotografo" id="fotografo" disabled>
                  <option value="">SELECCIONE</option>
                  <option value="ANMAIRYS SALAZAR">&#9724; ANMAIRYS SALAZAR</option>
                  <option value="JOSE AGREDAS">&#9724; JOSE AGREDAS</option>
                  <option value="AMBOS">&#9724; AMBOS</option>

                </select>
              </div>
            </div>

            <div class="form-group">
              <label for="descripcion" class="col-sm-2 control-label">Descripción</label>
              <div class="col-sm-10">
                <textarea name="descripcion" class="form-control descripcion" id="descripcion" placeholder="describa el suceso" disabled></textarea>
              </div>
            </div>


            <div class="form-group">
              <label for="tipo" class="col-sm-2 control-label">Tipo</label>
              <div class="col-sm-10">
                <select name="tipo" class="form-control tipo" id="tipo" disabled>
                  <option value="">SELECCIONE</option>
                  <option value="ECONOMIA">&#9724; ECONOMIA</option>
                  <option value="CULTURA">&#9724; CULTURA</option>
                  <option value="SOCIEDAD">&#9724; SOCIEDAD</option>
                  <option value="OTROS">&#9724; OTROS</option>

                </select>
              </div>
            </div>

            <div class="form-group">
              <label for="reportero" class="col-sm-2 control-label">Periodista</label>
              <div class="col-sm-10">
                <select name="reportero" class="form-control periodista" id="reportero" disabled>
                  <option value="">SELECCIONE</option>
                  <option value="EVELYN CHAVEZ">&#9724; EVELYN CHAVEZ</option>

                </select>
              </div>
            </div>


            <div class="form-group">
              <label for="etiquetas" class="col-sm-2 control-label">Etiquetas</label>
              <div class="col-sm-10">
                <textarea name="etiquetas" class="form-control etiquetas" id="etiquetas" placeholder="escriba y separe con espacio las etiquetas a usar" required onkeyup="mayus(this);" style="color: blue;" disabled></textarea>
              </div>
            </div>

            <div class="form-group">
              <label for="razonmodificacion" class="col-sm-2 control-label">Razon de la modificacion</label>
              <div class="col-sm-10">
                <textarea name="razonmodificacion" class="form-control razonmodificacion" id="razonmodificacion" placeholder="escriba la razon de la modificacion, si aparece algo aqui fue modificado el evento" required disabled></textarea>
              </div>
            </div>


            <div class="form-group" id="razondeeliminacion" hidden="true">
              <label for="razondeeliminacion" class="col-sm-2 control-label">Razon de la eliminacion</label>
              <div class="col-sm-10">
                <input name="razondeeliminacion" class="form-control razondeeliminacion" id="razondeeliminacion" placeholder="escriba la razon de la eliminacion" disabled pattern=".{15,}" required title="explique con mas de 15 letras por que desea la eliminar el evento"></input>
              </div>
            </div>

            <div class="form-group">
              <div class="col-sm-offset-2 col-sm-10">
                <div class="checkbox">Seleccione una opcion <br/>
                  <label class="text-danger"><input name="checkbox" type="checkbox" id="checkboxeditar" value="checkbox" onclick="activarcasilla(this)"> Editar Evento</label>&nbsp;&nbsp;&nbsp;&nbsp;<label class="text-danger">
    						  </div>
    						</div>
    					</div>

    				  <input type="hidden" name="id" class="form-control" id="id">
    				
    			  </div>

    			  <div class="modal-footer">
    				<button type="button" class="btn btn-danger" data-dismiss="modal">Cerrar</button>
    				<button  id="btsubmit" type="submit" class="btn btn-primary" disabled>Guardar</button>
    			  </div>
    			</form>
    			</div>
    		  </div>
    		</div>
    
        </div>
        <!-- /.container -->
    
    
        <!-- Bootstrap Core JavaScript -->
        <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/js/bootstrap.min.js"></script>
    	
    	<!-- FullCalendar -->
    	<script src='https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js'></script>
    	<script src='https://cdnjs.cloudflare.com/ajax/libs/fullcalendar/3.9.0/fullcalendar.min.js'></script>
    	<script src='https://cdnjs.cloudflare.com/ajax/libs/fullcalendar/4.0.0-alpha/locale/es.js'></script>
    
answered by 05.07.2018 / 01:01
source
2

You must add the following in the select function:

 select: function(start, end) {
    var check = $.fullCalendar.formatDate(start,'yyyy-MM-dd');
    var today = $.fullCalendar.formatDate(new Date(),'yyyy-MM-dd');
    if(check < today)
    {
        // Dejar vacio
    }
    else
    {
        $('#ModalAdd #start').val(moment(start).format('YYYY-MM-DD'));
        $('#ModalAdd #end').val(moment(end).format('YYYY-MM-DD'));
        $('#ModalAdd').modal('show');        }
  },
    
answered by 04.07.2018 в 23:17
1

What do you think of this solution? How to block dates in fullcalendar :

dayClick: function(date, allDay, jsEvent, view) 
{
   var myDate = new Date();
   //Cuantos días se agregarán desde hoy?
   var diasAdicionales = 15;
   myDate.setDate(myDate.getDate() + diasAdicionales);
   if (date < myDate) 
   {
      //VERDADERO Hiciste clic en una fecha menor a hoy + diasAdicionales
      alert("No puedes agendar esta fecha!");
   } 
   else 
   {
      //FALSO Hiciste clic en una fecha mayor a la de hoy + diasAdicionales
      alert("Excelente decisión... podemos agendar hoy!!!.");
   }
}

You can also disable the option to display the modal in the select

event
select: function(start, end) {

  $('#ModalAdd #start').val(moment(start).format('YYYY-MM-DD'));
  $('#ModalAdd #end').val(moment(end).format('YYYY-MM-DD'));
  console.log();
  if (Date.parse(end._d) > Date.now())
  {
     $('#ModalAdd').modal('show');
  }
  else
  {
    alert('No se puede agendar esta fecha');
  }

}
    
answered by 05.07.2018 в 00:59
1

If you only want to color past dates:

    /*COLOREAR FECHAS PASADAS*/
    .fc-past {
        background-color: #c94b4b;
    }
    /*FIN COLOREAR FECHAS PASADAS*/

COLORING FUTURE DATES:

    /*COLOREAR FECHAS FUTURAS*/ 
    .fc-future{
        background-color: #fcf8e3;
    }
    /*FIN COLOREAR FECHAS FUTURAS*/ 
    
answered by 20.07.2018 в 17:14