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

Revision 6966, 11.6 KB checked in by eduardow, 12 years ago (diff)

Ticket #2996 - Problema na janela de compartilhar pastas.

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