Changeset 7265 for sandbox/newExpressoMail
- Timestamp:
- 09/21/12 10:11:36 (12 years ago)
- Location:
- sandbox/newExpressoMail
- Files:
-
- 103 added
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
sandbox/newExpressoMail/newExpressoMail/index.php
r7212 r7265 10 10 ); 11 11 12 require_once( dirname(__FILE__).'/../prototype/api/config.php' );12 //require_once( dirname(__FILE__).'/../prototype/api/config.php' ); 13 13 14 14 require_once (dirname(__FILE__).'/../header.inc.php'); … … 26 26 $imap_configs = $boemailadmin->getProfile($emailadmin_profile[0]['profileID']); 27 27 28 include("inc/load_lang.php"); 29 28 30 define( 'MODULESURL' , '../prototype/modules/newMail' ); 29 31 define( 'PLUGINSURL' , '../prototype/plugins' ); -
sandbox/newExpressoMail/prototype/config/folder.ini
r5341 r7265 1 1 service = Imap 2 3 [Imap.mapping] 4 folderName = folder_name -
sandbox/newExpressoMail/prototype/modules/newMail/css/main.css
r7210 r7265 1178 1178 1179 1179 .folders-loading { 1180 background: url(../../../ prototype/modules/mail/img/loader.gif) !important;1180 background: url(../../../modules/mail/img/loader.gif) !important; 1181 1181 background-position: 0 0 !important; 1182 1182 background-repeat : no-repeat !important; … … 1201 1201 .draggin-mail{ 1202 1202 float: left; 1203 background-image: url(../ ../../prototype/modules/mail/img/move.png);1203 background-image: url(../img/move.png); 1204 1204 background-position: 0px 0px; 1205 1205 background-repeat:no-repeat; … … 1215 1215 .draggin-folder{ 1216 1216 float: left; 1217 background-image: url(../ ../../prototype/modules/mail/img/folder.png);1217 background-image: url(../img/folder.png); 1218 1218 background-position: 0px 0px; 1219 1219 background-repeat:no-repeat; … … 1347 1347 1348 1348 .loading { 1349 background: url(../../../ prototype/modules/mail/img/loader.gif) !important;1349 background: url(../../../modules/mail/img/loader.gif) !important; 1350 1350 background-position: 0 0 !important; 1351 1351 background-repeat : no-repeat !important; … … 1473 1473 margin: 5px 5px 0 -5px; 1474 1474 } 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()); 1 dashes = /\//gi; 2 3 var 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 8 62 } 63 64 Folder.init(); -
sandbox/newExpressoMail/prototype/modules/newMail/js/formatters.js
r7210 r7265 43 43 } else { 44 44 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>'; 48 47 } 49 48 } 49 50 subjectFormatter = function(subject){ 51 var formatted = subject ? 52 (subject.length > 40 ? subject.substring(0, 37)+"..." : subject) : 53 "(Rascunho)"; 54 return '<span>' + formatted + '</span>'; 55 } 56 57 flags2Class = 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 1 var BASE_PATH = '../prototype/'; 2 1 3 $(document).ready(function() { 2 4 3 Layout = $('#wrap').layout({ 4 5 6 north__closable: false, 7 8 north__slidable: false, 9 10 11 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 }); 13 15 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 17 add: function( event, ui ) { 18 $tabs.wijtabs('select', '#' + $tabs.find("div:last").attr("id")); 19 20 $tabs.find("div:last").addClass("conteudo").attr("role", tab_role).append(tab_content); 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 select: function(event, ui) { 36 37 38 39 40 hideOption: { 41 blind: true,42 fade: false,43 44 45 46 blind: true,47 fade: false,48 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 }); 51 53 52 54 draw_new_tree_folder(); 53 55 54 55 56 57 58 56 $(".new-message-button").button({ 57 icons: { 58 secondary : "ui-icon-plusthick" 59 } 60 }); 59 61 60 var messages = DataLayer.get("message", {criteria : {folder: 'INBOX', rows: 999999}}, true);62 var messages = DataLayer.get("message", {criteria : {folder: 'INBOX', rows: 999999}}); 61 63 62 63 64 65 66 67 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 }); 69 71 70 71 72 var menus = $(".main-menus-content").clone(); 73 $(".main-menus-content").remove(); 72 74 73 74 75 76 77 78 75 $(".this-module").button().next().button({ 76 icons :{ 77 primary: "ui-icon-triangle-1-s" 78 }, 79 text: false 80 }).parent().buttonset(); 79 81 80 82 $(".this-module").parent().append(menus); 81 83 82 83 84 85 posX: 'left', 86 87 88 89 90 directionV: 'down', 91 detectH: true, // do horizontal collision detection 92 93 94 95 96 97 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 }); 99 101 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á {d<}{dn} {dl} {d>}{h<}{hn} {hl} {h>}{m<}{mn} {ml} {m>}{s<}{sn} {sl}{s>}', 160 description: ' atrás' 161 }); 162 }); 163 } 164 }); 165 Grid.jqGrid('bindKeys', {"onEnter":function( rowid ) { alert("You enter a row with id:"+rowid)} }); 143 166 }); -
sandbox/newExpressoMail/prototype/modules/newMail/js/message.js
r7210 r7265 1 1 function buildMessageButtons(content){ 2 3 //FLAGS BUTTON SET 2 var data = getTabData(); 3 //FLAGS BUTTON SET 4 4 content.find(".message-flags").find(".message-important-flag").button({ 5 6 7 5 icons: { 6 primary: "ui-icon-notice" 7 }, 8 8 text: false 9 9 }).click(function(){ 10 11 12 13 14 }).end().find(".message-unread-flag").button({15 16 17 18 text: false19 }).click(function(){20 21 22 23 24 }).end().find(".message-spam-flag").button({25 26 27 28 text: false29 }).click(function(){30 31 32 33 34 }).end().find(".message-followup-flag").button({35 36 37 38 text: false39 });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 }); 40 40 content.find(".message-flags").buttonset(); 41 41 42 42 //MESSAGES ACTION NEXT PREV BUTTON SET 43 43 content.find(".messages-controll").find(".message-prev").button({ 44 45 46 44 icons: { 45 primary: "ui-icon-carat-1-w" 46 }, 47 47 text: false 48 48 }).click(function(){ 49 49 50 }).next().button({51 52 53 54 text: false55 });50 }).next().button({ 51 icons: { 52 primary: "ui-icon-carat-1-e" 53 }, 54 text: false 55 }); 56 56 content.find(".messages-controll").buttonset(); 57 57 58 58 // 59 59 content.find(".message-forward").button({ 60 61 62 63 64 }); 65 66 67 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(); 68 68 69 69 content.find(".button.message-reply").button({ 70 71 72 73 70 icons:{ 71 primary: "ui-icon-arrowreturnthick-1-w" 72 }, 73 text : false 74 74 }).next().button({ 75 76 77 78 79 }).parent().buttonset();80 81 82 83 84 85 86 posX: 'left', 87 88 89 90 91 directionV: 'down', 92 detectH: true, // do horizontal collision detection 93 94 95 96 97 98 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 }); 100 100 101 101 102 102 content.find(".button.message-edit").button({ 103 104 105 106 103 icons:{ 104 primary: "ui-icon-pencil" 105 }, 106 text : false 107 107 }); 108 108 //BUTTON MORE AND TAGS … … 114 114 text: false 115 115 }).next().next().button({ 116 icons: {117 secondary: "ui-icon-triangle-1-s"118 },119 text: true120 121 122 123 124 125 126 posX: 'left', 127 128 129 130 131 directionV: 'down', 132 detectH: true, // do horizontal collision detection 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 posX: 'left', 153 154 155 156 157 directionV: 'down', 158 detectH: true, // do horizontal collision detection 159 160 161 162 163 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 }); 165 165 //REMOVE MESSAGE BUTTON 166 166 content.find(".message-remove").button({ … … 170 170 text: false 171 171 }).click(function(){ 172 173 174 175 });172 proxy_mensagens.delete_msgs(data.folder,data.id,'null'); 173 removeTab(); 174 refresh(); 175 }); 176 176 177 177 //PREFERENCES BUTTON … … 186 186 //MESSAGE DETAILS 187 187 content.find(".message-hide-show-details").click(function(){ 188 189 188 $(this).find("span").toggle(); 189 content.find(".message-details").toggle("blind"); 190 190 }).hover( 191 192 193 194 195 196 197 191 function(){ 192 $(this).addClass("message-detail-hover"); 193 }, 194 function(){ 195 $(this).removeClass("message-detail-hover"); 196 } 197 ); 198 198 199 199 } 200 201 var 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 5 5 var cp_tree2; 6 6 function unorphanize(root, element) { 7 8 9 10 11 element.children = new Array(); 12 13 14 15 16 17 18 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; 19 19 } 20 20 21 21 function count_unseen_children(folder){ 22 23 24 25 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 30 31 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 } 33 33 } 34 34 35 35 function valid_tabs(children_of_this_folder, folder_to_move){ 36 37 38 39 40 41 42 43 44 write_msg(get_lang("One or more messages from any sub-folder are open"));45 46 47 48 49 50 51 52 53 54 55 write_msg(get_lang("One or more messages from this folder are open"));56 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 } 59 59 } 60 60 61 61 function 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 ); 510 470 } 511 471 -
sandbox/newExpressoMail/prototype/modules/newMail/js/tabs.js
r7210 r7265 1 var countID = 2;2 1 var tab_content = ""; 3 2 var tab_role = ""; 4 var lastIndexSelected = 0;5 /*6 method : createTab7 descrition : create a new tab8 params : {9 label : Label of the tab10 * role : Tab type11 * content : Content of the tab12 * href : Tab id13 * callback : a function14 }15 comments : {16 #1 : if the user just set the label, a tab with blank content and a dynamic id is created17 #2 : if a tab with a set href already exists, don't duplicate, this function only select the tab18 #3 : if the role is19 * = Optional20 */21 3 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 } 4 var 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 ] 35 138 } 36 37 /*38 method : removeTab39 descrition : remove a tab40 params : {41 * href : Tab id42 * callback : a function43 }44 comments : {45 #1 : if the user doesn't set no parameter, this function just remove the open tab46 47 * = Optional48 */49 50 function removeTab(href, callback){51 $tabs.wijtabs("remove",52 (53 href ?54 indexTab(href) : lastIndexSelected55 )56 );57 if(typeof(callback) == 'function')58 callback();59 }60 61 /*62 method : indexTab63 descrition : return a tab index64 params : {65 * href : Tab id66 }67 comments : {68 #1 : if the user doesn't set no parameter, this function just return the index of the open tab69 70 * = Optional71 */72 73 function indexTab(href){74 return href ?75 $( "li", $tabs ).index( $('[href="'+href+'"]').parent() ) : lastIndexSelected;76 }77 78 /*79 method : idTab80 descrition : remove a tab id81 params : {82 * index : Tab index83 }84 comments : {85 #1 : if the user doesn't set no parameter, this function just return the id of the open tab86 87 * = Optional88 */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 9 9 10 10 <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' />13 11 14 12 <link rel='stylesheet' type='text/css' href='<?= PLUGINSURL ?>/jquery/jquery-ui.css'/> … … 20 18 21 19 <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 24 20 <!-- JPicker --> 25 21 <link rel="Stylesheet" type="text/css" href="<?= PLUGINSURL ?>/jpicker/css/jPicker-1.1.6.min.css" /> … … 39 35 <link rel="stylesheet" type="text/css" href="<?= MODULESURL ?>/css/main.css" /> 40 36 41 42 37 <script type='text/javascript' src='<?= PLUGINSURL ?>/datejs/date-pt-BR.js'></script> 43 38 <script type='text/javascript' src='<?= PLUGINSURL ?>/jquery/jquery.min.js'></script> … … 49 44 <script type='text/javascript' src='<?= PLUGINSURL ?>/json2/json2.js'></script> 50 45 <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>59 46 <script type='text/javascript' src='<?= PLUGINSURL ?>/encoder/encoder.js'></script> 60 47 <script type='text/javascript' src='<?= PLUGINSURL ?>/../api/datalayer.js'></script> 61 48 <script type="text/javascript" src='<?= PLUGINSURL ?>/dateFormat/dateFormat.js'></script> 62 49 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 --> 67 51 <script type='text/javascript' src='<?= PLUGINSURL ?>/datejs/sugarpak.js'></script> 68 52 <script type='text/javascript' src='<?= PLUGINSURL ?>/datejs/parser.js'></script> 69 53 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>75 54 <script type='text/javascript' src='<?= PLUGINSURL ?>/jquery.dateFormat/jquery.dateFormat.js'></script> 76 55 <script type='text/javascript' src='<?= PLUGINSURL ?>/zebradialog/javascript/zebra_dialog.js'></script> 77 56 <script type='text/javascript' src='<?= PLUGINSURL ?>/scrollto/jquery.scrollTo.js'></script> 78 57 <!-- <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>96 58 97 59 <script type="text/javascript"> … … 107 69 </script> 108 70 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> 114 72 115 73 </head> -
sandbox/newExpressoMail/prototype/services/ImapServiceAdapter.php
r7209 r7265 76 76 case 'folder': 77 77 { 78 79 $result = $this->getFolders(); 78 79 if($context != '') 80 $result = $this->getFolderInfo($context['folder']); 81 else 82 $result = $this->getFolders(); 80 83 81 84 foreach ($result as $res) { … … 86 89 'commonName' => mb_convert_encoding( $res['folder_name'], 'UTF-8' , 'UTF7-IMAP' ), 87 90 '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']) 89 92 ); 90 93 … … 104 107 $limit = isset($criteria['rows']) ? $criteria['rows'] : 10 ; //{10} get how many rows we want to have into the grid 105 108 $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'; 107 111 108 112 $filter = isset($criteria['filter']) ? $criteria['filter'] : ''; 109 113 110 if( !$sidx ) $sidx = 1;114 if( !$sidx ) $sidx = 'SORTARRIVAL'; 111 115 112 116 $folder_name = isset($URI['folder']) ? $URI['folder'] : str_replace( '.', $this->imap_delimiter, isset($context['folder']) ? $context['folder'] : 'INBOX'); … … 207 211 'msg_range_begin' => $start + 1, //?? 208 212 '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, 210 214 'search_box_type' => 'ALL', 211 'sort_box_reverse' => 1215 'sort_box_reverse' => $sord 212 216 ) 213 217 ); … … 698 702 case 'folder': 699 703 { 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 } 702 720 } 703 721 } … … 790 808 break; 791 809 } 792 793 810 return $s; 794 811 } 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 } 795 823 } 796 824 … … 822 850 * atributos gravados no banco de dados e nunca no IMAP. 823 851 */ 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 } 824 868 } 825 869
Note: See TracChangeset
for help on using the changeset viewer.