X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FMenu.pm;h=0c6df2247a976d6efb2939b9fd710bfa7d26e61e;hb=1268bf670c06f5a66ad78a75e41ad6c15061d9bc;hp=0e92cc5b3d75b9ee6f094e0fc2bf286d8ba72c2c;hpb=37df271bea8bf485f36b3de420b6ae9e02d33f7a;p=kivitendo-erp.git diff --git a/SL/Menu.pm b/SL/Menu.pm index 0e92cc5b3..0c6df2247 100644 --- a/SL/Menu.pm +++ b/SL/Menu.pm @@ -3,14 +3,9 @@ package SL::Menu; use strict; use SL::Auth; -use YAML (); use File::Spec; use SL::MoreCommon qw(uri_encode); - -our $yaml_xs; -BEGIN { - $yaml_xs = eval { require YAML::XS }; -} +use SL::YAML; our %menu_cache; @@ -29,11 +24,7 @@ sub new { for my $file (@files) { my $data; eval { - if ($yaml_xs) { - $data = YAML::XS::LoadFile(File::Spec->catfile($path, $file)); - } else { - $data = YAML::LoadFile(File::Spec->catfile($path, $file)); - } + $data = SL::YAML::LoadFile(File::Spec->catfile($path, $file)); 1; } or do { die "Error while parsing $file: $@"; @@ -180,7 +171,7 @@ sub parse_access_string { my $access = $node->{access}; - while ($access =~ m/^([a-z_\/]+|\||\&|\(|\)|\s+)/) { + while ($access =~ m/^([a-z_\/]+|\!|\||\&|\(|\)|\s+)/) { my $token = $1; substr($access, 0, length($1)) = ""; @@ -199,7 +190,7 @@ sub parse_access_string { } $cur_ary = $stack[-1]; - } elsif (($token eq "|") || ($token eq "&")) { + } elsif (($token eq "|") || ($token eq "&") || ($token eq "!")) { push @{$cur_ary}, $token; } else { @@ -273,4 +264,3 @@ sub set_access { } 1; -