X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/blobdiff_plain/c621a9187eb258019fa540490de21b248c709516..e97c628d0f75459a88926c33e4b370aa98c6b680:/SL/Menu.pm diff --git a/SL/Menu.pm b/SL/Menu.pm index adac1b006..eac4e2fe6 100644 --- a/SL/Menu.pm +++ b/SL/Menu.pm @@ -39,11 +39,18 @@ use SL::Inifile; use strict; +my $instance; + sub new { $main::lxdebug->enter_sub(); my ($type, $menufile) = @_; + if ($instance) { + $::lxdebug->leave_sub; + return $instance; + } + my $self = {}; my $inifile = Inifile->new($menufile); @@ -55,58 +62,7 @@ sub new { $main::lxdebug->leave_sub(); - return $self; -} - -sub menuitem { - $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; - - # 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); - } - - if ($target) { - $str .= qq| target=$target|; - } - - $str .= ">"; - - $main::lxdebug->leave_sub(); - - return $str; + return $instance = $self; } sub menuitem_js { @@ -400,7 +356,10 @@ sub set_access { $self->{ORDER} = [ grep { $self->{$_}->{VISIBLE} } @{ $self->{ORDER} } ]; + { no strict 'refs'; + # ToDO: fix this. nuke and pave algorithm without type checking screams for problems. map { delete @{$self->{$_}}{qw(GRANTED IS_MENU NUM_VISIBLE_CHILDREN VISIBLE ACCESS)} if ($_ ne 'ORDER') } keys %{ $self }; + } } sub dump_visible {