Diferencia entre revisiones de «Usar fullcalendar.io en KumbiaPHP»

De KumbiaPHP Framework Wiki
(Página creada con «Añadir en la cabecera del template los js del componente y los css: == Cabecera del template == <source lang=php> <script src="http://momentjs.com/downloads/moment.min.js...»)
 
 
(No se muestra una edición intermedia del mismo usuario)
Línea 39: Línea 39:
 
$fin = $_GET["end"];
 
$fin = $_GET["end"];
 
$where = "(publicacion_dt BETWEEN '$inicio' AND '$fin') and estado = 1";
 
$where = "(publicacion_dt BETWEEN '$inicio' AND '$fin') and estado = 1";
$even = array();
+
$eventos = array();
 
foreach ($this->find($where)  as $m){
 
foreach ($this->find($where)  as $m){
 
$aux["title"]= $m->titulo;
 
$aux["title"]= $m->titulo;
 
$aux["start"]= "$m->publicacion_dt";
 
$aux["start"]= "$m->publicacion_dt";
 
$aux["url"]= PUBLIC_PATH."articulos/$m->slug";
 
$aux["url"]= PUBLIC_PATH."articulos/$m->slug";
$even[]= $aux;
+
$eventos[]= $aux;
 
}
 
}
return json_encode($even);
+
return json_encode($eventos);
 
}
 
}
 
</source>
 
</source>
Línea 99: Línea 99:
 
});
 
});
 
</script>
 
</script>
</source>
+
</source>--
 +
[[Usuario:Henrymalas|Henrymalas]] ([[Usuario discusión:Henrymalas|discusión]]) 14:11 4 ene 2016 (CET)

Revisión actual del 11:05 5 ene 2016

Añadir en la cabecera del template los js del componente y los css:

Cabecera del template[editar]

<script src="http://momentjs.com/downloads/moment.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/fullcalendar/2.4.0/fullcalendar.min.js"></script>
<script src="http://fullcalendar.io/js/fullcalendar-2.4.0/lang-all.js"></script>
<link rel="stylesheet" href="http://cdnjs.cloudflare.com/ajax/libs/fullcalendar/2.4.0/fullcalendar.min.css">

Yo uso CDN´s, pero se pueden descargar y poner en el public de tu aplicación.

Controlador[editar]

Luego en el controlador prueba he creado dos acciones (hemeroteca y datosJSON):

	public function datosJson(){
		$articulos = Load::model("articulos");
		echo $articulos->datosJson();
		View::select(null,null);
	}
	
	public function hemeroteca($mes=NULL){		
		if(!$mes){
			$this->mes = date("Y-m-d");
		}else{
			$this->mes = date("Y-").$mes.date("-d");
		}
		$this->eventos =  "'".PUBLIC_PATH."prueba/datosJson'";
	}

Modelo[editar]

En el modelo articulos añadir la acción:

	public function datosJson(){
		$inicio = 	$_GET["start"];
		$fin = 		$_GET["end"];
		$where = "(publicacion_dt BETWEEN '$inicio' AND '$fin') and estado = 1";
		$eventos = array();
		foreach ($this->find($where)  as $m){
			$aux["title"]= $m->titulo;
			$aux["start"]= "$m->publicacion_dt";
			$aux["url"]= PUBLIC_PATH."articulos/$m->slug";				
			$eventos[]= $aux;
		}
		return json_encode($eventos);
	}

Vista[editar]

La vista de hemeroteca es:

	<div class="content">
		<div class="row">
			<div class="col-xs-12">
				<h2>Calendario</h2>
				<?php View::content();?>
				<br>
				<div id="calendar"></div>
			</div>
		</div>
	</div>

<?php View::partial("recursos/calendar",false, array("eventos"=>$eventos,"mes"=>$mes));?>

Partial[editar]

Y el partial:

<?php
if(!isset($eventos))
	$eventos = array();
if(!isset($mes))
	$mes = date("Y-m-d");	
?>
<?php view::partial("recursos/cabeceraCalendar")?>
<script>
	$(document).ready(function() {		
		$('#calendar').fullCalendar({			
			header: {
				center: 'title',
				right: 'month,agendaWeek,agendaDay',
				left: 'prev,next today'
				
			},		
			dayClick: function(date, view) {
				$('#calendar').fullCalendar('changeView', 'agendaDay');
				$('#calendar').fullCalendar('gotoDate', date);
				},	
			defaultDate: '<?php echo $mes;?>',
			editable: false,
			lang: 'es',
			weekNumbers: true,			
			eventLimit: true, // allow "more" link when too many events
			events: <?php echo $eventos;?>
		});		
	});
</script>

--

Henrymalas (discusión) 14:11 4 ene 2016 (CET)