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

Revision 5134, 13.4 KB checked in by wmerlotto, 12 years ago (diff)

Ticket #2305 - Enviando alteracoes, desenvolvidas internamente na Prognus, do modulo ExpressoMail?.

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