[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 | */ |
---|
| 24 | function 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', |
---|
| 35 | 'opt_id' => 'dn', |
---|
[3167] | 36 | 'opt_name' => 'cn', |
---|
| 37 | 'opt_complement' => ''); |
---|
[795] | 38 | $extractParams = array( |
---|
| 39 | 'name', |
---|
| 40 | 'handleExpiredSessions', |
---|
| 41 | 'size_input', |
---|
| 42 | 'value_btn', |
---|
| 43 | 'class_btn', |
---|
| 44 | 'opt_id', |
---|
[3167] | 45 | 'opt_name', |
---|
| 46 | 'opt_complement'); |
---|
[795] | 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" /> |
---|
[3167] | 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')" /> |
---|
[795] | 83 | <img id="$name_img" border="0" src="$imagesPath/loading.gif" style="display:none"> |
---|
[3167] | 84 | <span id="$name_span" style="display:none"><br><br><b>Selecione um nome abaixo: </b><br><br> |
---|
[795] | 85 | EOF; |
---|
| 86 | |
---|
[3167] | 87 | $output .= smarty_function_html_boxoptions(array_merge(array( |
---|
[795] | 88 | 'name' => $name, |
---|
| 89 | 'id' => $name, |
---|
| 90 | 'options' => array('-1' => "")), |
---|
| 91 | $extraParams), |
---|
| 92 | $smarty); |
---|
| 93 | |
---|
| 94 | $output .= <<<EOF |
---|
| 95 | </span> |
---|
| 96 | EOF; |
---|
| 97 | |
---|
| 98 | return $output; |
---|
| 99 | } |
---|
| 100 | ?> |
---|