[$ 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') $]
|
|
[- 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
|
[$ else $]
[- Execute('*'); -]
|
[$ endif $]
[$ else $]
[- Execute('*') -]
[$ endif $]