X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/blobdiff_plain/ed944ca355b3446d4e6c3fc22f748f77b64d58db..98e679e3eb9f09d13938df305cad3f47a5862b9f:/SL/Menu.pm diff --git a/SL/Menu.pm b/SL/Menu.pm index 9fcf15374..873701616 100644 --- a/SL/Menu.pm +++ b/SL/Menu.pm @@ -34,131 +34,44 @@ package Menu; -use SL::Auth; -use SL::Inifile; - use strict; -sub new { - $main::lxdebug->enter_sub(); - - my ($type, $menufile) = @_; - - my $self = {}; - my $inifile = Inifile->new($menufile); - - map { $self->{$_} = $inifile->{$_} } keys %{ $inifile }; +use SL::Auth; +use SL::Inifile; - bless $self, $type; +our @ISA = qw(Inifile); - $self->set_access(); - $main::lxdebug->leave_sub(); - - return $self; -} - -sub menuitem { +sub new { $main::lxdebug->enter_sub(); - my ($self, $myconfig, $form, $item) = @_; - - my $module = $form->{script}; - my $action = "section_menu"; - my $target = ""; - - if ($self->{$item}{module}) { - $module = $self->{$item}{module}; - } - if ($self->{$item}{action}) { - $action = $self->{$item}{action}; - } - if ($self->{$item}{target}) { - $target = $self->{$item}{target}; - } - - my $level = $form->escape($item); - - my $str = qq|{$item}{href}) { - $str = qq|{$item}{href}|; - @vars = qw(module target href); - } - - map { delete $self->{$item}{$_} } @vars; + my ($package, @menufiles) = @_; - # add other params - foreach my $key (keys %{ $self->{$item} }) { - $str .= "&" . $form->escape($key, 1) . "="; - my ($value, $conf) = split(/=/, $self->{$item}{$key}, 2); - $value = $myconfig->{$value} . "/$conf" if ($conf); - $str .= $form->escape($value, 1); - } + my $self = $package->SUPER::new($menufiles[0]); - if ($target) { - $str .= qq| target=$target|; + for (@menufiles[1..$#menufiles]) { + my $inifile = Inifile->new($_); + push @{ $self->{ORDER} }, @{ delete $inifile->{ORDER} }; + $self->{$_} = $inifile->{$_} for keys %$inifile; } - $str .= ">"; + $self->set_access; $main::lxdebug->leave_sub(); - return $str; -} - -sub menuitem_js { - my ($self, $myconfig, $form, $item) = @_; - - my $module = $form->{script}; - my $action = "section_menu"; - - #if ($self->{$item}{module}) { - $module = $self->{$item}{module}; - - #} - if ($self->{$item}{action}) { - $action = $self->{$item}{action}; - } - - my $level = $form->escape($item); - my $str = qq|$module?action=$action&level=$level|; - my @vars = qw(module action target href); - - if ($self->{$item}{href}) { - $str = qq|$self->{$item}{href}|; - @vars = qw(module target href); - } - - map { delete $self->{$item}{$_} } @vars; - - # add other params - foreach my $key (keys %{ $self->{$item} }) { - $str .= "&" . $form->escape($key, 1) . "="; - my ($value, $conf) = split(/=/, $self->{$item}{$key}, 2); - $value = $myconfig->{$value} . "/$conf" if ($conf); - $str .= $form->escape($value, 1); - } - - $str .= " "; - + return $self; } sub menuitem_new { - $main::lxdebug->enter_sub(); + $main::lxdebug->enter_sub(LXDebug::DEBUG2()); my ($self, $name, $item) = @_; - my $form = $main::form; - my $myconfig = \%main::myconfig; - - my $module = $self->{$name}->{module} || $form->{script}; + my $module = $self->{$name}->{module} || $::form->{script}; my $action = $self->{$name}->{action}; $item->{target} = $self->{$name}->{target} || "main_window"; - $item->{href} = $self->{$name}->{href} || "${module}?action=" . $form->escape($action); + $item->{href} = $self->{$name}->{href} || "${module}?action=" . $::form->escape($action); my @vars = qw(module target href); push @vars, 'action' unless ($self->{$name}->{href}); @@ -168,127 +81,11 @@ sub menuitem_new { # add other params foreach my $key (keys %{ $self->{$name} }) { my ($value, $conf) = split(m/=/, $self->{$name}->{$key}, 2); - $value = $myconfig->{$value} . "/$conf" if ($conf); - $item->{href} .= "&" . $form->escape($key) . "=" . $form->escape($value); - } - - $main::lxdebug->leave_sub(); -} - -sub menuitem_v3 { - $main::lxdebug->enter_sub(); - - my ($self, $myconfig, $form, $item, $other) = @_; - - my $module = $form->{script}; - my $action = "section_menu"; - my $target = ""; - - if ($self->{$item}{module}) { - $module = $self->{$item}{module}; - } - if ($self->{$item}{action}) { - $action = $self->{$item}{action}; - } - if ($self->{$item}{target}) { - $target = $self->{$item}{target}; - } - - my $level = $form->escape($item); - - my $str = qq|escape($key, 1) . "="; - my ($value, $conf) = split(/=/, $self->{$item}{$key}, 2); - $value = $myconfig->{$value} . "/$conf" if ($conf); - $str .= $form->escape($value, 1); - } - - $str .= '"'; - - if ($target) { - $str .= qq| target="| . $form->quote($target) . qq|"|; - } - - if ($other) { - foreach my $key (keys(%{$other})) { - $str .= qq| ${key}="| . $form->quote($other->{$key}) . qq|"|; - } - } - - $str .= ">"; - - $main::lxdebug->leave_sub(); - - return $str; -} - -sub menuitem_XML { - $main::lxdebug->enter_sub(); - - my ($self, $myconfig, $form, $item, $other) = @_; - - my $module = $form->{script}; - my $action = "section_menu"; - my $target = ""; - - if ($self->{$item}{module}) { - $module = $self->{$item}{module}; - } - if ($self->{$item}{action}) { - $action = $self->{$item}{action}; - } - if ($self->{$item}{target}) { - $target = $self->{$item}{target}; + $value = $::myconfig->{$value} . "/$conf" if ($conf); + $item->{href} .= "&" . $::form->escape($key) . "=" . $::form->escape($value); } - my $level = $form->escape($item); - - my $str = qq| link="$module?action=| . $form->escape($action) . - qq|&level=| . $form->escape($level); - - my @vars = qw(module action target href); - - if ($self->{$item}{href}) { - $str = qq| link=$self->{$item}{href}|; - @vars = qw(module target href); - } - - map { delete $self->{$item}{$_} } @vars; - - # add other params - foreach my $key (keys %{ $self->{$item} }) { - $str .= "&" . $form->escape($key, 1) . "="; - my ($value, $conf) = split(/=/, $self->{$item}{$key}, 2); - $value = $myconfig->{$value} . "/$conf" if ($conf); - $str .= $form->escape($value, 1); - } - - $str .= '"'; - - - - if ($other) { - foreach my $key (keys(%{$other})) { - $str .= qq| ${key}="| . $form->quote($other->{$key}) . qq|"|; - } - } - - - $main::lxdebug->leave_sub(); - - return $str; + $main::lxdebug->leave_sub(LXDebug::DEBUG2()); } sub access_control { @@ -298,7 +95,7 @@ sub access_control { my @menu = (); - if ($menulevel eq "") { + if (!$menulevel) { @menu = grep { !/--/ } @{ $self->{ORDER} }; } else { @menu = grep { /^${menulevel}--/ } @{ $self->{ORDER} }; @@ -346,7 +143,7 @@ sub parse_access_string { push @{$cur_ary}, $token; } else { - push @{$cur_ary}, $auth->check_right($form->{login}, $token, 1); + push @{$cur_ary}, $auth->check_right($::myconfig{login}, $token, 1); } } @@ -361,6 +158,11 @@ sub parse_access_string { return SL::Auth::evaluate_rights_ary($stack[0]); } +sub parse_instance_conf_string { + my ($self, $setting) = @_; + return $::instance_conf->data->{$setting}; +} + sub set_access { my $self = shift; @@ -370,6 +172,7 @@ sub set_access { my $entry = $self->{$key}; $entry->{GRANTED} = $entry->{ACCESS} ? $self->parse_access_string($key, $entry->{ACCESS}) : 1; + $entry->{GRANTED} &&= $self->parse_instance_conf_string($entry->{INSTANCE_CONF}) if $entry->{INSTANCE_CONF}; $entry->{IS_MENU} = $entry->{submenu} || ($key !~ m/--/); $entry->{NUM_VISIBLE_CHILDREN} = 0;