/** * Getter para a opção de configuração baseurl. * * Caso a opção não esteja configurada, determina um valor baseado na * variável $_SERVER['REQUEST_URI'] da requisição, usando apenas os * componentes scheme e path da URL. Veja {@link http://php.net/parse_url} * para mais informações sobre os componentes de uma URL. * * @return string */ public function getBaseurl() { if (is_null($this->_getOption('baseurl'))) { require_once 'CoreExt/View/Helper/UrlHelper.php'; $url = CoreExt_View_Helper_UrlHelper::url($this->get('REQUEST_URI'), array('absolute' => TRUE, 'components' => CoreExt_View_Helper_UrlHelper::URL_HOST)); $this->setBaseurl($url); } return $this->_getOption('baseurl'); }
/** * Cria o menu suspenso dos subsistemas Escola e Biblioteca. * * @todo Refatorar lógica do primeiro par if/else, duplicação * @return bool|string Retorna FALSE em caso de erro */ function makeMenuSuspenso() { // Usa helper de Url para pegar o path da requisição require_once 'CoreExt/View/Helper/UrlHelper.php'; $uri = explode('/', CoreExt_View_Helper_UrlHelper::url($_SERVER['REQUEST_URI'], array('components' => CoreExt_View_Helper_UrlHelper::URL_PATH))); @session_start(); $idpes = $_SESSION['id_pessoa']; @session_write_close(); $submenu = array(); $menu_tutor = ''; if ($this->processoAp) { $menu_atual = $this->db()->UnicoCampo("SELECT ref_cod_menu_menu FROM menu_submenu WHERE cod_menu_submenu = '{$this->processoAp}'"); if ($menu_atual) { $this->db()->Consulta("SELECT cod_menu_submenu FROM menu_submenu WHERE ref_cod_menu_menu = '{$menu_atual}'"); while ($this->db()->ProximoRegistro()) { $tupla = $this->db()->Tupla(); $submenu[] = $tupla['cod_menu_submenu']; } $where = implode(" OR ref_cod_menu_submenu = ", $submenu); $where = "ref_cod_menu_submenu = {$where}"; $menu_tutor = $this->db()->UnicoCampo("SELECT ref_cod_tutormenu FROM pmicontrolesis.menu WHERE {$where} LIMIT 1 OFFSET 0"); } else { $this->prog_alert .= "O menu pai do processo AP {$this->processoAp} está voltando vazio (cod_menu inexistente?).<br>"; } } elseif ($_SESSION['menu_atual']) { $this->db()->Consulta("SELECT cod_menu_submenu FROM menu_submenu WHERE ref_cod_menu_menu = '{$_SESSION['menu_atual']}'"); while ($this->db()->ProximoRegistro()) { $tupla = $this->db()->Tupla(); $submenu[] = $tupla['cod_menu_submenu']; } $where = implode(" OR ref_cod_menu_submenu = ", $submenu); $where = "ref_cod_menu_submenu = {$where}"; $menu_tutor = $this->db()->UnicoCampo("SELECT ref_cod_tutormenu FROM pmicontrolesis.menu WHERE {$where} LIMIT 1 OFFSET 0"); } if ($menu_tutor) { $obj_menu_suspenso = new clsMenuSuspenso(); $lista_menu = $obj_menu_suspenso->listaNivel($menu_tutor, $idpes); $lista_menu_suspenso = $lista_menu; if ($lista_menu_suspenso) { for ($i = 0, $loop = count($lista_menu_suspenso); $i < $loop; $i++) { $achou = FALSE; if (!$lista_menu_suspenso[$i]['ref_cod_menu_submenu']) { foreach ($lista_menu as $id => $menu) { if ($menu['ref_cod_menu_pai'] == $lista_menu_suspenso[$i]['cod_menu']) { $achou = TRUE; } } if (!$achou) { unset($lista_menu[$i]); } } } $saida = '<script type="text/javascript">'; $saida .= 'array_menu = new Array(); array_id = new Array();'; foreach ($lista_menu as $menu_suspenso) { $ico_menu = ''; if (is_numeric($menu_suspenso['ref_cod_ico'])) { $this->db()->Consulta("SELECT caminho FROM portal.imagem WHERE cod_imagem = {$menu_suspenso['ref_cod_ico']} "); if ($this->db()->ProximoRegistro()) { list($ico_menu) = $this->db()->Tupla(); $ico_menu = "imagens/banco_imagens/{$ico_menu}"; } } $alvo = $menu_suspenso['alvo'] ? $menu_suspenso['alvo'] : '_self'; // Corrige o path usando caminhos relativos para permitir a inclusão // de itens no menu que apontem para um módulo if ($uri[1] == 'module') { if (0 === strpos($menu_suspenso['caminho'], 'module')) { $menu_suspenso['caminho'] = '../../' . $menu_suspenso['caminho']; } else { $menu_suspenso['caminho'] = '../../intranet/' . $menu_suspenso['caminho']; } } elseif (0 === strpos($menu_suspenso['caminho'], 'module')) { $menu_suspenso['caminho'] = '../../' . $menu_suspenso['caminho']; } $saida .= "array_menu[array_menu.length] = new Array(\"{$menu_suspenso['tt_menu']}\",{$menu_suspenso['cod_menu']},'{$menu_suspenso['ref_cod_menu_pai']}','', '{$ico_menu}', '{$menu_suspenso['caminho']}', '{$alvo}');"; if (!$menu_suspenso['ref_cod_menu_pai']) { $saida .= "array_id[array_id.length] = {$menu_suspenso['cod_menu']};"; } } $saida .= "</script>"; } $saida .= "<script type=\"text/javascript\">\n setTimeout(\"setXY();\",150);\n MontaMenu();\n </script>"; return $saida; } return FALSE; }
/** * Configura a URL padrão para a ação Cancelar da tela de Edição de um * registro. * * Por padrão, cria uma URL "index". * * @param CoreExt_Entity $entry A instância atual recuperada * ViewController::Gerar(). */ public function setUrlCancelar(CoreExt_Entity $entry) { $this->url_cancelar = CoreExt_View_Helper_UrlHelper::url('index'); }
public function setUrlCancelar(CoreExt_Entity $entry) { $this->url_cancelar = CoreExt_View_Helper_UrlHelper::url('index', array('query' => array('id' => $entry->id, 'servidor' => $entry->servidor, 'instituicao' => $this->getRequest()->instituicao))); }
/** * Configura botões padrão de clsCadastro * @return Core_Controller_Page_Abstract Provê interface fluída */ public function configurarBotoes() { // Botão Cancelar (clsDetalhe e clsCadastro) if ($this->_hasOption('url_cancelar')) { $config = $this->getOption('url_cancelar'); if (is_string($config)) { $this->url_cancelar = $config; } elseif (is_array($config)) { $this->url_cancelar = CoreExt_View_Helper_UrlHelper::url($config['path'], $config['options']); } } return $this; }
function MakeMenu($linhaTemplate, $categoriaTemplate) { // Usa helper de Url para pegar o path da requisição require_once 'CoreExt/View/Helper/UrlHelper.php'; $uri = explode('/', CoreExt_View_Helper_UrlHelper::url($_SERVER['REQUEST_URI'], array('components' => CoreExt_View_Helper_UrlHelper::URL_PATH))); $this->aberto = 0; $saida = ''; $linha_nova = $linhaTemplate; $linha_nova_subtitulo = $categoriaTemplate; $super_usuario = ''; $itens_menu = array(); $autorizado_menu = array(); @session_start(); $id_usuario = $_SESSION['id_pessoa']; $opcoes_menu = $_SESSION['menu_opt']; $dba = new clsBanco(); $dba->Consulta(' SELECT ref_cod_menu_submenu FROM menu_funcionario WHERE ref_ref_cod_pessoa_fj = ' . $id_usuario); while ($dba->ProximoRegistro()) { list($aut) = $dba->Tupla(); $autorizado_menu[] = $aut; if ($aut == 0) { $super_usuario = TRUE; } } $strAutorizado = implode(', ', $autorizado_menu); if (@$_SESSION['convidado']) { $strAutorizado = '999999'; } session_write_close(); $db = new clsBanco(); if ($strAutorizado == '0' || $super_usuario) { if ($_GET['suspenso'] == 1 || $_SESSION['suspenso'] == 1 || $_SESSION['tipo_menu'] == 1) { $sql = "\n SELECT\n pai.nm_menu,\n nome_menu.nm_menu AS nm_menu_pai,\n pai.title AS title_pai,\n sub.nm_submenu,\n sub.arquivo,\n sub.title,\n pai.cod_menu_menu,\n CASE\n WHEN pai.ref_cod_menu_pai IS NULL\n THEN 0\n ELSE\n 1\n END AS ref_menu_pai\n FROM\n menu_menu AS pai LEFT OUTER JOIN\n menu_menu AS filho ON (filho.ref_cod_menu_pai = pai.cod_menu_menu AND pai.ref_cod_menu_pai = NULL),\n menu_submenu AS sub,\n menu_menu as nome_menu\n WHERE\n nome_menu.cod_menu_menu = COALESCE(pai.ref_cod_menu_pai,pai.cod_menu_menu)\n AND sub.cod_sistema = '2'\n AND pai.cod_menu_menu = sub.ref_cod_menu_menu\n AND sub.cod_menu_submenu NOT IN (\n SELECT\n ref_cod_menu_submenu\n FROM\n pmicontrolesis.menu\n WHERE\n suprime_menu = 1\n AND ref_cod_menu_submenu IS NOT NULL\n )\n ORDER BY\n upper(nome_menu.nm_menu), ref_menu_pai, UPPER(pai.nm_menu), sub.nm_submenu"; } else { $sql = "\n SELECT\n DISTINCT pai.nm_menu,\n nome_menu.nm_menu AS nm_menu_pai,\n pai.title AS title_pai,\n sub.nm_submenu,\n sub.arquivo,\n sub.title,\n pai.cod_menu_menu,\n CASE\n WHEN pai.ref_cod_menu_pai IS NULL\n THEN 0\n ELSE\n 1\n END AS ref_menu_pai,\n UPPER(nome_menu.nm_menu), UPPER(pai.nm_menu), sub.nm_submenu\n FROM\n menu_menu AS pai LEFT OUTER JOIN\n menu_menu AS filho ON (filho.ref_cod_menu_pai = pai.cod_menu_menu),\n menu_submenu AS sub,\n menu_menu AS nome_menu\n WHERE\n nome_menu.cod_menu_menu = COALESCE(pai.ref_cod_menu_pai, pai.cod_menu_menu)\n AND sub.cod_sistema = '2'\n AND pai.cod_menu_menu = sub.ref_cod_menu_menu\n ORDER BY\n UPPER(nome_menu.nm_menu), ref_menu_pai, UPPER(pai.nm_menu), sub.nm_submenu"; } } else { $query_lista = ''; if ($strAutorizado) { $query_lista = "sub.cod_menu_submenu in ({$strAutorizado}) OR "; } $suspenso = ''; if ($_GET['suspenso'] == 1 || $_SESSION['suspenso'] == 1 || $_SESSION['tipo_menu'] == 1) { $suspenso = " AND sub.cod_menu_submenu not in (select ref_cod_menu_submenu FROM pmicontrolesis.menu WHERE suprime_menu = 1 AND ref_cod_menu_submenu IS NOT NULL)"; } if ($strAutorizado == '999999') { $sql = "\n SELECT\n pai.nm_menu,\n nome_menu.nm_menu AS nm_menu_pai,\n pai.title AS title_pai,\n sub.nm_submenu,\n sub.arquivo,\n sub.title,\n pai.cod_menu_menu,\n CASE\n WHEN pai.ref_cod_menu_pai IS NULL\n THEN 0\n ELSE\n 1\n END AS ref_menu_pai\n FROM\n menu_menu AS pai LEFT OUTER JOIN menu_menu as filho ON (filho.ref_cod_menu_pai = pai.cod_menu_menu),\n menu_submenu AS sub,\n menu_menu AS nome_menu\n WHERE\n nome_menu.cod_menu_menu = COALESCE(pai.ref_cod_menu_pai, pai.cod_menu_menu)\n AND sub.cod_sistema = '2'\n AND pai.cod_menu_menu = sub.ref_cod_menu_menu\n AND ({$query_lista}\n sub.cod_menu_submenu IN (\n SELECT\n sub2.cod_menu_submenu\n FROM\n menu_submenu sub2\n WHERE\n sub2.nivel='1'\n )\n )\n ORDER BY\n UPPER(nome_menu.nm_menu), ref_menu_pai, UPPER(pai.nm_menu), sub.nm_submenu"; } else { $sql = "\n SELECT\n DISTINCT pai.nm_menu,\n nome_menu.nm_menu AS nm_menu_pai,\n pai.title AS title_pai,\n sub.nm_submenu,\n sub.arquivo,\n sub.title,\n pai.cod_menu_menu,\n CASE\n WHEN pai.ref_cod_menu_pai IS NULL\n THEN 0\n ELSE\n 1\n END AS ref_menu_pai,\n UPPER(nome_menu.nm_menu),\n UPPER(pai.nm_menu)\n FROM\n menu_menu AS pai\n LEFT OUTER JOIN menu_menu AS filho ON (filho.ref_cod_menu_pai = pai.cod_menu_menu),\n menu_submenu AS sub,\n menu_menu AS nome_menu\n WHERE\n nome_menu.cod_menu_menu = COALESCE(pai.ref_cod_menu_pai, pai.cod_menu_menu)\n AND sub.cod_sistema = '2'\n AND pai.cod_menu_menu = sub.ref_cod_menu_menu\n AND ({$query_lista}\n sub.cod_menu_submenu IN (\n SELECT\n sub2.cod_menu_submenu\n FROM\n menu_submenu sub2\n WHERE\n sub2.nivel='2')\n )\n {$suspenso}\n ORDER BY\n UPPER(nome_menu.nm_menu), ref_menu_pai, UPPER(pai.nm_menu), sub.nm_submenu\n "; } } $db->Consulta($sql); while ($db->ProximoRegistro()) { list($nome, $nomepai, $titlepai, $nomesub, $arquivo, $titlesub, $cod_submenu, $ref_menu_pai) = $db->Tupla(); $itens_menu[] = array($nome, $nomepai, $titlepai, $nomesub, $arquivo, $titlesub, $cod_submenu, $ref_menu_pai); } $saida = ''; $menuPaiAtual = ''; foreach ($itens_menu as $item) { if ($item[0] != $menuPaiAtual) { $estilo_linha = 'nvp_cor_sim'; $this->aberto = 0; $menuPaiId = $item[6]; if (isset($_COOKIE['menu_' . $menuPaiId])) { if ($_COOKIE['menu_' . $menuPaiId] == 'V') { $this->aberto = 1; } } // Define a ação para ser contrária ao status atual if ($this->aberto) { $imagem = 'up2'; $acao = 0; $simbolo = '-'; $title_acao = 'Fechar a categoria'; } else { $imagem = 'down2'; $acao = 1; $simbolo = '+'; $title_acao = 'Abrir a categoria'; } $saida = str_replace('<!-- #&MENUS&# -->', $submenus, $saida); $submenus = ''; // Adiciona um menu pai $aux_temp = $linha_nova_subtitulo; $aux_temp = str_replace('<!-- #&NOME&# -->', $item[0], $aux_temp); $aux_temp = str_replace('<!-- #&ALT&# -->', $item[3], $aux_temp); $aux_temp = str_replace('<!-- #&ID&# -->', $item[6], $aux_temp); $aux_temp = str_replace('<!-- #&ACAO&# -->', $acao, $aux_temp); $aux_temp = str_replace('<!-- #&SIMBOLO&# -->', $simbolo, $aux_temp); $aux_temp = str_replace('<!-- #&TITLE_ACAO&# -->', $title_acao, $aux_temp); $aux_temp = str_replace('<!-- #&MENUPAI&# -->', $item[0], $aux_temp); $aux_temp = str_replace('<!-- #&IMAGEM&# -->', $imagem, $aux_temp); $aux_temp = str_replace('<!-- #&IDMENUPAI&# -->', $menuPaiId, $aux_temp); $style = $this->aberto == 1 ? '' : 'style="display:none;"'; $aux_temp = str_replace('<!-- #&STYLE&# -->', $style, $aux_temp); $saida .= $aux_temp; // Define que este é o menu pai atual $menuPaiAtual = $item[0]; } $aux_temp = $linha_nova; if (substr($item[4], 0, 5) == 'http:') { $target = '_blank'; } else { $target = '_top'; } $estilo_linha = $estilo_linha == 'nvp_cor_sim' ? 'nvp_cor_nao' : 'nvp_cor_sim'; // Path do item de menu $path = $item[4]; // Corrige o path usando caminhos relativos para permitir a inclusão // de itens no menu que apontem para um módulo if ($uri[1] == 'module') { if (0 === strpos($path, 'module')) { $path = '../../' . $path; } else { $path = '../../intranet/' . $path; } } elseif (0 === strpos($path, 'module')) { $path = '../../' . $path; } $aux_temp = str_replace('<!-- #&CLASS&# -->', $estilo_linha, $aux_temp); $aux_temp = str_replace('<!-- #&NOME&# -->', $item[3], $aux_temp); $aux_temp = str_replace('<!-- #&LINK&# -->', $path, $aux_temp); $aux_temp = str_replace('<!-- #&ALT&# -->', $item[3], $aux_temp); $aux_temp = str_replace('<!-- #&TARGET&# -->', $target, $aux_temp); $submenus .= $aux_temp; } $saida = str_replace('<!-- #&MENUS&# -->', $submenus, $saida); return $saida; }
public function testUrlRetornaComPath() { $expected = 'http://www.example.com/controller'; $this->assertEquals($expected, CoreExt_View_Helper_UrlHelper::url('http://www.example.com/controller', array('absolute' => TRUE, 'components' => CoreExt_View_Helper_UrlHelper::URL_PATH))); }