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

Revision 7361, 11.1 KB checked in by eduardow, 11 years ago (diff)

Ticket #3141 - Falha ao nao informar o compartilhamento consigo mesmo.

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