source: sandbox/expressoMail1_2/MailArchiver/2.2/expressoMail1_2/js/sharemailbox.js @ 4644

Revision 4644, 19.0 KB checked in by fernando-alberto, 13 years ago (diff)

Ticket #1269 - Mergiando revisoes do brach22 de rev4447 ate rev4643

  • 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                this.context = "";
7                this.finderTimeout = '';
8        }
9       
10        cShareMailbox.prototype.get_available_users = function(context)
11        {
12            if( sharedFolders_users_auto_search.toString() === "true" )
13            {   
14                this.get_available_users2(context);
15            }
16        }
17
18        cShareMailbox.prototype.get_available_users2 = function()
19        {
20            var context = "";
21            var cn      = "";
22           
23            var handler_get_available_users = function(data)
24            {
25                    select_available_users = document.getElementById('em_select_available_users');
26
27                    //Limpa o select
28                    for(var i=0; i<select_available_users.options.length; i++)
29                    {
30                            select_available_users.options[i] = null;
31                            i--;
32                    }
33
34                    if ((data) && (data.length > 0))
35                    {
36                            // Necessario, pois o IE6 tem um bug que retira o primeiro options se o innerHTML estiver vazio.
37                            select_available_users.innerHTML = '#' + data;
38                            select_available_users.outerHTML = select_available_users.outerHTML;
39
40                            select_available_users.disabled = false;
41                            select_available_users_clone = document.getElementById('em_select_available_users').cloneNode(true);
42                            document.getElementById('em_input_searchUser').value = '';
43                    }
44            }
45
46            if( arguments.length > 1 )
47            {
48                context = arguments[0];
49                cn      = arguments[1];
50                cExecute ("$this.ldap_functions.get_available_users2&context="+context+"&cn="+cn, handler_get_available_users);
51            }   
52            else
53            {
54                context = arguments[0];
55                cExecute ("$this.ldap_functions.get_available_users2&context="+context, handler_get_available_users);
56            }
57           
58        }
59
60        cShareMailbox.prototype.getaclfromuser = function(user)
61        {
62                var handler_getaclfromuser = function(data)
63                {
64                        Element('em_input_readAcl').checked = false;
65                        Element('em_input_deleteAcl').checked = false;
66                        Element('em_input_writeAcl').checked = false;
67                        Element('em_input_sendAcl').checked = false;
68                        Element('em_input_saveAcl').checked = false;
69                        Element('em_input_saveAcl').disabled = true;
70                       
71                        if (data[user].indexOf('lrs',0) >= 0)
72                        {
73                                Element('em_input_sendAcl').disabled = false;
74                                Element('em_input_readAcl').checked = true;
75                        }
76                        else
77                                Element('em_input_sendAcl').disabled = true;
78                               
79                        if (data[user].indexOf('d',0) >= 0)
80                        {
81                                Element('em_input_deleteAcl').checked = true;
82                        }
83                        if (data[user].indexOf('wi',0) >= 0)
84                        {
85                                Element('em_input_writeAcl').checked = true;
86                        }
87                       
88                        if (data[user] != "false" && data[user].indexOf('a',0) >= 0)
89                        {
90                                Element('em_input_sendAcl').disabled = false;
91                                Element('em_input_sendAcl').checked = true;
92                        }
93                        if (data[user] != "false" && data[user].indexOf('p',0) >= 0)
94                        {
95                                Element('em_input_saveAcl').disabled = false;
96                                Element('em_input_saveAcl').checked = true;
97                        }
98                        if( data[user] != "false" && Element('em_input_writeAcl').checked && Element('em_input_sendAcl').checked ){
99                                Element('em_input_saveAcl').disabled = false;
100                        } else Element('em_input_saveAcl').disabled = true;
101                }
102                cExecute ("$this.imap_functions.getaclfromuser&user="+user, handler_getaclfromuser);
103        }
104       
105        cShareMailbox.prototype.setaclfromuser = function()
106        {
107                var acl         = '';
108                var select      = Element('em_select_sharefolders_users');
109
110                if(select.selectedIndex == "-1"){
111                        alert("Selecione antes um usuário!");
112                        return false;
113                }
114                var user = select.options[select.selectedIndex].value;
115               
116                if (Element('em_input_readAcl').checked) {
117                        Element('em_input_sendAcl').disabled = false;
118                        acl = 'lrs';
119                }
120                else{
121                        Element('em_input_sendAcl').disabled = true;
122                        Element('em_input_sendAcl').checked = false;
123                }
124                               
125                if (Element('em_input_deleteAcl').checked)
126                        acl += 'd';
127
128                if (Element('em_input_writeAcl').checked) {
129                        acl += 'wi';                   
130                }               
131                if (Element('em_input_sendAcl').checked){
132                        acl += 'a';                     
133                }
134                if (Element('em_input_sendAcl').checked && Element('em_input_writeAcl').checked){
135                        Element('em_input_saveAcl').disabled = false;                           
136                } else {
137                        Element('em_input_saveAcl').disabled = true;
138                        Element('em_input_saveAcl').checked = false;
139                }
140               
141                if (Element('em_input_saveAcl').checked)
142                        acl += 'p';
143               
144                var handler_setaclfromuser = function(data) {
145                        if (!data)
146                                alert(data);   
147                        return true;
148                }
149                cExecute ("$this.imap_functions.setaclfromuser&user="+user+"&acl="+acl, handler_setaclfromuser);
150        }
151       
152        cShareMailbox.prototype.makeWindow = function(options)
153        {
154                _this = this;
155       
156                var el = document.createElement("DIV");
157                    el.style.visibility = "hidden";
158                    el.style.position = "absolute";
159                    el.style.left = "0px";
160                    el.style.top = "0px";
161                    el.style.width = "0px";
162                    el.style.height = "0px";
163                    el.id = 'dJSWin_sharefolders';
164               
165                document.body.appendChild(el);
166
167                if (Element('em_select_sharefolders_users'))
168                {
169                        var select_users = Element('em_select_sharefolders_users');
170                            select_users.innerHTML = '#' + options;
171                            select_users.outerHTML = select_users.outerHTML;
172                       
173                        Element('em_input_readAcl').checked     = false;
174                        Element('em_input_deleteAcl').checked   = false;
175                        Element('em_input_writeAcl').checked    = false;
176                        Element('em_input_sendAcl').checked     = false;
177                        Element('em_input_saveAcl').checked     = false;
178                }
179                else
180                {
181                    el.innerHTML =  '<div style="width:645px; height:340px; margin: 2px !important; ">'+
182                                        '<fieldset style="height:300px;">'+
183                                            '<div style="width:500px; height:15px; font-size:8pt; color:red;">'+
184                                                get_lang('Note: This sharing will take action on all of your folders and messages.')+
185                                            '</div>'+
186                                            '<br clear="all"/>'+
187                                            '<div style="width:250px; height: 300px; position:aboslute; float:left;">'+
188                                                '<label>'+get_lang('Organization')+'</label>'+
189                                                '<br/>'+
190                                                '<select id="em_combo_org" onchange="javascript:sharemailbox.get_available_users(this.value);"></select>'+
191                                                '<br/><br/>'+
192                                                '<label>'+get_lang('Search user')+'<span style="margin-left:10px; color:red;" id="em_span_searching">&nbsp;</span><br></label>'+
193                                                '<input id="em_input_searchUser" size="30" autocomplete="off"  onkeyup="javascript:sharemailbox.optionFinderTimeout(this, event)">'+
194                                                '<div style="margin-top:17px;"><label>'+get_lang('Users')+':</label></div>'+
195                                                '<select id="em_select_available_users" style="width:250px; height:150px" multiple></select></td>'+
196                                            '</div>'+
197                                            '<div style="width:20px; height: 300px; position:relative; float:left;">'+
198                                                '<div style="margin-top:120px;margin-left:3px;">'+
199                                                    '<img onClick="javascript:sharemailbox.add_user();" src="../phpgwapi/templates/azul/images/tabs-r0.gif" style="vertical-align:middle;cursor:pointer;">'+
200                                                    '<br/><br/>'+
201                                                    '<img onClick="javascript:sharemailbox.remove_user();" src="../phpgwapi/templates/azul/images/tabs-l0.gif" style="vertical-align:middle;cursor:pointer;">'+
202                                                '</div>'+
203                                            '</div>'+
204                                            '<div style="width:348px; height:300px; position:relative; float:right;">'+
205                                                '<div style="margin-top:90px;"><label>'+get_lang('Your mailbox is shared with')+' :</label></div>'+
206                                                '<div style="position:absolute; float:left;">'+
207                                                    '<select onchange=sharemailbox.getaclfromuser(this.value); id="em_select_sharefolders_users" size="13" style="width:245px;height:150px">'+options+'</select>'+
208                                                '</div>'+
209                                                '<div style="position:relative; float:right; width:98px;">'+
210                                                        '<fieldset>'+
211                                                            '<legend>'+get_lang('Permission')+'</legend>'+
212                                                            '<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/>'+
213                                                            '<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>'+
214                                                            '<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>'+
215                                                            '<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>'+
216                                                            '<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>'+
217                                                        '</fieldset>'+
218                                                '</div>'+
219                                            '</div>'+
220                                        '</fieldset>'+
221                                     '</div>';
222                }
223
224                var handler_organizations = function(data)
225                {
226                        var user_organization = Element('user_organization').value;
227                       
228                        for(i = 0; i < data.length; i++)
229                        {
230                                Element('em_combo_org').options[i] = new Option(data[i].ou,data[i].dn);
231                                if(data[i].ou.indexOf("dc=") != -1 || user_organization.toUpperCase() == data[i].ou.toUpperCase())
232                                {
233                                        Element('em_combo_org').options[i].selected = true;
234                                        _this.get_available_users(data[i].dn);
235                                }
236                        }
237                }
238                cExecute ("$this.ldap_functions.get_organizations2&referral=false", handler_organizations);
239
240                var butt = Element('dJSWin_wfolders_bok')
241               
242                if ( !butt )
243                {
244                        butt = document.createElement('INPUT');
245                        butt.style.marginLeft = "5px";
246                        butt.id = 'dJSWin_wfolders_bok';
247                        butt.type = 'button';
248                        butt.value = get_lang('Save');
249                        el.appendChild(butt);
250                }
251                butt.onclick = function ()
252                {
253                        // Needed select all options from select
254                        var users_setacl = new Array();
255                        select_users = Element('em_select_sharefolders_users');
256                        for(var i=0; i<select_users.options.length; i++)
257                        {
258                                users_setacl[i] = select_users.options[i].value;
259                        }
260                        attributes = connector.serialize(users_setacl);
261                       
262                        var handler_save = function(data)
263                        {
264                                if (data)
265                                {
266                                        alert(get_lang('Shared options saved with success'));
267                                        sharemailbox.arrayWin[el.id].close();
268                                }
269                        }
270
271                        cExecute ("$this.imap_functions.setacl", handler_save, 'users='+attributes);
272
273                }
274               
275                var space = document.createElement('SPAN');
276                space.innerHTML = "&nbsp;&nbsp;";
277                el.appendChild(space);
278               
279                var butt = document.createElement('BUTTON');
280                var buttext = document.createTextNode(get_lang('Close'));
281                butt.appendChild(buttext);
282                butt.onclick = function () {sharemailbox.arrayWin[el.id].close();};
283                el.appendChild(butt);
284               
285                _this.showWindow(el);
286        }
287       
288        cShareMailbox.prototype.showWindow = function (div)
289        {
290                if(! div) {
291                        alert(get_lang('This list has no participants'));
292                        return;
293                }
294               
295                if(! this.arrayWin[div.id])
296                {
297                        div.style.height = "370px";
298                        div.style.width = "655px";
299                        var title = ":: "+get_lang("Mailbox Sharing")+" ::";
300                        var wHeight = div.offsetHeight + "px";
301                        var wWidth =  div.offsetWidth   + "px";
302                        div.style.width = div.offsetWidth - 5;
303
304                        win = new dJSWin({
305                                id: 'win_'+div.id,
306                                content_id: div.id,
307                                width: wWidth,
308                                height: wHeight,
309                                title_color: '#3978d6',
310                                bg_color: '#eee',
311                                title: title,
312                                title_text_color: 'white',
313                                button_x_img: '../phpgwapi/images/winclose.gif',
314                                border: true });
315                       
316                        this.arrayWin[div.id] = win;
317                        win.draw();
318                }
319                else {
320                        win = this.arrayWin[div.id];
321                }
322                Element('em_input_sendAcl').disabled = true;
323                Element('em_input_saveAcl').disabled = true;
324                win.open();
325        }
326       
327        cShareMailbox.prototype.optionFinderTimeout = function(Obj, Event )
328        {
329                var minNumChar  = sharedFolders_min_num_characters;
330                var oWait       = document.getElementById("em_span_searching");
331                this.context    = document.getElementById('em_combo_org').value;
332               
333                if( ( parseInt(minNumChar) > 0 && minNumChar.toString() != "" ) &&
334                        sharedFolders_users_auto_search.toString() === "false" )
335                {
336                        var key             = [8,27,37,38,39,40];
337                        var ev              = Event;
338                        var _inputSearch    = Obj;
339                       
340                        var cleanLabel = function(obj)
341                        {
342                                obj.innerHTML = "";
343                        }
344                       
345                        var getUsers = function( _input, obj )
346                        {
347                            var context = sharemailbox.context;
348                            var cn      = _input.value;
349                           
350                            sharemailbox.get_available_users2( context, cn );
351
352                            cleanLabel(obj);
353                        }
354
355                        for( var i in key )
356                        {
357                            if( ev.keyCode == key[i])
358                            {   
359                                return false;
360                            }
361                        }
362
363                        if( _inputSearch.value.length < parseInt(minNumChar) )
364                        {
365                                oWait.innerHTML = " ( Digite mais " + ( parseInt(minNumChar) - _inputSearch.value.length ) + " )";
366                                setTimeout(function(){cleanLabel(oWait);}, 2000);
367                        }
368                        else
369                        {
370                                oWait.innerHTML = " ( Buscando aguarde .... )";
371                               
372                                if( this.finderTimeout )
373                                        clearTimeout(this.finderTimeout);
374
375                                this.finderTimeout = setTimeout(function(){ getUsers( _inputSearch, oWait); }, 1000);
376                        }       
377                }
378                else
379                {
380                    if( this.finderTimeout )
381                        clearTimeout(this.finderTimeout);
382
383                    oWait.innerHTML = get_lang('Searching')+"...";
384                   
385                    this.finderTimeout = setTimeout(function(){ sharemailbox.optionFinder(Obj.id); }, 1000);
386                }
387        }
388       
389        cShareMailbox.prototype.optionFinder = function(id)
390        {
391                var oWait = document.getElementById("em_span_searching");
392                var oText = document.getElementById(id);
393                       
394                //Limpa todo o select
395               
396                var select_available_users_tmp = document.getElementById('em_select_available_users')
397                for(var i = 0;i < select_available_users_tmp.options.length; i++)
398                        select_available_users_tmp.options[i--] = null;
399
400                var RegExp_name = new RegExp("\\b"+oText.value, "i");
401               
402                //Inclui usuário começando com a pesquisa
403                if (typeof(select_available_users_clone)  != "undefined"){
404                        for(i = 0; i < select_available_users_clone.length; i++){
405                                if (RegExp_name.test(select_available_users_clone[i].text))
406                                {
407                                        sel = select_available_users_tmp.options;
408                                        option = new Option(select_available_users_clone[i].text,select_available_users_clone[i].value);                               
409                                        sel[sel.length] = option;
410                                }
411                        }
412                }
413               
414                oWait.innerHTML = '';
415        }
416       
417        cShareMailbox.prototype.add_user = function()
418        {
419                var select_available_users = document.getElementById('em_select_available_users');
420                var select_users = document.getElementById('em_select_sharefolders_users');
421
422                var count_available_users = select_available_users.length;
423                var count_users = select_users.options.length;
424                var new_options = '';
425       
426                for (i = 0 ; i < count_available_users ; i++)
427                {
428                        if (select_available_users.options[i].selected)
429                        {
430                                if(document.all)
431                                {
432                                        if ( (select_users.innerHTML.indexOf('value='+select_available_users.options[i].value)) == '-1' )
433                                        {
434                                                new_options +=  '<option value='
435                                                                        + select_available_users.options[i].value
436                                                                        + '>'
437                                                                        + select_available_users.options[i].text
438                                                                        + '</option>';
439                                        }
440                                }
441                                else
442                                {
443                                        if ( (select_users.innerHTML.indexOf('value="'+select_available_users.options[i].value+'"')) == '-1' )
444                                        {
445                                                new_options +=  '<option value='
446                                                                        + select_available_users.options[i].value
447                                                                        + '>'
448                                                                        + select_available_users.options[i].text
449                                                                        + '</option>';
450                                        }
451                                }
452                        }
453                }
454
455                if (new_options != '')
456                {
457                        select_users.innerHTML = '#' + new_options + select_users.innerHTML;
458                        select_users.outerHTML = select_users.outerHTML;
459                }
460        }
461
462        cShareMailbox.prototype.remove_user = function()
463        {
464                select_users = document.getElementById('em_select_sharefolders_users');
465       
466                for(var i = 0;i < select_users.options.length; i++)
467                        if(select_users.options[i].selected)
468                                select_users.options[i--] = null;
469                               
470                Element('em_input_readAcl').checked = false;
471                Element('em_input_deleteAcl').checked = false;
472                Element('em_input_writeAcl').checked = false;
473                Element('em_input_sendAcl').checked = false;
474                Element('em_input_saveAcl').checked = false;
475        }
476       
477       
478/* Build the Object */
479        var sharemailbox;
480        sharemailbox = new cShareMailbox();
Note: See TracBrowser for help on using the repository browser.