source: trunk/expressoAdmin1_2/inc/class.uimanagers.inc.php @ 2878

Revision 2878, 15.5 KB checked in by rodsouza, 14 years ago (diff)

Ticket #1058 - Removendo reload de alguns formulários do módulo.

  • Property svn:eol-style set to native
  • Property svn:executable set to *
RevLine 
[2]1<?php
2        /************************************************************************************\
3        * Expresso Administração                                                                                                    *
4        * by Joao Alfredo Knopik Junior (joao.alfredo@gmail.com, jakjr@celepar.pr.gov.br)   *
5        * ----------------------------------------------------------------------------------*
6        *  This program is free software; you can redistribute it and/or modify it                      *
7        *  under the terms of the GNU General Public License as published by the                        *
8        *  Free Software Foundation; either version 2 of the License, or (at your                       *
9        *  option) any later version.                                                                                                           *
10        \************************************************************************************/
11
12        class uimanagers
13        {
14                var $public_functions = array
15                (
16                        'list_managers'         => True,
17                        'add_managers'          => True,
18                        'delete_managers'       => True,
19                        'edit_managers'         => True,
20                        'validate'                      => True
21                );
22
23                var $functions;
24                var $config;
25
26                function uimanagers()
27                {
28                        $this->functions = CreateObject('expressoAdmin1_2.functions');
29                        $c = CreateObject('phpgwapi.config','expressoAdmin1_2');
30                        $c->read_repository();
31                        $this->config = $c->config_data;
[64]32                       
33                        if(!@is_object($GLOBALS['phpgw']->js))
34                        {
35                                $GLOBALS['phpgw']->js = CreateObject('phpgwapi.javascript');
36                        }
[2707]37                        $GLOBALS['phpgw']->js->validate_file('jscode','globals','expressoAdmin1_2');
38                        $GLOBALS['phpgw']->js->validate_file('jscode','connector','expressoAdmin1_2');
[458]39                        $GLOBALS['phpgw']->js->validate_file('jscode','expressoadmin','expressoAdmin1_2');
[64]40                        $GLOBALS['phpgw']->js->validate_file('jscode','managers','expressoAdmin1_2');
[2]41                }
42
43                function row_action($lang,$link,$manager_lid,$context)
44                {       
45                        return '<a href="'.$GLOBALS['phpgw']->link('/index.php',Array(
46                                'menuaction' => 'expressoAdmin1_2.uimanagers.'.$link,
47                                'action'                =>      $lang,
48                                'manager_lid' => $manager_lid,
49                                'context' => $context
50                        )).'" onmouseover="window.status=\''.lang($lang).' Manager\'; return true;" onmouseout="window.status=\'\';" >'.lang($lang).' </a>';
51                }
52                               
53                function list_managers()
54                {
55                        // Caso nao seja admin, sai.
[1684]56                        if (!$GLOBALS['phpgw']->acl->check('run',1,'admin'))
[2]57                        {
58                                $GLOBALS['phpgw']->redirect($GLOBALS['phpgw']->link('/admin/index.php'));
59                        }
60                        // Imprime o NavBar
[2878]61                        //unset($GLOBALS['phpgw_info']['flags']['nonavbar']);
[309]62                        $GLOBALS['phpgw_info']['flags']['app_header'] = $GLOBALS['phpgw_info']['apps']['expressoAdmin1_2']['title'].' - '.lang('List Managers');
[2419]63                        //$GLOBALS['phpgw']->common->phpgw_header();
[2]64
65                        // Seta o template
66                        $p = CreateObject('phpgwapi.Template',PHPGW_APP_TPL);
67                        $p->set_file(array('managers' => 'managers.tpl'));
68                        $p->set_block('managers','body','body');
69                        $p->set_block('managers','row','row');
70                        $p->set_block('managers','row_empty','row_empty');
[64]71                        $tpl_vars = $p->get_undefined('body');
[2]72
73                        $var = Array(
[2878]74                                'action'                        => $GLOBALS[ 'phpgw' ] -> link( '/index.php', 'menuaction=expressoAdmin1_2.uimanagers.add_managers' ),
75                                'action_back'           => $GLOBALS[ 'phpgw' ] -> link( '/admin/' ),
[2]76                                'tr_color'                      => '#DDDDDD',
[64]77                                'th_bg'                 => $GLOBALS['phpgw_info']['theme']['th_bg']
[2]78                        );
79
[64]80                        // Cria dinamicamente os langs
81                        foreach ($tpl_vars as $atribute)
82                        {
83                                $lang = strstr($atribute, 'lang_');
84                                if($lang !== false)
85                                {
86                                        $p->set_var($atribute, $this->make_lang($atribute));
87                                }
88                        }
89
90                        // Le BD para pegar os administradors.
[2]91                        $query = 'SELECT manager_lid,context FROM phpgw_expressoadmin ORDER by manager_lid';
92                        $GLOBALS['phpgw']->db->query($query);
93                        while($GLOBALS['phpgw']->db->next_record())
94                        {
95                                $managers[] = $GLOBALS['phpgw']->db->row();
96                        }
97                        $ldap_conn = $GLOBALS['phpgw']->common->ldapConnect();
98                        $justthese = array("cn");
99                        // Loop para listar os administradores
100                        if (count($managers))
101                        {
102                                foreach($managers as $array_managers)
103                                {
[64]104                                        $managers_context = "";
105                                        $a_managers_context = split("%", $array_managers['context']);
106
107                                        foreach ($a_managers_context as $context)
108                                        {
109                                                $managers_context .= "$context<br>";
110                                        }
111                                       
[2]112                                        $filter="(&(phpgwAccountType=u)(uid=".$array_managers['manager_lid']."))";
113                                        $ldap_search = ldap_search($ldap_conn, $GLOBALS['phpgw_info']['server']['ldap_context'], $filter, $justthese);
114                                        $ldap_result = ldap_get_entries($ldap_conn, $ldap_search);
115                                        $p->set_var('manager_lid', $array_managers[manager_lid]);
116                                        $p->set_var('manager_cn', $ldap_result[0]['cn'][0] == '' ? '<font color=red>NAO ENCONTRADO NO LDAP</font>' : $ldap_result[0]['cn'][0]);
[64]117                                        $p->set_var('context', $managers_context);
[2]118                                        $p->set_var('link_edit',$this->row_action('edit','edit_managers',$array_managers[manager_lid],$array_managers[context]));
119                                        $p->set_var('link_delete',$this->row_action('delete','delete_managers',$array_managers[manager_lid],$array_managers[context]));
[309]120                                        $p->set_var('link_copy',"<a href='#' onClick='javascript:copy_manager(\"".$array_managers['manager_lid']."\");'>Copiar</a>");
[2]121                                        $p->fp('rows','row',True);
122                                }
123                        }
[2419]124
125                        ldap_close($ldap_conn);
126
[2]127                        $p->set_var($var);
[2707]128                        $GLOBALS[ 'phpgw_info' ][ 'flags' ][ 'java_script_thirst' ] .= "<script>var expressoAdmin_controller = '{$GLOBALS[ 'phpgw' ] -> link( '/expressoAdmin1_2/controller.php' )}?action=';</script>";
[2]129                        $p->pfp('out','body');
130                }
131
132
133                function add_managers()
134                {
135                        // Caso nao seja admin, sai.
[1684]136                        if (!$GLOBALS['phpgw']->acl->check('run',1,'admin'))
[2]137                        {
138                                $GLOBALS['phpgw']->redirect($GLOBALS['phpgw']->link('/admin/index.php'));
139                        }
140                       
141                        // Seta o template
142                        $p = CreateObject('phpgwapi.Template',PHPGW_APP_TPL);
143                        $p->set_file(array('managers' => 'managers_form.tpl'));
144                        $p->set_block('managers','form','form');
[64]145                        $tpl_vars = $p->get_undefined('form');
[2]146
147                        // Imprime o NavBar
148                        unset($GLOBALS['phpgw_info']['flags']['nonavbar']);
[309]149                        $GLOBALS['phpgw_info']['flags']['app_header'] = $GLOBALS['phpgw_info']['apps']['expressoAdmin1_2']['title'].' - '.lang('Add Managers');
[2419]150                        //$GLOBALS['phpgw']->common->phpgw_header();
[2]151                       
[64]152                        // Seta variaveis javascript necessárias
[2]153                        $webserver_url = $GLOBALS['phpgw_info']['server']['webserver_url'];
154                       
155                        // App, create list of available apps
[107]156                        $applications_list = $this->make_app_list('');
[64]157                       
[180]158                        /*
[107]159                        if ($_POST['context'])
160                        {
161                                $contexts = split("%", $_POST['context']);
162                                foreach ($contexts as $manager_context)
163                                        $input_context_fields .= "<input type='text' size=60 value=$manager_context></input><br>";
164                        }
165                        else
[180]166                                $input_context_fields = '<input type="text" size=60></input><br>';
167                        */
[64]168                       
[208]169                        $options_context = $this->functions->get_organizations($GLOBALS['phpgw_info']['server']['ldap_context'], '', false, true, false);
[180]170                       
[2]171                        // Seta variaveis que estao no TPL
172                        $var = Array(
[2878]173                                'action'                                => $GLOBALS['phpgw']->link('/index.php','menuaction=expressoAdmin1_2.manager.'),
[2]174                                'display_samba_suport'  => $this->config['expressoAdmin_samba_support'] == 'true' ? '' : 'display:none',
175                                'type'                                  => "add",
176                                'color_bg1'                             => "#E8F0F0",
177                                'color_bg2'                             => "#D3DCE3",
178                                'color_font1'                   => "#DDDDDD",
179                                'color_font2'                   => "#EEEEEE",
[64]180                                'input_context_fields'  => $input_context_fields,
181                                'error_messages'                => $_POST['error_messages'] == '' ? '' : '<script language="JavaScript">alert("'.$_POST['error_messages'].'");</script>',
182                                'manager_lid'                   => $_POST['manager_lid'],
183                                'context'                               => $_POST['context'],
[180]184                                'app_list'                              => $applications_list,
185                                'options_contexts'              => $options_context
[2]186                        );
187                        $p->set_var($var);
[64]188                       
189                        // Cria dinamicamente os langs e seta acls
190                        foreach ($tpl_vars as $atribute)
191                        {
192                                $acl  = strstr($atribute, 'acl_');
193                                $lang = strstr($atribute, 'lang_');
194                                // Recuperar os valores das ACLS
195                                if ($acl !== false)
196                                {
197                                        $p->set_var($atribute, $_POST[$atribute] != '' ? 'checked' : '');
198                                }
199                                // Setar os langs do tpl.
200                                elseif($lang !== false)
201                                {
202                                        $p->set_var($atribute, $this->make_lang($atribute));
203                                }
204                        }
[2712]205
206                        $GLOBALS[ 'phpgw_info' ][ 'flags' ][ 'java_script_thirst' ] .= "<script>var expressoAdmin_controller = '{$GLOBALS[ 'phpgw' ] -> link( '/expressoAdmin1_2/controller.php' )}?action=';</script>";
[2]207                        echo $p->fp('out','form');
208                }
209       
210                function delete_managers()
211                {
[1684]212                        if (!$GLOBALS['phpgw']->acl->check('run',1,'admin'))
213                        {
214                                $GLOBALS['phpgw']->redirect($GLOBALS['phpgw']->link('/admin/index.php'));
215                        }
[2]216                        // Criar uma verificação e jogar a query para o BO.
217                        $context = $_GET['context'];
218                        $manager_lid = $_GET['manager_lid'];
219                       
220                        $query = "DELETE FROM phpgw_expressoadmin WHERE manager_lid = '".$manager_lid."' AND context = '" . $context ."'";
221                        $GLOBALS['phpgw']->db->query($query);
222                       
223                        // Remove Gerente da tabela dos apps
224                        $query = "DELETE FROM phpgw_expressoadmin_apps WHERE "
225                        . "manager_lid = '".$manager_lid."' AND "
226                        . "context = '".$context."'";
227                        $GLOBALS['phpgw']->db->query($query);           
228                       
229                        // Remove Gerente na ACL do expressoadmin
230                        $accounts = CreateObject('phpgwapi.accounts');
231                        $manager_id = $accounts->name2id($_GET['manager_lid']);
232                        $sql = "DELETE FROM phpgw_acl WHERE acl_appname = 'expressoadmin' AND acl_account = '" . $manager_id . "'";
233                        $GLOBALS['phpgw']->db->query($sql);                     
234                       
235                        ExecMethod('expressoAdmin1_2.uimanagers.list_managers');
236                }
237       
238                function edit_managers()
239                {
240                        // Caso nao seja admin, sai.
[1684]241                        if (!$GLOBALS['phpgw']->acl->check('run',1,'admin'))
[2]242                        {
243                                $GLOBALS['phpgw']->redirect($GLOBALS['phpgw']->link('/admin/index.php'));
244                        }
245                       
246                        // Verifica se eh a primeira entrada, ai eu tenho o get, senao pego o post.
247                        if ($_GET['manager_lid'] != '')
248                        {
[64]249                                $first_time = true;
[2]250                                $_POST['manager_lid']   = $_GET['manager_lid'];
251                                $_POST['context']               = $_GET['context'];
[180]252                                $hidden_manager_lid             = $_GET['manager_lid'];
[2]253                        }
254                        elseif ($_POST['manager_lid'] != '')
255                        {
[64]256                                $first_time             = false;
[180]257                                $hidden_manager_lid     = $_POST['old_manager_lid'];                           
[2]258                        }
259                       
260                        if ($first_time)
261                        {
[64]262                                //Pego ACL do gerente
263                                $manager = $this->functions->read_acl($_GET['manager_lid']);
264                                //Cria vetor da ACL
265                                $manager_acl = $this->functions->make_array_acl($manager['acl']);
[2]266                                //Pesquisa no Banco e pega os valores dos apps.
267                                $query = "SELECT * FROM phpgw_expressoadmin_apps WHERE manager_lid = '" . $_GET['manager_lid'] . "' AND context = '" . $_GET['context'] . "'";
268                                $GLOBALS['phpgw']->db->query($query);
269                                $i=0;
270                                $manager[0]['apps'] = array();
271                                while($GLOBALS['phpgw']->db->next_record())
272                                {
273                                        $tmp[$i] = $GLOBALS['phpgw']->db->row();
274                                        $_POST['applications_list'][$tmp[$i]['app']] = 1;
275                                        $manager[0]['apps'][$tmp[$i]['app']] = 1;
276                                        $i++;
277                                }
278                        }
279                       
280                        // Seta o template
281                        $p = CreateObject('phpgwapi.Template',PHPGW_APP_TPL);
282                        $p->set_file(array('managers' => 'managers_form.tpl'));
283                        $p->set_block('managers','form','form');
[64]284                        $tpl_vars = $p->get_undefined('form');
[2]285                       
286                        // Imprime o NavBar
287                        unset($GLOBALS['phpgw_info']['flags']['nonavbar']);
[309]288                        $GLOBALS['phpgw_info']['flags']['app_header'] = $GLOBALS['phpgw_info']['apps']['expressoAdmin1_2']['title'].' - '.lang('Edit Managers');
[2419]289                        //$GLOBALS['phpgw']->common->phpgw_header();
[2]290
291                        // App, create list of available apps
[64]292                        $applications_list = $this->make_app_list($manager[0]['apps']);
[2]293
[64]294                        $a_context = split("%", $_POST['context']);
295                        foreach ($a_context as $context)
[180]296                                $input_context_fields .= '<div><input disabled type="text" value="'.$context.'" size=60></input><span onclick="this.parentNode.parentNode.removeChild(this.parentNode);" style="cursor:pointer"> -</span></div>';
[208]297                        $options_context = $this->functions->get_organizations($GLOBALS['phpgw_info']['server']['ldap_context'], '', false, true, false);
[2]298
299                        $var = Array(
[2802]300                                'action'                                        => $GLOBALS['phpgw']->link('/index.php','menuaction=expressoAdmin1_2.manager.'),
[180]301                                'display_samba_suport'          => $this->config['expressoAdmin_samba_support'] == 'true' ? '' : 'display:none',
302                                'color_bg1'                                     => "#E8F0F0",
303                                'color_bg2'                                     => "#D3DCE3",
304                                'color_font1'                           => "#DDDDDD",
305                                'color_font2'                           => "#EEEEEE",
306                                'type'                                          => "edit",
307                                'display_manager_select'        => 'none',
[309]308                                'input_manager_lid_disabled'=> 'disabled',
[180]309                                'error_messages'                        => $_POST['error_messages'] == '' ? '' : '<script language="JavaScript1.3">alert("'.$_POST['error_messages'].'");</script>',
310                                'manager_lid'                           => $_POST['manager_lid'],
311                                'hidden_manager_lid'            => $_POST['manager_lid'],
312                                'context'                                       => $_POST['context'],
[309]313                               
[180]314                                'input_context_fields'          => $input_context_fields,
315                                'options_contexts'                      => $options_context,
[309]316                               
[180]317                                'hidden_manager_lid'            => $hidden_manager_lid,
318                                'app_list'                                      => $applications_list
[2]319                        );
320                        $p->set_var($var);
[64]321                       
322                        // Cria dinamicamente os langs e seta acls
323                        foreach ($tpl_vars as $atribute)
324                        {
325                                $acl  = strstr($atribute, 'acl_');
326                                $lang = strstr($atribute, 'lang_');
327                                // Recuperar os valores das ACLS
328                                if ($acl !== false)
329                                {
330                                        if ($first_time)
[317]331                                                $p->set_var($atribute, $manager_acl[$atribute] === '1' ? 'checked' : '');
[64]332                                        else
[317]333                                                $p->set_var($atribute, $_POST[$atribute] === '1' ? 'checked' : '');
[64]334                                }
335                                // Setar os langs do tpl.
336                                elseif($lang !== false)
337                                {
338                                        $p->set_var($atribute, $this->make_lang($atribute));
339                                }
340                        }
[2707]341
342                        $GLOBALS[ 'phpgw_info' ][ 'flags' ][ 'java_script_thirst' ] .= "<script>var expressoAdmin_controller = '{$GLOBALS[ 'phpgw' ] -> link( '/expressoAdmin1_2/controller.php' )}?action=';</script>";
[2]343                        echo $p->fp('out','form');
344                }
[309]345                               
[64]346                function make_lang($ram_lang)
347                {
348                        $a_lang = split("_", $ram_lang);
349                        $a_lang_reverse  = array_reverse ( $a_lang, true );
350                        //Retira o lang do array.
351                        array_pop ( $a_lang_reverse );
352                        $a_lang  = array_reverse ( $a_lang_reverse, true );
353                        $a_new_lang = implode ( " ", $a_lang );
354                        return lang($a_new_lang);
355                }
356               
357                function make_app_list($manager_app_list)
358                {
359                        $this->nextmatchs = createobject('phpgwapi.nextmatchs');
360                        $apps = CreateObject('phpgwapi.applications',$_account_id);
361                        $db_perms = $apps->read_account_specific();
362                        $availableApps = $GLOBALS['phpgw_info']['apps'];
363                       
364                        uasort($availableApps,create_function('$a,$b','return strcasecmp($a["title"],$b["title"]);'));
365                       
366                        // Loop para criar dinamicamente uma tabela com 3 colunas, cada coluna com um aplicativo e um check box.
367                        $applications_list = '';
368                        $app_col1 = '';
369                        $app_col2 = '';
370                        $app_col3 = '';
371                        $total_apps = count($availableApps);
372                        $i = 0;
373
374                        foreach($availableApps as $app => $data)
375                        {
376                                // 1 coluna
377                                if (($i +1) % 3 == 1)
378                                {
379                                        if ($manager_app_list[$app] == 1)
380                                                $checked = 'checked';
381                                        else
382                                                $checked = '';
383                                        $app_col1 = sprintf("<td>%s</td><td width='10'><input type='checkbox' name='applications_list[%s]' value='1' %s %s></td>\n",
384                                        $data['title'],$app,$checked, $disabled);
385                                       
386                                        if ($i == ($total_apps-1))
387                                                $applications_list .= sprintf('<tr bgcolor="%s">%s</tr>',$this->nextmatchs->alternate_row_color(), $app_col1);
388                                }
389                                // 2 coluna
390                                if (($i +1) % 3 == 2)
391                                {
392                                        if ($manager_app_list[$app] == 1)
393                                                $checked = 'checked';
394                                        else
395                                                $checked = '';
396                                        $app_col2 = sprintf("<td>%s</td><td width='10'><input type='checkbox' name='applications_list[%s]' value='1' %s %s></td>\n",
397                                        $data['title'],$app,$checked, $disabled);
398                                       
399                                        if ($i == ($total_apps-1))
400                                                $applications_list .= sprintf('<tr bgcolor="%s">%s%s</tr>',$this->nextmatchs->alternate_row_color(), $app_col1,$app_col2);
401                                }
402                                // 3 coluna
403                                if (($i +1) % 3 == 0)
404                                {
405                                        if ($manager_app_list[$app] == 1)
406                                                $checked = 'checked';
407                                        else
408                                                $checked = '';
409                                        $app_col3 = sprintf("<td>%s</td><td width='10'><input type='checkbox' name='applications_list[%s]' value='1' %s %s></td>\n",
410                                        $data['title'],$app,$checked, $disabled);
411                                       
412                                        // Cria nova linha
413                                        $applications_list .= sprintf('<tr bgcolor="%s">%s%s%s</tr>',$this->nextmatchs->alternate_row_color(), $app_col1, $app_col2, $app_col3);                                       
414                                }
415                                $i++;
416                        }
417                        return $applications_list;
418                }
[2]419        }
[2419]420?>
Note: See TracBrowser for help on using the repository browser.