From ac5b087ea2d9ba7428d367aaeb288534158fee9a Mon Sep 17 00:00:00 2001 From: christopherm Date: Fri, 1 Sep 2006 01:16:38 +0000 Subject: Initial Import git-svn-id: https://ledger-smb.svn.sourceforge.net/svnroot/ledger-smb/ledger-smb@1 4979c152-3d1c-0410-bac9-87ea11338e46 --- LedgerSMB/Menu.pm | 91 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100755 LedgerSMB/Menu.pm (limited to 'LedgerSMB/Menu.pm') diff --git a/LedgerSMB/Menu.pm b/LedgerSMB/Menu.pm new file mode 100755 index 00000000..417f6cba --- /dev/null +++ b/LedgerSMB/Menu.pm @@ -0,0 +1,91 @@ +#===================================================================== +# LedgerSMB +# Small Medium Business Accounting software +# +# See COPYRIGHT file for copyright information +#====================================================================== +# +# This file has NOT undergone whitespace cleanup. +# +#====================================================================== +# +# routines for menu items +# +#===================================================================== + +package Menu; + +use LedgerSMB::Inifile; +@ISA = qw/Inifile/; + + +sub menuitem { + my ($self, $myconfig, $form, $item) = @_; + + my $module = ($self->{$item}{module}) ? $self->{$item}{module} : $form->{script}; + my $action = ($self->{$item}{action}) ? $self->{$item}{action} : "section_menu"; + my $target = ($self->{$item}{target}) ? $self->{$item}{target} : ""; + + my $level = $form->escape($item); + my $str = qq|{$item}{href}|; + @vars = qw(module target href); + } + + for (@vars) { delete $self->{$item}{$_} } + + delete $self->{$item}{submenu}; + + # add other params + foreach my $key (keys %{ $self->{$item} }) { + $str .= "&".$form->escape($key)."="; + ($value, $conf) = split /=/, $self->{$item}{$key}, 2; + $value = "$myconfig->{$value}$conf" if $self->{$item}{$key} =~ /=/; + + $str .= $form->escape($value); + } + + $str .= qq|#id$form->{tag}| if $target eq 'acc_menu'; + + if ($target) { + $str .= qq|" target="$target"|; + } + + $str .= qq|>|; + +} + + +sub access_control { + my ($self, $myconfig, $menulevel) = @_; + + my @menu = (); + + if ($menulevel eq "") { + @menu = grep { !/--/ } @{ $self->{ORDER} }; + } else { + @menu = grep { /^${menulevel}--/; } @{ $self->{ORDER} }; + } + + my @a = split /;/, $myconfig->{acs}; + my $excl = (); + + # remove --AR, --AP from array + grep { ($a, $b) = split /--/; s/--$a$//; } @a; + + for (@a) { $excl{$_} = 1 } + + @a = (); + for (@menu) { push @a, $_ unless $excl{$_} } + + @a; + +} + + +1; + -- cgit v1.2.3