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

Revision 5575, 7.2 KB checked in by marcieli, 12 years ago (diff)

Ticket #2486 - Contornado problema de ids duplicados na busca rápida para sinalizadores/marcadores.

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