Ignore:
Timestamp:
03/23/12 16:39:10 (12 years ago)
Author:
acoutinho
Message:

Ticket #2434 - Implementada funcionalidade de criacao de agenda para contas compartilhadas e imposicao de agendas

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/expressoAdmin1_2/js/jscode/shared_accounts.js

    r5589 r5804  
    168168                Element('em_input_saveAcl').checked = false; 
    169169                Element('em_input_folderAcl').checked = false; 
     170                 
    170171                Element('em_input_readCalendar').checked = false; 
    171172                Element('em_input_writeCalendar').checked = false; 
     
    173174                Element('em_input_deleteCalendar').checked = false; 
    174175                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                 
    175183        Element('em_input_sendAcl').disabled = true; 
    176184        select_owners = Element('ea_select_owners'); 
     
    182190{ 
    183191        select_owners = Element('ea_select_owners'); 
     192         
     193        var user = ''; 
    184194        for(var i = 0;i < select_owners.options.length; i++) 
    185195                if(select_owners.options[i].selected){ 
    186                         var user = select_owners.options[i].value; 
     196                        user = select_owners.options[i].value; 
    187197                        delete sharemailbox.ownersAcl[user]; 
    188198                       sharemailbox.ownersCalendarAcl[user] = ''; 
     
    193203       if(select_owners.options.length > 0 ){ 
    194204            select_owners.options[0].selected = true; 
    195             var user = select_owners.options[0].value; 
     205            user = select_owners.options[0].value; 
    196206            sharemailbox.getaclfromuser(user); 
    197207       } 
     208        
     209       if(sharemailbox.ownersExpressoCalendarAcl){ 
     210 
     211            delete sharemailbox.ownersExpressoCalendarAcl[user]; 
     212 
     213            var sharedUser = DataLayer.get('user', {filter: ['=','mail',$('#mail').val()]}); 
     214            var signature = DataLayer.get('calendarSignature', {filter: ['=','user', sharedUser[0].id]}); 
     215 
     216            var usuario = DataLayer.get('user', {filter: ['AND', ['=','uid',user], ['*','mail',user] ]}); 
     217            var calendarPermission = DataLayer.get('calendarToPermission', {filter: ['AND', ['=','calendar',signature[0].calendar], ['=','user',usuario[0].id] ] }); 
     218 
     219            var signatureUser = DataLayer.get('calendarSignature', {filter: ['AND', ['=','calendar', signature[0].calendar], ['=','user', usuario[0].id ] ]}); 
     220 
     221            DataLayer.remove('calendarSignature', signatureUser[0].id); 
     222            DataLayer.remove('calendarToPermission', calendarPermission[0].id); 
     223 
     224        } 
     225        
     226        
     227        
    198228} 
    199229 
     
    261291            Element('desc').value = data.description; 
    262292            //Necessario, pois o IE6 tem um bug que não exibe as novas opções se o innerHTML estava vazio 
    263             Element('ea_select_owners').innerHTML = '&nbsp;' + data.owners_options; 
    264             Element('ea_select_owners').outerHTML = Element('ea_select_owners').outerHTML; 
    265  
     293             
     294            if(data.owners_options){ 
     295                Element('ea_select_owners').innerHTML = '&nbsp;' + data.owners_options; 
     296                Element('ea_select_owners').outerHTML = Element('ea_select_owners').outerHTML; 
     297            } 
    266298            Element('display_empty_inbox').style.display = data.display_empty_inbox; 
    267299            if( data.allow_edit_shared_account_acl == "0"){ 
     
    283315                        sharemailbox.ownersCalendarAcl = new Array(); 
    284316            if( data.owners && data.owners != "undefined" && data.owners_acl != "undefined" ){  
    285                                 for (i=0; i<data.owners.length; i++){ 
    286                                                 sharemailbox.ownersAcl[ data.owners[i] ] = data.owners_acl[i];   
    287                                                 sharemailbox.ownersCalendarAcl[ data.owners[i] ] = data.owners_calendar_acl[i]; 
    288                                 } 
     317                for (i=0; i<data.owners.length; i++){ 
     318                                sharemailbox.ownersAcl[ data.owners[i] ] = data.owners_acl[i];   
     319                                sharemailbox.ownersCalendarAcl[ data.owners[i] ] = data.owners_calendar_acl[i]; 
     320                } 
    289321            } 
     322 
     323            //new API compatibility 
     324            var signature = DataLayer.get('calendarSignature', {filter: ['=','user', data.uidnumber]}); 
     325            if(!!signature){ 
     326                sharemailbox.currentPemissions[data.uidnumber] = true; 
     327                var calendarPermission = DataLayer.get('calendarToPermission:detail', {filter: ['=','calendar',signature[0].calendar], criteria:{deepness: 2}}); 
     328                if(calendarPermission){ 
     329                    var owners_options = ''; 
     330                    for (i=0; i < calendarPermission.length; i++){ 
     331                        sharemailbox.ownersExpressoCalendarAcl[ calendarPermission[i].user.uid ] = calendarPermission[i].aclValues; 
     332                        owners_options += '<option value='+calendarPermission[i].user.uid+'>'+calendarPermission[i].user.name+'</option>' 
     333                        sharemailbox.currentPemissions[calendarPermission[i].user.uid] = calendarPermission[i].id; 
     334                    } 
     335 
     336 
     337                    delete sharemailbox.currentPemissions[undefined]; 
     338                    delete sharemailbox.currentPemissions[undefined]; 
     339 
     340                    Element('ea_select_owners').innerHTML = '&nbsp;' + owners_options; 
     341                    Element('ea_select_owners').outerHTML = Element('ea_select_owners').outerHTML; 
     342                     
     343                } 
     344         
     345            } 
     346             
     347             
    290348                } 
    291349                else 
     
    304362        else   form = document.forms["shared_accounts_form"]; 
    305363         
    306          hidden_owners_calendar_acl = Element('owners_calendar_acls'); 
     364        hidden_owners_calendar_acl = Element('owners_calendar_acls'); 
    307365        hidden_owners_acl = Element('owners_acls'); 
    308366        select_owners = Element('ea_select_owners'); 
    309367        for(var i = 0;i < select_owners.options.length; i++){            
    310                 var user = select_owners.options[i].value;                 
    311                 select_owners.options[i].value = user; 
    312                 } 
     368            var user = select_owners.options[i].value;                 
     369            select_owners.options[i].value = user; 
     370        } 
    313371        hidden_owners_acl.value =  admin_connector.serialize(sharemailbox.ownersAcl); 
     372         
     373        if(sharemailbox.ownersExpressoCalendarAcl){ 
     374             
     375            var calback = function(){ 
     376                var sharedUser = DataLayer.get('user', {filter: ['=','mail',$('#mail').val()]}); 
     377 
     378                if(!!sharedUser && $.isArray(sharedUser)) 
     379                    sharedUser = sharedUser[0]; 
     380 
     381                if(!!!sharemailbox.currentPemissions[sharedUser.id]) 
     382                    DataLayer.put('calendarSignature', { 
     383                        user: sharedUser.id, 
     384                        calendar:  { 
     385                            timezone: 'America/Sao_Paulo', 
     386                            name: $('#cn').val(), 
     387                            location : $('#cn').val(), 
     388                            description : $('#cn').val() 
     389                            }, 
     390                        isOwner:  '1', 
     391                        fontColor:  '000000', 
     392                        backgroundColor: 'f1efac', 
     393                        borderColor: 'eddb21' 
     394                    }); 
     395 
     396                var returns = function(data){ 
     397                     
     398                     
     399                    var calendar = ''; 
     400                     
     401                    if(data){ 
     402                        for(var i in data) 
     403                            if(i.indexOf('calendar:') >= 0) 
     404                                calendar = data[i].id; 
     405                    }else{ 
     406                        calendar = DataLayer.get('calendarSignature', {filter: ['=','user', sharedUser.id]}); 
     407                        calendar = calendar[0].calendar; 
     408                    } 
     409                     
     410                $.each(sharemailbox.ownersExpressoCalendarAcl, function(user, acl) { 
     411 
     412                        var usuario = DataLayer.get('user', {filter: ['AND', ['=','uid',user], ['*','mail',user] ]}); 
     413 
     414                        if($.isArray(usuario)) 
     415                            usuario = usuario[0]; 
     416 
     417                         
     418                        DataLayer.put('calendarToPermission', DataLayer.merge({ 
     419                            user:  usuario.id, 
     420                            type: '0', 
     421                            acl: acl, 
     422                            calendar: calendar 
     423                        }, !!sharemailbox.currentPemissions[usuario.uid] ? {id: sharemailbox.currentPemissions[usuario.uid]} : {})); 
     424                         
     425                        if(!!!sharemailbox.currentPemissions[usuario.uid]) 
     426                            DataLayer.put('calendarSignature', { 
     427                                user: usuario.id, 
     428                                calendar:  calendar, 
     429                                isOwner:  '0', 
     430                                fontColor:  '000000', 
     431                                backgroundColor: 'f1efac', 
     432                                borderColor: 'eddb21' 
     433                            }); 
     434 
     435                    }) 
     436                    DataLayer.commit();   
     437                }; 
     438                if(!!sharemailbox.currentPemissions[sharedUser.id]) 
     439                    returns(false); 
     440                else 
     441                    DataLayer.commit(false, false, returns); 
     442            } 
     443        } 
    314444        hidden_owners_calendar_acl.value =  admin_connector.serialize(sharemailbox.ownersCalendarAcl); 
    315445        cExecuteForm ("$this.shared_accounts.save", form, handler_save_shared_accounts); 
    316446        get_shared_accounts(Element('ea_shared_account_search').value); 
     447        calback(); 
    317448} 
    318449 
     
    364495                this.ownersAcl = new Array(); 
    365496                this.ownersCalendarAcl = new Array(); 
     497                this.ownersExpressoCalendarAcl = {}; 
     498                this.currentPemissions = {}; 
    366499        } 
    367500 
     
    409542                Element('em_input_restrictCalendar').checked = false; 
    410543 
     544                Element('em_input_readExpressoCalendar').checked = false; 
     545                Element('em_input_writeExpressoCalendar').checked = false; 
     546                Element('em_input_freebusyExpressoCalendar').checked = false; 
     547                Element('em_input_deleteExpressoCalendar').checked = false; 
     548 
    411549                Element('em_input_editCalendar').disabled = true; 
    412550                Element('em_input_deleteCalendar').disabled = true; 
    413551                Element('em_input_restrictCalendar').disabled = true; 
     552                 
     553                 
     554                if(this.ownersExpressoCalendarAcl[user]) 
     555                { 
     556                    if (this.ownersExpressoCalendarAcl[user].indexOf('r') >= 0) 
     557                    { 
     558                            Element('em_input_readExpressoCalendar').checked = true; 
     559                            Element('em_input_writeExpressoCalendar').checked = false; 
     560                            Element('em_input_freebusyExpressoCalendar').checked = false; 
     561                            Element('em_input_deleteExpressoCalendar').checked = false; 
     562                             
     563                    } 
     564                    if (this.ownersExpressoCalendarAcl[user].indexOf('w') >= 0) 
     565                    { 
     566                            Element('em_input_writeExpressoCalendar').checked = true; 
     567                    } 
     568                    if (this.ownersExpressoCalendarAcl[user].indexOf('d') >= 0) 
     569                    { 
     570                            Element('em_input_deleteExpressoCalendar').checked = true; 
     571                    } 
     572                    if (this.ownersExpressoCalendarAcl[user].indexOf('b') >= 0) 
     573                    { 
     574                            Element('em_input_freebusyExpressoCalendar').checked = true; 
     575                    } 
     576                } 
     577                 
    414578                 
    415579                if(this.ownersCalendarAcl[user]) 
     
    418582                    { 
    419583                            Element('em_input_readCalendar').checked = true; 
    420  
    421584                            Element('em_input_editCalendar').disabled = false; 
    422585                            Element('em_input_deleteCalendar').disabled = false; 
    423586                            Element('em_input_restrictCalendar').disabled = false; 
     587                             
     588                            Element('em_input_readExpressoCalendar').checked = true; 
     589                            Element('em_input_writeExpressoCalendar').checked = false; 
     590                            Element('em_input_freebusyExpressoCalendar').checked = false; 
     591                            Element('em_input_deleteExpressoCalendar').checked = false; 
     592                             
    424593                    } 
    425594                    if (this.ownersCalendarAcl[user].indexOf('2-',0) >= 0) 
    426595                    { 
    427596                            Element('em_input_writeCalendar').checked = true; 
     597                            Element('em_input_writeExpressoCalendar').checked = true; 
    428598                    } 
    429599                    if (this.ownersCalendarAcl[user].indexOf('4-',0) >= 0) 
    430600                    { 
    431601                            Element('em_input_editCalendar').checked = true; 
     602                            Element('em_input_writeExpressoCalendar').checked = true; 
    432603                    } 
    433604                    if (this.ownersCalendarAcl[user].indexOf('8-',0) >= 0) 
    434605                    { 
    435606                            Element('em_input_deleteCalendar').checked = true; 
     607                            Element('em_input_deleteExpressoCalendar').checked = true; 
    436608                    } 
    437609                    if (this.ownersCalendarAcl[user].indexOf('16-',0) >= 0) 
     
    535707                var acl         = ''; 
    536708                var select      = Element('ea_select_owners'); 
     709                 
     710                sharemailbox.ownersExpressoCalendarAcl = false; 
    537711 
    538712                if(select.selectedIndex == "-1"){ 
     
    556730                        Element('em_input_deleteCalendar').disabled = false; 
    557731                        Element('em_input_restrictCalendar').disabled = false; 
    558  
     732                         
    559733                        if (Element('em_input_editCalendar').checked) 
    560734                                acl += '4-'; 
    561735 
    562                         if (Element('em_input_deleteCalendar').checked) 
     736                        if (Element('em_input_deleteCalendar').checked ) 
    563737                                acl += '8-'; 
    564738 
     
    574748                        Element('em_input_deleteCalendar').checked = false; 
    575749                        Element('em_input_restrictCalendar').checked = false; 
    576                     } 
    577  
    578                     if (Element('em_input_writeCalendar').checked) 
     750                         
     751                    } 
     752 
     753                    if (Element('em_input_writeCalendar').checked || Element('em_input_writeExpressoCalendar').checked) 
    579754                            acl += '2-'; 
    580755 
    581756 
    582757                    this.ownersCalendarAcl[user] = acl; 
     758                } 
     759        } 
     760         
     761        cShareMailbox.prototype.setExpressoCalendaraclfromuser = function() 
     762        { 
     763                var acl         = ''; 
     764                var select      = Element('ea_select_owners'); 
     765                 
     766                sharemailbox.ownersCalendarAcl = false; 
     767 
     768                if(select.selectedIndex == "-1"){ 
     769                        alert("Selecione antes um usuario!"); 
     770                        return false; 
     771                } 
     772                 
     773                for(var k = 0; k < select.options.length; k ++ ) 
     774                { 
     775                    if(select.options[k].selected !== true ) continue; 
     776                     
     777                    acl = ''; 
     778                    var user = select.options[k].value; 
     779                     
     780                    if(Element('em_input_freebusyExpressoCalendar').checked) 
     781                    { 
     782                        Element('em_input_writeExpressoCalendar').disabled = true; 
     783                        Element('em_input_deleteExpressoCalendar').disabled = true; 
     784                        Element('em_input_readExpressoCalendar').disabled = true; 
     785                        Element('em_input_writeExpressoCalendar').checked = false; 
     786                        Element('em_input_deleteExpressoCalendar').checked = false; 
     787                        Element('em_input_readExpressoCalendar').checked = false; 
     788                                               
     789                         
     790                        acl += 'b' 
     791                    } 
     792                    else 
     793                    { 
     794                        Element('em_input_readExpressoCalendar').disabled = false; 
     795                        if (Element('em_input_readExpressoCalendar').checked) 
     796                        { 
     797                            acl += 'r'; 
     798 
     799                            Element('em_input_writeExpressoCalendar').disabled = false; 
     800                            Element('em_input_deleteExpressoCalendar').disabled = false; 
     801                            //Element('em_input_freebusyExpressoCalendar').disabled = false; 
     802 
     803                            if (Element('em_input_writeExpressoCalendar').checked) 
     804                                    acl += 'w'; 
     805 
     806                            if (Element('em_input_deleteExpressoCalendar').checked) 
     807                                    acl += 'd'; 
     808 
     809                        } 
     810                        else 
     811                        { 
     812                            Element('em_input_writeExpressoCalendar').disabled = true; 
     813                            Element('em_input_deleteExpressoCalendar').disabled = true; 
     814                            //Element('em_input_freebusyExpressoCalendar').disabled = true; 
     815                            Element('em_input_writeExpressoCalendar').checked = false; 
     816                            Element('em_input_deleteExpressoCalendar').checked = false; 
     817                           // Element('em_input_freebusyExpressoCalendar').checked = false; 
     818                        } 
     819 
     820                    } 
     821                     
     822                    this.ownersExpressoCalendarAcl[user] = acl; 
    583823                } 
    584824        } 
     
    650890                Element('em_input_saveAcl').checked = false; 
    651891                Element('em_input_folderAcl').checked = false; 
     892                 
    652893                Element('em_input_readCalendar').checked = false; 
    653894                Element('em_input_writeCalendar').checked = false; 
     
    655896                Element('em_input_deleteCalendar').checked = false; 
    656897                Element('em_input_restrictCalendar').checked = false; 
     898                 
     899                Element('em_input_readExpressoCalendar').disabled = true; 
     900                Element('em_input_writeExpressoCalendar').disabled = true; 
     901                Element('em_input_deleteExpressoCalendar').disabled = true; 
     902                Element('em_input_readExpressoCalendar').disabled = true; 
    657903        } 
    658904         
Note: See TracChangeset for help on using the changeset viewer.