source: companies/serpro/expressoMail1_2/js/sharemailbox.js @ 903

Revision 903, 12.4 KB checked in by niltonneto, 15 years ago (diff)

Importacao inicial do Expresso do Serpro

Line 
1        function cShareMailbox()
2        {
3                this.arrayWin = new Array();
4                this.el;
5                this.alert = false;
6        }
7
8        cShareMailbox.prototype.get_available_users = function(filter)
9        {
10                var handler_get_available_users = function(data)
11                {
12                        select_available_users = document.getElementById('em_select_available_users');
13               
14                        //Limpa o select
15                        for(var i=0; i<select_available_users.options.length; i++)
16                        {
17                                select_available_users.options[i] = null;
18                                i--;
19                        }
20
21                        if ((data) && (data.length > 0))
22                        {
23                                // Necessario, pois o IE6 tem um bug que retira o primeiro options se o innerHTML estiver vazio.
24                                select_available_users.innerHTML = '#' + data;
25                                select_available_users.outerHTML = select_available_users.outerHTML;
26                       
27                                select_available_users.disabled = false;
28                                select_available_users_clone = document.getElementById('em_select_available_users').cloneNode(true);
29                                //document.getElementById('em_input_searchUser').value = '';
30                        }
31                }
32                cExecute ("$this.ldap_functions.get_available_users2&filter="+filter, handler_get_available_users);
33        }
34
35        cShareMailbox.prototype.getaclfromuser = function(user)
36        {
37                var handler_getaclfromuser = function(data)
38                {
39                        Element('em_input_readAcl').checked = false;
40                        Element('em_input_deleteAcl').checked = false;
41                        Element('em_input_writeAcl').checked = false;
42                        Element('em_input_sendAcl').checked = false;
43                       
44                        if (data[user].indexOf('lrs',0) >= 0)
45                        {
46                                Element('em_input_sendAcl').disabled = false;
47                                Element('em_input_readAcl').checked = true;
48                        }
49                        else
50                                Element('em_input_sendAcl').disabled = true;
51                               
52                        if (data[user].indexOf('d',0) >= 0)
53                        {
54                                Element('em_input_deleteAcl').checked = true;
55                        }
56                        if (data[user].indexOf('wip',0) >= 0)
57                        {
58                                Element('em_input_writeAcl').checked = true;
59                        }
60                        if (data[user] != "false" && data[user].indexOf('a',0) >= 0)
61                        {
62                                Element('em_input_sendAcl').disabled = false;
63                                Element('em_input_sendAcl').checked = true;
64                        }
65                }
66                cExecute ("$this.imap_functions.getaclfromuser&user="+user, handler_getaclfromuser);
67        }
68       
69        cShareMailbox.prototype.setaclfromuser = function()
70        {
71                var acl         = '';
72                var select      = Element('em_select_sharefolders_users');
73
74                if(select.selectedIndex == "-1"){
75                        alert("Selecione antes um usuário!");
76                        return false;
77                }
78                var user = select.options[select.selectedIndex].value;
79               
80                if (Element('em_input_readAcl').checked) {
81                        Element('em_input_sendAcl').disabled = false;
82                        acl = 'lrs';
83                }
84                else{
85                        Element('em_input_sendAcl').disabled = true;
86                        Element('em_input_sendAcl').checked = false;
87                }
88                               
89                if (Element('em_input_deleteAcl').checked)
90                        acl += 'd';
91
92                if (Element('em_input_writeAcl').checked)
93                        acl += 'wip';
94
95                if (Element('em_input_sendAcl').checked)
96                        acl += 'a';
97               
98                var handler_setaclfromuser = function(data) {
99                        if (!data)
100                                alert(data);   
101                        return true;
102                }
103                cExecute ("$this.imap_functions.setaclfromuser&user="+user+"&acl="+acl, handler_setaclfromuser);
104        }
105       
106        cShareMailbox.prototype.makeWindow = function(options)
107        {
108                _this = this;
109       
110                var el = document.createElement("DIV");
111                el.style.visibility = "hidden";
112                el.style.position = "absolute";
113                el.style.left = "0px";
114                el.style.top = "0px";
115                el.style.width = "0px";
116                el.style.height = "0px";
117                el.id = 'dJSWin_sharefolders';
118                document.body.appendChild(el);
119
120                if (Element('em_select_sharefolders_users'))
121                {
122                        var select_users = Element('em_select_sharefolders_users');
123                        select_users.innerHTML = '#' + options;
124                        select_users.outerHTML = select_users.outerHTML;
125                       
126                        Element('em_input_readAcl').checked = false;
127                        Element('em_input_deleteAcl').checked = false;
128                        Element('em_input_writeAcl').checked = false;
129                        Element('em_input_sendAcl').checked = false;
130                }
131                else
132                {
133                        el.innerHTML = "<table border=0><tbody><tr>"+
134                                                       
135                                                        "<td valign='bottom'>"+
136                                                                '<font color="red">'+
137                                                                        get_lang('Note: This sharing will take action on all of your folders and messages.')+
138                                                                        '<br><br>'+
139                                                                '</font>'+
140                                                                get_lang('Your mailbox is shared with')
141                                                                +":<br><br>"+
142                                                                "<select onchange=sharemailbox.getaclfromuser(this.value); id='em_select_sharefolders_users' size='13' style='width:250px;height:200px'>" + options + "</select>"+
143                                                        "</td>"+
144                                                       
145                                                        "<td>"+
146                                                                '<br><br><br><br><br><br>'+
147                                                                '<img onClick="javascript:sharemailbox.add_user();" src="templates/default/images/arrow_left.png" style="vertical-align:middle;cursor:pointer;">' +
148                                                                '<br><br>'+
149                                                                '<img onClick="javascript:sharemailbox.remove_user();" src="templates/default/images/arrow_right.png" style="vertical-align:middle;cursor:pointer;">' +
150                                                        "</td>"+
151                                                       
152                                                        "<td valign='bottom'><br>"+
153                                                        //      get_lang('Organization')+":&nbsp;" +
154                                                        //      "<select id='em_combo_org' onchange='javascript:sharemailbox.get_available_users(this.value);'></select>"+
155                                                               
156                                                                "<br><br>"+get_lang('Search user')+":<br>" +
157                                                                '<input id="em_input_searchUser" size="35" autocomplete="off"  onkeyup="javascript:sharemailbox.optionFinderTimeout(this)"><br>'+
158                                                               
159                                                                '<font color="red"><span id="em_span_searching">&nbsp;</span></font><br>'+
160                                                               
161                                                                "<select id='em_select_available_users' style='width:250px;height:200px' multiple></select></td>"+
162                                                        '</tr>'+
163                                                        '<tr><td>'+
164                                                                '<table border=0><tbody><tr><td colspan=2>'+
165                                                                        get_lang('Access right')+':'+
166                                                                '</td></tr>'+
167                                                                '<tr><td>'+get_lang('Read')+':</td><td><input id=\'em_input_readAcl\' onClick="return sharemailbox.setaclfromuser();" type="checkbox"><img title="'+get_lang("hlp_msg_read_acl")+'." src=\'./templates/default/images/ajuda.jpg\'></td></tr>'+
168                                                                '<tr><td>'+get_lang('Exclusion')+':</td><td><input id=\'em_input_deleteAcl\' onClick="return sharemailbox.setaclfromuser();" type="checkbox"><img title="'+get_lang('hlp_msg_delmov_acl')+'." src=\'./templates/default/images/ajuda.jpg\'></td></tr>'+
169                                                                '<tr><td>'+get_lang('Write')+':</td><td><input id=\'em_input_writeAcl\' onClick="return sharemailbox.setaclfromuser();" type="checkbox"><img title="'+get_lang('hlp_msg_addcreate_acl')+'." src=\'./templates/default/images/ajuda.jpg\'></td></tr>'+
170                                                                '<tr><td>'+get_lang('Send')+':</td><td><input id=\'em_input_sendAcl\' onClick="return sharemailbox.setaclfromuser();" type="checkbox"><img title="'+get_lang('hlp_msg_sendlike_acl')+'." src=\'./templates/default/images/ajuda.jpg\'></td></tr></tbody></table>'+
171                                                        '</td></tr>'+
172                        "</tbody></table>";
173                }
174
175
176
177        /*      var handler_organizations = function(data){
178                        var user_organization = Element('user_organization').value;
179                       
180                        for(i = 0; i < data.length; i++) {
181                                Element('em_combo_org').options[i] = new Option(data[i].ou,data[i].dn);
182                                if(user_organization.toUpperCase() == data[i].ou.toUpperCase())
183                                {
184                                        Element('em_combo_org').options[i].selected = true;
185                                        //_this.get_available_users(data[i].dn);
186                                }
187                        }
188             _this.get_available_users(Element('em_combo_org').options[Element('em_combo_org').selectedIndex].value);
189                }*/
190                //cExecute ("$this.ldap_functions.get_organizations2&referral=false", handler_organizations);
191
192                var butt = Element('dJSWin_wfolders_bok')
193                if (!butt){
194                        butt = document.createElement('INPUT');
195                        butt.id = 'dJSWin_wfolders_bok';
196                        butt.type = 'button';
197                        butt.value = get_lang('Save');
198                        el.appendChild(butt);
199                }
200                butt.onclick = function ()
201                {
202                        // Needed select all options from select
203                        var users_setacl = new Array();
204                        select_users = Element('em_select_sharefolders_users');
205                        for(var i=0; i<select_users.options.length; i++)
206                        {
207                                users_setacl[i] = select_users.options[i].value;
208                        }
209                        attributes = connector.serialize(users_setacl);
210                       
211                        var handler_save = function(data)
212                        {
213                                if (data)
214                                {
215                                        alert(get_lang('Shared options saved with success'));
216                                        sharemailbox.arrayWin[el.id].close();
217                                }
218                        }
219
220                        cExecute ("$this.imap_functions.setacl", handler_save, 'users='+attributes);
221
222                }
223               
224                var space = document.createElement('SPAN');
225                space.innerHTML = "&nbsp;&nbsp;";
226                el.appendChild(space);
227               
228                var butt = document.createElement('BUTTON');
229                var buttext = document.createTextNode(get_lang('Close'));
230                butt.appendChild(buttext);
231                butt.onclick = function () {sharemailbox.arrayWin[el.id].close();};
232                el.appendChild(butt);
233               
234                _this.showWindow(el);
235        }
236       
237        cShareMailbox.prototype.showWindow = function (div)
238        {
239                if(! div) {
240                        alert(get_lang('This list has no participants'));
241                        return;
242                }
243               
244                if(! this.arrayWin[div.id])
245                {
246                        div.style.height = "460px";
247                        div.style.width = "540px";
248                        var title = ":: "+get_lang("Mailbox Sharing")+" ::";
249                        var wHeight = div.offsetHeight + "px";
250                        var wWidth =  div.offsetWidth   + "px";
251                        div.style.width = div.offsetWidth - 5;
252
253                        win = new dJSWin({
254                                id: 'win_'+div.id,
255                                content_id: div.id,
256                                width: wWidth,
257                                height: wHeight,
258                                title_color: '#3978d6',
259                                bg_color: '#eee',
260                                title: title,
261                                title_text_color: 'white',
262                                button_x_img: '../phpgwapi/images/winclose.gif',
263                                border: true });
264                       
265                        this.arrayWin[div.id] = win;
266                        win.draw();
267                }
268                else {
269                        win = this.arrayWin[div.id];
270                }
271                Element('em_input_sendAcl').disabled = true;
272                win.open();
273        }
274       
275        var finderTimeout = '';
276        cShareMailbox.prototype.optionFinderTimeout = function(obj)
277        {
278                clearTimeout(finderTimeout);   
279                var oWait = document.getElementById("em_span_searching");
280                oWait.innerHTML = get_lang('Searching')+"...";
281                var finderTimeout = setTimeout("sharemailbox.optionFinder('"+obj.id+"')",500);
282        }
283       
284        cShareMailbox.prototype.optionFinder = function(id)
285        {
286                var oWait = document.getElementById("em_span_searching");
287                var oText = document.getElementById(id);
288                       
289                //alert(oText.value.length+oText.value);
290
291                if (oText.value.length < 4) {
292                        var select_available_users_tmp = document.getElementById('em_select_available_users')
293                        for(var i = 0;i < select_available_users_tmp.options.length; i++)
294                                select_available_users_tmp.options[i--] = null;
295
296                }
297
298                if (oText.value.length >= 4) {
299                        //alert(oText.value.length+oText.value);
300                        _this.get_available_users(oText.value);
301
302
303                //if (oText.value.length > 4){
304                        //Limpa todo o select
305               
306                        var select_available_users_tmp = document.getElementById('em_select_available_users')
307                        for(var i = 0;i < select_available_users_tmp.options.length; i++)
308                                select_available_users_tmp.options[i--] = null;
309
310                        var RegExp_name = new RegExp("\\b"+oText.value, "i");
311               
312                        //Inclui usuário começando com a pesquisa
313                        for(i = 0; i < select_available_users_clone.length; i++){
314                                if (RegExp_name.test(select_available_users_clone[i].text))
315                                {
316                                        sel = select_available_users_tmp.options;
317                                        option = new Option(select_available_users_clone[i].text,select_available_users_clone[i].value);                               
318                                        sel[sel.length] = option;
319                                }
320                        }
321                        oWait.innerHTML = '&nbsp;';
322                }
323        }
324       
325        cShareMailbox.prototype.add_user = function()
326        {
327                var select_available_users = document.getElementById('em_select_available_users');
328                var select_users = document.getElementById('em_select_sharefolders_users');
329
330                var count_available_users = select_available_users.length;
331                var count_users = select_users.options.length;
332                var new_options = '';
333       
334                for (i = 0 ; i < count_available_users ; i++)
335                {
336                        if (select_available_users.options[i].selected)
337                        {
338                                if(document.all)
339                                {
340                                        if ( (select_users.innerHTML.indexOf('value='+select_available_users.options[i].value)) == '-1' )
341                                        {
342                                                new_options +=  '<option value='
343                                                                        + select_available_users.options[i].value
344                                                                        + '>'
345                                                                        + select_available_users.options[i].text
346                                                                        + '</option>';
347                                        }
348                                }
349                                else
350                                {
351                                        if ( (select_users.innerHTML.indexOf('value="'+select_available_users.options[i].value+'"')) == '-1' )
352                                        {
353                                                new_options +=  '<option value='
354                                                                        + select_available_users.options[i].value
355                                                                        + '>'
356                                                                        + select_available_users.options[i].text
357                                                                        + '</option>';
358                                        }
359                                }
360                        }
361                }
362
363                if (new_options != '')
364                {
365                        select_users.innerHTML = '#' + new_options + select_users.innerHTML;
366                        select_users.outerHTML = select_users.outerHTML;
367                }
368        }
369
370        cShareMailbox.prototype.remove_user = function()
371        {
372                select_users = document.getElementById('em_select_sharefolders_users');
373       
374                for(var i = 0;i < select_users.options.length; i++)
375                        if(select_users.options[i].selected)
376                                select_users.options[i--] = null;
377                               
378                Element('em_input_readAcl').checked = false;
379                Element('em_input_deleteAcl').checked = false;
380                Element('em_input_writeAcl').checked = false;
381                Element('em_input_sendAcl').checked = false;
382        }
383       
384       
385/* Build the Object */
386        var sharemailbox;
387        sharemailbox = new cShareMailbox();
Note: See TracBrowser for help on using the repository browser.