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

Revision 6018, 28.8 KB checked in by acoutinho, 12 years ago (diff)

Ticket #2636 - Inconsistencia na interface de 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_saveAcl').checked = false;
176        Element('em_input_folderAcl').checked = false;
177               
178        Element('em_input_readCalendar').checked = false;
179        Element('em_input_writeCalendar').checked = false;
180        Element('em_input_editCalendar').checked = false;
181        Element('em_input_deleteCalendar').checked = false;
182        Element('em_input_restrictCalendar').checked = false;
183               
184        Element('em_input_readExpressoCalendar').checked = false;
185        Element('em_input_writeExpressoCalendar').checked = false;
186        Element('em_input_freebusyExpressoCalendar').checked = false;
187        Element('em_input_deleteExpressoCalendar').checked = false;
188               
189               
190        Element('em_input_sendAcl').disabled = true;
191        select_owners = Element('ea_select_owners');
192        select_owners.options[0].selected = true;
193    }
194}
195
196function remove_user()
197{
198    select_owners = Element('ea_select_owners');
199       
200    var user = '';
201    for(var i = 0;i < select_owners.options.length; i++){
202        if(select_owners.options[i].selected){
203            user = select_owners.options[i].value;
204            delete sharemailbox.ownersAcl[user];
205            sharemailbox.ownersCalendarAcl[user] = '';
206           
207           
208            if(sharemailbox.ownersExpressoCalendarAcl && sharemailbox.ownersExpressoCalendarAcl[user]){
209
210                delete sharemailbox.ownersExpressoCalendarAcl[user];
211                //sharemailbox.ownersExpressoCalendarAcl.length--;
212
213                var sharedUser = DataLayer.get('user', {
214                    filter: ['=','mail',$('#mail').val()]
215                });
216                for(var j = 0; j < sharedUser.length; j++)
217                    if(sharedUser[j].phpgwAccountType == 's'){
218                        sharedUser = sharedUser[j];
219                        break;
220                    }
221
222                var signature = DataLayer.get('calendarSignature', {
223                    filter: ['=','user', sharedUser.id]
224                });
225
226                if(!signature)
227                    return;
228
229                var usuario = DataLayer.get('user', {
230                    filter: ['=','uid',user],
231                    criteria: {
232                        notExternal: true
233                    }
234                });
235                var calendarPermission = DataLayer.get('calendarToPermission', {
236                    filter: ['AND', ['=','calendar',signature[0].calendar], ['=','user',usuario[0].id] ]
237                });
238
239                var signatureUser = DataLayer.get('calendarSignature', {
240                    filter: ['AND', ['=','calendar', signature[0].calendar], ['=','user', usuario[0].id ] ]
241                });
242
243                if(!!signatureUser && signatureUser[0].id)
244                    DataLayer.remove('calendarSignature', signatureUser[0].id);
245           
246                if(!!calendarPermission && calendarPermission[0].id)
247                    DataLayer.remove('calendarToPermission', calendarPermission[0].id);
248
249            }
250
251            select_owners.options[i] = null;
252        //break;
253        }
254    }
255    //Nova chamada a "Element" é Necessária devido a um bug do ie com select
256    select_owners = Element('ea_select_owners');
257    if(select_owners.options.length > 0 ){
258        select_owners.options[0].selected = true;
259        user = select_owners.options[0].value;
260        sharemailbox.getaclfromuser(user);
261    }   
262       
263}
264
265function get_shared_accounts_timeOut(input, event)
266{
267    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>';
268       
269    if (event.keyCode === 13)
270    {
271        get_shared_accounts( input );
272    }
273}
274
275function get_shared_accounts(input, callback)
276{
277    var handler_get_shared_accounts = function(data)
278    {
279        if (data.status == 'true')
280        {
281            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>';
282            Element('shared_accounts_content').innerHTML = table;
283        }
284        else
285            write_msg(data.msg, 'error');
286    }
287    cExecute ('$this.ldap_functions.get_shared_accounts&input='+input, handler_get_shared_accounts);
288}
289
290function edit_shared_account(uid)
291{
292    var handle_edit_shared_account = function(data)
293    {
294        if (data.status == 'true')
295        {
296            modal('shared_accounts_modal','save');
297                       
298            Element( 'lightboxCaption' ).innerHTML = get_lang( 'Edit Shared Accounts' );
299            Element('shared_accounts_modal').value = data.mailquota;
300
301
302            var combo_org = Element('ea_combo_org');
303            for (i=0; i<combo_org.length; i++)
304            {
305                if (combo_org.options[i].value == data.user_context)
306                {
307                    combo_org.options[i].selected = true;
308                    break;
309                }
310            }
311                       
312            // anchor
313            Element('anchor').value = "uid=" + uid + ',' + data.user_context;                       
314                       
315            if (data.accountStatus != 'active')
316                Element('accountStatus').checked = false;
317                               
318            if (data.phpgwAccountVisible == '-1')
319                Element('phpgwAccountVisible').checked = true;
320            Element('uidnumber').value = data.uidnumber;
321            Element('cn').value = data.cn;
322            Element('mail').value = data.mail;
323            Element('mailquota').value = data.mailquota;
324            Element('mailquota_used').value = data.mailquota_used;
325            Element('quota_used_field').style.display = 'inline';
326            Element('desc').value = data.description;
327            //Necessario, pois o IE6 tem um bug que não exibe as novas opções se o innerHTML estava vazio
328           
329            if(data.owners_options){
330                Element('ea_select_owners').innerHTML = '&nbsp;' + data.owners_options;
331                Element('ea_select_owners').outerHTML = Element('ea_select_owners').outerHTML;
332            }
333            Element('display_empty_inbox').style.display = data.display_empty_inbox;
334            if( data.allow_edit_shared_account_acl == "0"){
335                Element('bt_add_user').disabled = true;
336                Element('bt_remove_user').disabled = true;
337                Element('em_input_readAcl').disabled = true;
338                Element('em_input_deleteAcl').disabled = true;
339                Element('em_input_writeAcl').disabled = true;
340                Element('em_input_sendAcl').disabled = true;
341                Element('em_input_saveAcl').disabled = true;
342                Element('em_input_folderAcl').disabled = true;
343            }
344
345            if( data.mailalternateaddress )
346                loadAppended( 'mailalternateaddress', data.mailalternateaddress );
347
348            sinc_combos_org(data.user_context);
349            sharemailbox.ownersAcl = new Array();
350            sharemailbox.ownersCalendarAcl = new Array();
351            if( data.owners && data.owners != "undefined" && data.owners_acl != "undefined" ){
352                for (i=0; i<data.owners.length; i++){
353                    sharemailbox.ownersAcl[ data.owners[i] ] = data.owners_acl[i];     
354                    sharemailbox.ownersCalendarAcl[ data.owners[i] ] = data.owners_calendar_acl[i];
355                }
356            }
357
358            //new API compatibility
359            var signature = DataLayer.get('calendarSignature', {
360                filter: ['=','user', data.uidnumber]
361            });
362            if(!!signature){
363                sharemailbox.currentPemissions[data.uidnumber] = true;
364                var calendarPermission = DataLayer.get('calendarToPermission:detail', {
365                    filter: ['=','calendar',signature[0].calendar],
366                    criteria:{
367                        deepness: 2
368                    }
369                });
370                if(calendarPermission){
371                    current = {};
372                    for(var i=0; i<data.owners.length; i++)
373                        current[data.owners[i]] = true;
374
375                    for (var i=0; i < calendarPermission.length; i++){
376                        sharemailbox.ownersExpressoCalendarAcl[ calendarPermission[i].user.uid ] = calendarPermission[i].aclValues;                   
377                        sharemailbox.currentPemissions[calendarPermission[i].user.uid] = calendarPermission[i].id;
378                        // sharemailbox.ownersExpressoCalendarAcl.length = sharemailbox.currentPemissions.length = i;
379                   
380                        if(!current[calendarPermission[i].user.uid ]){
381                            Element('ea_select_owners').innerHTML = Element('ea_select_owners').innerHTML+'<option value='+ calendarPermission[i].user.uid +'>'+ calendarPermission[i].user.name +'</option>';
382                            Element('ea_select_owners').outerHTML = Element('ea_select_owners').outerHTML;
383                        }
384                   
385                    }
386
387                    delete sharemailbox.currentPemissions[undefined];
388                }
389       
390            }
391           
392           
393        }
394        else
395            write_msg(data.msg, 'error');
396    }
397    cExecute ('$this.shared_accounts.get_data&uid='+uid, handle_edit_shared_account);
398}
399
400function save_shared_accounts()
401{
402    if (is_ie){
403        var i = 0;
404        while (document.forms(i).name != "shared_accounts_form"){
405            i++
406        }
407        form = document.forms(i);
408    }
409    else   form = document.forms["shared_accounts_form"];
410       
411    hidden_owners_calendar_acl = Element('owners_calendar_acls');
412    hidden_owners_acl = Element('owners_acls');
413    select_owners = Element('ea_select_owners');
414    for(var i = 0;i < select_owners.options.length; i++){               
415        var user = select_owners.options[i].value;               
416        select_owners.options[i].value = user;
417    }
418    hidden_owners_acl.value =  admin_connector.serialize(sharemailbox.ownersAcl);
419    hidden_owners_calendar_acl.value =  admin_connector.serialize(sharemailbox.ownersCalendarAcl);
420    cExecuteForm ("$this.shared_accounts.save", form, handler_save_shared_accounts);
421    get_shared_accounts(Element('ea_shared_account_search').value);
422       
423    if(sharemailbox.ownersExpressoCalendarAcl)
424        calback();
425}
426
427function handler_save_shared_accounts(data_return)
428{
429    handler_save_shared_accounts2(data_return);
430    return;
431}
432function handler_save_shared_accounts2(data_return)
433{
434    if(data_return){
435        if (data_return.status){
436            hidden_owners_acl.value = "";
437            close_lightbox();
438            write_msg(get_lang('Shared account successful saved') + '.', 'normal');
439        }else
440            write_msg(data_return.msg , 'error');   
441    }
442    return;
443}
444
445function calback(){
446    var sharedUser = DataLayer.get('user', {
447        filter: ['=','mail',$('#mail').val()]
448    });
449
450    if(!!sharedUser && $.isArray(sharedUser))
451        for(var i = 0; i < sharedUser.length; i++)
452            if(sharedUser[i].phpgwAccountType == 's'){
453                sharedUser = sharedUser[i];
454                break;
455            }
456
457    if(!!!sharemailbox.currentPemissions[sharedUser.id])
458        DataLayer.put('calendarSignature', {
459            user: sharedUser.id,
460            calendar:  {
461                timezone: 'America/Sao_Paulo',
462                name: $('#cn').val(),
463                location : $('#sharedAccountsLocation').val() + '/' + $('#cn').val(),
464                description : $('#cn').val()
465            },
466            isOwner:  '1',
467            fontColor:  '000000',
468            backgroundColor: 'f1efac',
469            borderColor: 'eddb21'
470        });
471
472    var returns = function(data){
473
474
475        var calendar = '';
476
477        if(data){
478            for(var i in data)
479                if(i.indexOf('calendar:') >= 0)
480                    calendar = data[i].id;
481        }else{
482            calendar = DataLayer.get('calendarSignature', {
483                filter: ['=','user', sharedUser.id]
484            });
485            calendar = calendar[0].calendar;
486        }
487
488        $.each(sharemailbox.ownersExpressoCalendarAcl, function(user, acl) {
489
490            var usuario = DataLayer.get('user', {
491                filter: ['=','uid',user],
492                criteria: {
493                    notExternal: true
494                }
495            });
496
497            if($.isArray(usuario))
498                usuario = usuario[0];
499
500            DataLayer.put('calendarToPermission', DataLayer.merge({
501                user:  usuario.id,
502                type: '0',
503                acl: acl,
504                calendar: calendar
505            }, !!sharemailbox.currentPemissions[usuario.uid] ? {
506                id: sharemailbox.currentPemissions[usuario.uid]
507            } : {}));
508
509            if(!!!sharemailbox.currentPemissions[usuario.uid])
510                DataLayer.put('calendarSignature', {
511                    user: usuario.id,
512                    calendar:  calendar,
513                    isOwner:  '0',
514                    fontColor:  '000000',
515                    backgroundColor: 'f1efac',
516                    borderColor: 'eddb21'
517                });
518
519        })
520        DataLayer.commit(); 
521    };
522    if(!!sharemailbox.currentPemissions[sharedUser.id])
523        returns(false);
524    else
525        DataLayer.commit(false, false, returns);
526}
527
528
529function delete_shared_accounts(uid)
530{
531    if (!confirm(get_lang('Are you sure that you want to delete this shared account') + "?"))
532        return;
533       
534    var handle_delete_shared_account = function(data_return)
535    {
536        if (!data_return.status)
537        {
538            write_msg(data_return.msg, 'error');
539        }
540        else
541        {
542            write_msg(get_lang('Shared account successful deleted') + '.', 'normal');
543            get_shared_accounts(Element('ea_shared_account_search').value);
544        }
545        return;
546    }
547    cExecute ('$this.shared_accounts.delete&uid='+uid, handle_delete_shared_account);
548}
549function cShareMailbox()
550{
551    this.arrayWin = new Array();
552    this.el;
553    this.alert = false;
554    this.ownersAcl = new Array();
555    this.ownersCalendarAcl = new Array();
556    this.ownersExpressoCalendarAcl = {};
557    this.currentPemissions = {};
558}
559
560cShareMailbox.prototype.get_available_users = function(context)
561{
562    var handler_get_available_users = function(data)
563    {
564        select_available_users = document.getElementById('em_select_available_users');
565               
566        //Limpa o select
567        for(var i=0; i<select_available_users.options.length; i++)
568        {
569            select_available_users.options[i] = null;
570            i--;
571        }
572
573        if ((data) && (data.length > 0))
574        {
575            // Necessario, pois o IE6 tem um bug que retira o primeiro options se o innerHTML estiver vazio.
576            select_available_users.innerHTML = '#' + data;
577            select_available_users.outerHTML = select_available_users.outerHTML;
578                       
579            select_available_users.disabled = false;
580            select_available_users_clone = document.getElementById('em_select_available_users').cloneNode(true);
581            document.getElementById('em_input_searchUser').value = '';
582        }
583    }
584    cExecute ("$this.ldap_functions.get_available_users2&context="+context, handler_get_available_users);
585}
586
587cShareMailbox.prototype.getaclfromuser = function(user)
588{
589       
590    Element('em_input_readAcl').checked = false;
591    Element('em_input_deleteAcl').checked = false;
592    Element('em_input_writeAcl').checked = false;
593    Element('em_input_sendAcl').checked = false;
594    Element('em_input_saveAcl').checked = false;
595    Element('em_input_saveAcl').disabled = true;
596    Element('em_input_folderAcl').checked = false;
597    Element('em_input_readCalendar').checked = false;
598    Element('em_input_writeCalendar').checked = false;
599    Element('em_input_editCalendar').checked = false;
600    Element('em_input_deleteCalendar').checked = false;
601    Element('em_input_restrictCalendar').checked = false;
602
603    Element('em_input_readExpressoCalendar').checked = false;
604    Element('em_input_writeExpressoCalendar').checked = false;
605    Element('em_input_freebusyExpressoCalendar').checked = false;
606    Element('em_input_deleteExpressoCalendar').checked = false;
607
608    Element('em_input_editCalendar').disabled = true;
609    Element('em_input_deleteCalendar').disabled = true;
610    Element('em_input_restrictCalendar').disabled = true;
611               
612               
613    if(this.ownersExpressoCalendarAcl[user])
614    {
615        if (this.ownersExpressoCalendarAcl[user].indexOf('r') >= 0)
616        {
617            Element('em_input_readExpressoCalendar').checked = true;
618            Element('em_input_writeExpressoCalendar').checked = false;
619            Element('em_input_freebusyExpressoCalendar').checked = false;
620            Element('em_input_deleteExpressoCalendar').checked = false;
621                           
622        }
623        if (this.ownersExpressoCalendarAcl[user].indexOf('w') >= 0)
624        {
625            Element('em_input_writeExpressoCalendar').checked = true;
626        }
627        if (this.ownersExpressoCalendarAcl[user].indexOf('d') >= 0)
628        {
629            Element('em_input_deleteExpressoCalendar').checked = true;
630        }
631        if (this.ownersExpressoCalendarAcl[user].indexOf('b') >= 0)
632        {
633            Element('em_input_freebusyExpressoCalendar').checked = true;
634        }
635    }
636               
637               
638    if(this.ownersCalendarAcl[user])
639    {
640        if (this.ownersCalendarAcl[user].indexOf('1-',0) >= 0)
641        {
642            Element('em_input_readCalendar').checked = true;
643            Element('em_input_editCalendar').disabled = false;
644            Element('em_input_deleteCalendar').disabled = false;
645            Element('em_input_restrictCalendar').disabled = false;
646                           
647            Element('em_input_readExpressoCalendar').checked = true;
648            Element('em_input_writeExpressoCalendar').checked = false;
649            Element('em_input_freebusyExpressoCalendar').checked = false;
650            Element('em_input_deleteExpressoCalendar').checked = false;
651                           
652        }
653        if (this.ownersCalendarAcl[user].indexOf('2-',0) >= 0)
654        {
655            Element('em_input_writeCalendar').checked = true;
656            Element('em_input_writeExpressoCalendar').checked = true;
657        }
658        if (this.ownersCalendarAcl[user].indexOf('4-',0) >= 0)
659        {
660            Element('em_input_editCalendar').checked = true;
661            Element('em_input_writeExpressoCalendar').checked = true;
662        }
663        if (this.ownersCalendarAcl[user].indexOf('8-',0) >= 0)
664        {
665            Element('em_input_deleteCalendar').checked = true;
666            Element('em_input_deleteExpressoCalendar').checked = true;
667        }
668        if (this.ownersCalendarAcl[user].indexOf('16-',0) >= 0)
669        {
670            Element('em_input_restrictCalendar').checked = true;
671        }
672    }
673
674    if(this.ownersAcl[user])
675    {
676        if ( this.ownersAcl[user].indexOf('lrs',0) >= 0)
677        {
678            Element('em_input_sendAcl').disabled = false;
679            Element('em_input_readAcl').checked = true;
680        }
681        else
682            Element('em_input_sendAcl').disabled = true;
683                       
684        if ( this.ownersAcl[user].indexOf('d',0) >= 0)
685        {
686            Element('em_input_deleteAcl').checked = true;
687        }
688        if ( this.ownersAcl[user].indexOf('wi',0) >= 0)
689        {
690            Element('em_input_writeAcl').checked = true;
691        }               
692        if (this.ownersAcl[user].indexOf('a',0) >= 0)
693        {
694            Element('em_input_sendAcl').disabled = false;
695            Element('em_input_sendAcl').checked = true;
696        }
697        if ( this.ownersAcl[user].indexOf('p',0) >= 0)
698        {
699            Element('em_input_saveAcl').disabled = false;
700            Element('em_input_saveAcl').checked = true;
701        }
702        if ( this.ownersAcl[user].indexOf('c',0) >= 0)
703        {
704            Element('em_input_folderAcl').checked = true;
705        }
706        if( Element('em_input_writeAcl').checked && Element('em_input_sendAcl').checked ){
707            Element('em_input_saveAcl').disabled = false;
708        } else Element('em_input_saveAcl').disabled = true;
709    }
710}
711       
712cShareMailbox.prototype.setaclfromuser = function()
713{
714    var acl             = '';
715    var select  = Element('ea_select_owners');
716
717    if(select.selectedIndex == "-1"){
718        alert("Selecione antes um usuario!");
719        return false;
720    }
721               
722    for(var k = 0; k < select.options.length; k ++ )
723    {
724        if(select.options[k].selected !== true ) continue;
725                   
726                   
727        acl = '';
728        var user = select.options[k].value;
729               
730        if (Element('em_input_readAcl').checked) {
731            Element('em_input_sendAcl').disabled = false;
732            acl = 'lrs';
733        }
734        else{
735            Element('em_input_sendAcl').disabled = true;
736            Element('em_input_sendAcl').checked = false;
737        }
738                               
739        if (Element('em_input_deleteAcl').checked)
740            acl += 'd';
741
742        if (Element('em_input_writeAcl').checked)
743            acl += 'wi';
744
745        if (Element('em_input_sendAcl').checked)
746            acl += 'a';
747               
748        if (Element('em_input_folderAcl').checked)
749            acl += 'c';
750                               
751        if (Element('em_input_sendAcl').checked && Element('em_input_writeAcl').checked){
752            Element('em_input_saveAcl').disabled = false;                               
753        } else {
754            Element('em_input_saveAcl').disabled = true;
755            Element('em_input_saveAcl').checked = false;
756        }
757        if (Element('em_input_saveAcl').checked)
758            acl += 'p';
759                       
760        this.ownersAcl[user] = acl;             
761    }
762}
763
764cShareMailbox.prototype.setCalendaraclfromuser = function()
765{
766    var acl             = '';
767    var select  = Element('ea_select_owners');
768               
769    sharemailbox.ownersExpressoCalendarAcl = false;
770
771    if(select.selectedIndex == "-1"){
772        alert("Selecione antes um usuario!");
773        return false;
774    }
775               
776    for(var k = 0; k < select.options.length; k ++ )
777    {
778        if(select.options[k].selected !== true ) continue;
779                   
780        acl = '';
781        var user = select.options[k].value;
782
783        if (Element('em_input_readCalendar').checked)
784        {
785
786            acl += '1-';
787
788            Element('em_input_editCalendar').disabled = false;
789            Element('em_input_deleteCalendar').disabled = false;
790            Element('em_input_restrictCalendar').disabled = false;
791                       
792            if (Element('em_input_editCalendar').checked)
793                acl += '4-';
794
795            if (Element('em_input_deleteCalendar').checked )
796                acl += '8-';
797
798            if (Element('em_input_restrictCalendar').checked)
799                acl += '16-';
800        }
801        else
802        {
803            Element('em_input_editCalendar').disabled = true;
804            Element('em_input_deleteCalendar').disabled = true;
805            Element('em_input_restrictCalendar').disabled = true;
806            Element('em_input_editCalendar').checked = false;
807            Element('em_input_deleteCalendar').checked = false;
808            Element('em_input_restrictCalendar').checked = false;
809                       
810        }
811
812        if (Element('em_input_writeCalendar').checked || Element('em_input_writeExpressoCalendar').checked)
813            acl += '2-';
814
815
816        this.ownersCalendarAcl[user] = acl;
817    }
818}
819       
820cShareMailbox.prototype.setExpressoCalendaraclfromuser = function()
821{
822    var acl             = '';
823    var select  = Element('ea_select_owners');
824               
825    sharemailbox.ownersCalendarAcl = false;
826
827    if(select.selectedIndex == "-1"){
828        alert("Selecione antes um usuario!");
829        return false;
830    }
831               
832    for(var k = 0; k < select.options.length; k ++ )
833    {
834        if(select.options[k].selected !== true ) continue;
835                   
836        acl = '';
837        var user = select.options[k].value;
838                   
839        if(Element('em_input_freebusyExpressoCalendar').checked)
840        {
841            Element('em_input_writeExpressoCalendar').disabled = true;
842            Element('em_input_deleteExpressoCalendar').disabled = true;
843            Element('em_input_readExpressoCalendar').disabled = true;
844            Element('em_input_writeExpressoCalendar').checked = false;
845            Element('em_input_deleteExpressoCalendar').checked = false;
846            Element('em_input_readExpressoCalendar').checked = false;
847                                             
848                       
849            acl += 'b'
850        }
851        else
852        {
853            Element('em_input_readExpressoCalendar').disabled = false;
854            if (Element('em_input_readExpressoCalendar').checked)
855            {
856                acl += 'r';
857
858                Element('em_input_writeExpressoCalendar').disabled = false;
859                Element('em_input_deleteExpressoCalendar').disabled = false;
860                //Element('em_input_freebusyExpressoCalendar').disabled = false;
861
862                if (Element('em_input_writeExpressoCalendar').checked)
863                    acl += 'w';
864
865                if (Element('em_input_deleteExpressoCalendar').checked)
866                    acl += 'd';
867
868            }
869            else
870            {
871                Element('em_input_writeExpressoCalendar').disabled = true;
872                Element('em_input_deleteExpressoCalendar').disabled = true;
873                //Element('em_input_freebusyExpressoCalendar').disabled = true;
874                Element('em_input_writeExpressoCalendar').checked = false;
875                Element('em_input_deleteExpressoCalendar').checked = false;
876            // Element('em_input_freebusyExpressoCalendar').checked = false;
877            }
878
879        }
880                   
881        this.ownersExpressoCalendarAcl[user] = acl;
882    }
883}
884               
885cShareMailbox.prototype.add_user = function()
886{
887    var select_available_users = document.getElementById('em_select_available_users');
888    var select_users = document.getElementById('ea_select_owners');
889
890    var count_available_users = select_available_users.length;
891    var count_users = select_users.options.length;
892    var new_options = '';
893       
894    for (i = 0 ; i < count_available_users ; i++)
895    {
896        if (select_available_users.options[i].selected)
897        {
898            if(document.all)
899            {
900                if ( (select_users.innerHTML.indexOf('value='+select_available_users.options[i].value)) == '-1' )
901                {
902                    new_options +=  '<option value='
903                    + select_available_users.options[i].value
904                    + '>'
905                    + select_available_users.options[i].text
906                    + '</option>';
907                }
908            }
909            else
910            {
911                if ( (select_users.innerHTML.indexOf('value="'+select_available_users.options[i].value+'"')) == '-1' )
912                {
913                    new_options +=  '<option value='
914                    + select_available_users.options[i].value
915                    + '>'
916                    + select_available_users.options[i].text
917                    + '</option>';
918                }
919            }
920        }
921    }
922
923    if (new_options != '')
924    {
925        select_users.innerHTML = '#' + new_options + select_users.innerHTML;
926        select_users.outerHTML = select_users.outerHTML;
927                       
928    }
929}
930
931cShareMailbox.prototype.remove_user = function()
932{
933    select_users = document.getElementById('ea_select_owners');
934       
935    for(var i = 0;i < select_users.options.length; i++)
936        if(select_users.options[i].selected)
937        {
938                       
939            var user = select_users.options[i].value;
940            this.ownersCalendarAcl[user] = '';
941            select_users.options[i--] = null;
942                               
943        }
944               
945    Element('em_input_readAcl').checked = false;               
946    Element('em_input_deleteAcl').checked = false;
947    Element('em_input_writeAcl').checked = false;
948    Element('em_input_sendAcl').checked = false;
949    Element('em_input_saveAcl').checked = false;
950    Element('em_input_folderAcl').checked = false;
951               
952    Element('em_input_readCalendar').checked = false;
953    Element('em_input_writeCalendar').checked = false;
954    Element('em_input_editCalendar').checked = false;
955    Element('em_input_deleteCalendar').checked = false;
956    Element('em_input_restrictCalendar').checked = false;
957               
958    Element('em_input_readExpressoCalendar').disabled = true;
959    Element('em_input_writeExpressoCalendar').disabled = true;
960    Element('em_input_deleteExpressoCalendar').disabled = true;
961    Element('em_input_readExpressoCalendar').disabled = true;
962}
963       
964       
965/* Build the Object */
966var sharemailbox;
967sharemailbox = new cShareMailbox();
Note: See TracBrowser for help on using the repository browser.