[$ if ($ENV{'SCRIPT_NAME'} ne "/index.epl" && $ENV{'SCRIPT_NAME'} ne "/Php2Embperl_Session.epl")$] [- $http_headers_out{'Location'}="./index.epl" if(!$udat{'user'}); -] [- use DBI; use Data::Dumper; #Conecciones a las bases $CLEANUP{'bases'} = 0; our $bases->{'newsclient'}=[ "dbi:mysql:dbname=MEconDAV;host=localhost", "mark", "mark", {RaiseError=>1, AutoCommit=>1}]; our $bases->{'menu'}=[ "dbi:mysql:dbname=USUARIOS;host=localhost", "menu", "menu", {RaiseError=>1, AutoCommit=>1}]; our $bases->{'liq'}=[ "dbi:mysql:dbname=liquidaciones;host=localhost", "me", "me", {RaiseError=>1, AutoCommit=>1}]; our $bases->{'partidos'}=[ "dbi:mysql:dbname=partidos;host=localhost", "partidos", "partidos", {RaiseError=>1, AutoCommit=>1}]; -] [! #Precarga del Arbol que genera el menu $CLEANUP{'dbh'} = 0; my $dbh=DBI->connect(@{$bases->{'menu'}}); $CLEANUP{'menu'} = 0; our $menu = $dbh->selectall_arrayref(' SELECT pagina.pagina, pagina.link, pagina.nombre, pagina.tipo, pagina.icono, pagina.descr, pagina.tipo, area.color_obscuro, area.color_claro FROM pagina, area WHERE tipo="A" AND pagina.pagina=area.pagina ORDER BY pagina.pagina'); #Estructura del menu: #array de: # arrays con: # 0 numero # 1 link # 2 nombre # 3 tipo # 4 icono # 5 descripcion # 6 array con las paginas inferiores # 7 color claro # 8 color obscuro # cada pagina inferior tiene: # 0 numero # 1 link # 2 nombre # 3 tipo # 4 icono # 5 descripcion # 6 array con las paginas inferiores #esta es una lista invertida de los links y las areas para rastrear que menu mostrar a partir de que pagina muestra #se podria hacer del arbol pero seria algo lento $CLEANUP{'busc_area'} = 0; our $busc_area; $busc_area->{"$_->[1]"} = $_->[0]-1 foreach (@$menu); #Carga recursiva de hojas sub cargarinferiores($$) { my $pag = shift; my $area = shift; $pag->[6]= $dbh->selectall_arrayref(" SELECT pagina.pagina, pagina.link, pagina.nombre, pagina.tipo, pagina.icono, pagina.descr FROM pagina WHERE pagina.pagina_sup=$pag->[0] # AND pagina.tipo <> 'O' ORDER BY pagina.tipo, pagina.nombre"); my $tmp= $dbh->selectall_arrayref(" SELECT pagina.link FROM pagina WHERE pagina.pagina_sup=$pag->[0] AND pagina.tipo <> 'L'"); $busc_area->{"$_->[0]"}=$area foreach (@$tmp); cargarinferiores($_,$area) foreach (@{$pag->[6]}); }; cargarinferiores($_,$_->[0]-1) foreach (@$menu); #estas variables se usan para generar el codigo del menu, se inicializan fuera por velocidad my $bg_color; my $fg_color; my $tam; my $link_ini; my $link_fin; my $b_ini; my $b_fin; my $tab; my $new_frame; !] [! sub rama_abierta($$) { $rama = shift; $link = shift; return 1 if ($rama->[1] eq $link); return 1 if ($rama->[1] =~ /^$link?/); foreach (@{$rama->[6]}) { return 1 if rama_abierta($_, $link); } return 0; }; #global para saber en que nivel estoy; $xtab=''; sub Linea($$$) { my $l = shift; my $color_oscuro = shift; my $color_claro = shift; $activo = ''; foreach (@{$l->[6]}) { $activo = true if ($_->[1] =~ /^$ENV{'SCRIPT_NAME'}/); } $bg_color = 'CCCCCC'; if ($l->[1] =~ /^$ENV{'SCRIPT_NAME'}/ or $activo ) { $bg_color = $color_claro; $tipo_pag = $l->[3]; } $fg_color= '000000'; $tam = "size='0'"; $link_ini = ''; $link_fin=''; $b_ini=''; $b_fin=''; $tab='- '; $new_frame=''; $new_frame='target=_blank' if($l->[3] eq 'L'); if ($l->[1]) { $link_ini = ""; $link_fin = ""; } if($l->[3] eq 'S') { $bg_color = $color_oscuro; $fg_color = 'FFFFFF'; $tam = "size='2'"; $b_ini = ""; $b_fin= ""; $tab=''; } my $linea_html = " $b_ini$link_ini $xtab$tab$l->[2] $link_fin$b_fin "; foreach (@{$l->[6]}) { if ($_->[3] ne 'O') { my $oldtab = $xtab; $xtab .= '   ' if (($l->[3] ne "S")and($l->[3] ne "S")); $linea_html .= Linea($_, $color_oscuro, $color_claro) if (rama_abierta($l,$ENV{'SCRIPT_NAME'})or(!$l->[1])); $xtab = $oldtab; } } return $linea_html; }; sub DesplegarMenu($) { $area = shift; $tipo_pag = 'A'; foreach (@{$area->[6]}) { $menu_html .= Linea($_, $area->[7], $area->[8]); $tipo_pag = 'A' if ($_->[1] =~ /^$ENV{'SCRIPT_NAME'}/ ); } return $menu_html; }; !] [- our $char_menu = DesplegarMenu($menu->[$busc_area->{"$ENV{'SCRIPT_NAME'}"}]) -] [- $ret = shift; $ret->{'bases'} = $bases; $ret->{'menu'} = $menu; $ret->{'busc_area'} = $busc_area; -] INTRANET DEL MINISTERIO DE ECONOMIA [$ if defined $fdat{'debug'} $] [- Execute ('debug.epl') -] [$ else $] [- Execute ('cabecera.epl') -] [$ endif $] [$ if ($ENV{'SCRIPT_NAME'} ne '/mapa.epl') $] [$ else $] [$ endif $]
[+ $char_menu +]
[- Execute('barra_areas.epl')-]
[- if (-f $ENV{'SCRIPT_FILENAME'}) { Execute('*'); } else { Execute('auto_pag.epl') } -]
Información | Servicios | Consultas | Gestión Horizontal | Gestión Local
Copyright © 2001 Ministerio de Economía
[- Execute('*'); -]
[$ else $] [- Execute('*') -] [$ endif $]