- #=====================================================================
- # LedgerSMB
- # Small Medium Business Accounting software
- # http://www.ledgersmb.org/
- #
- # Copyright (C) 2006
- # This work contains copyrighted information from a number of sources all used
- # with permission.
- #
- # This file contains source code included with or based on SQL-Ledger which
- # is Copyright Dieter Simader and DWS Systems Inc. 2000-2005 and licensed
- # under the GNU General Public License version 2 or, at your option, any later
- # version. For a full list including contact information of contributors,
- # maintainers, and copyright holders, see the CONTRIBUTORS file.
- #
- # Original Copyright Notice from SQL-Ledger 2.6.17 (before the fork):
- # Copyright (C) 2002
- #
- # Author: DWS Systems Inc.
- # Web: http://www.sql-ledger.org
- #
- # Contributors: Tony Fraser <tony@sybaspace.com>
- #
- #======================================================================
- #
- # This file has 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|<a style="display:block;"|.
- qq|href="$module?path=$form->{path}&action=$action&|.
- qq|level=$level&login=$form->{login}&|.
- qq|timeout=$form->{timeout}&sessionid=$form->{sessionid}|.
- qq|&js=$form->{js}|;
- 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"|;
- }
- else{
- $str .= '"';
- }
-
- $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;
|