source: trunk/expressoAdmin1_2/js/jscode/groups.js @ 2

Revision 2, 7.9 KB checked in by niltonneto, 17 years ago (diff)

Removida todas as tags usadas pelo CVS ($Id, $Source).
Primeira versão no CVS externo.

  • Property svn:eol-style set to native
  • Property svn:executable set to *
Line 
1// Variaveis Globais
2countFiles = 0;
3function validate_fields(type, restrictionsOnGroup)
4{
5        document.forms[0].cn.value = document.forms[0].cn.value.toLowerCase();
6        document.forms[0].old_cn.value = document.forms[0].old_cn.value.toLowerCase();
7       
8        if (document.forms[0].cn.value == ''){
9                alert('Campo NOME do grupo está vazio.');
10                return;
11        }
12               
13        if (document.forms[0].description.value == ''){
14                alert('Campo DESCRIÇÃO está vazio.');
15                return;
16        }
17       
18        if (restrictionsOnGroup == 'true')
19        {
20                cn_tmp = document.forms[0].cn.value.split("-");
21                if ( (cn_tmp.length < 3) || ((cn_tmp[0] != 'grupo') && (cn_tmp[0] != 'smb')) ){
22                        alert(
23                                'O campo NOME do grupo está incompleto.\n' +
24                                'O nome do grupo deve ser formado assim:\n' +
25                                'grupo-ORGANIZACAO-NOME_DO_GRUPO.\n' +
26                                'Ex: grupo-celepar-rh.');
27                        return;
28                }
29        }
30       
31        var reCn = /^([a-zA-Z0-9_\-])+$/;
32        var reDesc = /^([a-zA-Z0-9_\- .])+$/;
33       
34        if(!reCn.test(document.forms[0].cn.value)){
35                alert('Campo NOME DO GRUPO comtém caracteres não permitidos.');
36                document.forms[0].cn.focus();
37                return;
38        }
39
40        if(!reDesc.test(document.forms[0].description.value)){
41                alert('Campo DESCRIÇÃO comtém caracteres não permitidos.');
42                document.forms[0].description.focus();
43                return;
44        }
45       
46        var handler_validate_fields = function(data)
47        {
48                if (!data.status)
49                        alert(data.msg);
50                else
51                {
52                        if (type == 'create_group')
53                                cExecuteForm ("$this.group.create", document.forms[0], handler_create);
54                        else if (type == 'edit_group')
55                                cExecuteForm ("$this.group.save", document.forms[0], handler_save);
56                }
57        }
58
59        // Needed select all options from select
60        select_userInGroup = document.getElementById('ea_select_usersInGroup');
61        for(var i=0; i<select_userInGroup.options.length; i++)
62                select_userInGroup.options[i].selected = true;
63       
64        // O CN do grupo foi alterado ou é um novo grupo.
65        if ((document.forms[0].old_cn.value != document.forms[0].cn.value) || (type == 'create_group')){
66                cExecute ('$this.group.validate_fields&cn='+document.forms[0].cn.value, handler_validate_fields);
67        }
68        else if (type == 'edit_group')
69        {
70                cExecuteForm ("$this.group.save", document.forms[0], handler_save);
71        }
72}
73
74// HANDLER CREATE
75// É necessário 2 funcões de retorno por causa do cExecuteForm.
76function handler_create(data)
77{
78        return_handler_create(data);
79}
80function return_handler_create(data)
81{
82        if (!data.status)
83                alert(data.msg);
84        else{
85                alert('Grupo criado com êxito!');
86                location.href="./index.php?menuaction=expressoAdmin1_2.uigroups.list_groups";
87        }
88        return;
89}
90
91// HANDLER SAVE
92// É necessário 2 funcões de retorno por causa do cExecuteForm.
93function handler_save(data)
94{
95        return_handler_save(data);
96}
97function return_handler_save(data)
98{
99        if (!data.status)
100                alert(data.msg);
101        else{
102                alert('Grupo salvo com êxito!!');
103                location.href="./index.php?menuaction=expressoAdmin1_2.uigroups.list_groups";
104        }
105        return;
106}
107
108function sinc_combos_org(context, recursive)
109{
110        combo_org_groups = document.getElementById('ea_combo_org_groups');
111
112        for (i=0; i<combo_org_groups.length; i++)
113        {
114                if (combo_org_groups.options[i].value == context)
115                {
116                        combo_org_groups.options[i].selected = true;
117                        get_available_users(context, recursive);
118                        break;
119                }
120        }
121}
122
123function get_available_users(context, recursive)
124{
125        var handler_get_available_users = function(data)
126        {
127                select_available_users = document.getElementById('ea_select_available_users');
128               
129                //Limpa o select
130                for(var i=0; i<select_available_users.options.length; i++)
131                {
132                        select_available_users.options[i] = null;
133                        i--;
134                }
135
136                if ((data) && (data.length > 0))
137                {
138                        // Necessario, pois o IE6 tem um bug que retira o primeiro options se o innerHTML estiver vazio.
139                        select_available_users.innerHTML = 'lixo' + data;
140                        select_available_users.outerHTML = select_available_users.outerHTML;
141                       
142                        select_available_users.disabled = false;
143                        select_available_users_clone = document.getElementById('ea_select_available_users').cloneNode(true);
144                        document.getElementById('ea_input_searchUser').value = '';
145                }
146        }
147       
148        //Impede chamada recursiva na raiz das organizações
149        if ((recursive) && (document.forms[0].ldap_context.value == document.getElementById('ea_combo_org_groups').value))
150        {
151                alert('Nao é possível selecionar todos os usuários da organização raiz.')
152                document.getElementById('ea_check_allUsers').checked = false;
153
154                // Limpa select
155                select_available_users = document.getElementById('ea_select_available_users');
156                select_available_users.innerHTML = 'lixo';
157                select_available_users.outerHTML = select_available_users.outerHTML;
158                return;
159        }
160        cExecute ('$this.ldap_functions.get_available_users&context='+context+'&recursive='+recursive, handler_get_available_users);
161}
162
163function add_user2group()
164{
165        var select_available_users = document.getElementById('ea_select_available_users');
166        var select_usersInGroup = document.getElementById('ea_select_usersInGroup');
167
168        var count_available_users = select_available_users.length;
169        var count_usersInGroup = select_usersInGroup.options.length;
170        var new_options = '';
171       
172        for (i = 0 ; i < count_available_users ; i++)
173        {
174                if (select_available_users.options[i].selected)
175                {
176                        if(document.all)
177                        {
178                                if ( (select_usersInGroup.innerHTML.indexOf('value='+select_available_users.options[i].value)) == '-1' )
179                                {
180                                        new_options +=  '<option value='
181                                                                + select_available_users.options[i].value
182                                                                + '>'
183                                                                + select_available_users.options[i].text
184                                                                + '</option>';
185                                }
186                        }
187                        else
188                        {
189                                if ( (select_usersInGroup.innerHTML.indexOf('value="'+select_available_users.options[i].value+'"')) == '-1' )
190                                {
191                                        new_options +=  '<option value='
192                                                                + select_available_users.options[i].value
193                                                                + '>'
194                                                                + select_available_users.options[i].text
195                                                                + '</option>';
196                                }
197                        }
198                }
199        }
200
201        if (new_options != '')
202        {
203                select_usersInGroup.innerHTML = 'lixo' + new_options + select_usersInGroup.innerHTML;
204                select_usersInGroup.outerHTML = select_usersInGroup.outerHTML;
205        }
206}
207
208function remove_user2group()
209{
210        select_usersInGroup = document.getElementById('ea_select_usersInGroup');
211       
212        for(var i = 0;i < select_usersInGroup.options.length; i++)
213                if(select_usersInGroup.options[i].selected)
214                        select_usersInGroup.options[i--] = null;
215}
216
217// Variaveis Locais
218if (document.getElementById('ea_select_available_users'))
219{
220        var select_available_users  = document.getElementById('ea_select_available_users');
221        var select_available_users_clone = select_available_users.cloneNode(true);
222}
223else
224{
225        var select_available_users  = '';
226        var select_available_users_clone = '';
227}
228var finderTimeout = '';
229
230// Funcoes                                                                                     
231function optionFinderTimeout(obj)
232{
233        clearTimeout(finderTimeout);   
234        var oWait = document.getElementById("ea_span_searching");
235        oWait.innerHTML = 'Buscando...';
236        var finderTimeout = setTimeout("optionFinder('"+obj.id+"')",500);
237}
238function optionFinder(id) {
239        var oWait = document.getElementById("ea_span_searching");
240        var oText = document.getElementById(id);
241                       
242        //Limpa todo o select
243        var select_available_users_tmp = document.getElementById('ea_select_available_users')
244        for(var i = 0;i < select_available_users_tmp.options.length; i++)
245                select_available_users_tmp.options[i--] = null;
246
247        var RegExp_name = new RegExp("\\b"+oText.value, "i");
248
249        //Inclui usuário começando com a pesquisa
250        for(i = 0; i < select_available_users_clone.length; i++){
251                if (RegExp_name.test(select_available_users_clone[i].text))
252                {
253                        sel = select_available_users_tmp.options;
254                        option = new Option(select_available_users_clone[i].text,select_available_users_clone[i].value);                               
255                        sel[sel.length] = option;
256                }
257        }
258       
259        oWait.innerHTML = '&nbsp;';
260}                       
261
262function delete_group(cn, gidnumber)
263{
264        if (confirm("Realmente deletar Grupo " + cn + " ??"))
265        {
266                var handler_delete_group = function(data)
267                {
268                        if (!data.status)
269                                alert(data.msg);
270                        else
271                                alert('Grupo deletado com êxito!!');
272                       
273                        location.href="./index.php?menuaction=expressoAdmin1_2.uigroups.list_groups";
274                        return;
275                }
276                cExecute ('$this.group.delete&gidnumber='+gidnumber+'&cn='+cn, handler_delete_group);
277        }
278}
Note: See TracBrowser for help on using the repository browser.