X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/blobdiff_plain/65b2387a54494a8cbc1d011602ae3f8d7208ea4d..f217d072d76183bc07723dcc29503b732bd2022d:/SL/Menu.pm diff --git a/SL/Menu.pm b/SL/Menu.pm index 0c6df2247..083b4b842 100644 --- a/SL/Menu.pm +++ b/SL/Menu.pm @@ -5,6 +5,7 @@ use strict; use SL::Auth; use File::Spec; use SL::MoreCommon qw(uri_encode); +use SL::InstanceState; use SL::YAML; our %menu_cache; @@ -40,10 +41,12 @@ sub new { _merge($nodes, $nodes_by_id, $data); } + my $instance_state = SL::InstanceState->new; my $self = bless { nodes => $nodes, by_id => $nodes_by_id, + instance_state => $instance_state, }, $package; $self->build_tree; @@ -196,6 +199,8 @@ sub parse_access_string { } else { if ($token =~ m{^ client / (.*) }x) { push @{$cur_ary}, $self->parse_instance_conf_string($1); + } elsif ($token =~ m{^ state / (.*) }x) { + push @{$cur_ary}, $self->parse_instance_state_string($1); } else { push @{$cur_ary}, $::auth->check_right($::myconfig{login}, $token, 1); } @@ -239,6 +244,11 @@ sub parse_instance_conf_string { return $::instance_conf->data->{$setting}; } +sub parse_instance_state_string { + my ($self, $setting) = @_; + return $self->{instance_state}->$setting; +} + sub clear_access { my ($self) = @_; for my $node ($self->tree_walk("all")) {