source: trunk/expressoAdmin1_2/js/jscode/shared_accounts.js @ 5907

Revision 5907, 33.4 KB checked in by cristiano, 12 years ago (diff)

Ticket #2606 - Syncronização das acls e compartilhamentos com caldav

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