X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/blobdiff_plain/ce83fab980b72a2b3d4066ce2b49cbf3feec56a5..3ab26ffcd0c8bfbf08508624c9ea07fbc6b4352a:/bin/mozilla/menu.pl diff --git a/bin/mozilla/menu.pl b/bin/mozilla/menu.pl index d464c85d7..7e280ffd5 100644 --- a/bin/mozilla/menu.pl +++ b/bin/mozilla/menu.pl @@ -40,173 +40,91 @@ use strict; use SL::Menu; -use Data::Dumper; use URI; use List::MoreUtils qw(apply); -my $menufile = "menu.ini"; -my $nbsp = ' '; -my $mainlevel; - -# end of main - -sub display { +sub render { $::lxdebug->enter_sub; - my $callback = $::form->unescape($::form->{callback}); - $callback = URI->new($callback)->rel($callback) if $callback; - $callback = "login.pl?action=company_logo" if $callback =~ /^(\.\/)?$/; - my $framesize = _calc_framesize(); - - $::form->header(doctype => 'frameset'); - - print qq| - - - - - - - - You need a browser that can read frames to see this page. - - - -|; - - $::lxdebug->leave_sub; -} + $::form->use_stylesheet(qw(css/icons16.css css/icons24.css)); -sub acc_menu { - $::lxdebug->enter_sub; - - my $framesize = _calc_framesize() - 2; my $menu = Menu->new("menu.ini"); - $mainlevel = $::form->{level}; - $::form->{title} = $::locale->text('kivitendo'); - $::form->header; - - print qq| - - -
\n\n|; - section_menu($menu); - - print qq|
- - -|; + my $sections = [ section_menu($menu) ]; $::lxdebug->leave_sub; + $::form->parse_html_template('menu/menu', { + sections => $sections, + inline => 1, + }); } sub section_menu { - $::lxdebug->enter_sub; - my ($menu, $level) = @_; + $::lxdebug->enter_sub(2); + my ($menu, $level, $id_prefix) = @_; my @menuorder = $menu->access_control(\%::myconfig, $level); + my @items; + + my $id = 0; for my $item (@menuorder) { my $menuitem = $menu->{$item}; - my $label = apply { s/.*--// } $item; + my $olabel = apply { s/.*--// } $item; my $ml = apply { s/--.*// } $item; - my $show = $ml eq $mainlevel; - my $spacer = $nbsp x (($item =~ s/--/--/g) * 2); - my $label_icon = $level . "--" . $label . ".png"; + my $icon_class = apply { y/ /-/ } $item; + my $spacer = "s" . (0 + $item =~ s/--/--/g); - next if $level && $item ne "$level--$label"; + next if $level && $item ne "$level--$olabel"; - $label = $::locale->text($label); + my $label = $::locale->text($olabel); - $menuitem->{target} ||= "main_window"; + $menuitem->{module} ||= $::form->{script}; + $menuitem->{action} ||= "section_menu"; + $menuitem->{href} ||= "$menuitem->{module}?action=$menuitem->{action}"; - my $anchor = $menu->menuitem(\%::myconfig, $::form, $item, $level); + # 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); + } - if (!$level) { # toplevel - my $ml_ = $::form->escape($ml); - my $image = make_image(icon => $item . '.png', size => 24, label => $label, valign => 'middle'); - my $anchor = ""; + my $anchor = $menuitem->{href}; - print make_item(a => $anchor, img => $image, label => $label, height => 24); - section_menu($menu, $item); + my %common_args = ( + l => $label, + s => $spacer, + id => "$id_prefix\_$id", + ); + if (!$level) { # toplevel + push @items, { %common_args, + i => "icon24 $icon_class", # make_image(size => 24, label => $item), + c => 'm', + }; + push @items, section_menu($menu, $item, "$id_prefix\_$id"); } 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); - } else { - print make_item(spacer => $spacer, a => $anchor, img => $image, label => $label . ' ...') if $show; - } + push @items, { %common_args, + i => "icon16 submenu", #make_image(label => 'submenu'), + c => 'sm', + }; + push @items, section_menu($menu, $item, "$id_prefix\_$id"); } 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, { %common_args, + i => "icon16 $icon_class", #make_image(size => 16, label => $item), + h => $anchor, + c => 'i', + }; } + } continue { + $id++; } - $::lxdebug->leave_sub; -} -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; -} - -# multi line hack, sschoeling jul06 -# if a label is too long, try to split it at whitespaces, then join it to chunks of less -# than 20 chars and store it in an array. -# use this array later instead of the  -ed label -sub multiline { - my ($label) = @_; - my @chunks; - my $l = 20; - for (split / /, $label) { - $l += length $_; - if ($l < 20) { - $chunks[-1] .= " $_"; - } else { - $l = length $_; - push @chunks, $_; - } - } - return @chunks; -} - -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"; + $::lxdebug->leave_sub(2); + return @items; } sub _calc_framesize { @@ -224,14 +142,6 @@ sub _show_images { _calc_framesize() != 240; } -sub _icon_path { - my ($label, $size) = @_; - - $size ||= 16; - - return "image/icons/${size}x${size}/$label"; -} - 1; __END__