UMA ALTERNATIVA AO USO DAS APPS CALENDÁRIO

Prezados, segue um exemplo bem detalhado de uma alternativa, ao meu ver, ao uso das apps tipo calendário do SC.

Utilizo a mesma biblioteca(fullcalendar), porém utilizando uma app do tipo blank, da seguinte forma:

http://wennys.com.br/sistemas/modelos/fullcalendar/

Observem que dá para personalizar cores, eventos, formato das horas , títulos, limitar horários, desabilitar arrastar e soltar etc…

Postarei em seguida o passo a passo de como fazer e o código completo das aplicações.

Espero que ajude aos colegas.

Wennys Carlos

Segue código comentado da app blank:

echo "”;

echo “”; //drag and drop

echo “”;

echo “”;
?>

body { margin-top: 40px; text-align: center; font-size: 14px; font-family: Helvetica,Arial,Verdana,sans-serif; } #calendar { width: 1000px; margin: 0 auto; }
<?php

Wennys, o resultado ficou muito bom mesmo vou testar o código. Muito obrigado e parabéns.

Obrigado, Paulo.

A ideia é ajudar.

Tô comentando o código do arquivo que retorna o json para publicar.

Wennys

Wennys, o json.php
é mais ou menos assim em uma blank ou você usa as macros do scriptcase para a consulta:

<?php $json = array(); $requete = "SELECT * FROM eventos ORDER BY id"; // connection to the database try { $bdd = new PDO('mysql:host=localhost;dbname=fullcalendar', 'root', 'root'); } catch(Exception $e) { exit('Unable to connect to database.'); } // Execute the query $resultat = $bdd->query($requete) or die(print_r($bdd->errorInfo())); // sending the encoded result to success page echo json_encode($resultat->fetchAll(PDO::FETCH_ASSOC)); ?>

//CÓDIGO DO ARQUIVO QUE GERA O JSON:
//APP DO TIPO BLANK:

sc_lookup(ds , “SELECT idevento , descricao , data , horainicio , horafim , status FROM evento”);

for($i = 0 ; $i < count({ds}) ; $i++){

$idevento = {ds[$i][0]};
	
$descricao = {ds[$i][1]};
	
$data = {ds[$i][2]};
	
$horainicio = {ds[$i][3]};
	
$horafim = {ds[$i][4]};
	
$status = {ds[$i][5]};
	
switch($status){
	
	case 'confirmado': $color = 'green';
	
	break;

	case 'aguardando' : $color = 'blue';

	break;
	
	case 'cancelado': $color = 'red';
	
	break;

}		

$resultado[] = array(
					'id'     => $idevento ,
					'title'  => utf8_encode($descricao) ,
					'start'  => $data . " " . $horainicio ,
					'end'    => $data . " " . $horafim,
					'allDay' => false,
					'color'  => $color
				);

}

echo json_encode( $resultado);

Beleza vou esperar o seu código do arquivo json. O form_eventos é um form normal né? Ai a variável diaClicado você pega no form_evento como variável global de entrada?

Exato, Paulo.

form_evento é uma app do tipo form onde recebe [diaClicado].

Fiz apenas umas personalizações nela pra poder dar o efeito de atualizar o calendário embaixo qdo um evento é criado ou editado.

Wennys

Parabéns pela colaboração,

Tem 5 eventos cadastrados no Domingo 1/12 e só 4 são exibidos, como faço para corrigir?

Desculpa, esta correto, eu que não recarreguei a página.

Olá, George.

É que, para efeito de demonstração, restringi o horário do calendário no modo SEMANA para os horários entre 08:00 e 20:00.

Por isso não aparecia o 4º evento do dia, que era 21;00.

Agora coloquei de 08:00 as 22:00 e aparece normalmente.

minTime: 8 , /LIMITA O INICIO DO HORARIO A SER MOTRADO A 08:00 (0 a 23)/

maxTime: 23 , /LIMITA O FIM DO HORARIO A SER MOTRADO A 20:00 (0 a 23)/

Wennys

Parabéns, perfeito.

Obrigado, pode apagar o meu teste.

Wennys,

Estou cancelando o evento TESTE e não acontece nada, verifica aí por favor.

Corrigido, George.

Havia realmente um pequeno bug.

Wennys

Mas o bug está nestes códigos disponibilizados ou no form_eventos?

Por causa de algumas limitações, programei para atualizar o calendário ao clicar no botão Fechar, da barra de ferramentas superior, logo que um evento é atualizado ou inserido.

Minha ideia era utilizar o fechamento automático após a inserção ou atualização, mas há um bug ou uma limitação no SC que não permitiu isso.

Wennys

O ‘bug’ ou limitação é no form_evento.

Quando uso um botão javascript para fazer o seguinte:

nm_atualiza(‘alterar’);

window.parent.location.reload(); //para recarregar o calendario

Isso só funciona às vezes.

A opção de usar um botão javascript é pq não dá pra utilizar código javascript nos eventos onvalidate, onvalidatesucess etc…

por exemplo:

echo “”; //nao funciona nos eventos

Moral da história:

Como não deu certo nenhuma das 2 opções, utilizo mesmo os botões Incluir e Alterar do form e criei o botão javascript Fechar para recarregar o calendário e fechar a modal.

Wennys

Wennys, sem querer abusar da sua generosidade em compartilhar este conhecimento conosco, o meu não está funcionando, veja abaixoo create da tabela e o json que ele retornoou

Json:
[{“id”:“1”,“title”:“teste”,“start”:“2013-12-12 00:00:00.000 2013-12-12 09:00:00.000”,“end”:“2013-12-12 00:00:00.000 1900-01-01 10:00:00.000”,“allDay”:false,“color”:“green”}]

SQL:
create table tbl_teste_eventos(
idevento int identity(1,1) Primary Key,
descricao varchar(255) not null,
data_evento datetime,
horainicio datetime,
horafim datetime,
status varchar(30)

)

Wennys deu certo mudei só os tipos de dados e funcionou.