Changeset 6558
- Timestamp:
- 06/20/12 22:41:51 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
sandbox/expressoServiceImap/prototype/modules/attach_message/attach_message.js
r6545 r6558 13 13 jQuery('#buttons-container .button').button(); 14 14 15 var firstFolder = jQuery("#foldertree-container") 16 .removeClass('empty-container') 17 .html(DataLayer.render(BASE_PATH + 'api/templates/foldertree.ejs', 'folder:tree', false, false, true)) 18 .find("#foldertree").treeview() 19 .click(function(event){ 20 //request new selected folder messages 21 var target = $(event.target); 22 23 if( target.is('.collapsable-hitarea, .expandable-hitarea, .lastCollapsable, .lastExpandable, .treeview') ) 24 return; 25 26 if( !target.attr('id') ) 27 target = target.parent(); 28 29 if (target.attr('id') == "foldertree") return; 30 31 var targetId = target.attr('id'); 32 var child = target.find('.folder'); 33 34 $('.filetree span.folder.selected').removeClass('selected'); 35 if(!target.is('#foldertree > .expandable, #foldertree > .collapsable')) 36 $(target).children('.folder').addClass('selected'); 37 15 DataLayer.render(BASE_PATH + 'api/templates/foldertree.ejs', 'folder:tree', function(contentFolders){ 16 17 var firstFolder = jQuery("#foldertree-container") 18 .removeClass('empty-container') 19 .html(contentFolders) 20 .find("#foldertree").treeview() 21 .click(function(event){ 22 //request new selected folder messages 23 var target = $(event.target); 24 25 if( target.is('.collapsable-hitarea, .expandable-hitarea, .lastCollapsable, .lastExpandable, .treeview') ) 26 return; 27 28 if( !target.attr('id') ) 29 target = target.parent(); 30 31 if (target.attr('id') == "foldertree") return; 32 33 var targetId = target.attr('id'); 34 var child = target.find('.folder'); 35 36 $('.filetree span.folder.selected').removeClass('selected'); 37 if(!target.is('#foldertree > .expandable, #foldertree > .collapsable')) 38 $(target).children('.folder').addClass('selected'); 39 40 selectedFolder = { 41 id: targetId, 42 name: child.attr('title'), 43 'class': child.attr('class') 44 }; 45 46 current_folder = targetId.replace(dashes, '.'); 47 current_count = DataLayer.get( 'message', { criteria: { count: true, properties: {context:{folder:current_folder}} } }, true ); 48 49 $("#message_attacher_grid").trigger("reloadGrid") 50 .jqGrid('setCaption', '<span class="'+child.attr('class')+'">'+child.attr('title')+'</span>'); 51 }) 52 .find('span:first-child'); 53 $('span.folder.inbox').addClass('selected'); 38 54 selectedFolder = { 39 id: targetId,40 name: child.attr('title'),41 'class': child.attr('class')55 id: firstFolder.parent().attr('id'), 56 name: firstFolder.attr('title'), 57 'class': firstFolder.attr('class') 42 58 }; 43 44 current_folder = targetId.replace(dashes, '.'); 45 current_count = DataLayer.get( 'message', { criteria: { count: true, properties: {context:{folder:current_folder}} } }, true ); 46 47 $("#message_attacher_grid").trigger("reloadGrid") 48 .jqGrid('setCaption', '<span class="'+child.attr('class')+'">'+child.attr('title')+'</span>'); 49 }) 50 .find('span:first-child'); 51 $('span.folder.inbox').addClass('selected'); 52 selectedFolder = { 53 id: firstFolder.parent().attr('id'), 54 name: firstFolder.attr('title'), 55 'class': firstFolder.attr('class') 56 }; 57 58 //jqgrid 59 jQuery("#mailgrid-container") 60 .removeClass('empty-container') 61 .html(DataLayer.render(BASE_PATH + 'api/templates/messagegrid.ejs', {})) 62 .find("#message_attacher_grid") 63 .jqGrid({ 64 url: 'message:jqGrid', 65 datatype: "json", 66 mtype: 'GET', 67 colNames:['#',' ', 'De', 'Assunto', 'Data', 'Tamanho'], 68 colModel:[ 69 {name:'msg_number',index:'msg_number', width:45, sortable:false, hidden:true}, 70 {name:'flags', index:'msg_number', width:100, sortable:false, formatter:flags2Class, edittype: 'image', title :false}, 71 {name:'from.name', index:'msg_number', width:70, sortable:false, formatter:NormaliseFrom}, 72 {name:'subject', index:'subject', width:245, sortable:false, formatter:NormaliseSubject}, 73 {name:'timestamp', index:'timestamp', width:65, sortable:false, formatter:date2Time, align:"center"}, 74 {name:'size', index:'size', width:55, sortable:false, formatter:bytes2Size, align:"right"} 75 ], 76 jsonReader : { 77 root:"rows", 78 page: "page", 79 total: "total", 80 records: "records", 81 repeatitems: false, 82 id: "0" 83 }, 84 rowNum:10, 85 rowList:[10,25,50], 86 pager: '#message_attacher_grid_pager', 87 sortname: 'id', 88 viewrecords: true, 89 sortorder: "desc", 90 multiselect: true, 91 autowidth: true, 92 loadComplete: function(data) { 93 lastLoadedMessages = data.rows; 94 95 // aplica o contador 96 jQuery('.timable').each(function (i) { 97 jQuery(this).countdown({ 98 since: new Date(parseInt(this.title)), 99 significant: 1, 100 layout: 'há {d<}{dn} {dl} {d>}{h<}{hn} {hl} {h>}{m<}{mn} {ml} {m>}{s<}{sn} {sl}{s>}', 101 description: ' atrás' 102 }); 103 }); 104 105 // reconstrói a seleção das mensagens mesmo depois da mudança de pasta 106 if (selectedMessages[selectedFolder.id]) { 107 for (var message in selectedMessages[selectedFolder.id]){ 108 for (var j=0; j<data.rows.length; j++){ 109 if (selectedMessages[selectedFolder.id][message] && message == data.rows[j].msg_number) { 110 jQuery("#message_attacher_grid").setSelection(jQuery("#message_attacher_grid").getDataIDs()[j], false); 111 } 112 } 113 } 114 } 115 $('#cb_message_attacher_grid').css('display', 'none'); 116 117 }, 118 onSelectRow: function (id, selected) { 119 var message = false; 120 for (var i=0; i<lastLoadedMessages.length; i++){ 121 if (lastLoadedMessages[i].msg_number == id) { 122 message = lastLoadedMessages[i]; 123 break; 124 } 125 } 126 127 var tabPanelTemplateId = 'mailpreview_tab_' + selectedFolder.id.replace(/[.\/]/g, '_') + '_' + message.msg_number; 128 var tabPanelTemplateId = tabPanelTemplateId.replace(/[\s\/]/g, '-'); 129 130 if (selected) { 131 if (onceOpenedMessages[selectedFolder.id] && onceOpenedMessages[selectedFolder.id][message.msg_number]) { 132 if (!selectedMessages[selectedFolder.id]) 133 selectedMessages[selectedFolder.id] = {}; 134 135 selectedMessages[selectedFolder.id][message.msg_number] = true; 136 $('#mailpreview-container').unblock(); 137 138 var tabPanelTemplateLabel = html_entities(onceOpenedMessages[selectedFolder.id][message.msg_number].subject); 139 if (tabPanelTemplateLabel.length > $mailpreview_tabs_label_length + 3) 140 tabPanelTemplateLabel = tabPanelTemplateLabel.substring(0, $mailpreview_tabs_label_length) + '...'; 141 142 if (!$('#' + tabPanelTemplateId).length) { 143 $mailpreview_tabs.tabs("add", '#' + tabPanelTemplateId, tabPanelTemplateLabel) 144 .find('.message.empty-container').hide().end() 145 .find('#' + tabPanelTemplateId).html(onceOpenedMessages[selectedFolder.id][message.msg_number].body); 146 } else { 147 $mailpreview_tabs.tabs('select', '#' + tabPanelTemplateId) 148 .find('#' + tabPanelTemplateId + ', [href="#' + tabPanelTemplateId + '"]').removeClass('preview-message-unselected'); 149 } 150 151 } else { 152 jQuery('#mailpreview_container').block({ 153 message: '<div id="loading-content"><div class="image"></div></div>', 154 css: { 155 backgroundImage: 'url('+BASE_PATH+'modules/attach_message/images/loading.gif)', 156 backgroundRepeat: 'no-repeat', 157 backgroundPosition: 'center', 158 backgroundColor: 'transparent', 159 width: '32px', 160 height: '32px', 161 border:'none' 162 }, 163 overlayCSS: { 164 backgroundColor: '#CCC', 165 opacity: 0.5 166 } 167 }); 168 169 if (!selectedMessages[selectedFolder.id]) 170 selectedMessages[selectedFolder.id] = {}; 171 selectedMessages[selectedFolder.id][message.msg_number] = true; 172 173 var folder = selectedFolder.id.replace(dashes, '.'), mail_preview = null; 174 175 if( !folder.indexOf( 'local_messages/' ) ) 176 { 177 mail_preview = expresso_local_messages.get_local_mail( id ); 178 mail_preview.eml = expresso_local_messages.get_src( mail_preview.url_export_file ); 179 } 180 else 181 mail_preview = DataLayer.get( 'message', { filter: id, criteria: { properties: {context:{folder:folder}} } } ); 182 183 if (!onceOpenedMessages[selectedFolder.id]) 184 onceOpenedMessages[selectedFolder.id] = {}; 185 onceOpenedMessages[selectedFolder.id][message.msg_number] = jQuery.extend(true, message, mail_preview); 186 187 $('#mailpreview_container').unblock(); 188 189 var tabPanelTemplateLabel = html_entities(onceOpenedMessages[selectedFolder.id][message.msg_number].subject); 190 if (tabPanelTemplateLabel.length > $mailpreview_tabs_label_length + 3) 191 tabPanelTemplateLabel = tabPanelTemplateLabel.substring(0, $mailpreview_tabs_label_length) + '...'; 192 selectedMessagesCount(); 193 194 if (!$('#' + tabPanelTemplateId).length) { 195 $mailpreview_tabs.tabs("add", '#' + tabPanelTemplateId, tabPanelTemplateLabel) 196 .find('.message.empty-container').hide().end() 197 .find('#' + tabPanelTemplateId).html(onceOpenedMessages[selectedFolder.id][message.msg_number].body) 198 .prepend( 199 '<div class="mailpreview-message-info">' + 200 get_lang('Subject') + ': ' + 201 html_entities(onceOpenedMessages[selectedFolder.id][message.msg_number].subject) + 202 '</div>' 203 ) 204 .find('[class^="ExpressoCssWrapper"]').addClass("mailpreview-message-body"); 205 } else { 206 $mailpreview_tabs.tabs('select', '#' + tabPanelTemplateId) 207 .find('#' + tabPanelTemplateId + ', [href="#' + tabPanelTemplateId + '"]').removeClass('preview-message-unselected'); 208 } 209 } 210 } else { 211 /** 212 * if you wants to remove tab on unselect message, 213 * but still needs to uselect message on remove tab. 214 * 215 */ 216 /* 217 if ($('#' + tabPanelTemplateId).length) { 218 $mailpreview_tabs.tabs('remove', '#' + tabPanelTemplateId); 219 } 220 */ 221 selectedMessages[selectedFolder.id][message.msg_number] = false; 222 $mailpreview_tabs.find('#' + tabPanelTemplateId + ', [href="#' + tabPanelTemplateId + '"]').addClass('preview-message-unselected'); 223 } 224 225 if (onceOpenedMessages[selectedFolder.id] && onceOpenedMessages[selectedFolder.id][message.msg_number]) 226 selectedMessagesCount(); 227 }, 228 caption: '<span class="'+selectedFolder['class']+'">'+selectedFolder.name+'</span>' 229 }); 230 //.jqGrid('navGrid','#message_attacher_grid_pager',{edit:false,add:false,del:false}); 231 var title = [get_lang("First page"), get_lang("Prev page"), get_lang("Next page"), get_lang("Last page")]; 232 $("#first_message_attacher_grid_pager").attr("title",title[0]); 233 $("#prev_message_attacher_grid_pager").attr("title",title[1]); 234 $("#next_message_attacher_grid_pager").attr("title",title[2]); 235 $("#last_message_attacher_grid_pager").attr("title",title[3]); 59 60 //jqgrid 61 jQuery("#mailgrid-container") 62 .removeClass('empty-container') 63 .html(DataLayer.render(BASE_PATH + 'api/templates/messagegrid.ejs', {})) 64 .find("#message_attacher_grid") 65 .jqGrid({ 66 url: 'message:jqGrid', 67 datatype: "json", 68 mtype: 'GET', 69 colNames:['#',' ', 'De', 'Assunto', 'Data', 'Tamanho'], 70 colModel:[ 71 {name:'msg_number',index:'msg_number', width:45, sortable:false, hidden:true}, 72 {name:'flags', index:'msg_number', width:100, sortable:false, formatter:flags2Class, edittype: 'image', title :false}, 73 {name:'from.name', index:'msg_number', width:70, sortable:false, formatter:NormaliseFrom}, 74 {name:'subject', index:'subject', width:245, sortable:false, formatter:NormaliseSubject}, 75 {name:'timestamp', index:'timestamp', width:65, sortable:false, formatter:date2Time, align:"center"}, 76 {name:'size', index:'size', width:55, sortable:false, formatter:bytes2Size, align:"right"} 77 ], 78 jsonReader : { 79 root:"rows", 80 page: "page", 81 total: "total", 82 records: "records", 83 repeatitems: false, 84 id: "0" 85 }, 86 rowNum:10, 87 rowList:[10,25,50], 88 pager: '#message_attacher_grid_pager', 89 sortname: 'id', 90 viewrecords: true, 91 sortorder: "desc", 92 multiselect: true, 93 autowidth: true, 94 loadComplete: function(data) { 95 lastLoadedMessages = data.rows; 96 97 // aplica o contador 98 jQuery('.timable').each(function (i) { 99 jQuery(this).countdown({ 100 since: new Date(parseInt(this.title)), 101 significant: 1, 102 layout: 'há {d<}{dn} {dl} {d>}{h<}{hn} {hl} {h>}{m<}{mn} {ml} {m>}{s<}{sn} {sl}{s>}', 103 description: ' atrás' 104 }); 105 }); 106 107 // reconstrói a seleção das mensagens mesmo depois da mudança de pasta 108 if (selectedMessages[selectedFolder.id]) { 109 for (var message in selectedMessages[selectedFolder.id]){ 110 for (var j=0; j<data.rows.length; j++){ 111 if (selectedMessages[selectedFolder.id][message] && message == data.rows[j].msg_number) { 112 jQuery("#message_attacher_grid").setSelection(jQuery("#message_attacher_grid").getDataIDs()[j], false); 113 } 114 } 115 } 116 } 117 $('#cb_message_attacher_grid').css('display', 'none'); 118 119 }, 120 onSelectRow: function (id, selected) { 121 var message = false; 122 for (var i=0; i<lastLoadedMessages.length; i++){ 123 if (lastLoadedMessages[i].msg_number == id) { 124 message = lastLoadedMessages[i]; 125 break; 126 } 127 } 128 129 var tabPanelTemplateId = 'mailpreview_tab_' + selectedFolder.id.replace(/[.\/]/g, '_') + '_' + message.msg_number; 130 var tabPanelTemplateId = tabPanelTemplateId.replace(/[\s\/]/g, '-'); 131 132 if (selected) { 133 if (onceOpenedMessages[selectedFolder.id] && onceOpenedMessages[selectedFolder.id][message.msg_number]) { 134 if (!selectedMessages[selectedFolder.id]) 135 selectedMessages[selectedFolder.id] = {}; 136 137 selectedMessages[selectedFolder.id][message.msg_number] = true; 138 $('#mailpreview-container').unblock(); 139 140 var tabPanelTemplateLabel = html_entities(onceOpenedMessages[selectedFolder.id][message.msg_number].subject); 141 if (tabPanelTemplateLabel.length > $mailpreview_tabs_label_length + 3) 142 tabPanelTemplateLabel = tabPanelTemplateLabel.substring(0, $mailpreview_tabs_label_length) + '...'; 143 144 if (!$('#' + tabPanelTemplateId).length) { 145 $mailpreview_tabs.tabs("add", '#' + tabPanelTemplateId, tabPanelTemplateLabel) 146 .find('.message.empty-container').hide().end() 147 .find('#' + tabPanelTemplateId).html(onceOpenedMessages[selectedFolder.id][message.msg_number].body); 148 } else { 149 $mailpreview_tabs.tabs('select', '#' + tabPanelTemplateId) 150 .find('#' + tabPanelTemplateId + ', [href="#' + tabPanelTemplateId + '"]').removeClass('preview-message-unselected'); 151 } 152 153 } else { 154 jQuery('#mailpreview_container').block({ 155 message: '<div id="loading-content"><div class="image"></div></div>', 156 css: { 157 backgroundImage: 'url('+BASE_PATH+'modules/attach_message/images/loading.gif)', 158 backgroundRepeat: 'no-repeat', 159 backgroundPosition: 'center', 160 backgroundColor: 'transparent', 161 width: '32px', 162 height: '32px', 163 border:'none' 164 }, 165 overlayCSS: { 166 backgroundColor: '#CCC', 167 opacity: 0.5 168 } 169 }); 170 171 if (!selectedMessages[selectedFolder.id]) 172 selectedMessages[selectedFolder.id] = {}; 173 selectedMessages[selectedFolder.id][message.msg_number] = true; 174 175 var folder = selectedFolder.id.replace(dashes, '.'), mail_preview = null; 176 177 if( !folder.indexOf( 'local_messages/' ) ) 178 { 179 mail_preview = expresso_local_messages.get_local_mail( id ); 180 mail_preview.eml = expresso_local_messages.get_src( mail_preview.url_export_file ); 181 } 182 else 183 mail_preview = DataLayer.get( 'message', { filter: id, criteria: { properties: {context:{folder:folder}} } } ); 184 185 if (!onceOpenedMessages[selectedFolder.id]) 186 onceOpenedMessages[selectedFolder.id] = {}; 187 onceOpenedMessages[selectedFolder.id][message.msg_number] = jQuery.extend(true, message, mail_preview); 188 189 $('#mailpreview_container').unblock(); 190 191 var tabPanelTemplateLabel = html_entities(onceOpenedMessages[selectedFolder.id][message.msg_number].subject); 192 if (tabPanelTemplateLabel.length > $mailpreview_tabs_label_length + 3) 193 tabPanelTemplateLabel = tabPanelTemplateLabel.substring(0, $mailpreview_tabs_label_length) + '...'; 194 selectedMessagesCount(); 195 196 if (!$('#' + tabPanelTemplateId).length) { 197 $mailpreview_tabs.tabs("add", '#' + tabPanelTemplateId, tabPanelTemplateLabel) 198 .find('.message.empty-container').hide().end() 199 .find('#' + tabPanelTemplateId).html(onceOpenedMessages[selectedFolder.id][message.msg_number].body) 200 .prepend( 201 '<div class="mailpreview-message-info">' + 202 get_lang('Subject') + ': ' + 203 html_entities(onceOpenedMessages[selectedFolder.id][message.msg_number].subject) + 204 '</div>' 205 ) 206 .find('[class^="ExpressoCssWrapper"]').addClass("mailpreview-message-body"); 207 } else { 208 $mailpreview_tabs.tabs('select', '#' + tabPanelTemplateId) 209 .find('#' + tabPanelTemplateId + ', [href="#' + tabPanelTemplateId + '"]').removeClass('preview-message-unselected'); 210 } 211 } 212 } else { 213 /** 214 * if you wants to remove tab on unselect message, 215 * but still needs to uselect message on remove tab. 216 * 217 */ 218 /* 219 if ($('#' + tabPanelTemplateId).length) { 220 $mailpreview_tabs.tabs('remove', '#' + tabPanelTemplateId); 221 } 222 */ 223 selectedMessages[selectedFolder.id][message.msg_number] = false; 224 $mailpreview_tabs.find('#' + tabPanelTemplateId + ', [href="#' + tabPanelTemplateId + '"]').addClass('preview-message-unselected'); 225 } 226 227 if (onceOpenedMessages[selectedFolder.id] && onceOpenedMessages[selectedFolder.id][message.msg_number]) 228 selectedMessagesCount(); 229 }, 230 caption: '<span class="'+selectedFolder['class']+'">'+selectedFolder.name+'</span>' 231 }); 232 //.jqGrid('navGrid','#message_attacher_grid_pager',{edit:false,add:false,del:false}); 233 var title = [get_lang("First page"), get_lang("Prev page"), get_lang("Next page"), get_lang("Last page")]; 234 $("#first_message_attacher_grid_pager").attr("title",title[0]); 235 $("#prev_message_attacher_grid_pager").attr("title",title[1]); 236 $("#next_message_attacher_grid_pager").attr("title",title[2]); 237 $("#last_message_attacher_grid_pager").attr("title",title[3]); 238 239 }, true); 236 240 237 241 var $mailpreview_tabs = $( "#mailpreview_container").tabs({
Note: See TracChangeset
for help on using the changeset viewer.