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);
$ leaf = date("Ymd");
$ ontem = date('Ymd', strtotime("-1 day",strtotimeleaf($)));
$ amanha = date('Ymd', strtotime("+1 day",strtotimeleaf($)));
// This macro will protect the value passed as paramenter according to the used database.
$ ontem = sc_sql_protect($ ontem, "date");
$ leaf = sc_sql_protectleaflet($, "date");
$ amanha = sc_sql_protect($ amanha, "date");
// Capturing value to check.
if($ leaf==1) {
}
sc_lookup(yesterday,"select count (*) from events where start_date = $ ontem");
sc_lookup(today,"select count (*) from events where start_date =leaf $");
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',$ leaf, NULL,$ leaf, 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',$ leaf, NULL,$ leaf, 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.

Comente este post