Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision a381240c

Von Sven Schöling vor mehr als 3 Jahren hinzugefügt

  • ID a381240cc2f3fb2f49f8c1fcc350dad5dbbbd51c
  • Vorgänger ceaa31db
  • Nachfolger a4e85aed

Mobile Layout: neue Layouts für Login, Menü, Stylesheet + Menüdatei

Menü zeigt aus Platzgründen nur Top-Level Einträge in der menu.yml an.

Unterschiede anzeigen:

SL/Layout/Dispatcher.pm
use SL::Layout::Classic;
use SL::Layout::V3;
use SL::Layout::Javascript;
use SL::Layout::Material;
use SL::Layout::MobileLogin;
sub new {
my ($class, %params) = @_;
......
return SL::Layout::Admin->new if $params{style} eq 'admin';
return SL::Layout::AdminLogin->new if $params{style} eq 'admin_login';
return SL::Layout::Login->new if $params{style} eq 'login';
return SL::Layout::Material->new if $params{style} eq 'mobile';
return SL::Layout::MobileLogin->new if $params{style} eq 'mobile_login';
return SL::Layout::None->new;
}
SL/Layout/Material.pm
package SL::Layout::Material;
use strict;
use parent qw(SL::Layout::Base);
use SL::Layout::None;
use SL::Layout::MaterialMenu;
use SL::Layout::MaterialStyle;
use SL::Layout::Content;
sub get_stylesheet_for_user {
# overwrite kivitendo fallback
'css/material';
}
sub init_sub_layouts {
[
SL::Layout::None->new,
SL::Layout::MaterialStyle->new,
SL::Layout::MaterialMenu->new,
SL::Layout::Content->new,
]
}
1;
SL/Layout/MaterialMenu.pm
package SL::Layout::MaterialMenu;
use strict;
use parent qw(SL::Layout::Base);
use SL::Menu;
use SL::Controller::Base;
sub init_menu {
SL::Menu->new('mobile');
}
sub pre_content {
$_[0]->presenter->render('menu/material', menu => $_[0]->menu, C => SL::Controller::Base->new);
}
1;
SL/Layout/MaterialStyle.pm
package SL::Layout::MaterialStyle;
use strict;
use parent qw(SL::Layout::Base);
sub use_stylesheet {
"https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css",
"https://fonts.googleapis.com/icon?family=Material+Icons";
}
sub use_javascript {
"https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js";
}
sub javascripts_inline {
"M.AutoInit();";
}
sub get_stylesheet_for_user {
# overwrite kivitendo fallback
'css/material';
}
1;
SL/Layout/MobileLogin.pm
package SL::Layout::MobileLogin;
use strict;
use parent qw(SL::Layout::Base);
use SL::Layout::MaterialStyle;
use SL::Layout::MaterialMenu;
sub get_stylesheet_for_user {
# overwrite kivitendo fallback
'css/material';
}
sub init_sub_layouts {
[
SL::Layout::None->new,
SL::Layout::MaterialStyle->new,
SL::Layout::MaterialMenu->new,
]
}
1;
menus/mobile/00-erp.yaml
# This is the main menu config file for mobile user space menu entries.
#
# Th structure is the same as in user/, but currently infinite nesting is not supported.
#
---
- id: test_entry
name: Test
icon: test
order: 100
access: customer_vendor_edit|customer_vendor_all_edit
params:
action: CustomerVendor/add
db: customer
- id: warehouse_produce_assembly
name: Produce Assembly
icon: assembly_produce
order: 200
access: warehouse_management
module: wh.pl
params:
action: transfer_warehouse_selection
trans_type: assembly
- id: warehouse_transfer
name: Transfer
order: 300
access: warehouse_management
module: wh.pl
params:
action: transfer_warehouse_selection
trans_type: transfer
- id: warehouse_removal
name: Removal
order: 400
access: warehouse_management
module: wh.pl
params:
action: transfer_warehouse_selection
trans_type: removal
templates/webpages/menu/material.html
[%- USE T8 %]
[%- USE L %]
[%- USE HTML %]
[%- USE LxERP -%]
<nav>
<div class="nav-wrapper">
<a class="brand-logo">Kivitendo</a>
<a href="#" data-target="nav-mobile" class="sidenav-trigger"><i class="material-icons">menu</i></a>
<ul id="nav" class="right hide-on-med-and-down">
[% PROCESS menu_items %]
</ul>
</div>
</nav>
<ul id="nav-mobile" class="sidenav">
[% PROCESS menu_items %]
</ul>
[%- BLOCK menu_items %]
[%- IF MYCONFIG.login %]
<li><a>[% 'User' | $T8 %]: [% MYCONFIG.login | html %]</a></li>
[%- ELSE %]
<li>[% L.link(C.url_for(controller='LoginScreen', action='user_login'), LxERP.t8('Login')) %]</li>
[%- END %]
<li><div class="divider"></div></li>
[%- FOREACH node = menu.tree %]
[%- NEXT UNLESS node.visible %]
<li>[% L.link(menu.href_for_node(node) || '#', menu.name_for_node(node), target=node.target) %]</li>
[%- END %]
<li><div class="divider"></div></li>
[%- IF MYCONFIG.login %]
<li>[% L.link(C.url_for(controller='LoginScreen', action='logout'), LxERP.t8('Logout')) %]</li>
[%- END %]
[% END %]

Auch abrufbar als: Unified diff