Merge remote branch 'origin/master'
authorSven Donath <lxo@dexo.de>
Tue, 20 Nov 2012 15:30:13 +0000 (16:30 +0100)
committerSven Donath <lxo@dexo.de>
Tue, 20 Nov 2012 15:30:13 +0000 (16:30 +0100)
61 files changed:
SL/Auth.pm
SL/Controller/Helper/Paginated.pm
SL/FU.pm
SL/Form.pm
SL/IS.pm
SL/InstallationCheck.pm
SL/Layout/Base.pm
SL/Layout/Css.pm
SL/Layout/Dispatcher.pm
SL/Layout/Top.pm
SL/Layout/V4.pm [deleted file]
SL/Template/Plugin/L.pm
bin/mozilla/admin.pl
bin/mozilla/ct.pl
bin/mozilla/ic.pl
bin/mozilla/projects.pl
css/Mobile/menuv4.css [deleted symlink]
css/kivitendo/main.css
css/kivitendo/menu.css
css/lx-office-erp/menu.css
doc/UPGRADE
doc/changelog
doc/release_management.txt
locale/de/all
menu.ini
sql/Pg-upgrade2-auth/remove_menustyle_v4.sql [new file with mode: 0644]
sql/Pg-upgrade2/rename_buchungsgruppe_16_19_to_19.sql [new file with mode: 0644]
sql/Pg-upgrade2/ustva_setup_2007_update_chart_taxkeys_tax_skr04.sql [new file with mode: 0644]
templates/webpages/admin/adminlogin.html
templates/webpages/admin/backup_dataset.html
templates/webpages/admin/backup_dataset_email_done.html
templates/webpages/admin/check_auth_database.html
templates/webpages/admin/check_auth_tables.html
templates/webpages/admin/create_dataset.html
templates/webpages/admin/create_standard_group_ask.html
templates/webpages/admin/dbadmin.html
templates/webpages/admin/dbcreate.html
templates/webpages/admin/dbdelete.html
templates/webpages/admin/dbupgrade_header.html
templates/webpages/admin/delete_dataset.html
templates/webpages/admin/delete_group_confirm.html
templates/webpages/admin/edit_group.html
templates/webpages/admin/edit_group_membership.html
templates/webpages/admin/edit_groups.html
templates/webpages/admin/edit_user.html
templates/webpages/admin/list_users.html
templates/webpages/admin/restore_dataset.html
templates/webpages/admin/restore_dataset_start_header.html
templates/webpages/admin/test_db_connection.html
templates/webpages/admin/update_dataset.html
templates/webpages/admin/user_migration.html
templates/webpages/admin/user_migration_complete.html
templates/webpages/admin/user_migration_done.html
templates/webpages/am/config.html
templates/webpages/am/language_header.html
templates/webpages/amcvar/search_filter.html
templates/webpages/ct/form_header.html
templates/webpages/do/form_header.html
templates/webpages/login_screen/user_login.html
templates/webpages/menu/menunew.html
templates/webpages/menu/menuv4.html [deleted file]

index b9840fc..d63b6a2 100644 (file)
@@ -489,8 +489,9 @@ sub read_user {
     @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}";
index 11eddd3..1683aad 100644 (file)
@@ -7,6 +7,8 @@ our @EXPORT = qw(make_paginated get_paginate_spec get_current_paginate_params _s
 
 use constant PRIV => '__paginatedhelper_priv';
 
+use List::Util qw(min);
+
 my %controller_paginate_spec;
 
 sub make_paginated {
@@ -60,7 +62,8 @@ sub get_current_paginate_params {
                         :                                         ();
   my $calculated_params = "SL::DB::Manager::$spec->{MODEL}"->paginate(%paginate_params, args => \%paginate_args);
   %paginate_params      = (
-    %paginate_params,
+    page         => min($paginate_params{page}, $calculated_params->{max}),
+    per_page     => $paginate_params{per_page},
     num_pages    => $calculated_params->{max},
     common_pages => $calculated_params->{common},
   );
index 27836e0..a005c18 100644 (file)
--- a/SL/FU.pm
+++ b/SL/FU.pm
@@ -426,11 +426,11 @@ sub save_access_rights {
 
   my ($id)     = selectrow_query($form, $dbh, qq|SELECT id FROM employee WHERE login = ?|, $form->{login});
 
+  do_query($form, $dbh, qq|DELETE FROM follow_up_access WHERE what = ?|, $id);
+
   my $query    = qq|INSERT INTO follow_up_access (who, what) VALUES (?, ?)|;
   my $sth      = prepare_query($form, $dbh, $query);
 
-  do_query($form, $dbh, qq|DELETE FROM follow_up_access WHERE what = ?|, $id);
-
   while (my ($who, $access_allowed) = each %{ $params{access} }) {
     next unless ($access_allowed);
 
index 3e9704f..9cc1065 100644 (file)
@@ -3581,7 +3581,6 @@ sub layout {
   my %style_to_script_map = (
     v3  => 'v3',
     neu => 'new',
-    v4  => 'v4',
   );
 
   my $menu_script = $style_to_script_map{$::myconfig{menustyle}} || '';
index 554bddc..e240d97 100644 (file)
--- a/SL/IS.pm
+++ b/SL/IS.pm
@@ -2136,16 +2136,18 @@ sub get_pricegroups_for_parts {
 
           $pkr->{selected}  = ' selected'; # unless $form->{selected};
           # no customer pricesgroup set
-          if ($pkr->{price_unfmt} == $pkr->{default_sellprice} || $form->{'sellprice_'.$i} * 1 > 1) {
+          if ($pkr->{price_ufmt} == $pkr->{default_sellprice}) {
 
             $pkr->{price} = $form->{"sellprice_$i"};
 
           } else {
 
+# this sub should not set anything and only return. --sschoeling, 20090506
+# is this correct? put in again... -- grichardson 20110119
             $form->{"sellprice_$i"} = $pkr->{price};
           }
 
-        } elsif ($pkr->{price_unfmt} == $pkr->{default_sellprice} and $pkr->{default_sellprice} != 0) {
+        } elsif ($pkr->{price_ufmt} == $pkr->{default_sellprice} and $pkr->{default_sellprice} != 0) {
           $pkr->{price}    = $form->{"sellprice_$i"};
           $pkr->{selected} = ' selected';
         }
index f4672aa..6ee8c11 100644 (file)
@@ -43,8 +43,8 @@ BEGIN {
   { name => "IO::Socket::SSL",                     url => "http://search.cpan.org/~sullr/",     debian => 'libio-socket-ssl-perl' },
   { name => "Net::LDAP",                           url => "http://search.cpan.org/~gbarr/",     debian => 'libnet-ldap-perl' },
   # Net::SMTP is core since 5.7.3
-  { name => "Net::SMTP::SSL",  version => '1.01',  url => "http://search.cpan.org/~cwest/",     debian => 'libnet-smtp-ssl-perl' },
-  { name => "Net::SSLGlue",    version => '1.01',  url => "http://search.cpan.org/~sullr/",     debian => 'libnet-sslglue-perl' },
+  { name => "Net::SMTP::SSL",                      url => "http://search.cpan.org/~cwest/",     debian => 'libnet-smtp-ssl-perl' },
+  { name => "Net::SSLGlue",                        url => "http://search.cpan.org/~sullr/",     debian => 'libnet-sslglue-perl' },
 );
 
 @developer_modules = (
index 0c209e2..83f8ff5 100644 (file)
@@ -101,10 +101,10 @@ sub get_stylesheet_for_user {
         -f "$css_path/$user_style/main.css") {
       $css_path = "$css_path/$user_style";
     } else {
-      $css_path = "$css_path/lx-office-erp";
+      $css_path = "$css_path/kivitendo";
     }
   } else {
-    $css_path = "$css_path/lx-office-erp";
+    $css_path = "$css_path/kivitendo";
   }
   $::myconfig{css_path} = $css_path; # needed for menunew, FIXME: don't do this here
 
index 883353a..dc0bf05 100644 (file)
@@ -51,7 +51,7 @@ sub print_menu {
     my $menu_title = $::locale->text($item);
     my $menu_text = $menu_title;
 
-    if ($menu_item->{"submenu"} || !defined($menu_item->{"module"})) {
+    if ($menu_item->{"submenu"} || !defined($menu_item->{"module"}) && !defined($menu_item->{href})) {
 
       my $h = $self->print_menu("${parent}${item}", $depth * 1 + 1)."\n";
       if (!$parent) {
@@ -96,7 +96,7 @@ sub menuitem_v3 {
   my @vars = qw(module action target href);
 
   if ($menuitem->{href}) {
-    $str  = qq|<a href=$menuitem->{href}|;
+    $str  = qq|<a href="$menuitem->{href}|;
     @vars = qw(module target href);
   }
 
index 89c950b..5d7688e 100644 (file)
@@ -6,7 +6,6 @@ use SL::Layout::Admin;
 use SL::Layout::Login;
 use SL::Layout::Classic;
 use SL::Layout::V3;
-use SL::Layout::V4;
 use SL::Layout::Javascript;
 
 sub new {
@@ -14,7 +13,6 @@ 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';
index f007e09..075e2f2 100644 (file)
@@ -24,7 +24,7 @@ __END__
 
 =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
 
diff --git a/SL/Layout/V4.pm b/SL/Layout/V4.pm
deleted file mode 100644 (file)
index 81789d4..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-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;
index c25941c..95d2254 100644 (file)
@@ -111,6 +111,8 @@ sub select_tag {
   my $title_sub       = delete($attributes{title_sub});
   my $default_sub     = delete($attributes{default_sub});
 
+  my $with_empty      = delete($attributes{with_empty});
+  my $empty_title     = delete($attributes{empty_title});
 
   my %selected;
 
@@ -128,8 +130,8 @@ sub select_tag {
 
   my @options;
 
-  if ( delete($attributes{with_empty}) ) {
-    push(@options, [undef, $attributes{empty_title} || '']);
+  if ( $with_empty ) {
+    push(@options, [undef, $empty_title || '']);
   }
 
   my $normalize_entry = sub {
@@ -180,7 +182,7 @@ sub select_tag {
     my $title;
 
     if ( $value_title_sub ) {
-      ($value, $title) = $value_title_sub->($entry);
+      ($value, $title) = @{ $value_title_sub->($entry) };
     } else {
 
       $value = $normalize_entry->('value', $entry, $value_sub, $value_key);
index 97180b4..7676698 100755 (executable)
@@ -80,7 +80,6 @@ my @all_stylesheets = qw(lx-office-erp.css Win2000.css Mobile.css kivitendo.css)
 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)') },
 );
 
@@ -380,16 +379,14 @@ sub list_users {
 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',
index a81f451..d7cebc4 100644 (file)
@@ -209,6 +209,7 @@ sub list_names {
       addr_city business_id
     ), "$form->{db}number",
     map({ "cvar_$_->{name}" } @searchable_custom_variables),
+    map({'cvar_'. $_->{name} .'_qtyop'} grep({$_->{type} eq 'number'} @searchable_custom_variables)),
     map({ "l_$_" } @columns),
   );
 
index 5b3e665..f01b5af 100644 (file)
@@ -1238,8 +1238,14 @@ sub generate_report {
   map { $column_defs{$_}->{visible} ||= $form->{"l_$_"} ? 1 : 0 } @columns;
   map { $column_defs{$_}->{align}   = 'right' } qw(onhand sellprice listprice lastcost linetotalsellprice linetotallastcost linetotallistprice rop weight soldtotal), @pricegroup_columns;
 
-  my @hidden_variables = (qw(l_subtotal l_linetotal searchitems itemstatus bom l_pricegroups), @itemstatus_keys, @callback_keys,
-                              map({ "cvar_$_->{name}" } @searchable_custom_variables), map { "l_$_" } @columns);
+  my @hidden_variables = (
+    qw(l_subtotal l_linetotal searchitems itemstatus bom l_pricegroups),
+    @itemstatus_keys,
+    @callback_keys,
+    map({ "cvar_$_->{name}" } @searchable_custom_variables),
+    map({'cvar_'. $_->{name} .'_qtyop'} grep({$_->{type} eq 'number'} @searchable_custom_variables)),
+    map({ "l_$_" } @columns),
+  );
 
   my $callback         = build_std_url('action=generate_report', grep { $form->{$_} } @hidden_variables);
 
index b7614ff..bda1c6d 100644 (file)
@@ -121,6 +121,7 @@ sub project_report {
   my @columns      = qw(projectnumber description active);
 
   my @includeable_custom_variables = grep { $_->{includeable} } @{ $cvar_configs };
+  my @searchable_custom_variables  = grep { $_->{searchable} }  @{ $cvar_configs };
   my %column_defs_cvars            = ();
   foreach (@includeable_custom_variables) {
     $column_defs_cvars{"cvar_$_->{name}"} = {
@@ -132,7 +133,11 @@ sub project_report {
   push @columns, map { "cvar_$_->{name}" } @includeable_custom_variables;
 
 
-  my @hidden_vars  = ('filter', map { ('cvar_'. $_->{name} , 'l_cvar_'. $_->{name}) } @includeable_custom_variables);
+  my @hidden_vars  = (
+    'filter',
+    map({ ('cvar_'. $_->{name} , 'l_cvar_'. $_->{name}) } @includeable_custom_variables),
+    map({'cvar_'. $_->{name} .'_qtyop'} grep({$_->{type} eq 'number'} @searchable_custom_variables)),
+  );
   my $href         = build_std_url('action=project_report', @hidden_vars);
 
 
diff --git a/css/Mobile/menuv4.css b/css/Mobile/menuv4.css
deleted file mode 120000 (symlink)
index 6f69e0f..0000000
+++ /dev/null
@@ -1 +0,0 @@
-../lx-office-erp/menuv4.css
\ No newline at end of file
index 8452ed0..c3c64dc 100644 (file)
@@ -103,7 +103,9 @@ body.login {
        background-color: #FFFFE0;
        color: #000000;
 }
-h1.login {
+.login h1 {
+  text-align: center;
+  font-size: 20px;
 }
 table.login {
        background-color: #FFFFE0;
@@ -115,10 +117,9 @@ td.login {
 th.login {
        text-align: right;
 }
-div.admin {
-       background-color: #FFFFE0;
-    padding: 8px;
-       color: #000000;
+.admin h1 {
+       background-color: #fe5f14;
+  text-color: #ffffff;
 }
 body.menu {
        color: #000000;
index b5819a6..1b004b7 100644 (file)
@@ -4,139 +4,6 @@ orangemenu color #FFFFFF
 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;*/
@@ -152,7 +19,6 @@ body.menuv3 {
        /*border: 3px solid;*/
        background-color: #FFFFFF;
        color: #000000;
-       margin-top: 0.2em;
 }
 #menuv3 a, #menuv3 h2, #menuv3 div.x {
        font-size: 80%;
@@ -163,12 +29,6 @@ body.menuv3 {
        margin: 0;
        padding: 0.3em 1em;
 }
-#menuv3 h2:before {
-       content: " ";
-}
-#menuv3 h2:after {
-       content: " ";
-}
 #menuv3 h2 {
        background-color: #ffffff;
        color: #000000;
@@ -277,6 +137,13 @@ div#menuv3 li:hover ul, div#menuv3 li li:hover ul, div#menuv3 li li li:hover ul,
 }
 /* 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)
@@ -314,7 +181,7 @@ div#menuv3 li:hover ul, div#menuv3 li li:hover ul, div#menuv3 li li li:hover ul,
 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, #main_menu_div, #js-header {   /* items with this class won't print */
     display: none;
   }
   #content.html-menu { margin-left: 0; }
index 469d9de..42eb844 100644 (file)
@@ -51,7 +51,7 @@ padding:1px 0 1px 3px;
 
 #menuv3 h2 {
 color:#fff;
-padding:0 5px;
+padding:2px 10px;
 }
 
 #menuv3 a, #menuv3 a:visited, #menuv3 div.x, #menuv3 div.x:visited {
@@ -63,7 +63,6 @@ padding-right:10px;
 #menuv3 a {
 background:#eee;
 }
-
 #menuv3 div.x, #menuv3 div.x:visited {
 background:#eee url(../../image/right.gif) no-repeat right;
 }
@@ -83,7 +82,6 @@ list-style:none;
 margin:0;
 padding:0;
 float:left;
-min-width:7em;
 }
 
 #menuv3 li {
@@ -119,7 +117,7 @@ display:none;
 
 #menuv3 ul ul ul {
 top:0;
-left:100%;
+left:90%;
 }
 
 /* Begin non-anchor hover selectors */
@@ -154,129 +152,6 @@ div#menuv3 li li li li:hover ul
 
 /* 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)
@@ -315,7 +190,7 @@ 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, #main_menu_div, #js-header {   /* items with this class won't print */
     display: none;
   }
   #content.html-menu { margin-left: 0; }
index 548b318..52164bc 100644 (file)
@@ -5,7 +5,7 @@ Wichtige Hinweise zum Upgrade von Ã¤lteren Versionen
 ** BITTE FERTIGEN SIE VOR DEM UPGRADE EIN BACKUP IHRER DATENBANK(EN) AN! **
 
 
-Upgrade auf v2.7.1
+Upgrade auf v3.0.0
 ==================
 
 * Neue Abhängigkeiten
index 8a9cd83..b84d0dc 100644 (file)
@@ -126,6 +126,7 @@ Liste gefixter Bugs us dem Bugtracker
   - Bugfix #1829: Lieferanten zu Dienstleistungen werden nicht gespeichert
   - Bugfix #1834: Buchungsliste - Bilanzspalte
   - Bugfix #1837: Lieferant auf ungültig setzen, verfälscht Kreditorenbuchungsmaske (mulitbox <-> obsolete?)
+  - Bugfix #1840: Für Auswahl "Drucker" bzw. "Warteschlange" müssen Latex-Vorlagen zwingend aktiviert sein
   - Bugfix #1841: falsche Finanzamtnummern
   - Bugfix #1842: Offene Posten Alterstrukturliste prüft nur auf tagesaktuellem Datum
   - Bugfix #1849: Buttons "Loeschen" und "Buchen" bei frischen Rechnungen verschwindet nach "Erneuern"
@@ -142,11 +143,14 @@ Liste gefixter Bugs us dem Bugtracker
   - Bugfix #1869: Artikel: Inkonsistente Zustände bzgl. eindeutige Artikelnummern (war: Dienstleistung: neuer Preis lässt sich nicht speichern)
   - Bugfix #1871: Datumsformat dd-mm-yy verursacht Fehler in Rose::DB::Object
   - Bugfix #1872: CSVImport verliert die erste Spalte, wenn die Importdatei UTF8 mit BOM ist
+  - Bugfix #1873: Preise zu Preisgruppen werden nicht mehr korrekt gespeichert
   - Bugfix #1877: Installations Check preuft nicht gegen Net::LDAP
   - Bugfix #1878: Programm Icon kivitendo
+  - Bugfix #1886: doppelte Leerzeichen im Lieferantenname werden in Auswahlliste für Kreditorenbuchung nicht richtig geparst
   - Bugfix #1889: Fälligkeitsdatum aus Rechnungsdatum
   - Bugfix #1890: Kontenabgleich: Spaltenüberschrift vertauscht
   - Bugfix #1892: Nach Update Can't use string ("Form") as a HASH....
+  - Bugfix #1893: Falscher Bezug bei Kontoliste
   - Bugfix #1894: Stammdaten - Berichte - Kunden: Auswahl Rechnungen, Aufträge, Angebote wirkt als Filter
   - Bugfix #1895: Negative Beträge bei Zahlungseingang für Gutschriften
   - Bugfix #1900: Warenbericht: Projekt in Bericht aufnhemen ergibt SQL-Fehler
@@ -163,7 +167,9 @@ Liste gefixter Bugs us dem Bugtracker
   - Bugfix #1936: Autom. Update des Faelligkeitsdatums bei Kreditorenbuchungen funktioniert nicht zuverlaessig
   - Bugfix #1939: Kreditorenbuchungen: Projektnummer wird nicht autom. in Zeilen uebernommen
   - Bugfix #1940: Sprung von Wiedervorlage zu Kreditorenbuchung in Kreditorenbuchung funktioniert nicht
+  - Bugfix #1942: Dialogbuchen: Datumsaenderung innerhalb des Erstellungstages nicht moeglich
   - Bugfix #1949: Falsche Zuordnung Verkäufer/-in bei Kunden-Stammdaten
+  - Bugfix #1945: Aufbereitung USTVA falsch in 2.7.0
   - Bugfix #1950: Abteilung wird aus ausgelagerten Lieferscheinen nicht in Rechnung Ã¼bernommen.
   - Bugfix #1952: Lieferscheine werden nicht nach Abteilung gefiltert
   - Bugfix #1954: CSV-Import benutzerdef. Variablen mit Großbuchstaben geht nicht
@@ -208,6 +214,14 @@ Liste gefixter Bugs us dem Bugtracker
   - Bugfix #2041: 'Konto schon vorhanden' beim Speichern eines bestehenden Kontos nach Ã„nderung
   - Bugfix #2044: fehlender Benutzername bei Menue CSS (v4)
   - Bugfix #2048: Menu verschwindet
+  - Bugfix #2049: Vorlagen-Templates aufraeumen
+  - Bugfix #2053: Link zur Dokumentation ins Menü einbauen
+  - Bugfix #2054: oberster Auftrag wird ignoriert bei Mehrfachauswahl zum Zusammenfassen von Aufträgen
+  - Bugfix #2055: Zusammenfassen von Aufträgen wirft Fehlermeldung
+  - Bugfix #2056: Stark abweichende Optik des Verkaufsberichtes
+  - Bugfix #2059: Falsches Icon im Programm-Menü
+  - Bugfix #2060: Sprache hinzufügen schlägt fehl
+  - Bugfix #2061: Fehler im Menü Programm bei Menü-Varianten "oben mit css" und "oben mit css neu"
 
 
 2012-03-01 - Release 2.7.0
index 48c9802..0ff4d9a 100644 (file)
@@ -77,7 +77,7 @@ als freundliche Checkliste zum ausdrucken und erweitern.
 
     Das gleiche für trac:
     o Individuelle Abfrage
-      + geändert zwischen <letztes Releasedatum> und <heute>
+      + geändert zwischen <letztes Releasedatum> und <heute+1>
       + Status closed
       + Lösung behobena
       + Komponente ist Lx-Office ERP
@@ -85,6 +85,14 @@ als freundliche Checkliste zum ausdrucken und erweitern.
     o sortieren nach Ticketnummer
     o rest weiter ab copy&paste
 
+    Achtung: trac hat im Moment noch Probleme, so dass Bugs zum teil mit nicht
+    existenten Lösungen geschlossen werden.  Besser ist es, sich die Lösung als
+    eigene Spalte anzeigen zu lassen, die Lösungen zu filtern, die nicht
+    erwünscht sind, und den Rest zu formatieren (TODO: Script erweitern)
+
+    Achtung: trac benutzt Datum 00:00:00 als obere Grenze, dass heisst, immer
+    einen Tag mehr angeben.
+
   - Ausserdem einmal durch das git scrollen und sinnvolle grössere Ã„nderungen
     ins changelog Ã¼bertragen. Muss nur einmal gemacht werden, möglichst danach
     nur noch inkrementell.
index 6b60dfc..6cc8b97 100644 (file)
@@ -248,7 +248,6 @@ $self->{texts} = {
   'BWA'                         => 'BWA',
   'Back'                        => 'Zurück',
   'Back to login'               => 'Zurück zur Anmeldung',
-  'Back to the login page'      => 'Zurück zur Loginseite',
   'Background job history'      => 'Verlauf der Hintergrund-Jobs',
   'Background jobs'             => 'Hintergrund-Jobs',
   'Background jobs and task server' => 'Hintergrund-Jobs und Task-Server',
@@ -670,6 +669,7 @@ $self->{texts} = {
   'Do you want to store the existing onhand values into a new warehouse?' => 'M&ouml;chten Sie die vorhandenen Mengendaten in ein Lager &uuml;bertragen?',
   'Document'                    => 'Dokument',
   'Document Project Number'     => 'Projektnummer des Belegs',
+  'Documentation'               => 'Dokumentation',
   'Documentation (in German)'   => 'Dokumentation',
   'Documents in the WebDAV repository' => 'Dokumente im WebDAV-Repository',
   'Done'                        => 'Fertig',
@@ -1085,6 +1085,7 @@ $self->{texts} = {
   'Language missing!'           => 'Sprache fehlt!',
   'Language saved!'             => 'Sprache gespeichert!',
   'Languages'                   => 'Sprachen',
+  'Languages and translations'  => 'Sprachen und Ãœbersetzungen',
   'Last Action'                 => 'Letzte Aktivität',
   'Last Article Number'         => 'Letzte Artikelnummer',
   'Last Cost'                   => 'Einkaufspreis',
@@ -2090,7 +2091,6 @@ $self->{texts} = {
   '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',
@@ -2177,6 +2177,7 @@ $self->{texts} = {
   'User Login'                  => 'Als Benutzer anmelden',
   'User data migration'         => 'Benutzerdatenmigration',
   'User deleted!'               => 'Benutzer gelöscht!',
+  'User login'                  => 'Benutzeranmeldung',
   'User migration complete'     => 'Benutzermigration abgeschlossen',
   'User name'                   => 'Benutzername',
   'User saved!'                 => 'Benutzer gespeichert!',
@@ -2376,6 +2377,7 @@ $self->{texts} = {
   'invoice_list'                => 'debitorenbuchungsliste',
   'kivitendo'                   => 'kivitendo',
   'kivitendo Homepage'          => 'Infos zu kivitendo',
+  'kivitendo administration'    => 'kivitendo Administration',
   'kivitendo can fix these problems automatically.' => 'kivitendo kann solche Probleme automatisch beheben.',
   'kivitendo has been switched to group-based access restrictions.' => 'kivitendo wurde auf eine gruppenbasierte Benutzerzugriffsverwaltung umgestellt.',
   'kivitendo has found one or more problems in the general ledger.' => 'kivitendo hat ein oder mehrere Probleme im Hauptbuch gefunden.',
index e091277..290ae0a 100644 (file)
--- a/menu.ini
+++ b/menu.ini
@@ -666,25 +666,25 @@ action=add_lead
 module=am.pl
 action=list_lead
 
-[System--Languages]
+[System--Languages and translations]
 module=menu.pl
 action=acc_menu
 target=acc_menu
 submenu=1
 
-[System--Languages--Add Language]
+[System--Languages and translations--Add Language]
 module=am.pl
 action=add_language
 
-[System--Languages--List Languages]
+[System--Languages and translations--List Languages]
 module=am.pl
 action=list_language
 
-[System--Languages--Greetings]
+[System--Languages and translations--Greetings]
 module=generictranslations.pl
 action=edit_greetings
 
-[System--Languages--SEPA strings]
+[System--Languages and translations--SEPA strings]
 module=generictranslations.pl
 action=edit_sepa_strings
 
diff --git a/sql/Pg-upgrade2-auth/remove_menustyle_v4.sql b/sql/Pg-upgrade2-auth/remove_menustyle_v4.sql
new file mode 100644 (file)
index 0000000..3744bd3
--- /dev/null
@@ -0,0 +1,8 @@
+-- @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'));
diff --git a/sql/Pg-upgrade2/rename_buchungsgruppe_16_19_to_19.sql b/sql/Pg-upgrade2/rename_buchungsgruppe_16_19_to_19.sql
new file mode 100644 (file)
index 0000000..6cf6a16
--- /dev/null
@@ -0,0 +1,5 @@
+-- @tag: rename_buchungsgruppe_16_19_to_19
+-- @description: Buchungsgruppe '16%/19%' in '19%' umbenennen
+-- @depends: release_2_7_0
+
+UPDATE buchungsgruppen SET description = 'Standard 19%' WHERE description = 'Standard 16%/19%';
diff --git a/sql/Pg-upgrade2/ustva_setup_2007_update_chart_taxkeys_tax_skr04.sql b/sql/Pg-upgrade2/ustva_setup_2007_update_chart_taxkeys_tax_skr04.sql
new file mode 100644 (file)
index 0000000..75b30a7
--- /dev/null
@@ -0,0 +1,61 @@
+-- @tag: ustva_setup_2007_update_chart_taxkeys_tax_skr04
+-- @description: Anpassung der UStVA-Schlüssel für Konten 3801, 3806, 3804 und 4400
+-- @depends: release_2_7_0
+
+-- 3806 - neuer Eintrag pos_ustva 811 ab 2007 (falls noch nicht existiert)
+-- 3801 - neuer Eintrag pos_ustva 861 ab 2007 (falls noch nicht existiert)
+-- 4400 - pos_ustva von 51 auf 81 für Eintrag 2007
+-- 3804 - pos_ustva Eintrag 891 ab 2007
+
+INSERT INTO taxkeys (
+  chart_id, pos_ustva, startdate)                                                                                                                        
+  SELECT chart.id, '811', '2007-01-01'
+  FROM chart                                                                                                                                                                  LEFT JOIN tax ON (chart.id = tax.chart_id)                                                                                                                                
+  WHERE chart.accno = '3806'                                                                                                                                                
+  AND                                                                                                                                                                       
+  EXISTS ( -- update only for SKR04                                                                                                                                         
+    SELECT coa FROM defaults
+      WHERE defaults.coa='Germany-DATEV-SKR04EU'                                                                                                                            
+  AND NOT EXISTS (
+   select * from taxkeys where chart_id = (select id from chart where accno = '3806') and pos_ustva = '811' and startdate = '2007-01-01' )
+  )                                                                                                                                                                         
+;         
+
+INSERT INTO taxkeys (
+  chart_id, pos_ustva, startdate)                                                                                                                        
+  SELECT chart.id, '861', '2007-01-01'
+  FROM chart                                                                                                                                                                  LEFT JOIN tax ON (chart.id = tax.chart_id)                                                                                                                                
+  WHERE chart.accno = '3801'                                                                                                                                                
+  AND                                                                                                                                                                       
+  EXISTS ( -- update only for SKR04                                                                                                                                         
+    SELECT coa FROM defaults
+      WHERE defaults.coa='Germany-DATEV-SKR04EU'                                                                                                                            
+  AND NOT EXISTS (
+   select * from taxkeys where chart_id = (select id from chart where accno = '3801') and pos_ustva = '861' and startdate = '2007-01-01' )
+  )                                                                                                                                                                         
+;         
+
+UPDATE taxkeys SET pos_ustva = '81'
+WHERE chart_id = (SELECT id FROM chart WHERE accno = '4400')
+AND startdate = '2007-01-01'
+AND pos_ustva = '51'
+AND EXISTS ( 
+  SELECT coa FROM defaults 
+  WHERE defaults.coa='Germany-DATEV-SKR04EU'
+);
+
+-- insert taxkey for 3804, but leave taxkey_id empty, because Kivitendo can't
+-- handle this automatic booking and tax has to be booked manually
+-- don't insert this key with this startdate if it already exists (was already added manually)
+INSERT INTO taxkeys (
+  chart_id, pos_ustva, startdate)                                                                                                                        
+  SELECT chart.id, '891', '2007-01-01'
+  FROM chart                                                                                                                                                                  LEFT JOIN tax ON (chart.id = tax.chart_id)                                                                                                                                
+  WHERE chart.accno = '3804'                                                                                                                                                
+  AND                                                                                                                                                                       
+  EXISTS ( -- update only for SKR04                                                                                                                                         
+    SELECT coa FROM defaults
+      WHERE defaults.coa='Germany-DATEV-SKR04EU'                                                                                                                            
+  AND NOT EXISTS (
+   select * from taxkeys where chart_id = (select id from chart where accno = '3804') and pos_ustva = '891' and startdate = '2007-01-01' )
+  );
index 543f228..8cbaf29 100644 (file)
@@ -1,37 +1,51 @@
 [%- USE T8 %]
 [% USE HTML %]
 [% USE LxERP%]
- <script type='text/javascript'>
-    $(function(){ document.getElementsById('rpw').focus();});
- </script>
- <div align="center">
-
-  <a href="http://www.kivitendo.org"><img src="image/kivitendo.png" border="0"></a>
-
-  <h3 class="login">[% 'kivitendo' | $T8 %] [% HTML.escape(version) %]</h3>
-
-  <h2>[% 'Administration' | $T8 %]</h2>
-
-  [% IF error %]
-  <p><span class="message_error_login">[% error %]</span></p>
-  [% END %]
-
-  <form method="post" action="admin.pl">
-
-   <table>
-    <tr>
-     <th>[% 'Password' | $T8 %]</th>
-     <td><input type="password" name="{AUTH}admin_password" id="rpw"></td>
-     <td><input type="submit" class="submit" name="action" value="[% 'Login' | $T8 %]"></td>
-    </tr>
-    <input type="hidden" name="action" value="login">
-   </table>
-
-  </form>
-
-  <p>[% 'kivitendo Homepage' | $T8 %]: <a href="http://kivitendo.de" target="_blank" title="[% 'kivitendo Homepage' | $T8 %]">http://kivitendo.de</a></p>
-
-  <p><a href="controller.pl?action=LoginScreen/user_login" target="_top">[%- LxERP.t8('Back to the login page') %]</a></p>
-
- </div>
-
+ <center>
+  <table class="login" border="3" cellpadding="20">
+   <tr>
+    <td class="login" align="center">
+     <a href="http://www.kivitendo.de" target="_top"><img src="image/kivitendo.png" border="0"></a>
+     <h1>[% 'kivitendo administration' | $T8 %] [% version %]</h1>
+
+     [% IF error %]
+     <p><span class="message_error_login">[% error %]</span></p>
+     [% END %]
+
+     <p>
+
+      <form method="post" action="admin.pl">
+
+       <table width="100%">
+        <tr>
+         <td align="center">
+          <table>
+           <tr>
+            <th align="right">[% 'Password' | $T8 %]</th>
+            <td><input class="login" type="password" name="{AUTH}admin_password" id="admin_password" size="30" tabindex="1"></td>
+           </tr>
+          </table>
+
+          <br>
+          <input type="submit" value="[% 'Login' | $T8 %]" tabindex="2">
+
+         </td>
+        </tr>
+       </table>
+
+       <input type="hidden" name="action" value="login">
+      </form>
+
+    </td>
+   </tr>
+  </table>
+
+  <p>
+   <a href="controller.pl?action=LoginScreen/user_login" target="_top">[%- LxERP.t8('User login') %]</a>
+   &nbsp;|&nbsp;
+   <a href="doc/kivitendo-Dokumentation.pdf" target="_top">[%- LxERP.t8('Documentation') %]</a>
+  </p>
+
+  <script type='text/javascript'>
+    $('#admin_password').focus();
+  </script>
index 756247a..128d460 100644 (file)
@@ -18,7 +18,7 @@
     -->
  </script>
 
- <h2>[% title %]</h2>
+ <h1>[% title %]</h1>
 
  [% IF NO_DATABSES %]
   [% 'No databases have been found on this server.' | $T8 %]
@@ -96,4 +96,3 @@
   </form>
 
  [% END %]
-
index bb29cf9..e1573a6 100644 (file)
@@ -1,7 +1,7 @@
 [%- USE T8 %]
 [%- USE LxERP %]
 [%- USE HTML %]
- <h2>[% title %]</h2>
+ <h1>[% title %]</h1>
 
  <p>[% LxERP.t8('The dataset backup has been sent via email to #1.', to) | html %]</p>
 
index 8e727d9..c40b8ec 100644 (file)
@@ -1,7 +1,7 @@
 [%- USE T8 %]
 [%- USE HTML %]
 
- <div class="listtop">[% title %]</div>
+ <h1>[% title %]</h1>
 
  <form method="post" action="admin.pl">
 
@@ -57,4 +57,3 @@
   <input type="button" class="submit" onclick="history.back()" value="[% 'Back' | $T8 %]">
 
  </form>
-
index 027d492..0e1d80a 100644 (file)
@@ -1,7 +1,7 @@
 [%- USE T8 %]
 [%- USE HTML %]
 
- <div class="listtop">[% title %]</div>
+ <h1>[% title %]</h1>
 
  <p>
   [% 'The tables for user management and authentication do not exist. They will be created in the next step in the following database:' | $T8 %]
@@ -39,4 +39,3 @@
   <input type="button" class="submit" onclick="history.back()" value="[% 'Back' | $T8 %]">
 
  </form>
-
index 94ddf82..36b337a 100644 (file)
@@ -1,6 +1,6 @@
 [%- USE T8 %]
 [%- USE HTML %]
-  <h2>[% title %]</h2>
+  <h1>[% title %]</h1>
 
   <form method="post" action="admin.pl">
    <p><a href="admin.pl?action=pg_database_administration">[% 'Back' | $T8 %]</a></p>
index 2f2fa6d..5718c88 100644 (file)
@@ -1,7 +1,7 @@
 [%- USE T8 %]
 [%- USE HTML %]
 
- <div class="listtop">[% title %]</div>
+ <h1>[% title %]</h1>
 
  <form method="post" action="admin.pl">
 
@@ -45,4 +45,3 @@
   </p>
 
  </form>
-
index 74e1467..23fb805 100644 (file)
@@ -1,6 +1,6 @@
 [%- USE T8 %]
 [%- USE HTML %]
-  <h2>[% title %]</h2>
+  <h1>[% title %]</h1>
 
   <form method="post" action="admin.pl">
    <a href="admin.pl?action=list_users">[% 'Back' | $T8 %]</a>
@@ -66,4 +66,3 @@
   <p>[% 'This is a preliminary check for existing sources. Nothing will be created or deleted at this stage!' | $T8 %]</p>
 
   <p>[% 'Leave host and port field empty unless you want to make a remote connection.' | $T8 %]</p>
-
index f832912..b42c746 100644 (file)
@@ -1,7 +1,7 @@
 [%- USE T8 %]
 [%- USE HTML %]
 [%- USE LxERP %]
-  <h2>[% title %]</h2>
+  <h1>[% title %]</h1>
 
   <form method="post" action="admin.pl">
 
@@ -12,4 +12,3 @@
    <p><input type="submit" class="submit" name="action" value="[% 'Continue' | $T8 %]"></p>
 
   </form>
-
index 6926c9c..a7aa798 100644 (file)
@@ -1,7 +1,7 @@
 [%- USE T8 %]
 [%- USE LxERP %]
 [%- USE HTML %]
-  <h2>[% title %]</h2>
+  <h1>[% title %]</h1>
 
   <form method="post" action="admin.pl">
 
@@ -11,4 +11,3 @@
 
    <p><input type="submit" class="submit" name="action" value="[% 'Continue' | $T8 %]"></p>
   </form>
-
index cc37049..1a81e96 100644 (file)
@@ -1,2 +1,2 @@
 [%- USE T8 %]
-[% USE HTML %]<div class="listtop" width="100%">[% 'Dataset upgrade' | $T8 %] ([% HTML.escape(dbname) %])</div>
+[% USE HTML %]<h1>[% 'Dataset upgrade' | $T8 %] ([% HTML.escape(dbname) %])</h1>
index 2e891ee..e66dadf 100644 (file)
@@ -1,6 +1,6 @@
 [%- USE T8 %]
 [%- USE HTML %]
- <h2>[% title %]</h2>
+ <h1>[% title %]</h1>
  <p><a href="admin.pl?action=pg_database_administration">[% 'Back' | $T8 %]</a></p>
  <form method="post" action="admin.pl">
 
@@ -26,4 +26,3 @@
   <p><input type="submit" class="submit" name="action" value="[% 'Continue' | $T8 %]"></p>
 
  </form>
-
index 591ae30..3b46941 100644 (file)
@@ -1,6 +1,6 @@
 [%- USE T8 %]
 [%- USE HTML %]
-  <div class="listtop">[% 'Delete group' | $T8 %]: [% name %]</div>
+  <h1>[% 'Delete group' | $T8 %]: [% name %]</h1>
   <p class="message_hint">[ [% name %] ] - [% 'Do you really want to delete this group?' | $T8 %]</p>
 
    <form name="Form" method="post" action="admin.pl">
@@ -11,4 +11,3 @@
     <input type="hidden" name="delete_nextsub" value="delete_group">
     <input type="submit" class="submit" name="action" value="[% 'Delete' | $T8 %]">
    </form>
-
index de6c8d7..bcbcd09 100644 (file)
@@ -2,13 +2,13 @@
  [% L.stylesheet_tag('jquery.multiselect2side') %]
  [% L.javascript_tag('jquery.selectboxes', 'jquery.multiselect2side') %]
 
+<h1>[% 'Edit group ' | $T8 %]:  [% HTML.escape(name) %]</h1>
+
  <form name="Form" method="post" action="admin.pl">
   [% IF message %]
   <p class="message_ok">[% message %]</p>
   [% END %]
 
-  <div class="listtop">[% 'Edit group ' | $T8 %]:  [% HTML.escape(name) %]</div>
-
   <p><a href="admin.pl?action=edit_groups">[% 'Back' | $T8 %]</a></p>
 
    <hr>
index 662c040..be0a46d 100644 (file)
@@ -1,7 +1,7 @@
 [%- USE T8 %]
 [%- USE HTML %][%- USE LxERP %]
 
- <div class="listtop">[% 'Edit group membership' | $T8 %]</div>
+ <h1>[% 'Edit group membership' | $T8 %]</h1>
 
  <p><a href="admin.pl?action=edit_groups">[% 'Back' | $T8 %]</a></p>
  <p>[% 'Select the checkboxes that match users to the groups they should belong to.' | $T8 %]</p>
@@ -42,4 +42,3 @@
   </p>
 
  </form>
-
index ee6d9ef..b17539d 100644 (file)
@@ -1,14 +1,14 @@
 [%- USE T8 %]
 [%- USE HTML %]
 
-  <div class="listtop">[% 'Edit groups' | $T8 %]</div>
+  <h1>[% 'Edit groups' | $T8 %]</h1>
   [% IF message %]
   <p class="message_ok">[% message %]</p>
   [% END %]
 
   <p><a href="admin.pl?action=login">[% 'Back' | $T8 %]</a></p>
 
- <h1>[% 'Add a new group' | $T8 %]</h1>
+ <h2>[% 'Add a new group' | $T8 %]</h2>
 
  <form method="post" action="admin.pl">
  <br>
@@ -20,7 +20,7 @@
    <p><input type="submit" class="submit" name="action" value="[% 'Add' | $T8 %]"></p>
  </form>
 
- <h1>[% 'Edit and delete a group' | $T8 %]</h1>
+ <h2>[% 'Edit and delete a group' | $T8 %]</h2>
 
  <form name="Form" method="post" action="admin.pl">
   [% IF num_groups %]
@@ -45,7 +45,7 @@
   </p>
  </form>
 
- <h1>[% 'Group membership' | $T8 %]</h1>
+ <h2>[% 'Group membership' | $T8 %]</h2>
 
  <p>[% 'Edit the membership of all users in all groups:' | $T8 %]</p>
 
index 6e8fe2f..45f2831 100644 (file)
@@ -21,9 +21,9 @@
     -->
  </script>
 
- <form name="Form" id="Form" method="post" action="admin.pl">
+ <h1>[% title %]</h1>
 
 <div class="listtop" width="100%">[% title %]</div>
<form name="Form" id="Form" method="post" action="admin.pl">
   <p><a href="admin.pl?action=list_users">[% 'Back' | $T8 %]</a></p>
 
   <table width="100%">
index 02a4706..67a2d62 100644 (file)
@@ -61,7 +61,9 @@
   </div>
  </form>
 
- <h1>[% 'User Login' | $T8 %]</h1>
+ <hr>
+
+ <h2>[% 'User Login' | $T8 %]</h2>
 
  <form method="post" action="controller.pl">
   <input type="hidden" name="action" value="LoginScreen/login">
@@ -80,6 +82,3 @@
   </table>
 
  </form>
-
- <hr size="3" noshade>
-
index 7758fec..6e29706 100644 (file)
@@ -4,7 +4,7 @@
     $(function(){ document.getElementsByName('dbname')[0].focus();});
   </script>
 
- <h2>[% title %]</h2>
+ <h1>[% title %]</h1>
 
  <form name="Form" method="post" action="admin.pl" enctype="multipart/form-data">
 
@@ -56,4 +56,3 @@
   <input type="submit" class="submit" name="action" value="[% 'Continue' | $T8 %]">
 
  </form>
-
index 2cef649..dbc38c7 100644 (file)
@@ -1,5 +1,5 @@
 [%- USE T8 %]
- <h2>[% title %]</h2>
+ <h1>[% title %]</h1>
 
  <p>[%- 'The restoration process has started. Here\'s the output of the &quot;pg_restore&quot; command:' | $T8 %]</p>
 
index 6559709..78829da 100644 (file)
@@ -1,7 +1,7 @@
 [%- USE T8 %]
 [%- USE HTML %]
 
- <div class="listtop">[% title %]</div>
+ <h1>[% title %]</h1>
 
  [%- IF connection_ok %]
 
@@ -23,4 +23,3 @@
    <input type="button" class="submit" onclick="window.close()" value="[% 'Close Window' | $T8 %]">
   </form>
  </p>
-
index 80fdd56..293ab88 100644 (file)
@@ -1,6 +1,6 @@
 [%- USE T8 %]
 [%- USE HTML %]
- <h2>[% title %]</h2>
+ <h1>[% title %]</h1>
  <p><a href="admin.pl?action=pg_database_administration">[% 'Back' | $T8 %]</a></p>
  [% IF ALL_UPDATED %]
   [% 'All Datasets up to date!' | $T8 %]
@@ -51,4 +51,3 @@
   </form>
 
  [% END %]
-
index b353452..93c4860 100644 (file)
@@ -2,7 +2,7 @@
 [%- USE LxERP %]
 [%- USE HTML %]
 
- <div class="listtop">[% title %]</div>
+ <h1>[% title %]</h1>
 
  <form method="post" action="admin.pl">
 
@@ -21,4 +21,3 @@
   <input type="submit" class="submit" name="action" value="[% 'No' | $T8 %]">
 
  </form>
-
index 376a4b0..800625f 100644 (file)
@@ -1,7 +1,7 @@
 [%- USE T8 %]
 [%- USE HTML %]
 
- <div class="listtop">[% title %]</div>
+ <h1>[% title %]</h1>
 
  <form method="post" action="admin.pl">
 
@@ -20,4 +20,3 @@
   </p>
 
  </form>
-
index 99b6002..d47775a 100644 (file)
@@ -1,7 +1,7 @@
 [%- USE T8 %]
 [%- USE HTML %]
 
- <div class="listtop">[% title %]</div>
+ <h1>[% title %]</h1>
 
  <form method="post" action="admin.pl">
 
@@ -14,4 +14,3 @@
   <input type="submit" class="submit" name="action" value="[% 'Continue' | $T8 %]">
 
  </form>
-
index 387c18c..5921dd2 100644 (file)
        <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>
-
index e446f43..205627e 100644 (file)
   </tr>
   <tr>
     <th align=right>[% 'Number Format' | $T8 %]</th>
-    <td><select name="output_numberformat">[% numberformats, default = output_numberformat, with_empty = 1, empty_title = LxERP.t8('use program settings') %]</select></td>
+    <td>[% L.select_tag('output_numberformat', numberformats, default = output_numberformat, with_empty = 1, empty_title = LxERP.t8('use program settings')) %]</td>
   </tr>
   <tr>
     <th align=right>[% 'Date Format' | $T8 %]</th>
-    <td><select name="output_dateformat">[% dateformats, default = output_dateformat, with_empty = 1, empty_title=LxERP.t8('use program settings') %]</select></td>
+    <td>[% L.select_tag('output_dateformat', dateformats, default = output_dateformat, with_empty = 1, empty_title=LxERP.t8('use program settings')) %]</td>
   </tr>
   <tr>
     <th align=right>[% 'Long Dates' | $T8 %]</th>
index f97c4ec..fc2dffa 100644 (file)
@@ -31,7 +31,7 @@
       <option>&lt;</option>
       <option>&lt;=</option>
      </select>
-     <input name="cvar_[% HTML.escape(var.name) %]"[% IF var.maxlength %]maxlength="[% HTML.escape(var.maxlength) %]"[% END %]>
+     <input name="[% filter_prefix %]cvar_[% HTML.escape(var.name) %]"[% IF var.maxlength %]maxlength="[% HTML.escape(var.maxlength) %]"[% END %]>
 
      [%- ELSIF var.type == 'customer' %]
      <input name="[% filter_prefix %]cvar_[% var.name | html %]">
index 43f64b0..2864f9e 100644 (file)
      <tr>
       <th align="right">[% 'Shipping Address' | $T8 %]</th>
       <td colspan="3">
-       [% L.select_tag('delivery_id', SHIPTO_ALL, title_sub = \shipto_label, with_empty = 1,
+       [% L.select_tag('delivery_id', SHIPTO_ALL, value_key = 'shipto_id', title_sub = \shipto_label, with_empty = 1,
                        onchange = "\$('#delivery').load('ct.pl?action=get_delivery&id=' + \$('#cvid').attr('value') + '&db=' + \$('#db').attr('value') + '&shipto_id=' + this.value)") %]
       </td>
      </tr>
index ef41502..cd99f96 100644 (file)
        <tr>
         <th align="right" nowrap>[% 'Reqdate' | $T8 %]</th>
         <td nowrap>
-         <input name="reqdate" id="reqdate" size="11" title="[% HTML.escape(myconfig_dateformat) %]" value="[% HTML.escape(reqdate) %]"
-                onBlur="check_right_date_format(this)"[% RO %]>
-         <input type="button" name="b_reqdate" id="reqdate_trigger" value="?">
+         [% L.date_tag('reqdate', reqdate, readonly => delivered) %]
         </td>
        </tr>
 
index 08776e7..7ed49cf 100644 (file)
@@ -5,7 +5,7 @@
    <tr>
     <td class="login" align="center">
      <a href="http://www.kivitendo.de" target="_top"><img src="image/kivitendo.png" border="0"></a>
-     <h3 class="login" align="center">[% 'kivitendo' | $T8 %] [% version %]</h3>
+     <h1>[% 'kivitendo' | $T8 %] [% version %]</h1>
 
      [% IF error %]
      <p><span class="message_error_login">[% error %]</span></p>
index b54c9be..e92a83d 100644 (file)
@@ -15,7 +15,7 @@ $(clockon);
 
  <script type="text/javascript" src="js/dhtmlsuite/menu-for-applications.js"></script>
 
- <table class="menunew">
+ <table id='js-header' class="menunew">
   <tr>
    <td>
     &nbsp;
diff --git a/templates/webpages/menu/menuv4.html b/templates/webpages/menu/menuv4.html
deleted file mode 100644 (file)
index a24b637..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-[%- 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>