Ignore:
Timestamp:
07/23/12 14:28:41 (12 years ago)
Author:
cristiano
Message:

Ticket #2978 - Dificuldade no mapeamento de ACLs para ações de pastas compartilhadas

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/expressoMail1_2/js/sharemailbox.js

    r6551 r6848  
    22        { 
    33                this.xtools             = new xtools('../expressoMail1_2/templates/'); 
     4 
     5                var users; 
    46        } 
    57 
     
    3335        cShareMailbox.prototype.getaclfromuser = function(user) 
    3436        { 
    35                 var handler_getaclfromuser = function(data) 
    36                 { 
    37                         Element('em_input_readAcl').checked             = false; 
    38                         Element('em_input_deleteAcl').checked   = false; 
    39                         Element('em_input_writeAcl').checked    = false; 
    40                         Element('em_input_sendAcl').checked             = false; 
    41                          
    42             Element('em_input_deleteAcl').disabled      = true; 
    43             Element('em_input_writeAcl').disabled       = true; 
    44                          
    45                         if (data[user].indexOf('lrs',0) >= 0) 
    46                         { 
    47                                 Element('em_input_sendAcl').disabled = false; 
    48                                 Element('em_input_deleteAcl').disabled = false; 
    49                 Element('em_input_writeAcl').disabled = false ; 
    50                                 Element('em_input_readAcl').checked = true; 
    51                         } 
    52                         else 
    53                         { 
    54                                 Element('em_input_sendAcl').disabled = true; 
    55                         } 
    56                          
    57                         if (data[user].indexOf('d',0) >= 0) 
    58                         { 
    59                                 Element('em_input_deleteAcl').checked = true; 
    60                                 Element('em_input_deleteAcl').disabled = false; 
    61                         } 
    62                          
    63                         if (data[user].indexOf('w',0) >= 0) 
    64                         { 
    65                                 Element('em_input_writeAcl').checked = true; 
    66                 Element('em_input_writeAcl').disabled = false 
    67                         } 
    68                          
    69                         if (data[user] != "false" && data[user].indexOf('p',0) >= 0) 
    70                         { 
    71                                 Element('em_input_sendAcl').disabled = false; 
    72                                 Element('em_input_sendAcl').checked = true; 
    73                         }                        
    74  
    75                 } 
    76                  
    77                 cExecute ("$this.imap_functions.getaclfromuser&user="+user, handler_getaclfromuser); 
     37 
     38                Element('em_input_readAcl').checked             = false; 
     39                Element('em_input_deleteAcl').checked   = false; 
     40                Element('em_input_writeAcl').checked    = false; 
     41                Element('em_input_sendAcl').checked             = false; 
     42                 
     43            Element('em_input_deleteAcl').disabled      = true; 
     44            Element('em_input_writeAcl').disabled       = true; 
     45                 
     46                if ((this.users[user].acls.indexOf('l',0) >= 0) && 
     47                        (this.users[user].acls.indexOf('r',0) >= 0) && 
     48                        (this.users[user].acls.indexOf('s',0) >= 0) ) 
     49                { 
     50                        Element('em_input_sendAcl').disabled = false; 
     51                        Element('em_input_deleteAcl').disabled = false; 
     52                Element('em_input_writeAcl').disabled = false ; 
     53                        Element('em_input_readAcl').checked = true; 
     54                } 
     55                else 
     56                        Element('em_input_sendAcl').disabled = true; 
     57                 
     58                 
     59                if ((this.users[user].acls.indexOf('x',0) >= 0) && 
     60                        (this.users[user].acls.indexOf('t',0) >= 0) && 
     61                        (this.users[user].acls.indexOf('e',0) >= 0) ) 
     62                { 
     63                        Element('em_input_deleteAcl').checked = true; 
     64                        Element('em_input_deleteAcl').disabled = false; 
     65                } 
     66                 
     67                if ((this.users[user].acls.indexOf('w',0) >= 0) && 
     68                        (this.users[user].acls.indexOf('i',0) >= 0) && 
     69                        (this.users[user].acls.indexOf('k',0) >= 0) ) 
     70                { 
     71                        Element('em_input_writeAcl').checked = true; 
     72                Element('em_input_writeAcl').disabled = false 
     73                } 
     74                 
     75                if (this.users[user].acls != "false" && this.users[user].acls.indexOf('p',0) >= 0) 
     76                { 
     77                        Element('em_input_sendAcl').disabled = false; 
     78                        Element('em_input_sendAcl').checked = true; 
     79                }                        
    7880        } 
    7981         
     
    106108            Element('em_input_writeAcl').disabled       = true; 
    107109            Element('em_input_writeAcl').checked        = false; 
    108                          
    109110                } 
    110111                                 
    111112                if (Element('em_input_deleteAcl').checked) 
    112                         acl += 'ida'; 
     113                        acl += 'xte'; 
    113114 
    114115                if (Element('em_input_writeAcl').checked) { 
    115                         acl += 'wc';                     
     116                        acl += 'wik';                    
    116117                }                
    117118                if (Element('em_input_sendAcl').checked){ 
    118                         acl += 'pa';                     
    119                 } 
    120                  
    121                 var handler_setaclfromuser = function(data) { 
    122                         if (!data) 
    123                                 alert(data);     
    124                         return true; 
    125                 } 
    126                 cExecute ("$this.imap_functions.setaclfromuser&user="+user+"&acl="+acl, handler_setaclfromuser); 
     119                        acl += 'p';                      
     120                } 
     121 
     122                this.users[user].acls = acl; 
    127123        } 
    128124         
     
    172168                                                                        click: function() 
    173169                                                                        { 
    174                                                                                 $(this).dialog("destroy"); 
    175                                                                                 div.removeChild(div.firstChild);         
     170                                                                                $(div).dialog("close"); 
    176171                                                                        }, 
    177172                                                                        style: "margin-top: -2.1em"  
     
    180175                                                                        text: get_lang("Save"), 
    181176                                                                        click: function() 
    182                                                                         { 
    183                                                                                 // Needed select all options from select 
    184                                                                                 var users_setacl = new Array(); 
    185                                                                                 var select_users = Element('em_select_sharefolders_users'); 
    186  
    187                                                                                 for(var i = 0; i < select_users.options.length; i++) 
    188                                                                                 { 
    189                                                                                         users_setacl[i] = select_users.options[i].value; 
    190                                                                                 } 
    191                                                                                 var attributes = connector.serialize(users_setacl); 
    192                                                                                  
    193                                                                                 var handler_save = function(data) 
    194                                                                                 { 
    195                                                                                         if (data) 
    196                                                                                         { 
    197                                                                                                 var sharedFoldersUsers = document.getElementById('em_select_sharefolders_users'); 
    198                                                                                                  
    199                                                                                                 for( var i = 0;i < sharedFoldersUsers.options.length; i++ ) 
    200                                                                                                 { 
    201                                                                                                         if( sharedFoldersUsers.options[i].selected ) 
    202                                                                                                         { 
    203                                                                                                                 var value       = sharedFoldersUsers.options[i].value; 
    204                                                                                                                 var text        = sharedFoldersUsers.options[i].text; 
    205                                                                                                                 sharedFoldersUsers.options[i].parentNode.removeChild(sharedFoldersUsers.options[i]); 
    206                                                                                                                 sharedFoldersUsers.options[sharedFoldersUsers.options.length] = new Option( text, value, false, false); 
    207                                                                                                         } 
    208                                                                                                 } 
    209                                                                                                  
    210                                                                                                 Element('em_input_readAcl').checked             = false; 
    211                                                                                                 Element('em_input_deleteAcl').checked   = false; 
    212                                                                                                 Element('em_input_writeAcl').checked    = false; 
    213                                                                                                 Element('em_input_sendAcl').checked             = false; 
    214                                                                                                  
    215                                                                                     Element('em_input_deleteAcl').disabled      = true; 
    216                                                                                     Element('em_input_writeAcl').disabled       = true; 
    217                                                                                                 Element('em_input_sendAcl').disabled    = true; 
    218  
    219                                                                                                 //$("#sharemailbox").empty(); 
    220                                                                                                 //$("#sharemailbox").dialog("destroy"); 
    221                                                                                                 $("#sharemailbox").parents().find(".ui-icon-closethick").trigger("click"); 
    222                                                                                                  
    223                                                                                                 write_msg(get_lang('Shared options saved with success')); 
    224  
    225                                                                                         } 
    226                                                                                 } 
    227  
    228                                                                                 cExecute ("$this.imap_functions.setacl", handler_save, 'users='+attributes); 
    229                                                                                  
     177                                                                        {                                                                        
     178                                                                                $.ajax({ 
     179                                                                                                  url: 'controller.php?' + $.param( { 
     180                                                                                                                                          action: '$this.imap_functions.setacl', 
     181                                                                                                                                      acls: connector.serialize(sharemailbox.users)}  
     182                                                                                                                                      ), 
     183                                                                                                  success: function( data ){ 
     184                                                                                                      data = connector.unserialize( data ); 
     185                                                                                                       
     186                                                                                                      if( data ) 
     187                                                                                                          { 
     188                                                                                                                write_msg(get_lang('Shared options saved with success')); 
     189                                                                                                                $(div).dialog("close"); 
     190                                 
     191                                                                                                          } 
     192                                                                                                  }, 
     193                                                                                                  beforeSend: function( jqXHR, settings ){ 
     194                                                                                                        connector.showProgressBar(); 
     195                                                                                                  }, 
     196                                                                                                  complete: function( jqXHR, settings ){ 
     197                                                                                                        connector.hideProgressBar(); 
     198                                                                                                  } 
     199 
     200                                                                                           }); 
     201 
    230202                                                                        }, 
    231203                                                                        style: "margin-top: -2.1em"  
     
    267239 
    268240                var selectSharedFolders = Element('em_select_sharefolders_users'); 
    269                  
    270                 for( var i in optionsData ) 
    271                 { 
    272                         selectSharedFolders.options[selectSharedFolders.options.length] = new Option(optionsData[i].cn, optionsData[i].uid, false, false); 
    273                 } 
     241                this.users = optionsData; 
     242                for( var i in optionsData )      
     243                        selectSharedFolders.options[selectSharedFolders.options.length] = new Option(optionsData[i].cn, i, false, false); 
     244                 
    274245        } 
    275246         
     
    331302                                        } 
    332303                                } 
     304                                var newobject = new Object; 
     305                                newobject.cn = select_available_users.options[i].text; 
     306                                newobject.acls = ""; 
     307                                this.users[select_available_users.options[i].value] = newobject; 
    333308                        } 
    334309                } 
     
    339314                        select_users.outerHTML = select_users.outerHTML; 
    340315                } 
     316 
     317 
     318 
    341319        } 
    342320 
     
    349327                var user = select.options[select.selectedIndex].value; 
    350328                 
    351                 var handler_setaclfromuser = function(data) { 
    352                         if (!data) 
    353                                 alert(data);     
    354                         return true; 
    355                 } 
    356                  
    357                 cExecute ("$this.imap_functions.setaclfromuser&user="+user+"&acl="+acl, handler_setaclfromuser); 
    358            
    359          
    360                 for( var i = 0 ; i < select_users.options.length; i++ ) 
    361                 { 
    362                         if( select_users.options[i].selected ) 
    363                         { 
    364                                 select_users.options[i--] = null; 
    365                         } 
    366                 } 
    367                  
     329                delete this.users[user]; 
     330 
     331                select.options[select.selectedIndex] = null; 
     332 
    368333                Element('em_input_readAcl').checked = false; 
    369334                Element('em_input_deleteAcl').checked = false; 
    370335                Element('em_input_writeAcl').checked = false; 
    371336                Element('em_input_sendAcl').checked = false; 
     337 
    372338         
    373339        } 
Note: See TracChangeset for help on using the changeset viewer.