--- /dev/null
+<%args>
+$CurrentDashboard => undef
+</%args>
+<%init>
+my @dashboards = $m->comp("/Dashboards/Elements/ListOfDashboards");
+my $limit = 7;
+
+$m->callback(
+ Dashboards => \@dashboards,
+ Limit => \$limit,
+ CallbackName => 'MassageDashboards',
+);
+
+my $more = 0;
+if (@dashboards > $limit) {
+ $more = 1;
+ splice @dashboards, $limit;
+}
+
+# always include the current dashboard, even if it's not in the initial list
+push @dashboards, $CurrentDashboard
+ if $CurrentDashboard
+ && 0 == grep { $_->Id == $CurrentDashboard->Id } @dashboards;
+
+my $position = 0;
+
+my $tabs = {
+ map {
+ ++$position;
+ my $key = sprintf 'D-%03d', $position;
+ $key => {
+ title => $_->Name,
+ path => 'Dashboards/' . $_->Id . '/' . $_->Name,
+ }
+ }
+ @dashboards
+};
+
+$tabs->{"A"} = {
+ title => loc('Home'),
+ path => 'index.html',
+};
+
+if ($more) {
+ $tabs->{"D-more"} = {
+ title => loc('More'),
+ path => 'Dashboards/index.html',
+ }
+}
+
+return $tabs;
+</%init>