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

Revision 5539, 6.4 KB checked in by airton, 12 years ago (diff)

Ticket #2088 - Melhorias no editor de regras de filtro de mensagens do Expresso

  • 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                         * 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*/
93loadMenu();
94
95if (!expresso_offline) {
96        var menuToolsItems = {
97                "i01": {"name": get_lang("Preferences"), "icon": "preferences-mail", callback: preferences_mail },
98                "i02": {"name": get_lang("Search"), "icon": "search-mail", callback: function(key, opt){ search_emails(""); }},
99                "103": {"name": get_lang("Edit filters"), "icon": "filter", callback: filterbox2 },
100                "i04": {"name": get_lang("Edit folders"), "icon": "edit-folder", callback: folderbox },
101                "i05": {"name": get_lang("Share mailbox"), "icon": "share-mailbox", callback: sharebox },
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 }}
104        };
105               
106        if(preferences.use_local_messages==1) {
107                if(expresso_local_messages.is_offline_installed()) {
108                        menuToolsItems["i09"] = {"name": get_lang("Send from queue"), "icon": "queue", callback: force_check_queue };
109                }
110        }
111} else {
112        var menuToolsItems = {
113                "i01": {"name": get_lang("Search"), "icon": "search-mail", callback: function(key, opt){ search_emails(""); }},
114                "i02": {"name": get_lang("Edit folders"), "icon": "edit-folder", callback: folderbox }
115        }
116}
117
118$.contextMenu({
119        selector: "#link_tools",
120        trigger: 'left',
121        position: function($menu, x, y){
122                $menu.$menu.position({ my: "center top", at: "center bottom", of: this, offset:"0 0"});
123        },
124        determinePosition: function($menu, x, y){
125                $menu.css('display', 'block').position({ my: "center top", at: "center bottom", of: this}).css('display', 'none');
126        },
127        events: {
128                show: function(opt) {
129                        var $trigger = $(opt.selector).css({'background-color': '#EEEEEE', 'border': '1px solid #CCCCCC'});
130                        $('.context-menu-list.context-menu-root').css({'width': $trigger.css('width') });
131                        return true;
132                },
133                hide: function(opt) {
134                        $(opt.selector).css({'background-color': '', 'border': 'none'});
135                        return true;
136                }
137        },
138        callback: function(key, options) {
139               
140        },
141        items: menuToolsItems
142});
143
144
145function 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 */
Note: See TracBrowser for help on using the repository browser.