Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 871a70f0

Von Moritz Bunkus vor mehr als 12 Jahren hinzugefügt

Menüsysteme v3 & v4 verschmolzen (Stil von v4, Name & Code von v3)

Unterschiede anzeigen:

SL/Auth.pm
@user_data{qw(id login)} = @{$ref}{qw(id login)};
}
# The XUL/XML backed menu has been removed.
$user_data{menustyle} = 'v3' if lc($user_data{menustyle} || '') eq 'xml';
# The XUL/XML & 'CSS new' backed menus have been removed.
my %menustyle_map = ( xml => 'new', v4 => 'v3' );
$user_data{menustyle} = $menustyle_map{lc($user_data{menustyle} || '')} || $user_data{menustyle};
# Set default language if selected language does not exist (anymore).
$user_data{countrycode} = $::lx_office_conf{system}->{language} unless $user_data{countrycode} && -d "locale/$user_data{countrycode}";
SL/Form.pm
my %style_to_script_map = (
v3 => 'v3',
neu => 'new',
v4 => 'v4',
);
my $menu_script = $style_to_script_map{$::myconfig{menustyle}} || '';
SL/Layout/Dispatcher.pm
use SL::Layout::Login;
use SL::Layout::Classic;
use SL::Layout::V3;
use SL::Layout::V4;
use SL::Layout::Javascript;
sub new {
......
return SL::Layout::Classic->new if $params{style} eq 'old';
return SL::Layout::V3->new if $params{style} eq 'v3';
return SL::Layout::V4->new if $params{style} eq 'v4';
return SL::Layout::Javascript->new if $params{style} eq 'neu';
return SL::Layout::Admin->new if $params{style} eq 'admin';
return SL::Layout::Login->new if $params{style} eq 'login';
SL/Layout/Top.pm
=head1 NAME
SL::Layout::Top - Top line in classic and v4 menu.
SL::Layout::Top - Top line in classic and v3 menu.
=head1 DOM MODEL
SL/Layout/V4.pm
package SL::Layout::V4;
use strict;
use parent qw(SL::Layout::Base);
use SL::Layout::Css;
use SL::Layout::Top;
use URI;
sub init_sub_layouts {
[
SL::Layout::Top->new,
SL::Layout::None->new,
]
}
sub start_content {
"<div id='content'>\n";
}
sub end_content {
"</div>\n";
}
sub pre_content {
my ($self) = @_;
$self->{sub_class} = 1;
my $callback = $::form->unescape($::form->{callback});
$callback = URI->new($callback)->rel($callback) if $callback;
$callback = "login.pl?action=company_logo" if $callback =~ /^(\.\/)?$/;
$self->SUPER::pre_content .
$self->SUPER::render('menu/menuv4', { no_menu => 1, no_output => 1 },
force_ul_width => 1,
date => $self->clock_line,
menu => $self->print_menu,
callback => $callback,
);
}
1;
bin/mozilla/admin.pl
my @all_menustyles = (
{ id => 'old', title => $::locale->text('Old (on the side)') },
{ id => 'v3', title => $::locale->text('Top (CSS)') },
{ id => 'v4', title => $::locale->text('Top (CSS) new') },
{ id => 'neu', title => $::locale->text('Top (Javascript)') },
);
......
sub add_user {
$::form->{title} = "kivitendo " . $::locale->text('Administration') . " / " . $::locale->text('Add User');
# Note: Menu Style 'v3' is not compatible to all browsers!
# "menustyle" => "old" sets the HTML Menu to default.
# User does not have a well behaved new constructor, so we#Ll just have to build one ourself
# User does not have a well behaved new constructor, so we'll just have to build one ourself
my $user = bless {
"vclimit" => 200,
"countrycode" => "de",
"numberformat" => "1.000,00",
"dateformat" => "dd.mm.yy",
"stylesheet" => "kivitendo.css",
"menustyle" => "old",
"menustyle" => "neu",
dbport => $::auth->{DB_config}->{port} || 5432,
dbuser => $::auth->{DB_config}->{user} || 'lxoffice',
dbhost => $::auth->{DB_config}->{host} || 'localhost',
css/Mobile/menuv4.css
../lx-office-erp/menuv4.css
css/kivitendo/menu.css
whiteMenu Hover background color #FFFFE0
DarkGreensubenu pointer
*/
body.menuv4 {
behavior: url("css/csshover.htc");
/*font-size: 14pt;*/
line-height: 20pt;
font-family: Verdana, Geneva, Tahoma, sans-serif;
background-color: #FFFFFF;
color: #000000;
}
#menuv4 {
/*font-size: 85%;*/
width: 99.8%;
float: left;
/*border: 3px solid;*/
background-color: #FFFFFF;
color: #000000;
}
#menuv4 a, #menuv4 h2, #menuv4 div.x {
font-size: 80%;
line-height: 120%;
display: block;
border: 0;
white-space: nowrap;
margin: 0;
padding: 0.3em 1em;
}
#menuv4 h2 {
background-color: #ffffff;
color: #000000;
/*padding: 2px 15px;*/
/* Firefox */
-moz-border-radius: 0.4em 0.4em 0;
/* Safari, Chrome */
-webkit-border-radius: 0.4em 0.4em 0;
/* Konqueror */
-khtml-border-radius: 0.4em 0.4em 0;
/* CSS3 */
border-radius: 0.4em 0.4em 0 0;
/* behavior: url(border-radius.htc); */
}
#menuv4 ul:hover h2 {
background-color:#DCDCDC;
}
#menuv4 a, #menuv4 a:visited, #menuv4 div.x, #menuv4 div.x:visited {
color: #000000;
text-decoration: none;
padding-right: 10px;
}
#menuv4 a {
background: #EBEBEB;
}
#menuv4 div.x, #menuv4 div.x:visited {
background-color: #EBEBEB;
border-right: 1em solid #FE5F14;
}
#menuv4 div.x:hover {
border-right: none;
}
#menuv4 a:hover, #menuv4 div.x:hover {
color: #FE5F14;
background-color: #EBEBEB;
}
#menuv4 a:active, #menuv4 div.x:active {
color: #FE5F14;
background-color: #EBEBEB;
}
#menuv4 ul {
list-style: none;
margin: 0;
padding: 0;
float: left;
}
#menuv4 li {
position: relative;
float: none;
border: 0;
}
li.sub {
position: relativ;
left: 0.2em;
top: 0px;
background-color: #FFFFFF;
}
/* IE6 spacing bug fix, <li>s without a bottom border get spaced to far * correction:the bug will change the height of the parent element! this will also cause the whole menu to grow * so the only method to get this pile of crap going is to add a bottom border to the <li>s, where the enclosing <ul> already has * a bottom border, which just looks ugly * the trick:color the bottom border with the same color as the bottom pixel of the background image - noone notices */
#menuv4 ul li {
/* border: solid;
border-color: #991900;
border-width: 0 0 1px 0;
*/
}
#menuv4 ul ul {
padding: 0 2em 2em 2em;
margin: 0 -2em -2em -2em;
}
#menuv4 ul ul li {
/*padding-top: 0.01em;*/
background-color: #FFFFFF;
}
/* IE6 event bug fix, without a background there hovers will be occassionally lost between the li's to the layer below * causing the menu to close. Opera 9 has the same bug btw. */
#menuv4 ul ul {
position: absolute;
z-index: 500;
top: auto;
display: none;
}
#menuv4 ul ul ul {
top: 0;
left: 99%;
padding: 2em;
margin: -2em;
}
#menuv4 ul ul ul li {
border-left: 0.2em solid #EBEBEB;
}
/* Begin non-anchor hover selectors */
/* Enter the more specific element (div) selectoron non-anchor hovers for IE5.x to comply with theolder version of csshover.htc - V1.21.041022. Itimproves IE's performance speed to use the olderfile and this method */
div#menuv4 h2:hover {
background: #EBEBEB;
color: #FE5F14;
}
div#menuv4 li:hover {
cursor: pointer;
z-index: 100;
}
div#menuv4 li:hover ul ul, div#menuv4 li li:hover ul ul, div#menuv4 li li li:hover ul ul, div#menuv4 li li li li:hover ul ul {
display: none;
}
div#menuv4 li:hover ul, div#menuv4 li li:hover ul, div#menuv4 li li li:hover ul, div#menuv4 li li li li:hover ul {
display: block;
position: relativ: left: 10px;
}
/* End of non-anchor hover selectors */
body.menuv3 {
behavior: url("css/csshover.htc");
/*font-size: 14pt;*/
......
/*border: 3px solid;*/
background-color: #FFFFFF;
color: #000000;
margin-top: 0.2em;
}
#menuv3 a, #menuv3 h2, #menuv3 div.x {
font-size: 80%;
......
margin: 0;
padding: 0.3em 1em;
}
#menuv3 h2:before {
content: " ";
}
#menuv3 h2:after {
content: " ";
}
#menuv3 h2 {
background-color: #ffffff;
color: #000000;
......
}
/* End of non-anchor hover selectors */
li.sub {
position: relativ;
left: 0.2em;
top: 0px;
background-color: #FFFFFF;
}
/* html menu */
/* types of lines: m sm i (menu submenu item)
each line is a mi (menuitem) and has one mii (menu-item-icon) whcih is ms (menu-spacer)
......
body { margin: 0 }
@media print {
#menuv3, #menuv4, #html-menu, #frame-header, #js-menu { /* items with this class won't print */
#menuv3, #html-menu, #frame-header, #js-menu { /* items with this class won't print */
display: none;
}
#content.html-menu { margin-left: 0; }
css/lx-office-erp/menu.css
#menuv3 h2 {
color:#fff;
padding:0 5px;
padding:2px 10px;
}
#menuv3 a, #menuv3 a:visited, #menuv3 div.x, #menuv3 div.x:visited {
......
#menuv3 a {
background:#eee;
}
#menuv3 div.x, #menuv3 div.x:visited {
background:#eee url(../../image/right.gif) no-repeat right;
}
......
margin:0;
padding:0;
float:left;
min-width:7em;
}
#menuv3 li {
......
#menuv3 ul ul ul {
top:0;
left:100%;
left:90%;
}
/* Begin non-anchor hover selectors */
......
/* End of non-anchor hover selectors */
#menuv4 {
width:99.8%;
float:left;
background:url(../../image/bg_css_menu.png) repeat bottom;
border:1px solid;
border-color:#ccc #888 #555 #bbb;
}
#menuv4 a, #menuv4 h2, #menuv4 div.x {
font:11px/16px arial,helvetica,sans-serif;
display:block;
border:0;
border-right:1px;
border-style:solid;
border-color:#ccc #888 #555 #bbb;
white-space:nowrap;
margin:0;
padding:1px 0 1px 3px;
}
#menuv4 h2 {
color:#fff;
padding:2px 10px;
}
#menuv4 a, #menuv4 a:visited, #menuv4 div.x, #menuv4 div.x:visited {
color:#000;
text-decoration:none;
padding-right:10px;
}
#menuv4 a {
background:#eee;
}
#menuv4 div.x, #menuv4 div.x:visited {
background:#eee url(../../image/right.gif) no-repeat right;
}
#menuv4 a:hover, #menuv4 div.x:hover {
color:#a00;
background-color:#ddd;
}
#menuv4 a:active, #menuv4 div.x:active {
color:#060;
background-color:#ccc;
}
#menuv4 ul {
list-style:none;
margin:0;
padding:0;
float:left;
}
#menuv4 li {
position:relative;
float:none;
border:0;
}
/* IE6 spacing bug fix, <li>s without a bottom border get spaced to far
* correction: the bug will change the height of the parent element! this will also cause the whole menu to grow
* so the only method to get this pile of crap going is to add a bottom border to the <li>s, where the enclosing <ul> already has
* a bottom border, which just looks ugly
* the trick: color the bottom border with the same color as the bottom pixel of the background image - noone notices */
#menuv4 ul li {
border:solid;
border-color:#ccd5e5;
border-width:0 0 1px 0;
}
#menuv4 ul ul li {
border:solid;
border-width:0 0 1px 0;
}
/* IE6 event bug fix, without a background there hovers will be occassionally lost between the li's to the layer below
* causing the menu to close. Opera 9 has the same bug btw. */
#menuv4 ul ul {
position:absolute;
z-index:500;
top:auto;
display:none;
}
#menuv4 ul ul ul {
top:0;
left:90%;
}
/* Begin non-anchor hover selectors */
/* Enter the more specific element (div) selector
on non-anchor hovers for IE5.x to comply with the
older version of csshover.htc - V1.21.041022. It
improves IE's performance speed to use the older
file and this method */
div#menuv4 h2:hover {
background:#A3C5FF;
color:#a00;
}
div#menuv4 li:hover {
cursor:pointer;
z-index:100;
}
div#menuv4 li:hover ul ul,
div#menuv4 li li:hover ul ul,
div#menuv4 li li li:hover ul ul,
div#menuv4 li li li li:hover ul ul
{display:none;}
div#menuv4 li:hover ul,
div#menuv4 li li:hover ul,
div#menuv4 li li li:hover ul,
div#menuv4 li li li li:hover ul
{display:block;}
/* End of non-anchor hover selectors */
/* html menu */
/* types of lines: m sm i (menu submenu item)
each line is a mi (menuitem) and has one mii (menu-item-icon) whcih is ms (menu-spacer)
......
@media print {
#menuv3, #menuv4, #html-menu, #frame-header, #js-menu { /* items with this class won't print */
#menuv3, #html-menu, #frame-header, #js-menu { /* items with this class won't print */
display: none;
}
#content.html-menu { margin-left: 0; }
locale/de/all
'To add a user to a group edit a name, change the login name and save. A new user with the same variables will then be saved under the new login name.' => 'Um einer Gruppe einen neuen Benutzer hinzuzufügen, ändern und speichern Sie am einfachsten einen bestehenden Benutzernamen. Unter dem neuen Namen wird dann ein Benutzer mit denselben Einstellungen angelegt.',
'Top' => 'Oben',
'Top (CSS)' => 'Oben (mit CSS)',
'Top (CSS) new' => 'Oben (mit CSS, neu)',
'Top (Javascript)' => 'Oben (mit Javascript)',
'Top 100' => 'Top 100',
'Top 100 hinzufuegen' => 'Top 100 hinzufügen',
sql/Pg-upgrade2-auth/remove_menustyle_v4.sql
-- @tag: remove_menustyle_v4
-- @description: Menütyp "CSS (oben, neu)" wurde entfernt; also durch v3 ersetzen
-- @depends:
-- @charset: utf-8
UPDATE auth.user_config
SET cfg_value = 'v3'
WHERE ((cfg_key = 'menustyle')
AND (cfg_value = 'v4'));
templates/webpages/am/config.html
<select name="menustyle">
<option value="old"[% IF myconfig_menustyle == 'old' %] selected[% END %]>[% 'Old (on the side)' | $T8 %]</option>
<option value="v3"[% IF myconfig_menustyle == 'v3' %] selected[% END %]>[% 'Top (CSS)' | $T8 %]</option>
<option value="v4"[% IF myconfig_menustyle == 'v4' %] selected[% END %]>[% 'Top (CSS) new' | $T8 %]</option>
<option value="neu"[% IF myconfig_menustyle == 'neu' %] selected[% END %]>[% 'Top (Javascript)' | $T8 %]</option>
</select>
</td>
......
maintab.init();
-->
</script>
templates/webpages/menu/menuv4.html
[%- USE T8 %]
[%- USE HTML %]
<div id="menuv4">
[% menu %]
</div>
<div style="clear: both;"></div>
<script type="text/javascript">
<!--
function clockon() {
var now = new Date();
var h = now.getHours();
var m = now.getMinutes();
document.getElementById('clock_id').innerHTML = (h<10?'0'+h:h)+":"+(m<10?'0'+m:m);
var timer=setTimeout("clockon()", 10000);
}
$(clockon);
//-->
</script>

Auch abrufbar als: Unified diff