85454c4ee658869f19ef7fdcfbf980e316ef045e
[kivitendo-erp.git] / SL / Layout / Javascript.pm
1 package SL::Layout::Javascript;
2
3 use strict;
4 use parent qw(SL::Layout::Base);
5
6 use SL::Layout::None;
7 use SL::Layout::Top;
8 use SL::Layout::ActionBar;
9 use SL::Layout::Content;
10
11 use List::Util qw(max);
12 use List::MoreUtils qw(uniq);
13 use URI;
14
15 sub init_sub_layouts {
16   $_[0]->sub_layouts_by_name->{actionbar} = SL::Layout::ActionBar->new;
17   [
18     SL::Layout::None->new,
19     SL::Layout::Top->new,
20     SL::Layout::Content->new,
21   ]
22 }
23
24 sub javascripts {
25   my ($self) = @_;
26
27   return uniq grep { $_ } map { $self->_find_javascript($_)  }
28     map({ $_->javascripts } $self->sub_layouts),
29     qw(dhtmlsuite/menu-for-applications.js),
30     $_[0]->sub_layouts_by_name->{actionbar}->javascripts,
31     $self->use_javascript;
32 }
33
34 sub javascripts_inline {
35   $_[0]->SUPER::javascripts_inline,
36 <<'EOJS',
37   DHTMLSuite.createStandardObjects();
38   DHTMLSuite.configObj.setImagePath('image/dhtmlsuite/');
39   var menu_model = new DHTMLSuite.menuModel();
40   menu_model.addItemsFromMarkup('main_menu_model');
41   menu_model.init();
42   var menu_bar = new DHTMLSuite.menuBar();
43   menu_bar.addMenuItems(menu_model);
44   menu_bar.setTarget('main_menu_div');
45   menu_bar.init();
46 EOJS
47   $_[0]->sub_layouts_by_name->{actionbar}->javascripts_inline,
48 }
49
50 sub pre_content {
51   $_[0]->SUPER::pre_content .
52   $_[0]->presenter->render("menu/menunew",
53     force_ul_width  => 1,
54     menu            => $_[0]->menu,
55     icon_path       => sub { my $simg = "image/icons/svg/$_[0].svg";  my $pimg="image/icons/16x16/$_[0].png"; -f $simg ? $simg : ( -f $pimg ? $pimg : ()) },
56     max_width       => sub { 10 * max map { length $::locale->text($_->{name}) } @{ $_[0]{children} || [] } },
57   ) .
58   ($_[0]->sub_layouts_by_name->{actionbar}->pre_content // '');
59 }
60
61 sub stylesheets {
62   my ($self) = @_;
63   my $css_path = $self->get_stylesheet_for_user;
64
65   return
66     uniq
67     grep { $_ }
68     map { $self->_find_stylesheet($_, $css_path)  }
69     qw(
70       dhtmlsuite/menu-item.css
71       dhtmlsuite/menu-bar.css
72       icons16.css
73       menu.css
74     ),
75     ( map { $_->stylesheets } $_[0]->sub_layouts ),
76     $_[0]->sub_layouts_by_name->{actionbar}->stylesheets,
77     $_[0]->use_stylesheet;
78 }
79
80 1;