source: trunk/workflow/inc/smarty/wf_plugins/function.wf_select_ldap_users.php @ 2974

Revision 2974, 4.2 KB checked in by adeildosantos, 14 years ago (diff)

Ticket #1120 - Realizada a inlcusao da possibilidade de listar opcao extra no componente wf_select_ldap_users

  • Property svn:executable set to *
Line 
1<?php
2/**
3 * Este plugin insere um campo input, um botão e uma combo box que permitem ao usuário buscar uma lista de funcionários através
4 * do seu nome, ou parte do nome (atributo 'cn'), no ldap.
5 * O usuário digita o nome a ser buscado no input e clica no botão "Pesquisar". Isso faz uma chamada Ajax que atualiza a combo com
6 * todos os registros encontrados. Esta combo box pode ser atualizada de acordo com as necessidades do usuário através dos atributos
7 * passados por parâmetro. Por exemplo, ela pode apresentar os uid dos registros e passar o uidnumber na submissão do formulário.
8 * Isso é possível quando são informados os parâmetros opt_id e opt_name, sendo uidnumber e uid, respectivamente para esse exemplo.
9 * Os respectivos valores padrão são dn e cn.
10 * @package Smarty
11 * @subpackage wf_plugins
12 * @param array $params Array de parametros
13 * - name: o nome que a combo de seleção do funcionário irá receber.
14 * - handleExpiredSessions: indica se as sessões expiradas devem ser tratadas automaticamente.
15 * - size_input: tamanho do campo input.
16 * - value_btn: texto a ser apresentado no botão.
17 * - class_btn: className do botão.
18 * - opt_id: atributo a ser atribuído ao value das options da combo onde são carregados os registros buscados (valor padrão é 'dn').
19 * - opt_name: atributo a ser atribuído ao innerHTML das options da combo onde são carregados os registros buscados (valor padrão é 'cn').
20 * @param object &$smarty Instância do objeto smarty em uso
21 * @return string $output codigo que insere os componentes.
22 * @access public
23 */
24function smarty_function_wf_select_ldap_users($params, &$smarty)
25{
26    require_once $smarty->_get_plugin_filepath('function','html_options');
27        $imagesPath = substr(Factory::getInstance('TemplateServer')->generateImageLink(''), 0, -1);
28
29        $requiredParams = array(
30                'name');
31        $defaultValues = array(
32                'value_btn'             => 'Pesquisar',
33                'handleExpiredSessions' => true,
34                'size_input'            => '20',
35                'opt_id'                => 'dn',
36                'opt_name'              => 'cn');
37        $extractParams = array(
38                'name',
39                'handleExpiredSessions',
40                'size_input',
41                'value_btn',
42                'class_btn',
43                'opt_id',
44                'opt_name',
45                'opt_complement');
46
47        /* verifica se todos os parâmetros obrigatórios foram passados */
48        foreach ($requiredParams as $required)
49                if (!array_key_exists($required, $params) || (empty($params[$required])))
50                        $smarty->trigger_error("[wf_select_ldap_users] missing required parameter(s): $required", E_USER_ERROR);
51
52        /* atribui valores default para os parâmetros não passados */
53        foreach ($defaultValues as $key => $value)
54                if (!isset($params[$key]))
55                        $params[$key] = $value;
56
57        /* extrai alguns parâmetros da matriz de parâmetros */
58        foreach ($extractParams as $extract)
59                $$extract = $params[$extract];
60
61        /* parâmetros extras são "acumulados" em uma única variável */
62        $extraParams = array();
63        foreach ($params as $key => $value_params)
64                if (!in_array($key, $extractParams))
65                        $extraParams[$key] = $value_params;
66
67        /* define o nome do campo input, é usado o nome atribuído à combo concatenado ao sufixo "_txt" */
68        $name_input = $name . "_txt";
69
70        /* define o nome do span, é usado o nome atribuído à combo concatenado ao sufixo "_span" */
71        $name_span  = $name . "_span";
72
73        /* define o nome da imagem, é usado o nome atribuído à combo concatenado ao sufixo "_img" */
74        $name_img   = $name . "_img";
75
76        $handleExpiredSessions = ($handleExpiredSessions === true) ? 'true' : 'false';
77
78        /* campos do componente */
79        $output = <<<EOF
80                <input type="text" id="$name_input" name="$name_input" size="$size_input" />
81                <input type="button" class="$class_btn" value="$value_btn" onclick="search_ldap_users_by_cn(document.getElementById('$name_input').value, '$name', '$opt_id', '$opt_name','$opt_complement', $handleExpiredSessions)" />
82                &nbsp;<img id="$name_img" border="0" src="$imagesPath/loading.gif" style="display:none">
83                <span id="$name_span" style="display:none">&nbsp;&nbsp;&nbsp;&nbsp;<b>Selecione um nome abaixo: </b><br><br>
84EOF;
85
86        $output .= smarty_function_html_boxoptions(array_merge(array(
87                                                                                        'name'    => $name,
88                                                                                        'id'      => $name,
89                                                                                        'options' => array('-1' => "")),
90                                                                                        $extraParams),
91                                                                                $smarty);
92
93        $output .= <<<EOF
94                </span>
95EOF;
96
97        return $output;
98}
99?>
Note: See TracBrowser for help on using the repository browser.