Ignore:
Timestamp:
09/17/12 14:30:47 (12 years ago)
Author:
douglas
Message:

Ticket #0000 - Copiadas as alterações do Trunk. Versão final da 2.4.2.

Location:
branches/2.4
Files:
11 edited
2 copied

Legend:

Unmodified
Added
Removed
  • branches/2.4

  • branches/2.4/prototype/modules/mail/css/followupflag.css

    r6754 r7228  
    231231.content-alarm ul { 
    232232        max-height: 100px; 
    233         overflow: auto; 
     233        overflow: hidden; 
    234234} 
    235235.content-alarm { 
  • branches/2.4/prototype/modules/mail/js/foldertree.js

    r7021 r7228  
    116116        cp_tree1 = tree1; 
    117117        cp_tree2 = tree2; 
     118        var shared_acls = {}; 
     119 
     120        $.each(cp_tree2, function(index, value){ 
     121                shared_acls[value.id] = value.acl_share; 
     122        }); 
     123 
    118124        $("#content_folders").removeClass("menu-degrade").parent().removeClass("image-menu"); 
    119125        var html = DataLayer.render('../prototype/modules/mail/templates/detailedfoldertree.ejs', {folders: [tree1, tree2, tree3]}); 
     
    166172        }).end().end(); 
    167173         
    168         folders_html.find('[id="'+selected+'"]').children().addClass("selected").end().end().find("li:first").find(".folder").not(".head_folder,.inbox,.drafts,.sent,.spam,.trash").draggable({ 
     174        folders_html.find('[id="'+selected+'"]').children().addClass("selected"); 
     175        $(".folder").not(".head_folder").not(".shared-folders").parent().find(".folder").not(".head_folder,.inbox,.drafts,.sent,.spam,.trash").draggable({ 
    169176                // DRAG DE PASTAS 
    170177                start : function(){ 
     
    280287                                        url : "controller.php?"+ $.param( { action: "$this.imap_functions.move_folder", folder_to_move: folder_to_move, folder_to: folder_to } ), 
    281288                                        success : function(data){ 
     289                                                cExecute("$this.imap_functions.get_folders_list&onload=true", update_menu); 
    282290                                                data = connector.unserialize(data); 
    283                                                 if(data){ 
    284                                                         cExecute("$this.imap_functions.get_folders_list&onload=true", update_menu); 
     291                                                if(data == "Permission denied"){ 
     292                                                        write_msg(get_lang("Permission denied")); 
     293                                                }else if(data){ 
    285294                                                        write_msg(get_lang("The folder was successfully moved")); 
    286295                                                } 
     
    292301                        } 
    293302                } 
    294         }).hover( 
     303        }); 
     304        $(".folder").not(".shared-folders").parent().find(".folder").hover( 
    295305                function(){ 
    296306                        //CASO A LI NÃO TENHA UM eventNU FLUTUANTE AINDA, O eventNU É ADICIONADO! 
     
    298308                                var folder_ = $(this); 
    299309                                var folder_name; 
     310                                var shared = { 
     311                                        head : false, 
     312                                        valid : false 
     313                                }; 
    300314                                if(folder_.parent().attr('id')){ 
    301315                                        folder_name = folder_.parent().attr('id').split(cyrus_delimiter); 
    302316                                        folder_name = folder_name[folder_name.length -1]; 
     317                                        shared.valid = folder_.parent().attr('id').search("user/") == 0 ? true : false; 
    303318                                }else 
    304319                                        folder_name = "Root"; 
    305                                 html = DataLayer.render("../prototype/modules/mail/templates/float_folder_menu.ejs", {name_folder : folder_name});                                       
     320                                 
     321                                if(shared.valid){ 
     322                                        shared.head = folder_.parent().attr('id').split(cyrus_delimiter).length == 2 ?  true : false; 
     323                                        var folder_name_parts = folder_.parent().attr('id').split(cyrus_delimiter); 
     324                                        var acls = shared_acls[folder_name_parts[0]+cyrus_delimiter+folder_name_parts[1]]; 
     325 
     326                                } 
     327 
     328                                html = DataLayer.render("../prototype/modules/mail/templates/float_folder_menu.ejs", {name_folder : folder_name, flag : shared, acl : acls});                                    
    306329                                        //FUNÇÃO DO eventNU FLUTUANTE EDITAR < BEGIN 
    307330                                var esc = false; 
     
    334357                                                                        type : "POST", 
    335358                                                                        data : "current="+folder_id+"&rename="+new_name, 
    336                                                                         success : function(){ 
     359                                                                        success : function(data){ 
     360                                                                                data = connector.unserialize(data); 
     361                                                                                if(data == "Permission denied"){ 
     362                                                                                        $(".folders-loading").removeClass("folders-loading"); 
     363                                                                                        cExecute("$this.imap_functions.get_folders_list&onload=true", update_menu); 
     364                                                                                        return write_msg(get_lang("Permission denied")); 
     365                                                                                } 
    337366                                                                                write_msg(get_lang("The folder was successfully rename")); 
    338367                                                                                cExecute("$this.imap_functions.get_folders_list&onload=true", update_menu); 
    339368                                                                        } 
    340369                                                                }); 
    341                                                         }else{  
    342                                         $(".new_folder").focusout();     
     370                                                        }else{ 
     371                                                                $(".new_folder").focusout(); 
    343372                                                        } 
    344373                                                }else if( event.keyCode == 27){ 
     
    385414                                                                                        $(".folders-loading").removeClass("folders-loading"); 
    386415                                                                                        return write_msg(get_lang("Mailbox does not exist")); 
     416                                                                                }else if(data == "Permission denied"){ 
     417                                                                                        $(".folders-loading").removeClass("folders-loading"); 
     418                                                                                        cExecute("$this.imap_functions.get_folders_list&onload=true", update_menu); 
     419                                                                                        return write_msg(get_lang("Permission denied")); 
    387420                                                                                } 
    388421                                                                                write_msg(get_lang("The folder %1 was successfully removed", folder_name)); 
     
    449482                                                draw_new_tree_folder(); 
    450483                                        }); 
     484                                }).end().find(".float-menu-export").click(function(){ 
     485                                        //proxy_mensagens.export_all_messages($(this).parents("li:first").attr("id")) 
     486 
     487                                        var name_box = $(this).parents("li:first").attr("id"); 
     488                                        var name_folder = name_box.split(cyrus_delimiter)[name_box.split(cyrus_delimiter).length-1]; 
     489 
     490                                        var hand_export = function(data){ 
     491                                                if(!data){ 
     492                                                        write_msg(get_lang('Error compressing messages (ZIP). Contact the administrator.')) 
     493                                                }else if(data["empty_folder"]){ 
     494                                                        write_msg(get_lang("The selected folder is empty.")); 
     495                                                }else 
     496                                                  download_attachments(null, null, data, null,null, name_folder +'.zip'); 
     497                                        } 
     498                                        cExecute("$this.exporteml.export_all",hand_export,"folder="+name_box);   
     499                                        write_msg(get_lang('You must wait while the messages will be exported...'));             
    451500                                }); 
    452501                                //FUNÇÃO DO eventNU FLUTUANTE NOVA PASTA < END 
  • branches/2.4/prototype/modules/mail/js/followupflag.js

    r7027 r7228  
    178178         * #END: Implementação do widget de input-combobox 
    179179         */ 
     180         winElement.find('input[name="alarmDate"]').change(function(event){ 
     181                winElement.find('input[name="alarmTime"]').attr('disabled', ( $(this).val() == "" ? 'disabled' : false)); 
     182         }); 
     183 
     184         winElement.find('input[name="alarmDate"]').keyup(function(event){ 
     185                winElement.find('input[name="alarmTime"]').attr('disabled', ( $(this).val() == "" ? 'disabled' : false)).val(''); 
     186         }); 
    180187 
    181188        winElement.find('.button').button() 
     
    217224                                                        messageNumber : messageNumber, 
    218225                                                        isDone: isDone, 
     226                                                        isSent: 0, 
    219227                                                        backgroundColor : backgroundColor 
    220228                                                }, !!idFollowupflagged[i] ? {id: idFollowupflagged[i]} : {}); 
     
    271279                 
    272280                } 
     281                selectAllFolderMsgs(false); 
    273282    } 
    274283                var backgroundColor = winElement.find('[name="backgroundColor"]').val(); 
     
    344353                        alarmFollowupflagged('followupflagAlarms'); 
    345354                }); 
    346                  
     355                selectAllFolderMsgs(false); 
    347356        }); 
    348357         
     
    414423        winElement.find('[name="alarm"]').click(function(){ 
    415424                if($(this).is(":checked")){ 
    416                         winElement.find('[name="alarmDate"],[name="alarmTime"]').removeAttr("disabled");                         
     425                        winElement.find('[name="alarmDate"]').removeAttr("disabled");                    
    417426                }else{ 
    418                         winElement.find('[name="alarmDate"],[name="alarmTime"]').attr("disabled","disabled"); 
     427                        winElement.find('[name="alarmDate"],[name="alarmTime"]').attr("disabled","disabled").val(''); 
    419428                } 
    420429        }); 
     430 
    421431        if(winElement.find('[name="alarm"]').is(":checked")){ 
    422432                winElement.find('[name="alarmDate"],[name="alarmTime"]').removeAttr("disabled"); 
    423433        } 
     434         
    424435        winElement.find('[name="done"]').click(function(){ 
    425436                if($(this).is(":checked")){ 
     
    492503 */ 
    493504function alarmFollowupflagged(alert_type, filter_list){ 
     505        var currentDate = new Date().toString("dd/MM/yyyy"); 
     506        var data = {alarmDeadline: false, doneDeadline: false, filtersAlarms: false}; 
     507 
    494508        switch(alert_type){ 
    495                 // carregar modais de sinalizadores 
    496509                case 'followupflagAlarms': 
    497510                        $('.doneDeadline').remove(); 
    498511                        $('.alarmDeadline').remove(); 
    499                         var toIterate = [ 
    500                                 { 
    501                                         attrDeadline: 'doneDeadline',  
    502                                         caption: {singular:'You have one undone message today:',  
    503                                         plural:"You have %1 undone messages today:" 
    504                                         }, 
    505                                         title: get_lang('Done'), 
    506                                         enable: ($.cookie("fadeCompleted") != (new Date).toString("dd/MM/yyyy")) 
    507                                 }, 
    508                                 { 
    509                                         attrDeadline: 'alarmDeadline', 
    510                                         caption: { 
    511                                                 singular:'You have a follow up due for today:',  
    512                                                 plural:'You have %1 follow ups due for today:' 
    513                                         }, 
    514                                         title: get_lang('Follow ups'), 
    515                                         enable: ($.cookie("fadeAlarm") != (new Date).toString("dd/MM/yyyy")) 
    516                                 } 
    517                         ]; 
    518                         break; 
    519                 // carregar modal de filtros 
     512                        data.alarmDeadline = $.cookie("fadeAlarm") != currentDate ? true : false; 
     513                        data.doneDeadline = $.cookie("fadeCompleted") != currentDate ? true : false; 
     514                break; 
    520515                case 'filtersAlarms': 
    521516                        $('.filtersDeadline').remove(); 
    522                         var toIterate = [ 
    523                                 { 
    524                                         attrDeadline: 'filtersDeadline', 
    525                                         caption: { 
    526                                                 singular:'You have an archived message:',  
    527                                                 plural:'You have %1 messages archived:' 
    528                                         }, 
    529                                         title: get_lang('Filter by sender'), 
    530                                         enable: ($.cookie("fadeFilterAlarm") != (new Date).toString("dd/MM/yyyy")) 
    531                                 } 
    532                         ]; 
    533                         break; 
    534                 // carregar todas as modais 
     517                        data.filtersAlarms = $.cookie("fadeFilterAlarm") != currentDate ? true : false; 
     518                break; 
    535519                default: 
    536520                        $('.gray').remove(); 
    537                         var toIterate = [ 
    538                                 { 
    539                                         attrDeadline: 'filtersDeadline', 
    540                                         caption: { 
    541                                                 singular:'You have an archived message:',  
    542                                                 plural:'You have %1 messages archived:' 
    543                                         }, 
    544                                         title: get_lang('Filter by sender'), 
    545                                         enable: ($.cookie("fadeFilterAlarm") != (new Date).toString("dd/MM/yyyy")) 
    546                                 }, 
    547                                 { 
    548                                         attrDeadline: 'doneDeadline',  
    549                                         caption: {singular:'You have one undone message today:',  
    550                                         plural:"You have %1 undone messages today:" 
    551                                         }, 
    552                                         title: get_lang('Done'), 
    553                                         enable: ($.cookie("fadeCompleted") != (new Date).toString("dd/MM/yyyy")) 
    554                                 },                               
    555                                 { 
    556                                         attrDeadline: 'alarmDeadline', 
    557                                         caption: { 
    558                                                 singular:'You have a follow up due for today:',  
    559                                                 plural:'You have %1 follow ups due for today:' 
    560                                         }, 
    561                                         title: get_lang('Follow ups'), 
    562                                         enable: ($.cookie("fadeAlarm") != (new Date).toString("dd/MM/yyyy")) 
     521                        data.alarmDeadline = $.cookie("fadeAlarm") != currentDate ? true : false; 
     522                        data.doneDeadline = $.cookie("fadeCompleted") != currentDate ? true : false; 
     523                        data.filtersAlarms = $.cookie("fadeFilterAlarm") != currentDate ? true : false; 
     524                break; 
     525        }; 
     526 
     527        var startDate = (new Date()).set({hour:0, minute:0, second:0}).toString('yyyy-MM-dd 00:00:00'); 
     528        var endDate = (new Date()).set({hour:0, minute:0, second:0}).addHours(24).toString('yyyy-MM-dd 00:00:00'); 
     529 
     530        if(data.alarmDeadline){ 
     531                var decodeAlarms = {'sent': [], 'task':[]};      
     532                alarms = DataLayer.get('followupflagged',  
     533                        { 
     534                                filter: ['AND', ['<', 'alarmDeadline', endDate], ['=','isSent','0'], ['=','isDone','0']],  
     535                                criteria: {deepness: 1} 
     536                        }); 
     537 
     538                if(alarms.length > 0){ 
     539                        var itens = []; 
     540                        for(var i = 0; i < alarms.length; i++){ 
     541 
     542                                var date = Date.parseExact(alarms[i]['alarmDeadline'], 'yyyy-MM-dd HH:mm:ss'); 
     543                        alarms[i]['alarmDeadline'] = date.toString('dd/MM HH:mm'); 
     544 
     545                                var nameFollowupflag = alarms[i]['followupflag']['id'] < 7 ? get_lang(alarms[i]['followupflag']['name']) : alarms[i]['followupflag']['name']; 
     546                                var li_alarm = alarms[i]['alarmDeadline'] + ' - ' + nameFollowupflag + ' - ' + alarms[i]['message']['headers']['subject']; 
     547 
     548                                if(alarms[i]['doneDeadline'] != ''){ 
     549                                        var dateDone = Date.parseExact(alarms[i]['doneDeadline'], 'yyyy-MM-dd HH:mm:ss'); 
     550                                        if(dateDone.getTime() < $.now()) 
     551                                                continue; 
    563552                                } 
    564                         ]; 
    565                         break; 
    566         } 
    567         var i = 0; 
    568         // recupera e monta os dados para serem exibidos nas modais de alarmes 
    569         while (it = toIterate.pop()){ 
    570                 if (!it.enable) continue; 
    571                  
    572                 var alarmInRange = {}; 
    573                 // caso for alarme de sinalizadores 
    574                 if(it.attrDeadline == 'doneDeadline' || it.attrDeadline == 'alarmDeadline'){ 
    575                         alarmInRange = DataLayer.get('followupflagged', {filter: ['AND', ['>', it.attrDeadline, (new Date()).set({hour:0, minute:0, second:0}).toString('yyyy-MM-dd 00:00:00')], ['<', it.attrDeadline, (new Date()).set({hour:0, minute:0, second:0}).addHours(24).toString('yyyy-MM-dd 00:00:00')]], criteria: {deepness: 1}}); 
    576                         if(alarmInRange.length > 0){ 
    577                                 for(var i=0; i<alarmInRange.length; i++){ 
    578                                         if(alarmInRange[i].isDone == 1){ 
    579                                                  alarmInRange.splice(i,1); 
    580                                                  i--; 
    581                                         } 
     553 
     554                                if(date.getTime() <= $.now()) 
     555                                        decodeAlarms.sent.push({ 
     556                                                "msg_number" : alarms[i]['messageNumber'], 
     557                                                "msg_folder" : alarms[i]['folderName'], 
     558                                                "a"                      : truncate(li_alarm, 34), 
     559                                                'id' : alarms[i].id 
     560                                        }); 
     561                        else 
     562                                decodeAlarms.task.push({ 
     563                                                a: truncate(li_alarm, 34), 
     564                                                sentTime:  date.getTime() / 1000, 
     565                                                id: alarms[i].id, 
     566                                                'msg_folder': alarms[i].folderName, 
     567                                                'msg_number': alarms[i].messageNumber 
     568                                        }); 
     569                        } 
     570 
     571                        if(decodeAlarms.task.length) 
     572                                alarmDeadline.load(decodeAlarms.task); 
     573 
     574                        if(decodeAlarms.sent.length) 
     575                                data.alarmDeadline = { 
     576                                                alarms: decodeAlarms.sent, 
     577                                                title: get_lang('Follow ups'), 
     578                                                caption: (itens.length == 1) ? get_lang('You have one undone message today:') : get_lang('You have %1 follow ups due for today:', decodeAlarms.sent.length), 
     579                                                type: 'alarmDeadline' 
     580                                        }; 
     581                        else 
     582                                data.alarmDeadline = false; 
     583                }else 
     584                        data.alarmDeadline = false; 
     585        } 
     586 
     587        if(data.doneDeadline){ 
     588                alarms = DataLayer.get('followupflagged', {filter: ['AND', ['>', 'doneDeadline', startDate], ['<', 'doneDeadline', endDate]], criteria: {deepness: 1}}); 
     589 
     590                if(alarms.length > 0){ 
     591                        var itens = []; 
     592                        for(var i = 0; i < alarms.length; i++){ 
     593 
     594                            var date = Date.parseExact(alarms[i]['doneDeadline'], 'yyyy-MM-dd HH:mm:ss'); 
     595                            alarms[i]['doneDeadline'] = date.toString('dd/MM HH:mm'); 
     596 
     597                            var nameFollowupflag = alarms[i]['followupflag']['id'] < 7 ? get_lang(alarms[i]['followupflag']['name']) : alarms[i]['followupflag']['name']; 
     598                            var li_alarm = alarms[i]['doneDeadline'] + ' - ' + nameFollowupflag + ' - ' + truncate(alarms[i]['message']['headers']['subject'], 15); 
     599 
     600                            itens.push({ 
     601                                    a: truncate(li_alarm, 34), 
     602                                    id: alarms[i].id, 
     603                                    'msg_folder': alarms[i].folderName, 
     604                                    'msg_number': alarms[i].messageNumber 
     605                            }); 
     606                        } 
     607                    data.doneDeadline = { 
     608                        alarms: itens, 
     609                        title: get_lang('Done'), 
     610                        caption: (itens.length == 1) ? get_lang('You have one undone message today:') : get_lang('You have %1 follow ups due for today:', itens.length), 
     611                        type: 'doneDeadline' 
     612                    }; 
     613                }else 
     614                    data.doneDeadline = false; 
     615        } 
     616 
     617        if(data.filtersAlarms){ 
     618 
     619                alarms = filter_list; 
     620 
     621                if(alarms.length > 0){ 
     622                    var itens = []; 
     623 
     624                    for(var i=0; i<alarms.length; i++){ 
     625                        alarms[i]['udate'] =  new Date(alarms[i]['udate']*1000).toString('dd/MM HH:mm'); 
     626                        var li_alarm = alarms[i]['udate'] + ' - ' + alarms[i]['from'] + ' - ' + alarms[i]['subject']; 
     627 
     628                        itens.push({ 
     629                                'msg_number' : alarms[i]['msg_number'], 
     630                                'msg_folder' : alarms[i]['msg_folder'], 
     631                                a            : truncate(html_entities(li_alarm), 34), 
     632                                id : alarms[i].id 
     633                        });                              
     634                } 
     635 
     636                data.filtersAlarms = { 
     637                                alarms: itens, 
     638                                title: get_lang('Filter by sender'), 
     639                                caption: (itens.length == 1) ? get_lang('You have an archived message:') : get_lang('You have %1 messages archived:', itens.length), 
     640                                type: 'filtersDeadline', 
     641                                captions: { 
     642                                    singular:'You have one undone message today:',  
     643                                    plural:"You have %1 undone messages today:" 
    582644                                } 
    583                         } 
    584                          
    585                         if(alarmInRange.length > 0){ 
    586                                 var messages_alarm = []; 
    587                                 for(var i=0; i<alarmInRange.length; i++){ 
    588                                         var date = Date.parseExact(alarmInRange[i][it.attrDeadline], 'yyyy-MM-dd HH:mm:ss'); 
    589                                         if(date) 
    590                                                 alarmInRange[i][it.attrDeadline] = date.toString('HH:mm'); 
    591                                          
    592                                         if(alarmInRange[i]['followupflag']['id'] < 7){ 
    593                                                 var nameFollowupflag = get_lang(alarmInRange[i]['followupflag']['name']); 
    594                                         }else{ 
    595                                                 var nameFollowupflag = alarmInRange[i]['followupflag']['name']; 
    596                                         } 
    597                                         var li_alarm = alarmInRange[i][it.attrDeadline] + ' - ' + nameFollowupflag + ' - ' + truncate(alarmInRange[i]['message']['headers']['subject'], 15); 
    598                                         messages_alarm.push({ 
    599                                                 "msg_number" : alarmInRange[i]['messageNumber'], 
    600                                                 "msg_folder" : alarmInRange[i]['folderName'], 
    601                                                 "a"                      : li_alarm 
    602                                         });                              
    603                                 } 
    604                         } 
    605                 }  
    606                 // caso for alarme de filtros 
    607                 else if(filter_list){ 
    608                         alarmInRange = filter_list; 
    609                         if(alarmInRange.length > 0){ 
    610                                 var messages_alarm = []; 
    611                                 for(var i=0; i<alarmInRange.length; i++){ 
    612  
    613                                         alarmInRange[i]['udate'] =  new Date(alarmInRange[i]['udate']*1000).toString('dd/MM/yyyy HH:mm');  
    614                                                  
    615                                         var li_alarm = alarmInRange[i]['udate'] + ' - ' + alarmInRange[i]['from'] + ' - ' + truncate(alarmInRange[i]['subject'], 15); 
    616                                         messages_alarm.push({ 
    617                                                 "msg_number" : alarmInRange[i]['msg_number'], 
    618                                                 "msg_folder" : alarmInRange[i]['msg_folder'], 
    619                                                 "a"                      : li_alarm 
    620                                         });                              
    621                                 } 
    622                         } 
    623                 } 
    624                                  
    625                 if(alarmInRange.length > 0){ 
    626                         // monta o subtitulo da modal 
    627                         var caption = (alarmInRange.length == 1) ? 
    628                                 get_lang(it.caption.singular): 
    629                                 get_lang(it.caption.plural, alarmInRange.length); 
    630                         // monta o array de dados a ser passado para o template  
    631                         var data = { 
    632                                 alarmInRange : messages_alarm,  
    633                                 caption: caption,  
    634                                 type: it.attrDeadline, 
    635                                 captions: it.caption 
    636645                        }; 
    637                         // tipo de modal a ser exibida 
    638                         var type_alarm = it.attrDeadline; 
    639                         //função chamada ao clicar no botão Ok da modal 
    640                         var ok_function = function(event, type, type_cookie){ 
    641                                 if($(event.target).parents('.'+type).find('[name="stopAlert"]').is(':checked')){ 
    642                                         $.cookie(type_cookie, (new Date).toString("dd/MM/yyyy"), {  
    643                                                 expires: 1  
    644                                         }); 
    645                                 } 
    646                         } 
    647                         // carrega o template dos alarmes e cria a modal utilizando o plugin freeow 
    648                         var dialogText = DataLayer.render("../prototype/modules/mail/templates/followupflag_alarm_list.ejs", data); 
    649                         var titulo = '<div class="header-alarm"><span class="img_title"></span><span class="title-alarm"><strong>'+it.title+'</strong></span><span name="header-icon" class="maximize-alarm"></span></div>'; 
    650                         $("#freeow").freeow(titulo, dialogText, { 
    651                                 classes: ["gray", type_alarm], 
    652                                 autoHide: false,  
    653                                 startStyle: null, 
    654                                 onClick: function(event){ 
    655                                         var type = ''; 
    656                                         var type_cookie = ''; 
    657                                         if($(this).hasClass('alarmDeadline')){ 
    658                                                 type = 'alarmDeadline'; 
    659                                                 type_cookie = 'fadeAlarm'; 
    660                                         }else if($(this).hasClass('doneDeadline')){ 
    661                                                 type = 'doneDeadline'; 
    662                                                 type_cookie = 'fadeCompleted'; 
    663                                         }else if($(this).hasClass('filtersDeadline')){ 
    664                                                 type = 'filtersDeadline'; 
    665                                                 type_cookie = 'fadeFilterAlarm'; 
    666                                         } 
    667                                         if($(event.target).hasClass('stop-alert-alarm')){ 
    668                                                 return; 
    669                                         } 
    670                                         if($(event.target).hasClass('minimize-alarm')){ 
    671                                                 $('.'+type).find('.content-alarm').hide(); 
    672                                                 $(event.target).removeClass('minimize-alarm').addClass('maximize-alarm'); 
    673                                                 return; 
    674                                         } 
    675                                         if($(event.target).hasClass('maximize-alarm')){ 
    676                                                 $('.'+type).find('.content-alarm').show(); 
    677                                                 $(event.target).removeClass('maximize-alarm').addClass('minimize-alarm'); 
    678                                                 return; 
    679                                         } 
    680                                         if($(( !!$.browser.safari ) ? event.target.parentElement : event.target).hasClass('confirm-alarm')){  
    681                                                 ok_function(event, type, type_cookie); 
    682                                                 $('.'+type).remove(); 
    683                                                 return; 
    684                                         } 
    685                                         return false; 
    686                                 } 
    687                         }); 
    688                         // elementos do freeow desnecessários 
    689                         $('.gray .background .content p').remove(); 
    690                         $('.gray .icon').remove(); 
    691                         $('.gray .close').remove(); 
    692                          
    693                         // botão ok da modal com jquery button 
    694                         $('.content-alarm button').button(); 
    695                 }                
    696         } 
    697          
     646 
     647                }else 
     648                    data.filtersAlarms = false; 
     649        } 
     650 
     651        for (var i in data) 
     652                if(data[i] != false) 
     653                        showAlarmsModal(data[i]); 
     654 
    698655        // controle de qual janela de alarme estará maximizada 
    699656        $('.gray').find('.content-alarm').hide(); 
     
    712669                } 
    713670        } 
    714          
     671} 
     672 
     673function showAlarmsModal(alarm){ 
     674         
     675        var ok_function = function(event, type, type_cookie){ 
     676                if($(event.target).parents('.'+type).find('[name="stopAlert"]').is(':checked')){ 
     677                        $.cookie(type_cookie, (new Date).toString("dd/MM/yyyy"), {  
     678                                expires: 1  
     679                        }); 
     680                } 
     681        } 
     682 
     683        // carrega o template dos alarmes e cria a modal utilizando o plugin freeow 
     684        var dialogText = DataLayer.render("../prototype/modules/mail/templates/followupflag_alarm_list.ejs", alarm); 
     685        var titulo = '<div class="header-alarm"><span class="img_title"></span><span class="title-alarm"><strong>'+alarm.title+'</strong></span><span name="header-icon" class="maximize-alarm"></span></div>'; 
     686         
     687        $("#freeow").freeow(titulo, dialogText, { 
     688                classes: ["gray", alarm.type], 
     689                autoHide: false,  
     690                startStyle: null, 
     691                onClick: function(event){ 
     692                        var type = ''; 
     693                        var type_cookie = ''; 
     694                        if($(this).hasClass('alarmDeadline')){ 
     695                                type = 'alarmDeadline'; 
     696                                type_cookie = 'fadeAlarm'; 
     697                        }else if($(this).hasClass('doneDeadline')){ 
     698                                type = 'doneDeadline'; 
     699                                type_cookie = 'fadeCompleted'; 
     700                        }else if($(this).hasClass('filtersDeadline')){ 
     701                                type = 'filtersDeadline'; 
     702                                type_cookie = 'fadeFilterAlarm'; 
     703                        } 
     704                        if($(event.target).hasClass('stop-alert-alarm')){ 
     705                                return; 
     706                        } 
     707                        if($(event.target).hasClass('minimize-alarm')){ 
     708                                $('.'+type).find('.content-alarm').hide(); 
     709                                $(event.target).removeClass('minimize-alarm').addClass('maximize-alarm'); 
     710                                return; 
     711                        } 
     712                        if($(event.target).hasClass('maximize-alarm')){ 
     713                                $('.'+type).find('.content-alarm').show(); 
     714                                $(event.target).removeClass('maximize-alarm').addClass('minimize-alarm'); 
     715                                return; 
     716                        } 
     717                        if($(( !!$.browser.safari ) ? event.target.parentElement : event.target).hasClass('confirm-alarm')){ 
     718                                ok_function(event, type, type_cookie); 
     719                                $('.'+type).remove(); 
     720                                return; 
     721                        } 
     722                        return false; 
     723                } 
     724        }); 
     725        // elementos do freeow desnecessários 
     726        $('.gray .background .content p').remove(); 
     727        $('.gray .icon').remove(); 
     728        $('.gray .close').remove(); 
     729 
     730        $('div.gray.alarmDeadline .button.delete').button({ 
     731                text: false, 
     732                icons:{ 
     733                        primary: 'ui-icon-close' 
     734                } 
     735        }) 
     736         
     737        // botão ok da modal com jquery button 
     738        $('.content-alarm button').button(); 
     739} 
     740 
     741function cancelAlarm(element, idAlarm, messageNumber, folderName){ 
     742 
     743        $(element).parents('li').remove(); 
     744 
     745        var view = 'div.gray.alarmDeadline'; 
     746        var length = $(view).find('ul.message-list li').length; 
     747 
     748        if(length > 0){ 
     749                var msg = ''; 
     750                if(length == 1) 
     751                        msg = get_lang( 'You have a follow up due for today:'); 
     752                else 
     753                        msg = get_lang('You have %1 follow ups due for today:', length); 
     754 
     755                $(view).find('span.subtitle-alarm strong').html(msg); 
     756        }else 
     757                $(view).remove(); 
     758 
     759        DataLayer.put('followupflagged',  
     760                { 
     761                        id: idAlarm ,  
     762                        isSent: '1', 
     763                        folderName: folderName, 
     764                        messageNumber: messageNumber, 
     765                        uid: User.me.uid 
     766                }); 
     767 
     768        DataLayer.commit(); 
     769 
     770} 
     771 
     772alarmDeadline = { 
     773 
     774 
     775        load: function(alarm){ 
     776                var currentDate = new Date().toString("dd/MM/yyyy") 
     777                if($.cookie("fadeAlarm") != currentDate) 
     778                        for(var i = 0; i < alarm.length; i++) 
     779                                this.addAlarm( alarm[i] ); 
     780        }, 
     781 
     782        addAlarm: function(alarm){ 
     783 
     784                    DataLayer.task( parseInt(alarm['sentTime']) , function( timestamp ){ 
     785                        var view = 'div.gray.alarmDeadline'; 
     786 
     787                        if(!$(view+' li.message-item.'+alarm.id).length){ 
     788 
     789                                var currentDate = new Date().toString("dd/MM/yyyy") 
     790                                        if($.cookie("fadeAlarm") != currentDate) 
     791                                         
     792                                        if($('div.gray.alarmDeadline').length){ 
     793                                                 
     794                                                $(view).find('ul.message-list').append(DataLayer.render("../prototype/modules/mail/templates/followupflag_alarmDeadline_add_item_list.ejs", alarm)) 
     795 
     796                                                var length = $(view).find('ul.message-list li').length; 
     797                                                var msg = ''; 
     798                                                if(length == 1) 
     799                                                        msg = get_lang( 'You have a follow up due for today:'); 
     800                                                else 
     801                                                        msg = get_lang('You have %1 follow ups due for today:', length); 
     802 
     803                                                $(view).find('span.subtitle-alarm strong').html(msg); 
     804 
     805                                                $(view+' .button.delete').button({ 
     806                                                                text: false, 
     807                                                                icons:{ 
     808                                                                        primary: 'ui-icon-close' 
     809                                                                } 
     810                                                        }); 
     811 
     812                                        }else{ 
     813                                                var item = { 
     814                                                                alarms: [alarm], 
     815                                                                title: get_lang('Follow ups'), 
     816                                                                caption: get_lang('You have one undone message today:'), 
     817                                                                type: 'alarmDeadline' 
     818                                                        }; 
     819                                                        showAlarmsModal(item); 
     820                                        } 
     821                                    } 
     822                                 
     823                    }); 
     824        } 
     825 
    715826} 
    716827                 
  • branches/2.4/prototype/modules/mail/templates/attachment.ejs

    r6214 r7228  
    1 <div id="fileupload_msg<%=data.ID%>" class="fileupload" style="margin : 15px 0px -15px -10px;"> 
     1<div id="fileupload_msg<%=data.ID%>" class="fileupload" style="margin : 15px 0px -15px -10px; padding-bottom : 5px;"> 
    22        <div class="row fileupload-buttonbar"> 
    33                <div class="button-files-upload"> 
     
    1313        <br /> 
    1414        <div class="files-list" style="margin: 5px; padding: 5px;"> 
    15                 <ul class="attachments-list"></ul> 
     15                <div class="attachments-list ui-corner-all" style="display:none;"></div> 
    1616        </div> 
    1717</div> 
     18<div id="fileupload_msg<%=data.ID%>_droopzone" style="display:none;" class="fileupload_msg_tooltip"> 
     19        Solte aqui seus anexos 
     20</div> 
  • branches/2.4/prototype/modules/mail/templates/attachment_add_itemlist.ejs

    r6124 r7228  
    1 <li style="list-style : none;"> 
    2         <p class="input-group archive-info" style="margin: 0px 0 !important; height: 17px">              
    3                 <span title="<%=data.file.fullFileName%>" class="archive-attach name"><%=data.file.fileName%></span> 
    4                 <span class="archive-attach size"><%=data.file.fileSize%></span> 
    5                 <button type="button" style="margin-bottom: -4px; <%= is_webkit || is_ie ? '' : 'top : 7px;'%>" class="button close tiny upload delete-upload" title="Deletar">Deletar</button> 
    6                 <span class="status-upload"></span> 
    7                 <%if(data.file.error){%> 
    8                         <span class="archive-error error"><%=data.file.error%></span> 
    9                 <%}if(!data.file.error){%> 
    10                         <span style="width: 110px; height: 14px; overflow:hidden"> 
    11                                 <span class="in-progress"> <img src="../prototype/modules/mail/img/loader.gif" /></span> 
    12                         </span> 
    13                 <%}%> 
    14                 <label class="fileinput-button new"></label> 
    15     </p> 
    16 </li> 
     1<div class="att-box ui-corner-all <%= (typeof(data.file.error) != 'boolean' ? 'invalid-email-box' : '') %>"> 
     2    <!--<div style="position:absolute; text-align: center; line-height: 1.9em;">--> 
     3        <span class="att-box-value"><%=data.file.fileName%>&nbsp;<b>(<%=data.file.fileSize%>)</b></span> 
     4        <span class="att-box-fullfilename" style="display:none;"><%=data.file.fullFileName%></span> 
     5        <span class="att-box-filesize" style="display:none;"><%=data.file.fileSize%></span> 
     6        <% if(typeof(data.file.error) == 'boolean'){ %> 
     7        <span class="att-box-loading">&nbsp;&nbsp;&nbsp;&nbsp;</span> 
     8        <% } %> 
     9        <span class="att-box-delete ui-icon-close ui-icon" style="display: inline-block;" title="<%=get_lang('Remove')%>">&nbsp;</span> 
     10    <!--</div>--> 
     11</div> 
  • branches/2.4/prototype/modules/mail/templates/float_folder_menu.ejs

    r5948 r7228  
    1212 
    1313<span class="float-menu"> 
    14         <span class="ui-icon ui-icon-document float-menu-new floating-default" title="Nova Pasta"></span>   
    15         <%if(!specialFolders[data.name_folder]){ %> 
    16                 <span class="ui-icon ui-icon-pencil float-menu-edit floating-default" title="Editar Pasta"></span>   
    17                 <span class="ui-icon ui-icon-close float-menu-remove floating-default" title="Excluir Pasta"></span>   
    18         <%}  
    19         else if(data.name_folder == trashfolder){%> 
    20                 <span class="ui-icon ui-icon-trash float-menu-clean floating-default" onclick="empty_trash_imap();" title="Limpar Pasta"></span>   
    21         <%} 
    22         else if(data.name_folder == spamfolder){%> 
    23                 <span class="ui-icon ui-icon-trash float-menu-clean floating-default" onclick="empty_spam_imap();" title="Limpar Pasta"></span>   
     14        <%if(!data.flag.valid){ %> 
     15                <%if(data.name_folder != 'INBOX'){%> 
     16                        <span class="ui-icon ui-icon-document float-menu-new floating-default" title="<%=get_lang("New Folder")%>"></span>   
     17                <%}%> 
     18                <%if(!specialFolders[data.name_folder]){ %> 
     19                        <span class="ui-icon ui-icon-pencil float-menu-edit floating-default" title="<%=get_lang("Edit folder")%>"></span>   
     20                        <span class="ui-icon ui-icon-close float-menu-remove floating-default" title="<%=get_lang("Delete folder")%>"></span>   
     21                <%}  
     22                else if(data.name_folder == trashfolder){%> 
     23                        <span class="ui-icon ui-icon-trash float-menu-clean floating-default" onclick="empty_trash_imap();" title="<%=get_lang("Empty Trash")%>"></span>   
     24                <%} 
     25                else if(data.name_folder == spamfolder){%> 
     26                        <span class="ui-icon ui-icon-trash float-menu-clean floating-default" onclick="empty_spam_imap();" title="<%=get_lang("Empty Spam")%>"></span>   
     27                         
     28                <%}%> 
     29 
     30        <%}else{ %> 
     31        <%      if(parseInt(data.acl.create)){%> 
     32                        <span class="ui-icon ui-icon-document float-menu-new floating-default" title="<%=get_lang("New Folder")%>"></span>  
     33        <%              if(parseInt(data.acl.delete) && parseInt(data.acl.rename) && !specialFolders[data.name_folder] && !data.flag.head){ %> 
     34                                <span class="ui-icon ui-icon-pencil float-menu-edit floating-default" title="<%=get_lang("Edit folder")%>"></span>   
     35        <%              } %> 
     36 
     37        <%      } %> 
     38        <%      if(parseInt(data.acl.delete) && !specialFolders[data.name_folder] && !data.flag.head){ %> 
     39                        <span class="ui-icon ui-icon-close float-menu-remove floating-default" title="<%=get_lang("Delete folder")%>"></span> 
     40                <%}%> 
     41                <%if(data.name_folder == trashfolder && parseInt(data.acl.delete)){%> 
     42                        <span class="ui-icon ui-icon-trash float-menu-clean floating-default" onclick="empty_trash_imap(true, $(this));" title="<%=get_lang("Empty Trash")%>"></span>   
     43                <%}else if(data.name_folder == spamfolder && parseInt(data.acl.delete)){%> 
     44                        <span class="ui-icon ui-icon-trash float-menu-clean floating-default" onclick="empty_spam_imap(true, $(this));" title="<%=get_lang("Empty Spam")%>"></span>   
     45                <%}%> 
    2446        <%}%> 
    25          
     47        <span class="ui-icon ui-icon-arrowthickstop-1-n float-menu-export floating-default" title="<%=get_lang("Export folder messages")%>"></span>   
    2648 </span> 
  • branches/2.4/prototype/modules/mail/templates/followupflag_alarm_list.ejs

    r6754 r7228  
    33                <strong><%=data.caption %></strong> 
    44        </span> 
    5         <ul class="message-list"> 
     5        <ul class="message-list" style="float: left;"> 
    66        <% 
    7         for(var i=0; i<data.alarmInRange.length; i++){ 
     7        for(var i=0; i<data.alarms.length; i++){ 
    88                if(data.type == 'filtersDeadline') 
    9                         var openMessageScript = "$(this).parent().remove(); var msgs_count = $('.filtersDeadline').find('.message-item').length; if(msgs_count == 0){ $('.filtersDeadline').remove(); } $('.subtitle-alarm').find('strong').html((msgs_count == 1)?get_lang('"+data.captions.singular+"'):get_lang('"+data.captions.plural+"', msgs_count)); cExecute('$this.imap_functions.open_flagged_msg&msg_number="+data.alarmInRange[i].msg_number+"&msg_folder="+data.alarmInRange[i].msg_folder+"&alarm=true', show_msg);"; 
     9                        var openMessageScript = "$(this).parent().remove(); var msgs_count = $('.filtersDeadline').find('li.message-item').length; if(msgs_count == 0){ $('.filtersDeadline').remove(); } $('.subtitle-alarm').find('strong').html((msgs_count == 1)?get_lang('"+data.captions.singular+"'):get_lang('"+data.captions.plural+"', msgs_count)); cExecute('$this.imap_functions.open_flagged_msg&msg_number="+data.alarms[i].msg_number+"&msg_folder="+data.alarms[i].msg_folder+"&alarm=true', show_msg);"; 
    1010                else     
    11                         var openMessageScript = "cExecute('$this.imap_functions.get_info_msg&msg_number="+data.alarmInRange[i].msg_number+"&msg_folder="+data.alarmInRange[i].msg_folder+"&alarm=true', show_msg);"; 
     11                        var openMessageScript = "cExecute('$this.imap_functions.get_info_msg&msg_number="+data.alarms[i].msg_number+"&msg_folder="+data.alarms[i].msg_folder+"&alarm=true', show_msg);"; 
    1212        %> 
    13                 <li class="message-item"> 
     13                <li class="message-item <%= data.alarms[i].id %>"> 
    1414                        <a onclick="<%=openMessageScript%>"> 
    15                                 <%= data.alarmInRange[i].a %> 
     15                                <%= data.alarms[i].a %> 
    1616                        </a> 
     17                        <%if( data.type == 'alarmDeadline'){%> 
     18                                <a onclick='cancelAlarm(this, "<%= data.alarms[i].id %>", "<%= data.alarms[i].msg_number %>", "<%= data.alarms[i].msg_folder %>");' class="tiny button delete">close</a> 
     19                        <%}%> 
    1720                </li> 
    1821        <% 
  • branches/2.4/prototype/modules/mail/templates/followupflag_configure.ejs

    r6294 r7228  
    7070                                <input type="checkbox" name="alarm" <%=(followupflagged.alarmDeadline) ? 'checked="checked"' : '' %> /><label><%= get_lang("Alarm")%>: </label> 
    7171                                <input type="text" name="alarmDate" class="date" size="12" value="<%=(followupflagged.alarmDeadline) ? followupflagged.alarmDeadline.toString('dd/MM/yyyy') : '' %>" />  
    72                                 <input type="hidden" name="alarmTime" class="time" size="8" value="00:01" /> 
     72                                <input type="text" name="alarmTime" class="time" size="8" disabled="disabled" value="<%=(followupflagged.alarmDeadline) ? followupflagged.alarmDeadline.toString('HH:mm') : '' %>" /> 
    7373                        </div>           
    7474                   <div class="completed-followup"> 
  • branches/2.4/prototype/modules/mail/templates/listContacts.ejs

    r6754 r7228  
    44                        css: 'recent',  
    55                        img: 'recent',  
    6                         text: 'Contato dinâmico' 
     6                        text: 'Contato Recente' 
    77                }, 
    8                 '/contacts':{ 
     8                '/personalContact':{ 
    99                        css: 'personal', 
    1010                        img: 'personal', 
    11                         text: 'Contato pessoal', 
     11                        text: 'Contato pessoal' 
    1212                }, 
    1313                '/sharedcontact':{ 
    1414                        css: 'personal', 
    1515                        img: 'sharedcontact', 
    16                         text: 'Contato compartilhado', 
     16                        text: 'Contato compartilhado' 
    1717                }, 
    1818                '/groups':{ 
    1919                        css: 'group', 
    2020                        img: 'group', 
    21                         text: 'Grupo pessoal', 
     21                        text: 'Grupo pessoal' 
    2222                }, 
    2323                '/sharedgroup':{ 
    2424                        css: 'group', 
    2525                        img: 'sharedgroup', 
    26                         text: 'Grupo compartilhado', 
     26                        text: 'Grupo compartilhado' 
    2727                } 
    2828        }  
  • branches/2.4/prototype/modules/mail/templates/new_message.ejs

    r7122 r7228  
    3838                }        
    3939                %> 
     40                <button class="button small reply-to-button"><%= get_lang("Reply to") %></button> 
    4041                <button class="button small rich-button"><%= (preferences.plain_text_editor == 1 ? get_lang("Rich Text") : get_lang("Simple Text")) %></button> 
    4142        </div> 
     
    9394                                </td> 
    9495                        </tr> 
     96            <tr class="reply-to-tr" style="display:none;"> 
     97                <td class="field" style="width: 6%;"> 
     98                    <%= get_lang("Reply to") %>: 
     99                </td> 
     100                <td class="value" style="width: 100%;"> 
     101                    <div class="email-area ui-corner-all"> 
     102                        <textarea class="new-message-input reply-to email-text" name="input_aux_reply_to" type="text" value="" autocomplete="off"></textarea>    
     103                    </div> 
     104                    <textarea class="new-message-input reply-to" name="input_reply_to" style="width:99%; resize: none;display : none;"></textarea> 
     105                </td> 
     106            </tr> 
    95107                        <tr class="subject-tr"> 
    96108                                <td class="field"> 
     
    125137                        <tr class="attachment"> 
    126138                                <td class="field"> 
     139                                        <%=get_lang("Attachments: ")%> 
    127140                                        <input style="display:none;" name="attDisposition<%= data.id %>" id="attDisposition<%= data.id%>" value="attachment"/> 
    128141                                </td> 
Note: See TracChangeset for help on using the changeset viewer.