Tutorial: Calendário Com Botão de Impressão e Cores de Eventos Baseados no Dia

Neste exemplo veremos como inserir o botão de impressão na aplicação de Calendario, e também exemplificaremos a funcionalidade automática de cores para eventos do passado, presente e futuro.

Criando a aplicação

1. A tabela que será utilizada para a execução do calendário será a tabela “events”.

CREATE TABLE `events` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`title` VARCHAR(64) DEFAULT NULL,
`description` VARCHAR(128) DEFAULT NULL,
`start_date` DATE DEFAULT NULL,
`start_time` TIME DEFAULT NULL,
`end_date` DATE DEFAULT NULL,
`end_time` TIME DEFAULT NULL,
`recurrent` VARCHAR(1) DEFAULT NULL,
`period` VARCHAR(1) DEFAULT NULL,
`users` VARCHAR(10) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8;

2. Selecione os campos da tabela que serão usados na aplicação.

Itens com * são obrigatórios para criar a aplicação. Os outros campos apenas são usados para informações adicionais da agenda.

Opções

  • Id: Usado para identificar o registro, selecione o campo de chave primária dessa tabela. (Int (11))
  • Título: Usado para armazenar o assunto de cada atividade que será exibido na aplicação. ((Varchar (50))
  • Data de início: Será gravado a data de início da atividade. * (Date ou datetime)
  • Hora de início: Será gravado a hora de início da atividade. * (Date ou datetime)
  • Data de término: Será gravado a data de término da atividade. * (Date ou datetime)
  • Hora de término: Será gravado a hora de término da atividade. * (Date ou datetime)
  • Recorrência: Usado para afirmar se o evento se repetirá em um mês, semana ou dia. (Int) (1)
  • Período:Usado para afirmar o tipo de reptição da recorrência: mês, semana ou dia. (Int) (1)

Obs: Se você tem um campo do tipo datetime na base de dados, você pode relacionar as opções data e hora utilizando o mesmo campo datetime da base de dados. A aplicação pegará os dois valores e concatenar-los-á antes de salvar no banco de dados.

Inserindo o botão de Impressão

3. Acesse o item “Impressão” no menu da aplicação.

4. Ative a opção “Mostrar botão Imprimir”.

Criando uma função para exemplificar o recurso de cores nos eventos

Para demonstrar este recurso, criaremos uma função php para inserir, automaticamente, registros nas datas de hoje, ontem e amanhã, toda vez que a aplicação for executada.

5. Primeiramente vamos criar a função PHP acessando, no menu da aplicação, o item “Programação >> Métodos PHP >> Novo Método”.

6. O nome do método será “check_date” e possuirá o seguinte código:

 // Always insert record for TODAY, YESTERDAY and TOMORROW!
 
//$ontem = (date("Y")). "-" . (date("m")). "-" . (date("d") - 1);
 $hoje = date("Y-m-d");
 $ontem = date('Y-m-d', strtotime("-1 day",strtotime($hoje)));
 $amanha = date('Y-m-d', strtotime("+1 day",strtotime($hoje)));
 
// This macro will protect the value passed as paramenter according with the used database.
 $ontem = sc_sql_protect($ontem, "date");
 $hoje = sc_sql_protect($hoje, "date");
 $amanha = sc_sql_protect($amanha, "date");
 // Capturing value to check.
 if($hoje==1){
 
}
 sc_lookup(yesterday,"select count(*) from events where start_date = $ontem");
 sc_lookup(today,"select count(*) from events where start_date = $hoje");
 sc_lookup(tomorrow,"select count(*) from events where start_date = $amanha");
 
// Insert Record event has nothing yesterday.
 if(empty({yesterday[0][0]})){
 
if($this->Ini->nm_tpbanco == 'pdo_sqlsrv') {
 
sc_exec_sql("
 SET DATEFORMAT ymd;
 insert into events (title,description,start_date,start_time,end_date,end_time,recurrent,period,users)
 values
 ('Event','Description',$ontem,NULL,$ontem,NULL,'N','D','')");
 
} else {
 
sc_exec_sql("
 insert into events (title,description,start_date,start_time,end_date,end_time,recurrent,period,users)
 values
 ('Event','Description',$ontem,NULL,$ontem,NULL,'N','D','')");
 
}
 }
 // Insert Record event has nothing today.
 if(empty({today[0][0]})){
 
if($this->Ini->nm_tpbanco == 'pdo_sqlsrv') {
 
sc_exec_sql("
 SET DATEFORMAT ymd;
 insert into events (title,description,start_date,start_time,end_date,end_time,recurrent,period,users)
 values
 ('Event','Description',$hoje,NULL,$hoje,NULL,'N','D','')");
 
} else {
 
sc_exec_sql("
 insert into events (title,description,start_date,start_time,end_date,end_time,recurrent,period,users)
 values
 ('Event','Description',$hoje,NULL,$hoje,NULL,'N','D','')");
 
}
 }
 // Insert Record event has nothing today.
 if(empty({tomorrow[0][0]})){
 
if($this->Ini->nm_tpbanco == 'pdo_sqlsrv') {
 
sc_exec_sql("
 SET DATEFORMAT ymd;
 insert into events (title,description,start_date,start_time,end_date,end_time,recurrent,period,users)
 values
 ('Event','Description',$amanha,NULL,$amanha,NULL,'N','D','')");
 
} else {
 
sc_exec_sql("insert into events (title,description,start_date,start_time,end_date,end_time,recurrent,period,users) values
 ('Event','Description',$amanha,NULL,$amanha,NULL,'N','D','')");
 
}
 
}

7. Em seguida devemos realizar a chamada da função no evento onScriptInit, pois será executado sempre que a aplicação for iniciada.

8. Clique em “Executar aplicação” para gerar os fontes e visualizar a aplicação.

Tutoriais na mesma categoria

Calendário por usuário

1. A tabela que será utilizada para a execução do calendário deve ser criado anteriormente pelo ...

Aplicação Calendário

1. A tabela que será utilizada para a execução do calendário será a tabela "events". CREATE TA...

Comente este post