Revision 12b9a472
Von Sven Schöling vor mehr als 3 Jahren hinzugefügt
SL/Layout/Javascript.pm | ||
---|---|---|
4 | 4 |
use parent qw(SL::Layout::Base); |
5 | 5 |
|
6 | 6 |
use SL::Layout::None; |
7 |
use SL::Layout::DHTMLMenu; |
|
7 | 8 |
use SL::Layout::Top; |
8 | 9 |
use SL::Layout::ActionBar; |
9 | 10 |
use SL::Layout::Content; |
... | ... | |
17 | 18 |
[ |
18 | 19 |
SL::Layout::None->new, |
19 | 20 |
SL::Layout::Top->new, |
21 |
SL::Layout::DHTMLMenu->new, |
|
22 |
$_[0]->sub_layouts_by_name->{actionbar}, |
|
20 | 23 |
SL::Layout::Content->new, |
21 | 24 |
] |
22 | 25 |
} |
23 | 26 |
|
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 | 27 |
1; |
Auch abrufbar als: Unified diff
Layout: Javascript Menü refactoring
Das Javascript Menü war noch in einem Zustand aus der Anfangszeit von
SL::Layout. Diese Änderungen teilen das in ein Main Layout (Javascript)
und ein sub layout für das DHTMLMenu.
Das DHTMLMenu Layout ist außerdem ein wenig optimiert. Es benutzt jetzt
nicht mehr ein template sondern baut das DOM direkt zusammen (spart im
hot path einen template aufruf und ist um faktor 5 schneller), und
ausserdem werden die -f checks auf die icon Dateien jetzt mit
SL::System::ResourceCache gecacht, so dass nicht für jeden Request ein
paar Duzend stat() gemacht werden müssen.