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

Revision 5122, 4.3 KB checked in by viani, 12 years ago (diff)

Ticket #2304 - Incluído parâmetro useCCParams no plugin wf_select_ldap_users

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