source: sandbox/2.5.0-expresso1/expressoMail1_2/js/doiMenuData.js @ 7220

Revision 7220, 13.9 KB checked in by thiago, 12 years ago (diff)

Ticket #3088 - Adicionado a validação das preferencias do usuario.

  • 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 = new Array();
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" : get_lang('New Label'),
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 archive = "";
103        if(use_local_messages != 0){
104            archive = {"name": get_lang("Archive"), "icon": "archive", callback: function(key, opt){ proxy_mensagens.archive_message('inbox', 'get_selected_messages'); }}
105        }else{
106            archive = "";
107        }
108
109        var menu = {
110            "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'); }},
111            "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'); }},
112            "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'); }},
113            "flagUnflagged": {"name": get_lang("Mark as") + " " + get_lang('normal'), callback: function(key, opt){ proxy_mensagens.proxy_set_messages_flag('unflagged','get_selected_messages'); }},
114           
115            "sep1": "---------",
116            "label": { "name": get_lang("Labels"), "items": labelItems},
117            "follouwpflag":{"name": get_lang("Follow up"), callback: function(key, opt){ configureFollowupflag(); } },
118           
119            "sep2": "---------",
120            "move": {"name": get_lang("Move to")+"...", "icon": "move", callback: function(key, opt){ wfolders.makeWindow('', 'move_to'); }},
121            "remove": {"name": get_lang("Delete"),      "icon": "delete", callback: function(key, opt){ proxy_mensagens.delete_msgs('null','selected','null'); }},
122            "export": {"name": get_lang("Export"),      "icon": "export", callback: function(key, opt){ proxy_mensagens.export_all_messages(); }},
123            /* Airton
124                TO-DO: Esse menu só deve aparecer quando a preferência de arquivamento local estiver ativada
125                Como aqui dentro não dá pra fazer um if, fazer isso no início do método, passar toda essa linha para uma string e depois só colocar a variável aqui embaixo
126            */   
127            "archive": archive
128        }
129
130
131        var labelItems = getLabels();
132        $.contextMenu({
133                selector: ".table_box tbody tr",
134                callback: function(key, options) {
135                        //TODO - default actions
136                       
137                        /**
138                         * Apply labels to selected messages
139                         */
140                        var isLabel = key.match(/label(.*)/);
141                        if (isLabel && isLabel.length > 1) {
142                                labeledMessages(isLabel[1]);
143                        }
144                        selectAllFolderMsgs(false);
145                },
146                items: menu
147
148        });
149}
150/*FIM*/
151loadMenu();
152
153if (!expresso_offline) {
154        var menuToolsItems = {
155                "i01": {"name": get_lang("Preferences"), "icon": "preferences-mail", callback: preferences_mail },
156                "i02": {"name": get_lang("Search"), "icon": "search-mail", callback: function(key, opt){ search_emails(""); }},
157                "103": {"name": get_lang("Edit filters"), "icon": "filter", callback: filterbox2 },
158                "i05": {"name": get_lang("Share mailbox"), "icon": "share-mailbox", callback: sharebox },
159                "i06": {"name": get_lang("Labels"), "icon": "tag", callback: configureLabels },
160                "i08": {"name": get_lang("Empty trash"), "icon": "empty-trash", callback: function(key, opt){ empty_trash_imap(); }}
161        };
162               
163        if(preferences.use_local_messages==1) {
164                if(expresso_local_messages.is_offline_installed()) {
165                        menuToolsItems["i09"] = {"name": get_lang("Send from queue"), "icon": "queue", callback: force_check_queue };
166                }
167        }
168} else {
169        var menuToolsItems = {
170                "i01": {"name": get_lang("Search"), "icon": "search-mail", callback: function(key, opt){ search_emails(""); }}
171        }
172}
173$.contextMenu({
174        selector: "#link_tools",
175        trigger: 'hover',
176        className: 'context-menu-tools',
177        position: function($menu, x, y){
178                $menu.$menu.position({ my: "center top", at: "center bottom", of: this, offset:"0 0"});
179        },
180        determinePosition: function($menu, x, y){
181                $menu.css('display', 'block').position({ my: "center top", at: "center bottom", of: this}).css('display', 'none');
182        },
183        delay:500,
184        autoHide:true,
185        events: {
186                show: function(opt) {
187                        var $trigger = $(opt.selector).css({'background-color': '#ffffff', 'border': '1px solid #CCCCCC'});
188                        $('.context-menu-tools.context-menu-list.context-menu-root').css({'width': $trigger.css('width') });
189                        $('.context-menu-tools.context-menu-list').css({'background': '#ffffff'})
190                        .find(".context-menu-item").css({'background-color': '#ffffff'}).hover(
191                                function(){
192                                        $(this).css({'background-color': '#CCCCCC'});
193                                },
194                                function(){
195                                        $(this).css({'background-color': '#ffffff'});
196                                }
197                        );
198                        return true;
199                },
200                hide: function(opt) {
201                        $(opt.selector).css({'background-color': '', 'border': 'none'});
202                        return true;
203                }
204        },
205        callback: function(key, options) {
206                //TODO - default actions
207
208        },
209        items: menuToolsItems
210});
211var reComplexEmail = /<([^<]*)>[\s]*$/;
212$.contextMenu({
213        selector: ".box",
214        autoHide:true,
215        items: {
216                "add" : {name: get_lang("Quick Add"), icon : "quick-add",callback: function(key, opt){ var fname = $(opt.$trigger).find("input").val().split('"')[1];ccQuickAddOne.showList(','+fname+', ,'+$.trim($(opt.$trigger).find("input").val()).match(reComplexEmail)[1]); }},
217                "remove" : {name:get_lang("Remove recipient"), icon:"delete-box",callback: function(key, opt){ $(opt.$trigger).remove(); }},
218                "sep1": "---------",
219                "quick_search" : {name:get_lang("Quick search of messages"), icon: "quick-search-contact",callback: function(key, opt){ search_emails($.trim($(opt.$trigger).find("input").val()).match(reComplexEmail)[1]); }},
220                "full_search" : {name:get_lang("Search messages of ..."), icon: "quick-search-contact",callback: function(key, opt){ search_emails("", $.trim($(opt.$trigger).find("input").val()).match(reComplexEmail)[1]);}}         
221        }
222});
223
224function updateLabelsColumn(messageInfo) {
225        var msg_number = messageInfo.msg_number;
226        //uid é o numero da mensagem quando os dados são carregados na busca rapida.
227        if(messageInfo.uid != '' && messageInfo.uid != 'undefined' && messageInfo.uid != null){
228                msg_number = messageInfo.uid;
229        }
230        var msg_folder = current_folder;
231        if(messageInfo.boxname != '' && messageInfo.boxname != 'undefined' && messageInfo.boxname != null){
232                msg_folder = messageInfo.boxname;
233        }
234       
235         if(current_folder == msg_folder || !current_folder){
236                 $('#td_message_labels_' + msg_number +', tr[role="'+msg_number+'_'+msg_folder+'"] #td_message_labels_search_' + msg_number)
237                 .html('<img src="../prototype/modules/mail/img/tag.png">');
238        }else{
239                $('tr[role="'+msg_number+'_'+msg_folder+'"] #td_message_labels_search_' + msg_number)
240                .html('<img src="../prototype/modules/mail/img/tag.png">');
241        }
242       
243        var menuItems = {};
244        if (messageInfo.labels) {
245                if($.isArray(messageInfo.labels)){
246                        var labels = messageInfo.labels;
247                        messageInfo.labels = {};
248                        for(var i in labels)
249                                messageInfo.labels[labels[i].id] = {backgroundColor: labels[i]['backgroundColor'],
250                                        borderColor: labels[i]['borderColor'],
251                                        fontColor: labels[i]['fontColor'], id: labels[i]['id'], name: labels[i]['name'],
252                                        uid: labels[i]['uid'] }
253                }       
254                menuItems = messageInfo.labels;
255        } else {
256                var labeleds = DataLayer.get('labeled', {
257                        criteria: {deepness: '2'},
258                        filter: [
259                                'AND',
260                                ['=', 'folderName', msg_folder],
261                                ['=', 'messageNumber', msg_number]
262                        ]
263                       
264                });
265                if (labeleds) {
266                        for (var i=0; i < labeleds.length; i++)
267                                menuItems[labeleds[i].label.id] = labeleds[i].label;
268                } else {
269                        $('#td_message_labels_' + msg_number +', tr[role="'+msg_number+'_'+msg_folder+'"] #td_message_labels_search_' + msg_number)
270                        .html('');
271                        //$.contextMenu( 'destroy', '#td_message_labels_' + msg_number +', #td_message_labels_search_' + msg_number+':first');
272                        $.contextMenu( 'destroy', '#td_message_labels_' + msg_number +', tr[role="'+msg_number+'_'+msg_folder+'"] #td_message_labels_search_' + msg_number);
273                        return false;
274                }
275        }
276        var menuItensLabel = {};
277        for(index in menuItems){
278                menuItensLabel[index] = {type: "label", customName: menuItems[index].name, id: msg_folder+"/"+msg_number+"#"+index};           
279        }
280        $.contextMenu.types.label = function(item, opt, root) {
281        $('<span>'+item.customName+'</span><span class="removeLabeled" title="'+get_lang("Remove Label")+'">x</span>')
282            .appendTo(this);
283                $(this).find('span.removeLabeled').click(function(){
284                        //TODO Mudar quando API abstrair atualizações no cache
285                        DataLayer.remove('labeled', false);
286                        DataLayer.get('labeled');
287                        DataLayer.remove('labeled', item.id);
288                        DataLayer.commit(false, false, function(){
289                                updateLabelsColumn({msg_number:msg_number, boxname:msg_folder, labels:false});
290                        });
291                });
292        };
293        if(current_folder == msg_folder || !current_folder){
294                $.contextMenu( 'destroy', '#td_message_labels_' + msg_number +', tr[role="'+msg_number+'_'+msg_folder+'"] #td_message_labels_search_' + msg_number);
295                $.contextMenu({
296                        selector: '#td_message_labels_' + msg_number +', tr[role="'+msg_number+'_'+msg_folder+'"] #td_message_labels_search_' + msg_number,
297                        trigger: 'hover',
298                        delay:100,
299                        autoHide:true,
300                        callback: function(key, options) {
301                                //TODO - default actions
302                        },
303                        items: menuItensLabel
304                });
305        }else{
306                $.contextMenu( 'destroy', 'tr[role="'+msg_number+'_'+msg_folder+'"] #td_message_labels_search_' + msg_number);
307
308                $.contextMenu({
309                        selector: 'tr[role="'+msg_number+'_'+msg_folder+'"] #td_message_labels_search_' + msg_number,
310                        trigger: 'hover',
311                        delay:100,
312                        autoHide:true,
313                        callback: function(key, options) {
314                                //TODO - default actions
315                        },
316                        items: menuItensLabel
317                });     
318        }
319}
320
321function loadExtraLDAPBox(data, element){
322        menuItensLabel = {};
323        menuItensLabel["Name"] = {name: "<b>"+data[0].value+"</b>", disabled: true};           
324        menuItensLabel["Email"] = {name: data[1].value, disabled: true};       
325        if(data[2].value){
326                menuItensLabel["TelefoneLabel"] = {name: "<b>"+get_lang("Telephone")+"</b>", disabled: true};
327                menuItensLabel["TelefoneValue"] = {name: data[2].value, disabled: true};
328        }
329        if(data[3]){
330                if(data[3].value == "TRUE"){
331                        menuItensLabel["outOffice"] = {name: "<b>"+get_lang("Out of office")+"</b>", disabled: true};
332                        menuItensLabel["outOfficeValue"] = {name: data[4].value.substring(0, 20), disabled: true};
333                }
334        }
335        $.contextMenu({
336                selector: "#content_id_"+currentTab+" "+element+" .box-info",
337                trigger: 'hover',
338                delay:100,
339                autoHide:true,
340                items: menuItensLabel
341        });     
342}
343
344function loadGroupBox(data, element){
345        menuItensLabel = {};
346        menuItensLabel["ContactGroupLabelAll"] = {name:"<b>"+get_lang("Group contacts")+"</b>", disabled: true};
347        menuItensLabel["sep1"] = "---------";
348        if(data.itens){
349                var aux = 0;
350                var ctcName = "";
351                for(var item in data.itens){
352                        if(parseInt(item) <= 4){
353                                ctcName = data.itens[item].data[0].value;
354                                ctcName = ctcName.length > 2 ? ctcName : data.itens[item].data[2].value.substr(0,data.itens[item].data[2].value.indexOf("@"));
355                                menuItensLabel["ContactGroupLabel"+item] = {name: "<b>"+ctcName+"</b>", disabled: true};
356                                menuItensLabel["ContactGroupValue"+item] = {name: data.itens[item].data[2].value, disabled: true};
357                        }else{
358                                aux++;
359                                if(aux == 1)
360                                        menuItensLabel["MoreContactGroupValue"] = {name : get_lang("And more %1 contact", aux), disabled: true };
361                                else
362                                        menuItensLabel["MoreContactGroupValue"] = {name : get_lang("And more %1 contact", aux)+"s", disabled: true };
363                        }
364                }
365        }
366        $.contextMenu({
367                selector: "#content_id_"+currentTab+" "+element+" .box-info",
368                trigger: 'hover',
369                delay:100,
370                autoHide:true,
371                items: menuItensLabel
372        });     
373}
374
375
376
377
378
Note: See TracBrowser for help on using the repository browser.