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

Revision 5458, 11.5 KB checked in by alexandrecorreia, 12 years ago (diff)

Ticket #673 - Novas dialogs com Jquery para o novo visual do expresso.

  • 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               
185                $(div).dialog(
186                {
187                                resizable       : false,
188                                title           : get_lang("Mailbox Sharing"),
189                                position        : 'center',
190                                width           : 750,
191                                height          : 400,
192                                modal           : false,
193                                buttons         : [
194                                                                {
195                                                                        text: get_lang("Close"),
196                                                                        click: function()
197                                                                        {
198                                                                                $(this).dialog("destroy");
199                                                                                div.removeChild(div.firstChild);
200                                                                        },
201                                                                        style: "margin-top: -2.1em"
202                                                                },
203                                                                {
204                                                                        text: get_lang("Save"),
205                                                                        click: function()
206                                                                        {
207                                                                                // Needed select all options from select
208                                                                                var users_setacl = new Array();
209                                                                                var select_users = Element('em_select_sharefolders_users');
210
211                                                                                for(var i = 0; i < select_users.options.length; i++)
212                                                                                {
213                                                                                        users_setacl[i] = select_users.options[i].value;
214                                                                                }
215                                                                                var attributes = connector.serialize(users_setacl);
216                                                                               
217                                                                                var handler_save = function(data)
218                                                                                {
219                                                                                        if (data)
220                                                                                        {
221                                                                                                var sharedFoldersUsers = document.getElementById('em_select_sharefolders_users');
222                                                                                               
223                                                                                                for( var i = 0;i < sharedFoldersUsers.options.length; i++ )
224                                                                                                {
225                                                                                                        if( sharedFoldersUsers.options[i].selected )
226                                                                                                        {
227                                                                                                                var value       = sharedFoldersUsers.options[i].value;
228                                                                                                                var text        = sharedFoldersUsers.options[i].text;
229                                                                                                                sharedFoldersUsers.options[i].parentNode.removeChild(sharedFoldersUsers.options[i]);
230                                                                                                                sharedFoldersUsers.options[sharedFoldersUsers.options.length] = new Option( text, value, false, false);
231                                                                                                        }
232                                                                                                }
233                                                                                               
234                                                                                                Element('em_input_readAcl').checked             = false;
235                                                                                                Element('em_input_deleteAcl').checked   = false;
236                                                                                                Element('em_input_writeAcl').checked    = false;
237                                                                                                Element('em_input_sendAcl').checked             = false;
238                                                                                                Element('em_input_saveAcl').checked             = false;
239                                                                                               
240                                                                                    Element('em_input_deleteAcl').disabled      = true;
241                                                                                    Element('em_input_writeAcl').disabled       = true;
242                                                                                                Element('em_input_sendAcl').disabled    = true;
243                                                                                                Element('em_input_saveAcl').disabled    = true;
244
245                                                                                                write_msg(get_lang('Shared options saved with success'));
246                                                                                        }
247                                                                                }
248                                                                                cExecute ("$this.imap_functions.setacl", handler_save, 'users='+attributes);
249                                                                        },
250                                                                        style: "margin-top: -2.1em"
251                                                                }
252                                ],
253                                beforeClose     : function()
254                                {
255                                        $(this).dialog("destroy");
256                                        div.removeChild(div.firstChild);
257                                }
258                });
259
260
261                setTimeout(function()
262                {
263                        var handler_organizations = function(data)
264                        {
265                                var user_organization = Element('user_organization').value;
266                               
267                                for(i = 0; i < data.length; i++)
268                                {
269                                        Element('em_combo_org').options[i] = new Option(data[i].ou,data[i].dn);
270                                       
271                                        if(data[i].ou.indexOf("dc=") != -1 || user_organization.toUpperCase() == data[i].ou.toUpperCase())
272                                        {
273                                                Element('em_combo_org').options[i].selected = true;
274                                                sharemailbox.get_available_users(data[i].dn);
275                                        }
276                                }
277                        }
278                       
279                        cExecute ("$this.ldap_functions.get_organizations2&referral=false", handler_organizations);
280                       
281                },100);
282               
283                Element('em_input_sendAcl').disabled    = true;
284                Element('em_input_saveAcl').disabled    = true;
285                Element('em_input_deleteAcl').disabled  = true;
286                Element('em_input_writeAcl').disabled   = true;
287
288                var selectSharedFolders = Element('em_select_sharefolders_users');
289               
290                for( var i in optionsData )
291                {
292                        selectSharedFolders.options[selectSharedFolders.options.length] = new Option(optionsData[i].cn, optionsData[i].uid, false, false);
293                }
294        }
295       
296        var finderTimeout = '';
297       
298        cShareMailbox.prototype.optionFinderTimeout = function(obj, event)
299        {
300                if( event.keyCode === 13 )
301                {       
302                        limit = 0;
303                        sharemailbox.optionFinder(obj.id);
304                }       
305                return;
306        }
307       
308        cShareMailbox.prototype.optionFinder = function(id)
309        {
310                       
311                var sentence = Element(id).value;
312               
313                var url = '$this.ldap_functions.get_available_users2&context=' + Element('em_combo_org').value + ( sentence ? '&sentence=' + sentence: '' );
314
315                return userFinder( sentence, 'em_select_available_users', url, 'em_span_searching');
316        }
317       
318        cShareMailbox.prototype.add_user = function()
319        {
320                var select_available_users = document.getElementById('em_select_available_users');
321                var select_users = document.getElementById('em_select_sharefolders_users');
322
323                var count_available_users = select_available_users.length;
324                var count_users = select_users.options.length;
325                var new_options = '';
326       
327                for (i = 0 ; i < count_available_users ; i++)
328                {
329                        if (select_available_users.options[i].selected)
330                        {
331                                if(document.all)
332                                {
333                                        if ( (select_users.innerHTML.indexOf('value='+select_available_users.options[i].value)) == '-1' )
334                                        {
335                                                new_options +=  '<option value='
336                                                                        + select_available_users.options[i].value
337                                                                        + '>'
338                                                                        + select_available_users.options[i].text
339                                                                        + '</option>';
340                                        }
341                                }
342                                else
343                                {
344                                        if ( (select_users.innerHTML.indexOf('value="'+select_available_users.options[i].value+'"')) == '-1' )
345                                        {
346                                                new_options +=  '<option value='
347                                                                        + select_available_users.options[i].value
348                                                                        + '>'
349                                                                        + select_available_users.options[i].text
350                                                                        + '</option>';
351                                        }
352                                }
353                        }
354                }
355
356                if ( new_options != '' )
357                {
358                        select_users.innerHTML = '#' + new_options + select_users.innerHTML;
359                        select_users.outerHTML = select_users.outerHTML;
360                }
361        }
362
363        cShareMailbox.prototype.remove_user = function()
364        {
365                select_users = document.getElementById('em_select_sharefolders_users');
366       
367                for( var i = 0 ; i < select_users.options.length; i++ )
368                {
369                        if( select_users.options[i].selected )
370                        {
371                                select_users.options[i--] = null;
372                        }
373                }
374                               
375                Element('em_input_readAcl').checked = false;
376                Element('em_input_deleteAcl').checked = false;
377                Element('em_input_writeAcl').checked = false;
378                Element('em_input_sendAcl').checked = false;
379                Element('em_input_saveAcl').checked = false;
380        }
381               
382/* Build the Object */
383var sharemailbox = new cShareMailbox();
Note: See TracBrowser for help on using the repository browser.