Solução: Impedir Alteração de Data. (Movimentação do evento)

Boa tarde pessoal, estava com um problemão, e, provavelmente alguns ainda estão!

Como o assunto diz, a aplicação de calendário ainda tem um defeitinho de não conseguir impedir a alteração da data (movimentando do evento pela agenda).
Este problema tinha sido um obstáculo para que eu fizesse uma agenda coorporativa aqui na empresa onde trabalho. Pois apenas alguns poderiam cadastrar eventos e o restante iria apenas visualizar os mesmos sem que façam alteração.

Encontrei uma solução para isso, claro que muito engessada. Mass deu para quebrar um galho por enquanto! E vou compartilhar isso com vocês.

1º fiz uma cópia da aplicação de calendário que eu já tinha funcionando padrão.
2º criei um novo login no DB tendo apenas acesso Reader nas tabelas…
3º fiz uma nova conexão de banco de dados no scriptcase com este login que criei.
4º deixei a cópia do calendário com essa nova conexão, e cetei readonly para todos os campos.

Desta forma, temos um calendário podendo cadastrar eventos e outro que apenas lendo os eventos. Ai foi só fazer um IF de acordo com o usuário e ver qual apresentar para o usuário!

Único detalhe, que particularmente achei legal… foi que quando a pessoa ta na aplicacao reader, ela move os eventos e tal… mas quando volta para a aplicação(atualizar), os eventos continuam no mesmo local de antes.

Bom, é isso pessoal…
Qualquer coisa estou a disposição.
Meu email é alexandre@tarjab.com.br

Abraços.

Alexandre Cumino

Pessoal, vou postar aqui parte de um post que fiz em outro tópico. Espero contribuir!

ATENÇÃO: Estou modificando este post pois encontrei uma coisa interessante na net:
Este site tem o FullCalendar, que usa jQuery e é a base do calendário do ScriptCase: http://arshaw.com/fullcalendar/

Acontece que quem desenvolveu o FullCalendar aprimorou ele depois da NM ter utilizado e achei pelo menos 3 exemplos nesse site que valem a pena dar uma olhada:
1 - http://arshaw.com/js/fullcalendar-1.6.1/demos/json.html - neste quando faz-se o arrastar e soltar ele chama um evento alert javascript (pode ser usado para verificar permissão de gravação, por exemplo).

2 - http://arshaw.com/js/fullcalendar-1.6.1/demos/theme.html - este tem um design mais interessante, com cores mais vivas.

3 - http://arshaw.com/js/fullcalendar-1.6.1/demos/external-dragging.html - este adicionou a funcionalidade de arrastar eventos externos para dentro do calendário.

A versão que o SC usa desse calendário é a 1.4.4. A versão atual no site é a 1.6.1. Baixei a versão atual e substituí na pasta ‘_lib\prod\third\jquery_plugin\fullcalendar’ e os eventos de dezembro apareceram. Recomendo fazerem um backup dos arquivos originais do SC antes.

Nos exemplos que baixei inclusive tem um que é apenas para visualização. O html que chama as funções jQuery (gcal.html e default.html) seta uma variável ‘editable: false’. Bem que o SC poderia utilizar essa variável para adicionar a funcionalidade de permissão de gravação.

Se alguém conseguir algo, posta aqui pra galera!

Valeu!

Muito boa sua contribuição, parabéns.

Obrigado George!

Só tive que modificar um pouco o css da versão 1.5.2 pois tem um fundo azul muito forte. Procurei deixar mais parecido com o estilo da versão 1.4.4.

Segue o CSS que alterei onde as marcações que criei/alterei tem o comentário /* WEBER */ em cima:

http://www.mafra-alves.com.br/scj/sc/_lib/prod/third/jquery_plugin/fullcalendar/fullcalendar.css

RESOLVIDO

Pessoal, enquanto a NM não altera o SC colocando uma flag ou algo do tipo que nos permita criar agendas editáveis ou não, dependendo de variáveis que podem mudar em tempo de execução (nivel de acesso do usuário logado, por exemplo), consegui uma solução para o caso. O problema é que esta solução envolve alterar código fonte gerado pelo SC, ou seja, sempre que a aplicação for gerada novamente, as alterações terão que ser refeitas. Aí vão os passos a seguir:

1 - Para desabilitar o recurso arrastar e soltar:
1.1 - Abra no editor que achar melhor o arquivo que tem a terminação “_apl.php” dentro da pasta da sua aplicação de calendário. No meu caso: “calendario_agenda_apl.php”.
1.2 - Localize a ocorrência do texto “editable: true” no código fonte. Esta é a parte do código que contém a chamada jQuery para a agenda visual. Todos os parâmetros são passados aqui, inclusive se a agenda é editável ou não.
1.3 - Mude a propriedade para “editable: false”. Pronto! Sua agenda está com o recurso arrastar e soltar (inclusive redimensionar eventos) desabilitado.
1.4 - No meu caso, a agenda deve estar habilitada para determinados usuários e somente leitura para outros, portanto utilizei o seguinte trecho de código:

[code]<?php
if ($_SESSION[‘nivelAcesso’] == “Cliente” OR $_SESSION[‘nivelAcesso’] == “Secretário”)
{
?>
editable: false,

<?php } else { ?>

editable: true,

<?php } ?>

[/code]

2 - Para desabilitar os botões de inserir, atualizar e excluir do formulário da agenda:
2.1 - no evento onLoad da aplicação agenda no SC utilizei o seguinte código:

if ([nivelAcesso] == "Cliente" OR [nivelAcesso] == "Secretário") { sc_btn_display("delete", "off"); sc_btn_display("update", "off"); sc_btn_display("insert", "off"); }

Espero que aproveitem!

Senhores, boa tarde.
Eu baixei a versão atual do fullcalendar e imaginei que iria ter acesso a parâmetros e funções novas.
Como faço para ter acesso às facilidades da nova versão do fullcalendar.

Outro ponto, alguém já tentou integrar/incluir/excluir/atualizar-agenda com o Zimbra ou email server?

Agradeço apoio.