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

Revision 4610, 16.1 KB checked in by alexandrecorreia, 13 years ago (diff)

Ticket #1808 - Correção da tela para compartilhamento de pastas no 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                       
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               
140                document.body.appendChild(el);
141
142                if (Element('em_select_sharefolders_users'))
143                {
144                        var select_users = Element('em_select_sharefolders_users');
145                            select_users.innerHTML = '#' + options;
146                            select_users.outerHTML = select_users.outerHTML;
147                       
148                        Element('em_input_readAcl').checked     = false;
149                        Element('em_input_deleteAcl').checked   = false;
150                        Element('em_input_writeAcl').checked    = false;
151                        Element('em_input_sendAcl').checked     = false;
152                        Element('em_input_saveAcl').checked     = false;
153                }
154                else
155                {
156                    el.innerHTML =  '<div style="width:645px; height:340px; margin: 2px !important; ">'+
157                                        '<fieldset style="height:300px;">'+
158                                            '<div style="width:500px; height:15px; font-size:8pt; color:red;">'+
159                                                get_lang('Note: This sharing will take action on all of your folders and messages.')+
160                                            '</div>'+
161                                            '<br clear="all"/>'+
162                                            '<div style="width:250px; height: 300px; position:aboslute; float:left;">'+
163                                                '<label>'+get_lang('Organization')+'</label>'+
164                                                '<br/>'+
165                                                '<select id="em_combo_org" onchange="javascript:sharemailbox.get_available_users(this.value);"></select>'+
166                                                '<br/><br/>'+
167                                                '<label>'+get_lang('Search user')+'<span style="margin-left:10px; color:red;" id="em_span_searching">&nbsp;</span><br></label>'+
168                                                '<input id="em_input_searchUser" size="30" autocomplete="off"  onkeyup="javascript:sharemailbox.optionFinderTimeout(this)">'+
169                                                '<div style="margin-top:17px;"><label>'+get_lang('Users')+':</label></div>'+
170                                                '<select id="em_select_available_users" style="width:250px; height:150px" multiple></select></td>'+
171                                            '</div>'+
172                                            '<div style="width:20px; height: 300px; position:relative; float:left;">'+
173                                                '<div style="margin-top:120px;margin-left:3px;">'+
174                                                    '<img onClick="javascript:sharemailbox.add_user();" src="../phpgwapi/templates/azul/images/tabs-r0.gif" style="vertical-align:middle;cursor:pointer;">'+
175                                                    '<br/><br/>'+
176                                                    '<img onClick="javascript:sharemailbox.remove_user();" src="../phpgwapi/templates/azul/images/tabs-l0.gif" style="vertical-align:middle;cursor:pointer;">'+
177                                                '</div>'+
178                                            '</div>'+
179                                            '<div style="width:348px; height:300px; position:relative; float:right;">'+
180                                                '<div style="margin-top:90px;"><label>'+get_lang('Your mailbox is shared with')+' :</label></div>'+
181                                                '<div style="position:absolute; float:left;">'+
182                                                    '<select onchange=sharemailbox.getaclfromuser(this.value); id="em_select_sharefolders_users" size="13" style="width:245px;height:150px">'+options+'</select>'+
183                                                '</div>'+
184                                                '<div style="position:relative; float:right; width:98px;">'+
185                                                        '<fieldset>'+
186                                                            '<legend>'+get_lang('Permission')+'</legend>'+
187                                                            '<div title="'+get_lang("hlp_msg_read_acl")+'" alt="'+get_lang("hlp_msg_read_acl")+'"><label style="padding-left:10px ;text-indent:-15px;"><input style="height:13px; padding:0; margin:0; vertical-align: bottom; position: relative;" id="em_input_readAcl" onClick="return sharemailbox.setaclfromuser();" type="checkbox">'+get_lang('Read')+'</label><div/>'+
188                                                            '<div title="'+get_lang("hlp_msg_delmov_acl")+'" alt="'+get_lang("hlp_msg_delmov_acl")+'"><label style="padding-left:10px ;text-indent:-15px;"><input style="height:13px; padding:0; margin:0; vertical-align: bottom; position: relative;" id="em_input_deleteAcl" onClick="return sharemailbox.setaclfromuser();" type="checkbox">'+get_lang('Exclusion')+'</label></div>'+
189                                                            '<div title="'+get_lang("hlp_msg_addcreate_acl")+'" alt="'+get_lang("hlp_msg_addcreate_acl")+'"><label style="padding-left:10px ;text-indent:-15px;"><input style="height:13px; padding:0; margin:0; vertical-align: bottom; position: relative;" id="em_input_writeAcl" onClick="return sharemailbox.setaclfromuser();" type="checkbox">'+get_lang('Write')+'</label></div>'+
190                                                            '<div title="'+get_lang("hlp_msg_sendlike_acl")+'" alt="'+get_lang("hlp_msg_sendlike_acl")+'"><label style="padding-left:10px ;text-indent:-15px;"><input style="height:13px; padding:0; margin:0; vertical-align: bottom; position: relative;" id="em_input_sendAcl" onClick="return sharemailbox.setaclfromuser();" type="checkbox">'+get_lang('Send')+'</label></div>'+
191                                                            '<div title="'+get_lang("hlp_msg_savelike_acl")+'" alt="'+get_lang("hlp_msg_savelike_acl")+'"><label style="padding-left:10px ;text-indent:-15px;"><input style="height:13px; padding:0; margin:0; vertical-align: bottom; position: relative;" id="em_input_saveAcl" onClick="return sharemailbox.setaclfromuser();" type="checkbox">'+get_lang('Save')+'</label></div>'+
192                                                        '</fieldset>'+
193                                                '</div>'+
194                                            '</div>'+
195                                        '</fieldset>'+
196                                     '</div>';
197                }
198
199                var handler_organizations = function(data){
200                        var user_organization = Element('user_organization').value;
201                       
202                        for(i = 0; i < data.length; i++) {
203                                Element('em_combo_org').options[i] = new Option(data[i].ou,data[i].dn);
204                                if(data[i].ou.indexOf("dc=") != -1 || user_organization.toUpperCase() == data[i].ou.toUpperCase())
205                                {
206                                        Element('em_combo_org').options[i].selected = true;
207                                        _this.get_available_users(data[i].dn);
208                                }
209                        }
210                }
211                cExecute ("$this.ldap_functions.get_organizations2&referral=false", handler_organizations);
212
213                var butt = Element('dJSWin_wfolders_bok')
214               
215                if ( !butt )
216                {
217                        butt = document.createElement('INPUT');
218                        butt.style.marginLeft = "5px";
219                        butt.id = 'dJSWin_wfolders_bok';
220                        butt.type = 'button';
221                        butt.value = get_lang('Save');
222                        el.appendChild(butt);
223                }
224                butt.onclick = function ()
225                {
226                        // Needed select all options from select
227                        var users_setacl = new Array();
228                        select_users = Element('em_select_sharefolders_users');
229                        for(var i=0; i<select_users.options.length; i++)
230                        {
231                                users_setacl[i] = select_users.options[i].value;
232                        }
233                        attributes = connector.serialize(users_setacl);
234                       
235                        var handler_save = function(data)
236                        {
237                                if (data)
238                                {
239                                        alert(get_lang('Shared options saved with success'));
240                                        sharemailbox.arrayWin[el.id].close();
241                                }
242                        }
243
244                        cExecute ("$this.imap_functions.setacl", handler_save, 'users='+attributes);
245
246                }
247               
248                var space = document.createElement('SPAN');
249                space.innerHTML = "&nbsp;&nbsp;";
250                el.appendChild(space);
251               
252                var butt = document.createElement('BUTTON');
253                var buttext = document.createTextNode(get_lang('Close'));
254                butt.appendChild(buttext);
255                butt.onclick = function () {sharemailbox.arrayWin[el.id].close();};
256                el.appendChild(butt);
257               
258                _this.showWindow(el);
259        }
260       
261        cShareMailbox.prototype.showWindow = function (div)
262        {
263                if(! div) {
264                        alert(get_lang('This list has no participants'));
265                        return;
266                }
267               
268                if(! this.arrayWin[div.id])
269                {
270                        div.style.height = "370px";
271                        div.style.width = "655px";
272                        var title = ":: "+get_lang("Mailbox Sharing")+" ::";
273                        var wHeight = div.offsetHeight + "px";
274                        var wWidth =  div.offsetWidth   + "px";
275                        div.style.width = div.offsetWidth - 5;
276
277                        win = new dJSWin({
278                                id: 'win_'+div.id,
279                                content_id: div.id,
280                                width: wWidth,
281                                height: wHeight,
282                                title_color: '#3978d6',
283                                bg_color: '#eee',
284                                title: title,
285                                title_text_color: 'white',
286                                button_x_img: '../phpgwapi/images/winclose.gif',
287                                border: true });
288                       
289                        this.arrayWin[div.id] = win;
290                        win.draw();
291                }
292                else {
293                        win = this.arrayWin[div.id];
294                }
295                Element('em_input_sendAcl').disabled = true;
296                Element('em_input_saveAcl').disabled = true;
297                win.open();
298        }
299       
300        var finderTimeout = '';
301        cShareMailbox.prototype.optionFinderTimeout = function(obj)
302        {
303                clearTimeout(finderTimeout);   
304                var oWait = document.getElementById("em_span_searching");
305                oWait.innerHTML = get_lang('Searching')+"...";
306                var finderTimeout = setTimeout("sharemailbox.optionFinder('"+obj.id+"')",500);
307        }
308       
309        cShareMailbox.prototype.optionFinder = function(id)
310        {
311                var oWait = document.getElementById("em_span_searching");
312                var oText = document.getElementById(id);
313                       
314                //Limpa todo o select
315               
316                var select_available_users_tmp = document.getElementById('em_select_available_users')
317                for(var i = 0;i < select_available_users_tmp.options.length; i++)
318                        select_available_users_tmp.options[i--] = null;
319
320                var RegExp_name = new RegExp("\\b"+oText.value, "i");
321               
322                //Inclui usuário começando com a pesquisa
323                if (typeof(select_available_users_clone)  != "undefined"){
324                        for(i = 0; i < select_available_users_clone.length; i++){
325                                if (RegExp_name.test(select_available_users_clone[i].text))
326                                {
327                                        sel = select_available_users_tmp.options;
328                                        option = new Option(select_available_users_clone[i].text,select_available_users_clone[i].value);                               
329                                        sel[sel.length] = option;
330                                }
331                        }
332                }
333                oWait.innerHTML = '&nbsp;';
334        }
335       
336        cShareMailbox.prototype.add_user = function()
337        {
338                var select_available_users = document.getElementById('em_select_available_users');
339                var select_users = document.getElementById('em_select_sharefolders_users');
340
341                var count_available_users = select_available_users.length;
342                var count_users = select_users.options.length;
343                var new_options = '';
344       
345                for (i = 0 ; i < count_available_users ; i++)
346                {
347                        if (select_available_users.options[i].selected)
348                        {
349                                if(document.all)
350                                {
351                                        if ( (select_users.innerHTML.indexOf('value='+select_available_users.options[i].value)) == '-1' )
352                                        {
353                                                new_options +=  '<option value='
354                                                                        + select_available_users.options[i].value
355                                                                        + '>'
356                                                                        + select_available_users.options[i].text
357                                                                        + '</option>';
358                                        }
359                                }
360                                else
361                                {
362                                        if ( (select_users.innerHTML.indexOf('value="'+select_available_users.options[i].value+'"')) == '-1' )
363                                        {
364                                                new_options +=  '<option value='
365                                                                        + select_available_users.options[i].value
366                                                                        + '>'
367                                                                        + select_available_users.options[i].text
368                                                                        + '</option>';
369                                        }
370                                }
371                        }
372                }
373
374                if (new_options != '')
375                {
376                        select_users.innerHTML = '#' + new_options + select_users.innerHTML;
377                        select_users.outerHTML = select_users.outerHTML;
378                }
379        }
380
381        cShareMailbox.prototype.remove_user = function()
382        {
383                select_users = document.getElementById('em_select_sharefolders_users');
384       
385                for(var i = 0;i < select_users.options.length; i++)
386                        if(select_users.options[i].selected)
387                                select_users.options[i--] = null;
388                               
389                Element('em_input_readAcl').checked = false;
390                Element('em_input_deleteAcl').checked = false;
391                Element('em_input_writeAcl').checked = false;
392                Element('em_input_sendAcl').checked = false;
393                Element('em_input_saveAcl').checked = false;
394        }
395       
396       
397/* Build the Object */
398        var sharemailbox;
399        sharemailbox = new cShareMailbox();
Note: See TracBrowser for help on using the repository browser.