source: trunk/expressoMail1_2/js/sharemailbox.js @ 5792

Revision 5792, 11.7 KB checked in by angelo, 12 years ago (diff)

Ticket #2539 - Ao compartilhar pastas e clicar no botao Salvar o sistema nao fecha a tela de compartilhamento

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