source: trunk/expressoAdmin1_2/js/jscode/shared_accounts.js @ 5589

Revision 5589, 21.5 KB checked in by angelo, 12 years ago (diff)

Ticket #2505 - Nao fecha janela de criacao e alteracao de conta compartilhada

  • Property svn:mime-type set to text/plain
Line 
1countFiles = 1;
2
3function create_shared_accounts()
4{
5//      select_owners = Element('ea_select_owners');
6        hidden_owners_acl = Element('owners_acls');
7        hidden_owners_calendar_acl = Element('owners_calendar_acls');
8
9        select_owners = Element('ea_select_owners');
10        for(var i = 0;i < select_owners.options.length; i++)
11                select_owners.options[i].selected = true;
12               
13        hidden_owners_acl.value =  admin_connector.serialize(sharemailbox.ownersAcl);
14        hidden_owners_calendar_acl.value =  admin_connector.serialize(sharemailbox.ownersCalendarAcl);
15        cExecuteForm ("$this.shared_accounts.create", document.forms['shared_accounts_form'], handler_create_shared_accounts);
16        hidden_owners_acl.value = "";
17}
18
19function handler_create_shared_accounts(data_return)
20{
21        handler_create_shared_accounts2(data_return);
22        return;
23}
24
25function handler_create_shared_accounts2(data_return)
26{
27        if (data_return && !data_return.status)
28        {
29                write_msg(data_return.msg, 'error');
30        }
31        else
32        {
33                close_lightbox();
34                write_msg(get_lang('Shared account successful created') + '.', 'normal');
35        }
36        return;
37}
38
39function empty_inbox(uid)
40{
41var action = get_lang('Cleanned user mailbox');
42var handler_write_log = function(){}
43
44var handler_empty_inbox = function(data)
45{
46    if (!data.status)
47        alert(data.msg);
48    else{
49        cExecute ('$this.user.write_log_from_ajax&_action='+action+'&userinfo='+uid, handler_write_log);
50        alert(get_lang('Emptied') +' '+ data.inbox_size + ' ' + get_lang('MB from user inbox'));
51        document.getElementById('mailquota_used').value = data.mailquota_used;
52    }
53}
54    cExecute ('$this.shared_accounts.empty_inbox&uid='+Element('anchor').value, handler_empty_inbox);
55}
56function set_onload()
57{
58
59    if(sharemailbox.ownersAcl)
60        {
61            delete sharemailbox.ownersAcl;
62            sharemailbox.ownersAcl = new Array();
63                }
64
65    if(sharemailbox.ownersCalendarAcl)
66                {
67        delete sharemailbox.ownersAcl;
68        sharemailbox.ownersAcl = new Array();
69        }
70
71        get_associated_domain(Element('ea_combo_org').value);
72}
73
74function search_organization(key, element)
75{
76        var organizations = Element(element);
77        var RegExp_org = new RegExp("\\b"+key, "i");
78       
79        for(i = 0; i < organizations.length; i++)
80        {
81                if (RegExp_org.test(organizations[i].text))
82                {
83                        organizations[i].selected = true;
84                        return;
85                }
86        }
87}
88
89function sinc_combos_org(context)
90{
91        combo_org_available_users = Element('ea_combo_org_available_users');
92
93        for (i=0; i<combo_org_available_users.length; i++)
94        {
95                if (combo_org_available_users.options[i].value == context)
96                {
97                        combo_org_available_users.options[i].selected = true;
98//                      get_available_users(context);
99                        break;
100                }
101        }
102}
103
104function optionFinderTimeout(obj, event)
105{
106        if( event.keyCode === 13 )
107        {
108            limit = 0;
109            optionFinder(obj.id);
110        }
111}
112function optionFinder(id) {
113       
114        var sentence = Element(id).value;
115
116        var url = '$this.ldap_functions.get_available_users2&context=' +
117                            Element('ea_combo_org_available_users').value +
118                            ( sentence ? '&sentence=' + sentence: '' );
119
120        userFinder( sentence, 'ea_select_available_users', url, 'ea_span_searching' );
121}                       
122
123function add_user()
124{
125        select_available_users = Element('ea_select_available_users');
126        select_owners = Element('ea_select_owners');
127
128        var count_available_users = select_available_users.length;
129        var new_options = '';
130
131        for (i = 0 ; i < count_available_users ; i++)
132        {
133                if (select_available_users.options[i].selected)
134                {
135                        if(document.all)
136                        {
137                                if ( (select_owners.innerHTML.indexOf('value='+select_available_users.options[i].value)) == '-1' )
138                                {
139                                        new_options +=  "<option value="
140                                                                + select_available_users.options[i].value
141                                                                + ">"
142                                                                + select_available_users.options[i].text
143                                                                + "</options>";
144                                }
145                        }
146                        else
147                        {
148                                if ( (select_owners.innerHTML.indexOf('value="'+select_available_users.options[i].value+'"')) == '-1' )
149                                {
150                                        new_options +=  "<option value="
151                                                                + select_available_users.options[i].value
152                                                                + ">"
153                                                                + select_available_users.options[i].text
154                                                                + "</options>";
155                                }
156                        }
157                }
158        }
159
160        if (new_options != '')
161        {
162                select_owners.innerHTML = "&nbsp;" + new_options + select_owners.innerHTML;
163                select_owners.outerHTML = select_owners.outerHTML;             
164        Element('em_input_readAcl').checked = false;
165                Element('em_input_deleteAcl').checked = false;
166                Element('em_input_writeAcl').checked = false;
167                Element('em_input_sendAcl').checked = false;
168                Element('em_input_saveAcl').checked = false;
169                Element('em_input_folderAcl').checked = false;
170                Element('em_input_readCalendar').checked = false;
171                Element('em_input_writeCalendar').checked = false;
172                Element('em_input_editCalendar').checked = false;
173                Element('em_input_deleteCalendar').checked = false;
174                Element('em_input_restrictCalendar').checked = false;
175        Element('em_input_sendAcl').disabled = true;
176        select_owners = Element('ea_select_owners');
177        select_owners.options[0].selected = true;
178        }
179}
180
181function remove_user()
182{
183        select_owners = Element('ea_select_owners');
184        for(var i = 0;i < select_owners.options.length; i++)
185                if(select_owners.options[i].selected){
186                        var user = select_owners.options[i].value;
187                        delete sharemailbox.ownersAcl[user];
188                       sharemailbox.ownersCalendarAcl[user] = '';
189                        select_owners.options[i--] = null;
190                }
191                //Nova chamada a "Element" é Necessária devido a um bug do ie com select
192           select_owners = Element('ea_select_owners');
193       if(select_owners.options.length > 0 ){
194            select_owners.options[0].selected = true;
195            var user = select_owners.options[0].value;
196            sharemailbox.getaclfromuser(user);
197       }
198}
199
200function get_shared_accounts_timeOut(input, event)
201{
202        Element('shared_accounts_content').innerHTML = '<table border="0" width="90%"><tr bgcolor="#d3dce3"><td width="30%">'+get_lang("full name")+'</td><td width="30%">'+get_lang("display name")+'</td><td width="30%">'+get_lang("mail")+'</td><td width="5%" align="center">'+get_lang("remove")+'</td></tr></table>';
203       
204        if (event.keyCode === 13)
205        {
206            get_shared_accounts( input );
207        }
208}
209
210function get_shared_accounts(input, callback)
211{
212        var handler_get_shared_accounts = function(data)
213        {
214                if (data.status == 'true')
215                {
216                        var table = '<table border="0" width="90%"><tr bgcolor="#d3dce3"><td width="30%">'+get_lang("full name")+'</td><td width="30%">'+get_lang("display name")+'</td><td width="30%">'+get_lang("mail")+'</td><td width="5%" align="center">'+get_lang("remove")+'</td></tr>'+data.trs+'</table>';
217                        Element('shared_accounts_content').innerHTML = table;
218                }
219                else
220                        write_msg(data.msg, 'error');
221        }
222        cExecute ('$this.ldap_functions.get_shared_accounts&input='+input, handler_get_shared_accounts);
223}
224
225function edit_shared_account(uid)
226{
227        var handle_edit_shared_account = function(data)
228        {
229                if (data.status == 'true')
230                {
231                        modal('shared_accounts_modal','save');
232                       
233                        Element( 'lightboxCaption' ).innerHTML = get_lang( 'Edit Shared Accounts' );
234                        Element('shared_accounts_modal').value = data.mailquota;
235
236
237                        var combo_org = Element('ea_combo_org');
238                        for (i=0; i<combo_org.length; i++)
239                        {
240                                if (combo_org.options[i].value == data.user_context)
241                                {
242                                        combo_org.options[i].selected = true;
243                                        break;
244                                }
245                        }
246                       
247                        // anchor
248                        Element('anchor').value = "uid=" + uid + ',' + data.user_context;                       
249                       
250                        if (data.accountStatus != 'active')
251                                Element('accountStatus').checked = false;
252                               
253                        if (data.phpgwAccountVisible == '-1')
254                                Element('phpgwAccountVisible').checked = true;
255                         Element('uidnumber').value = data.uidnumber;
256                        Element('cn').value = data.cn;
257                        Element('mail').value = data.mail;
258            Element('mailquota').value = data.mailquota;
259            Element('mailquota_used').value = data.mailquota_used;
260            Element('quota_used_field').style.display = 'inline';
261            Element('desc').value = data.description;
262            //Necessario, pois o IE6 tem um bug que não exibe as novas opções se o innerHTML estava vazio
263            Element('ea_select_owners').innerHTML = '&nbsp;' + data.owners_options;
264            Element('ea_select_owners').outerHTML = Element('ea_select_owners').outerHTML;
265
266            Element('display_empty_inbox').style.display = data.display_empty_inbox;
267            if( data.allow_edit_shared_account_acl == "0"){
268                Element('bt_add_user').disabled = true;
269                Element('bt_remove_user').disabled = true;
270                Element('em_input_readAcl').disabled = true;
271                Element('em_input_deleteAcl').disabled = true;
272                Element('em_input_writeAcl').disabled = true;
273                Element('em_input_sendAcl').disabled = true;
274                Element('em_input_saveAcl').disabled = true;
275                Element('em_input_folderAcl').disabled = true;
276            }
277
278            if( data.mailalternateaddress )
279                loadAppended( 'mailalternateaddress', data.mailalternateaddress );
280
281                        sinc_combos_org(data.user_context);
282                        sharemailbox.ownersAcl = new Array();
283                        sharemailbox.ownersCalendarAcl = new Array();
284            if( data.owners && data.owners != "undefined" && data.owners_acl != "undefined" ){
285                                for (i=0; i<data.owners.length; i++){
286                                                sharemailbox.ownersAcl[ data.owners[i] ] = data.owners_acl[i]; 
287                                                sharemailbox.ownersCalendarAcl[ data.owners[i] ] = data.owners_calendar_acl[i];
288                                }
289            }
290                }
291                else
292                        write_msg(data.msg, 'error');
293        }
294        cExecute ('$this.shared_accounts.get_data&uid='+uid, handle_edit_shared_account);
295}
296
297function save_shared_accounts()
298{
299        if (is_ie){
300                var i = 0;
301                while (document.forms(i).name != "shared_accounts_form"){i++}
302                form = document.forms(i);
303        }
304        else   form = document.forms["shared_accounts_form"];
305       
306         hidden_owners_calendar_acl = Element('owners_calendar_acls');
307        hidden_owners_acl = Element('owners_acls');
308        select_owners = Element('ea_select_owners');
309        for(var i = 0;i < select_owners.options.length; i++){           
310                var user = select_owners.options[i].value;               
311                select_owners.options[i].value = user;
312                }
313        hidden_owners_acl.value =  admin_connector.serialize(sharemailbox.ownersAcl);
314        hidden_owners_calendar_acl.value =  admin_connector.serialize(sharemailbox.ownersCalendarAcl);
315        cExecuteForm ("$this.shared_accounts.save", form, handler_save_shared_accounts);
316        get_shared_accounts(Element('ea_shared_account_search').value);
317}
318
319function handler_save_shared_accounts(data_return)
320{
321        handler_save_shared_accounts2(data_return);
322        return;
323}
324function handler_save_shared_accounts2(data_return)
325{
326        if (!data_return.status)
327        {
328                write_msg(data_return.msg, 'error');
329        }
330        else
331        {
332               
333                hidden_owners_acl.value = "";
334                close_lightbox();
335                write_msg(get_lang('Shared account successful saved') + '.', 'normal');
336        }
337        return;
338}
339
340function delete_shared_accounts(uid)
341{
342        if (!confirm(get_lang('Are you sure that you want to delete this shared account') + "?"))
343                return;
344       
345        var handle_delete_shared_account = function(data_return)
346        {
347                if (!data_return.status)
348                {
349                        write_msg(data_return.msg, 'error');
350                }
351                else
352                {
353                        write_msg(get_lang('Shared account successful deleted') + '.', 'normal');
354                        get_shared_accounts(Element('ea_shared_account_search').value);
355                }
356                return;
357        }
358        cExecute ('$this.shared_accounts.delete&uid='+uid, handle_delete_shared_account);
359}function cShareMailbox()
360        {
361                this.arrayWin = new Array();
362                this.el;
363                this.alert = false;
364                this.ownersAcl = new Array();
365                this.ownersCalendarAcl = new Array();
366        }
367
368        cShareMailbox.prototype.get_available_users = function(context)
369        {
370                var handler_get_available_users = function(data)
371                {
372                        select_available_users = document.getElementById('em_select_available_users');
373               
374                        //Limpa o select
375                        for(var i=0; i<select_available_users.options.length; i++)
376                        {
377                                select_available_users.options[i] = null;
378                                i--;
379                        }
380
381                        if ((data) && (data.length > 0))
382                        {
383                                // Necessario, pois o IE6 tem um bug que retira o primeiro options se o innerHTML estiver vazio.
384                                select_available_users.innerHTML = '#' + data;
385                                select_available_users.outerHTML = select_available_users.outerHTML;
386                       
387                                select_available_users.disabled = false;
388                                select_available_users_clone = document.getElementById('em_select_available_users').cloneNode(true);
389                                document.getElementById('em_input_searchUser').value = '';
390                        }
391                }
392                cExecute ("$this.ldap_functions.get_available_users2&context="+context, handler_get_available_users);
393        }
394
395        cShareMailbox.prototype.getaclfromuser = function(user)
396        {
397       
398                Element('em_input_readAcl').checked = false;
399                Element('em_input_deleteAcl').checked = false;
400                Element('em_input_writeAcl').checked = false;
401                Element('em_input_sendAcl').checked = false;
402                Element('em_input_saveAcl').checked = false;
403                Element('em_input_saveAcl').disabled = true;
404                Element('em_input_folderAcl').checked = false;
405                Element('em_input_readCalendar').checked = false;
406                Element('em_input_writeCalendar').checked = false;
407                Element('em_input_editCalendar').checked = false;
408                Element('em_input_deleteCalendar').checked = false;
409                Element('em_input_restrictCalendar').checked = false;
410
411                Element('em_input_editCalendar').disabled = true;
412                Element('em_input_deleteCalendar').disabled = true;
413                Element('em_input_restrictCalendar').disabled = true;
414               
415                if(this.ownersCalendarAcl[user])
416                {
417                    if (this.ownersCalendarAcl[user].indexOf('1-',0) >= 0)
418                    {
419                            Element('em_input_readCalendar').checked = true;
420
421                            Element('em_input_editCalendar').disabled = false;
422                            Element('em_input_deleteCalendar').disabled = false;
423                            Element('em_input_restrictCalendar').disabled = false;
424                    }
425                    if (this.ownersCalendarAcl[user].indexOf('2-',0) >= 0)
426                    {
427                            Element('em_input_writeCalendar').checked = true;
428                    }
429                    if (this.ownersCalendarAcl[user].indexOf('4-',0) >= 0)
430                    {
431                            Element('em_input_editCalendar').checked = true;
432                    }
433                    if (this.ownersCalendarAcl[user].indexOf('8-',0) >= 0)
434                    {
435                            Element('em_input_deleteCalendar').checked = true;
436                    }
437                    if (this.ownersCalendarAcl[user].indexOf('16-',0) >= 0)
438                    {
439                            Element('em_input_restrictCalendar').checked = true;
440                    }
441                }
442
443                if(this.ownersAcl[user])
444                {
445                    if ( this.ownersAcl[user].indexOf('lrs',0) >= 0)
446                {
447                        Element('em_input_sendAcl').disabled = false;
448                        Element('em_input_readAcl').checked = true;
449                }
450                else
451                        Element('em_input_sendAcl').disabled = true;
452                       
453                    if ( this.ownersAcl[user].indexOf('d',0) >= 0)
454                {
455                        Element('em_input_deleteAcl').checked = true;
456                }
457                    if ( this.ownersAcl[user].indexOf('wi',0) >= 0)
458                {
459                        Element('em_input_writeAcl').checked = true;
460                }               
461                    if (this.ownersAcl[user].indexOf('a',0) >= 0)
462                {
463                        Element('em_input_sendAcl').disabled = false;
464                        Element('em_input_sendAcl').checked = true;
465                }
466                    if ( this.ownersAcl[user].indexOf('p',0) >= 0)
467                {
468                        Element('em_input_saveAcl').disabled = false;
469                        Element('em_input_saveAcl').checked = true;
470                }
471                    if ( this.ownersAcl[user].indexOf('c',0) >= 0)
472                {
473                        Element('em_input_folderAcl').checked = true;
474                }
475                    if( Element('em_input_writeAcl').checked && Element('em_input_sendAcl').checked ){
476                        Element('em_input_saveAcl').disabled = false;
477                } else Element('em_input_saveAcl').disabled = true;
478        }
479        }
480       
481        cShareMailbox.prototype.setaclfromuser = function()
482        {
483                var acl         = '';
484                var select      = Element('ea_select_owners');
485
486                if(select.selectedIndex == "-1"){
487                        alert("Selecione antes um usuario!");
488                        return false;
489                }
490               
491                for(var k = 0; k < select.options.length; k ++ )
492                {
493                    if(select.options[k].selected !== true ) continue;
494                   
495                   
496                    acl = '';
497                    var user = select.options[k].value;
498               
499                if (Element('em_input_readAcl').checked) {
500                        Element('em_input_sendAcl').disabled = false;
501                        acl = 'lrs';
502                }
503                else{
504                        Element('em_input_sendAcl').disabled = true;
505                        Element('em_input_sendAcl').checked = false;
506                }
507                               
508                if (Element('em_input_deleteAcl').checked)
509                        acl += 'd';
510
511                if (Element('em_input_writeAcl').checked)
512                        acl += 'wi';
513
514                if (Element('em_input_sendAcl').checked)
515                        acl += 'a';
516               
517                if (Element('em_input_folderAcl').checked)
518                        acl += 'c';
519                               
520                if (Element('em_input_sendAcl').checked && Element('em_input_writeAcl').checked){
521                        Element('em_input_saveAcl').disabled = false;                           
522                } else {
523                        Element('em_input_saveAcl').disabled = true;
524                        Element('em_input_saveAcl').checked = false;
525                }
526                if (Element('em_input_saveAcl').checked)
527                        acl += 'p';
528                       
529                this.ownersAcl[user] = acl;             
530        }
531        }
532
533        cShareMailbox.prototype.setCalendaraclfromuser = function()
534        {
535                var acl         = '';
536                var select      = Element('ea_select_owners');
537
538                if(select.selectedIndex == "-1"){
539                        alert("Selecione antes um usuario!");
540                        return false;
541                }
542               
543                for(var k = 0; k < select.options.length; k ++ )
544                {
545                    if(select.options[k].selected !== true ) continue;
546                   
547                    acl = '';
548                    var user = select.options[k].value;
549
550                    if (Element('em_input_readCalendar').checked)
551                    {
552
553                        acl += '1-';
554
555                        Element('em_input_editCalendar').disabled = false;
556                        Element('em_input_deleteCalendar').disabled = false;
557                        Element('em_input_restrictCalendar').disabled = false;
558
559                        if (Element('em_input_editCalendar').checked)
560                                acl += '4-';
561
562                        if (Element('em_input_deleteCalendar').checked)
563                                acl += '8-';
564
565                        if (Element('em_input_restrictCalendar').checked)
566                                acl += '16-';
567                    }
568                    else
569                    {
570                        Element('em_input_editCalendar').disabled = true;
571                        Element('em_input_deleteCalendar').disabled = true;
572                        Element('em_input_restrictCalendar').disabled = true;
573                        Element('em_input_editCalendar').checked = false;
574                        Element('em_input_deleteCalendar').checked = false;
575                        Element('em_input_restrictCalendar').checked = false;
576                    }
577
578                    if (Element('em_input_writeCalendar').checked)
579                            acl += '2-';
580
581
582                    this.ownersCalendarAcl[user] = acl;
583                }
584        }
585               
586        cShareMailbox.prototype.add_user = function()
587        {
588                var select_available_users = document.getElementById('em_select_available_users');
589                var select_users = document.getElementById('ea_select_owners');
590
591                var count_available_users = select_available_users.length;
592                var count_users = select_users.options.length;
593                var new_options = '';
594       
595                for (i = 0 ; i < count_available_users ; i++)
596                {
597                        if (select_available_users.options[i].selected)
598                        {
599                                if(document.all)
600                                {
601                                        if ( (select_users.innerHTML.indexOf('value='+select_available_users.options[i].value)) == '-1' )
602                                        {
603                                                new_options +=  '<option value='
604                                                                        + select_available_users.options[i].value
605                                                                        + '>'
606                                                                        + select_available_users.options[i].text
607                                                                        + '</option>';
608                                        }
609                                }
610                                else
611                                {
612                                        if ( (select_users.innerHTML.indexOf('value="'+select_available_users.options[i].value+'"')) == '-1' )
613                                        {
614                                                new_options +=  '<option value='
615                                                                        + select_available_users.options[i].value
616                                                                        + '>'
617                                                                        + select_available_users.options[i].text
618                                                                        + '</option>';
619                                        }
620                                }
621                        }
622                }
623
624                if (new_options != '')
625                {
626                        select_users.innerHTML = '#' + new_options + select_users.innerHTML;
627                        select_users.outerHTML = select_users.outerHTML;
628                       
629                }
630        }
631
632        cShareMailbox.prototype.remove_user = function()
633        {
634                select_users = document.getElementById('ea_select_owners');
635       
636                for(var i = 0;i < select_users.options.length; i++)
637                        if(select_users.options[i].selected)
638                    {
639                       
640                        var user = select_users.options[i].value;
641                        this.ownersCalendarAcl[user] = '';
642                                select_users.options[i--] = null;
643                               
644                    }
645               
646                Element('em_input_readAcl').checked = false;           
647                Element('em_input_deleteAcl').checked = false;
648                Element('em_input_writeAcl').checked = false;
649                Element('em_input_sendAcl').checked = false;
650                Element('em_input_saveAcl').checked = false;
651                Element('em_input_folderAcl').checked = false;
652                Element('em_input_readCalendar').checked = false;
653                Element('em_input_writeCalendar').checked = false;
654                Element('em_input_editCalendar').checked = false;
655                Element('em_input_deleteCalendar').checked = false;
656                Element('em_input_restrictCalendar').checked = false;
657        }
658       
659       
660/* Build the Object */
661        var sharemailbox;
662        sharemailbox = new cShareMailbox();
Note: See TracBrowser for help on using the repository browser.