source: trunk/expressoMail1_2/js/sharemailbox.js @ 197

Revision 197, 11.8 KB checked in by niltonneto, 16 years ago (diff)

Ticket #147: Revisão da internacionalização
Ticket #152: Melhoria no Fora de Escritório
Implementação da funcao write_msg com a opção de não apagar aviso.
Implementação da funcao clean_msg para limpar aviso.

  • 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        }
7
8        cShareMailbox.prototype.get_available_users = function(context)
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&context="+context, 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                var handler_organizations = function(data){
176                        var user_organization = Element('user_organization').value;
177                       
178                        for(i = 0; i < data.length; i++) {
179                                Element('em_combo_org').options[i] = new Option(data[i].ou,data[i].dn);
180                                if(user_organization.toUpperCase() == data[i].ou.toUpperCase())
181                                {
182                                        Element('em_combo_org').options[i].selected = true;
183                                        _this.get_available_users(data[i].dn);
184                                }
185                        }
186                }
187                cExecute ("$this.ldap_functions.get_organizations2&referral=false", handler_organizations);
188
189                var butt = Element('dJSWin_wfolders_bok')
190                if (!butt){
191                        butt = document.createElement('INPUT');
192                        butt.id = 'dJSWin_wfolders_bok';
193                        butt.type = 'button';
194                        butt.value = get_lang('Save');
195                        el.appendChild(butt);
196                }
197                butt.onclick = function ()
198                {
199                        // Needed select all options from select
200                        var users_setacl = new Array();
201                        select_users = Element('em_select_sharefolders_users');
202                        for(var i=0; i<select_users.options.length; i++)
203                        {
204                                users_setacl[i] = select_users.options[i].value;
205                        }
206                        attributes = connector.serialize(users_setacl);
207                       
208                        var handler_save = function(data)
209                        {
210                                if (data)
211                                {
212                                        alert(get_lang('Shared options saved with success'));
213                                        sharemailbox.arrayWin[el.id].close();
214                                }
215                        }
216
217                        cExecute ("$this.imap_functions.setacl", handler_save, 'users='+attributes);
218
219                }
220               
221                var space = document.createElement('SPAN');
222                space.innerHTML = "&nbsp;&nbsp;";
223                el.appendChild(space);
224               
225                var butt = document.createElement('BUTTON');
226                var buttext = document.createTextNode(get_lang('Close'));
227                butt.appendChild(buttext);
228                butt.onclick = function () {sharemailbox.arrayWin[el.id].close();};
229                el.appendChild(butt);
230               
231                _this.showWindow(el);
232        }
233       
234        cShareMailbox.prototype.showWindow = function (div)
235        {
236                if(! div) {
237                        alert(get_lang('This list has no participants'));
238                        return;
239                }
240               
241                if(! this.arrayWin[div.id])
242                {
243                        div.style.height = "460px";
244                        div.style.width = "540px";
245                        var title = ":: "+get_lang("Mailbox Sharing")+" ::";
246                        var wHeight = div.offsetHeight + "px";
247                        var wWidth =  div.offsetWidth   + "px";
248                        div.style.width = div.offsetWidth - 5;
249
250                        win = new dJSWin({
251                                id: 'win_'+div.id,
252                                content_id: div.id,
253                                width: wWidth,
254                                height: wHeight,
255                                title_color: '#3978d6',
256                                bg_color: '#eee',
257                                title: title,
258                                title_text_color: 'white',
259                                button_x_img: '../phpgwapi/images/winclose.gif',
260                                border: true });
261                       
262                        this.arrayWin[div.id] = win;
263                        win.draw();
264                }
265                else {
266                        win = this.arrayWin[div.id];
267                }
268                Element('em_input_sendAcl').disabled = true;
269                win.open();
270        }
271       
272        var finderTimeout = '';
273        cShareMailbox.prototype.optionFinderTimeout = function(obj)
274        {
275                clearTimeout(finderTimeout);   
276                var oWait = document.getElementById("em_span_searching");
277                oWait.innerHTML = get_lang('Searching')+"...";
278                var finderTimeout = setTimeout("sharemailbox.optionFinder('"+obj.id+"')",500);
279        }
280       
281        cShareMailbox.prototype.optionFinder = function(id)
282        {
283                var oWait = document.getElementById("em_span_searching");
284                var oText = document.getElementById(id);
285                       
286                //Limpa todo o select
287               
288                var select_available_users_tmp = document.getElementById('em_select_available_users')
289                for(var i = 0;i < select_available_users_tmp.options.length; i++)
290                        select_available_users_tmp.options[i--] = null;
291
292                var RegExp_name = new RegExp("\\b"+oText.value, "i");
293               
294                //Inclui usuário começando com a pesquisa
295                for(i = 0; i < select_available_users_clone.length; i++){
296                        if (RegExp_name.test(select_available_users_clone[i].text))
297                        {
298                                sel = select_available_users_tmp.options;
299                                option = new Option(select_available_users_clone[i].text,select_available_users_clone[i].value);                               
300                                sel[sel.length] = option;
301                        }
302                }
303                oWait.innerHTML = '&nbsp;';
304        }
305       
306        cShareMailbox.prototype.add_user = function()
307        {
308                var select_available_users = document.getElementById('em_select_available_users');
309                var select_users = document.getElementById('em_select_sharefolders_users');
310
311                var count_available_users = select_available_users.length;
312                var count_users = select_users.options.length;
313                var new_options = '';
314       
315                for (i = 0 ; i < count_available_users ; i++)
316                {
317                        if (select_available_users.options[i].selected)
318                        {
319                                if(document.all)
320                                {
321                                        if ( (select_users.innerHTML.indexOf('value='+select_available_users.options[i].value)) == '-1' )
322                                        {
323                                                new_options +=  '<option value='
324                                                                        + select_available_users.options[i].value
325                                                                        + '>'
326                                                                        + select_available_users.options[i].text
327                                                                        + '</option>';
328                                        }
329                                }
330                                else
331                                {
332                                        if ( (select_users.innerHTML.indexOf('value="'+select_available_users.options[i].value+'"')) == '-1' )
333                                        {
334                                                new_options +=  '<option value='
335                                                                        + select_available_users.options[i].value
336                                                                        + '>'
337                                                                        + select_available_users.options[i].text
338                                                                        + '</option>';
339                                        }
340                                }
341                        }
342                }
343
344                if (new_options != '')
345                {
346                        select_users.innerHTML = '#' + new_options + select_users.innerHTML;
347                        select_users.outerHTML = select_users.outerHTML;
348                }
349        }
350
351        cShareMailbox.prototype.remove_user = function()
352        {
353                select_users = document.getElementById('em_select_sharefolders_users');
354       
355                for(var i = 0;i < select_users.options.length; i++)
356                        if(select_users.options[i].selected)
357                                select_users.options[i--] = null;
358                               
359                Element('em_input_readAcl').checked = false;
360                Element('em_input_deleteAcl').checked = false;
361                Element('em_input_writeAcl').checked = false;
362                Element('em_input_sendAcl').checked = false;
363        }
364       
365       
366/* Build the Object */
367        var sharemailbox;
368        sharemailbox = new cShareMailbox();
Note: See TracBrowser for help on using the repository browser.