Menu: links für Menü cachen
authorSven Schöling <s.schoeling@linet-services.de>
Thu, 29 Sep 2016 11:59:42 +0000 (13:59 +0200)
committerMoritz Bunkus <m.bunkus@linet-services.de>
Tue, 28 Feb 2017 09:04:33 +0000 (10:04 +0100)
SL/Menu.pm

index 08727ce..b916112 100644 (file)
@@ -212,14 +212,16 @@ sub href_for_node {
 
   return undef if !$node->{href} && !$node->{module} && !$node->{params};
 
-  my $href = $node->{href} || $node->{module} || 'controller.pl';
-  my @tokens;
+  return $node->{href_for_node} ||= do {
+    my $href = $node->{href} || $node->{module} || 'controller.pl';
+    my @tokens;
 
-  while (my ($key, $value) = each %{ $node->{params} }) {
-    push @tokens, uri_encode($key, 1) . "=" . uri_encode($value, 1);
-  }
+    while (my ($key, $value) = each %{ $node->{params} }) {
+      push @tokens, uri_encode($key, 1) . "=" . uri_encode($value, 1);
+    }
 
-  return join '?', $href, grep $_, join '&', @tokens;
+    join '?', $href, grep $_, join '&', @tokens;
+  }
 }
 
 sub name_for_node {