1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
|
#=====================================================================
# SQL-Ledger ERP
# Copyright (C) 2006
#
# Author: DWS Systems Inc.
# Web: http://www.sql-ledger.com
#
#=====================================================================
#
# routines for menu items
#
#=====================================================================
package Menu;
use SL::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 $str = qq|<a href=$module?path=$form->{path}&action=$action&login=$form->{login}&js=$form->{js}|;
if ($form->{path} =~ /lynx/) {
$str .= "&level=".$form->escape($item);
}
my @vars = qw(module action target href);
if ($self->{$item}{href}) {
$str = qq|<a href=$self->{$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 @acs = split /;/, $myconfig->{acs};
my $excl = ();
grep { ($a, $b) = split /--/; s/--$a$//; } @acs;
for (@acs) { $excl{$_} = 1 }
@acs = ();
for (@menu) { push @acs, $_ unless $excl{$_} }
@acs;
}
1;
|