countFiles = 1; /* * Método que cria uma nova regra de tamanho máximo de mensagem. */ function create_messages_size() { select_owners = Element('ea_select_owners'); hidden_owners_acl = Element('owners_acls'); for(var i = 0;i < select_owners.options.length; i++){ var user = select_owners.options[i].value; select_owners.options[i].value = user; select_owners.options[i].selected = true; } //hidden_owners_acl.value = admin_connector.serialize(sharemailbox.ownersAcl); cExecuteForm ("$this.bomessages_size.create_rule", document.getElementById('messages_size_form_template'), handler_create_messages_size); hidden_owners_acl.value = ""; } /* * Handlers do método que cria uma nova regra. */ function handler_create_messages_size(data_return) { handler_create_messages_size2(data_return); return; } function handler_create_messages_size2(data_return) { if (!data_return.status) { write_msg(data_return.msg, 'error'); } else { close_lightbox(); write_msg(get_lang('New rule successful created') + '.', 'normal'); history.go(); } } /* * Fim dos processamentos para criar uma nova regra. */ function save_default_max_size(default_max_size) { /* Valida o valor do campo de tamanho padrão */ /* Verifica se não é um número*/ if(isNaN(default_max_size)) { alert(get_lang("Default size must be a number")); return; } /* Verifica se é negativo */ if(default_max_size < 0) { alert(get_lang("Default size can not be negative")); return; } cExecute ('$this.bomessages_size.save_default_rule&default_max_size='+default_max_size, handle_save_default_max_size); } function handle_save_default_max_size(data_return) { if (!data_return.status) { write_msg(data_return.msg, 'error'); } else { //close_lightbox(); write_msg(get_lang('New default value successful created') + '.', 'normal'); history.go(); } } /* * Método que deleta uma regra. */ function delete_messages_size(rule_name) { rule_name = rule_name.replace(/%/g," "); if (!confirm(get_lang('Are you sure that you want to delete this rule') + "?")) return; var handle_delete_messages_size = function(data_return) { if (!data_return.status) { write_msg(data_return.msg, 'error'); } else { write_msg(get_lang('Rule successful deleted') + '.', 'normal'); //get_messages_size(Element('ea_rules_search').value); history.go(); } return; } cExecute ('$this.bomessages_size.delete_rule&rule_name='+rule_name, handle_delete_messages_size); } /* * Fim dos processamentos para deletar uma regra. */ /* * Método que busca os usuários no ldap de acordo com a organização. */ function get_available_users(ctx, sentence, handler) // Fazer com que retorne também grupos junto com usuários { var handler_get_users = function(data) { if ((data) && (data.length > 0)) { if( typeof data == "string" ) data = (new Function("return " + data))(); handler( data ); } } cExecute ('$this.ldap_functions.get_available_users_messages_size&context=' + ctx + ( sentence ? '&sentence=' + sentence: '' ), handler_get_users); } /* * Fim dos processamentos para buscar os usuários do LDAP. */ /* * Método que busca os usuários e grupos no ldap de acordo com a organização. */ function get_available_users_and_groups(ctx, sentence, handler) // Fazer com que retorne também grupos junto com usuários { var handler_get_users = function(data) { if ((data) && (data.length > 0)) { if( typeof data == "string" ) data = (new Function("return " + data))(); handler( data ); } } cExecute ('$this.bomessages_size.get_available_users_and_groups&context=' + ctx + ( sentence ? '&sentence=' + sentence: '' ), handler_get_users); } /* * Fim dos processamentos para buscar os usuários e grupos do LDAP. */ /* * Método que edita uma regra de tamanho de mensagem. */ function edit_messages_size(name_rule) { // Retira os % do nome da regra. name_rule = name_rule.replace(/%/g," "); var handle_edit_messages_size = function(data) { if (data.status == true) { modal('messages_size_modal','save'); Element('original_rule_name').value = data.email_recipient; Element('rule_name').value = data.email_recipient; //Necessario, pois o IE6 tem um bug que não exibe as novas opções se o innerHTML estava vazio Element('ea_select_owners').innerHTML = ' ' + data.options; Element('ea_select_owners').outerHTML = Element('ea_select_owners').outerHTML; Element('max_messages_size').value = data.email_max_recipient; } else write_msg(data.msg, 'error'); } cExecute ("$this.bomessages_size.get_users_by_rule&name_rule="+name_rule, handle_edit_messages_size); } /* * Fim dos processamentos para editar uma regra. */ /* * Método que salva uma regra. É chamado quando uma regra é aberta para edição. */ function save_messages_size() { if (is_ie){ var i = 0; while (document.forms(i).name != "messages_size_form_template"){i++} form = document.forms(i); } else form = document.getElementById('messages_size_form_template'); hidden_owners_acl = Element('owners_acls'); select_owners = Element('ea_select_owners'); for(var i = 0;i < select_owners.options.length; i++){ var user = select_owners.options[i].value; select_owners.options[i].value = user; if(select_owners.options[i] != "") select_owners.options[i].selected = true; } hidden_owners_acl.value = admin_connector.serialize(sharemailbox.ownersAcl); cExecuteForm ("$this.bomessages_size.save_rule", document.getElementById('messages_size_form_template'), handler_save_messages_size); //cExecute ("$this.bomessages_size.save_rule&owners="+owners, handler_save_messages_size); //hidden_owners_acl.value = ""; } /* * Handlers do método que salva uma regra. */ function handler_save_messages_size(data_return) { handler_save_messages_size2(data_return); return; } function handler_save_messages_size2(data_return) { if (!data_return.status) { write_msg(data_return.msg, 'error'); } else { //get_messages_size(Element('ea_rules_search').value); close_lightbox(); write_msg(get_lang('Rule successful saved') + '.', 'normal'); history.go(); } return; } /* * Fim dos processamentos para salvar uma regra. */ /* * Método que busca as regras de acordo com uma entrada do usuário. */ function get_messages_size_timeOut(input, event) { var table = Element('messages_size_content').innerHTML = ''+'
'+get_lang("rule name")+''+get_lang("max size rule")+''+get_lang("remove")+'
'; if (event.keyCode === 13) { get_messages_size( input ); //cExecute ('$this.bomessages_size.get_rules_by_user&input='+input, handler_get_messages_size); } } function get_messages_size(input, callback) { var handler_get_messages_size = function(data) { if (data.status == 'true') { // Em data.trs está armazenado todas as linhas que foram retornadas da busca pelo parametro passado pelo usuário. var table = ''+data.trs+'
'+get_lang("rule name")+''+get_lang("max size rule")+''+get_lang("remove")+'
'; Element('messages_size_content').innerHTML = table; } else{ write_msg(data.msg, 'error'); } } // Modificar para chamar o get_rules_by_user para o usuário buscar por nome de usuário e não de regra. cExecute ('$this.bomessages_size.get_rules&input='+input, handler_get_messages_size); } /* * Fim dos processamentos para buscar uma regra. */ /* * Método que remove os usuários que foram adicionados para participar da regra no modal. */ function remove_user() { select_owners = Element('ea_select_owners'); for(var i = 0;i < select_owners.options.length; i++) if(select_owners.options[i].selected){ var user = select_owners.options[i].value; delete sharemailbox.ownersAcl[user]; select_owners.options[i--] = null; } //Nova chamada a "Element" é Necessária devido a um bug do ie com select select_owners = Element('ea_select_owners'); if(select_owners.options.length > 0 ){ select_owners.options[0].selected = true; var user = select_owners.options[0].value; sharemailbox.getaclfromuser(user); } } function findUsersAndGroups(obj, numMin, event) { if( event && event.keyCode != 13 ) return; findUsersAndGroupsInLdap(obj.id,numMin); } function findUsersAndGroupsInLdap(id, numMin) { optionFind( id, 'ea_select_available_users', 'expressoAdmin1_2.bomessages_size.get_available_users_and_groups2', 'ea_combo_org', 'ea_span_searching' ); } function handlerGetAvailableUsersAndGroups(data) { var selectUsersAndGroups = Element('ea_select_available_users'); for(var i=0; i < selectUsersAndGroups.options.length; i++) { selectUsersAndGroups.options[i] = null; i--; } var options = '###'; if (data) { if(data.groups && data.groups.length > 0) { data.groups = '' + data.groups; } if(data.users && data.users.length > 0) { data.users = '' + data.users; } options += data.groups && data.groups.length > 0 ? data.groups : ''; options += data.users && data.users.length > 0 ? data.users : ''; //if(is_firefox_0) //fixBugInnerSelect(selectUsersAndGroups,options); //else selectUsersAndGroups.innerHTML = options; selectUsersAndGroups.outerHTML = selectUsersAndGroups.outerHTML; selectUsersAndGroups.disabled = false; //selectUsersClone = Element('selectUsers').cloneNode(true); } } function optionFinder(obj) { var id = obj.id; finder2( Element(id).value, 'ea_select_available_users', function( sentence, refillHandler ){ Element("ea_span_searching").innerHTML = get_lang('searching') + '...'; get_available_users( Element('ea_combo_org').value, sentence, function( data ){ Element("ea_span_searching").innerHTML = ' '; refillHandler( data ); }); } ); } function finder2( sentences, fillHandler, searchHandler ) { //caso fillHandler nao seja uma funcao, usar a default if( typeof fillHandler === "string" ) { var selectId = fillHandler; fillHandler = function( fill ){ //recupera as options do respectivo select var select = Element( selectId ).options; //Limpa todo o select select.length = 0; //Inclui usuario comecando com a pesquisa for( var value in fill ) select[select.length] = new Option( fill[value]["name"], value ); //chama o server side caso nao encontre resultado nenhum com essa sentenca return( select.length === 0 ); } } var original = sentences, fill = false; //checa se a variavel eh uma string ou regexp. Caso seja, a converte em um mapa if( typeof sentences === "string" || ( sentences.test && sentences.match ) ) sentences = { "name": sentences }; //varrer todas as sentencas e secoes especificas for( var section in sentences ) { //sentenca para a secao especifica. var sentence = sentences[section]; //checa se eh uma string. Se for, converte-la para uma regexp. if( typeof sentence === "string" ) { //TODO: tornar esse limite configuravel de acordo com a configuracao do expresso if( sentence.length < 3 ) continue; sentence = sentences[section] = new RegExp("\\b"+sentence, "i"); } if( !fill ) fill = {}; //populando o mapa filtrando pela determinada sentenca for( var key in userData ) { if( !userData[key] ) userData[key] = {}; if ( sentence.test( userData[key][section] ) ) { if( !fill[key] ) fill[key] = {}; fill[ key ][ section ] = userData[ key ][ section ]; } } } //tenta chamar o handler para popular, caso nao consiga chama o server side if( fill && fillHandler( fill ) && searchHandler ) { //handler chamado pelo callback do servidor para repopular. var refillHandler = function( data, sections ){ if( !sections ) sections = "name"; if( typeof sections === "string" ) { if( !data[sections] ) var dt = data, data = {}; data[sections] = dt; sections = [ sections ]; } for( var i = 0; sections[i]; section = sections[i++] ) { for ( var key in data[section] ) { if( !userData[key] ) userData[key] = {}; userData[key][section] = data[section][key]; } } finder( sentences, fillHandler ); }; searchHandler( original, refillHandler ); } } function set_onload() { get_associated_domain(Element('ea_combo_org').value); } function search_organization(key, element) { var organizations = Element(element); var RegExp_org = new RegExp("\\b"+key, "i"); for(i = 0; i < organizations.length; i++) { if (RegExp_org.test(organizations[i].text)) { organizations[i].selected = true; return; } } } var userData = {}; function add_user() { select_available_users = Element('ea_select_available_users'); select_owners = Element('ea_select_owners'); var count_available_users = select_available_users.length; var new_options = ''; for (i = 0 ; i < count_available_users ; i++) { if (select_available_users.options[i].selected) { if(document.all) { if ( (select_owners.innerHTML.indexOf('value='+select_available_users.options[i].value)) == '-1' ) { new_options += "