6 my ($class, %params) = @_;
8 my $obj = bless {}, $class;
9 $obj->{fullname} = $params{name};
10 my $values = $params{item};
12 $obj->{ACCESS} = delete $values->{ACCESS};
13 $obj->{module} = delete $values->{module} || die 'menuitem - need module';
14 $obj->{action} = delete $values->{action} || die 'menuitem - need action';
16 $obj->{params} = $values;
19 sub ACCESS { $_[0]{ACCESS} }
20 sub action { $_[0]{action} }
21 sub module { $_[0]{module} }
22 sub params { $_[0]{params} }
24 sub name { $_[0]{name} ||= $_[0]->_init_name }
25 sub _init_name { my $name = $_[0]{fullname}; $name =~ s/.*--//; $name }
26 sub path { @{ $_[0]{path} ||= [ $_[0]->_init_path ] } }
27 sub _init_path { my $name = $_[0]{fullname}; split /--/, $name }
34 ###### internal stuff #######
46 SL::MenuItem - wrapper class for menu items
52 for my item (Menu->new->menuitems) {
53 next unless $item->access;
55 make_your_own_menuentry_from(
56 module => $item->module,
57 action => $iten->action,
58 params => $item->params,
61 children => $item->children,
62 parent => $item->parent,
68 This provides some wrapper methods around the raw entries in menu.ini. It sorts through expected information like module and action, wraps access calls for you and gives you tree access to siblings, children and parent elements in the menu structure.
98 Sven Schoeling E<lt>s.schoeling@linet-services.deE<gt>