Ignore:
Timestamp:
09/21/12 10:11:36 (12 years ago)
Author:
gustavo
Message:

Ticket #0000 - Criado novo modulo para o desenvolvimento do novo ExpressoMail?

Location:
sandbox/newExpressoMail
Files:
103 added
11 edited

Legend:

Unmodified
Added
Removed
  • sandbox/newExpressoMail/newExpressoMail/index.php

    r7212 r7265  
    1010                                                   ); 
    1111                                                   
    12         require_once( dirname(__FILE__).'/../prototype/api/config.php' ); 
     12        //require_once( dirname(__FILE__).'/../prototype/api/config.php' ); 
    1313         
    1414        require_once (dirname(__FILE__).'/../header.inc.php'); 
     
    2626        $imap_configs = $boemailadmin->getProfile($emailadmin_profile[0]['profileID']); 
    2727 
     28        include("inc/load_lang.php"); 
     29 
    2830        define( 'MODULESURL' , '../prototype/modules/newMail' ); 
    2931        define( 'PLUGINSURL' , '../prototype/plugins' ); 
  • sandbox/newExpressoMail/prototype/config/folder.ini

    r5341 r7265  
    11service = Imap 
     2 
     3[Imap.mapping] 
     4folderName = folder_name 
  • sandbox/newExpressoMail/prototype/modules/newMail/css/main.css

    r7210 r7265  
    11781178 
    11791179.folders-loading { 
    1180         background: url(../../../prototype/modules/mail/img/loader.gif) !important; 
     1180        background: url(../../../modules/mail/img/loader.gif) !important; 
    11811181        background-position: 0 0 !important; 
    11821182        background-repeat : no-repeat !important; 
     
    12011201.draggin-mail{ 
    12021202        float: left; 
    1203         background-image: url(../../../prototype/modules/mail/img/move.png); 
     1203        background-image: url(../img/move.png); 
    12041204        background-position: 0px 0px; 
    12051205        background-repeat:no-repeat; 
     
    12151215.draggin-folder{ 
    12161216        float: left; 
    1217         background-image: url(../../../prototype/modules/mail/img/folder.png); 
     1217        background-image: url(../img/folder.png); 
    12181218        background-position: 0px 0px; 
    12191219        background-repeat:no-repeat; 
     
    13471347 
    13481348.loading { 
    1349         background: url(../../../prototype/modules/mail/img/loader.gif) !important; 
     1349        background: url(../../../modules/mail/img/loader.gif) !important; 
    13501350        background-position: 0 0 !important; 
    13511351        background-repeat : no-repeat !important; 
     
    14731473        margin: 5px 5px 0 -5px; 
    14741474} 
     1475 
     1476 
     1477.ZebraDialog .ZebraDialog_Buttons .ZebraDialog_ButtonSelected{ 
     1478    border-color: #1B75BB; 
     1479} 
  • sandbox/newExpressoMail/prototype/modules/newMail/js/folder.js

    r7210 r7265  
    1 function changeFolder(folder, name){ 
    2         var messages = DataLayer.get("message", {criteria: {folder: folder, rows: 999999}}, true); 
    3         Grid.jqGrid('clearGridData').jqGrid('setGridParam',{data:messages.rows}).trigger("reloadGrid"); 
    4         setFolderTabName(name); 
    5         setFolderTabTotal(messages.records); 
    6         //TO-DO:: TROCAR ESSE METODO POR ALGUM LUGAR MAIS SEGURO 
    7         setFolderTabTotalUnread($("[id='"+folder+"']").find(".folder_unseen").html()); 
     1dashes = /\//gi; 
     2 
     3var Folder = { 
     4    open : 'INBOX', 
     5 
     6    remove : function(id, callback){ 
     7        DataLayer.remove("folder", id); 
     8        DataLayer.commit(false, false, callback); 
     9    }, 
     10 
     11    rename : function(id, value, callback){ 
     12        DataLayer.put("folder", {id:id, new:value}); 
     13        DataLayer.commit(false, false, callback); 
     14    }, 
     15 
     16    create : function(id, path,callback){ 
     17        DataLayer.put("folder", {name:id, path:path}); 
     18        DataLayer.commit(false, false, callback); 
     19    }, 
     20 
     21    move : function (id, value){ 
     22 
     23    }, 
     24 
     25    exportMessages : function(id, callback){ 
     26 
     27    }, 
     28 
     29    change : function(id, title){ 
     30        var data = DataLayer.get("folder", {criteria:{folder:id} }, true)[0]; 
     31        Tab.setFolderTotal(data.messageCount.total); 
     32        Tab.setFolderUnread(data.messageCount.unseen); 
     33        Tab.setFolderName(title ? title : data.commonName); 
     34        Folder.open = id; 
     35        Grid.jqGrid('clearGridData') 
     36            .jqGrid('setGridParam', { 
     37                url:  BASE_PATH+'REST.php?q=folder/'+id.replace(dashes, '.')+'/message' 
     38            }) 
     39            .trigger('reloadGrid', 
     40            [{ 
     41                page: 1 
     42            }] 
     43        ); 
     44    }, 
     45 
     46    acl : function(id){ 
     47 
     48    }, 
     49 
     50    info : function(id){ 
     51        return DataLayer.get("folder", {criteria:{folder:(id ? id : Folder.open)} }, true)[0]; 
     52    }, 
     53    special : {}, 
     54    init: function(){ 
     55        this.special[imap_configs.imapDefaultDraftsFolder] = "Rascunhos"; 
     56        this.special[imap_configs.imapDefaultSentFolder] = "Enviados"; 
     57        this.special[imap_configs.imapDefaultSpamFolder] = "Spam"; 
     58        this.special[imap_configs.imapDefaultTrashFolder] = "Lixeira"; 
     59    }, 
     60 
     61    delimiter : imap_configs.imapDelimiter 
    862} 
     63 
     64Folder.init(); 
  • sandbox/newExpressoMail/prototype/modules/newMail/js/formatters.js

    r7210 r7265  
    4343        } else { 
    4444                date = new Date(timestamp); 
    45                 var b = date.toString().split("T")[0].split("-"); 
    46                 var c = b[2] + "/" + b[1] + "/" + b[0]; 
    47                 return '<span class="datable">' + c + '</span>'; 
     45                var b = date.toString("dd/MM/yyyy"); 
     46                return '<span class="datable">' + b + '</span>'; 
    4847        } 
    4948} 
     49 
     50subjectFormatter = function(subject){ 
     51    var formatted = subject ? 
     52        (subject.length > 40 ? subject.substring(0, 37)+"..." : subject) : 
     53        "(Rascunho)"; 
     54    return '<span>' + formatted + '</span>'; 
     55} 
     56 
     57flags2Class = function(cellvalue, options, rowObject) { 
     58    var classes = ''; 
     59    cellvalue = cellvalue.split(','); 
     60    cell = { 
     61        Unseen: parseInt(cellvalue[0])  ? 'Unseen' : 'Seen', 
     62        Answered: parseInt(cellvalue[1]) ? 'Answered' : (parseInt(cellvalue[2]) ? 'Forwarded' : ''), 
     63        Flagged: parseInt(cellvalue[3]) ? 'Flagged' : '', 
     64        Recent: parseInt(cellvalue[4])  ? 'Recent' : '', 
     65        Draft: parseInt(cellvalue[5]) ? 'Draft' : '' 
     66    }; 
     67    for(var flag in cell){ 
     68        classes += '<span class="flags '+ (cell[flag]).toLowerCase() + '"' + (cell[flag] != "" ? 'title="'+ cell[flag]+'"' : '')+'> </span>'; 
     69    } 
     70 
     71    // REFAZER LABELS E ACOMPANHAMENTO 
     72    /*if(rowObject.labels){ 
     73        var titles = []; 
     74        var count = 0; 
     75        for(i in rowObject.labels){ 
     76            titles[count] = " "+rowObject.labels[i].name; 
     77            count++; 
     78        } 
     79        titles = titles.join(); 
     80        classes += '<span class="flags labeled" title="'+titles+'"> </span>'; 
     81    }else{ 
     82        classes += '<span class="flags"> </span>'; 
     83    } 
     84 
     85    if(rowObject.followupflagged){ 
     86        if(rowObject.followupflagged.followupflag.id < 7){ 
     87            var nameFollowupflag = get_lang(rowObject.followupflagged.followupflag.name); 
     88        }else{ 
     89            var nameFollowupflag = rowObject.followupflagged.followupflag.name; 
     90        } 
     91        if(rowObject.followupflagged.isDone == 1){ 
     92            classes += '<span class="flags followupflagged" title="'+nameFollowupflag+'" style="background:'+rowObject.followupflagged.backgroundColor+';"><img style=" margin-left:-3px;" src="../prototype/modules/mail/img/flagChecked.png"></span>'; 
     93        }else{ 
     94            classes += '<span class="flags followupflagged" title="'+nameFollowupflag+'" style="background:'+rowObject.followupflagged.backgroundColor+';"><img src="../prototype/modules/mail/img/flagEditor.png"></span>'; 
     95        } 
     96 
     97    }*/ 
     98 
     99    return classes; 
     100} 
  • sandbox/newExpressoMail/prototype/modules/newMail/js/init.js

    r7210 r7265  
     1var BASE_PATH = '../prototype/'; 
     2 
    13$(document).ready(function() { 
    24 
    3         Layout = $('#wrap').layout({  
    4                 applyDefaultStyles: true, 
    5                 north__size:            'auto', 
    6                 north__closable:        false,  
    7                 north__resizable:       false, 
    8                 north__slidable:        false,  
    9                 west__resizable:        false, 
    10                 west__slidable: false, 
    11                 center__maxSize : 0 
    12         }); 
     5    Layout = $('#wrap').layout({ 
     6        applyDefaultStyles: true, 
     7        north__size:            'auto', 
     8        north__closable:        false, 
     9        north__resizable:       false, 
     10        north__slidable:        false, 
     11        west__resizable:        false, 
     12        west__slidable: false, 
     13        center__maxSize : 0 
     14    }); 
    1315 
    14         $tabs = $("#tabs").wijtabs({  
    15                 tabTemplate: "<li role='tab' style='cursor: pointer;'><a href='#{href}'>#{label}</a><span class='ui-icon tab-close ui-icon-close close' title='Fechar Aba'>Fechar Aba</span></li>",  
    16                 panelTemplate: "<div id='{href}'></div>", 
    17                 add: function( event, ui ) {  
    18                         $tabs.wijtabs('select', '#' + $tabs.find("div:last").attr("id"));  
    19                         $tabs.find("span.tab-close:last").hover(function(){$(this).toggleClass("ui-icon-circle-close ui-icon-close");}, function(){$(this).toggleClass("ui-icon-circle-close ui-icon-close");}) 
    20                         $tabs.find("div:last").addClass("conteudo").attr("role", tab_role).append(tab_content);  
    21                 }, 
    22                 show: function(event, ui){ 
    23                         switch($( ui.panel ).attr("role")){ 
    24                                 case "new": 
    25                                 case "search": 
    26                                         $("#footer_menu").hide(); 
    27                                         break; 
    28                                 case "message": 
    29                                 case "draft": 
    30                                 case "folder": 
    31                                         $("#footer_menu").show(); 
    32                                         break; 
    33                         } 
    34                 }, 
    35                 select: function(event, ui) {  
    36                         lastIndexSelected = ui.index; 
    37                 }, 
    38                 scrollable: true, 
    39                 sortable: true, 
    40         hideOption: {  
    41                 blind: true,  
    42                 fade: false,  
    43                 duration: 200 
    44         }, 
    45         showOption: { 
    46                 blind: true,  
    47                 fade: false,  
    48                 duration: 200 
    49         } 
    50         });      
     16    $tabs = $("#tabs").wijtabs({ 
     17        tabTemplate: "<li role='tab' style='cursor: pointer;'><a href='#{href}'>#{label}</a><span class='ui-icon tab-close ui-icon-close close' title='Fechar Aba'>Fechar Aba</span></li>", 
     18        panelTemplate: "<div id='{href}'></div>", 
     19        add: function( event, ui ) { 
     20            $tabs.wijtabs('select', '#' + $tabs.find("div:last").attr("id")); 
     21            $tabs.find("span.tab-close:last").hover(function(){$(this).toggleClass("ui-icon-circle-close ui-icon-close");}, function(){$(this).toggleClass("ui-icon-circle-close ui-icon-close");}) 
     22            $tabs.find("div:last").addClass("conteudo").attr("role", tab_role).append(tab_content); 
     23        }, 
     24        show: function(event, ui){ 
     25            switch($( ui.panel ).attr("role")){ 
     26                case "new": 
     27                case "search": 
     28                    $("#footer_menu").hide(); 
     29                    break; 
     30                case "message": 
     31                case "draft": 
     32                case "folder": 
     33                    $("#footer_menu").show(); 
     34                    break; 
     35            } 
     36        }, 
     37        select: function(event, ui) { 
     38            lastIndexSelected = ui.index; 
     39        }, 
     40        scrollable: true, 
     41        sortable: true, 
     42        hideOption: { 
     43            blind: true, 
     44            fade: false, 
     45            duration: 200 
     46        }, 
     47        showOption: { 
     48            blind: true, 
     49            fade: false, 
     50            duration: 200 
     51        } 
     52    }); 
    5153 
    52         draw_new_tree_folder(); 
     54    draw_new_tree_folder(); 
    5355 
    54         $(".new-message-button").button({ 
    55                 icons: { 
    56                         secondary : "ui-icon-plusthick" 
    57                 } 
    58         }); 
     56    $(".new-message-button").button({ 
     57        icons: { 
     58            secondary : "ui-icon-plusthick" 
     59        } 
     60    }); 
    5961 
    60         var messages = DataLayer.get("message", {criteria : {folder: 'INBOX', rows: 999999}}, true); 
     62    var messages = DataLayer.get("message", {criteria : {folder: 'INBOX', rows: 999999}}); 
    6163 
    62         $('.button.config-menu').button({ 
    63             icons: { 
    64                         primary: "ui-icon-gear", 
    65                         secondary: "ui-icon-triangle-1-s" 
    66             }, 
    67             text: false 
    68         }); 
     64    $('.button.config-menu').button({ 
     65        icons: { 
     66            primary: "ui-icon-gear", 
     67            secondary: "ui-icon-triangle-1-s" 
     68        }, 
     69        text: false 
     70    }); 
    6971 
    70         var menus = $(".main-menus-content").clone(); 
    71         $(".main-menus-content").remove(); 
     72    var menus = $(".main-menus-content").clone(); 
     73    $(".main-menus-content").remove(); 
    7274 
    73         $(".this-module").button().next().button({ 
    74                 icons :{ 
    75                         primary: "ui-icon-triangle-1-s" 
    76                 }, 
    77                 text: false 
    78         }).parent().buttonset(); 
     75    $(".this-module").button().next().button({ 
     76        icons :{ 
     77            primary: "ui-icon-triangle-1-s" 
     78        }, 
     79        text: false 
     80    }).parent().buttonset(); 
    7981 
    80         $(".this-module").parent().append(menus); 
     82    $(".this-module").parent().append(menus); 
    8183 
    82         $('.this-module').next().menu({ 
    83                 content: $('.main-menus-content').html(), 
    84                 positionOpts: { 
    85                         posX: 'left',  
    86                         posY: 'bottom', 
    87                         offsetX: -140, 
    88                         offsetY: 0, 
    89                         directionH: 'right', 
    90                         directionV: 'down',  
    91                         detectH: true, // do horizontal collision detection   
    92                         detectV: true, // do vertical collision detection 
    93                         linkToFront: false 
    94                 }, 
    95                 flyOut: true, 
    96                 showSpeed: 100, 
    97                 crumbDefaultText: '>' 
    98         }); 
     84    $('.this-module').next().menu({ 
     85        content: $('.main-menus-content').html(), 
     86        positionOpts: { 
     87            posX: 'left', 
     88            posY: 'bottom', 
     89            offsetX: -140, 
     90            offsetY: 0, 
     91            directionH: 'right', 
     92            directionV: 'down', 
     93            detectH: true, // do horizontal collision detection 
     94            detectV: true, // do vertical collision detection 
     95            linkToFront: false 
     96        }, 
     97        flyOut: true, 
     98        showSpeed: 100, 
     99        crumbDefaultText: '>' 
     100    }); 
    99101 
    100         $('.block-horizontal-toolbox .main-config-menu').menu({ 
    101                 content: $('.main-config-menu-content').html(), 
    102                 positionOpts: { 
    103                         posX: 'left',  
    104                         posY: 'bottom', 
    105                         offsetX: -140, 
    106                         offsetY: 0, 
    107                         directionH: 'right', 
    108                         directionV: 'down',  
    109                         detectH: true, // do horizontal collision detection   
    110                         detectV: true, // do vertical collision detection 
    111                         linkToFront: false 
    112                 }, 
    113                 flyOut: true, 
    114                 showSpeed: 100, 
    115                 crumbDefaultText: '>' 
    116         }); 
    117         setFolderTabName("Caixa de Entrada"); 
    118         $(".folder-tab-total-msgs-number").html(messages.records); 
    119         setFolderTabTotalUnread($("#INBOX").find(".folder_unseen").html()); 
    120         Grid = $("#imap-folder-table-messages").jqGrid({ 
    121                 datatype: "local", 
    122                 data: messages.rows, 
    123                 colNames:['#',' ', 'De', 'Assunto', 'Data', 'Tamanho'], 
    124                 colModel:[ 
    125                         {name:'msg_number',index:'msg_number', width:45, hidden:true, sortable:false}, 
    126                         {name:'flags',index:'msg_number',edittype: 'image', width:60, sortable:false, title :false}, 
    127                         {name:'from.name',index:'msg_number', width:100, sortable:true}, 
    128                         {name:'subject',index:'subject', width:245, sortable:true}, 
    129                         {name:'timestamp',index:'timestamp', width:65, align:"center", sortable:true}, 
    130                         {name:'size',index:'size', width:55, align:"center", sortable:true, formatter: bytes2Size} 
    131                 ], 
    132                 rowNum:50, 
    133                 rowList:[10,25,50], 
    134                 pager: "#imap-folder-table-pager", 
    135                 sortorder: "desc", 
    136                 multiselect: true, 
    137                 autowidth: true, 
    138                 height : '85.5%', 
    139                 emptyrecords: 'A pasta nao contem nenhuma mensagem.', 
    140                 viewrecords: true 
    141         }); 
    142         Grid.jqGrid('bindKeys', {"onEnter":function( rowid ) { alert("You enter a row with id:"+rowid)} }); 
     102    $('.block-horizontal-toolbox .main-config-menu').menu({ 
     103        content: $('.main-config-menu-content').html(), 
     104        positionOpts: { 
     105            posX: 'left', 
     106            posY: 'bottom', 
     107            offsetX: -140, 
     108            offsetY: 0, 
     109            directionH: 'right', 
     110            directionV: 'down', 
     111            detectH: true, // do horizontal collision detection 
     112            detectV: true, // do vertical collision detection 
     113            linkToFront: false 
     114        }, 
     115        flyOut: true, 
     116        showSpeed: 100, 
     117        crumbDefaultText: '>' 
     118    }); 
     119    Tab.setFolderName("Caixa de Entrada"); 
     120    $(".folder-tab-total-msgs-number").html(messages.records); 
     121    Tab.setFolderUnread($("#INBOX").find(".folder_unseen").html()); 
     122    Grid = $("#imap-folder-table-messages").jqGrid({ 
     123        url:BASE_PATH + 'REST.php?q=folder/INBOX/message', 
     124        datatype: "json", 
     125        colNames:['#',' ', 'De', 'Assunto', 'Data', 'Tamanho'], 
     126        colModel:[ 
     127            {name:'msg_number',index:'msg_number', width:45, hidden:true, sortable:false}, 
     128            {name:'flags',index:'msg_number',edittype: 'image', width:60, formatter:flags2Class, sortable:false, title :false}, 
     129            {name:'from.name',index:'SORTFROM', width:100, sortable:true, formatter:subjectFormatter}, 
     130            {name:'subject',index:'SORTSUBJECT', width:245, sortable:true}, 
     131            {name:'timestamp',index:'SORTARRIVAL', width:65, align:"center", sortable:true, formatter: date2Time}, 
     132            {name:'size',index:'SORTSIZE', width:55, align:"center", sortable:true, formatter: bytes2Size} 
     133        ], 
     134        jsonReader : { 
     135            root:"rows", 
     136            page: "page", 
     137            total: "total", 
     138            records: "records", 
     139            repeatitems: false, 
     140            id: "0" 
     141        }, 
     142        rowNum:50, 
     143        rowList:[10,25,50], 
     144        pager: "#imap-folder-table-pager", 
     145        sortorder: "desc", 
     146        multiselect: true, 
     147        autowidth: true, 
     148        height : '85.5%', 
     149        emptyrecords: 'A pasta nao contem nenhuma mensagem.', 
     150        viewrecords: true, 
     151        loadComplete: function(data) { 
     152            lastLoadedMessages = data.rows; 
     153 
     154            // aplica o contador 
     155            $('.timable').each(function (i) { 
     156                $(this).countdown({ 
     157                    since: new Date(parseInt(this.title)), 
     158                    significant: 1, 
     159                    layout: 'h&aacute; {d<}{dn} {dl} {d>}{h<}{hn} {hl} {h>}{m<}{mn} {ml} {m>}{s<}{sn} {sl}{s>}', 
     160                    description: ' atr&aacute;s' 
     161                }); 
     162            }); 
     163        } 
     164    }); 
     165    Grid.jqGrid('bindKeys', {"onEnter":function( rowid ) { alert("You enter a row with id:"+rowid)} }); 
    143166}); 
  • sandbox/newExpressoMail/prototype/modules/newMail/js/message.js

    r7210 r7265  
    11function buildMessageButtons(content){ 
    2         var data = getTabData(); 
    3         //FLAGS BUTTON SET  
     2    var data = getTabData(); 
     3    //FLAGS BUTTON SET 
    44    content.find(".message-flags").find(".message-important-flag").button({ 
    5         icons: { 
    6                 primary: "ui-icon-notice" 
    7         }, 
     5        icons: { 
     6            primary: "ui-icon-notice" 
     7        }, 
    88        text: false 
    99    }).click(function(){ 
    10         var checked = $(this).attr("checked") == "checked" ? true : false; 
    11         set_message_flag(data.id, checked ? "flagged" : "unflagged", undefined, data.folder); 
    12         write_msg(get_lang('Message marked as ') + get_lang( checked ? "Important" : "Normal")); 
    13         refresh(); 
    14     }).end().find(".message-unread-flag").button({ 
    15         icons: { 
    16                 primary: "ui-icon-mail-closed" 
    17         }, 
    18         text: false 
    19     }).click(function(){ 
    20         var checked = $(this).attr("checked") == "checked" ? true : false; 
    21         set_message_flag(data.id, checked ? "unseen" : "seen", undefined, data.folder); 
    22         write_msg(get_lang('Message marked as ') + get_lang( checked ? "Unseen" : "Seen")); 
    23         refresh(); 
    24     }).end().find(".message-spam-flag").button({ 
    25         icons: { 
    26                 primary: "ui-icon-alert" 
    27         }, 
    28         text: false      
    29     }).click(function(){ 
    30         var checked = $(this).attr("checked") == "checked" ? true : false; 
    31         checked ? spam(data.folder, data.id,'null') : nospam(data.id,'null', data.folder); 
    32         removeTab(); 
    33         refresh(); 
    34     }).end().find(".message-followup-flag").button({ 
    35         icons: { 
    36                 primary: "ui-icon-flag" 
    37         }, 
    38         text: false 
    39     }); 
     10            var checked = $(this).attr("checked") == "checked" ? true : false; 
     11            set_message_flag(data.id, checked ? "flagged" : "unflagged", undefined, data.folder); 
     12            write_msg(get_lang('Message marked as ') + get_lang( checked ? "Important" : "Normal")); 
     13            refresh(); 
     14        }).end().find(".message-unread-flag").button({ 
     15            icons: { 
     16                primary: "ui-icon-mail-closed" 
     17            }, 
     18            text: false 
     19        }).click(function(){ 
     20            var checked = $(this).attr("checked") == "checked" ? true : false; 
     21            set_message_flag(data.id, checked ? "unseen" : "seen", undefined, data.folder); 
     22            write_msg(get_lang('Message marked as ') + get_lang( checked ? "Unseen" : "Seen")); 
     23            refresh(); 
     24        }).end().find(".message-spam-flag").button({ 
     25            icons: { 
     26                primary: "ui-icon-alert" 
     27            }, 
     28            text: false 
     29        }).click(function(){ 
     30            var checked = $(this).attr("checked") == "checked" ? true : false; 
     31            checked ? spam(data.folder, data.id,'null') : nospam(data.id,'null', data.folder); 
     32            removeTab(); 
     33            refresh(); 
     34        }).end().find(".message-followup-flag").button({ 
     35            icons: { 
     36                primary: "ui-icon-flag" 
     37            }, 
     38            text: false 
     39        }); 
    4040    content.find(".message-flags").buttonset(); 
    4141 
    4242    //MESSAGES ACTION NEXT PREV BUTTON SET 
    4343    content.find(".messages-controll").find(".message-prev").button({ 
    44         icons: { 
    45                 primary: "ui-icon-carat-1-w" 
    46         }, 
     44        icons: { 
     45            primary: "ui-icon-carat-1-w" 
     46        }, 
    4747        text: false 
    4848    }).click(function(){ 
    4949 
    50     }).next().button({ 
    51         icons: { 
    52                 primary: "ui-icon-carat-1-e" 
    53         }, 
    54         text: false 
    55     }); 
     50        }).next().button({ 
     51            icons: { 
     52                primary: "ui-icon-carat-1-e" 
     53            }, 
     54            text: false 
     55        }); 
    5656    content.find(".messages-controll").buttonset(); 
    5757 
    5858    // 
    5959    content.find(".message-forward").button({ 
    60         icons:{ 
    61                 primary: "ui-icon-arrowreturnthick-1-e" 
    62         }, 
    63         text : false 
    64     }); 
    65  
    66         var teste = content.find(".message-reply-menu-content").clone(); 
    67         content.find(".message-reply-menu-content").remove(); 
     60        icons:{ 
     61            primary: "ui-icon-arrowreturnthick-1-e" 
     62        }, 
     63        text : false 
     64    }); 
     65 
     66    var teste = content.find(".message-reply-menu-content").clone(); 
     67    content.find(".message-reply-menu-content").remove(); 
    6868 
    6969    content.find(".button.message-reply").button({ 
    70         icons:{ 
    71                 primary: "ui-icon-arrowreturnthick-1-w" 
    72         }, 
    73         text : false 
     70        icons:{ 
     71            primary: "ui-icon-arrowreturnthick-1-w" 
     72        }, 
     73        text : false 
    7474    }).next().button({ 
    75         icons:{ 
    76                 primary: "ui-icon-triangle-1-s" 
    77         }, 
    78         text : false 
    79     }).parent().buttonset(); 
    80  
    81         content.find("span.message-reply").append(teste); 
    82  
    83         content.find(".message-reply").next().menuPlugin({ 
    84                 content : content.find(".message-reply-menu-content").html(), 
    85                 positionOpts: { 
    86                         posX: 'left',  
    87                         posY: 'bottom', 
    88                         offsetX: -140, 
    89                         offsetY: 0, 
    90                         directionH: 'right', 
    91                         directionV: 'down',  
    92                         detectH: true, // do horizontal collision detection   
    93                         detectV: true, // do vertical collision detection 
    94                         linkToFront: false 
    95                 }, 
    96                 flyOut: true, 
    97                 showSpeed: 100, 
    98                 crumbDefaultText: '>' 
    99         }); 
     75            icons:{ 
     76                primary: "ui-icon-triangle-1-s" 
     77            }, 
     78            text : false 
     79        }).parent().buttonset(); 
     80 
     81    content.find("span.message-reply").append(teste); 
     82 
     83    content.find(".message-reply").next().menuPlugin({ 
     84        content : content.find(".message-reply-menu-content").html(), 
     85        positionOpts: { 
     86            posX: 'left', 
     87            posY: 'bottom', 
     88            offsetX: -140, 
     89            offsetY: 0, 
     90            directionH: 'right', 
     91            directionV: 'down', 
     92            detectH: true, // do horizontal collision detection 
     93            detectV: true, // do vertical collision detection 
     94            linkToFront: false 
     95        }, 
     96        flyOut: true, 
     97        showSpeed: 100, 
     98        crumbDefaultText: '>' 
     99    }); 
    100100 
    101101 
    102102    content.find(".button.message-edit").button({ 
    103         icons:{ 
    104                 primary: "ui-icon-pencil" 
    105         }, 
    106         text : false 
     103        icons:{ 
     104            primary: "ui-icon-pencil" 
     105        }, 
     106        text : false 
    107107    }); 
    108108    //BUTTON MORE AND TAGS 
     
    114114        text: false 
    115115    }).next().next().button({ 
    116         icons: { 
    117             secondary: "ui-icon-triangle-1-s" 
    118         }, 
    119         text: true 
    120         }); 
    121  
    122         content.find(".message-more").menuPlugin({ 
    123                 content : content.find(".message-more-menu-content").html(), 
    124                 flyOut: true, 
    125                 positionOpts: { 
    126                         posX: 'left',  
    127                         posY: 'bottom', 
    128                         offsetX: -140, 
    129                         offsetY: 0, 
    130                         directionH: 'right', 
    131                         directionV: 'down',  
    132                         detectH: true, // do horizontal collision detection   
    133                         detectV: true, // do vertical collision detection 
    134                         linkToFront: false 
    135                 }, 
    136                 showSpeed: 100, 
    137                 crumbDefaultText: '>' 
    138         }); 
    139                  
    140         content.find(".message-tags-menu-content ul li").remove(); 
    141         $.each(getLabels(), function(key,value){ 
    142                 content.find(".message-tags-menu-content ul") 
    143                 .append("<li id='"+key+"'><a onclick='labeledMessages("+ 
    144                         (key.match(/label(.*)/) ? key.match(/label(.*)/)[1] : 'configureLabels({applyToSelectedMessages:true})') 
    145                 +");' href='#'>"+value.name+"</a></li>").find("li:last"); 
    146         }); 
    147  
    148         content.find(".message-tags").menuPlugin({ 
    149                 content : content.find(".message-tags-menu-content").html(), 
    150                 flyOut: true, 
    151                 positionOpts: { 
    152                         posX: 'left',  
    153                         posY: 'bottom', 
    154                         offsetX: -140, 
    155                         offsetY: 0, 
    156                         directionH: 'right', 
    157                         directionV: 'down',  
    158                         detectH: true, // do horizontal collision detection   
    159                         detectV: true, // do vertical collision detection 
    160                         linkToFront: false 
    161                 }, 
    162                 showSpeed: 100, 
    163                 crumbDefaultText: '>' 
    164         }); 
     116            icons: { 
     117                secondary: "ui-icon-triangle-1-s" 
     118            }, 
     119            text: true 
     120        }); 
     121 
     122    content.find(".message-more").menuPlugin({ 
     123        content : content.find(".message-more-menu-content").html(), 
     124        flyOut: true, 
     125        positionOpts: { 
     126            posX: 'left', 
     127            posY: 'bottom', 
     128            offsetX: -140, 
     129            offsetY: 0, 
     130            directionH: 'right', 
     131            directionV: 'down', 
     132            detectH: true, // do horizontal collision detection 
     133            detectV: true, // do vertical collision detection 
     134            linkToFront: false 
     135        }, 
     136        showSpeed: 100, 
     137        crumbDefaultText: '>' 
     138    }); 
     139 
     140    content.find(".message-tags-menu-content ul li").remove(); 
     141    $.each(getLabels(), function(key,value){ 
     142        content.find(".message-tags-menu-content ul") 
     143            .append("<li id='"+key+"'><a onclick='labeledMessages("+ 
     144            (key.match(/label(.*)/) ? key.match(/label(.*)/)[1] : 'configureLabels({applyToSelectedMessages:true})') 
     145            +");' href='#'>"+value.name+"</a></li>").find("li:last"); 
     146    }); 
     147 
     148    content.find(".message-tags").menuPlugin({ 
     149        content : content.find(".message-tags-menu-content").html(), 
     150        flyOut: true, 
     151        positionOpts: { 
     152            posX: 'left', 
     153            posY: 'bottom', 
     154            offsetX: -140, 
     155            offsetY: 0, 
     156            directionH: 'right', 
     157            directionV: 'down', 
     158            detectH: true, // do horizontal collision detection 
     159            detectV: true, // do vertical collision detection 
     160            linkToFront: false 
     161        }, 
     162        showSpeed: 100, 
     163        crumbDefaultText: '>' 
     164    }); 
    165165    //REMOVE MESSAGE BUTTON 
    166166    content.find(".message-remove").button({ 
     
    170170        text: false 
    171171    }).click(function(){ 
    172         proxy_mensagens.delete_msgs(data.folder,data.id,'null'); 
    173         removeTab(); 
    174         refresh(); 
    175     }); 
     172            proxy_mensagens.delete_msgs(data.folder,data.id,'null'); 
     173            removeTab(); 
     174            refresh(); 
     175        }); 
    176176 
    177177    //PREFERENCES BUTTON 
     
    186186    //MESSAGE DETAILS  
    187187    content.find(".message-hide-show-details").click(function(){ 
    188         $(this).find("span").toggle(); 
    189         content.find(".message-details").toggle("blind"); 
     188        $(this).find("span").toggle(); 
     189        content.find(".message-details").toggle("blind"); 
    190190    }).hover( 
    191                 function(){ 
    192                         $(this).addClass("message-detail-hover"); 
    193                 }, 
    194                 function(){ 
    195                         $(this).removeClass("message-detail-hover"); 
    196                 } 
    197         ); 
     191        function(){ 
     192            $(this).addClass("message-detail-hover"); 
     193        }, 
     194        function(){ 
     195            $(this).removeClass("message-detail-hover"); 
     196        } 
     197    ); 
    198198 
    199199} 
     200 
     201var Message = { 
     202    open : function(id){ 
     203 
     204    }, 
     205 
     206    remove : function(ids){ 
     207 
     208    }, 
     209 
     210    flag : function(id, flag){ 
     211 
     212    }, 
     213 
     214    move : function(id){ 
     215 
     216    }, 
     217 
     218    print : function (){ 
     219 
     220    }, 
     221 
     222    report : function(id){ 
     223 
     224    }, 
     225 
     226    reply : function(id, type){ 
     227 
     228    }, 
     229 
     230    forward : function(id){ 
     231 
     232    }, 
     233 
     234    export : function(id){ 
     235 
     236    }, 
     237 
     238    create : function(id){ 
     239 
     240    } 
     241} 
  • sandbox/newExpressoMail/prototype/modules/newMail/js/newfoldertree.js

    r7210 r7265  
    55var cp_tree2; 
    66function unorphanize(root, element) { 
    7         var ok = false; 
    8         var f = 0; 
    9         for (var i=0; i<root.length; i++) { 
    10                 if (root[i].id == element.parentFolder) { 
    11                         element.children = new Array();  
    12                         root[i].children.push(element); 
    13                         return true; 
    14                 } else if (ok = unorphanize(root[i].children, element)) { 
    15                         break; 
    16                 } 
    17         } 
    18         return ok; 
     7    var ok = false; 
     8    var f = 0; 
     9    for (var i=0; i<root.length; i++) { 
     10        if (root[i].id == element.parentFolder) { 
     11            element.children = new Array(); 
     12            root[i].children.push(element); 
     13            return true; 
     14        } else if (ok = unorphanize(root[i].children, element)) { 
     15            break; 
     16        } 
     17    } 
     18    return ok; 
    1919} 
    2020 
    2121function count_unseen_children(folder){ 
    22         if(folder.children.length){ 
    23                 for(var i=0; i< folder.children.length; i++){ 
    24                         if(folder.children[i].children.length) 
    25                                 folder.children[i]['children_unseen'] = (folder.children[i]['children_unseen'] ? folder.children[i]['children_unseen'] : 0) + count_unseen_children(folder.children[i]); 
    26                          
    27                         folder['children_unseen'] = (folder['children_unseen'] ? folder['children_unseen'] : 0)+ (folder.children[i]['children_unseen'] ? folder.children[i]['children_unseen'] : 0) + parseInt(folder.children[i].messageCount.unseen);                         
    28                 } 
    29                 return folder['children_unseen']; 
    30         }else{ 
    31                 return parseInt(folder.messageCount.unseen); 
    32         } 
     22    if(folder.children.length){ 
     23        for(var i=0; i< folder.children.length; i++){ 
     24            if(folder.children[i].children.length) 
     25                folder.children[i]['children_unseen'] = (folder.children[i]['children_unseen'] ? folder.children[i]['children_unseen'] : 0) + count_unseen_children(folder.children[i]); 
     26 
     27            folder['children_unseen'] = (folder['children_unseen'] ? folder['children_unseen'] : 0)+ (folder.children[i]['children_unseen'] ? folder.children[i]['children_unseen'] : 0) + parseInt(folder.children[i].messageCount.unseen); 
     28        } 
     29        return folder['children_unseen']; 
     30    }else{ 
     31        return parseInt(folder.messageCount.unseen); 
     32    } 
    3333} 
    3434 
    3535function valid_tabs(children_of_this_folder, folder_to_move){ 
    36         var borders_open = $("#border_tr").children(); 
    37  
    38         var error = false; 
    39         for(var i = 1; i <= borders_open.length -2; i ++){ 
    40                 //VERIFICA A CADA FILHO DA PASTA SE ESTA eventNSAGEM E DESTA PASTA 
    41                 $.each(children_of_this_folder, function(index, value){ 
    42                         if($(children_of_this_folder[index]).attr('id') == openTab.imapBox[$(borders_open[i]).find("input[type=hidden]").attr("name")]){ 
    43                                 error = true; 
    44                                 write_msg(get_lang("One or more messages from any sub-folder are open")); 
    45                                 return error; 
    46                                  
    47                         } 
    48                 }); 
    49                 if(error){ 
    50                         return error; 
    51                 } 
    52                 //VERIFICA SE EXISTE NA PASTA A SER MOVIDA 
    53                 if(openTab.imapBox[$(borders_open[i]).find("input[type=hidden]").attr("name")] == folder_to_move){ 
    54                         error = true; 
    55                         write_msg(get_lang("One or more messages from this folder are open")); 
    56                         return error; 
    57                 } 
    58         } 
     36    var borders_open = $("#border_tr").children(); 
     37 
     38    var error = false; 
     39    for(var i = 1; i <= borders_open.length -2; i ++){ 
     40        //VERIFICA A CADA FILHO DA PASTA SE ESTA eventNSAGEM E DESTA PASTA 
     41        $.each(children_of_this_folder, function(index, value){ 
     42            if($(children_of_this_folder[index]).attr('id') == openTab.imapBox[$(borders_open[i]).find("input[type=hidden]").attr("name")]){ 
     43                error = true; 
     44                alert(("One or more messages from any sub-folder are open")); 
     45                return error; 
     46 
     47            } 
     48        }); 
     49        if(error){ 
     50            return error; 
     51        } 
     52        //VERIFICA SE EXISTE NA PASTA A SER MOVIDA 
     53        if(openTab.imapBox[$(borders_open[i]).find("input[type=hidden]").attr("name")] == folder_to_move){ 
     54            error = true; 
     55            alert(("One or more messages from this folder are open")); 
     56            return error; 
     57        } 
     58    } 
    5959} 
    6060 
    6161function draw_new_tree_folder(callback){ 
    62          
    63         var folders = DataLayer.get("folder", true); 
    64          
    65         if(!selected){ 
    66                 selected = "INBOX"; 
    67         } 
    68         /* 
    69         if( folders ) 
    70         { 
    71             folders = $.map( folders, function( folder ){ 
    72                   return { 
    73                     id: folder.folder_id, 
    74                     commonName: folder.folder_name, 
    75                     parentFolder: folder.folder_parent === "root" ? "" : folder.folder_parent, 
    76                     messageCount: { total : '', unseen : '0' } 
    77                   }; 
    78             }); 
    79         } 
    80         else 
    81             folders = DataLayer.get("folder", true); 
    82         */ 
    83         var tree1 = new Array(); 
    84         var tree2 = new Array(); 
    85         var tree3 = new Array(); 
    86         for (var i=0; i<folders.length; i++) { 
    87                 if (/^INBOX/.test(folders[i].id)) { 
    88                         if (!unorphanize(tree1, folders[i])) { 
    89                                 folders[i].children = new Array(); 
    90                                 tree1.push(folders[i]); 
    91                         } 
    92                 } 
    93                 else if (/^user/.test(folders[i].id)) { 
    94                         if (!unorphanize(tree2, folders[i])) { 
    95                                 folders[i].children = new Array(); 
    96                                 tree2.push(folders[i]); 
    97                         } 
    98                 } 
    99                 else if (/^local_messages/.test(folders[i].id)) { 
    100                         if (!unorphanize(tree3, folders[i])) { 
    101                                 folders[i].children = new Array(); 
    102                                 tree3.push(folders[i]); 
    103                         } 
    104                 } 
    105         } 
    106          
    107         for(var i =0; i<tree1.length; i++){ 
    108                 count_unseen_children(tree1[i]); 
    109         } 
    110         for(var i =0; i<tree2.length; i++){ 
    111                 count_unseen_children(tree2[i]); 
    112         } 
    113         for(var i =0; i<tree3.length; i++){ 
    114                 count_unseen_children(tree3[i]); 
    115         } 
    116         cp_tree1 = tree1; 
    117         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  
    124         var html = DataLayer.render('templates/detailedfoldertree.ejs', {folders: [tree1, tree2, tree3]}); 
    125         var folders_html = $(".imap-folders").html(html).find(".mainfoldertree").treeview({ 
    126                         persist: "cookie", 
    127                         animated: "fast" 
    128         }).find(".folder").unbind("click").click(function(event){ 
    129                  
    130                 // MUDANÇA DE PASTAS! 
    131                 var target = $(this);    
    132                  
    133                 if($(".folders-loading").length) 
    134                         return; 
    135                  
    136                 if($(event.target).parent().is(".float-menu")) 
    137                         return; 
    138                          
    139                 if( target.is('.collapsable-hitarea, .expandable-hitarea, .lastCollapsable-hitarea, .lastExpandable-hitarea, .treeview ,.folder_unseen,.ui-icon, .float-menu, .new_folder, .folders-loading, .head_folder, .shared-folders') ) 
    140                         return; 
    141                  
    142                 if( target.parent().find(".new_folder").length) 
    143                         return; 
    144                          
    145                 if( !target.attr('id') ) 
    146                         target = target.parent(); 
    147                 if (target[0] == $(".mainfoldertree")[0]) return; 
    148                 var uiId = target.attr('id'); 
    149                 var child = target.find('.folder'); 
    150                    
    151                 if(!target.is('.mainfoldertree > .expandable-hitarea, .mainfoldertree > .collapsable-hitarea')){ 
    152                         $('.filetree span.folder.selected').removeClass('selected'); 
    153                         $(target).children('.folder').addClass('selected'); 
    154                 } 
    155                 $(this).addClass("folders-loading"); 
    156                 selected = target.attr('id'); 
    157  
    158                 changeFolder(target.attr('id'), child.attr('title'));    
    159  
    160                 /*$.ajax({ 
    161                           url : "controller.php?"+ $.param( { action: "$this.imap_functions.get_folders_list", folder: target.attr('id') } ), 
    162                           success : function(data){ 
    163                                   data = connector.unserialize(data); 
    164  
    165                                   if(data) 
    166                                     build_quota(data); 
    167                           } 
    168                 });*/ 
    169                 $(".folders-loading").removeClass("folders-loading"); 
    170  
    171         }).filter('.followup-messages').click(function(event, ui){ 
    172                 search_emails("UNDELETED KEYWORD \"$Followupflagged\""); 
    173         }).end().end(); 
    174          
    175         folders_html.find('[id="'+selected+'"]').children().addClass("selected"); 
    176         $(".folder").not(".head_folder").not(".shared-folders").parent().find(".folder").not(".head_folder,.inbox,.drafts,.sent,.spam,.trash").draggable({ 
    177                 // DRAG DE PASTAS 
    178                 start : function(){ 
    179                         $(this).css("color", "gray"); 
    180                 }, 
    181                 stop : function(){ 
    182                         $(this).css("color", ""); 
    183                 }, 
    184                 revert: "invalid", 
    185                 helper: function(event){ 
    186                         if($.trim(($(this).text().split("["))[0]).length > 18) 
    187                                 return $(DataLayer.render('../prototype/modules/mail/templates/draggin_box.ejs', {texto : (($(this).text().split("["))[0]).substring(0,18) + "...", type: "folder"})); 
    188                         return $(DataLayer.render('../prototype/modules/mail/templates/draggin_box.ejs', {texto : (($(this).text().split("["))[0]), type: "folder"})); 
    189                 }, 
    190                 delay: 150, 
    191                 refreshPositions: true, 
    192                 zIndex : 2700, 
    193                 //scroll: true,  
    194                 //scrollSensitivity: 100, 
    195                 //scrollSpeed: 100, 
    196                 containment: "#divAppbox"  
    197         }).end().droppable({ 
    198                 //DROP DE PASTAS 
    199                 over : function(a, b){ 
    200                         //INICIO : SE A PASTA CONTER FILHAS EXPANDE  
    201                         over = $(this); 
    202                         $(this).addClass("folder-over"); 
    203                         if(($(this)[0] != $(this).parent().find(".head_folder")[0])) 
    204                                 if($(this).prev()[0]) 
    205                                         if($(this).parent().find(".expandable-hitarea")[0] == $(this).prev()[0]){ 
    206                                                 setTimeout(function(){ 
    207                                                         if(over.hasClass("folder-over")) 
    208                                                                 over.prev().trigger("click"); 
    209                                                 }, 500); 
    210                                                  
    211                                         } 
    212                         //FIM : SE A PASTA CONTER FILHAS EXPANDE 
    213                          
    214                         //SETA BORDA EM VOLTA DA PASTA 
    215                 }, 
    216                 out : function(){ 
    217                         //RETIRA BORDA EM VOLTA DA PASTA 
    218                         $(this).removeClass("folder-over"); 
    219                 }, 
    220                 drop : function(event, ui){ 
    221                         $(this).removeClass("folder-over"); 
    222                         if($(this).parent().attr('id') == undefined){ 
    223                                 var folder_to = 'INBOX'; 
    224                                 var to_folder_title = get_lang("Inbox"); 
    225                         }else{ 
    226                                 var folder_to = $(this).parent().attr('id'); 
    227                                 var to_folder_title = $(this).attr('title'); 
    228                         }                
    229                         var folder_to_move = ui.draggable.parent().attr('id'); 
    230                         var border_id = ui.draggable.find("input[type=hidden]").attr("name"); 
    231                         // eventnsagens : SE O DROP VIER DA LISTA DE eventNSAGENS : 
    232                         if(folder_to_move == "tbody_box"){ 
    233                                 move_msgs2(get_current_folder(), 'selected', 0, folder_to, to_folder_title,true); 
    234                                 return refresh(); 
    235                         } 
    236                         //SE FOR DE UMA PESQUISA RAPIDA 
    237                         else if(ui.draggable.parents('[id^="content_id_"]')[0]){ 
    238                                 move_search_msgs("content_id_"+border_id, folder_to, to_folder_title); 
    239                                 return refresh(); 
    240                         } 
    241                         // eventnsagens : SE O DROP VIER DE UMA ABA ABERTA 
    242                         else if(folder_to_move == "border_tr"){ 
    243                                 var id_msg = border_id.split("_")[0]; 
    244                                 folder = $("#input_folder_"+border_id+"_r")[0] ? $("#input_folder_"+border_id+"_r").val() : (openTab.imapBox[border_id] ? openTab.imapBox[border_id]:get_current_folder()); 
    245                                 alternate_border(border_id); 
    246                                 move_msgs2(folder, id_msg, border_id, folder_to, to_folder_title,true); 
    247                                 return refresh(); 
    248                         } 
    249                         // SE O DROP VIER DA LISTA DE PASTAS 
    250                         else{ 
    251                                 var folder_to_exist = folder_to_move.split(imap_configs.imapDelimiter);  
    252                                 folder_to_exist = folder_to+imap_configs.imapDelimiter+folder_to_exist[folder_to_exist.length-1]; 
    253                                  
    254                                 //VERIFICA SE EXISTE UMA eventNSAGENS ABERTA NESTA PASTA E NAS SUAS FILHAS 
    255  
    256                                 if(valid_tabs(ui.draggable.parent().find("li"), folder_to_move)){ 
    257                                         return; 
    258                                 } 
    259                                 //FIM : VERIFICA SE EXISTE UMA eventNSAGENS ABERTA NESTA PASTA E NAS SUAS FILHAS; 
    260                                  
    261                                 // VALIDA SE O USUARIO ESTA TENTANDO MOVER A PASTA PARA O eventSMO LOCAL 
    262                                 if(folder_to_exist == folder_to_move){ 
    263                                         return write_msg(get_lang("Thie folder is already in this place")); 
    264                                 } 
    265                                  
    266                                 // VALIDA SE O USUARIO ESTA TENTANDO MOVER A PASTA ABERTA NO momentO 
    267                                 if(folder_to_move == get_current_folder()){ 
    268                                         return write_msg(get_lang("It's not possible move this folder, because it is being used in the moment!")); 
    269                                 } 
    270                                  
    271                                 // VALIDA SE O USUARIO ESTA TENTANDO MOVER UMA PASTA FILHA DA PASTA ABERTA NO momentO 
    272                                 if(ui.draggable.parent().find(".selected")[0]){ 
    273                                         return write_msg(get_lang("It's not possible move this folder, because its subfolder is being used in the moment!")); 
    274                                 } 
    275                                  
    276                                 // VALIDA SE O USUARIO ESTA TENTANDO MOVER UMA PASTA PAI PARA DENTRO DE UMA FILHA 
    277                                 if(ui.draggable.parent().find('[id="'+folder_to+'"]')[0]){ 
    278                                         return write_msg(get_lang("It's not possible to move this folder to its subfolders!")); 
    279                                 }                                        
    280                                  
    281                                 if($('[id="'+folder_to_exist+'"]').length){ 
    282                                         return write_msg(get_lang("Can not move this folder to this location, because the target has already a folder with this name")); 
    283                                 } 
    284                                  
    285                                 $(this).addClass("folders-loading"); 
    286                                  
    287                                 $.ajax({ 
    288                                         url : "controller.php?"+ $.param( { action: "$this.imap_functions.move_folder", folder_to_move: folder_to_move, folder_to: folder_to } ), 
    289                                         success : function(data){ 
    290                                                 cExecute("$this.imap_functions.get_folders_list&onload=true", update_menu); 
    291                                                 data = connector.unserialize(data); 
    292                                                 if(data == "Permission denied"){ 
    293                                                         write_msg(get_lang("Permission denied")); 
    294                                                 }else if(data){ 
    295                                                         write_msg(get_lang("The folder was successfully moved")); 
    296                                                 } 
    297                                                 else{ 
    298                                                         write_msg(get_lang("ERROR moving your folder.")); 
    299                                                 } 
    300                                         } 
    301                                 }); 
    302                         } 
    303                 } 
    304         }); 
    305         $(".folder").not(".shared-folders").parent().find(".folder").hover( 
    306                 function(){ 
    307                         //CASO A LI NÃO TENHA UM eventNU FLUTUANTE AINDA, O eventNU É ADICIONADO! 
    308                         if(!$(this).children(":last").hasClass("float-menu") && !$(this).children(":last").hasClass("new_folder")){ 
    309                                 var folder_ = $(this); 
    310                                 var folder_name; 
    311                                 var shared = { 
    312                                         head : false, 
    313                                         valid : false 
    314                                 }; 
    315                                 if(folder_.parent().attr('id')){ 
    316                                         folder_name = folder_.parent().attr('id').split(imap_configs.imapDelimiter); 
    317                                         folder_name = folder_name[folder_name.length -1]; 
    318                                         shared.valid = folder_.parent().attr('id').search("user/") == 0 ? true : false; 
    319                                 }else 
    320                                         folder_name = "Root"; 
    321                                  
    322                                 if(shared.valid){ 
    323                                         shared.head = folder_.parent().attr('id').split(imap_configs.imapDelimiter).length == 2 ?  true : false; 
    324                                         var folder_name_parts = folder_.parent().attr('id').split(imap_configs.imapDelimiter); 
    325                                         var acls = shared_acls[folder_name_parts[0]+imap_configs.imapDelimiter+folder_name_parts[1]]; 
    326  
    327                                 } 
    328  
    329                                 html = DataLayer.render("/templates/float_folder_menu.ejs", {name_folder : folder_name, flag : shared, acl : acls});                                     
    330                                         //FUNÇÃO DO eventNU FLUTUANTE EDITAR < BEGIN 
    331                                 var esc = false; 
    332                                 $(folder_).append(html).find(".float-menu-edit").click(function(){ 
    333                                         var folder_id = $(this).parents(".closed:first").attr('id'); 
    334                                         var name = $.trim($(this).parents(".closed:first").find("span:first").text().split("[")[0]); 
    335                                         if($(this).parents(".closed:first").find("span:first").hasClass("selected")) 
    336                                                 return write_msg(get_lang("It's not possible rename this folder, because it is being used in the moment!")); 
    337                                         if($(this).parents(".closed:first").find(".selected").length) 
    338                                                 return write_msg(get_lang("It's not possible rename this folder, because its subfolder is being used in the moment!"));  
    339                                         if(valid_tabs($(this).parents("li:first").find("li"), folder_id)) 
    340                                                 return; 
    341                                         $(this).parents(".closed:first").find("span:first").empty().append("<input class='new_folder folder' type='text' maxlength='100'></input>"); 
    342                                         $(".new_folder").focus().keydown(function(event){ 
    343                                                 event.stopPropagation(); 
    344                                                 if(event.keyCode == 13){ 
    345                                                         if($(this).val() != ""){ 
    346                                                                 if($(this).val().match(/[\/\`\~\^\<\>\|\\\"\!\@\#\$\%\&\*\+\(\)\[\]\{\}\?;:]/gi)){ 
    347                                                                         return write_msg(get_lang("cannot create folder. try other folder name")); 
    348                                                                 } 
    349                                                                 var new_name = folder_id.replace(/[a-zA-Z0-9á-úÁ-Ú^\s_-]+$/, $(this).val()); 
    350                                                                 if($('[id="'+new_name+'"]').length){ 
    351                                                                         $(".folders-loading").removeClass("folders-loading"); 
    352                                                                         write_msg(get_lang("Mailbox already exists")); 
    353                                                                         return draw_new_tree_folder(); 
    354                                                                 } 
    355                                                                 $(".new_folder").parent().addClass("folders-loading"); 
    356                                                                 $.ajax({ 
    357                                                                         url : "controller.php?action=$this.imap_functions.ren_mailbox", 
    358                                                                         type : "POST", 
    359                                                                         data : "current="+folder_id+"&rename="+new_name, 
    360                                                                         success : function(data){ 
    361                                                                                 data = connector.unserialize(data); 
    362                                                                                 if(data == "Permission denied"){ 
    363                                                                                         $(".folders-loading").removeClass("folders-loading"); 
    364                                                                                         cExecute("$this.imap_functions.get_folders_list&onload=true", update_menu); 
    365                                                                                         return write_msg(get_lang("Permission denied")); 
    366                                                                                 } 
    367                                                                                 write_msg(get_lang("The folder was successfully rename")); 
    368                                                                                 cExecute("$this.imap_functions.get_folders_list&onload=true", update_menu); 
    369                                                                         } 
    370                                                                 }); 
    371                                                         } 
    372                                                 }else if( event.keyCode == 27){ 
    373                                                         draw_new_tree_folder(); 
    374                                                 } 
    375                                         }).focusout(function(){ 
    376                                                 draw_new_tree_folder(); 
    377                                         }).val(name); 
    378                                 }) 
    379                                 //FUNÇÃO DO eventNU FLUTUANTE EDITAR < END 
    380                                 //FUNÇÃO DO eventNU FLUTUANTE EXCLUIR < BEGIN 
    381                                 .end().find(".float-menu-remove").click(function(){ 
    382                                          
    383                                         var folder_id = $(this).parents(".closed:first").attr('id'); 
    384                                         var folder_name = "<strong>"+$.trim($(this).parents(".closed:first").find(".folder").text().split("[")[0])+"</strong>"; 
    385                                          
    386                                         if(valid_tabs($(this).parents("li:first").find("li"), folder_id)) 
    387                                                 return; 
    388                                         $(this).parents(".closed:first").find(".folder").addClass("folders-loading");  
    389                                          
    390                                         if($(this).parents(".closed:first").find("ul").length){ 
    391                                                 $(this).parents(".closed:first").find(".folder").removeClass("folders-loading"); 
    392                                                 return write_msg(get_lang("Delete/move subfolders first")); 
    393                                         } 
    394                                         if($(this).parents(".closed:first").find(".selected").length){ 
    395                                                 $(this).parents(".closed:first").find(".folder").removeClass("folders-loading"); 
    396                                                 return write_msg(get_lang("It's not possible delete this folder, because it is being used in the moment!"));  
    397                                         } 
    398                                         var folder_span = $(this); 
    399                                         var confirm_text = get_lang("Do you wish to exclude the folder "); 
    400                                         $.Zebra_Dialog(confirm_text+folder_name, { 
    401                                                 'type':     'question', 
    402                                                 'overlay_opacity': '0.5', 
    403                                                 'buttons':  [get_lang('Yes'), get_lang('No')], 
    404                                                 'onClose':  function(caption) { 
    405                                                         if(caption == get_lang('Yes')){ 
    406                                                                 $.ajax({ 
    407                                                                         url : "controller.php?action=$this.imap_functions.delete_mailbox", 
    408                                                                         type: "POST", 
    409                                                                         data : "del_past="+folder_id, 
    410                                                                         success : function(data){ 
    411                                                                                 data = connector.unserialize(data); 
    412                                                                                 if(data == "Mailbox does not exist"){ 
    413                                                                                         $(".folders-loading").removeClass("folders-loading"); 
    414                                                                                         return write_msg(get_lang("Mailbox does not exist")); 
    415                                                                                 }else if(data == "Permission denied"){ 
    416                                                                                         $(".folders-loading").removeClass("folders-loading"); 
    417                                                                                         cExecute("$this.imap_functions.get_folders_list&onload=true", update_menu); 
    418                                                                                         return write_msg(get_lang("Permission denied")); 
    419                                                                                 } 
    420                                                                                 write_msg(get_lang("The folder %1 was successfully removed", folder_name)); 
    421                                                                                 cExecute("$this.imap_functions.get_folders_list&onload=true", update_menu); 
    422                                                                         } 
    423                                                                 }); 
    424                                                         }else{ 
    425                                                                 folder_span.parents(".closed:first").find(".folder").removeClass("folders-loading"); 
    426                                                                 return; 
    427                                                         } 
    428                                                 } 
    429                                         }); 
    430                                         /* if(!confirm(confirm_text + folder_name)){ 
    431                                                 $(this).parents(".closed:first").find(".folder").removeClass("folders-loading"); 
    432                                                 return; 
    433                                         } */ 
    434                                 }) 
    435                                 //FUNÇÃO DO eventNU FLUTUANTE EXCLUIR < END 
    436                                 //FUNÇÃO DO eventNU FLUTUANTE NOVA PASTA < BEGIN 
    437                                 .end().find(".float-menu-new").click(function(){ 
    438                                         $(this).parents(".float-menu").hide(); 
    439                                         var selected_li = $(this).parents(".closed:first"); 
    440                                         if(selected_li.find("ul:first").length){ 
    441                                                 var new_folder = $("<li><input class='new_folder folder' type='text' maxlength='100'></input></li>").appendTo(selected_li.find("ul:first"));                                                             
    442                                                 if(selected_li.find(".expandable-hitarea").length){ 
    443                                                         selected_li.find(".expandable-hitarea").trigger('click'); 
    444                                                 } 
    445                                                 selected_li.find("ul:first").treeview({ 
    446                                                         add: new_folder 
    447                                                 }); 
    448                                         }else if(selected_li.length){ 
    449                                                 var new_folder = $("<ul><li><input class='new_folder folder' type='text' maxlength='100'></input></li></ul>").appendTo(selected_li);                                                             
    450                                                 selected_li.treeview({ 
    451                                                         add: new_folder 
    452                                                 }); 
    453                                         }else{ 
    454                                                 selected_li = $(this).parents(".head_folder").parent(); 
    455                                                 if($(this).parents(".head_folder").parent().find(".expandable-hitarea").length){ 
    456                                                         $(this).parents(".head_folder").parent().find(".expandable-hitarea").trigger('click'); 
    457                                                 } 
    458                                                 var new_folder = $("<ul><li><input class='new_folder folder' type='text' maxlength='100'></input></li></ul>").appendTo(selected_li);                                                             
    459                                                 selected_li.treeview({ 
    460                                                         add: new_folder 
    461                                                 }); 
    462                                         } 
    463                                          
    464                                         selected_li.find(".new_folder").Watermark("Nova Pasta").focus().keydown(function(event){ 
    465                                                 event.stopPropagation(); 
    466                                                 if(event.keyCode == 13){ 
    467                                                         if($(this).val().match(/[\`\~\^\<\>\|\\\"\!\@\#\$\%\&\*\+\(\)\[\]\{\}\?;:]/gi)){ 
    468                                                                 return write_msg(get_lang("cannot create folder. try other folder name")); 
    469                                                         } 
    470                                                         if($('[id="'+ (selected_li.attr('id')? selected_li.attr('id') : "INBOX") + imap_configs.imapDelimiter + $(this).val()+'"]').length){ 
    471                                                                 $(".folders-loading").removeClass("folders-loading"); 
    472                                                                 write_msg(get_lang("Mailbox already exists")); 
    473                                                                 return draw_new_tree_folder(); 
    474                                                         } 
    475                                                         $(".new_folder").parent().addClass("folders-loading"); 
    476                                                         create_new_folder(($(this).val() != "" ? $(this).val() : get_lang("New Folder")), (selected_li.attr('id')? selected_li.attr('id') : "INBOX")); 
    477                                                 }else if( event.keyCode == 27){ 
    478                                                         draw_new_tree_folder(); 
    479                                                 } 
    480                                         }).focusout(function(){ 
    481                                                 draw_new_tree_folder(); 
    482                                         }); 
    483                                 }).end().find(".float-menu-export").click(function(){ 
    484                                         //proxy_mensagens.export_all_messages($(this).parents("li:first").attr("id")) 
    485  
    486                                         var name_box = $(this).parents("li:first").attr("id"); 
    487                                         var name_folder = name_box.split(imap_configs.imapDelimiter)[name_box.split(imap_configs.imapDelimiter).length-1]; 
    488  
    489                                         var hand_export = function(data){ 
    490                                                 if(!data){ 
    491                                                         write_msg(get_lang('Error compressing messages (ZIP). Contact the administrator.')) 
    492                                                 }else if(data["empty_folder"]){ 
    493                                                         write_msg(get_lang("The selected folder is empty.")); 
    494                                                 }else 
    495                                                   download_attachments(null, null, data, null,null, name_folder +'.zip'); 
    496                                         } 
    497                                         cExecute("$this.exporteml.export_all",hand_export,"folder="+name_box);   
    498                                         write_msg(get_lang('You must wait while the messages will be exported...'));             
    499                                 }); 
    500                                 //FUNÇÃO DO eventNU FLUTUANTE NOVA PASTA < END 
    501                         } 
    502                         if(!$(".new_folder").length){ 
    503                                 $(this).find(".float-menu:first").css("display", ""); 
    504                         } 
    505                 }, 
    506                 function(){ 
    507                         $(this).find(".float-menu:first").hide(); 
    508                 } 
    509         ); 
     62 
     63    /* 
     64    * Verificar atualização do conceito folder após commit 
     65    * */ 
     66    DataLayer.remove("folder", false); 
     67 
     68    var folders = DataLayer.get("folder");//, true); 
     69 
     70    if(!selected){ 
     71        selected = "INBOX"; 
     72    } 
     73 
     74    var tree1 = new Array(); 
     75    var tree2 = new Array(); 
     76    var tree3 = new Array(); 
     77    for (var i=0; i<folders.length; i++) { 
     78        if (/^INBOX/.test(folders[i].id)) { 
     79            if (!unorphanize(tree1, folders[i])) { 
     80                folders[i].children = new Array(); 
     81                tree1.push(folders[i]); 
     82            } 
     83        } 
     84        else if (/^user/.test(folders[i].id)) { 
     85            if (!unorphanize(tree2, folders[i])) { 
     86                folders[i].children = new Array(); 
     87                tree2.push(folders[i]); 
     88            } 
     89        } 
     90        else if (/^local_messages/.test(folders[i].id)) { 
     91            if (!unorphanize(tree3, folders[i])) { 
     92                folders[i].children = new Array(); 
     93                tree3.push(folders[i]); 
     94            } 
     95        } 
     96    } 
     97 
     98    for(var i =0; i<tree1.length; i++){ 
     99        count_unseen_children(tree1[i]); 
     100    } 
     101    for(var i =0; i<tree2.length; i++){ 
     102        count_unseen_children(tree2[i]); 
     103    } 
     104    for(var i =0; i<tree3.length; i++){ 
     105        count_unseen_children(tree3[i]); 
     106    } 
     107    cp_tree1 = tree1; 
     108    cp_tree2 = tree2; 
     109    var shared_acls = {}; 
     110 
     111    $.each(cp_tree2, function(index, value){ 
     112        shared_acls[value.id] = value.acl_share; 
     113    }); 
     114 
     115    var html = DataLayer.render('templates/detailedfoldertree.ejs', {folders: [tree1, tree2, tree3]}); 
     116    var folders_html = $(".imap-folders").html(html).find(".mainfoldertree").treeview({ 
     117        persist: "cookie", 
     118        animated: "fast" 
     119    }).find(".folder").unbind("click").click(function(event){ 
     120 
     121            // MUDANÇA DE PASTAS! 
     122            var target = $(this); 
     123 
     124            if($(".folders-loading").length) 
     125                return; 
     126 
     127            if($(event.target).parent().is(".float-menu")) 
     128                return; 
     129 
     130            if( target.is('.collapsable-hitarea, .expandable-hitarea, .lastCollapsable-hitarea, .lastExpandable-hitarea, .treeview ,.folder_unseen,.ui-icon, .float-menu, .new_folder, .folders-loading, .head_folder, .shared-folders') ) 
     131                return; 
     132 
     133            if( target.parent().find(".new_folder").length) 
     134                return; 
     135 
     136            if( !target.attr('id') ) 
     137                target = target.parent(); 
     138            if (target[0] == $(".mainfoldertree")[0]) return; 
     139            var uiId = target.attr('id'); 
     140            var child = target.find('.folder'); 
     141 
     142            if(!target.is('.mainfoldertree > .expandable-hitarea, .mainfoldertree > .collapsable-hitarea')){ 
     143                $('.filetree span.folder.selected').removeClass('selected'); 
     144                $(target).children('.folder').addClass('selected'); 
     145            } 
     146            $(this).addClass("folders-loading"); 
     147            selected = target.attr('id'); 
     148 
     149            Folder.change(target.attr('id'), child.attr('title')); 
     150 
     151            /*$.ajax({ 
     152             url : "controller.php?"+ $.param( { action: "$this.imap_functions.get_folders_list", folder: target.attr('id') } ), 
     153             success : function(data){ 
     154             data = connector.unserialize(data); 
     155 
     156             if(data) 
     157             build_quota(data); 
     158             } 
     159             });*/ 
     160            $(".folders-loading").removeClass("folders-loading"); 
     161 
     162        }).filter('.followup-messages').click(function(event, ui){ 
     163            search_emails("UNDELETED KEYWORD \"$Followupflagged\""); 
     164        }).end().end(); 
     165 
     166    folders_html.find('[id="'+selected+'"]').children().addClass("selected"); 
     167    $(".folder").not(".head_folder").not(".shared-folders").parent().find(".folder").not(".head_folder,.inbox,.drafts,.sent,.spam,.trash").draggable({ 
     168        // DRAG DE PASTAS 
     169        start : function(){ 
     170            $(this).css("color", "gray"); 
     171        }, 
     172        stop : function(){ 
     173            $(this).css("color", ""); 
     174        }, 
     175        revert: "invalid", 
     176        helper: function(event){ 
     177            if($.trim(($(this).text().split("["))[0]).length > 18) 
     178                return $(DataLayer.render('templates/draggin_box.ejs', {texto : (($(this).text().split("["))[0]).substring(0,18) + "...", type: "folder"})); 
     179            return $(DataLayer.render('templates/draggin_box.ejs', {texto : (($(this).text().split("["))[0]), type: "folder"})); 
     180        }, 
     181        delay: 150, 
     182        refreshPositions: true, 
     183        zIndex : 2700, 
     184        //scroll: true, 
     185        //scrollSensitivity: 100, 
     186        //scrollSpeed: 100, 
     187        containment: "#divAppbox" 
     188    }).end().droppable({ 
     189            //DROP DE PASTAS 
     190            over : function(a, b){ 
     191                //INICIO : SE A PASTA CONTER FILHAS EXPANDE 
     192                over = $(this); 
     193                $(this).addClass("folder-over"); 
     194                if(($(this)[0] != $(this).parent().find(".head_folder")[0])) 
     195                    if($(this).prev()[0]) 
     196                        if($(this).parent().find(".expandable-hitarea")[0] == $(this).prev()[0]){ 
     197                            setTimeout(function(){ 
     198                                if(over.hasClass("folder-over")) 
     199                                    over.prev().trigger("click"); 
     200                            }, 500); 
     201 
     202                        } 
     203                //FIM : SE A PASTA CONTER FILHAS EXPANDE 
     204 
     205                //SETA BORDA EM VOLTA DA PASTA 
     206            }, 
     207            out : function(){ 
     208                //RETIRA BORDA EM VOLTA DA PASTA 
     209                $(this).removeClass("folder-over"); 
     210            }, 
     211            drop : function(event, ui){ 
     212                $(this).removeClass("folder-over"); 
     213                if($(this).parent().attr('id') == undefined){ 
     214                    var folder_to = 'INBOX'; 
     215                    var to_folder_title = ("Inbox"); 
     216                }else{ 
     217                    var folder_to = $(this).parent().attr('id'); 
     218                    var to_folder_title = $(this).attr('title'); 
     219                } 
     220                var folder_to_move = ui.draggable.parent().attr('id'); 
     221                var border_id = ui.draggable.find("input[type=hidden]").attr("name"); 
     222                // eventnsagens : SE O DROP VIER DA LISTA DE eventNSAGENS : 
     223                if(folder_to_move == "tbody_box"){ 
     224                    move_msgs2(get_current_folder(), 'selected', 0, folder_to, to_folder_title,true); 
     225                    return refresh(); 
     226                } 
     227                //SE FOR DE UMA PESQUISA RAPIDA 
     228                else if(ui.draggable.parents('[id^="content_id_"]')[0]){ 
     229                    move_search_msgs("content_id_"+border_id, folder_to, to_folder_title); 
     230                    return refresh(); 
     231                } 
     232                // eventnsagens : SE O DROP VIER DE UMA ABA ABERTA 
     233                else if(folder_to_move == "border_tr"){ 
     234                    var id_msg = border_id.split("_")[0]; 
     235                    folder = $("#input_folder_"+border_id+"_r")[0] ? $("#input_folder_"+border_id+"_r").val() : (openTab.imapBox[border_id] ? openTab.imapBox[border_id]:get_current_folder()); 
     236                    alternate_border(border_id); 
     237                    move_msgs2(folder, id_msg, border_id, folder_to, to_folder_title,true); 
     238                    return refresh(); 
     239                } 
     240                // SE O DROP VIER DA LISTA DE PASTAS 
     241                else{ 
     242                    var folder_to_exist = folder_to_move.split(imap_configs.imapDelimiter); 
     243                    folder_to_exist = folder_to+imap_configs.imapDelimiter+folder_to_exist[folder_to_exist.length-1]; 
     244 
     245                    //VERIFICA SE EXISTE UMA eventNSAGENS ABERTA NESTA PASTA E NAS SUAS FILHAS 
     246 
     247                    if(valid_tabs(ui.draggable.parent().find("li"), folder_to_move)){ 
     248                        return; 
     249                    } 
     250                    //FIM : VERIFICA SE EXISTE UMA eventNSAGENS ABERTA NESTA PASTA E NAS SUAS FILHAS; 
     251 
     252                    // VALIDA SE O USUARIO ESTA TENTANDO MOVER A PASTA PARA O eventSMO LOCAL 
     253                    if(folder_to_exist == folder_to_move){ 
     254                        return alert("Thie folder is already in this place"); 
     255                    } 
     256 
     257                    // VALIDA SE O USUARIO ESTA TENTANDO MOVER A PASTA ABERTA NO momentO 
     258                    if(folder_to_move == Folder.open){ 
     259                        return alert("It's not possible move this folder, because it is being used in the moment!"); 
     260                    } 
     261 
     262                    // VALIDA SE O USUARIO ESTA TENTANDO MOVER UMA PASTA FILHA DA PASTA ABERTA NO momentO 
     263                    if(ui.draggable.parent().find(".selected")[0]){ 
     264                        return alert(("It's not possible move this folder, because its subfolder is being used in the moment!")); 
     265                    } 
     266 
     267                    // VALIDA SE O USUARIO ESTA TENTANDO MOVER UMA PASTA PAI PARA DENTRO DE UMA FILHA 
     268                    if(ui.draggable.parent().find('[id="'+folder_to+'"]')[0]){ 
     269                        return alert(("It's not possible to move this folder to its subfolders!")); 
     270                    } 
     271 
     272                    if($('[id="'+folder_to_exist+'"]').length){ 
     273                        return alert(("Can not move this folder to this location, because the target has already a folder with this name")); 
     274                    } 
     275 
     276                    $(this).addClass("folders-loading"); 
     277 
     278                    $.ajax({ 
     279                        url : "../expressoMail1_2/controller.php?"+ $.param( { action: "$this.imap_functions.move_folder", folder_to_move: folder_to_move, folder_to: folder_to } ), 
     280                        success : function(data){ 
     281                            draw_new_tree_folder(); 
     282                            data = connector.unserialize(data); 
     283                            if(data == "Permission denied"){ 
     284                                alert(("Permission denied")); 
     285                            }else if(data){ 
     286                                alert(("The folder was successfully moved")); 
     287                            } 
     288                            else{ 
     289                                alert(("ERROR moving your folder.")); 
     290                            } 
     291                        } 
     292                    }); 
     293                } 
     294            } 
     295        }); 
     296    $(".folder").not(".shared-folders").parent().find(".folder").hover( 
     297        function(){ 
     298            //CASO A LI NÃO TENHA UM eventNU FLUTUANTE AINDA, O eventNU É ADICIONADO! 
     299            if(!$(this).children(":last").hasClass("float-menu") && !$(this).children(":last").hasClass("new_folder")){ 
     300                var folder_ = $(this); 
     301                var folder_name; 
     302                var shared = { 
     303                    head : false, 
     304                    valid : false 
     305                }; 
     306                if(folder_.parent().attr('id')){ 
     307                    folder_name = folder_.parent().attr('id').split(imap_configs.imapDelimiter); 
     308                    folder_name = folder_name[folder_name.length -1]; 
     309                    shared.valid = folder_.parent().attr('id').search("user/") == 0 ? true : false; 
     310                }else 
     311                    folder_name = "Root"; 
     312 
     313                if(shared.valid){ 
     314                    shared.head = folder_.parent().attr('id').split(imap_configs.imapDelimiter).length == 2 ?  true : false; 
     315                    var folder_name_parts = folder_.parent().attr('id').split(imap_configs.imapDelimiter); 
     316                    var acls = shared_acls[folder_name_parts[0]+imap_configs.imapDelimiter+folder_name_parts[1]]; 
     317 
     318                } 
     319 
     320                html = DataLayer.render("/templates/float_folder_menu.ejs", {name_folder : folder_name, flag : shared, acl : acls}); 
     321                //FUNÇÃO DO eventNU FLUTUANTE EDITAR < BEGIN 
     322                var esc = false; 
     323                $(folder_).append(html).find(".float-menu-edit").click(function(){ 
     324                    var folder_id = $(this).parents(".closed:first").attr('id'); 
     325                    var name = $.trim($(this).parents(".closed:first").find("span:first").text().split("[")[0]); 
     326                    if($(this).parents(".closed:first").find("span:first").hasClass("selected")) 
     327                        return alert(("It's not possible rename this folder, because it is being used in the moment!")); 
     328                    if($(this).parents(".closed:first").find(".selected").length) 
     329                        return alert(("It's not possible rename this folder, because its subfolder is being used in the moment!")); 
     330                    if(valid_tabs($(this).parents("li:first").find("li"), folder_id)) 
     331                        return; 
     332                    $(this).parents(".closed:first").find("span:first").empty().append("<input class='new_folder folder' type='text' maxlength='100'></input>"); 
     333                    $(".new_folder").focus().keydown(function(event){ 
     334                        event.stopPropagation(); 
     335                        if(event.keyCode == 13){ 
     336                            if($(this).val() != ""){ 
     337                                if($(this).val().match(/[\/\`\~\^\<\>\|\\\"\!\@\#\$\%\&\*\+\(\)\[\]\{\}\?;:]/gi)){ 
     338                                    return alert(("cannot create folder. try other folder name")); 
     339                                } 
     340                                var new_name = folder_id.replace(/[a-zA-Z0-9á-úÁ-Ú^\s_-]+$/, $(this).val()); 
     341                                if($('[id="'+new_name+'"]').length){ 
     342                                    $(".folders-loading").removeClass("folders-loading"); 
     343                                    alert(("Mailbox already exists")); 
     344                                    return draw_new_tree_folder(); 
     345                                } 
     346                                $(".new_folder").parent().addClass("folders-loading"); 
     347                                Folder.rename(folder_id,new_name, function(){ 
     348                                    draw_new_tree_folder(); 
     349                                }); 
     350                            } 
     351                        }else if( event.keyCode == 27){ 
     352                            draw_new_tree_folder(); 
     353                        } 
     354                    }).focusout(function(){ 
     355                            draw_new_tree_folder(); 
     356                        }).val(name); 
     357                }) 
     358                    //FUNÇÃO DO eventNU FLUTUANTE EDITAR < END 
     359                    //FUNÇÃO DO eventNU FLUTUANTE EXCLUIR < BEGIN 
     360                    .end().find(".float-menu-remove").click(function(){ 
     361                        var folder_id = $(this).parents(".closed:first").attr('id'); 
     362                        var folder_name = "<strong>"+$.trim($(this).parents(".closed:first").find(".folder").text().split("[")[0])+"</strong>"; 
     363 
     364                        if(valid_tabs($(this).parents("li:first").find("li"), folder_id)) 
     365                            return; 
     366                        $(this).parents(".closed:first").find(".folder").addClass("folders-loading"); 
     367 
     368                        if($(this).parents(".closed:first").find("ul").length){ 
     369                            $(this).parents(".closed:first").find(".folder").removeClass("folders-loading"); 
     370                            return alert("Delete/move subfolders first"); 
     371                        } 
     372                        if($(this).parents(".closed:first").find(".selected").length){ 
     373                            $(this).parents(".closed:first").find(".folder").removeClass("folders-loading"); 
     374                            return alert("It's not possible delete this folder, because it is being used in the moment!"); 
     375                        } 
     376                        var folder_span = $(this); 
     377                        confirm("Do you wish to exclude the folder "+folder_name,function(confirm){ 
     378                            if(confirm){ 
     379                                Folder.remove(folder_id, function(){ 
     380                                    draw_new_tree_folder(); 
     381                                }); 
     382                            }else{ 
     383                                folder_span.parents(".closed:first").find(".folder").removeClass("folders-loading"); 
     384                                return; 
     385                            } 
     386                        }); 
     387 
     388                        /* if(!confirm(confirm_text + folder_name)){ 
     389                         $(this).parents(".closed:first").find(".folder").removeClass("folders-loading"); 
     390                         return; 
     391                         } */ 
     392                    }) 
     393                    //FUNÇÃO DO eventNU FLUTUANTE EXCLUIR < END 
     394                    //FUNÇÃO DO eventNU FLUTUANTE NOVA PASTA < BEGIN 
     395                    .end().find(".float-menu-new").click(function(){ 
     396                        $(this).parents(".float-menu").hide(); 
     397                        var selected_li = $(this).parents(".closed:first"); 
     398                        if(selected_li.find("ul:first").length){ 
     399                            var new_folder = $("<li><input class='new_folder folder' type='text' maxlength='100'></input></li>").appendTo(selected_li.find("ul:first")); 
     400                            if(selected_li.find(".expandable-hitarea").length){ 
     401                                selected_li.find(".expandable-hitarea").trigger('click'); 
     402                            } 
     403                            selected_li.find("ul:first").treeview({ 
     404                                add: new_folder 
     405                            }); 
     406                        }else if(selected_li.length){ 
     407                            var new_folder = $("<ul><li><input class='new_folder folder' type='text' maxlength='100'></input></li></ul>").appendTo(selected_li); 
     408                            selected_li.treeview({ 
     409                                add: new_folder 
     410                            }); 
     411                        }else{ 
     412                            selected_li = $(this).parents(".head_folder").parent(); 
     413                            if($(this).parents(".head_folder").parent().find(".expandable-hitarea").length){ 
     414                                $(this).parents(".head_folder").parent().find(".expandable-hitarea").trigger('click'); 
     415                            } 
     416                            var new_folder = $("<ul><li><input class='new_folder folder' type='text' maxlength='100'></input></li></ul>").appendTo(selected_li); 
     417                            selected_li.treeview({ 
     418                                add: new_folder 
     419                            }); 
     420                        } 
     421 
     422                        selected_li.find(".new_folder").Watermark("Nova Pasta").focus().keydown(function(event){ 
     423                            event.stopPropagation(); 
     424                            if(event.keyCode == 13){ 
     425                                if($(this).val().match(/[\`\~\^\<\>\|\\\"\!\@\#\$\%\&\*\+\(\)\[\]\{\}\?;:]/gi)){ 
     426                                    return alert(("cannot create folder. try other folder name")); 
     427                                } 
     428                                if($('[id="'+ (selected_li.attr('id')? selected_li.attr('id') : "INBOX") + imap_configs.imapDelimiter + $(this).val()+'"]').length){ 
     429                                    $(".folders-loading").removeClass("folders-loading"); 
     430                                    alert(("Mailbox already exists")); 
     431                                    return draw_new_tree_folder(); 
     432                                } 
     433                                $(".new_folder").parent().addClass("folders-loading"); 
     434                                Folder.create($(this).val(), selected_li.attr('id'), function(){ 
     435                                    draw_new_tree_folder(); 
     436                                }); 
     437                            }else if( event.keyCode == 27){ 
     438                                draw_new_tree_folder(); 
     439                            } 
     440                        }).focusout(function(){ 
     441                                draw_new_tree_folder(); 
     442                            }); 
     443                    }).end().find(".float-menu-export").click(function(){ 
     444                        //proxy_mensagens.export_all_messages($(this).parents("li:first").attr("id")) 
     445 
     446                        var name_box = $(this).parents("li:first").attr("id"); 
     447                        var name_folder = name_box.split(imap_configs.imapDelimiter)[name_box.split(imap_configs.imapDelimiter).length-1]; 
     448 
     449                        var hand_export = function(data){ 
     450                            if(!data){ 
     451                                alert(('Error compressing messages (ZIP). Contact the administrator.')) 
     452                            }else if(data["empty_folder"]){ 
     453                                alert(("The selected folder is empty.")); 
     454                            }else 
     455                                download_attachments(null, null, data, null,null, name_folder +'.zip'); 
     456                        } 
     457                        cExecute("$this.exporteml.export_all",hand_export,"folder="+name_box); 
     458                        alert(('You must wait while the messages will be exported...')); 
     459                    }); 
     460                //FUNÇÃO DO eventNU FLUTUANTE NOVA PASTA < END 
     461            } 
     462            if(!$(".new_folder").length){ 
     463                $(this).find(".float-menu:first").css("display", ""); 
     464            } 
     465        }, 
     466        function(){ 
     467            $(this).find(".float-menu:first").hide(); 
     468        } 
     469    ); 
    510470} 
    511471 
  • sandbox/newExpressoMail/prototype/modules/newMail/js/tabs.js

    r7210 r7265  
    1 var countID = 2; 
    21var tab_content = ""; 
    32var tab_role = ""; 
    4 var lastIndexSelected = 0; 
    5 /*  
    6         method : createTab 
    7         descrition : create a new tab 
    8         params : { 
    9                 label : Label of the tab 
    10                 * role : Tab type 
    11                 * content : Content of the tab 
    12                 * href : Tab id  
    13                 * callback : a function 
    14         } 
    15         comments : { 
    16                 #1 : if the user just set the label, a tab with blank content and a dynamic id is created 
    17                 #2 : if a tab with a set href already exists, don't duplicate, this function only select the tab  
    18                 #3 : if the role is  
    19         * = Optional 
    20 */ 
    213 
    22 function createTab(label, role, content,href, callback){ 
    23         if( !$("#tabs-"+href).length){ 
    24                 tab_content = content ? content : ""; 
    25                 tab_role = role ? role : "new"; 
    26                 countID++; 
    27                 $tabs.wijtabs("add", "#tabs-"+(href ? href : countID), (label.length > 21 ? label.substring(0, 18)+"..." : label)); 
    28                 if(typeof(callback) == 'function')  
    29                         callback($("#ptabs_"+(href ? href : countID))); 
    30                 else 
    31                         return $("#tabs-"+(href ? href : countID)); 
    32         }else{ 
    33                 $tabs.wijtabs( "select", indexTab("#tabs-"+href) ); 
    34         } 
     4var Tab = { 
     5 
     6    /* 
     7     method : createTab 
     8     descrition : create a new tab 
     9     params : { 
     10     label : Label of the tab 
     11     * role : Tab type 
     12     * content : Content of the tab 
     13     * href : Tab id 
     14     * callback : a function 
     15     } 
     16     comments : { 
     17     #1 : if the user just set the label, a tab with blank content and a dynamic id is created 
     18     #2 : if a tab with a set href already exists, don't duplicate, this function only select the tab 
     19     #3 : if the role is 
     20     * = Optional 
     21     */ 
     22    create : function(label, role, content,href, callback){ 
     23        if( !$("#tabs-"+href).length){ 
     24            tab_content = content ? content : ""; 
     25            tab_role = role ? role : "new"; 
     26            Tab.count++; 
     27            $tabs.wijtabs("add", "#tabs-"+(href ? href : Tab.count), (label.length > 21 ? label.substring(0, 18)+"..." : label)); 
     28            if(typeof(callback) == 'function') 
     29                callback($("#ptabs_"+(href ? href : Tab.count))); 
     30            else 
     31                return $("#tabs-"+(href ? href : Tab.count)); 
     32        }else{ 
     33            $tabs.wijtabs( "select", Tab.index("#tabs-"+href) ); 
     34        } 
     35    }, 
     36 
     37 
     38    /* 
     39     method : removeTab 
     40     descrition : remove a tab 
     41     params : { 
     42     * href : Tab id 
     43     * callback : a function 
     44     } 
     45     comments : { 
     46     #1 : if the user doesn't set no parameter, this function just remove the open tab 
     47 
     48     * = Optional 
     49     */ 
     50    remove : function(href, callback){ 
     51        $tabs.wijtabs("remove", 
     52            ( 
     53                href ? 
     54                    Tab.index(href) : Tab.lastIndexSelected 
     55                ) 
     56        ); 
     57        if(typeof(callback) == 'function') 
     58            callback(); 
     59    }, 
     60 
     61    /* 
     62     method : Tab.index 
     63     descrition : return a tab index 
     64     params : { 
     65     * href : Tab id 
     66     } 
     67     comments : { 
     68     #1 : if the user doesn't set no parameter, this function just return the index of the open tab 
     69 
     70     * = Optional 
     71     */ 
     72 
     73    index : function(href){ 
     74        return href ? 
     75            $( "li", $tabs ).index( $('[href="'+href+'"]').parent() ) : Tab.lastIndexSelected; 
     76    }, 
     77 
     78    /* 
     79     method : idTab 
     80     descrition : remove a tab id 
     81     params : { 
     82     * index : Tab index 
     83     } 
     84     comments : { 
     85     #1 : if the user doesn't set no parameter, this function just return the id of the open tab 
     86 
     87     * = Optional 
     88     */ 
     89 
     90    id : function(index){ 
     91        return $( ".ui-tabs-panel", $tabs ).eq((index ? index : Tab.index())).attr("id"); 
     92    }, 
     93 
     94    getData : function(index){ 
     95        return { 
     96            id : parseInt(Tab.id(index).substring(6).split("_r_")[0]), 
     97            folder : Base64.decode(idTab(index).substring(6).split("_r_")[1]), 
     98            role : Tab.getRole(index), 
     99            header : Tab.getHeader(index), 
     100            content : Tab.getContent(index) 
     101        }; 
     102    }, 
     103 
     104    getHeader : function(index){ 
     105        return $( $tabs ).find('[href="#'+$( ".ui-tabs-panel", $tabs ).eq((index ? index : Tab.index())).attr("id")+'"]').parent(); 
     106    }, 
     107 
     108    getRole: function(index){ 
     109        return Tab.getContent(index).attr("role"); 
     110    }, 
     111 
     112    getContent: function(index){ 
     113        return $( ".ui-tabs-panel", $tabs ).eq((index ? index : Tab.index())); 
     114    }, 
     115 
     116    setFolderTotal: function(value){ 
     117        Tab.getHeader(0).find(".folder-tab-total-msgs-number").html(parseInt(value) ? value : 0); 
     118    }, 
     119 
     120    setFolderUnread: function(value){ 
     121        Tab.getHeader(0).find(".folder-tab-new-msgs-number").html(parseInt(value) ? value : 0); 
     122        if(parseInt(value)) 
     123            $("title").html($("title").html() +" ("+value+")"); 
     124    }, 
     125 
     126    setFolderName: function(value){ 
     127        Tab.getHeader(0).find(".folder-tab-name").html(value); 
     128        $("title").html(value); 
     129    }, 
     130 
     131    lastIndexSelected : 0, 
     132 
     133    count: 2, 
     134 
     135    roles : [ 
     136        "new", "draft", "search", "message", "folder" 
     137    ] 
    35138} 
    36  
    37 /*  
    38         method : removeTab 
    39         descrition : remove a tab 
    40         params : { 
    41                 * href : Tab id  
    42                 * callback : a function 
    43         } 
    44         comments : { 
    45                 #1 : if the user doesn't set no parameter, this function just remove the open tab 
    46  
    47         * = Optional 
    48 */ 
    49  
    50 function removeTab(href, callback){ 
    51         $tabs.wijtabs("remove",  
    52                 ( 
    53                         href ?  
    54                         indexTab(href) : lastIndexSelected 
    55                 ) 
    56         ); 
    57         if(typeof(callback) == 'function')  
    58                 callback(); 
    59 } 
    60  
    61 /*  
    62         method : indexTab 
    63         descrition : return a tab index 
    64         params : { 
    65                 * href : Tab id  
    66         } 
    67         comments : { 
    68                 #1 : if the user doesn't set no parameter, this function just return the index of the open tab 
    69  
    70         * = Optional 
    71 */ 
    72  
    73 function indexTab(href){ 
    74         return href ?  
    75                 $( "li", $tabs ).index( $('[href="'+href+'"]').parent() ) : lastIndexSelected; 
    76 } 
    77  
    78 /* 
    79  method : idTab 
    80  descrition : remove a tab id 
    81  params : { 
    82  * index : Tab index 
    83  } 
    84  comments : { 
    85  #1 : if the user doesn't set no parameter, this function just return the id of the open tab 
    86  
    87  * = Optional 
    88  */ 
    89  
    90 function idTab(index){ 
    91     return $( ".ui-tabs-panel", $tabs ).eq((index ? index : indexTab())).attr("id"); 
    92 } 
    93  
    94 function getTabData(index){ 
    95         return { 
    96                 id : parseInt(idTab(index).substring(6).split("_r_")[0]), 
    97                 folder : Base64.decode(idTab(index).substring(6).split("_r_")[1]), 
    98                 role : getTabRole(index), 
    99                 header : getTabHeader(index), 
    100                 content : getTabContent(index) 
    101         }; 
    102 } 
    103  
    104 function getTabHeader(index){ 
    105     return $( $tabs ).find('[href="#'+$( ".ui-tabs-panel", $tabs ).eq((index ? index : indexTab())).attr("id")+'"]').parent(); 
    106 } 
    107  
    108 function getTabRole(index){ 
    109         return getTabContent(index).attr("role"); 
    110 } 
    111  
    112 function getTabContent(index){ 
    113         return $( ".ui-tabs-panel", $tabs ).eq((index ? index : indexTab())); 
    114 } 
    115  
    116 function setFolderTabTotal(value){ 
    117         getTabHeader(0).find(".folder-tab-total-msgs-number").html(parseInt(value) ? value : 0); 
    118 } 
    119  
    120 function setFolderTabTotalUnread(value){ 
    121         getTabHeader(0).find(".folder-tab-new-msgs-number").html(parseInt(value) ? value : 0);   
    122         if(parseInt(value)) 
    123                 $("title").html($("title").html() +" ("+value+")"); 
    124 } 
    125  
    126 function setFolderTabName(value){ 
    127         getTabHeader(0).find(".folder-tab-name").html(value);    
    128         $("title").html(value); 
    129 } 
  • sandbox/newExpressoMail/prototype/modules/newMail/templates/index.ejs

    r7210 r7265  
    99 
    1010<link rel="stylesheet" type="text/css" href="<?= MODULESURL ?>/css/reset.css" /> 
    11 <link rel='stylesheet' type='text/css' href='<?= PLUGINSURL ?>/fullcalendar/fullcalendar.css' /> 
    12 <link rel='stylesheet' type='text/css' href='<?= PLUGINSURL ?>/fullcalendar/fullcalendar.print.css' media='print' /> 
    1311 
    1412<link rel='stylesheet' type='text/css' href='<?= PLUGINSURL ?>/jquery/jquery-ui.css'/> 
     
    2018 
    2119<link rel='stylesheet' type='text/css' href='<?= PLUGINSURL ?>/fileupload/jquery.fileupload-ui.css'/> 
    22 <link rel="stylesheet" type='text/css' href="<?= PLUGINSURL ?>/jquery.pagination/pagination.css" /> 
    23  
    2420<!-- JPicker --> 
    2521<link rel="Stylesheet" type="text/css" href="<?= PLUGINSURL ?>/jpicker/css/jPicker-1.1.6.min.css" /> 
     
    3935<link rel="stylesheet" type="text/css" href="<?= MODULESURL ?>/css/main.css" /> 
    4036 
    41  
    4237<script type='text/javascript' src='<?= PLUGINSURL ?>/datejs/date-pt-BR.js'></script> 
    4338<script type='text/javascript' src='<?= PLUGINSURL ?>/jquery/jquery.min.js'></script> 
     
    4944<script type='text/javascript' src='<?= PLUGINSURL ?>/json2/json2.js'></script> 
    5045<script type='text/javascript' src='<?= PLUGINSURL ?>/store/jquery.store.js'></script> 
    51 <script type='text/javascript' src='<?= PLUGINSURL ?>/fileupload/jquery.fileupload.js'></script> 
    52 <!--<script type='text/javascript' src='<?= PLUGINSURL ?>/fileupload/jquery.fileupload-ui.js'></script>--> 
    53 <script type='text/javascript' src='<?= PLUGINSURL ?>/fileupload/jquery.iframe-transport.js'></script> 
    54 <script type='text/javascript' src='<?= PLUGINSURL ?>/store/jquery.store.js'></script> 
    55 <script type="text/javascript" src="<?= PLUGINSURL ?>/jquery.pagination/jquery.pagination.js"></script> 
    56 <script type='text/javascript' src='<?= PLUGINSURL ?>/mask/jquery.maskedinput.js'></script> 
    57 <script type='text/javascript' src='<?= PLUGINSURL ?>/alphanumeric/jquery.alphanumeric.js'></script> 
    58 <script type='text/javascript' src='<?= PLUGINSURL ?>/watermark/jquery.watermarkinput.js'></script> 
    5946<script type='text/javascript' src='<?= PLUGINSURL ?>/encoder/encoder.js'></script> 
    6047<script type='text/javascript' src='<?= PLUGINSURL ?>/../api/datalayer.js'></script> 
    6148<script type="text/javascript" src='<?= PLUGINSURL ?>/dateFormat/dateFormat.js'></script> 
    6249 
    63 <!-- Datejs -->     
    64 <!-- <script type='text/javascript' src='<?= ROOTPATH ?>datejs/core.js'></script> 
    65 <!-- <script type='text/javascript' src='<?= PLUGINSURL ?>/datejs/date-pt-BR.js'></script>--> 
    66 <!-- <script type='text/javascript' src='<?= PLUGINSURL ?>/datejs/globalization/pt-BR.js'></script> --> 
     50<!-- Datejs --> 
    6751<script type='text/javascript' src='<?= PLUGINSURL ?>/datejs/sugarpak.js'></script> 
    6852<script type='text/javascript' src='<?= PLUGINSURL ?>/datejs/parser.js'></script> 
    6953 
    70 <!--  <script type='text/javascript' src='<?= ROOTPATH ?>datejs/time.js'></script>  --> 
    71 <script type='text/javascript' src='<?= PLUGINSURL ?>/dateFormat/dateFormat.js'></script> 
    72 <!--<script type='text/javascript' src='../fullcalendar/fullcalendar.min.js'></script>--> 
    73 <script type='text/javascript' src='<?= PLUGINSURL ?>/fullcalendar/fullcalendar.js'></script> 
    74 <script type='text/javascript' src='<?= PLUGINSURL ?>/fullcalendar/gcal.js'></script> 
    7554<script type='text/javascript' src='<?= PLUGINSURL ?>/jquery.dateFormat/jquery.dateFormat.js'></script> 
    7655<script type='text/javascript' src='<?= PLUGINSURL ?>/zebradialog/javascript/zebra_dialog.js'></script> 
    7756<script type='text/javascript' src='<?= PLUGINSURL ?>/scrollto/jquery.scrollTo.js'></script> 
    7857<!-- <script type='text/javascript' src='<?= PLUGINSURL ?>/view/jquerymx-1.0.custom.min.js'></script> --> 
    79 <script type='text/javascript' src='<?= PLUGINSURL ?>/ejs/ejs.js'></script> 
    80 <script type="text/javascript" src="<?= PLUGINSURL ?>/fgmenu/fg.menu.js"></script> 
    81 <script type="text/javascript" src="<?= PLUGINSURL ?>/qtip/jquery.qtip-1.0.0-rc3.min.js"></script> 
    82 <script type="text/javascript" src="<?= PLUGINSURL ?>/contextmenu/jquery.contextMenu.js"></script> 
    83  
    84 <!-- JPicker --> 
    85 <script type="text/javascript" src="<?= PLUGINSURL ?>/jpicker/jpicker-1.1.6.min.js"></script> 
    86 <script type="text/javascript" src="<?= PLUGINSURL ?>/farbtastic/farbtastic.js"></script> 
    87  
    88 <!-- TREEVIEW --> 
    89 <script type="text/javascript" src="<?= PLUGINSURL ?>/treeview/jquery.treeview.js"></script> 
    90 <script type="text/javascript" src="<?= PLUGINSURL ?>/treeview/lib/jquery.cookie.js"></script> 
    91  
    92 <script type="text/javascript" src="<?= PLUGINSURL ?>/wijmo/jquery.wijmo-open.all.2.2.0.min.js"></script> 
    93 <script type="text/javascript" src="<?= PLUGINSURL ?>/layout/jquery.layout.min.js"></script> 
    94 <script type="text/javascript" src="<?= PLUGINSURL ?>/jqgrid/js/i18n/grid.locale-pt-br.js"></script> 
    95 <script type="text/javascript" src="<?= PLUGINSURL ?>/jqgrid/js/jquery.jqGrid.min.js"></script> 
    9658 
    9759<script type="text/javascript"> 
     
    10769</script> 
    10870 
    109 <script type="text/javascript" src="<?= MODULESURL ?>/js/formatters.js"></script> 
    110 <script type="text/javascript" src="<?= MODULESURL ?>/js/init.js"></script> 
    111 <script type="text/javascript" src="<?= MODULESURL ?>/js/newfoldertree.js"></script> 
    112 <script type="text/javascript" src="<?= MODULESURL ?>/js/tabs.js"></script> 
    113 <script type="text/javascript" src="<?= MODULESURL ?>/js/folder.js"></script> 
     71<script type='text/javascript' src='../newExpressoMail/inc/core.php'></script> 
    11472 
    11573</head> 
  • sandbox/newExpressoMail/prototype/services/ImapServiceAdapter.php

    r7209 r7265  
    7676                        case 'folder': 
    7777                        { 
    78                                  
    79                                 $result = $this->getFolders(); 
     78 
     79                if($context != '') 
     80                    $result = $this->getFolderInfo($context['folder']); 
     81                else 
     82                    $result = $this->getFolders(); 
    8083 
    8184                                foreach ($result as $res) { 
     
    8689                                                        'commonName' => mb_convert_encoding( $res['folder_name'], 'UTF-8' , 'UTF7-IMAP' ), 
    8790                                                        'parentFolder' => mb_convert_encoding( $res['folder_parent'], 'UTF-8' , 'UTF7-IMAP' ), 
    88                                                         'messageCount' => array('unseen' => isset($res['folder_unseen']) ? $res['folder_unseen'] : null, 'total' => null) 
     91                                                        'messageCount' => array('unseen' => isset($res['folder_unseen']) ? $res['folder_unseen'] : null, 'total' => $res['folder_total']) 
    8992                                        ); 
    9093 
     
    104107                                $limit = isset($criteria['rows']) ? $criteria['rows'] : 10 ; //{10}   get how many rows we want to have into the grid 
    105108                                $sidx  = isset($criteria['sidx']) ? $criteria['sidx'] : 0; //{id}   get index row - i.e. user click to sort 
    106                                 $sord  = isset($criteria['sord']) ? $criteria['sord'] : ''; //{desc} get the direction 
     109                                $sord  = $criteria['sord'] == "asc"? "0" : '1'; //{desc} get the direction 
     110                //$flag = $criteria['_search'] ? $criteria['_search'] : 'ALL'; 
    107111 
    108112                                $filter =  isset($criteria['filter']) ? $criteria['filter'] : ''; 
    109113 
    110                                 if( !$sidx ) $sidx = 1; 
     114                                if( !$sidx ) $sidx = 'SORTARRIVAL'; 
    111115 
    112116                                $folder_name =  isset($URI['folder']) ?  $URI['folder'] : str_replace( '.', $this->imap_delimiter, isset($context['folder']) ?  $context['folder'] : 'INBOX'); 
     
    207211                                                        'msg_range_begin' => $start + 1, //?? 
    208212                                                        'msg_range_end' => $start + $limit, //$limit = $_GET['rows']; // get how many rows we want to have into the grid 
    209                                                         'sort_box_type' => 'SORTARRIVAL',  
     213                                                        'sort_box_type' => $sidx, 
    210214                                                        'search_box_type' => 'ALL', 
    211                                                         'sort_box_reverse' => 1  
     215                                                        'sort_box_reverse' => $sord 
    212216                                                )  
    213217                                        ); 
     
    698702                        case 'folder': 
    699703                        { 
    700  
    701                         } 
     704                $mbox_stream = $this->open_mbox(); 
     705                $path = ($data['path'] != "" ? $data['path'] : "INBOX") .$this->imap_delimiter; 
     706                $folders = explode($this->imap_delimiter,$data['name']); 
     707                $return = true; 
     708                for($i =0; $i < count($folders); $i++){ 
     709                    $path .= $folders[$i] != "" ? $folders[$i] : 'Nova Pasta'; 
     710                    $newFolder = mb_convert_encoding($path, "UTF7-IMAP","UTF-8"); 
     711                    $serverString = "{".$this->imap_server.":".$this->imap_port.$this->imap_options."}".$newFolder; 
     712                    if(imap_createmailbox($mbox_stream,$serverString)) 
     713                    { 
     714                        $return = false; 
     715                    } 
     716                    $path .= $this->imap_delimiter; 
     717                } 
     718                return $return; 
     719            } 
    702720                } 
    703721        } 
     
    790808                                                break; 
    791809                                } 
    792                                  
    793810                                return $s; 
    794811                        } 
     812            case 'folder':{ 
     813                $newFolder = mb_convert_encoding($URI['id'], "UTF7-IMAP","UTF-8"); 
     814                $serverString = "{".$this->imap_server.":".$this->imap_port.$this->imap_options."}".$newFolder; 
     815                $mbox_stream = $this->open_mbox(); 
     816                if(imap_deletemailbox($mbox_stream,$serverString)) 
     817                { 
     818                    return true; 
     819                }else{ 
     820                    return false; 
     821                } 
     822            } 
    795823                } 
    796824 
     
    822850                 * atributos gravados no banco de dados e nunca no IMAP. 
    823851                 */ 
     852        switch( $URI['concept'] ) 
     853        { 
     854            case 'folder': 
     855            { 
     856                $mbox_stream = $this->open_mbox(); 
     857                $oldFolderName = mb_convert_encoding($data['id'], "UTF7-IMAP","UTF-8"); 
     858                $newFolderName = mb_convert_encoding($data['new'], "UTF7-IMAP","UTF-8"); 
     859                $serverString = "{".$this->imap_server.":".$this->imap_port.$this->imap_options."}"; 
     860                if(imap_renamemailbox($mbox_stream,$serverString.$oldFolderName, $serverString.$newFolderName)) 
     861                { 
     862                    return true; 
     863                }else{ 
     864                    return false; 
     865                } 
     866            } 
     867        } 
    824868        } 
    825869 
Note: See TracChangeset for help on using the changeset viewer.