Changeset 5533
- Timestamp:
- 02/22/12 18:04:20 (11 years ago)
- Location:
- trunk
- Files:
-
- 30 added
- 18 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/expressoMail1_2/inc/class.imap_functions.inc.php
r5520 r5533 157 157 158 158 function get_range_msgs2($params) 159 { 159 { 160 160 // Free others requests 161 161 session_write_close(); … … 193 193 $sample = true; 194 194 195 $return[$i] = $this->get_info_head_msg( $msg_number , $sample ) 195 $return[$i] = $this->get_info_head_msg( $msg_number , $sample ); 196 196 $i++; 197 197 } … … 228 228 return $return; 229 229 } 230 230 231 232 function getMessages($params) { 233 $result = array(); 234 235 $exporteml = new ExportEml(); 236 $unseen_msgs = array(); 237 238 foreach($params['messages'] as $folder => $messages) { 239 foreach($messages as $msg_number) { 240 241 $this->mbox = $this->open_mbox($folder); 242 243 if (isset($params['details']) && $params['details'] == 'all') { 244 $message = $this->get_info_msg(array('msg_number' => $msg_number, 'msg_folder' =>urlencode($folder))); 245 } else { 246 $message['headers'] = $this->get_info_head_msg($msg_number, true); 247 //$message['attachments'] = $exporteml->get_attachments_in_array(array("num_msg" => $msg_number)); 248 } 249 250 imap_close($this->mbox); 251 $this->mbox = false; 252 253 if($msg_info['Unseen'] == "U" || $msg_info['Recent'] == "N") { 254 array_push($unseen_msgs,$msg_number); 255 } 256 257 $result[$folder][] = $message; 258 } 259 if($unseen_msgs){ 260 $msgs_list = implode(",",$unseen_msgs); 261 $array_msgs = array('folder' => $folder, "msgs_to_set" => $msgs_list, "flag" => "unseen"); 262 $this->set_messages_flag($array_msgs); 263 } 264 } 265 266 return $result; 267 } 268 231 269 /** 232 270 * Decodifica uma string no formato mime RFC2047 … … 731 769 $array_msgs = array('folder' => $new_params["msg_folder"], "msgs_to_set" => $msgs_list, "flag" => "unseen"); 732 770 $this->set_messages_flag($array_msgs); 733 } 771 } 772 734 773 return $return; 735 774 } 736 775 } 737 776 738 777 /** … … 5084 5123 } 5085 5124 5086 5087 5088 5089 5090 5091 5092 5093 5094 5095 5096 5125 function parseCriteriaSearchMail($search) 5126 { 5127 $criteria = ''; 5128 $searchArray = explode(' ', $search); 5129 5130 foreach ($searchArray as $v) 5131 if(trim($v) !== '' ) 5132 $criteria .= 'TEXT "'.$v.'" ' ; 5133 5134 return $criteria; 5135 } 5097 5136 5098 5137 function quickSearchMail( $params ) 5099 5138 { 5139 include '../prototype/api/controller.php'; 5100 5140 $return = array(); 5101 5141 $return['folder'] = $params['folder']; … … 5114 5154 $count = 0; 5115 5155 5116 $search = $this->parseCriteriaSearchMail($params['search']); 5117 5156 if (!preg_match('/KEYWORD/i', $params['search'])){ 5157 $search = $this->parseCriteriaSearchMail($params['search']); 5158 } else { 5159 $search = $params['search']; 5160 } 5161 5118 5162 foreach ($params['folder'] as $folder) 5119 5163 { … … 5139 5183 $return['msgs'][$i]['subject'] .= mb_convert_encoding($tmp->text, 'UTF-8', 'UTF-8 , ISO-8859-1'); 5140 5184 5141 5185 $filter = array('AND', array('=', 'folderName', $folder), array('=','messageNumber', $v)); 5186 $followupflagged = Controller::find( 5187 array('concept' => 'followupflagged'), 5188 false, 5189 array('filter' => $filter, 'criteria' => array('deepness' => '2')) 5190 ); 5191 foreach ($followupflagged as $i => $v) 5192 { 5193 if(isset($v['followupflagId'])) 5194 { 5195 $followupflag = Controller::find( array( 'concept' => 'followupflag' ) , false, array( 'filter' => array('=', 'id' , $v['followupflagId']) )); 5196 $followupflagged[$i]['followupflag'] = $followupflag[0]; 5197 } 5198 5199 } 5200 5201 $labeleds = Controller::find( 5202 array('concept' => 'labeled'), 5203 false, 5204 array('filter' => $filter, 'criteria' => array('deepness' => '2')) 5205 ); 5206 5142 5207 $return['msgs'][$i]['flag'] = ' '; 5143 5208 $return['msgs'][$i]['flag'] .= $msg->Unseen ? $msg->Unseen : ''; … … 5154 5219 $return['msgs'][$i]['boxname'] = $folder; 5155 5220 $return['msgs'][$i]['uid'] = $v; 5221 $return['msgs'][$i]['followupflagged'] = $followupflagged[0]; 5222 $return['msgs'][$i]['labels'] = $labeleds; 5156 5223 $i++; 5157 5224 } -
trunk/expressoMail1_2/index.php
r5530 r5533 44 44 <script src="../prototype/plugins/ejs/ejs.js" language="javascript"></script> 45 45 <script src="../prototype/plugins/store/jquery.store.js" language="javascript"></script> 46 <script src="../prototype/plugins/farbtastic/farbtastic.js" language="javascript"></script> 46 47 <script src="../prototype/api/datalayer.js" language="javascript"></script> 47 48 <script type="text/javascript" src="../prototype/plugins/scrollto/jquery.scrollTo.js"></script> … … 57 58 <link rel="stylesheet" type="text/css" href="../prototype/plugins/zebradialog/css/zebra_dialog.css"></link> 58 59 <link rel="stylesheet" type="text/css" href="../prototype/plugins/fileupload/jquery.fileupload-ui.css"></link> 60 <link rel="stylesheet" href="../prototype/plugins/farbtastic/farbtastic.css" type="text/css" > 59 61 <script type="text/javascript" src="../prototype/plugins/zebradialog/javascript/zebra_dialog.js"></script> 60 62 <script type="text/javascript" src="../prototype/plugins/datejs/date-pt-BR.js"></script> … … 115 117 <script src="../prototype/plugins/countdown/jquery.countdown.min.js" type="text/javascript"></script> 116 118 <script src="../prototype/plugins/countdown/jquery.countdown-pt-BR.js" type="text/javascript"></script> 119 120 117 121 '; 118 122 123 echo '<script src="../prototype/modules/mail/js/label.js" type="text/javascript"></script>'; 124 echo '<script src="../prototype/modules/mail/js/followupflag.js" type="text/javascript"></script>'; 125 126 127 //followupflags 128 echo'<link rel="stylesheet" href="../prototype/modules/mail/css/followupflag.css" type="text/css" />'; 129 119 130 /* 120 * TODO: implementar o controle como prefer ência do usuário131 * TODO: implementar o controle como preferência do usuário 121 132 * 122 133 */ … … 348 359 echo ' 349 360 <link rel="stylesheet" href="../prototype/modules/attach_message/attach_message.css" type="text/css" /> 361 362 <script type="text/javascript" src="../prototype/plugins/jquery/i18n/jquery.ui.datepicker-pt-BR.js"></script> 363 <script type="text/javascript" src="../prototype/plugins/timepicker/jquery-ui-timepicker-addon.js"></script> 364 <script type="text/javascript" src="../prototype/plugins/timepicker/localization/jquery-ui-timepicker-pt-BR.js"></script> 350 365 <script type="text/javascript"> 351 366 init(); … … 373 388 <body scroll="no" style="overflow:hidden"> 374 389 <link rel="stylesheet" href="../prototype/modules/attach_message/attach_message.css" type="text/css" /> 390 <link rel="stylesheet" href="../prototype/modules/mail/css/label.css" type="text/css" /> 375 391 <link rel='stylesheet' type='text/css' href='../prototype/modules/calendar/css/layout.css' /> 376 392 <link rel='stylesheet' type='text/css' href='../prototype/modules/calendar/css/style.css' /> -
trunk/expressoMail1_2/js/common_functions.js
r5497 r5533 657 657 } 658 658 cExecute ("$this.imap_functions.getacl", handler_imap_getacl); 659 } 660 661 function configureLabels(data){ 662 663 dialogElement = $('.label-configure-win').html(DataLayer.render("../prototype/modules/mail/templates/label_configure.ejs", {})) 664 665 dialogElement.dialog({ 666 width:821, 667 height:410, 668 title:' Configuração do Marcador', 669 resizable:false, 670 modal: true, 671 closeOnEscape:true, 672 close:function(event, ui) {event.stopPropagation();}, 673 autoOpen:false, 674 dialogClass: 'dialog-configure-label' 675 }); 676 init_label({window:dialogElement, selectedItem:data.selectedItem}); 677 dialogElement.dialog("open"); 678 } 679 680 function configureFollowupflag(){ 681 682 var messages = new Array(); 683 var selectedMessageIds = new Array(); 684 var folder_name; 685 if (currentTab == 0) { 686 selectedMessageIds = get_selected_messages().split(","); 687 } else { 688 selectedMessageIds = get_selected_messages_search().split(","); 689 var id_border = currentTab.replace(/[a-zA-Z_]+/, ""); 690 } 691 692 693 for (var i=0; i<selectedMessageIds.length; i++) { 694 if (currentTab == 0) { 695 folder_name = current_folder; 696 }else{ 697 var tr = Element(selectedMessageIds[i]+'_s'+id_border); 698 folder_name = tr.getAttribute('name'); 699 } 700 messages.push(onceOpenedHeadersMessages[folder_name][selectedMessageIds[i]]); 701 } 702 703 if(!User.followupflags) 704 User.followupflags = DataLayer.get('followupflag',true); 705 var data = { 706 followupflags: User.followupflags, 707 messages: messages 708 }; 709 dialogElement = $('.followupflag-configure-win').html(DataLayer.render("../prototype/modules/mail/templates/followupflag_configure.ejs", data)) 710 711 dialogElement.dialog({ 712 width:542, 713 height:420, 714 title:get_lang('Acompanhamento'), 715 resizable:false, 716 modal: true, 717 closeOnEscape:true, 718 close:function(event, ui) { 719 $('.followupflag-configure-win').addClass('hidden'); 720 event.stopPropagation(); 721 }, 722 autoOpen:false 723 }); 724 init_followup({window:dialogElement, selectedMessages:selectedMessageIds}); 725 $('.followupflag-configure-win').removeClass('hidden'); 726 dialogElement.dialog("open"); 659 727 } 660 728 -
trunk/expressoMail1_2/js/doiMenuData.js
r5497 r5533 8 8 } 9 9 10 $.contextMenu({11 selector: ".table_box tbody tr",12 callback: function(key, options) {13 //TODO - default actions14 //TODO - aply labels actions15 16 },17 items: {18 "flagSeen": {"name": get_lang("Mark as") + " " + get_lang('seen'), "icon": "seen", callback: function(key, opt){ proxy_mensagens.proxy_set_messages_flag('seen','get_selected_messages'); }},19 "flagUnseen": {"name": get_lang("Mark as") + " " + get_lang('unseen'), "icon": "unseen", callback: function(key, opt){ proxy_mensagens.proxy_set_messages_flag('unseen','get_selected_messages'); }},20 "flagFlagged": {"name": get_lang("Mark as") + " " + get_lang('important'), "icon": "important", callback: function(key, opt){ proxy_mensagens.proxy_set_messages_flag('flagged','get_selected_messages'); }},21 "flagUnflagged": {"name": get_lang("Mark as") + " " + get_lang('normal'), callback: function(key, opt){ proxy_mensagens.proxy_set_messages_flag('unflagged','get_selected_messages'); }},22 23 24 "sep2": "---------",25 "move": {"name": get_lang("Move to")+"...", "icon": "move", callback: function(key, opt){ wfolders.makeWindow('', 'move_to'); }},26 "remove": {"name": get_lang("Delete"), "icon": "delete", callback: function(key, opt){ proxy_mensagens.delete_msgs('null','selected','null'); }},27 "export": {"name": get_lang("Export"), "icon": "export", callback: function(key, opt){ proxy_mensagens.export_all_messages(); }}28 }29 });30 31 10 32 11 /** 33 * Cria a lista de itens para o menu ferramentas12 * Cria a lista de marcadores para o submenu "Marcadores" 34 13 */ 14 function getLabels(){ 15 var labels = DataLayer.get('label',{criteria:{order: 'name'}}); 16 var menuLabelItems = {}; 17 for(var i=0; i<labels.length; i++) { 18 menuLabelItems["label"+labels[i].id] = { 19 "name" : labels[i].name, 20 } 21 } 22 return menuLabelItems; 23 } 24 25 /** 26 * Carrega o menu de opção de uma mensagem 27 */ 28 function loadMenu(){ 29 var labelItems = getLabels(); 30 $.contextMenu({ 31 selector: ".table_box tbody tr", 32 callback: function(key, options) { 33 //TODO - default actions 34 35 /** 36 * Aply labels to selected messages 37 */ 38 var isLabel = key.match(/label(.*)/); 39 if (isLabel && isLabel.length > 1) { 40 var label = { 41 id: isLabel[1] 42 } 43 var lableleds = new Array(); 44 45 if(currentTab == 0){ 46 var messages = get_selected_messages().split(','); 47 }else{ 48 var messages = get_selected_messages_search().split(','); 49 } 50 51 for (var i=0; i < messages.length; i++) { 52 var hasLabel = DataLayer.get('labeled', [ 53 'AND', 54 ['=', 'labelId', label.id], 55 ['=', 'folderName', current_folder], 56 ['=', 'messageNumber', messages[i]] 57 ]); 58 if (!hasLabel) { 59 lableleds.push( 60 DataLayer.put('labeled', { 61 labelId:label.id, 62 folderName:current_folder, 63 messageNumber:messages[i] 64 }) 65 ); 66 67 } 68 } 69 DataLayer.commit(); 70 for (var i=0; i < messages.length; i++) { 71 updateLabelsColumn({msg_number:messages[i], labels:false}); 72 } 73 } 74 }, 75 items: { 76 "flagSeen": {"name": get_lang("Mark as") + " " + get_lang('seen'), "icon": "seen", callback: function(key, opt){ proxy_mensagens.proxy_set_messages_flag('seen','get_selected_messages'); }}, 77 "flagUnseen": {"name": get_lang("Mark as") + " " + get_lang('unseen'), "icon": "unseen", callback: function(key, opt){ proxy_mensagens.proxy_set_messages_flag('unseen','get_selected_messages'); }}, 78 "flagFlagged": {"name": get_lang("Mark as") + " " + get_lang('important'), "icon": "important", callback: function(key, opt){ proxy_mensagens.proxy_set_messages_flag('flagged','get_selected_messages'); }}, 79 "flagUnflagged": {"name": get_lang("Mark as") + " " + get_lang('normal'), callback: function(key, opt){ proxy_mensagens.proxy_set_messages_flag('unflagged','get_selected_messages'); }}, 80 81 "sep1": "---------", 82 "label": { "name": get_lang("Labels"), "items": labelItems}, 83 "follouwpflag":{"name": get_lang("Follow up"), callback: function(key, opt){ configureFollowupflag(); } }, 84 85 "sep2": "---------", 86 "move": {"name": get_lang("Move to")+"...", "icon": "move", callback: function(key, opt){ wfolders.makeWindow('', 'move_to'); }}, 87 "remove": {"name": get_lang("Delete"), "icon": "delete", callback: function(key, opt){ proxy_mensagens.delete_msgs('null','selected','null'); }}, 88 "export": {"name": get_lang("Export"), "icon": "export", callback: function(key, opt){ proxy_mensagens.export_all_messages(); }} 89 } 90 }); 91 } 92 /*FIM*/ 93 loadMenu(); 94 35 95 if (!expresso_offline) { 36 96 var menuToolsItems = { … … 40 100 "i04": {"name": get_lang("Edit folders"), "icon": "edit-folder", callback: folderbox }, 41 101 "i05": {"name": get_lang("Share mailbox"), "icon": "share-mailbox", callback: sharebox }, 42 43 "i08": {"name": get_lang("Empty trash"), "icon": "empty-trash", callback: function(key, opt){ empty_trash_imap () }}102 "i06": {"name": get_lang("Labels"), "icon": "tag", callback: configureLabels }, 103 "i08": {"name": get_lang("Empty trash"), "icon": "empty-trash", callback: function(key, opt){ empty_trash_imap }} 44 104 }; 45 105 … … 56 116 } 57 117 58 /**59 * Aplica o menu ferramentas60 */61 118 $.contextMenu({ 62 119 selector: "#link_tools", … … 70 127 events: { 71 128 show: function(opt) { 72 /**73 * Modifica cor do elemento de trigger para o menu74 */75 129 var $trigger = $(opt.selector).css({'background-color': '#EEEEEE', 'border': '1px solid #CCCCCC'}); 76 130 $('.context-menu-list.context-menu-root').css({'width': $trigger.css('width') }); … … 78 132 }, 79 133 hide: function(opt) { 80 /**81 * Modifica cor do elemento de trigger para o menu82 */83 134 $(opt.selector).css({'background-color': '', 'border': 'none'}); 84 135 return true; … … 86 137 }, 87 138 callback: function(key, options) { 88 //TODO - default actions139 89 140 }, 90 141 items: menuToolsItems 91 142 }); 92 143 144 145 function updateLabelsColumn(messageInfo) { 146 $('#td_message_labels_' + messageInfo.msg_number +', #td_message_labels_search_' + messageInfo.msg_number) 147 .html('<img src="../prototype/modules/mail/img/tag.png">'); 148 149 var menuItems = {}; 150 if (messageInfo.labels) { 151 menuItems = messageInfo.labels; 152 } else { 153 var labeleds = DataLayer.get('labeled', { 154 filter: [ 155 'AND', 156 ['=', 'folderName', current_folder], 157 ['=', 'messageNumber', messageInfo.msg_number] 158 ], 159 criteria: {deepness: 2} 160 }); 161 if (labeleds) { 162 for (var i=0; i < labeleds.length; i++) 163 menuItems[labeleds[i].label.id] = labeleds[i].label; 164 } else { 165 //não tem labels 166 return false; 167 } 168 } 169 170 $.contextMenu( 'destroy', '#td_message_labels_' + messageInfo.msg_number +', #td_message_labels_search_' + messageInfo.msg_number); 171 172 $.contextMenu({ 173 selector: '#td_message_labels_' + messageInfo.msg_number +', #td_message_labels_search_' + messageInfo.msg_number, 174 trigger: 'hover', 175 delay:100, 176 autoHide:true, 177 callback: function(key, options) { 178 //alert($(this).attr('id')); 179 }, 180 items: menuItems 181 }); 182 } 183 184 /** 185 * TODO 186 * * ao clicar com o botao direito em cima da mensagem, selecionar a mensagem 187 * * clarear a cor do menu ferramentas 188 * * pintar o botao ferramentas, quando clicado, da cor do menu 189 * 190 */ -
trunk/expressoMail1_2/js/drag_area.js
r5368 r5533 27 27 28 28 } 29 29 /* 30 30 DragArea.prototype.makeMenuBox = function(element){ 31 31 … … 52 52 53 53 } 54 */ 54 55 55 56 DragArea.prototype.makeDragged = function(element, msg_number, subject, from_list, folder){ … … 72 73 changeBgColor(is_ie ? window.event : e, msg_number); 73 74 } 74 ConstructRightMenu(is_ie ? window.event : e);75 //ConstructRightMenu(is_ie ? window.event : e); 75 76 } 76 77 return false; -
trunk/expressoMail1_2/js/draw_api.js
r5527 r5533 1 var openTab = { 1 /** 2 * Estrutura que guarda em cache as mensagens abertas, a exemplo da estrutura utilizada 3 * na funcionalidade de anexar mensagens. 4 * Isto reduz a necessidade de acessar estruturas da tela para obter informações sobre 5 * as mensagens, como tem sido para encaminhar, responder, etc. 6 * Manter os dados 'limpos' em uma estrutura 'somente-leitura' permite maior flexibilidade 7 * para mudar a tela e menos processamento de limpeza de dados (por exemplo retirar tags de 8 * formatação, etc.) 9 */ 10 onceOpenedHeadersMessages = {}; 11 12 var openTab = { 2 13 'type' : [], // 8 types of tabs, further info. see expressolivre.org/dev/wiki/mail/Documentacao 3 14 'content_id' : [], … … 153 164 var noden=document.getElementById('lnews_roottree_folders'); 154 165 noden.style.backgroundImage="url(templates/"+template+"/images/menu/rss.png)"; 166 167 168 155 169 } 156 170 // cExecute('$this.rss.getChannels',handlerChannel); … … 206 220 } 207 221 208 /*tree_folders.draw(Element('content_folders'));222 tree_folders.draw(Element('content_folders')); 209 223 if (!expresso_offline) { 210 224 n_root.changeState(); … … 214 228 root_local.changeState(); 215 229 tree_folders.getNodeById('local_Inbox')._select(); 216 } */217 230 } 231 218 232 var trash_span = document.getElementById(mount_url_folder(["lINBOX",special_folders["Trash"]]) + 'tree_folders'); 219 220 221 233 var draft_span = document.getElementById(mount_url_folder(["lINBOX",special_folders["Drafts"]]) + 'tree_folders'); 234 var sent_span = document.getElementById(mount_url_folder(["lINBOX",special_folders["Sent"]]) + 'tree_folders'); 235 var spam_span = document.getElementById(mount_url_folder(["lINBOX",special_folders["Spam"]]) + 'tree_folders'); 222 236 //local folders 223 237 var sent_local_conf = this.preferences.save_in_folder.replace(mount_url_folder(["INBOX",""]),"local_"); … … 321 335 } 322 336 } 323 337 } 338 339 function draw_tree_labels(){ 340 labels = DataLayer.get('label',{criteria:{order: 'name'}}); 341 342 $('#content_folders').append("<div id='MyMarckersList' class='acc-list list-label' ></div>").find("#MyMarckersList") 343 .append("<div class='my-labels'>" + 344 "<img src='../prototype/modules/mail/img/tag.png'/>" + 345 "<a class='title-my-labels' tabindex='0' role='button' aria-expanded='false' title='Meus marcadores'>Meus marcadores</a>" + 346 347 "<span class='status-list-labels ui-icon ui-icon-triangle-1-s'></span>" + 348 "</div>" 349 ) 350 .append(DataLayer.render("../prototype/modules/mail/templates/label_list.ejs", {labels: labels} )) 351 .find("li.label-item").css({"background-color":"#ffffff", "border-color":"#CCCCCC", "color":"#444444"}).click(function(){ 352 var labelId = $(this).attr('class').match(/label-item-([\d]+[()a-zA-Z]*)/)[1]; 353 search_emails("UNDELETED KEYWORD \"$Label"+labelId+"\""); 354 }) 355 .find(".square-color").css("display","").click(function(){ 356 $(this).parent(".label-item").each(function(){ 357 configureLabels({selectedItem: $(this).attr('class').match(/label-item-([\d]+[()a-zA-Z]*)/)[1]}); 358 var id_label_item = $(this).attr('class').match(/label-item-([\d]+[()a-zA-Z]*)/)[1]; 359 $(".label-list-container .label-list").find(".label-item-"+id_label_item).trigger("click"); 360 }); 361 }); 362 363 $("#MyMarckersList a.title-my-labels").click(function() { 364 $("#MyMarckersList ul.label-list").toggleClass("hidden") 365 $('#MyMarckersList .status-list-labels').toggleClass("ui-icon-triangle-1-s"); 366 $('#MyMarckersList .status-list-labels').toggleClass("ui-icon-triangle-1-n"); 367 }); 368 369 if (!labels){ 370 $(".my-labels").addClass("hidden"); 371 } 324 372 } 325 373 … … 436 484 } 437 485 draw_new_tree_folder(); 486 draw_tree_labels(); 438 487 } 439 488 … … 601 650 // stores the percentages of the cells 602 651 //var colSizes = [ ["24","24","12","12","12","16","16","20%","58%","11%","11%"], ["16","16","12","12","12","20%","20%","*","10%","10%"] ]; 603 var colSizes = [ ["2%","2%","1%","1%","1%","1%","2%","20%","48%","11%","11%"], ["16","16","12","12","12","20%","20%","*","10%","10%"] ]; 652 //var colSizes = [ ["2%","2%","1%","1%","1%","1%","2%","2%","20%","46%","11%","11%"], ["16","16","12","12","12","20%","20%","*","10%","10%"] ]; 653 var colSizes = [ ["2%","2%","1%","1%","1%","1%","2%","2%","2%","20%","46%","11%","11%"], ["2%","1%","1%","1%","1%","1%","1%","20%","20%","*","10%","9%"] ]; 604 654 // stores the alignments of the cells 605 655 var colAligns = [ ['','','','','','','','left','left','center','center'], ['','','','','','left','left','left','center','center'] ]; … … 942 992 // Draw the inbox and another folders 943 993 function draw_box(headers_msgs, msg_folder, alternate){ 944 994 /* 945 995 * When the paging response is not in the correct folder you need to change folder 946 996 * This occurs when the Ajax response is not fast enough and the user click in outher … … 968 1018 } 969 1019 /* --- */ 1020 1021 /** 1022 * Get the labels aplyed to the messages and saves the information 1023 * into message array 1024 */ 1025 var messageNumbers = new Array(); 1026 for (var i=0; i<headers_msgs.length; i++) { 1027 messageNumbers.push(headers_msgs[i].msg_number); 1028 } 1029 var labeleds = DataLayer.get('labeled', { 1030 filter: ['AND', ['IN', 'messageNumber', messageNumbers], ['=', 'folderName', msg_folder]], 1031 criteria: {deepness: 2} 1032 }); 1033 1034 if(labeleds) { 1035 for (var i=0; i<headers_msgs.length; i++) { 1036 for (var j=0; j<labeleds.length; j++) { 1037 if (labeleds[j].messageNumber == headers_msgs[i].msg_number) { 1038 if (!headers_msgs[i].labels) 1039 headers_msgs[i].labels = {}; 1040 headers_msgs[i].labels[labeleds[j].label.id] = labeleds[j].label; 1041 } 1042 } 1043 } 1044 } 1045 1046 /** 1047 * Get the followupflags aplyed to the messages and saves the information 1048 * into message array 1049 */ 1050 var followupflaggeds = DataLayer.get('followupflagged', { 1051 filter: ['AND', ['IN', 'messageNumber', messageNumbers], ['=', 'folderName', msg_folder]], 1052 criteria: {deepness: 1} 1053 }); 1054 1055 if(followupflaggeds) { 1056 for (var i=0; i<headers_msgs.length; i++) { 1057 for (var j=0; j<followupflaggeds.length; j++) { 1058 if (followupflaggeds[j].messageNumber == headers_msgs[i].msg_number) { 1059 if (!headers_msgs[i].followupflagged) 1060 headers_msgs[i].followupflagged = {}; 1061 headers_msgs[i].followupflagged = followupflaggeds[j]; 1062 } 1063 } 1064 } 1065 } 1066 1067 /** 1068 * Preenche a estrutura de cache de mensagens para posterior consulta de 1069 * informações sobre as mensagens no escopo global. 1070 */ 1071 for (var i=0; i<headers_msgs.length; i++) { 1072 if (!onceOpenedHeadersMessages[current_folder]) 1073 onceOpenedHeadersMessages[current_folder] = {}; 1074 onceOpenedHeadersMessages[current_folder][headers_msgs[i].msg_number] = headers_msgs[i]; 1075 } 970 1076 971 1077 if (alternate) … … 1030 1136 1031 1137 td_element2 = createTDElement(0,1); 1032 td_element3 = createTDElement(0, 7,"th_resizable","left","message_header_SORTFROM_"+numBox);1138 td_element3 = createTDElement(0,8,"th_resizable","left","message_header_SORTFROM_"+numBox); 1033 1139 td_element3.onclick = function () {sort_box(search_box_type,'SORTFROM');}; 1034 1140 td_element3.innerHTML = get_lang("From"); 1035 1141 1036 td_element4 = createTDElement(0, 8,"th_resizable","left","message_header_SORTSUBJECT_"+numBox);1142 td_element4 = createTDElement(0,9,"th_resizable","left","message_header_SORTSUBJECT_"+numBox); 1037 1143 td_element4.onclick = function () {sort_box(search_box_type,'SORTSUBJECT');}; 1038 1144 td_element4.innerHTML = get_lang("Subject"); 1039 1145 1040 td_element5 = createTDElement(0, 9,"th_resizable","center","message_header_SORTARRIVAL_"+numBox);1146 td_element5 = createTDElement(0,10,"th_resizable","center","message_header_SORTARRIVAL_"+numBox); 1041 1147 td_element5.onclick = function () {sort_box(search_box_type,'SORTARRIVAL');}; 1042 1148 td_element5.innerHTML = get_lang("Date"); 1043 1149 1044 td_element6 = createTDElement(0,1 0,"th_resizable","left","message_header_SORTSIZE_"+numBox);1150 td_element6 = createTDElement(0,11,"th_resizable","left","message_header_SORTSIZE_"+numBox); 1045 1151 td_element6.onclick = function () {sort_box(search_box_type,'SORTSIZE');} 1046 1152 td_element6.innerHTML = get_lang("Size"); … … 1060 1166 var td_element24 = createTDElement(0,5); 1061 1167 td_element24.innerHTML = " "; 1062 1063 var td_element25 = createTDElement(0,6); 1168 1169 1170 var td_element25 = createTDElement(0,7); 1064 1171 td_element25.innerHTML = " "; 1172 1173 var td_element27 = createTDElement(0,8); 1174 td_element25.innerHTML = " "; 1175 1176 var td_element26 = createTDElement(0,6); 1177 td_element26.innerHTML = " "; 1178 1065 1179 1066 1180 tr_element.appendChild(td_element21); … … 1068 1182 tr_element.appendChild(td_element23); 1069 1183 tr_element.appendChild(td_element24); 1184 tr_element.appendChild(td_element26); 1185 tr_element.appendChild(td_element27); 1070 1186 tr_element.appendChild(td_element25); 1187 1071 1188 tr_element.appendChild(td_element3); 1072 1189 tr_element.appendChild(td_element4); … … 1211 1328 }, 1212 1329 helper: function(event){ 1213 if($(this).find("input:checkbox").attr("checked") != "checked"){ 1214 $(this).find("input:checkbox").trigger('click'); 1215 $(this).addClass("selected_msg"); 1216 } 1330 $(this).find("input:checkbox").attr("checked", true); 1217 1331 if($("#table_box").find("tr input:checked").length > 1) 1218 1332 return $(DataLayer.render('../prototype/modules/mail/templates/draggin_box.ejs', {texto : (($("#table_box").find("tr input:checked")).length+" mensagens selecionadas"), type: "messages"})); … … 1228 1342 scrollSpeed: 100, 1229 1343 containment: "#divAppbox" 1230 }).bind("contextmenu", function(){ 1231 if($(this).find("input:checkbox").attr("checked") != "checked"){ 1232 $(this).find("input:checkbox").trigger('click'); 1233 $(this).addClass("selected_msg"); 1344 }).bind("mouseup", function(event){ 1345 if(event.button == 2) 1346 if($(this).find("input:checkbox").attr("checked") != "checked"){ 1347 $(this).find("input:checkbox").trigger('click'); 1348 $(this).addClass("selected_msg"); 1234 1349 } 1235 1350 }); … … 1255 1370 alert("Carregou em "+(_eTime - _bTime)+" ms"); 1256 1371 } 1372 1257 1373 var msg_folder = Element('msg_folder').value; 1258 1374 var msg_number = Element('msg_number').value; … … 1271 1387 if(Element("table_quota")) 1272 1388 connector.loadScript("InfoQuota"); 1273 1389 1274 1390 // creates the dotted ruler which helps user to visualize resizing of columns 1275 1391 var ruler_element = document.getElementById("table_message_ruler"); … … 1281 1397 document.getElementById("exmail_main_body").appendChild(ruler_element); 1282 1398 } 1283 1399 1284 1400 } 1285 1401 … … 1303 1419 // Passar o parâmetro offset para esta função 1304 1420 function make_tr_message(headers_msgs, msg_folder, offsetToGMT){ 1305 if (typeof offsetToGMT == 'undefined') 1306 { 1307 // In older local messages headers_msgs.offsetToGMT is undefined. 1308 offsetToGMT = typeof headers_msgs.offsetToGMT != 'undefined'?headers_msgs.offsetToGMT:0; 1309 } 1421 1422 if (typeof offsetToGMT == 'undefined') 1423 { 1424 // In older local messages headers_msgs.offsetToGMT is undefined. 1425 offsetToGMT = typeof headers_msgs.offsetToGMT != 'undefined'?headers_msgs.offsetToGMT:0; 1426 } 1310 1427 var tr_element = document.createElement('tr'); 1311 1428 if(typeof(preferences.line_height) != 'undefined') … … 1350 1467 chk_box_element.className = "checkbox"; 1351 1468 chk_box_element.setAttribute("id", "check_box_message_"+headers_msgs.msg_number); 1352 chk_box_element.onclick = function(e){ 1353 if (is_ie) 1354 changeBgColor(window.event,headers_msgs.msg_number); 1355 else 1469 chk_box_element.onchange = function(e){ 1470 //if (is_ie) 1356 1471 changeBgColor(e,headers_msgs.msg_number); 1357 1472 }; … … 1415 1530 1416 1531 1417 td_element25 = createTDElement(0, 6,"td_msg",null,"td_message_unseen_"+headers_msgs.msg_number);1532 td_element25 = createTDElement(0,7,"td_msg",null,"td_message_unseen_"+headers_msgs.msg_number); 1418 1533 if ((headers_msgs.Unseen == 'U') || (headers_msgs.Recent == 'N')) 1419 1534 td_element25.innerHTML = "<img src ='templates/"+template+"/images/unseen.gif' title='"+get_lang('Unseen')+"'>"; … … 1422 1537 1423 1538 1424 td_element3 = createTDElement(0, 7,"td_msg td_resizable","left","td_from_"+ headers_msgs.msg_number);1539 td_element3 = createTDElement(0,8,"td_msg td_resizable","left","td_from_"+ headers_msgs.msg_number); 1425 1540 var _onclick = function(){InfoContact.hide();proxy_mensagens.get_msg(headers_msgs.msg_number, msg_folder,true, show_msg);}; 1426 1541 td_element3.onclick = _onclick; … … 1483 1598 } 1484 1599 1485 td_element4 = createTDElement(0, 8,"td_msg td_resizable","left");1600 td_element4 = createTDElement(0,9,"td_msg td_resizable","left"); 1486 1601 td_element4.className += " td_msg_subject"; 1487 1602 td_element4.onclick = _onclick; … … 1511 1626 td_element4.innerHTML += "</a>"; 1512 1627 } 1513 1514 1515 td_element5 = createTDElement(0,9,"td_msg td_resizable","center"); 1628 1629 td_element5 = createTDElement(0,10,"td_msg td_resizable","center"); 1516 1630 td_element5.onclick = _onclick; 1517 1631 1632 td_element27 = createTDElement(0,7,"td_msg",null,"td_message_labels_"+headers_msgs.msg_number); 1633 $(td_element27).addClass("td-label"); 1634 1635 if (headers_msgs.labels) { 1636 td_element27.innerHTML = '<img src="../prototype/modules/mail/img/tag.png">'; 1637 updateLabelsColumn(headers_msgs) 1638 } 1639 1640 td_element26 = createTDElement(0,6,"td_msg",null,"td_message_followup_"+headers_msgs.msg_number); 1641 $(td_element26).addClass("td-followup-flag"); 1642 td_element26.innerHTML = '<div class="flag-edited" style="width:9px;height:6px;"><img src="../prototype/modules/mail/img/flagEditor.png"></div>'; 1643 1644 if (headers_msgs.followupflagged) { 1645 $(td_element26).attr('title', headers_msgs.followupflagged.followupflag.name) 1646 .find(".flag-edited").css("background",headers_msgs.followupflagged.backgroundColor); 1647 if(headers_msgs.followupflagged.isDone == "1"){ 1648 $(td_element26).find(".flag-edited").find("img") 1649 .attr("src", "../prototype/modules/mail/img/flagChecked.png") 1650 .css("margin-left","-3px"); 1651 } 1652 } else { 1653 $(td_element26).find(".flag-edited").css("background","#cccccc"); 1654 } 1655 1656 /** 1657 * Clique para aplicar sinalizador 1658 */ 1659 $(td_element26).click(function() { 1660 1661 var messageClickedId = $(this).attr('id').match(/td_message_followup_([\d]+)/)[1]; 1662 /** 1663 * Hack: 1664 * headers_msgs.followupflagged.id não vai funcionar porque já foi feito DataLayer.commit() 1665 * por isso o id deve ser obtido do banco 1666 * também para verificar se há ou não sinalizador nesta mensagem 1667 */ 1668 var flagged = DataLayer.get('followupflagged', {filter: [ 1669 'AND', 1670 ['=', 'messageNumber', messageClickedId], 1671 ['=', 'folderName', msg_folder] 1672 ]}); 1673 if (flagged == '' || flagged == [] || flagged == 'undefined') { 1674 /** 1675 * Aplica followupflag de Acompanhamento 1676 */ 1677 1678 headers_msgs.followupflagged = { 1679 uid : User.me.id, 1680 folderName : msg_folder, 1681 messageNumber : messageClickedId, 1682 alarmTime : false, 1683 backgroundColor : '#FF2016', 1684 followupflagId: '1', 1685 followupflag: DataLayer.get('followupflag', '1') 1686 }; 1687 $(this).find(".flag-edited").css("background", headers_msgs.followupflagged.backgroundColor); 1688 headers_msgs.followupflagged.id = DataLayer.put('followupflagged', headers_msgs.followupflagged); 1689 1690 } else if (headers_msgs.followupflagged.followupflag.name == 'Follow up') { 1691 /** 1692 * Remover followupflag de Acompanhamento (DFD0078:RI25) 1693 */ 1694 $(this).find(".flag-edited").css("background", "#cccccc"); 1695 1696 1697 DataLayer.remove('followupflagged', flagged[0].id); 1698 $('#td_message_followup_' + messageClickedId + ', ' + 1699 '#td_message_followup_search_' + messageClickedId).find(".flag-edited") 1700 .find("img").attr("src", "../prototype/modules/mail/img/flagEditor.png").css("margin-left","0"); 1701 } else { 1702 $(tr_element).addClass('selected_msg').find(':checkbox').trigger('click'); 1703 configureFollowupflag(); 1704 } 1705 1706 }); 1707 1518 1708 var norm = function (arg) {return (arg < 10 ? '0'+arg : arg);}; 1519 1709 var weekDays = ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday']; … … 1557 1747 td_element5.alt = td_element5.title; 1558 1748 1559 td_element6 = createTDElement(0,1 0,"td_msg td_resizable","center");1749 td_element6 = createTDElement(0,11,"td_msg td_resizable","center"); 1560 1750 td_element6.onclick = _onclick; 1561 1751 td_element6.setAttribute("noWrap","true"); … … 1567 1757 tr_element.appendChild(td_element22); 1568 1758 tr_element.appendChild(td_element23); 1569 tr_element.appendChild(td_element24); 1759 tr_element.appendChild(td_element24); 1760 tr_element.appendChild(td_element26); 1761 tr_element.appendChild(td_element27); 1570 1762 tr_element.appendChild(td_element25); 1763 1571 1764 tr_element.appendChild(td_element3); 1572 1765 tr_element.appendChild(td_element4); … … 3386 3579 if ((e.keyCode) == 120) //F9 3387 3580 { 3388 emQuickSearch(input_replyto.value, 'replyto', ID , undefined,true);3581 emQuickSearch(input_replyto.value, 'replyto', ID); 3389 3582 } 3390 3583 else … … 3412 3605 if ((window.event.keyCode) == 120) //F9 3413 3606 { 3414 emQuickSearch(input_replyto.value, 'replyto', ID , undefined,true);3607 emQuickSearch(input_replyto.value, 'replyto', ID); 3415 3608 } 3416 3609 else … … 3453 3646 if ((e.keyCode) == 120) //F9 3454 3647 { 3455 emQuickSearch(input_to.value, 'to', ID , undefined,true);3648 emQuickSearch(input_to.value, 'to', ID); 3456 3649 } 3457 3650 else … … 3479 3672 if ((window.event.keyCode) == 120) //F9 3480 3673 { 3481 emQuickSearch(input_to.value, 'to', ID , undefined,true);3674 emQuickSearch(input_to.value, 'to', ID); 3482 3675 } 3483 3676 else … … 3536 3729 if ((e.keyCode) == 120) //F9 3537 3730 { 3538 emQuickSearch(input_cc.value, 'cc', ID , undefined,true);3731 emQuickSearch(input_cc.value, 'cc', ID); 3539 3732 } 3540 3733 else … … 3562 3755 if ((window.event.keyCode) == 120) //F9 3563 3756 { 3564 emQuickSearch(input_cc.value, 'cc', ID , undefined,true);3757 emQuickSearch(input_cc.value, 'cc', ID); 3565 3758 } 3566 3759 else … … 3608 3801 if ((e.keyCode) == 120) //F9 3609 3802 { 3610 emQuickSearch(input_cco.value, 'cco', ID , undefined,true);3803 emQuickSearch(input_cco.value, 'cco', ID); 3611 3804 } 3612 3805 else … … 3633 3826 if ((window.event.keyCode) == 120) //F9 3634 3827 { 3635 emQuickSearch(input_cco.value, 'cco', ID , undefined,true);3828 emQuickSearch(input_cco.value, 'cco', ID); 3636 3829 } 3637 3830 else … … 3656 3849 var cc_load = ""; 3657 3850 a_cc_link.onclick = function () { 3658 var rm = false;3659 3851 var remove = function(){ 3660 3852 document.getElementById('tr_cc_'+ID).style.display = 'none'; … … 3662 3854 $("#cc_"+ID).val(""); 3663 3855 $("#a_cc_link_"+ID).toggleClass("expressomail-button-icon-ative"); 3664 rm = true;3665 3856 } 3666 3857 if(!($("#cc_"+ID).parent().find("div")[0])){ … … 3682 3873 } 3683 3874 } 3684 if (rm) 3685 input_to.focus(); 3686 else 3687 input_cc.focus(); 3875 input_cc.focus(); 3876 3688 3877 return false; 3689 3878 }; … … 4014 4203 $("#"+$(this).attr("name")).attr("checked", (!check ? true : false)); 4015 4204 //$(this).button({ disabled: false }); 4016 if (RichTextEditor.plain[id] != true)4017 setTimeout("RichTextEditor.focus("+ID+")",100);4018 else4019 $('#body_'+ID).focus();4020 4205 }); 4021 4206 -
trunk/expressoMail1_2/js/main.js
r5524 r5533 322 322 323 323 function show_msg_img(msg_number,folder){ 324 alert(msg_number+folder); 324 325 var call_back = function(data){ 325 326 data.showImg = true; -
trunk/expressoMail1_2/js/search.js
r5506 r5533 16 16 this.elementChecked = false; 17 17 } 18 18 19 19 //Monta os forms dentro da janela; 20 20 searchE.prototype.showForms = function(value) … … 442 442 443 443 searchE.prototype.make_tr_message = function(aux,border_id,i) { 444 console.log(aux); 445 /** 446 * Preenche a estrutura de cache de mensagens para posterior consulta de 447 * informações sobre as mensagens no escopo global. 448 */ 449 if (!onceOpenedHeadersMessages[aux.boxname]) 450 onceOpenedHeadersMessages[aux.boxname] = {}; 451 onceOpenedHeadersMessages[aux.boxname][aux.uid] = aux; 452 444 453 var tr = document.createElement("TR"); 445 454 if(typeof(preferences.line_height) != 'undefined') 446 455 tr.style.height = preferences.line_height; 447 456 457 var msg_folder = get_current_folder(); 458 448 459 var mailbox = aux.boxname; 449 460 var uid_msg = aux.uid; … … 455 466 tr.setAttribute('name',mailbox); 456 467 tr.name = mailbox; 457 468 458 469 if ( aux.flag.match("U") ) 459 470 add_className(tr,'tr_msg_unread'); … … 466 477 }; 467 478 468 for(var j=0 ; j <= 1 0; j++)479 for(var j=0 ; j <= 11 ; j++) 469 480 { 470 481 var td = document.createElement("TD"); … … 519 530 { 520 531 td.setAttribute("width", colSizes[1][4]); 532 td.id = "td_message_followup_search_"+uid_msg; 533 td.setAttribute("class","search-result-item"); 534 //td1 = "<img src ='../prototype/modules/mail/img/flagDefault.png' title='"+get_lang('Followup')+"'>"; 535 td1 = '<div class="flag-edited" style="width:9px;height:6px;"><img src="../prototype/modules/mail/img/flagEditor.png"></div>'; 536 537 $(td).click(function(event, ui){ 538 var messageClickedId = $(this).attr('id').match(/td_message_followup_search_([\d]+)/)[1]; 539 var flagged = DataLayer.get('followupflagged', {filter: [ 540 'AND', 541 ['=', 'messageNumber', messageClickedId], 542 ['=', 'folderName', mailbox] 543 ]}); 544 if(flagged == '' || flagged == [] || flagged == 'undefined'){ 545 /** 546 * Aplica followupflag de Acompanhamento 547 */ 548 aux.followupflagged = { 549 uid : User.me.id, 550 folderName : mailbox, 551 messageNumber : messageClickedId, 552 alarmTime : false, 553 backgroundColor : '#FF2016', 554 followupflagId: '1', 555 followupflag: DataLayer.get('followupflag', '1') 556 }; 557 $(this).find(".flag-edited").css("background", aux.followupflagged.backgroundColor); 558 aux.followupflagged.id = DataLayer.put('followupflagged', aux.followupflagged); 559 560 }else if(aux.followupflagged.id){ 561 /** 562 * Remover followupflag de Acompanhamento (DFD0078:RI25) 563 */ 564 $(this).find(".flag-edited").css("background", "#cccccc"); 565 566 567 DataLayer.remove('followupflagged', flagged[0].id); 568 $('#td_message_followup_' + messageClickedId + ', ' + 569 '#td_message_followup_search_' + messageClickedId).find(".flag-edited") 570 .find("img").attr("src", "../prototype/modules/mail/img/flagEditor.png").css("margin-left","0"); 571 } else { 572 //TODO - open dialog 573 } 574 if(!DataLayer.commit()){} 575 576 }); 577 } 578 if (j == 5) 579 { 580 td.setAttribute("width", colSizes[1][5]); 581 td.id = "td_message_labels_search_"+uid_msg; 582 td.setAttribute("class","td-label-search"); 583 584 if (aux.labels) { 585 td1 = '<img src="../prototype/modules/mail/img/tag.png">'; 586 updateLabelsColumn(aux) 587 } else { 588 td1 = ''; 589 } 590 } 591 if (j == 6) 592 { 593 td.setAttribute("width", colSizes[1][6]); 521 594 td.id = "td_message_sent_"+uid_msg; 522 595 td1 = ''; 523 596 } 524 597 525 if ( j == 5)526 { 527 td.setAttribute("width", colSizes[1][ 5]);598 if ( j == 7 ) 599 { 600 td.setAttribute("width", colSizes[1][7]); 528 601 td.className = "td_resizable"; 529 602 td.onclick = _onclick; … … 536 609 537 610 var td1 = get_lang(td1).substr(get_lang(td1).length-1) == "*"?td1:get_lang(td1); 538 539 td1 = translateFolder(td1); 540 541 542 if( proxy_mensagens.is_local_folder(td1)) 543 { 611 td1 = translateFolder(td1); 612 613 if (proxy_mensagens.is_local_folder(td1)) { 544 614 var td1 = this.aux_local_folder_display(td1); 545 615 } 546 616 } 547 617 548 if( j == 6)618 if( j == 8 ) 549 619 { 550 620 var name; … … 557 627 name = name.substr(0,29) + "..."; 558 628 559 td.setAttribute("width", colSizes[1][ 6]);629 td.setAttribute("width", colSizes[1][8]); 560 630 td.className = "td_resizable"; 561 631 td.onclick = _onclick; … … 566 636 } 567 637 568 if( j == 7)638 if( j == 9 ) 569 639 { 570 640 var subject_encode = url_encode(subject); … … 575 645 aux.subject = aux.subject.substr(0,70) + "..."; 576 646 577 td.setAttribute("width", colSizes[1][ 7]);647 td.setAttribute("width", colSizes[1][9]); 578 648 td.className = "td_resizable td_msg_search_subject"; 579 649 td.onclick = _onclick; … … 584 654 } 585 655 586 if( j == 8)587 { 588 td.setAttribute("width", colSizes[1][ 8]);656 if( j == 10 ) 657 { 658 td.setAttribute("width", colSizes[1][10]); 589 659 td.className = "td_resizable"; 590 660 td.align = "center"; … … 609 679 } 610 680 611 if( j == 9)681 if( j == 11 ) 612 682 { 613 683 td.setAttribute("width", "9.4%");//alinhamento dos campos data e tamanho … … 623 693 } 624 694 625 if( j == 1 0)695 if( j == 12 ) 626 696 { 627 697 if (aux.flag.match("U")) … … 631 701 var td1 = ''; 632 702 } 633 if (j<1 0) {703 if (j<12) { 634 704 td.innerHTML = td1; 705 706 //Carregar os followupflag nos resultados. 707 if (aux.followupflagged) { 708 $(td).attr('title', aux.followupflagged.followupflag.name) 709 .find(".flag-edited").css("background",aux.followupflagged.backgroundColor); 710 if(aux.followupflagged.isDone == "1"){ 711 $(td).find(".flag-edited").find("img") 712 .attr("src", "../prototype/modules/mail/img/flagChecked.png") 713 .css("margin-left","-3px"); 714 } 715 } else { 716 $(td).find(".flag-edited").css("background","#cccccc"); 717 } 718 635 719 tr.appendChild(td); 636 720 } … … 692 776 scrollSpeed: 100, 693 777 containment: "#divAppbox" 694 }).bind("contextmenu", function(){ 695 if($(this).find("input:checkbox").attr("checked") != "checked"){ 696 $(this).find("input:checkbox").trigger('click'); 697 $(this).addClass("selected_msg"); 778 }).bind("mouseup", function(event){ 779 if(event.button == 2) 780 if($(this).find("input:checkbox").attr("checked") != "checked"){ 781 $(this).find("input:checkbox").trigger('click'); 782 $(this).addClass("selected_msg"); 698 783 } 699 784 }); … … 705 790 { 706 791 var data = ( Data['data'] ) ? Data['data'] : Data['data_gears']; 707 708 792 if ( data == undefined ) 709 793 return; 710 794 711 795 var cont = parseInt(0); 712 796 … … 859 943 td_element03 = createTDElement(1,3); 860 944 td_element04 = createTDElement(1,4); 861 td_element1 = createTDElement(1,5,"th_resizable","left"); 945 td_element05 = createTDElement(1,5); 946 td_element06 = createTDElement(1,6); 947 td_element1 = createTDElement(1,7,"th_resizable","left"); 862 948 863 949 var arrow_ascendant = function(Text) … … 865 951 return "<b>" + Text + "</b><img src='templates/"+template+"/images/arrow_ascendant.gif'>"; 866 952 } 867 953 868 954 // Ordernar Pasta 869 955 if ( sort_type == 'SORTBOX' /*|| sort_type == 'SORTBOX_REVERSE'*/ ) … … 894 980 895 981 // Ordernar Quem 896 td_element2 = createTDElement(1, 6,"th_resizable","left");982 td_element2 = createTDElement(1,8,"th_resizable","left"); 897 983 898 984 if (sort_type == 'SORTFROM' || sort_type == 'SORTWHO' /*|| sort_type == 'SORTWHO_REVERSE' || sort_type == 'SORTFROM_REVERSE'*/ ) … … 923 1009 924 1010 // Ordernar Subject 925 td_element3 = createTDElement(1, 7,"th_resizable","left");1011 td_element3 = createTDElement(1,9,"th_resizable","left"); 926 1012 927 1013 if (sort_type == 'SORTSUBJECT' /*|| sort_type == 'SORTSUBJECT_REVERSE'*/) … … 952 1038 953 1039 // Ordernar Data 954 td_element4 = createTDElement(1, 8,"th_resizable","center");1040 td_element4 = createTDElement(1,10,"th_resizable","center"); 955 1041 956 1042 if ( sort_type == 'SORTDATE' /*|| sort_type == 'SORTDATE_REVERSE'*/ ) … … 981 1067 982 1068 // Ordernar Tamanho 983 td_element5 = createTDElement(1, 9,"th_resizable","center");1069 td_element5 = createTDElement(1,11,"th_resizable","center"); 984 1070 985 1071 if ( sort_type == 'SORTSIZE' /*|| sort_type == 'SORTSIZE_REVERSE'*/ ) … … 1008 1094 td_element5.innerHTML = ( sort_type == 'SORTSIZE_REVERSE' ) ? arrow_ascendant(get_lang("size")) : get_lang("size"); 1009 1095 } 1096 1097 //Abrir a Tela de de Configuracao de Acompanhamento 1098 1010 1099 1011 1100 tr_element.appendChild(td_element0); … … 1014 1103 tr_element.appendChild(td_element03); 1015 1104 tr_element.appendChild(td_element04); 1105 tr_element.appendChild(td_element05); 1106 tr_element.appendChild(td_element06); 1016 1107 tr_element.appendChild(td_element1); 1017 1108 tr_element.appendChild(td_element2); … … 1022 1113 table_element.appendChild(tbody_element); 1023 1114 1115 1024 1116 var colgr_element = buildColGroup(1); 1025 1117 colgr_element.setAttribute("id","colgroup_head_"+numBox); … … 1624 1716 // Cria o objeto 1625 1717 var EsearchE = new searchE(); 1718 var EsearchE = new searchE(); -
trunk/expressoMail1_2/templates/default/expressomail.css
r5523 r5533 119 119 } 120 120 121 122 123 124 121 .context-menu-item.icon-important { background-image: url(images/important.gif); background-position: 6px 5px !important} 125 122 .context-menu-item.icon-export { background-image: url(images/export.png); } … … 131 128 132 129 133 134 130 .context-menu-item.icon-search-mail { background-image: url(images/menu/search.png); } 135 131 .context-menu-item.icon-filter { background-image: url(images/menu/filters.png); } … … 137 133 .context-menu-item.icon-share-mailbox { background-image: url(images/menu/usersfolders.png); } 138 134 .context-menu-item.icon-label { background-image: url(images/menu/usersfolders.png); } 135 .context-menu-item.icon-tag { background-image: url(images/menu/tag.png); margin: 3px; } 139 136 .context-menu-item.icon-empty-trash { background-image: url(images/menu/trash.png); } 140 137 .context-menu-item.icon-queue { background-image: url(images/menu/queue.png); } 141 -
trunk/expressoMail1_2/templates/default/index.tpl
r5525 r5533 207 207 <div id="sandbox" class="expresso-calendar-container hidden"> 208 208 </div> 209 <div id="windowLabels" class="label-configure-win"></div> 210 <div id="followupFlag" class="followupflag-configure-win hidden"></div> 209 211 <!-- END list --> -
trunk/phpgwapi/templates/default/css/base.css
r5486 r5533 360 360 { 361 361 } 362 .context-menu-item.icon-preferences-mail { background-image: url(../images/preferences.png); } -
trunk/prototype/config/OpenLDAP.srv
r5399 r5533 5 5 host = 127.0.0.1 6 6 7 ;context = dc=exemplo.com 7 context = "dc=prognus" 8 8 ;user = 9 9 ;password = -
trunk/prototype/config/PostgreSQL.srv
r5523 r5533 3 3 [config] 4 4 port = 5432 5 dbname= expresso 5 dbname= expresso24douglasz 6 6 user=postgres 7 7 host = /var/run/postgresql 8 ;conex ão via tcp8 ;conexᅵo via tcp 9 9 ;host = 127.0.0.1 10 10 11 ;user= 12 ;password= 11 user = expressodev 12 password = prognus -
trunk/prototype/modules/attach_message/attach_message.js
r5399 r5533 319 319 datatype: "json", 320 320 mtype: 'GET', 321 colNames:['#', 321 colNames:['#',' ', 'De', 'Assunto', 'Data', 'Tamanho'], 322 322 colModel:[ 323 323 {name:'msg_number',index:'msg_number', width:45, hidden:true, sortable:false}, -
trunk/prototype/modules/mail/js
-
Property
svn:ignore
set to
.goutputstream-7O768V
-
Property
svn:ignore
set to
-
trunk/prototype/modules/mail/templates
-
Property
svn:ignore
set to
.label_listitem.ejs.kate-swp
-
Property
svn:ignore
set to
-
trunk/prototype/modules/mail/templates/detailedfoldertree.ejs
r5500 r5533 52 52 </li> 53 53 <%}%> 54 <li><span class="folder head_folder all_accomp">Para acompanhamento</span> 55 </li> 54 56 </ul> -
trunk/prototype/services/ImapServiceAdapter.php
r5416 r5533 7 7 public function open( $config ) 8 8 { 9 $this->init();9 $this->init(); 10 10 } 11 11 12 12 // public function connect( $config ) 13 13 // { 14 // $this->init();14 // $this->init(); 15 15 // } 16 16 17 17 public function find( $URI, $justthese = false, $criteria = false ) 18 18 { 19 $context = $justthese['context']; 20 $URI = $URI['concept']; 21 22 switch( $URI ) 23 { 24 case 'folder': 25 { 26 $result = $this->to_utf8($this->get_folders_list()); 27 28 foreach ($result as $res) { 29 30 $response[] = array( 31 'id' => $res['folder_id'], 32 'commonName' => $res['folder_name'], 33 'parentFolder' => $res['folder_parent'], 34 'messageCount' => array('unseen' => isset($res['folder_unseen']) ? $res['folder_unseen'] : null, 'total' => null) 35 ); 19 $context = $justthese['context']; 20 $URI = $URI['concept']; 21 22 switch( $URI ) 23 { 24 case 'folder': 25 { 26 $result = $this->to_utf8($this->get_folders_list()); 27 28 foreach ($result as $res) { 29 30 $response[] = array( 31 'id' => $res['folder_id'], 32 'commonName' => $res['folder_name'], 33 'parentFolder' => $res['folder_parent'], 34 'messageCount' => array('unseen' => isset($res['folder_unseen']) ? $res['folder_unseen'] : null, 'total' => null) 35 ); 36 } 37 38 return $response; 39 } 40 case 'message': 41 { 42 //begin: for grid 43 $page = $criteria['page']; //{1} get the requested page 44 $limit = $criteria['rows']; //{10} get how many rows we want to have into the grid 45 $sidx = $criteria['sidx']; //{id} get index row - i.e. user click to sort 46 $sord = $criteria['sord']; //{desc} get the direction 47 48 $filter = $criteria['filter']; 49 50 if( !$sidx ) $sidx = 1; 51 52 $folder_name = str_replace( '.', $this->imap_delimiter, $context['folder'] ); 53 54 $count = imap_num_msg( $this->open_mbox( $folder_name ) ); 55 56 $total_pages = $count > 0 ? ceil( $count/$limit ) : 0; 57 58 if( $page > $total_pages ) 59 $page = $total_pages; 60 61 $start = $limit * $page - $limit; 62 63 // do not put $limit*($page - 1) 64 //end: for grid 65 66 if( $filter ) 67 { 68 if( $filter[0] !== 'msgNumber' ) 69 { 70 for( $i = 0; $i < count($filter); $i++ ) 71 { 72 if( count( $filter[$i] ) === 4 ) 73 $criteria['isExact'] = ( array_shift( $filter[$i] ) === 'AND' ); 74 75 $criteria[ $filter[$i][0] ] = array( 'criteria' => $filter[$i][2], 'filter' => $filter[$i][1] ); 76 } 77 78 return $this->searchSieveRule($criteria); 79 } 80 81 $msgNumber = array(); 82 83 for( $i = $start; $i < $start + $limit && isset( $filter[2][$i] ); $i++ ) 84 $msgNumber[] = $filter[2][$i]; 85 86 if( empty( $msgNumber ) ) 87 return( false ); 88 89 $result = $this->get_info_msgs( array( 'folder' => $folder_name, 90 'msgs_number' => implode( ',', $msgNumber ) ) ); 91 92 foreach( $result as $i => $val ) 93 $result[$i] = unserialize( $val ); 94 95 } 96 else 97 { 98 $result = $this->get_range_msgs2( 99 array( 100 'folder' => $folder_name, //INBOX 101 'msg_range_begin' => $start + 1, //?? 102 'msg_range_end' => $start + $limit, //$limit = $_GET['rows']; // get how many rows we want to have into the grid 103 'sort_box_type' => 'SORTARRIVAL', 104 'search_box_type' => 'ALL', 105 'sort_box_reverse' => 1 106 ) 107 ); 108 } 109 //return var_export($result); 110 111 $response = array( "page" => $page, "total" => $total_pages, "records" => $count ); 112 113 for ($i=0; $i<count($result); $i++) 114 { 115 $flags_enum = array('Recent', 'Unseen', 'Answered', 'Draft', 'Deleted', 'Flagged'); 116 117 foreach ($flags_enum as $key => $flag) 118 { 119 if ( !isset($result[$i][$flag]) || !trim($result[$i][$flag]) || trim($result[$i][$flag]) == '') 120 unset($flags_enum[$key]); 121 122 unset($result[$i][$flag]); 123 } 124 125 if (array_key_exists($i, $result)) 126 { 127 $response["rows"][$i] = $result[$i]; 128 $response["rows"][$i]['timestamp'] = ( ( $result[$i]['udate'] + $this->functions->CalculateDateOffset() ) * 1000 ); 129 $response["rows"][$i]['flags'] = implode(',', $flags_enum); 130 $response["rows"][$i]['size'] = $response["rows"][$i]['Size']; 131 //$response["rows"][$i]['udate'] = ( $result[$i]['udate'] + $this->functions->CalculateDateOffset() * 1000 ); 132 unset($response["rows"][$i]['Size']); 133 } 134 } 135 136 return $this->to_utf8($response); 137 } 138 139 /** 140 * Filtros suportados: 141 * - ['=', 'folderName', $X] 142 * - [ 143 * 'AND', 144 * [ 145 * 'AND', 146 * ['=', 'folderName', $X], 147 * ['IN', 'messageNumber', $Ys] 148 * ], 149 * ['IN', 'labelId', $Zs] 150 * ] 151 * - ['=', 'labelId', $X] 152 * - [ 153 * 'AND', 154 * ['=', 'folderName', $X], 155 * ['=', 'labelId', $Y] 156 * ] 157 * - ['IN', 'labelId', $Ys] 158 * - [ 159 * 'AND', 160 * ['=', 'folderName', $X], 161 * ['IN', 'labelId', $Ys] 162 * ] 163 */ 164 case 'labeled': 165 { 166 $result = array ( ); 167 if (isset($criteria["filter"]) && is_array($criteria['filter'])) { 168 //melhorar o tratamento do filter com a lista de todos os labelIds dado pelo interceptor 169 $map = array( 170 'id' => array(), 171 'folderName' => array(), 172 'messageNumber' => array(), 173 'labelId' => array() 174 ); 175 176 self::parseFilter($criteria["filter"], &$map); 177 178 if (count($map['folderName']) == 0) { 179 $folders = $this->get_folders_list(); 180 foreach ($folders as $folder) 181 if (isset($folder['folder_id'])) 182 $map['folderName'][] = $folder['folder_id']; 183 } 184 185 foreach ($map['folderName'] as $folder) { 186 $this->mbox = $this->open_mbox($folder); 187 188 foreach ($map['labelId'] as $label) { 189 $messagesLabeleds = imap_search($this->mbox, 'UNDELETED KEYWORD "$Label'.$label.'"', SE_UID); 190 191 foreach ($messagesLabeleds as $messageLabeled) { 192 if (count($map['messageNumber']) > 0 && !in_array($messageLabeled, $map['messageNumber'])) 193 continue; 194 195 $result[] = array ( 196 'id' => $folder . '/' . $messageLabeled . '#' . $label, 197 'folderName' => $folder, 198 'messageNumber' => $messageLabeled, 199 'labelId' => $label 200 ); 201 } 202 } 203 204 imap_close($this->mbox); 205 $this->mbox = false; 206 } 207 } 208 209 return $result; 210 } 211 212 case 'followupflagged': 213 { 214 215 $result = array ( ); 216 if (isset($criteria["filter"]) && is_array($criteria['filter'])) { 217 //melhorar o tratamento do filter com a lista de todos os labelIds dado pelo interceptor 218 $map = array( 219 'id' => array(), 220 'folderName' => array(), 221 'messageNumber' => array() 222 ); 223 224 self::parseFilter($criteria["filter"], &$map); 225 226 if (empty($map['folderName'])) { 227 $folders = $this->get_folders_list(); 228 foreach ($folders as $folder) 229 if (isset($folder['folder_id'])) 230 $map['folderName'][] = $folder['folder_id']; 231 } 232 233 foreach ($map['folderName'] as $folder) { 234 $this->mbox = $this->open_mbox($folder); 235 236 foreach ($map['id'] as $followupflagged) { 237 $messagesFlaggeds = imap_search($this->mbox, 'UNDELETED KEYWORD "$Followupflag'.$followupflagged.'"', SE_UID); 238 239 foreach ($messagesFlaggeds as $messageFlagged) { 240 if (count($map['messageNumber']) > 0 && !in_array($messageFlagged, $map['messageNumber'])) 241 continue; 242 243 $result[] = array ( 244 'id' => $folder . '/' . $messageFlagged . '#' . $followupflagged, 245 'folderName' => $folder, 246 'messageNumber' => $messageFlagged 247 ); 248 } 249 } 250 251 imap_close($this->mbox); 252 $this->mbox = false; 253 } 254 } 255 256 return $result; 257 } 36 258 } 37 38 break; 39 } 40 case 'message': 41 { 42 //begin: for grid 43 $page = $criteria['page']; //{1} get the requested page 44 $limit = $criteria['rows']; //{10} get how many rows we want to have into the grid 45 $sidx = $criteria['sidx']; //{id} get index row - i.e. user click to sort 46 $sord = $criteria['sord']; //{desc} get the direction 47 48 $filter = $criteria['filter']; 49 50 if( !$sidx ) $sidx = 1; 51 52 $folder_name = str_replace( '.', $this->imap_delimiter, $context['folder'] ); 53 54 $count = imap_num_msg( $this->open_mbox( $folder_name ) ); 55 56 $total_pages = $count > 0 ? ceil( $count/$limit ) : 0; 57 58 if( $page > $total_pages ) 59 $page = $total_pages; 60 61 $start = $limit * $page - $limit; 62 63 // do not put $limit*($page - 1) 64 //end: for grid 65 66 if( $filter ) 259 } 260 261 public function read( $URI, $justthese = false ) 262 { 263 264 switch( $URI['concept'] ) 67 265 { 68 if( $filter[0] !== 'msgNumber' ) 69 { 70 for( $i = 0; $i < count($filter); $i++ ) 71 { 72 if( count( $filter[$i] ) === 4 ) 73 $criteria['isExact'] = ( array_shift( $filter[$i] ) === 'AND' ); 74 75 $criteria[ $filter[$i][0] ] = array( 'criteria' => $filter[$i][2], 'filter' => $filter[$i][1] ); 76 } 77 78 return $this->searchSieveRule($criteria); 79 } 80 81 $msgNumber = array(); 82 83 for( $i = $start; $i < $start + $limit && isset( $filter[2][$i] ); $i++ ) 84 $msgNumber[] = $filter[2][$i]; 85 86 if( empty( $msgNumber ) ) 87 return( false ); 88 89 $result = $this->get_info_msgs( array( 'folder' => $folder_name, 90 'msgs_number' => implode( ',', $msgNumber ) ) ); 91 92 foreach( $result as $i => $val ) 93 $result[$i] = unserialize( $val ); 94 266 case 'message': 267 { 268 return $this->to_utf8( 269 $this->get_info_msg( array('msg_number'=>$URI['id'], 270 'msg_folder'=>str_replace( '.', $this->imap_delimiter, $justthese['context']['folder'] )) ) 271 ); 272 } 273 case 'labeled': 274 { 275 /** 276 * id looks like 'folder/subfolder/subsubfolder/65#13', meaning messageId#labelId 277 */ 278 list($messageId, $labelId) = explode('#', $URI['id']); 279 $folderName = basename($messageId); 280 $messageNumber = dirname($messageId); 281 282 $result = array(); 283 284 if ($folderName && $messageNumber && $labelId) { 285 $this->mbox = $this->open_mbox($folderName); 286 $messagesLabeleds = imap_search($this->mbox, 'UNDELETED KEYWORD "$Label'.$labelId.'"', SE_UID); 287 288 if (in_array($messageNumber, $messagesLabeleds)) { 289 $result = array ( 290 'id' => $URI['id'], 291 'folderName' => $folderName, 292 'messageNumber' => $messageNumber, 293 'labelId' => $labelId 294 ); 295 } 296 imap_close($this->mbox); 297 $this->mbox = false; 298 } 299 300 return $result; 301 } 302 303 case 'followupflagged': 304 { 305 /** 306 * id looks like 'folder/subfolder/subsubfolder/65#13', meaning messageId#followupflaggedId 307 */ 308 list($messageId, $followupflaggedId) = explode('#', $URI['id']); 309 $folderName = basename($messageId); 310 $messageNumber = dirname($messageId); 311 312 $result = array(); 313 314 if ($folderName && $messageNumber && $followupflaggedId) { 315 $this->mbox = $this->open_mbox($folderName); 316 $messagesFlaggeds = imap_search($this->mbox, 'UNDELETED KEYWORD "$Followupflag'.$followupflaggedId.'"', SE_UID); 317 318 if (in_array($messageNumber, $messagesFlaggeds)) { 319 $result = array ( 320 'id' => $URI['id'], 321 'folderName' => $folderName, 322 'messageNumber' => $messageNumber 323 ); 324 } 325 imap_close($this->mbox); 326 $this->mbox = false; 327 } 328 329 return $result; 330 } 95 331 } 96 else 332 } 333 334 public function create( $URI, $data) 335 { 336 337 switch( $URI['concept'] ) 97 338 { 98 $result = $this->get_range_msgs2( array( 'folder' => $folder_name, //INBOX 99 'msg_range_begin' => $start + 1, //?? 100 'msg_range_end' => $start + $limit, //$limit = $_GET['rows']; // get how many rows we want to have into the grid 101 'sort_box_type' => 'SORTARRIVAL', 102 'search_box_type' => 'ALL', 103 'sort_box_reverse' => 1 ) ); 339 case 'labeled': 340 { 341 if (isset($data['folderName']) && isset($data['messageNumber']) && isset($data['labelId'])) { 342 $this->mbox = $this->open_mbox($data['folderName']); 343 imap_setflag_full($this->mbox, $data['messageNumber'], '$Label' . $data['labelId'], ST_UID); 344 345 imap_close($this->mbox); 346 $this->mbox = false; 347 348 return array ('id' => $data['folderName'].'/'.$data['messageNumber'].'#'.$data['labelId']); 349 } 350 return array (); 351 } 352 case 'followupflagged': 353 { 354 //tem que gravar no banco primeiro, obter o id e depois mandar gravar no imap passando o id no data 355 if (isset($data['folderName']) && isset($data['messageNumber']) && isset($data['id'])) { 356 list($messageId, $followupflaggedId) = explode('#', $data['id']); 357 358 $this->mbox = $this->open_mbox($data['folderName']); 359 imap_setflag_full($this->mbox, $data['messageNumber'], '$Followupflag' . $followupflaggedId, ST_UID); 360 361 imap_close($this->mbox); 362 $this->mbox = false; 363 364 return array ('id' => $data['id']); 365 } 366 return array (); 367 } 104 368 } 105 //return var_export($result);106 107 $response = array( "page" => $page, "total" => $total_pages, "records" => $count ); 108 109 for ($i=0; $i<count($result); $i++)369 } 370 371 public function delete( $URI, $justthese = false, $criteria = false ) 372 { 373 switch( $URI['concept'] ) 110 374 { 111 $flags_enum = array('Recent', 'Unseen', 'Answered', 'Draft', 'Deleted', 'Flagged'); 112 113 foreach ($flags_enum as $key => $flag) 114 { 115 if ( !isset($result[$i][$flag]) || !trim($result[$i][$flag]) || trim($result[$i][$flag]) == '') 116 unset($flags_enum[$key]); 117 unset($result[$i][$flag]); 118 } 119 120 if (array_key_exists($i, $result)) 121 { 122 $response["rows"][$i] = $result[$i]; 123 $response["rows"][$i]['timestamp'] = ( ( $result[$i]['udate'] + $this->functions->CalculateDateOffset() ) * 1000 ); 124 $response["rows"][$i]['flags'] = implode(',', $flags_enum); 125 $response["rows"][$i]['size'] = $response["rows"][$i]['Size']; 126 // $response["rows"][$i]['udate'] = ( $result[$i]['udate'] + $this->functions->CalculateDateOffset() * 1000 ); 127 unset($response["rows"][$i]['Size']); 128 } 129 } 130 131 $response = $this->to_utf8($response); 132 133 break; 134 } 375 case 'labeled': 376 { 377 list($messageId, $labelId) = explode('#', $URI['id']); 378 $folderName = basename($messageId); 379 $messageNumber = dirname($messageId); 380 381 if ($folderName && $messageNumber && $labelId) { 382 $this->mbox = $this->open_mbox($folderName); 383 imap_clearflag_full($this->mbox, $messageNumber, '$Label' . $labelId, ST_UID); 384 385 imap_close($this->mbox); 386 $this->mbox = false; 387 } 388 } 389 case 'followupflagged': 390 { 391 list($messageId, $followupflaggedId) = explode('#', $URI['id']); 392 $folderName = basename($messageId); 393 $messageNumber = dirname($messageId); 394 395 if ($folderName && $messageNumber && $followupflaggedId) { 396 $this->mbox = $this->open_mbox($folderName); 397 imap_clearflag_full($this->mbox, $messageNumber, '$Followupflag' . $followupflaggedId, ST_UID); 398 399 imap_close($this->mbox); 400 $this->mbox = false; 401 } 402 } 403 } 404 405 //TODO - return 135 406 } 136 return $response; 137 } 407 408 public function deleteAll( $URI, $justthese = false, $criteria = false ) // avaliar 409 {} 410 411 public function update( $URI, $data, $criteria = false ) 412 { 413 //TODO - remove 414 //TODO - create 415 } 138 416 139 417 // public function retrieve( $concept, $id, $parents, $justthese = false, $criteria = false ) 140 418 // { 141 // return $this->read( array( 'id' => $id,419 // return $this->read( array( 'id' => $id, 142 420 // 'concept' => $concept, 143 421 // 'context' => $parents ), $justthese ); 144 422 // } 145 423 146 public function read( $URI, $justthese = false )147 {148 149 return $this->to_utf8( $this->get_info_msg( array('msg_number'=>$URI['id'],150 'msg_folder'=>str_replace( '.', $this->imap_delimiter, $justthese['context']['folder'] )) ) );151 }152 153 public function create( $URI, $data )154 {}155 156 public function delete( $URI, $justthese = false, $criteria = false )157 {}158 159 public function deleteAll( $URI, $justthese = false, $criteria = false ) // avaliar160 {}161 162 public function update( $URI, $data, $criteria = false )163 {}164 165 424 public function replace( $URI, $data, $criteria = false ) 166 425 {} … … 187 446 function to_utf8($in) 188 447 { 189 if (is_array($in)) { 190 foreach ($in as $key => $value) { 191 $out[$this->to_utf8($key)] = $this->to_utf8($value); 448 if (is_array($in)) { 449 foreach ($in as $key => $value) { 450 $out[$this->to_utf8($key)] = $this->to_utf8($value); 451 } 452 } elseif(is_string($in)) { 453 return mb_convert_encoding( $in , 'UTF-8' , 'UTF-8 , ISO-8859-1' ); 454 } else { 455 return $in; 192 456 } 193 } elseif(is_string($in)) { 194 return mb_convert_encoding( $in , 'UTF-8' , 'UTF-8 , ISO-8859-1' ); 195 } else { 196 return $in; 197 } 198 return $out; 457 return $out; 199 458 } 200 459 460 461 private static function parseFilter( $filter ,&$map){ 462 463 if( !is_array( $filter ) || count($filter) <= 0) return null; 464 465 $op = array_shift( $filter ); 466 switch(strtolower($op)) 467 { 468 case 'and': { 469 foreach ($filter as $term) 470 self::parseFilter($term ,&$map); 471 return; 472 } 473 case 'in': { 474 $map[$filter[0]] = array_merge($map[$filter[0]], $filter[1]); 475 return; 476 } 477 case '=': { 478 $map[$filter[0]][] = $filter[1]; 479 } 480 } 481 } 482 201 483 }
Note: See TracChangeset
for help on using the changeset viewer.