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

Revision 8208, 30.6 KB checked in by angelo, 11 years ago (diff)

Ticket #3472 - Inconsistencias na atribuicao de permissoes de acesso a agenda de contas compartilhadas

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