source: branches/2.2/expressoMail1_2/js/sharemailbox.js @ 4082

Revision 4082, 13.1 KB checked in by roberto.santosjunior, 13 years ago (diff)

Ticket #1633 - Popup de compartilhamento de pasta erro ao exibir os contatos

  • Property svn:eol-style set to native
  • Property svn:executable set to *
Line 
1        function cShareMailbox()
2        {
3                this.arrayWin = new Array();
4                this.el;
5                this.alert = false;
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                var handler_getaclfromuser = function(data)
38                {
39                        Element('em_input_readAcl').checked = false;
40                        Element('em_input_deleteAcl').checked = false;
41                        Element('em_input_writeAcl').checked = false;
42                        Element('em_input_sendAcl').checked = false;
43                        Element('em_input_saveAcl').checked = false;
44                        Element('em_input_saveAcl').disabled = true;
45                       
46                        if (data[user].indexOf('lrs',0) >= 0)
47                        {
48                                Element('em_input_sendAcl').disabled = false;
49                                Element('em_input_readAcl').checked = true;
50                        }
51                        else
52                                Element('em_input_sendAcl').disabled = true;
53                               
54                        if (data[user].indexOf('d',0) >= 0)
55                        {
56                                Element('em_input_deleteAcl').checked = true;
57                        }
58                        if (data[user].indexOf('wi',0) >= 0)
59                        {
60                                Element('em_input_writeAcl').checked = true;
61                        }
62                       
63                        if (data[user] != "false" && data[user].indexOf('a',0) >= 0)
64                        {
65                                Element('em_input_sendAcl').disabled = false;
66                                Element('em_input_sendAcl').checked = true;
67                        }
68                        if (data[user] != "false" && data[user].indexOf('p',0) >= 0)
69                        {
70                                Element('em_input_saveAcl').disabled = false;
71                                Element('em_input_saveAcl').checked = true;
72                        }
73                        if( data[user] != "false" && Element('em_input_writeAcl').checked && Element('em_input_sendAcl').checked ){
74                                Element('em_input_saveAcl').disabled = false;
75                        } else Element('em_input_saveAcl').disabled = true;
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                        alert("Selecione antes um usuário!");
87                        return false;
88                }
89                var user = select.options[select.selectedIndex].value;
90               
91                if (Element('em_input_readAcl').checked) {
92                        Element('em_input_sendAcl').disabled = false;
93                        acl = 'lrs';
94                }
95                else{
96                        Element('em_input_sendAcl').disabled = true;
97                        Element('em_input_sendAcl').checked = false;
98                }
99                               
100                if (Element('em_input_deleteAcl').checked)
101                        acl += 'd';
102
103                if (Element('em_input_writeAcl').checked) {
104                        acl += 'wi';                   
105                }               
106                if (Element('em_input_sendAcl').checked){
107                        acl += 'a';                     
108                }
109                if (Element('em_input_sendAcl').checked && Element('em_input_writeAcl').checked){
110                        Element('em_input_saveAcl').disabled = false;                           
111                } else {
112                        Element('em_input_saveAcl').disabled = true;
113                        Element('em_input_saveAcl').checked = false;
114                }
115               
116                if (Element('em_input_saveAcl').checked)
117                        acl += 'p';
118               
119                var handler_setaclfromuser = function(data) {
120                        if (!data)
121                                alert(data);   
122                        return true;
123                }
124                cExecute ("$this.imap_functions.setaclfromuser&user="+user+"&acl="+acl, handler_setaclfromuser);
125        }
126       
127        cShareMailbox.prototype.makeWindow = function(options)
128        {
129                _this = this;
130       
131                var el = document.createElement("DIV");
132                el.style.visibility = "hidden";
133                el.style.position = "absolute";
134                el.style.left = "0px";
135                el.style.top = "0px";
136                el.style.width = "0px";
137                el.style.height = "0px";
138                el.id = 'dJSWin_sharefolders';
139                document.body.appendChild(el);
140
141                if (Element('em_select_sharefolders_users'))
142                {
143                        var select_users = Element('em_select_sharefolders_users');
144                        select_users.innerHTML = '#' + options;
145                        select_users.outerHTML = select_users.outerHTML;
146                       
147                        Element('em_input_readAcl').checked = false;
148                        Element('em_input_deleteAcl').checked = false;
149                        Element('em_input_writeAcl').checked = false;
150                        Element('em_input_sendAcl').checked = false;
151                        Element('em_input_saveAcl').checked = false;
152                }
153                else
154                {
155                        el.innerHTML = "<table border=0><tbody><tr>"+
156                                                       
157                                                        "<td valign='bottom'>"+
158                                                                '<font color="red">'+
159                                                                        get_lang('Note: This sharing will take action on all of your folders and messages.')+
160                                                                        '<br><br>'+
161                                                                '</font>'+
162                                                                get_lang('Your mailbox is shared with')
163                                                                +":<br><br>"+
164                                                                "<select onchange=sharemailbox.getaclfromuser(this.value); id='em_select_sharefolders_users' size='13' style='width:250px;height:200px'>" + options + "</select>"+
165                                                        "</td>"+
166                                                       
167                                                        "<td>"+
168                                                                '<br><br><br><br><br><br>'+
169                                                                '<img onClick="javascript:sharemailbox.add_user();" src="templates/'+template+'/images/arrow_left.gif" style="vertical-align:middle;cursor:pointer;">' +
170                                                                '<br><br>'+
171                                                                '<img onClick="javascript:sharemailbox.remove_user();" src="templates/'+template+'/images/arrow_right.gif" style="vertical-align:middle;cursor:pointer;">' +
172                                                        "</td>"+
173                                                       
174                                                        "<td valign='bottom'><br>"+
175                                                                get_lang('Organization')+":&nbsp;" +
176                                                                "<select id='em_combo_org' onchange='javascript:sharemailbox.get_available_users(this.value);'></select>"+
177                                                               
178                                                                "<br><br>"+get_lang('Search user')+":<br>" +
179                                                                '<input id="em_input_searchUser" size="35" autocomplete="off"  onkeyup="javascript:sharemailbox.optionFinderTimeout(this)"><br>'+
180                                                               
181                                                                '<font color="red"><span id="em_span_searching">&nbsp;</span></font><br>'+
182                                                               
183                                                                "<select id='em_select_available_users' style='width:250px;height:200px' multiple></select></td>"+
184                                                        '</tr>'+
185                                                        '<tr><td>'+
186                                                                '<table border=0><tbody><tr><td colspan=2>'+
187                                                                        get_lang('Access right')+':'+
188                                                                '</td></tr>'+
189                                                                '<tr><td>'+get_lang('Read')+':</td><td><input id=\'em_input_readAcl\' onClick="return sharemailbox.setaclfromuser();" type="checkbox"><img title="'+get_lang("hlp_msg_read_acl")+'." src=\'./templates/'+template+'/images/ajuda.jpg\'></td></tr>'+
190                                                                '<tr><td>'+get_lang('Exclusion')+':</td><td><input id=\'em_input_deleteAcl\' onClick="return sharemailbox.setaclfromuser();" type="checkbox"><img title="'+get_lang('hlp_msg_delmov_acl')+'." src=\'./templates/'+template+'/images/ajuda.jpg\'></td></tr>'+
191                                                                '<tr><td>'+get_lang('Write')+':</td><td><input id=\'em_input_writeAcl\' onClick="return sharemailbox.setaclfromuser();" type="checkbox"><img title="'+get_lang('hlp_msg_addcreate_acl')+'." src=\'./templates/'+template+'/images/ajuda.jpg\'></td></tr>'+
192                                                                '<tr><td>'+get_lang('Send')+':</td><td><input id=\'em_input_sendAcl\' onClick="return sharemailbox.setaclfromuser();" type="checkbox"><img title="'+get_lang('hlp_msg_sendlike_acl')+'." src=\'./templates/'+template+'/images/ajuda.jpg\'></td></tr>'+
193                                                                '<tr><td>'+get_lang('Save')+':</td><td><input id=\'em_input_saveAcl\' onClick="return sharemailbox.setaclfromuser();" type="checkbox"><img title="'+get_lang('hlp_msg_savelike_acl')+'." src=\'./templates/'+template+'/images/ajuda.jpg\'></td></tr></tbody></table>'+
194                                                        '</td></tr>'+
195                        "</tbody></table>";
196                }
197
198                var handler_organizations = function(data){
199                        var user_organization = Element('user_organization').value;
200                       
201                        for(i = 0; i < data.length; i++) {
202                                Element('em_combo_org').options[i] = new Option(data[i].ou,data[i].dn);
203                                if(data[i].ou.indexOf("dc=") != -1 || user_organization.toUpperCase() == data[i].ou.toUpperCase())
204                                {
205                                        Element('em_combo_org').options[i].selected = true;
206                                        _this.get_available_users(data[i].dn);
207                                }
208                        }
209                }
210                cExecute ("$this.ldap_functions.get_organizations2&referral=false", handler_organizations);
211
212                var butt = Element('dJSWin_wfolders_bok')
213                if (!butt){
214                        butt = document.createElement('INPUT');
215                        butt.id = 'dJSWin_wfolders_bok';
216                        butt.type = 'button';
217                        butt.value = get_lang('Save');
218                        el.appendChild(butt);
219                }
220                butt.onclick = function ()
221                {
222                        // Needed select all options from select
223                        var users_setacl = new Array();
224                        select_users = Element('em_select_sharefolders_users');
225                        for(var i=0; i<select_users.options.length; i++)
226                        {
227                                users_setacl[i] = select_users.options[i].value;
228                        }
229                        attributes = connector.serialize(users_setacl);
230                       
231                        var handler_save = function(data)
232                        {
233                                if (data)
234                                {
235                                        alert(get_lang('Shared options saved with success'));
236                                        sharemailbox.arrayWin[el.id].close();
237                                }
238                        }
239
240                        cExecute ("$this.imap_functions.setacl", handler_save, 'users='+attributes);
241
242                }
243               
244                var space = document.createElement('SPAN');
245                space.innerHTML = "&nbsp;&nbsp;";
246                el.appendChild(space);
247               
248                var butt = document.createElement('BUTTON');
249                var buttext = document.createTextNode(get_lang('Close'));
250                butt.appendChild(buttext);
251                butt.onclick = function () {sharemailbox.arrayWin[el.id].close();};
252                el.appendChild(butt);
253               
254                _this.showWindow(el);
255        }
256       
257        cShareMailbox.prototype.showWindow = function (div)
258        {
259                if(! div) {
260                        alert(get_lang('This list has no participants'));
261                        return;
262                }
263               
264                if(! this.arrayWin[div.id])
265                {
266                        div.style.height = "480px";
267                        div.style.width = "540px";
268                        var title = ":: "+get_lang("Mailbox Sharing")+" ::";
269                        var wHeight = div.offsetHeight + "px";
270                        var wWidth =  div.offsetWidth   + "px";
271                        div.style.width = div.offsetWidth - 5;
272
273                        win = new dJSWin({
274                                id: 'win_'+div.id,
275                                content_id: div.id,
276                                width: wWidth,
277                                height: wHeight,
278                                title_color: '#3978d6',
279                                bg_color: '#eee',
280                                title: title,
281                                title_text_color: 'white',
282                                button_x_img: '../phpgwapi/images/winclose.gif',
283                                border: true });
284                       
285                        this.arrayWin[div.id] = win;
286                        win.draw();
287                }
288                else {
289                        win = this.arrayWin[div.id];
290                }
291                Element('em_input_sendAcl').disabled = true;
292                Element('em_input_saveAcl').disabled = true;
293                win.open();
294        }
295       
296        var finderTimeout = '';
297        cShareMailbox.prototype.optionFinderTimeout = function(obj)
298        {
299                clearTimeout(finderTimeout);   
300                var oWait = document.getElementById("em_span_searching");
301                oWait.innerHTML = get_lang('Searching')+"...";
302                var finderTimeout = setTimeout("sharemailbox.optionFinder('"+obj.id+"')",500);
303        }
304       
305        cShareMailbox.prototype.optionFinder = function(id)
306        {
307                var oWait = document.getElementById("em_span_searching");
308                var oText = document.getElementById(id);
309                       
310                //Limpa todo o select
311               
312                var select_available_users_tmp = document.getElementById('em_select_available_users')
313                for(var i = 0;i < select_available_users_tmp.options.length; i++)
314                        select_available_users_tmp.options[i--] = null;
315
316                var RegExp_name = new RegExp("\\b"+oText.value, "i");
317               
318                //Inclui usuário começando com a pesquisa
319                if (typeof(select_available_users_clone)  != "undefined"){
320                        for(i = 0; i < select_available_users_clone.length; i++){
321                                if (RegExp_name.test(select_available_users_clone[i].text))
322                                {
323                                        sel = select_available_users_tmp.options;
324                                        option = new Option(select_available_users_clone[i].text,select_available_users_clone[i].value);                               
325                                        sel[sel.length] = option;
326                                }
327                        }
328                }
329                oWait.innerHTML = '&nbsp;';
330        }
331       
332        cShareMailbox.prototype.add_user = function()
333        {
334                var select_available_users = document.getElementById('em_select_available_users');
335                var select_users = document.getElementById('em_select_sharefolders_users');
336
337                var count_available_users = select_available_users.length;
338                var count_users = select_users.options.length;
339                var new_options = '';
340       
341                for (i = 0 ; i < count_available_users ; i++)
342                {
343                        if (select_available_users.options[i].selected)
344                        {
345                                if(document.all)
346                                {
347                                        if ( (select_users.innerHTML.indexOf('value='+select_available_users.options[i].value)) == '-1' )
348                                        {
349                                                new_options +=  '<option value='
350                                                                        + select_available_users.options[i].value
351                                                                        + '>'
352                                                                        + select_available_users.options[i].text
353                                                                        + '</option>';
354                                        }
355                                }
356                                else
357                                {
358                                        if ( (select_users.innerHTML.indexOf('value="'+select_available_users.options[i].value+'"')) == '-1' )
359                                        {
360                                                new_options +=  '<option value='
361                                                                        + select_available_users.options[i].value
362                                                                        + '>'
363                                                                        + select_available_users.options[i].text
364                                                                        + '</option>';
365                                        }
366                                }
367                        }
368                }
369
370                if (new_options != '')
371                {
372                        select_users.innerHTML = '#' + new_options + select_users.innerHTML;
373                        select_users.outerHTML = select_users.outerHTML;
374                }
375        }
376
377        cShareMailbox.prototype.remove_user = function()
378        {
379                select_users = document.getElementById('em_select_sharefolders_users');
380       
381                for(var i = 0;i < select_users.options.length; i++)
382                        if(select_users.options[i].selected)
383                                select_users.options[i--] = null;
384                               
385                Element('em_input_readAcl').checked = false;
386                Element('em_input_deleteAcl').checked = false;
387                Element('em_input_writeAcl').checked = false;
388                Element('em_input_sendAcl').checked = false;
389                Element('em_input_saveAcl').checked = false;
390        }
391       
392       
393/* Build the Object */
394        var sharemailbox;
395        sharemailbox = new cShareMailbox();
Note: See TracBrowser for help on using the repository browser.