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 *
RevLine 
[2]1function openListUsers(border_id) {
2        connector.loadScript("QuickCatalogSearch");
[3388]3        if (typeof(QuickCatalogSearch) == 'undefined'){
4                                        setTimeout('openListUsers('+border_id+')',500);
5                                        return false;
6                                }
[2]7        QuickCatalogSearch.showCatalogList(border_id);
8}
9
10
[5533]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                }
[5497]21        }
[5533]22        return menuLabelItems;
23}
[2]24
[5497]25/**
[5533]26 *      Carrega o menu de opção de uma mensagem
[5497]27 */
[5533]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                        /**
[5571]36                         * Apply labels to selected messages
[5533]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();
[5548]44                                var msg_folder = current_folder;
45                                var messages = [];
[5533]46                                if(currentTab == 0){
[5548]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                                        }
[5533]54                                }else{
[5548]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                                        }       
[5533]65                                }
66
67                                for (var i=0; i < messages.length; i++) {
68                                        var hasLabel = DataLayer.get('labeled', [
69                                                        'AND',
70                                                        ['=', 'labelId', label.id],
[5548]71                                                        ['=', 'folderName', messages[i].msg_folder],
72                                                        ['=', 'messageNumber', messages[i].msg_number]
[5533]73                                        ]);
74                                        if (!hasLabel) {
75                                                lableleds.push(
76                                                        DataLayer.put('labeled', {
77                                                                labelId:label.id,
[5548]78                                                                folderName:messages[i].msg_folder,
79                                                                messageNumber:messages[i].msg_number
[5533]80                                                        })
81                                                );
82                                               
83                                        }
84                                }
85                                DataLayer.commit();
[5571]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                                }
[5574]89
[5533]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
[5497]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(""); }},
[5568]116                "103": {"name": get_lang("Edit filters"), "icon": "filter", callback: filterbox2 },
[5497]117                "i04": {"name": get_lang("Edit folders"), "icon": "edit-folder", callback: folderbox },
118                "i05": {"name": get_lang("Share mailbox"), "icon": "share-mailbox", callback: sharebox },
[5533]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 }}
[5497]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 };
[2]126                }
127        }
[5497]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}
[2]134
[5497]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;
[320]153                }
[5497]154        },
155        callback: function(key, options) {
[5571]156                //TODO - default actions
[5574]157
[5497]158        },
159        items: menuToolsItems
160});
[320]161
[5533]162
163function updateLabelsColumn(messageInfo) {
[5548]164        var msg_number = messageInfo.msg_number;
[5574]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){
[5548]167                msg_number = messageInfo.uid;
168        }
[5575]169        $('#td_message_labels_' + msg_number +', #td_message_labels_search_' + msg_number+':first')
[5533]170        .html('<img src="../prototype/modules/mail/img/tag.png">');
[5548]171       
172        var msg_folder = current_folder;
173        if(messageInfo.boxname != '' && messageInfo.boxname != 'undefined' && messageInfo.boxname != null){
174                msg_folder = messageInfo.boxname;
175        }
[5533]176        var menuItems = {};
177        if (messageInfo.labels) {
178                menuItems = messageInfo.labels;
179        } else {
180                var labeleds = DataLayer.get('labeled', {
[5548]181                        criteria: {deepness: '2',
[5533]182                        filter: [
183                                'AND',
[5548]184                                ['=', 'folderName', msg_folder],
185                                ['=', 'messageNumber', msg_number]
186                        ]}
187                       
[5533]188                });
189                if (labeleds) {
190                        for (var i=0; i < labeleds.length; i++)
191                                menuItems[labeleds[i].label.id] = labeleds[i].label;
192                } else {
[5571]193                        //não existem labels
[5533]194                        return false;
195                }
196        }
197
[5575]198        $.contextMenu( 'destroy', '#td_message_labels_' + msg_number +', #td_message_labels_search_' + msg_number+':first');
[5533]199
200        $.contextMenu({
[5575]201                selector: '#td_message_labels_' + msg_number +', #td_message_labels_search_' + msg_number + ':first',
[5533]202                trigger: 'hover',
203                delay:100,
204                autoHide:true,
205                callback: function(key, options) {
[5571]206                        //TODO - default actions
[5574]207
[5533]208                },
209                items: menuItems
210        });
[5574]211}
212
213
214
215
216
217
218
Note: See TracBrowser for help on using the repository browser.