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

Revision 5134, 13.4 KB checked in by wmerlotto, 13 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 *
RevLine 
[2]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;
[1912]43                        Element('em_input_saveAcl').checked = false;
44                        Element('em_input_saveAcl').disabled = true;
[5134]45                        Element('em_input_deleteAcl').disabled = true;
46                        Element('em_input_writeAcl').disabled = true;
[2]47                       
48                        if (data[user].indexOf('lrs',0) >= 0)
49                        {
50                                Element('em_input_sendAcl').disabled = false;
[5134]51                                Element('em_input_deleteAcl').disabled = false;
52                                Element('em_input_writeAcl').disabled = false ;
[2]53                                Element('em_input_readAcl').checked = true;
54                        }
55                        else
[5134]56                        {
[2]57                                Element('em_input_sendAcl').disabled = true;
58                               
[5134]59                        }
[2]60                        if (data[user].indexOf('d',0) >= 0)
61                        {
62                                Element('em_input_deleteAcl').checked = true;
[5134]63                                Element('em_input_deleteAcl').disabled = false;
[2]64                        }
[1912]65                        if (data[user].indexOf('wi',0) >= 0)
[2]66                        {
67                                Element('em_input_writeAcl').checked = true;
[5134]68                                Element('em_input_writeAcl').disabled = false
[2]69                        }
[1913]70                       
[2]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                        }
[1912]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;
[2]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;
[5134]101                        Element('em_input_deleteAcl').disabled = false;
102                        Element('em_input_writeAcl').disabled = false;
[2]103                        acl = 'lrs';
104                }
105                else{
106                        Element('em_input_sendAcl').disabled = true;
107                        Element('em_input_sendAcl').checked = false;
[5134]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                       
[2]113                }
114                               
115                if (Element('em_input_deleteAcl').checked)
116                        acl += 'd';
117
[1912]118                if (Element('em_input_writeAcl').checked) {
119                        acl += 'wi';                   
[1913]120                }               
[1912]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               
[2]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;
[1912]166                        Element('em_input_saveAcl').checked = false;
[2]167                }
168                else
169                {
170                        el.innerHTML = "<table border=0><tbody><tr>"+
171                                                       
172                                                        "<td valign='bottom'>"+
173                                                                '<font color="red">'+
[197]174                                                                        get_lang('Note: This sharing will take action on all of your folders and messages.')+
[2]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>'+
[1495]184                                                                '<img onClick="javascript:sharemailbox.add_user();" src="templates/'+template+'/images/arrow_left.gif" style="vertical-align:middle;cursor:pointer;">' +
[2]185                                                                '<br><br>'+
[1495]186                                                                '<img onClick="javascript:sharemailbox.remove_user();" src="templates/'+template+'/images/arrow_right.gif" style="vertical-align:middle;cursor:pointer;">' +
[2]187                                                        "</td>"+
188                                                       
189                                                        "<td valign='bottom'><br>"+
190                                                                get_lang('Organization')+":&nbsp;" +
[5134]191                                                                "<select id='em_combo_org'></select>"+
[2]192                                                               
193                                                                "<br><br>"+get_lang('Search user')+":<br>" +
[5134]194                                                                '<input id="em_input_searchUser" size="35" autocomplete="off"  onkeyup="javascript:sharemailbox.optionFinderTimeout(this, event);"><br>'+
[2]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>'+
[53]202                                                                        get_lang('Access right')+':'+
[2]203                                                                '</td></tr>'+
[790]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>'+
[1912]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>'+
[2]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);
[3530]218                                if(data[i].ou.indexOf("dc=") != -1 || user_organization.toUpperCase() == data[i].ou.toUpperCase())
[2]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';
[118]232                        butt.value = get_lang('Save');
[2]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                                {
[163]250                                        alert(get_lang('Shared options saved with success'));
[2]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');
[118]264                var buttext = document.createTextNode(get_lang('Close'));
[2]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) {
[197]275                        alert(get_lang('This list has no participants'));
[2]276                        return;
277                }
278               
279                if(! this.arrayWin[div.id])
280                {
[1912]281                        div.style.height = "480px";
[2]282                        div.style.width = "540px";
[128]283                        var title = ":: "+get_lang("Mailbox Sharing")+" ::";
[2]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;
[1912]307                Element('em_input_saveAcl').disabled = true;
[5134]308                Element('em_input_deleteAcl').disabled = true;
309                Element('em_input_writeAcl').disabled = true;
[2]310                win.open();
311        }
312       
313        var finderTimeout = '';
[4457]314        cShareMailbox.prototype.optionFinderTimeout = function(obj, event)
[2]315        {
[4457]316                if( event.keyCode === 13 )
317                {       
318                        limit = 0;
319                        sharemailbox.optionFinder(obj.id);
320                }       
321                return;
[2]322        }
323       
[5134]324        cShareMailbox.prototype.optionFinder = function(id) {
[2]325                       
[5134]326                var sentence = Element(id).value;
[2]327               
[5134]328                var url = '$this.ldap_functions.get_available_users2&context=' +
329                            Element('em_combo_org').value +
330                            ( sentence ? '&sentence=' + sentence: '' );
[2]331
[5134]332                return userFinder( sentence, 'em_select_available_users', url, 'em_span_searching');
[2]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;
[1912]392                Element('em_input_saveAcl').checked = false;
[2]393        }
394       
395       
396/* Build the Object */
397        var sharemailbox;
[790]398        sharemailbox = new cShareMailbox();
Note: See TracBrowser for help on using the repository browser.