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

Revision 4978, 18.8 KB checked in by alexandrecorreia, 13 years ago (diff)

Ticket #1808 - Corrigido quando não foi setado um valor para o numero minino de caracteres

  • 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  = trim(sharedFolders_min_num_characters);
330                minNumChar  = ( minNumChar === "" || parseInt(minNumChar) == 0 ) ? 1 : minNumChar;
331               
332                var oWait       = document.getElementById("em_span_searching");
333        this.context    = document.getElementById('em_combo_org').value;
334
335        if( parseInt(minNumChar) > 0  && 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                            sharemailbox.get_available_users2( context, cn );
352
353                            cleanLabel(obj);
354                        }
355
356                        for( var i in key )
357                        {
358                                if( ev.keyCode == key[i])
359                {   
360                                        return false;
361                }
362                        }
363
364                        if( _inputSearch.value.length < parseInt(minNumChar) )
365                        {
366                                oWait.innerHTML = " ( Digite mais " + ( parseInt(minNumChar) - _inputSearch.value.length ) + " )";
367                                setTimeout(function(){cleanLabel(oWait);}, 2000);
368                        }
369                        else
370                        {
371                                oWait.innerHTML = get_lang('Searching')+"...";
372                               
373                                if( this.finderTimeout )
374                                        clearTimeout(this.finderTimeout);
375
376                                this.finderTimeout = setTimeout(function(){ getUsers( _inputSearch, oWait); }, 1000);
377                        }       
378         }
379         else
380         {
381            if( this.finderTimeout )
382                clearTimeout(this.finderTimeout);
383
384            oWait.innerHTML = get_lang('Searching')+"...";
385           
386            this.finderTimeout = setTimeout(function(){ sharemailbox.optionFinder(Obj.id); }, 1000);
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.