diff --git a/app/components/campo_autocomplete.php b/app/components/campo_autocomplete.php index 8cbb509..6160ddc 100644 --- a/app/components/campo_autocomplete.php +++ b/app/components/campo_autocomplete.php @@ -36,6 +36,8 @@ $vs_operador = $pa_parametros_campo["operador"] ?? "LIKE"; + $vb_configuracao_padrao = $pa_parametros_campo["forcar_configuracao_padrao"] ?? 0; + if (!isset($pa_parametros_campo["multiplos_valores"])) $vb_multiplos_valores = false; else @@ -851,7 +853,7 @@ function alterar_valor_filtro_(pb_checked, ps } ?> - vs_url_lista_sugestoes = "functions/autocomplete.php?tela=&campo=&campo_codigos=&termo="+encodeURIComponent(vs_termo)+"&obj="+"&procurar_por=&permitir_cadastro=&campo_codigo=&campo_valor=&operador="+vs_filtro; + vs_url_lista_sugestoes = "functions/autocomplete.php?tela=&campo=&campo_codigos=&termo="+encodeURIComponent(vs_termo)+"&obj="+"&procurar_por=&permitir_cadastro=&campo_codigo=&campo_valor=&operador=&configuracao_padrao="+vs_filtro; ['busca_id', 'item_acervo_codigo'], + 'nome' => ['busca_id', $vs_objeto_busca . '_codigo'], 'label' => '', - 'objeto' => 'item_acervo', - 'atributos' => ['item_acervo_codigo', 'item_acervo_identificador'], + 'objeto' => $vs_objeto_busca, + 'atributos' => [$vs_objeto_busca . '_codigo', 'item_acervo_identificador'], 'procurar_por' => 'item_acervo_identificador', 'operador' => 'LIKERIGHT', 'valor_no_input' => true, 'placeholder' => 'Busca por identificador', + 'forcar_configuracao_padrao' => 1 // força o uso da configuração padrão para autocompletes e não o padrão da classe em get_campo_autocomplete() ); - $pa_valores_form = array('item_acervo_codigo' => '', "busca_id" => $vs_busca_id); + $pa_valores_form = array($vs_objeto_busca . '_codigo' => '', "busca_id" => $vs_busca_id); $vo_autocomplete_identificador->build($pa_valores_form, $pa_parametros_campo); ?> diff --git a/app/components/ler_valor.php b/app/components/ler_valor.php index 463ed6a..004c39c 100644 --- a/app/components/ler_valor.php +++ b/app/components/ler_valor.php @@ -121,6 +121,28 @@ function ler_valor1($ps_atributo, $pa_item, $pa_opcoes_campo=null, $pn_numero_it $va_atributo_temp = $va_atributo; // $vb_busca_profundidade serve para controlar a busca hierárquica, se ela for acontecer + + $vb_busca_profundidade = true; + $vn_contador_nivel = 0; + $va_ramo = array(); + + if (isset($pa_opcoes_campo["formato"]["hierarquia"]) && isset($pa_opcoes_campo["formato"]["link"])) + { + $va_atributo_construir_ramo = $va_atributo_temp; + + while ($vb_busca_profundidade) + { + $va_ramo[$vn_contador_nivel] = $va_atributo_construir_ramo[$pa_opcoes_campo["formato"]["link"]["codigo"]]; + + if (isset($va_atributo_construir_ramo[$pa_opcoes_campo["formato"]["hierarquia"]])) + $va_atributo_construir_ramo = $va_atributo_construir_ramo[$pa_opcoes_campo["formato"]["hierarquia"]]; + else + $vb_busca_profundidade = false; + + $vn_contador_nivel--; + } + } + $vb_busca_profundidade = true; while ($vb_busca_profundidade) @@ -179,6 +201,7 @@ function ler_valor1($ps_atributo, $pa_item, $pa_opcoes_campo=null, $pn_numero_it $vs_url = "navegar.php?obj=" . $pa_opcoes_campo["formato"]["link"]["objeto"] . "&cod=" . $vn_objeto_link_codigo; $vs_expressao_montada = '' . $vs_expressao_montada . ''; } + if (isset($pa_opcoes_campo["formato"]["link"]["url"])) { $vs_padrao_url = "padrao"; @@ -187,14 +210,15 @@ function ler_valor1($ps_atributo, $pa_item, $pa_opcoes_campo=null, $pn_numero_it $vs_url = $pa_opcoes_campo["formato"]["link"]["url"]; $contador = 1; + foreach($pa_opcoes_campo["formato"]["link"]["parametros"] as $vs_parametro => $vs_campo_parametro) { if ($vs_padrao_url == "padrao") { if ($contador == 1) - $vs_url .= "?" . $vs_parametro . "=" . $va_atributo_temp[$vs_campo_parametro]; + $vs_url .= "?" . $vs_parametro . "=" . (empty($va_atributo_temp[$vs_campo_parametro]) ? $vs_campo_parametro : $va_atributo_temp[$vs_campo_parametro]); else - $vs_url .= "&" . $vs_parametro . "=" . $va_atributo_temp[$vs_campo_parametro]; + $vs_url .= "&" . $vs_parametro . "=" . (empty($va_atributo_temp[$vs_campo_parametro]) ? $vs_campo_parametro : $va_atributo_temp[$vs_campo_parametro]); } else $vs_url .= "/" . $va_atributo_temp[$vs_campo_parametro]; @@ -210,7 +234,7 @@ function ler_valor1($ps_atributo, $pa_item, $pa_opcoes_campo=null, $pn_numero_it $vn_objeto_link_codigo = $va_atributo_temp[$pa_opcoes_campo["formato"]["link"]["codigo"]]; - $vs_expressao_montada = $vo_objeto->get_link($vn_objeto_link_codigo, $vs_expressao_montada); + $vs_expressao_montada = $vo_objeto->get_link($vn_objeto_link_codigo, $vs_expressao_montada, $va_ramo); } else { @@ -228,15 +252,15 @@ function ler_valor1($ps_atributo, $pa_item, $pa_opcoes_campo=null, $pn_numero_it // Adiciona sempre no começo do array array_unshift($va_item_expressao, $vs_expressao_montada); - //var_dump($pa_opcoes_campo); - if (isset($pa_opcoes_campo["formato"]["hierarquia"])) { if (isset($va_atributo_temp[$pa_opcoes_campo["formato"]["hierarquia"]])) { $va_atributo_temp = $va_atributo_temp[$pa_opcoes_campo["formato"]["hierarquia"]]; - // Adiciona o separador sempre no começo do array + // Adiciona o separador sempre no começo do array // + //////////////////////////////////////////////////// + array_unshift($va_item_expressao, $pa_opcoes_campo["formato"]["separador"]); } else @@ -244,6 +268,8 @@ function ler_valor1($ps_atributo, $pa_item, $pa_opcoes_campo=null, $pn_numero_it } else $vb_busca_profundidade = false; + + $vn_contador_nivel++; } if (join("", $va_item_expressao)) diff --git a/app/editar.php b/app/editar.php index a354743..ec48203 100644 --- a/app/editar.php +++ b/app/editar.php @@ -169,9 +169,13 @@ $_SESSION[$vs_id_objeto_tela][$_SESSION[$vs_id_objeto_tela]["campo_paginacao"]] = $vn_pagina_atual; - $va_parametros_filtros_consulta = $_SESSION[$vs_id_objeto_tela]; + $vb_usar_parametros_sessao = true; + $vs_modo = "listagem"; + require dirname(__FILE__)."/functions/montar_listagem.php"; + $vs_modo = "edicao"; + // A listagem_codigos só é atualizada após a chamada para /montar_listagem.php if ($vn_objeto_codigo == "p") $vn_objeto_codigo = end($_SESSION[$vs_id_objeto_tela]["listagem_codigos"]); diff --git a/app/functions/autocomplete.php b/app/functions/autocomplete.php index 026bdf8..167e260 100644 --- a/app/functions/autocomplete.php +++ b/app/functions/autocomplete.php @@ -353,6 +353,8 @@ $vs_operador = $_GET['operador'] ?? "LIKE"; + $vb_configuracao_padrao = $_GET['configuracao_padrao'] ?? 0; + $vn_item_excluir = ""; if (isset($_GET['excluir'])) $vn_item_excluir = trim($_GET['excluir']); @@ -376,7 +378,11 @@ $va_parametros_campo_pai = $va_campos_edicao[$vs_campo_codigos]; $vo_objeto = new $vs_id_objeto_campo; - $va_parametros_campo = $vo_objeto->get_campo_autocomplete($vs_campo, $vs_campo_codigo, $va_parametros_campo_pai['modo'] ?? ""); + + $va_parametros_campo = array(); + + if (!$vb_configuracao_padrao) + $va_parametros_campo = $vo_objeto->get_campo_autocomplete($vs_campo, $vs_campo_codigo, $va_parametros_campo_pai['modo'] ?? ""); if (!count($va_parametros_campo)) { diff --git a/app/functions/montar_filtros_busca.php b/app/functions/montar_filtros_busca.php index 49be1eb..85ddbd6 100755 --- a/app/functions/montar_filtros_busca.php +++ b/app/functions/montar_filtros_busca.php @@ -8,7 +8,7 @@ // Antes de chamar configurar_campos_tela.php, tenho que definir o modo "listagem" ////////////////////////////////////////////////////////////////////////////////// - $vs_modo = "listagem"; + $vs_modo = $vs_modo ?? "listagem"; require_once dirname(__FILE__) . "/configurar_campos_tela.php"; // Vamos inicializar e ler aqui os parâmetros vindos dos filtros @@ -23,7 +23,7 @@ $va_parametros_submit = array(); - if (isset($_GET["back"]) && isset($_SESSION[$vs_id_objeto_tela])) + if ( (isset($_GET["back"]) && isset($_SESSION[$vs_id_objeto_tela])) || ($vb_usar_parametros_sessao ?? false)) { // Se a requisição vem de uma página de edição ou ficha (back=1) // carrega as variáveis de sessão