source: sandbox/2.4.2-expresso2/expressoMail1_2/js/sharemailbox.js @ 6551

Revision 6551, 11.1 KB checked in by thiago, 12 years ago (diff)

Ticket #2874 - Corrigido o problema de fechar a modal ao salvar as alteracoes.

  • 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
6        cShareMailbox.prototype.get_available_users = function(context)
7        {
8                var handler_get_available_users = function(data)
9                {
10                        select_available_users = document.getElementById('em_select_available_users');
11               
12                        //Limpa o select
13                        for(var i=0; i<select_available_users.options.length; i++)
14                        {
15                                select_available_users.options[i] = null;
16                                i--;
17                        }
18
19                        if ((data) && (data.length > 0))
20                        {
21                                // Necessario, pois o IE6 tem um bug que retira o primeiro options se o innerHTML estiver vazio.
22                                select_available_users.innerHTML = '#' + data;
23                                select_available_users.outerHTML = select_available_users.outerHTML;
24                       
25                                select_available_users.disabled = false;
26                                select_available_users_clone = document.getElementById('em_select_available_users').cloneNode(true);
27                                document.getElementById('em_input_searchUser').value = '';
28                        }
29                }
30                cExecute ("$this.ldap_functions.get_available_users2&context="+context, handler_get_available_users);
31        }
32
33        cShareMailbox.prototype.getaclfromuser = function(user)
34        {
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);
78        }
79       
80        cShareMailbox.prototype.setaclfromuser = function()
81        {
82                var acl         = '';
83                var select      = Element('em_select_sharefolders_users');
84
85                if( select.selectedIndex == "-1" )
86                {
87                        alert(get_lang("Select a user!"));
88                        return false;
89                }
90               
91                var user = select.options[select.selectedIndex].value;
92               
93                if ( Element('em_input_readAcl').checked )
94                {
95                        Element('em_input_sendAcl').disabled    = false;
96                        Element('em_input_deleteAcl').disabled  = false;
97            Element('em_input_writeAcl').disabled       = false;
98                        acl = 'lrs';
99                }
100                else
101                {
102                        Element('em_input_sendAcl').disabled    = true;
103                        Element('em_input_sendAcl').checked             = false;
104                        Element('em_input_deleteAcl').disabled  = true;
105            Element('em_input_deleteAcl').checked       = false;
106            Element('em_input_writeAcl').disabled       = true;
107            Element('em_input_writeAcl').checked        = false;
108                       
109                }
110                               
111                if (Element('em_input_deleteAcl').checked)
112                        acl += 'ida';
113
114                if (Element('em_input_writeAcl').checked) {
115                        acl += 'wc';                   
116                }               
117                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);
127        }
128       
129        cShareMailbox.prototype.makeWindow =  function(optionsData)
130        {
131                var div  = null;
132                var args = null;
133               
134                args =
135                {
136                        'button_1' : ">>",
137                        'button_2' : "<<",
138                        '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.'),
139                        'Organization' : get_lang('Organization'),
140                        'Search_user'  : get_lang('Search user'),
141                        'Users'            : get_lang('Users'),                         
142                        'Your_mailbox_is_shared_with' : get_lang('Your mailbox is shared with'),
143                        'Access_right'                  : get_lang('Access right'),
144                        'Read'                                  : get_lang('Read'),
145                        'Exclusion'                             : get_lang('Exclusion'),
146                        'Write'                                 : get_lang('Write'),
147                        'Send'                                  : get_lang('Send'),
148                        'Save'                                  : get_lang('Save'),
149                        'hlp_msg_read_acl'              : get_lang('hlp_msg_read_acl'),
150                        'hlp_msg_delmov_acl'    : get_lang('hlp_msg_delmov_acl'),
151                        'hlp_msg_addcreate_acl' : get_lang('hlp_msg_addcreate_acl'),
152                        'hlp_msg_sendlike_acl'  : get_lang('hlp_msg_sendlike_acl'),
153                        'hlp_msg_savelike_acl'  : get_lang('hlp_msg_savelike_acl')
154                };
155               
156                div                                     = document.createElement("div");
157                div.innerHTML           = this.xtools.parse(this.xtools.xml('sharedFolders'), 'sharedFolders.xsl', args );
158                div.setAttribute( "style","overflow:hidden");
159                div.setAttribute("id","sharemailbox");
160               
161                $(div).dialog(
162                {
163                                resizable       : false,
164                                title           : get_lang("Mailbox Sharing"),
165                                position        : 'center',
166                                width           : 750,
167                                height          : 400,
168                                modal           : true,
169                                buttons         : [
170                                                                {
171                                                                        text: get_lang("Close"),
172                                                                        click: function()
173                                                                        {
174                                                                                $(this).dialog("destroy");
175                                                                                div.removeChild(div.firstChild);       
176                                                                        },
177                                                                        style: "margin-top: -2.1em"
178                                                                },
179                                                                {
180                                                                        text: get_lang("Save"),
181                                                                        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                                                                               
230                                                                        },
231                                                                        style: "margin-top: -2.1em"
232                                                                }
233                                ],
234                                beforeClose     : function()
235                                {
236                                        $(this).dialog("destroy");
237                                        div.removeChild(div.firstChild);
238                                }
239                });
240
241
242                setTimeout(function()
243                {
244                        var handler_organizations = function(data)
245                        {
246                                var user_organization = Element('user_organization').value;
247                               
248                                for(i = 0; i < data.length; i++)
249                                {
250                                        Element('em_combo_org').options[i] = new Option(data[i].ou,data[i].dn);
251                                       
252                                        if(data[i].ou.indexOf("dc=") != -1 || user_organization.toUpperCase() == data[i].ou.toUpperCase())
253                                        {
254                                                Element('em_combo_org').options[i].selected = true;
255                                                sharemailbox.get_available_users(data[i].dn);
256                                        }
257                                }
258                        }
259                       
260                        cExecute ("$this.ldap_functions.get_organizations2&referral=false", handler_organizations);
261                       
262                },100);
263               
264                Element('em_input_sendAcl').disabled    = true;
265                Element('em_input_deleteAcl').disabled  = true;
266                Element('em_input_writeAcl').disabled   = true;
267
268                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                }
274        }
275       
276        var finderTimeout = '';
277       
278        cShareMailbox.prototype.optionFinderTimeout = function(obj, event)
279        {
280                if( event.keyCode === 13 )
281                {       
282                        limit = 0;
283                        sharemailbox.optionFinder(obj.id);
284                }       
285                return;
286        }
287       
288        cShareMailbox.prototype.optionFinder = function(id)
289        {
290                       
291                var sentence = Element(id).value;
292               
293                var url = '$this.ldap_functions.get_available_users2&context=' + Element('em_combo_org').value + ( sentence ? '&sentence=' + sentence: '' );
294
295                return userFinder( sentence, 'em_select_available_users', url, 'em_span_searching');
296        }
297       
298        cShareMailbox.prototype.add_user = function()
299        {
300                var select_available_users = document.getElementById('em_select_available_users');
301                var select_users = document.getElementById('em_select_sharefolders_users');
302
303                var count_available_users = select_available_users.length;
304                var count_users = select_users.options.length;
305                var new_options = '';
306       
307                for (i = 0 ; i < count_available_users ; i++)
308                {
309                        if (select_available_users.options[i].selected)
310                        {
311                                if(document.all)
312                                {
313                                        if ( (select_users.innerHTML.indexOf('value='+select_available_users.options[i].value)) == '-1' )
314                                        {
315                                                new_options +=  '<option value='
316                                                                        + select_available_users.options[i].value
317                                                                        + '>'
318                                                                        + select_available_users.options[i].text
319                                                                        + '</option>';
320                                        }
321                                }
322                                else
323                                {
324                                        if ( (select_users.innerHTML.indexOf('value="'+select_available_users.options[i].value+'"')) == '-1' )
325                                        {
326                                                new_options +=  '<option value='
327                                                                        + select_available_users.options[i].value
328                                                                        + '>'
329                                                                        + select_available_users.options[i].text
330                                                                        + '</option>';
331                                        }
332                                }
333                        }
334                }
335
336                if ( new_options != '' )
337                {
338                        select_users.innerHTML = '#' + new_options + select_users.innerHTML;
339                        select_users.outerHTML = select_users.outerHTML;
340                }
341        }
342
343        cShareMailbox.prototype.remove_user = function()
344        {
345                select_users = document.getElementById('em_select_sharefolders_users');
346       
347            var acl = '';
348                var select      = Element('em_select_sharefolders_users');
349                var user = select.options[select.selectedIndex].value;
350               
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               
368                Element('em_input_readAcl').checked = false;
369                Element('em_input_deleteAcl').checked = false;
370                Element('em_input_writeAcl').checked = false;
371                Element('em_input_sendAcl').checked = false;
372       
373        }
374               
375/* Build the Object */
376var sharemailbox = new cShareMailbox();
Note: See TracBrowser for help on using the repository browser.