source: branches/2.4/expressoMail1_2/js/sharemailbox.js @ 6859

Revision 6859, 11.3 KB checked in by eduardow, 12 years ago (diff)

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

  • Property svn:eol-style set to native
  • Property svn:executable set to *
RevLine 
[2]1        function cShareMailbox()
2        {
[5458]3                this.xtools             = new xtools('../expressoMail1_2/templates/');
[6859]4
5        var users;
[2]6        }
7
8        cShareMailbox.prototype.get_available_users = function(context)
9        {
10                var handler_get_available_users = function(data)
11                {
12                        select_available_users = document.getElementById('em_select_available_users');
13               
14                        //Limpa o select
15                        for(var i=0; i<select_available_users.options.length; i++)
16                        {
17                                select_available_users.options[i] = null;
18                                i--;
19                        }
20
21                        if ((data) && (data.length > 0))
22                        {
23                                // Necessario, pois o IE6 tem um bug que retira o primeiro options se o innerHTML estiver vazio.
24                                select_available_users.innerHTML = '#' + data;
25                                select_available_users.outerHTML = select_available_users.outerHTML;
26                       
27                                select_available_users.disabled = false;
28                                select_available_users_clone = document.getElementById('em_select_available_users').cloneNode(true);
29                                document.getElementById('em_input_searchUser').value = '';
30                        }
31                }
32                cExecute ("$this.ldap_functions.get_available_users2&context="+context, handler_get_available_users);
33        }
34
35        cShareMailbox.prototype.getaclfromuser = function(user)
36        {
[6859]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     
42Element('em_input_deleteAcl').disabled      = true;
43Element('em_input_writeAcl').disabled       = true;
44     
45    if ((this.users[user].acls.indexOf('l',0) >= 0) &&
46            (this.users[user].acls.indexOf('r',0) >= 0) &&
47            (this.users[user].acls.indexOf('s',0) >= 0) )
48    {
49            Element('em_input_sendAcl').disabled = false;
50            Element('em_input_deleteAcl').disabled = false;
51    Element('em_input_writeAcl').disabled = false ;
52            Element('em_input_readAcl').checked = true;
53    }
54    else
55            Element('em_input_sendAcl').disabled = true;
56     
57     
58    if ((this.users[user].acls.indexOf('x',0) >= 0) &&
59            (this.users[user].acls.indexOf('t',0) >= 0) &&
60            (this.users[user].acls.indexOf('e',0) >= 0) )
61    {
62            Element('em_input_deleteAcl').checked = true;
63            Element('em_input_deleteAcl').disabled = false;
64    }
65     
66    if ((this.users[user].acls.indexOf('w',0) >= 0) &&
67            (this.users[user].acls.indexOf('i',0) >= 0) &&
68            (this.users[user].acls.indexOf('k',0) >= 0) )
69    {
70            Element('em_input_writeAcl').checked = true;
71    Element('em_input_writeAcl').disabled = false
72    }
73     
74    if (this.users[user].acls != "false" && this.users[user].acls.indexOf('p',0) >= 0)
75    {
76            Element('em_input_sendAcl').disabled = false;
77            Element('em_input_sendAcl').checked = true;
78    }                       
[2]79        }
80       
81        cShareMailbox.prototype.setaclfromuser = function()
82        {
83                var acl         = '';
84                var select      = Element('em_select_sharefolders_users');
85
[5458]86                if( select.selectedIndex == "-1" )
87                {
88                        alert(get_lang("Select a user!"));
[2]89                        return false;
90                }
[5458]91               
[2]92                var user = select.options[select.selectedIndex].value;
93               
[5458]94                if ( Element('em_input_readAcl').checked )
95                {
96                        Element('em_input_sendAcl').disabled    = false;
97                        Element('em_input_deleteAcl').disabled  = false;
98            Element('em_input_writeAcl').disabled       = false;
[2]99                        acl = 'lrs';
100                }
[5458]101                else
102                {
103                        Element('em_input_sendAcl').disabled    = true;
104                        Element('em_input_sendAcl').checked             = false;
105                        Element('em_input_deleteAcl').disabled  = true;
106            Element('em_input_deleteAcl').checked       = false;
107            Element('em_input_writeAcl').disabled       = true;
[6859]108            Element('em_input_writeAcl').checked        = false;             
[2]109                }
110                               
111                if (Element('em_input_deleteAcl').checked)
[6859]112                        acl += 'xte';
[2]113
[1912]114                if (Element('em_input_writeAcl').checked) {
[6859]115                        acl += 'wik';                   
[1913]116                }               
[1912]117                if (Element('em_input_sendAcl').checked){
[6859]118                        acl += 'p';                     
119        }
120
121        this.users[user].acls = acl;
[2]122        }
123       
[5458]124        cShareMailbox.prototype.makeWindow =  function(optionsData)
[2]125        {
[5458]126                var div  = null;
127                var args = null;
128               
129                args =
[2]130                {
[5458]131                        'button_1' : ">>",
132                        'button_2' : "<<",
133                        'Note_This_sharing_will_take_action_on_all_of_your_folders_and_messages' : get_lang('Note: This sharing will take action on all of your folders and messages.'),
134                        'Organization' : get_lang('Organization'),
135                        'Search_user'  : get_lang('Search user'),
136                        'Users'            : get_lang('Users'),                         
137                        'Your_mailbox_is_shared_with' : get_lang('Your mailbox is shared with'),
138                        'Access_right'                  : get_lang('Access right'),
139                        'Read'                                  : get_lang('Read'),
140                        'Exclusion'                             : get_lang('Exclusion'),
141                        'Write'                                 : get_lang('Write'),
142                        'Send'                                  : get_lang('Send'),
143                        'Save'                                  : get_lang('Save'),
144                        'hlp_msg_read_acl'              : get_lang('hlp_msg_read_acl'),
145                        'hlp_msg_delmov_acl'    : get_lang('hlp_msg_delmov_acl'),
146                        'hlp_msg_addcreate_acl' : get_lang('hlp_msg_addcreate_acl'),
147                        'hlp_msg_sendlike_acl'  : get_lang('hlp_msg_sendlike_acl'),
148                        'hlp_msg_savelike_acl'  : get_lang('hlp_msg_savelike_acl')
149                };
150               
151                div                                     = document.createElement("div");
152                div.innerHTML           = this.xtools.parse(this.xtools.xml('sharedFolders'), 'sharedFolders.xsl', args );
153                div.setAttribute( "style","overflow:hidden");
[5792]154                div.setAttribute("id","sharemailbox");
[5458]155               
156                $(div).dialog(
[2]157                {
[5458]158                                resizable       : false,
159                                title           : get_lang("Mailbox Sharing"),
160                                position        : 'center',
161                                width           : 750,
162                                height          : 400,
[5479]163                                modal           : true,
[5458]164                                buttons         : [
165                                                                {
166                                                                        text: get_lang("Close"),
167                                                                        click: function()
168                                                                        {
[6859]169                                                                                $(div).dialog("close");
[5458]170                                                                        },
171                                                                        style: "margin-top: -2.1em"
172                                                                },
173                                                                {
174                                                                        text: get_lang("Save"),
175                                                                        click: function()
[6859]176                                                                        {                                                                       
177                                                $.ajax({
178                                                               url: 'controller.php?' + $.param( {
179                                                                                                          action: '$this.imap_functions.setacl',
180                                                                                                      acls: connector.serialize(sharemailbox.users)} 
181                                                                                                      ),
182                                                                  success: function( data ){
183                                                                      data = connector.unserialize( data );
184                                                                       
185                                                                      if( data )
186                                                                          {
187                                                                                write_msg(get_lang('Shared options saved with success'));
188                                                                                $(div).dialog("close");
[2]189
[6859]190                                                                          }
191                                                                  },
192                                                                  beforeSend: function( jqXHR, settings ){
193                                                                        connector.showProgressBar();
194                                                                  },
195                                                                  complete: function( jqXHR, settings ){
196                                                                        connector.hideProgressBar();
197                                                                  }
[5458]198
[6859]199                                                           });
[5792]200                                                                               
[5458]201                                                                        },
202                                                                        style: "margin-top: -2.1em"
203                                                                }
204                                ],
205                                beforeClose     : function()
206                                {
207                                        $(this).dialog("destroy");
208                                        div.removeChild(div.firstChild);
[2]209                                }
[5458]210                });
[2]211
[5458]212
213                setTimeout(function()
[2]214                {
[5458]215                        var handler_organizations = function(data)
[2]216                        {
[5458]217                                var user_organization = Element('user_organization').value;
218                               
219                                for(i = 0; i < data.length; i++)
[2]220                                {
[5458]221                                        Element('em_combo_org').options[i] = new Option(data[i].ou,data[i].dn);
222                                       
223                                        if(data[i].ou.indexOf("dc=") != -1 || user_organization.toUpperCase() == data[i].ou.toUpperCase())
224                                        {
225                                                Element('em_combo_org').options[i].selected = true;
226                                                sharemailbox.get_available_users(data[i].dn);
227                                        }
[2]228                                }
229                        }
[5458]230                       
231                        cExecute ("$this.ldap_functions.get_organizations2&referral=false", handler_organizations);
232                       
233                },100);
234               
235                Element('em_input_sendAcl').disabled    = true;
236                Element('em_input_deleteAcl').disabled  = true;
237                Element('em_input_writeAcl').disabled   = true;
[2]238
[5458]239                var selectSharedFolders = Element('em_select_sharefolders_users');
[6859]240                this.users = optionsData;
241            for( var i in optionsData )     
242                    selectSharedFolders.options[selectSharedFolders.options.length] = new Option(optionsData[i].cn, i, false, false);
[2]243        }
244       
245        var finderTimeout = '';
[5458]246       
[4457]247        cShareMailbox.prototype.optionFinderTimeout = function(obj, event)
[2]248        {
[4457]249                if( event.keyCode === 13 )
250                {       
251                        limit = 0;
252                        sharemailbox.optionFinder(obj.id);
253                }       
254                return;
[2]255        }
256       
[5458]257        cShareMailbox.prototype.optionFinder = function(id)
258        {
[2]259                       
[5134]260                var sentence = Element(id).value;
[2]261               
[5458]262                var url = '$this.ldap_functions.get_available_users2&context=' + Element('em_combo_org').value + ( sentence ? '&sentence=' + sentence: '' );
[2]263
[5134]264                return userFinder( sentence, 'em_select_available_users', url, 'em_span_searching');
[2]265        }
266       
267        cShareMailbox.prototype.add_user = function()
268        {
269                var select_available_users = document.getElementById('em_select_available_users');
270                var select_users = document.getElementById('em_select_sharefolders_users');
271
272                var count_available_users = select_available_users.length;
273                var count_users = select_users.options.length;
274                var new_options = '';
275       
276                for (i = 0 ; i < count_available_users ; i++)
277                {
278                        if (select_available_users.options[i].selected)
279                        {
280                                if(document.all)
281                                {
282                                        if ( (select_users.innerHTML.indexOf('value='+select_available_users.options[i].value)) == '-1' )
283                                        {
284                                                new_options +=  '<option value='
285                                                                        + select_available_users.options[i].value
286                                                                        + '>'
287                                                                        + select_available_users.options[i].text
288                                                                        + '</option>';
289                                        }
290                                }
291                                else
292                                {
293                                        if ( (select_users.innerHTML.indexOf('value="'+select_available_users.options[i].value+'"')) == '-1' )
294                                        {
295                                                new_options +=  '<option value='
296                                                                        + select_available_users.options[i].value
297                                                                        + '>'
298                                                                        + select_available_users.options[i].text
299                                                                        + '</option>';
300                                        }
301                                }
[6859]302                                var newobject = new Object;
303                newobject.cn = select_available_users.options[i].text;
304                newobject.acls = "";
305                this.users[select_available_users.options[i].value] = newobject;
306
[2]307                        }
308                }
309
[5458]310                if ( new_options != '' )
[2]311                {
312                        select_users.innerHTML = '#' + new_options + select_users.innerHTML;
313                        select_users.outerHTML = select_users.outerHTML;
314                }
[6859]315
316
317
[2]318        }
319
320        cShareMailbox.prototype.remove_user = function()
321        {
322                select_users = document.getElementById('em_select_sharefolders_users');
323       
[5910]324            var acl = '';
325                var select      = Element('em_select_sharefolders_users');
326                var user = select.options[select.selectedIndex].value;
327               
[6859]328                delete this.users[user];
329                 
330            select.options[select.selectedIndex] = null;
[5910]331               
[2]332                Element('em_input_readAcl').checked = false;
333                Element('em_input_deleteAcl').checked = false;
334                Element('em_input_writeAcl').checked = false;
335                Element('em_input_sendAcl').checked = false;
[5910]336       
[6859]337
[2]338        }
[5458]339               
[2]340/* Build the Object */
[5792]341var sharemailbox = new cShareMailbox();
Note: See TracBrowser for help on using the repository browser.