diff --git a/SL/Menu.pm b/SL/Menu.pm
index feda30e10..f14f3f94a 100644
--- a/SL/Menu.pm
+++ b/SL/Menu.pm
@@ -16,6 +16,20 @@ package SL::Menu;
use SL::Inifile;
use parent 'SL::Inifile';
+sub _url ($form, $s) {
+ $s = '' if !defined $s;
+ return $form->escape($s, 1);
+}
+
+sub _ha ($s) {
+ $s = '' if !defined $s;
+ $s =~ s/&/&/g;
+ $s =~ s/</g;
+ $s =~ s/>/>/g;
+ $s =~ s/"/"/g;
+ return $s;
+}
+
sub menuitem ($self, $myconfig, $form, $item, $) {
@@ -23,16 +37,21 @@ sub menuitem ($self, $myconfig, $form, $item, $) {
my $action = ($self->{$item}{action}) ? $self->{$item}{action} : "section_menu";
my $target = ($self->{$item}{target}) ? $self->{$item}{target} : "";
- my $level = $form->escape($item);
- my $login = $form->{login};
- $login =~ s/ /\%20/;
+ my $legacy = $self->{$item}{jsmenu} ? 1 : 0;
- my $str = qq|{path}&action=$action&level=$level&login=$login&js=$form->{js}|;
+ my $href = $module
+ . '?path=' . _url($form, $form->{path})
+ . '&action='. _url($form, $action)
+ . '&level=' . _url($form, $item)
+ . '&login=' . _url($form, $form->{login})
+ . '&js=' . _url($form, $form->{js});
+
+ my $str;
my @vars = qw(module action target href);
if ($self->{$item}{href}) {
- $str = qq|{$item}{href}|;
+ $href = $self->{$item}{href};
@vars = qw(module target href);
}
@@ -40,22 +59,35 @@ sub menuitem ($self, $myconfig, $form, $item, $) {
delete $self->{$item}{submenu};
- # add other params
- foreach my $key (keys %{ $self->{$item} }) {
- $str .= "&".$form->escape($key)."=";
+ foreach my $key (keys %{ $self->{$item} // {} }) {
+ $href .= "&" . _url($form, $key) . "=";
my ($value, $conf) = split /=/, $self->{$item}{$key}, 2;
$value = "$myconfig->{$value}$conf" if $self->{$item}{$key} =~ /=/;
- $str .= $form->escape($value);
+ $href .= _url($form, $value);
+ }
+
+ my $tag = $form->{tag} // 0;
+ $href .= qq|#id$tag| if $target eq 'acc_menu' && !$form->{js};
+
+ if ($legacy) {
+ $str = qq||;
+ return $str;
}
- $str .= qq|#id$form->{tag}| if $target eq 'acc_menu';
+ my $href_html = _ha($href);
+ $str = qq||;
+ return $str;
}
diff --git a/bin/mozilla/menu.pl b/bin/mozilla/menu.pl
index db6958fa1..6b4f21157 100644
--- a/bin/mozilla/menu.pl
+++ b/bin/mozilla/menu.pl
@@ -12,32 +12,94 @@
$menufile = "menu.ini";
use SL::Menu;
+use SL::AM;
require "$form->{path}/js.pl";
1;
# end of main
+sub _h {
+ my ($s) = @_;
+ $s = '' if !defined $s;
+ $s =~ s/&/&/g;
+ $s =~ s/</g;
+ $s =~ s/>/>/g;
+ $s =~ s/"/"/g;
+ return $s;
+}
-sub display {
- $menuwidth = $myconfig{menuwidth} || 155;
- $menuwidth = '25%' if $form->{small_device};
- $script = $form->{main} =~ /recent/ ? 'ru.pl' : 'am.pl';
+sub menu_env_html {
+ my ($form, $locale, $myconfig) = @_;
- $form->{title} = "$form->{login} - SQL-Ledger";
- $form->{frameset} = 1;
- $form->header;
+ my $env = $form->environment // '';
- print qq|
+ my %env_label = (
+ dev => $locale->text('Development Environment'),
+ test => $locale->text('Test Environment'),
+ );
+
+ my $env_txt = _h($env_label{$env} // '');
-
+ my $html = qq||;
+
+ return $html;
+}
+
+sub display {
+ $form->{js} = 1 if !defined($form->{js}) || $form->{js} eq '';
+
+ $menuwidth = $myconfig{menuwidth} || 275;
+ $menuwidth = '25%' if $form->{small_device};
+ $script = $form->{main} =~ /recent/ ? 'ru.pl' : 'am.pl';
+
+ my $menu_css_width = $menuwidth;
+ $menu_css_width .= 'px' if $menu_css_width =~ /^\d+$/;
+
+ $form->header;
+
+print qq|
+
+
+
+