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

Revision 2372, 4.1 KB checked in by pedroerp, 14 years ago (diff)

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