X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=bin%2Fmozilla%2Fmenu.pl;h=16d8b75ae57f23b11707d912ae51b94a4199ebf1;hb=1a3569b9a81d6b9ca88941793926327051506122;hp=cd0ca0d913a17bbadd32f1b1be8dc5d922792826;hpb=a99b261f6a4a4b1988ce2e0ad4c27ed579378cb9;p=kivitendo-erp.git diff --git a/bin/mozilla/menu.pl b/bin/mozilla/menu.pl index cd0ca0d91..16d8b75ae 100644 --- a/bin/mozilla/menu.pl +++ b/bin/mozilla/menu.pl @@ -40,12 +40,10 @@ use strict; use SL::Menu; -use Data::Dumper; use URI; use List::MoreUtils qw(apply); -my $menufile = "menu.ini"; my $nbsp = ' '; my $mainlevel; @@ -59,11 +57,11 @@ sub display { $callback = "login.pl?action=company_logo" if $callback =~ /^(\.\/)?$/; my $framesize = _calc_framesize(); - $::form->header; + $::form->header(doctype => 'frameset'); print qq| - + @@ -84,20 +82,13 @@ sub acc_menu { my $framesize = _calc_framesize() - 2; my $menu = Menu->new("menu.ini"); $mainlevel = $::form->{level}; - $::form->{title} = $::locale->text('Lx-Office'); + $::form->{title} = $::locale->text('kivitendo'); $::form->header; - print qq| - - -
\n\n|; - - section_menu($menu); - - print qq|
- - -|; + print $::form->parse_html_template('menu/menu', { + framesize => $framesize, + sections => [ section_menu($menu) ], + }); $::lxdebug->leave_sub; } @@ -106,6 +97,7 @@ sub section_menu { $::lxdebug->enter_sub; my ($menu, $level) = @_; my @menuorder = $menu->access_control(\%::myconfig, $level); + my @items; for my $item (@menuorder) { my $menuitem = $menu->{$item}; @@ -119,50 +111,58 @@ sub section_menu { $label = $::locale->text($label); + $menuitem->{module} ||= $::form->{script}; + $menuitem->{action} ||= "section_menu"; $menuitem->{target} ||= "main_window"; + $menuitem->{href} ||= "$menuitem->{module}?action=$menuitem->{action}"; + + # add other params + foreach my $key (keys %$menuitem) { + next if $key =~ /target|module|action|href/; + $menuitem->{href} .= "&" . $::form->escape($key, 1) . "="; + my ($value, $conf) = split(/=/, $menuitem->{$key}, 2); + $value = $::myconfig{$value} . "/$conf" if ($conf); + $menuitem->{href} .= $::form->escape($value, 1); + } - my $anchor = $menu->menuitem(\%::myconfig, $::form, $item, $level); + my $anchor = $menuitem->{href}; if (!$level) { # toplevel my $ml_ = $::form->escape($ml); - my $image = make_image(icon => $item . '.png', size => 24, label => $label, valign => 'middle'); - my $anchor = ""; + my $image = make_image(icon => $item . '.png', size => 24, label => $label); + my $anchor = "menu.pl?action=acc_menu&level=$ml_"; - print make_item(a => $anchor, img => $image, label => $label, height => 24); - section_menu($menu, $item); + push @items, make_item(href => $anchor, img => $image, label => $label, height => 24, class => 'menu'); + push @items, section_menu($menu, $item); } elsif ($menuitem->{submenu}) { my $image = make_image(submenu => 1); if ($mainlevel && $item =~ /^\Q$mainlevel\E/) { - print make_item(spacer => $spacer, bold => 1, img => $image, label => $label) if $show; - section_menu($menu, $item); + push @items, make_item(target => $menuitem->{target}, spacer => $spacer, img => $image, label => $label, class => 'submenu') if $show; + push @items, section_menu($menu, $item); } else { - print make_item(spacer => $spacer, a => $anchor, img => $image, label => $label . ' ...') if $show; + push @items, make_item(spacer => $spacer, href => $anchor, img => $image, label => $label . ' ...', class => 'submenu') if $show; } } elsif ($menuitem->{module}) { my $image = make_image(label => $label, icon => $label_icon); - print make_item(img => $image, a => $anchor, spacer => $spacer, label => $label) if $show; - section_menu($menu, $item) if $show && $::form->{$item} && $::form->{level} eq $item; + push @items, make_item(target => $menuitem->{target}, img => $image, href => $anchor, spacer => $spacer, label => $label, class => 'item') if $show; + push @items, section_menu($menu, $item) if $show && $::form->{$item} && $::form->{level} eq $item; } } $::lxdebug->leave_sub; + return @items; } sub make_item { my %params = @_; - my $anchor = $params{a} || ''; - my @chunks = multiline($params{label}); - my $spacer = $params{spacer} || ''; - my $image = $params{img}; - my $height = $params{height} || 16; - my $a_end = $anchor ? '' : ''; - my $bold = $params{bold} ? '' : ''; - my $b_end = $bold ? '' : ''; - my $hidden_image = make_image(hidden => 1); - return join "\n", - "$bold$spacer$anchor$image$chunks[0]$a_end$b_end\n", - map "$bold$spacer$hidden_image$anchor$chunks[$_]$a_end$b_end\n", - 1..$#chunks; + $params{a} ||= ''; + $params{spacer} ||= ''; + $params{height} ||= 16; + + return { + %params, + chunks => [ multiline($params{label}) ], + }; } # multi line hack, sschoeling jul06 @@ -188,25 +188,23 @@ sub multiline { sub make_image { my (%params) = @_; - my $label = $params{label}; my $icon = $params{icon}; - my $hidden = $params{hidden}; my $size = $params{size} || 16; - my $valign = $params{valign} || 'text-top'; return unless _show_images(); my $icon_found = $icon && -f _icon_path($icon, $size); - - my $image_url = $icon_found ? _icon_path($icon, $size) : "image/unterpunkt.png"; - my $style = $hidden ? "visibility:hidden" : "vertical-align:$valign"; - my $width = $hidden ? "width='$size'" : ''; - - my $padding = $size == 16 && $icon_found || $hidden ? $nbsp x 2 - : $size == 24 ? $nbsp - : ''; - - return "$padding"; + my $padding = $size == 16 && $icon_found ? $nbsp x 2 + : $size == 24 ? $nbsp + : ''; + + return { + src => $icon_found ? _icon_path($icon, $size) : "image/unterpunkt.png", + alt => $params{label}, + width => $icon_found ? $size : 24, + height => $size, + padding => $padding, + } } sub _calc_framesize {