]> wagnertech.de Git - mfinanz.git/blobdiff - SL/Menu.pm
restart apache2 in postinst
[mfinanz.git] / SL / Menu.pm
index 0c6df2247a976d6efb2939b9fd710bfa7d26e61e..083b4b8427486b27c871d6bdeff297acced9e48b 100644 (file)
@@ -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")) {