Esta página inicia as discussões sobre a camada AJAX (Javascript e XML) centralizada do Expreso. A proposta inicial (protótipo) possui os seguintes componentes: {{{ expressoAjax.js - Script base coder.js - Contém encode e decode de base64,md5 e url dom.js - Contém manipuladores de objetos na tela (formulários dinâmicos e etc...) dragdrop.js - Manipulador de soltar e arrastar lang.js - Tratamento de internacionalização no js }}} Além disso será ainda implementado: * Janelas * Efeitos em imagens * Abas * Editor de texto (ckeditor) == Como funciona == A idéia é que esta camada seja uma biblioteca ajax completa, como as outras de forma que seja possível utilizá-la em qualquer ambiente até mesmo fora do Expresso. Quando o módulo é carregado, antes da página principal começar a ser processada diversos códigos da API do Egroupware começam a ser executados. Neste ponto é incluído o script base da lib Ajax. Esta base encarrega-se de criar o objeto expresso no escopo do javascript. Para utilizar qualquer um dos componentes ('''que não são carregados automaticamente''') basta executar o script: {{{ expresso.require('coder.js'); // Neste momento é carregado e instanciado o objeto coder que pode ser usado como var codigo = expresso.coder.base64_encode("string"); }}} == Requisições em Background == Esta implementação permite o programador fazer requisições em background {{{ var handler_folders = function (data) { alert(data); }; cExecute ("expressoMail1_2.imap_functions.show_folders", handler_folders); }}} Esta requisição hipotética chamaria show_folders da classe imap_functions no módulo ExpressoMail {{{ expresso.connector.cacheNextRequest(); cExecute ("$this.imap_functions.show_message&uid=100", handler_message_show); }}} Esta requisição chama show_message do módulo corrente, e grava o resultado na memória para as próximas requisições {{{ expresso.connector.cacheNextRequest(1); cExecute ("$this.imap_functions.show_message&uid=100", handler_message_show); }}} A diferença deste exemplo é que a requisição irá expirar. {{{ expresso.connector.purgeCache(); cExecute ("$this.imap_functions.delete_message&uid=100", handler_message_show); }}} Esta requisição chama delete_message do módulo corrente, e apaga os resultados gravados anteriores == Funções == {{{ borkb(size) Retorna no formato kb,mb ou gb um tamanho em bytes Entrada: integer Saída: string url_encode(str) Codifica uma string para ser usada em url Entrada: string Saída: string url_decode(str) Decodifica uma string url Entrada: string Saída: string replaceAll(string, token, newtoken) substitui todas as ocorrências de token por newtoken na string Entrada: string, string, string Saída: string config_events(pObj, pEvent, pHandler) Atribui tratadores aos eventos de elementos da página, por exemplo onclick, onmouseover etc... Entrada: objeto, evento e função Sem saída removeAll(id) Remove todos os elementos da página com atributo id igual "id" Entrada: string Sem saída validateEmail(email) Valida email Entrada: String Saída: Boolean validateDomain(domain) Valida domínio (www.celepar.pr.gov.br) Entrada: string Saída: Boolean validateUrl(url) Valida URL (ftp://celepar.pr.gov.br:500) Entrada: String Saída Boolean trim(inputString) Remove espaços no fim da string Entrada: String Saída: String LTrim(value) remove espaços no começo da string Entrada: String Saída: String add_className(obj, className) Atribui nome de classe a objeto Entrada: Objeto, String Sem saída function remove_className(obj, className) function exist_className(obj, className) function validate_date(date) function get_lang(_key) function showBar() function hideBar() function changeBar() function initBar(val) function zoom_in(id) function zoom_out(id) }}}