kleine Weiterentwicklung
authorSven Schöling <s.schoeling@linet-services.de>
Tue, 28 Aug 2012 08:34:57 +0000 (10:34 +0200)
committerSven Schöling <s.schoeling@linet-services.de>
Wed, 17 Oct 2012 13:50:46 +0000 (15:50 +0200)
SL/Menu.pm
SL/MenuItem.pm

index 8b2a201..debceae 100644 (file)
@@ -58,6 +58,18 @@ sub new {
   return $self;
 }
 
+sub menuitems {
+  my ($self) = @_;
+
+  map {
+    SL::MenuItem->new(
+      name => $_,
+      menu => $self,
+      item => $self->{$_}
+    );
+  } $self->access_control;
+}
+
 sub menuitem {
   $main::lxdebug->enter_sub();
 
index 7accaf9..dbdaf80 100644 (file)
@@ -1,18 +1,19 @@
 package SL::MenuItem;
 
+use strict;
+
 sub new {
-  my ($class, %values) = @_;
+  my ($class, %params) = @_;
 
   my $obj = bless {}, $class;
-  $obj->{ACCESS} = delete $values{ACCESS};
-  $obj->{module} = delete $values{module} || die 'menuitem - need module';
-  $obj->{action} = delete $values{action} || die 'menuitem - need action';
-
-  $obj->{params} = \%values;
-}
+  $obj->{fullname} = $params{name};
+  my $values       = $params{item};
 
-sub access {
+  $obj->{ACCESS} = delete $values->{ACCESS};
+  $obj->{module} = delete $values->{module} || die 'menuitem - need module';
+  $obj->{action} = delete $values->{action} || die 'menuitem - need action';
 
+  $obj->{params} = $values;
 }
 
 sub ACCESS { $_[0]{ACCESS} }
@@ -20,7 +21,18 @@ sub action { $_[0]{action} }
 sub module { $_[0]{module} }
 sub params { $_[0]{params} }
 
-sub
+sub name { $_[0]{name} ||= $_[0]->_init_name }
+sub _init_name { my $name = $_[0]{fullname}; $name =~ s/.*--//; $name }
+sub path { @{ $_[0]{path} ||= [ $_[0]->_init_path ] } }
+sub _init_path { my $name = $_[0]{fullname}; split /--/, $name }
+
+sub children { }
+sub siblings {}
+sub parent {}
+
+
+###### internal stuff #######
+
 
 
 1;