source: trunk/expressoMail1_2/js/doiMenuData.js @ 5625

Revision 5625, 9.0 KB checked in by marcieli, 12 years ago (diff)

Ticket #2486 - Implementada opção de criar novo marcador ao clicar na msg e marca-la.

  • Property svn:eol-style set to native
  • Property svn:executable set to *
Line 
1function labeledMessages(isLabel){
2                        if (isLabel) {
3                                var label = {
4                                        id: isLabel
5                                }       
6                                var lableleds = new Array();
7                                var msg_folder = current_folder;
8                                var messages = [];
9                                if(currentTab == 0){
10                                        var id = get_selected_messages().split(',');
11                                        for (i = 0; i < id.length; i++){
12                                                messages.push({
13                                                        "msg_number": id[i],
14                                                        "msg_folder": msg_folder,
15                                                });
16                                        }
17                                }else{
18                                        // var id = get_selected_messages_search().split(',');
19                                        // var id_border = currentTab.replace(/[a-zA-Z_]+/, "");
20                                        // for (i = 0; i < id.length; i++){
21                                                // var tr = Element(id[i]+'_s'+id_border);
22                                                // msg_folder = tr.getAttribute('name');
23                                                // messages.push({
24                                                        // "msg_number": id[i],
25                                                        // "msg_folder": msg_folder,
26                                                // });
27                                        // }   
28                                       
29                                        var roles = get_selected_messages_search_role().split(',');
30                                        for (i = 0; i < roles.length; i++){
31                                                var tr = $('[role="'+roles[i]+'"]');
32                                                msg_folder = $(tr).attr('name');
33                                                var id = $(tr).attr('id');
34                                                messages.push({
35                                                        "msg_number": id.replace(/_[a-zA-Z0-9]+/,""),
36                                                        "msg_folder": msg_folder,
37                                                });
38                                        }
39                                }
40
41                                for (var i=0; i < messages.length; i++) {
42                                        var hasLabel = DataLayer.get('labeled', {
43                                                filter: [
44                                                        'AND',
45                                                        ['=', 'labelId', label.id],
46                                                        ['=', 'folderName', messages[i].msg_folder],
47                                                        ['=', 'messageNumber', messages[i].msg_number]
48                                        ]});
49                                        if (!hasLabel || hasLabel == "") {
50                                                lableleds.push(
51                                                        DataLayer.put('labeled', {
52                                                                labelId:label.id,
53                                                                folderName:messages[i].msg_folder,
54                                                                messageNumber:messages[i].msg_number
55                                                        })
56                                                );
57                                               
58                                        }
59                                }
60                                DataLayer.commit(false, false, function(data){
61                                        for (var i=0; i < messages.length; i++) {
62                                                updateLabelsColumn({msg_number:messages[i].msg_number, boxname:messages[i].msg_folder, labels:false});
63                                        }               
64                                });
65                               
66
67                        }
68}
69
70function openListUsers(border_id) {
71        connector.loadScript("QuickCatalogSearch");
72        if (typeof(QuickCatalogSearch) == 'undefined'){
73                                        setTimeout('openListUsers('+border_id+')',500);
74                                        return false;
75                                }
76        QuickCatalogSearch.showCatalogList(border_id);
77}
78
79
80/**
81 * Cria a lista de marcadores para o submenu "Marcadores"
82 */
83function getLabels(){
84        var labels = DataLayer.get('label',{criteria:{order: 'name'}});
85        var menuLabelItems = {};
86                menuLabelItems["new"] = {
87                        "name" : 'Novo Marcador',
88                        callback:function() {configureLabels({applyToSelectedMessages:true});}
89                };
90        for(var i=0; i<labels.length; i++) {
91                menuLabelItems["label"+labels[i].id] = {
92                        "name" : labels[i].name,
93                }
94        }
95        return menuLabelItems;
96}
97
98/**
99 *      Carrega o menu de opção de uma mensagem
100 */
101function loadMenu(){
102        var labelItems = getLabels();
103        $.contextMenu({
104                selector: ".table_box tbody tr",
105                callback: function(key, options) {
106                        //TODO - default actions
107                       
108                        /**
109                         * Apply labels to selected messages
110                         */
111                        var isLabel = key.match(/label(.*)/);
112                        if (isLabel && isLabel.length > 1) {
113                                labeledMessages(isLabel[1]);
114                        }
115
116                },
117                items: {
118                        "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'); }},
119                        "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'); }},
120                        "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'); }},
121                        "flagUnflagged": {"name": get_lang("Mark as") + " " + get_lang('normal'), callback: function(key, opt){ proxy_mensagens.proxy_set_messages_flag('unflagged','get_selected_messages'); }},
122                       
123                        "sep1": "---------",
124                        "label": { "name": get_lang("Labels"), "items": labelItems},
125                        "follouwpflag":{"name": get_lang("Follow up"), callback: function(key, opt){ configureFollowupflag(); } },
126                       
127                        "sep2": "---------",
128                        "move": {"name": get_lang("Move to")+"...", "icon": "move", callback: function(key, opt){ wfolders.makeWindow('', 'move_to'); }},
129                        "remove": {"name": get_lang("Delete"),      "icon": "delete", callback: function(key, opt){ proxy_mensagens.delete_msgs('null','selected','null'); }},
130                        "export": {"name": get_lang("Export"),      "icon": "export", callback: function(key, opt){ proxy_mensagens.export_all_messages(); }}
131                }
132        });
133}
134/*FIM*/
135loadMenu();
136
137if (!expresso_offline) {
138        var menuToolsItems = {
139                "i01": {"name": get_lang("Preferences"), "icon": "preferences-mail", callback: preferences_mail },
140                "i02": {"name": get_lang("Search"), "icon": "search-mail", callback: function(key, opt){ search_emails(""); }},
141                "103": {"name": get_lang("Edit filters"), "icon": "filter", callback: filterbox2 },
142                "i04": {"name": get_lang("Edit folders"), "icon": "edit-folder", callback: folderbox },
143                "i05": {"name": get_lang("Share mailbox"), "icon": "share-mailbox", callback: sharebox },
144                "i06": {"name": get_lang("Labels"), "icon": "tag", callback: configureLabels },
145                "i08": {"name": get_lang("Empty trash"), "icon": "empty-trash", callback: function(key, opt){ empty_trash_imap }}
146        };
147               
148        if(preferences.use_local_messages==1) {
149                if(expresso_local_messages.is_offline_installed()) {
150                        menuToolsItems["i09"] = {"name": get_lang("Send from queue"), "icon": "queue", callback: force_check_queue };
151                }
152        }
153} else {
154        var menuToolsItems = {
155                "i01": {"name": get_lang("Search"), "icon": "search-mail", callback: function(key, opt){ search_emails(""); }},
156                "i02": {"name": get_lang("Edit folders"), "icon": "edit-folder", callback: folderbox }
157        }
158}
159$.contextMenu({
160        selector: "#link_tools",
161        trigger: 'left',
162        className: 'context-menu-tools',
163        position: function($menu, x, y){
164                $menu.$menu.position({ my: "center top", at: "center bottom", of: this, offset:"0 0"});
165        },
166        determinePosition: function($menu, x, y){
167                $menu.css('display', 'block').position({ my: "center top", at: "center bottom", of: this}).css('display', 'none');
168        },
169        events: {
170                show: function(opt) {
171                        var $trigger = $(opt.selector).css({'background-color': '#EEEEEE', 'border': '1px solid #CCCCCC'});
172                        $('.context-menu-tools.context-menu-list.context-menu-root').css({'width': $trigger.css('width') });
173                        return true;
174                },
175                hide: function(opt) {
176                        $(opt.selector).css({'background-color': '', 'border': 'none'});
177                        return true;
178                }
179        },
180        callback: function(key, options) {
181                //TODO - default actions
182
183        },
184        items: menuToolsItems
185});
186
187
188function updateLabelsColumn(messageInfo) {
189        var msg_number = messageInfo.msg_number;
190        //uid é o numero da mensagem quando os dados são carregados na busca rapida.
191        if(messageInfo.uid != '' && messageInfo.uid != 'undefined' && messageInfo.uid != null){
192                msg_number = messageInfo.uid;
193        }
194        var msg_folder = current_folder;
195        if(messageInfo.boxname != '' && messageInfo.boxname != 'undefined' && messageInfo.boxname != null){
196                msg_folder = messageInfo.boxname;
197        }
198       
199         if(current_folder == msg_folder || !current_folder){
200                 $('#td_message_labels_' + msg_number +', tr[role="'+msg_number+'_'+msg_folder+'"] #td_message_labels_search_' + msg_number)
201                 .html('<img src="../prototype/modules/mail/img/tag.png">');
202        }else{
203                $('tr[role="'+msg_number+'_'+msg_folder+'"] #td_message_labels_search_' + msg_number)
204                .html('<img src="../prototype/modules/mail/img/tag.png">');
205        }
206       
207        var menuItems = {};
208        if (messageInfo.labels) {
209                menuItems = messageInfo.labels;
210        } else {
211                var labeleds = DataLayer.get('labeled', {
212                        criteria: {deepness: '2'},
213                        filter: [
214                                'AND',
215                                ['=', 'folderName', msg_folder],
216                                ['=', 'messageNumber', msg_number]
217                        ]
218                       
219                });
220                if (labeleds) {
221                        for (var i=0; i < labeleds.length; i++)
222                                menuItems[labeleds[i].label.id] = labeleds[i].label;
223                } else {
224                        $('#td_message_labels_' + msg_number +', tr[role="'+msg_number+'_'+msg_folder+'"] #td_message_labels_search_' + msg_number)
225                        .html('');
226                        //$.contextMenu( 'destroy', '#td_message_labels_' + msg_number +', #td_message_labels_search_' + msg_number+':first');
227                        $.contextMenu( 'destroy', '#td_message_labels_' + msg_number +', tr[role="'+msg_number+'_'+msg_folder+'"] #td_message_labels_search_' + msg_number);
228                        return false;
229                }
230        }
231         if(current_folder == msg_folder || !current_folder){
232                $.contextMenu( 'destroy', '#td_message_labels_' + msg_number +', tr[role="'+msg_number+'_'+msg_folder+'"] #td_message_labels_search_' + msg_number);
233
234                $.contextMenu({
235                        selector: '#td_message_labels_' + msg_number +', tr[role="'+msg_number+'_'+msg_folder+'"] #td_message_labels_search_' + msg_number,
236                        trigger: 'hover',
237                        delay:100,
238                        autoHide:true,
239                        callback: function(key, options) {
240                                //TODO - default actions
241
242                        },
243                        items: menuItems
244                });
245        }else{
246                $.contextMenu( 'destroy', 'tr[role="'+msg_number+'_'+msg_folder+'"] #td_message_labels_search_' + msg_number);
247
248                $.contextMenu({
249                        selector: 'tr[role="'+msg_number+'_'+msg_folder+'"] #td_message_labels_search_' + msg_number,
250                        trigger: 'hover',
251                        delay:100,
252                        autoHide:true,
253                        callback: function(key, options) {
254                                //TODO - default actions
255
256                        },
257                        items: menuItems
258                });     
259        }
260}
261
262
263
264
265
266
267
Note: See TracBrowser for help on using the repository browser.