source: branches/2.4/expressoAdmin1_2/js/jscode/shared_accounts.js @ 7569

Revision 7569, 29.6 KB checked in by eduardow, 11 years ago (diff)

Ticket #3199 - Problemas com salvamento nas contas compartilhadas.

  • Property svn:mime-type set to text/plain
Line 
1countFiles = 1;
2isValidCallback = false;
3
4function create_shared_accounts()
5{
6    //  select_owners = Element('ea_select_owners');
7    hidden_owners_acl = Element('owners_acls');
8    hidden_owners_calendar_acl = Element('owners_calendar_acls');
9
10    select_owners = Element('ea_select_owners');
11    for(var i = 0;i < select_owners.options.length; i++)
12        select_owners.options[i].selected = true;
13               
14    hidden_owners_acl.value =  admin_connector.serialize(sharemailbox.ownersAcl);
15    hidden_owners_calendar_acl.value =  admin_connector.serialize(sharemailbox.ownersCalendarAcl);
16    cExecuteForm ("$this.shared_accounts.create", document.forms['shared_accounts_form'], handler_create_shared_accounts);
17    hidden_owners_acl.value = "";
18    isValidCallback = true;
19}
20
21function handler_create_shared_accounts(data_return)
22{
23    handler_create_shared_accounts2(data_return);
24    return;
25}
26
27function handler_create_shared_accounts2(data_return)
28{
29    if (data_return && !data_return.status)
30    {
31        write_msg(data_return.msg, 'error');
32    }
33    else
34    {
35        if(sharemailbox.ownersExpressoCalendarAcl && isValidCallback){
36            isValidCallback = false;
37            calback();
38        }
39                   
40        close_lightbox();
41        write_msg(get_lang('Shared account successful created') + '.', 'normal');
42    }
43    return;
44}
45
46function empty_inbox(uid)
47{
48    var action = get_lang('Cleanned user mailbox');
49    var handler_write_log = function(){}
50
51    var handler_empty_inbox = function(data)
52    {
53        if (!data.status)
54            alert(data.msg);
55        else{
56            cExecute ('$this.user.write_log_from_ajax&_action='+action+'&userinfo='+uid, handler_write_log);
57            alert(get_lang('Emptied') +' '+ data.inbox_size + ' ' + get_lang('MB from user inbox'));
58            document.getElementById('mailquota_used').value = data.mailquota_used;
59        }
60    }
61    cExecute ('$this.shared_accounts.empty_inbox&uid='+Element('anchor').value, handler_empty_inbox);
62}
63function set_onload()
64{
65
66    if(sharemailbox.ownersAcl)
67    {
68        delete sharemailbox.ownersAcl;
69        sharemailbox.ownersAcl = new Array();
70    }
71
72    if(sharemailbox.ownersCalendarAcl)
73    {
74        delete sharemailbox.ownersAcl;
75        sharemailbox.ownersAcl = new Array();
76    }
77
78    get_associated_domain(Element('ea_combo_org').value);
79}
80
81function search_organization(key, element)
82{
83    var organizations = Element(element);
84    var RegExp_org = new RegExp("\\b"+key, "i");
85       
86    for(i = 0; i < organizations.length; i++)
87    {
88        if (RegExp_org.test(organizations[i].text))
89        {
90            organizations[i].selected = true;
91            return;
92        }
93    }
94}
95
96function sinc_combos_org(context)
97{
98    combo_org_available_users = Element('ea_combo_org_available_users');
99
100    for (i=0; i<combo_org_available_users.length; i++)
101    {
102        if (combo_org_available_users.options[i].value == context)
103        {
104            combo_org_available_users.options[i].selected = true;
105            //                  get_available_users(context);
106            break;
107        }
108    }
109}
110
111function optionFinderTimeout(obj, event)
112{
113    if( event.keyCode === 13 )
114    {
115        limit = 0;
116        optionFinder(obj.id);
117    }
118}
119function optionFinder(id) {
120       
121    var sentence = Element(id).value;
122
123    var url = '$this.ldap_functions.get_available_users2&context=' +
124    Element('ea_combo_org_available_users').value +
125    ( sentence ? '&sentence=' + sentence: '' );
126
127    userFinder( sentence, 'ea_select_available_users', url, 'ea_span_searching' );
128}                       
129
130function add_user()
131{
132    select_available_users = Element('ea_select_available_users');
133    select_owners = Element('ea_select_owners');
134
135    var count_available_users = select_available_users.length;
136    var new_options = '';
137
138    for (i = 0 ; i < count_available_users ; i++)
139    {
140        if (select_available_users.options[i].selected)
141        {
142            if(document.all)
143            {
144                if ( (select_owners.innerHTML.indexOf('value='+select_available_users.options[i].value)) == '-1' )
145                {
146                    new_options +=  "<option value="
147                    + select_available_users.options[i].value
148                    + ">"
149                    + select_available_users.options[i].text
150                    + "</options>";
151                }
152            }
153            else
154            {
155                if ( (select_owners.innerHTML.indexOf('value="'+select_available_users.options[i].value+'"')) == '-1' )
156                {
157                    new_options +=  "<option value="
158                    + select_available_users.options[i].value
159                    + ">"
160                    + select_available_users.options[i].text
161                    + "</options>";
162                }
163            }
164        }
165    }
166
167    if (new_options != '')
168    {
169        select_owners.innerHTML = "&nbsp;" + new_options + select_owners.innerHTML;
170        select_owners.outerHTML = select_owners.outerHTML;             
171        Element('em_input_readAcl').checked = false;
172        Element('em_input_deleteAcl').checked = false;
173        Element('em_input_writeAcl').checked = false;
174        Element('em_input_sendAcl').checked = false;
175        Element('em_input_folderAcl').checked = false;
176               
177        Element('em_input_readCalendar').checked = false;
178        Element('em_input_writeCalendar').checked = false;
179        Element('em_input_editCalendar').checked = false;
180        Element('em_input_deleteCalendar').checked = false;
181        Element('em_input_restrictCalendar').checked = false;
182               
183        Element('em_input_readExpressoCalendar').checked = false;
184        Element('em_input_writeExpressoCalendar').checked = false;
185        Element('em_input_freebusyExpressoCalendar').checked = false;
186        Element('em_input_deleteExpressoCalendar').checked = false;
187               
188               
189        Element('em_input_sendAcl').disabled = true;
190        select_owners = Element('ea_select_owners');
191        select_owners.options[0].selected = true;
192    }
193}
194
195function remove_user()
196{
197    select_owners = Element('ea_select_owners');
198       
199    var user = '';
200    for(var i = 0;i < select_owners.options.length; i++){
201        if(select_owners.options[i].selected){
202            user = select_owners.options[i].value;
203            delete sharemailbox.ownersAcl[user];
204            sharemailbox.ownersCalendarAcl[user] = '';
205           
206           
207            if(sharemailbox.ownersExpressoCalendarAcl && sharemailbox.ownersExpressoCalendarAcl[user]){
208
209                delete sharemailbox.ownersExpressoCalendarAcl[user];
210                //sharemailbox.ownersExpressoCalendarAcl.length--;
211                DataLayer.dispatchPath = "prototype/";
212                var sharedUser = DataLayer.get('user', {
213                    filter: ['=','mail',$('#mail').val()]
214                });
215                for(var j = 0; j < sharedUser.length; j++)
216                    if(sharedUser[j].phpgwAccountType == 's'){
217                        sharedUser = sharedUser[j];
218                        break;
219                    }
220
221                var signature = DataLayer.get('calendarSignature', {
222                    filter: ['=','user', sharedUser.id]
223                });
224
225                if(!signature)
226                    return;
227
228                var usuario = DataLayer.get('user', {
229                    filter: ['=','uid',user],
230                    criteria: {
231                        notExternal: true
232                    }
233                });
234                var calendarPermission = DataLayer.get('calendarToPermission', {
235                    filter: ['AND', ['=','calendar',signature[0].calendar], ['=','user',usuario[0].id] ]
236                });
237
238                var signatureUser = DataLayer.get('calendarSignature', {
239                    filter: ['AND', ['=','calendar', signature[0].calendar], ['=','user', usuario[0].id ] ]
240                });
241
242                if(!!signatureUser && signatureUser[0].id)
243                    DataLayer.remove('calendarSignature', signatureUser[0].id);
244           
245                if(!!calendarPermission && calendarPermission[0].id)
246                    DataLayer.remove('calendarToPermission', calendarPermission[0].id);
247
248            }
249
250            select_owners.options[i] = null;
251        //break;
252        }
253    }
254    //Nova chamada a "Element" é Necessária devido a um bug do ie com select
255    select_owners = Element('ea_select_owners');
256    if(select_owners.options.length > 0 ){
257        select_owners.options[0].selected = true;
258        user = select_owners.options[0].value;
259        sharemailbox.getaclfromuser(user);
260    }   
261       
262}
263
264function get_shared_accounts_timeOut(input, event)
265{
266    Element('shared_accounts_content').innerHTML = '<table border="0" width="90%"><tr bgcolor="#d3dce3"><td width="30%">'+get_lang("full name")+'</td><td width="30%">'+get_lang("display name")+'</td><td width="30%">'+get_lang("mail")+'</td><td width="5%" align="center">'+get_lang("remove")+'</td></tr></table>';
267       
268    if (event.keyCode === 13)
269    {
270        get_shared_accounts( input );
271    }
272}
273
274function get_shared_accounts(input, callback)
275{
276    var handler_get_shared_accounts = function(data)
277    {
278        if (data.status == 'true')
279        {
280            var table = '<table border="0" width="90%"><tr bgcolor="#d3dce3"><td width="30%">'+get_lang("full name")+'</td><td width="30%">'+get_lang("display name")+'</td><td width="30%">'+get_lang("mail")+'</td><td width="5%" align="center">'+get_lang("remove")+'</td></tr>'+data.trs+'</table>';
281            Element('shared_accounts_content').innerHTML = table;
282        }
283        else
284            write_msg(data.msg, 'error');
285    }
286    cExecute ('$this.ldap_functions.get_shared_accounts&input='+input, handler_get_shared_accounts);
287}
288
289function edit_shared_account(uid)
290{
291    var handle_edit_shared_account = function(data)
292    {
293        if (data.status == 'true')
294        {
295            modal('shared_accounts_modal','save');
296                       
297            Element( 'lightboxCaption' ).innerHTML = get_lang( 'Edit Shared Accounts' );
298            Element('shared_accounts_modal').value = data.mailquota;
299
300
301            var combo_org = Element('ea_combo_org');
302            for (i=0; i<combo_org.length; i++)
303            {
304                if (combo_org.options[i].value == data.user_context)
305                {
306                    combo_org.options[i].selected = true;
307                    break;
308                }
309            }
310                       
311            // anchor
312            Element('anchor').value = "uid=" + uid + ',' + data.user_context;                       
313                       
314            if (data.accountStatus != 'active')
315                Element('accountStatus').checked = false;
316                               
317            if (data.phpgwAccountVisible == '-1')
318                Element('phpgwAccountVisible').checked = true;
319            Element('uidnumber').value = data.uidnumber;
320            Element('cn').value = data.cn;
321            Element('mail').value = data.mail;
322            Element('mailquota').value = data.mailquota;
323            Element('mailquota_used').value = data.mailquota_used;
324            Element('quota_used_field').style.display = 'inline';
325            Element('desc').value = data.description;
326            //Necessario, pois o IE6 tem um bug que não exibe as novas opções se o innerHTML estava vazio
327           
328            if(data.owners_options){
329                Element('ea_select_owners').innerHTML = '&nbsp;' + data.owners_options;
330                Element('ea_select_owners').outerHTML = Element('ea_select_owners').outerHTML;
331            }
332            Element('display_empty_inbox').style.display = data.display_empty_inbox;
333            if( data.allow_edit_shared_account_acl == "0"){
334                Element('bt_add_user').disabled = true;
335                Element('bt_remove_user').disabled = true;
336                Element('em_input_readAcl').disabled = true;
337                Element('em_input_deleteAcl').disabled = true;
338                Element('em_input_writeAcl').disabled = true;
339                Element('em_input_sendAcl').disabled = true;
340                Element('em_input_folderAcl').disabled = true;
341            }
342
343            if( data.mailalternateaddress )
344                loadAppended( 'mailalternateaddress', data.mailalternateaddress );
345
346            sinc_combos_org(data.user_context);
347            sharemailbox.ownersAcl = new Array();
348            sharemailbox.ownersCalendarAcl = new Array();
349            if( data.owners && data.owners != "undefined" && data.owners_acl != "undefined" ){
350                for (i=0; i<data.owners.length; i++){
351                    sharemailbox.ownersAcl[ data.owners[i] ] = data.owners_acl[i];     
352                    sharemailbox.ownersCalendarAcl[ data.owners[i] ] = data.owners_calendar_acl[i];
353                }
354            }
355
356            //new API compatibility
357            DataLayer.dispatchPath = "prototype/";
358            var signature = DataLayer.get('calendarSignature', {
359                filter: ['=','user', data.uidnumber]
360            });
361            if(!!signature){
362                sharemailbox.currentPemissions[data.uidnumber] = true;
363                var calendarPermission = DataLayer.get('calendarToPermission:detail', {
364                    filter: ['=','calendar',signature[0].calendar],
365                    criteria:{
366                        deepness: 2
367                    }
368                });
369                if(calendarPermission){
370                    current = {};
371                    for(var i=0; i<data.owners.length; i++)
372                        current[data.owners[i]] = true;
373
374                    for (var i=0; i < calendarPermission.length; i++){
375                        sharemailbox.ownersExpressoCalendarAcl[ calendarPermission[i].user.uid ] = calendarPermission[i].aclValues;                   
376                        sharemailbox.currentPemissions[calendarPermission[i].user.uid] = calendarPermission[i].id;
377                        // sharemailbox.ownersExpressoCalendarAcl.length = sharemailbox.currentPemissions.length = i;
378                   
379                        if(!current[calendarPermission[i].user.uid ]){
380                            Element('ea_select_owners').innerHTML = Element('ea_select_owners').innerHTML+'<option value='+ calendarPermission[i].user.uid +'>'+ calendarPermission[i].user.name +'</option>';
381                            Element('ea_select_owners').outerHTML = Element('ea_select_owners').outerHTML;
382                        }
383                   
384                    }
385
386                    delete sharemailbox.currentPemissions[undefined];
387                }
388       
389            }
390           
391           
392        }
393        else
394            write_msg(data.msg, 'error');
395    }
396    cExecute ('$this.shared_accounts.get_data&uid='+uid, handle_edit_shared_account);
397}
398
399function save_shared_accounts()
400{
401    if (is_ie){
402        var i = 0;
403        while (document.forms(i).name != "shared_accounts_form"){
404            i++
405        }
406        form = document.forms(i);
407    }
408    else   form = document.forms["shared_accounts_form"];
409       
410    hidden_owners_calendar_acl = Element('owners_calendar_acls');
411    hidden_owners_acl = Element('owners_acls');
412    select_owners = Element('ea_select_owners');
413    for(var i = 0;i < select_owners.options.length; i++){               
414        var user = select_owners.options[i].value;               
415        select_owners.options[i].value = user;
416    }
417    hidden_owners_acl.value =  admin_connector.serialize(sharemailbox.ownersAcl);
418    hidden_owners_calendar_acl.value =  admin_connector.serialize(sharemailbox.ownersCalendarAcl);
419    cExecuteForm ("$this.shared_accounts.save", form, handler_save_shared_accounts);
420    get_shared_accounts(Element('ea_shared_account_search').value);
421       
422    if(sharemailbox.ownersExpressoCalendarAcl)
423        calback();
424}
425
426function handler_save_shared_accounts(data_return)
427{
428    handler_save_shared_accounts2(data_return);
429    return;
430}
431function handler_save_shared_accounts2(data_return)
432{
433    if(data_return){
434        if (data_return.status){
435            hidden_owners_acl.value = "";
436            close_lightbox();
437            write_msg(get_lang('Shared account successful saved') + '.', 'normal');
438        }else
439            write_msg(data_return.msg , 'error');   
440    }
441    return;
442}
443
444function callbackDelete(sharedUser){
445
446    if(!!sharedUser && $.isArray(sharedUser))
447        for(var i = 0; i < sharedUser.length; i++)
448            if(sharedUser[i].phpgwAccountType == 's'){
449                sharedUser = sharedUser[i];
450                break;
451            }
452        DataLayer.dispatchPath = "prototype/";
453        var signature = DataLayer.get('calendarSignature', {
454                filter: ['=','user', sharedUser.id]
455            });
456       
457        signature = $.isArray(signature) ? signature[0] : signature;
458       
459        DataLayer.remove('calendarSignature', signature.id)
460        DataLayer.commit();
461}
462
463function calback(){
464        DataLayer.dispatchPath = "prototype/";
465    var sharedUser = DataLayer.get('user', {
466        filter: ['=','mail',$('#mail').val()]
467    });
468
469    if(!!sharedUser && $.isArray(sharedUser))
470        for(var i = 0; i < sharedUser.length; i++)
471            if(sharedUser[i].phpgwAccountType == 's'){
472                sharedUser = sharedUser[i];
473                break;
474            }
475
476    if(!!!sharemailbox.currentPemissions[sharedUser.id])
477        DataLayer.put('calendarSignature', {
478            user: sharedUser.id,
479            calendar:  {
480                timezone: 'America/Sao_Paulo',
481                name: $('#cn').val(),
482                location : $('#sharedAccountsLocation').val() + '/' + $('#cn').val(),
483                description : $('#cn').val()
484            },
485            isOwner:  '1',
486            fontColor:  '000000',
487            backgroundColor: 'f1efac',
488            borderColor: 'eddb21'
489        });
490
491    var returns = function(data){
492
493
494        var calendar = '';
495
496        if(data){
497            for(var i in data)
498                if(i.indexOf('calendar:') >= 0)
499                    calendar = data[i].id;
500        }else{
501            calendar = DataLayer.get('calendarSignature', {
502                filter: ['=','user', sharedUser.id]
503            });
504            calendar = calendar[0].calendar;
505        }
506
507        $.each(sharemailbox.ownersExpressoCalendarAcl, function(user, acl) {
508
509            var usuario = DataLayer.get('user', {
510                filter: ['=','uid',user],
511                criteria: {
512                    notExternal: true
513                }
514            });
515
516            if($.isArray(usuario))
517                usuario = usuario[0];
518
519            DataLayer.put('calendarToPermission', DataLayer.merge({
520                user:  usuario.id,
521                type: '0',
522                acl: acl,
523                calendar: calendar
524            }, !!sharemailbox.currentPemissions[usuario.uid] ? {
525                id: sharemailbox.currentPemissions[usuario.uid]
526            } : {}));
527
528            if(!!!sharemailbox.currentPemissions[usuario.uid])
529                DataLayer.put('calendarSignature', {
530                    user: usuario.id,
531                    calendar:  calendar,
532                    isOwner:  '0',
533                    fontColor:  '000000',
534                    backgroundColor: 'f1efac',
535                    borderColor: 'eddb21'
536                });
537
538        })
539        DataLayer.commit(); 
540    };
541    if(!!sharemailbox.currentPemissions[sharedUser.id])
542        returns(false);
543    else
544        DataLayer.commit(false, false, returns);
545}
546
547
548function delete_shared_accounts(uid, mail)
549{
550    if (!confirm(get_lang('Are you sure that you want to delete this shared account') + "?"))
551        return;
552       
553        var user = {};
554        DataLayer.dispatchPath = "prototype/";
555        if(sharemailbox.ownersExpressoCalendarAcl)
556                user =  DataLayer.get('user', {
557                        filter: ['=','mail',mail]
558                });
559       
560       
561    var handle_delete_shared_account = function(data_return)
562    {
563        if (!data_return.status)
564        {
565            write_msg(data_return.msg, 'error');
566        }
567        else
568        {
569                if(sharemailbox.ownersExpressoCalendarAcl){
570                        callbackDelete(user);
571                }
572       
573            write_msg(get_lang('Shared account successful deleted') + '.', 'normal');
574            get_shared_accounts(Element('ea_shared_account_search').value);
575        }
576        return;
577    }
578       
579       
580       
581    cExecute ('$this.shared_accounts.delete&uid='+uid, handle_delete_shared_account);
582}
583function cShareMailbox()
584{
585    this.arrayWin = new Array();
586    this.el;
587    this.alert = false;
588    this.ownersAcl = new Array();
589    this.ownersCalendarAcl = new Array();
590    this.ownersExpressoCalendarAcl = {};
591    this.currentPemissions = {};
592}
593
594cShareMailbox.prototype.get_available_users = function(context)
595{
596    var handler_get_available_users = function(data)
597    {
598        select_available_users = document.getElementById('em_select_available_users');
599               
600        //Limpa o select
601        for(var i=0; i<select_available_users.options.length; i++)
602        {
603            select_available_users.options[i] = null;
604            i--;
605        }
606
607        if ((data) && (data.length > 0))
608        {
609            // Necessario, pois o IE6 tem um bug que retira o primeiro options se o innerHTML estiver vazio.
610            select_available_users.innerHTML = '#' + data;
611            select_available_users.outerHTML = select_available_users.outerHTML;
612                       
613            select_available_users.disabled = false;
614            select_available_users_clone = document.getElementById('em_select_available_users').cloneNode(true);
615            document.getElementById('em_input_searchUser').value = '';
616        }
617    }
618    cExecute ("$this.ldap_functions.get_available_users2&context="+context, handler_get_available_users);
619}
620
621cShareMailbox.prototype.getaclfromuser = function(user)
622{
623       
624    Element('em_input_readAcl').checked = false;
625    Element('em_input_deleteAcl').checked = false;
626    Element('em_input_writeAcl').checked = false;
627    Element('em_input_sendAcl').checked = false;
628    Element('em_input_folderAcl').checked = false;
629    Element('em_input_readCalendar').checked = false;
630    Element('em_input_writeCalendar').checked = false;
631    Element('em_input_editCalendar').checked = false;
632    Element('em_input_deleteCalendar').checked = false;
633    Element('em_input_restrictCalendar').checked = false;
634
635    Element('em_input_readExpressoCalendar').checked = false;
636    Element('em_input_writeExpressoCalendar').checked = false;
637    Element('em_input_freebusyExpressoCalendar').checked = false;
638    Element('em_input_deleteExpressoCalendar').checked = false;
639
640    Element('em_input_editCalendar').disabled = true;
641    Element('em_input_deleteCalendar').disabled = true;
642    Element('em_input_restrictCalendar').disabled = true;
643               
644               
645    if(this.ownersExpressoCalendarAcl[user])
646    {
647        if (this.ownersExpressoCalendarAcl[user].indexOf('r') >= 0)
648        {
649            Element('em_input_readExpressoCalendar').checked = true;
650            Element('em_input_writeExpressoCalendar').checked = false;
651            Element('em_input_freebusyExpressoCalendar').checked = false;
652            Element('em_input_deleteExpressoCalendar').checked = false;
653                           
654        }
655        if (this.ownersExpressoCalendarAcl[user].indexOf('w') >= 0)
656        {
657            Element('em_input_writeExpressoCalendar').checked = true;
658        }
659        if (this.ownersExpressoCalendarAcl[user].indexOf('d') >= 0)
660        {
661            Element('em_input_deleteExpressoCalendar').checked = true;
662        }
663        if (this.ownersExpressoCalendarAcl[user].indexOf('b') >= 0)
664        {
665            Element('em_input_freebusyExpressoCalendar').checked = true;
666        }
667    }
668               
669               
670    if(this.ownersCalendarAcl[user])
671    {
672        if (this.ownersCalendarAcl[user].indexOf('1-',0) >= 0)
673        {
674            Element('em_input_readCalendar').checked = true;
675            Element('em_input_editCalendar').disabled = false;
676            Element('em_input_deleteCalendar').disabled = false;
677            Element('em_input_restrictCalendar').disabled = false;
678                           
679            Element('em_input_readExpressoCalendar').checked = true;
680            Element('em_input_writeExpressoCalendar').checked = false;
681            Element('em_input_freebusyExpressoCalendar').checked = false;
682            Element('em_input_deleteExpressoCalendar').checked = false;
683                           
684        }
685        if (this.ownersCalendarAcl[user].indexOf('2-',0) >= 0)
686        {
687            Element('em_input_writeCalendar').checked = true;
688            Element('em_input_writeExpressoCalendar').checked = true;
689        }
690        if (this.ownersCalendarAcl[user].indexOf('4-',0) >= 0)
691        {
692            Element('em_input_editCalendar').checked = true;
693            Element('em_input_writeExpressoCalendar').checked = true;
694        }
695        if (this.ownersCalendarAcl[user].indexOf('8-',0) >= 0)
696        {
697            Element('em_input_deleteCalendar').checked = true;
698            Element('em_input_deleteExpressoCalendar').checked = true;
699        }
700        if (this.ownersCalendarAcl[user].indexOf('16-',0) >= 0)
701        {
702            Element('em_input_restrictCalendar').checked = true;
703        }
704    }
705
706    if(this.ownersAcl[user])
707    {
708        if ( (this.ownersAcl[user].indexOf('l',0) >= 0) &&
709                 (this.ownersAcl[user].indexOf('r',0) >= 0) &&
710                 (this.ownersAcl[user].indexOf('s',0) >= 0) 
711            )
712        {
713            Element('em_input_sendAcl').disabled = false;
714            Element('em_input_readAcl').checked = true;
715        }
716        else
717            Element('em_input_sendAcl').disabled = true;
718                       
719        if ( (this.ownersAcl[user].indexOf('t',0) >= 0) &&
720                 (this.ownersAcl[user].indexOf('e',0) >= 0) 
721            )
722        {
723            Element('em_input_deleteAcl').checked = true;
724        }
725        if ( (this.ownersAcl[user].indexOf('w',0) >= 0) &&
726                 (this.ownersAcl[user].indexOf('i',0) >= 0) 
727           )
728        {
729            Element('em_input_writeAcl').checked = true;
730        }               
731        if ((this.ownersAcl[user].indexOf('p',0) >= 0) &&
732                (this.ownersAcl[user].indexOf('a',0) >= 0) )
733        {
734            Element('em_input_sendAcl').disabled = false;
735            Element('em_input_sendAcl').checked = true;
736        }
737        if ( (this.ownersAcl[user].indexOf('k',0) >= 0) &&
738                 (this.ownersAcl[user].indexOf('x',0) >= 0) 
739       )
740        {
741            Element('em_input_folderAcl').checked = true;
742        }
743       
744
745    }
746
747    //$()
748    var checkboxes = $(".shared-permissions input:checkbox");
749    var check = $("#em_input_readAcl").attr("checked") == undefined ? false : true;
750    if(check){
751                checkboxes.removeAttr("disabled");
752        }else{
753                checkboxes.not(".shared-required").attr("disabled", "disabled");
754                checkboxes.removeAttr("checked");
755        }     
756}
757       
758cShareMailbox.prototype.setaclfromuser = function()
759{
760    var acl             = '';
761    var select  = Element('ea_select_owners');
762
763    if(select.selectedIndex == "-1"){
764        alert("Selecione antes um usuario!");
765        return false;
766    }
767               
768    for(var k = 0; k < select.options.length; k ++ )
769    {
770        if(select.options[k].selected !== true ) continue;
771                   
772                   
773        acl = '';
774        var user = select.options[k].value;
775               
776        if (Element('em_input_readAcl').checked) {
777            Element('em_input_sendAcl').disabled = false;
778            acl = 'lrs';
779        }
780        else{
781            Element('em_input_sendAcl').disabled = true;
782            Element('em_input_sendAcl').checked = false;
783        }
784                               
785        if (Element('em_input_deleteAcl').checked)
786            acl += 'tea';
787
788        if (Element('em_input_writeAcl').checked)
789            acl += 'wia';
790
791        if (Element('em_input_sendAcl').checked)
792            acl += 'pa';
793               
794        if (Element('em_input_folderAcl').checked)
795            acl += 'kxa';
796                               
797                       
798        this.ownersAcl[user] = acl;             
799    }
800}
801
802cShareMailbox.prototype.setCalendaraclfromuser = function()
803{
804    var acl             = '';
805    var select  = Element('ea_select_owners');
806               
807    sharemailbox.ownersExpressoCalendarAcl = false;
808
809    if(select.selectedIndex == "-1"){
810        alert("Selecione antes um usuario!");
811        return false;
812    }
813               
814    for(var k = 0; k < select.options.length; k ++ )
815    {
816        if(select.options[k].selected !== true ) continue;
817                   
818        acl = '';
819        var user = select.options[k].value;
820
821        if (Element('em_input_readCalendar').checked)
822        {
823
824            acl += '1-';
825
826            Element('em_input_editCalendar').disabled = false;
827            Element('em_input_deleteCalendar').disabled = false;
828            Element('em_input_restrictCalendar').disabled = false;
829                       
830            if (Element('em_input_editCalendar').checked)
831                acl += '4-';
832
833            if (Element('em_input_deleteCalendar').checked )
834                acl += '8-';
835
836            if (Element('em_input_restrictCalendar').checked)
837                acl += '16-';
838        }
839        else
840        {
841            Element('em_input_editCalendar').disabled = true;
842            Element('em_input_deleteCalendar').disabled = true;
843            Element('em_input_restrictCalendar').disabled = true;
844            Element('em_input_editCalendar').checked = false;
845            Element('em_input_deleteCalendar').checked = false;
846            Element('em_input_restrictCalendar').checked = false;
847                       
848        }
849
850        if (Element('em_input_writeCalendar').checked || Element('em_input_writeExpressoCalendar').checked)
851            acl += '2-';
852
853
854        this.ownersCalendarAcl[user] = acl;
855    }
856}
857       
858cShareMailbox.prototype.setExpressoCalendaraclfromuser = function()
859{
860    var acl             = '';
861    var select  = Element('ea_select_owners');
862               
863    sharemailbox.ownersCalendarAcl = false;
864
865    if(select.selectedIndex == "-1"){
866        alert("Selecione antes um usuario!");
867        return false;
868    }
869               
870    for(var k = 0; k < select.options.length; k ++ )
871    {
872        if(select.options[k].selected !== true ) continue;
873                   
874        acl = '';
875        var user = select.options[k].value;
876                   
877        if(Element('em_input_freebusyExpressoCalendar').checked)
878        {
879            Element('em_input_writeExpressoCalendar').disabled = true;
880            Element('em_input_deleteExpressoCalendar').disabled = true;
881            Element('em_input_readExpressoCalendar').disabled = true;
882            Element('em_input_writeExpressoCalendar').checked = false;
883            Element('em_input_deleteExpressoCalendar').checked = false;
884            Element('em_input_readExpressoCalendar').checked = false;
885                                             
886                       
887            acl += 'b'
888        }
889        else
890        {
891            Element('em_input_readExpressoCalendar').disabled = false;
892            if (Element('em_input_readExpressoCalendar').checked)
893            {
894                acl += 'r';
895
896                Element('em_input_writeExpressoCalendar').disabled = false;
897                Element('em_input_deleteExpressoCalendar').disabled = false;
898                //Element('em_input_freebusyExpressoCalendar').disabled = false;
899
900                if (Element('em_input_writeExpressoCalendar').checked)
901                    acl += 'w';
902
903                if (Element('em_input_deleteExpressoCalendar').checked)
904                    acl += 'd';
905
906            }
907            else
908            {
909                Element('em_input_writeExpressoCalendar').disabled = true;
910                Element('em_input_deleteExpressoCalendar').disabled = true;
911                //Element('em_input_freebusyExpressoCalendar').disabled = true;
912                Element('em_input_writeExpressoCalendar').checked = false;
913                Element('em_input_deleteExpressoCalendar').checked = false;
914            // Element('em_input_freebusyExpressoCalendar').checked = false;
915            }
916
917        }
918                   
919        this.ownersExpressoCalendarAcl[user] = acl;
920    }
921}
922               
923cShareMailbox.prototype.add_user = function()
924{
925    var select_available_users = document.getElementById('em_select_available_users');
926    var select_users = document.getElementById('ea_select_owners');
927
928    var count_available_users = select_available_users.length;
929    var count_users = select_users.options.length;
930    var new_options = '';
931       
932    for (i = 0 ; i < count_available_users ; i++)
933    {
934        if (select_available_users.options[i].selected)
935        {
936            if(document.all)
937            {
938                if ( (select_users.innerHTML.indexOf('value='+select_available_users.options[i].value)) == '-1' )
939                {
940                    new_options +=  '<option value='
941                    + select_available_users.options[i].value
942                    + '>'
943                    + select_available_users.options[i].text
944                    + '</option>';
945                }
946            }
947            else
948            {
949                if ( (select_users.innerHTML.indexOf('value="'+select_available_users.options[i].value+'"')) == '-1' )
950                {
951                    new_options +=  '<option value='
952                    + select_available_users.options[i].value
953                    + '>'
954                    + select_available_users.options[i].text
955                    + '</option>';
956                }
957            }
958        }
959    }
960
961    if (new_options != '')
962    {
963        select_users.innerHTML = '#' + new_options + select_users.innerHTML;
964        select_users.outerHTML = select_users.outerHTML;
965                       
966    }
967}
968
969cShareMailbox.prototype.remove_user = function()
970{
971    select_users = document.getElementById('ea_select_owners');
972       
973    for(var i = 0;i < select_users.options.length; i++)
974        if(select_users.options[i].selected)
975        {
976                       
977            var user = select_users.options[i].value;
978            this.ownersCalendarAcl[user] = '';
979            select_users.options[i--] = null;
980                               
981        }
982               
983    Element('em_input_readAcl').checked = false;               
984    Element('em_input_deleteAcl').checked = false;
985    Element('em_input_writeAcl').checked = false;
986    Element('em_input_sendAcl').checked = false;
987    Element('em_input_folderAcl').checked = false;
988               
989    Element('em_input_readCalendar').checked = false;
990    Element('em_input_writeCalendar').checked = false;
991    Element('em_input_editCalendar').checked = false;
992    Element('em_input_deleteCalendar').checked = false;
993    Element('em_input_restrictCalendar').checked = false;
994               
995    Element('em_input_readExpressoCalendar').disabled = true;
996    Element('em_input_writeExpressoCalendar').disabled = true;
997    Element('em_input_deleteExpressoCalendar').disabled = true;
998    Element('em_input_readExpressoCalendar').disabled = true;
999}
1000       
1001       
1002/* Build the Object */
1003var sharemailbox;
1004sharemailbox = new cShareMailbox();
Note: See TracBrowser for help on using the repository browser.