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

Revision 3060, 4.2 KB checked in by viani, 14 years ago (diff)

Ticket #950 - Merged 2838:3056 /trunk/workflow em /sandbox/workflow/trunk

  • 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                'opt_complement'        => '');
38        $extractParams = array(
39                'name',
40                'handleExpiredSessions',
41                'size_input',
42                'value_btn',
43                'class_btn',
44                'opt_id',
45                'opt_name',
46                'opt_complement');
47
48        /* verifica se todos os parâmetros obrigatórios foram passados */
49        foreach ($requiredParams as $required)
50                if (!array_key_exists($required, $params) || (empty($params[$required])))
51                        $smarty->trigger_error("[wf_select_ldap_users] missing required parameter(s): $required", E_USER_ERROR);
52
53        /* atribui valores default para os parâmetros não passados */
54        foreach ($defaultValues as $key => $value)
55                if (!isset($params[$key]))
56                        $params[$key] = $value;
57
58        /* extrai alguns parâmetros da matriz de parâmetros */
59        foreach ($extractParams as $extract)
60                $$extract = $params[$extract];
61
62        /* parâmetros extras são "acumulados" em uma única variável */
63        $extraParams = array();
64        foreach ($params as $key => $value_params)
65                if (!in_array($key, $extractParams))
66                        $extraParams[$key] = $value_params;
67
68        /* define o nome do campo input, é usado o nome atribuído à combo concatenado ao sufixo "_txt" */
69        $name_input = $name . "_txt";
70
71        /* define o nome do span, é usado o nome atribuído à combo concatenado ao sufixo "_span" */
72        $name_span  = $name . "_span";
73
74        /* define o nome da imagem, é usado o nome atribuído à combo concatenado ao sufixo "_img" */
75        $name_img   = $name . "_img";
76
77        $handleExpiredSessions = ($handleExpiredSessions === true) ? 'true' : 'false';
78
79        /* campos do componente */
80        $output = <<<EOF
81                <input type="text" id="$name_input" name="$name_input" size="$size_input" />
82                <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', $handleExpiredSessions, '$opt_complement')" />
83                &nbsp;<img id="$name_img" border="0" src="$imagesPath/loading.gif" style="display:none">
84                <span id="$name_span" style="display:none"><br><br><b>Selecione um nome abaixo: </b><br><br>
85EOF;
86
87        $output .= smarty_function_html_boxoptions(array_merge(array(
88                                                                                        'name'    => $name,
89                                                                                        'id'      => $name,
90                                                                                        'options' => array('-1' => "")),
91                                                                                        $extraParams),
92                                                                                $smarty);
93
94        $output .= <<<EOF
95                </span>
96EOF;
97
98        return $output;
99}
100?>
Note: See TracBrowser for help on using the repository browser.