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

Revision 4614, 19.1 KB checked in by alexandrecorreia, 13 years ago (diff)

Ticket #1808 - Corrigido para que o tipo da busca seja configurada na administracao do expresso

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