]> wagnertech.de Git - kivitendo-erp.git/commitdiff
Das XUL-/XML-Menü entfernen
authorMoritz Bunkus <moritz@bunkus.org>
Mon, 9 Jan 2012 14:03:13 +0000 (15:03 +0100)
committerMoritz Bunkus <moritz@bunkus.org>
Mon, 9 Jan 2012 14:23:48 +0000 (15:23 +0100)
Das alte XUL-/XML-Menü war von der Benutzung her zwar beliebt, hatte
aber aush administrativer Sicht diverse Probleme. Früher konnte
Firefox XUL von beliebigen Webservern ausführen, heute seit Firefox 4
nicht mehr -- aus Sicherheitsgründen. Daher musste man bereits ein
Addon installieren, damit es überhaupt geht.

In späteren Firefox-Versionen gab es immer wieder noch andere
Probleme.

Insgesamt sehe ich die folgenden drei Probleme:

1. Unbedarfte Benutzer werden immer trotz der von Lx-Office
angezeigten Warnmeldung das XUL-Menü einschalten und sich dann
wundern, dass nur eine ausgesprochen verwirrende Fehlermeldung
angezeigt wird.

2. Diese Fehlermeldung wirkt extrem unprofessional.

3. Es erzeugt bei Entwicklern, Debuggern, Supporter,
Dokumentationsschreibern einen deutlich erhöhten Aufwand.

Fix für Bugs 1705 und 1706.

22 files changed:
DEBIAN/DEBIAN/md5sum
DEBIAN/mk_erp_deb.sh
SL/Auth.pm
SL/Form.pm
SL/User.pm
bin/mozilla/login.pl
bin/mozilla/menuXML.pl [deleted file]
doc/languages_howto.txt
locale/de/all
locale/de/special_chars
locale/de_DE/all
locale/de_DE/special_chars
locale/en/all
locale/en/special_chars
locale/fr/all
menuXML.pl [deleted symlink]
scripts/mklinks.sh
sql/Pg-upgrade2-auth/remove_menustyle_xml.sql [new file with mode: 0644]
templates/webpages/admin/edit_user.html
templates/webpages/am/config.html
xslt/style1.css [deleted file]
xslt/xulmenu.xsl [deleted file]

index ff759218ac830222c2fca6be88015e69b599fce8..4cf2bd6c4363ea4164a3920b5c70bcd8efb1d021 100644 (file)
@@ -1776,8 +1776,6 @@ ca1942a777bb9757e0929f677dcc6f49  var/lib/lx-office-erp/templates/German-invoice
 8bc701c81a0ee89fe4478ddae2ef4827  var/lib/lx-office-erp/templates/French-sales_order.html
 6f81ff6f4639eefe6816e7288374a28b  var/lib/lx-office-erp/templates/German-check.tex
 b064d0f07f8fd71423879e8ffe9d6be5  var/lib/lx-office-erp/templates/Default-invoice.html
-0eab06c10a4c76e73d23218740dd6de1  var/lib/lx-office-erp/xslt/xulmenu.xsl
-2f7fbf7fd0626ab4ffdedcdd8b33ccd0  var/lib/lx-office-erp/xslt/style1.css
 947ddd3cdc8d188dce0d9b0c689f3235  etc/lx-office-erp/lx-erp.conf.default
 ea0d4d87c77d5b69a20bcafc76c987c6  etc/lx-office-erp/lx-office-erp.cherokee
 947ddd3cdc8d188dce0d9b0c689f3235  etc/lx-office-erp/lx-erp.conf
index 1f542db6fffadc0364b8a8aa3c9881e453001e4f..b3d47bc77c8ee2aabe6eb5a03ea454c1ba12f87d 100755 (executable)
@@ -52,7 +52,6 @@ cp $SRC/menu.ini usr/lib/lx-office-erp/menu.default
 cp -a $SRC/css var/lib/lx-office-erp
 cp -a $SRC/templates var/lib/lx-office-erp
 cp -a $SRC/users var/lib/lx-office-erp
-cp -a $SRC/xslt var/lib/lx-office-erp
 
 cp -a $SRC/doc/* usr/share/doc/lx-office-erp/
 cp -a $SRC/image/* usr/share/lx-office-erp/
index bd4fcd90a349b98c4e397b33a9afc3faa651a55b..d361a3d07fa093d8f5ccaaa0da8e59213722fd69 100644 (file)
@@ -455,6 +455,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';
+
   $sth->finish();
 
   $main::lxdebug->leave_sub();
index 38d87ad01a22f81a9ba102cd2f8de923b994961d..5393c4719265061215276f668942c0dc450e5d31 100644 (file)
@@ -311,7 +311,7 @@ sub info {
     <script type="text/javascript">
     <!--
     // If JavaScript is enabled, the whole thing will be reloaded.
-    // The reason is: When one changes his menu setup (HTML / XUL / CSS ...)
+    // The reason is: When one changes his menu setup (HTML / CSS ...)
     // it now loads the correct code into the browser instead of do nothing.
     setTimeout("top.frames.location.href='login.pl'",500);
     //-->
index 18bf0697b731e20cc48d46c46f7b5b0724a53942..640299d8ab456e405b30983fd8971f513600e011 100644 (file)
@@ -177,7 +177,6 @@ sub login {
         $self->{"menustyle"} eq "v3" ? "menuv3.pl" :
         $self->{"menustyle"} eq "neu" ? "menunew.pl" :
         $self->{"menustyle"} eq "js" ? "menujs.pl" :
-        $self->{"menustyle"} eq "xml" ? "menuXML.pl" :
         "menu.pl";
 
       print $form->parse_html_template("dbupgrade/footer", { "menufile" => $menufile });
index 1f96947785036e9af4702ffb075e4801dd511225..665cb9193a6fecb14c91d9c9972a70712c305b24 100644 (file)
@@ -126,7 +126,6 @@ sub login {
     v3  => 'v3',
     neu => 'new',
     v4  => 'v4',
-    xml => 'XML',
   );
 
   my $menu_script = $style_to_script_map{$user->{menustyle}} || '';
diff --git a/bin/mozilla/menuXML.pl b/bin/mozilla/menuXML.pl
deleted file mode 100644 (file)
index 1eed4ed..0000000
+++ /dev/null
@@ -1,155 +0,0 @@
-#=====================================================================
-# LX-Office ERP
-# Copyright (C) 2004
-# Based on SQL-Ledger Version 2.1.9
-# Web http://www.lx-office.org
-#
-######################################################################
-# SQL-Ledger Accounting
-# Copyright (c) 1998-2002
-#
-#  Author: Dieter Simader
-#   Email: dsimader@sql-ledger.org
-#     Web: http://www.sql-ledger.org
-#
-#  Contributors: Christopher Browne
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-#######################################################################
-#
-# three frame layout with refractured menu
-#
-# CHANGE LOG:
-#   DS. 2002-03-25  Created
-#  2004-12-14 - New Optik - Marco Welter <mawe@linux-studio.de>
-#  2007-10-14 - XMLified  - Holger Will  <holger@treebuilder.de>
-#######################################################################
-
-use utf8;
-
-use SL::Menu;
-
-use CGI::Carp qw(fatalsToBrowser);
-use Encode;
-use URI;
-
-use strict;
-
-1;
-
-# end of main
-
-sub display {
-  my $form     = $main::form;
-  my %myconfig = %main::myconfig;
-
-  my $charset = $::lx_office_conf{system}->{dbcharset} || 'ISO-8859-1';
-  my $callback            = $form->unescape($form->{callback});
-  $callback               = URI->new($callback)->rel($callback) if $callback;
-  $callback               = "login.pl?action=company_logo"      if $callback =~ /^(\.\/)?$/;
-
-  my $text    = $form->create_http_response('content_type' => 'text/xml',
-                                            'charset'      => $charset)
-    . qq|<?xml version="1.0" encoding="${charset}"?>
-<?xml-stylesheet href="xslt/xulmenu.xsl" type="text/xsl"?>
-<!DOCTYPE doc [
-<!ENTITY szlig "| . $::locale->{iconv_utf8}->convert('ß') . qq|">
-<!ENTITY auml "|  . $::locale->{iconv_utf8}->convert('ä') . qq|">
-<!ENTITY ouml "|  . $::locale->{iconv_utf8}->convert('ö') . qq|">
-<!ENTITY uuml "|  . $::locale->{iconv_utf8}->convert('ü') . qq|">
-]>
-
-<doc>
-<name>$myconfig{name}</name>
-<version>$form->{version}</version>
-<callback>$callback</callback>
-<db>$myconfig{dbname}</db>
-
-<favorites>|;
-
-  my $fav       = $myconfig{favorites};
-  my @favorites = split m/;/, $fav;
-  foreach (@favorites) {
-    $text .= qq|<link name="$_"/>|;
-  }
-
-  $text .= qq|</favorites>\n|
-    . qq|<menu>\n|
-    . acc_menu()
-    . qq|</menu>\n|
-    . qq|</doc>\n|;
-
-  print $text;
-}
-
-
-sub acc_menu {
-  my $form     = $main::form;
-
-  my $mainlevel = $form->{level};
-  $mainlevel =~ s/$mainlevel--//g;
-  my $menu = Menu->new("menu.ini");
-
-  $| = 1;
-
-  return print_menu($menu);
-}
-
-sub print_menu {
-  my ($menu, $parent, $depth) = @_;
-  my $html;
-
-  my $form     = $main::form;
-  my %myconfig = %main::myconfig;
-
-  die if ($depth * 1 > 5);
-
-  my @menuorder;
-
-  @menuorder = $menu->access_control(\%myconfig, $parent);
-
-  $parent .= "--" if ($parent);
-
-  foreach my $item (@menuorder) {
-    my $menu_item_id = $item;
-    substr($item, 0, length($parent)) = "";
-    next if (($item eq "") || ($item =~ /--/));
-
-    my $menu_item = $menu->{"${parent}${item}"};
-    my $menu_title = $::locale->text($item);
-    my $menu_text = $menu_title;
-
-    my $target = "main_window";
-    $target = $menu_item->{"target"} if ($menu_item->{"target"});
-
-    if ($menu_item->{"submenu"} || !defined($menu_item->{"module"}) ||
-        ($menu_item->{"module"} eq "menu.pl")) {
-
-      my $h = print_menu($menu, "${parent}${item}", $depth * 1 + 1)."\n";
-      if (!$parent) {
-        $html .= qq|<item name='${menu_text}' id='${menu_item_id}'>${h}</item>\n|;
-      } else {
-        $html .= qq|<item name='${menu_text}' id='${menu_item_id}'>${h}</item>\n|;
-      }
-    } else {
-      $html .= qq|<item |;
-      $html .= $menu->menuitem_XML(\%myconfig, $form, "${parent}$item",
-                                  { "title" => $menu_title,
-                                    "target" => $target });
-      $html .= qq| name="${menu_text}" id='${menu_item_id}'/>\n|;
-    }
-  }
-
-  return $html;
-}
index defff690f7fbe4c04ab44732c7436664b6c4f517..15c3b2d62f94dec624f94a6faa6a377e10641c3f 100644 (file)
@@ -133,7 +133,6 @@ writing the following are recognized:
 
   HTML
   URL@HTML
-  XUL
   Template/HTML
   Template/XML
   Template/LaTeX
index 5bfbe316451153552846b90842c2d313eab1c1bd..a4e06fecd5652b0baaf7a889836384087c1abe08 100644 (file)
@@ -809,7 +809,6 @@ $self->{texts} = {
   'Factor'                      => 'Faktor',
   'Factor missing!'             => 'Der Faktor fehlt.',
   'Falsches Datumsformat!'      => 'Falsches Datumsformat!',
-  'Favorites'                   => 'Favoriten (nur im XUL-Menü)',
   'Fax'                         => 'Fax',
   'Feb'                         => 'Feb',
   'February'                    => 'Februar',
@@ -1203,7 +1202,6 @@ $self->{texts} = {
   'Not done yet'                => 'Noch nicht fertig',
   'Not obsolete'                => 'Gültig',
   'Note'                        => 'Hinweis',
-  'Note: For Firefox 4 and later the menu XUL menu requires the addon <a href="#1">Remote XUL Manager</a> and the Lx-Office server to be white listed.' => 'Bitte beachten: Ab Firefox 4 benötigt das XUL Menü das Addon <a href="#1">Remote XUL Manager</a>, in dem der Lx-Office Server eingetragen sein muss.',
   'Note: Taxkeys must have a "valid from" date, and will not behave correctly without.' => 'Hinweis: Steuerschlüssel sind fehlerhaft ohne "Gültig ab" Datum',
   'Notes'                       => 'Bemerkungen',
   'Notes (translation for #1)'  => 'Bemerkungen (Übersetzung für #1)',
@@ -1916,7 +1914,6 @@ $self->{texts} = {
   'Top (CSS)'                   => 'Oben (mit CSS)',
   'Top (CSS) new'               => 'Oben (mit CSS, neu)',
   'Top (Javascript)'            => 'Oben (mit Javascript)',
-  'Top (XUL; only for Mozilla Firefox)' => 'Oben + links (XUL, nur Mozilla Firefox)',
   'Top 100'                     => 'Top 100',
   'Top 100 hinzufuegen'         => 'Top 100 hinzufügen',
   'Top Level'                   => 'Hauptartikelbezeichnung',
index eac151ef3efa13fe4acab7beaa9c3f04ce40baed..945b2392febd80e7a730ed5040024b9f851e4a75 100644 (file)
@@ -16,10 +16,6 @@ order=& ä ö ü Ä Ö Ü ß " < >
 order="
 "=&quot;
 
-[XUL]
-order=&
-&=&quot;
-
 [Template/HTML]
 order=< > \n
 <=&lt;
index c164b7e707cfa7d340ecf55f855993fe130cc777..365799921f637ac792df9b95c83eec132a76bd31 100644 (file)
@@ -750,7 +750,6 @@ $self->{texts} = {
   'Factor'                      => 'Faktor',
   'Factor missing!'             => 'Der Faktor fehlt.',
   'Falsches Datumsformat!'      => 'Falsches Datumsformat!',
-  'Favorites'                   => 'Favoriten (nur im XUL-Menü)',
   'Fax'                         => 'Fax',
   'Feb'                         => 'Feb',
   'February'                    => 'Februar',
@@ -1772,7 +1771,6 @@ $self->{texts} = {
   'Top (CSS)'                   => 'Oben (mit CSS)',
   'Top (CSS) new'               => 'Oben (mit CSS, neu)',
   'Top (Javascript)'            => 'Oben (mit Javascript)',
-  'Top (XUL; only for Mozilla Firefox)' => 'Oben + links (XUL, nur Mozilla Firefox)',
   'Top 100'                     => 'Top 100',
   'Top 100 hinzufuegen'         => 'Top 100 hinzufügen',
   'Top Level'                   => 'Hauptartikelbezeichnung',
index 48a67335080f1e2515abbc2d1fdbba6ca993d4fa..ceedcd25e87d132600fd75a81467c11a85a1a9d7 100644 (file)
@@ -16,10 +16,6 @@ order=& ä ö ü Ä Ö Ü ß " < >
 order="
 "=&quot;
 
-[XUL]
-order=&
-&=&quot;
-
 [Template/HTML]
 order=< > \n
 <=&lt;
index 5f658eda2b8ee60ae0bdeab725d4cb992bfd01b8..4fc79c12abc9296599dcc659aceeb178d11cc447 100644 (file)
@@ -754,7 +754,6 @@ $self->{texts} = {
   'Factor'                      => '',
   'Factor missing!'             => '',
   'Falsches Datumsformat!'      => '',
-  'Favorites'                   => '',
   'Fax'                         => '',
   'Feb'                         => '',
   'February'                    => '',
@@ -1779,7 +1778,6 @@ $self->{texts} = {
   'Top (CSS)'                   => '',
   'Top (CSS) new'               => '',
   'Top (Javascript)'            => '',
-  'Top (XUL; only for Mozilla Firefox)' => '',
   'Top 100'                     => '',
   'Top 100 hinzufuegen'         => '',
   'Top Level'                   => '',
index eac151ef3efa13fe4acab7beaa9c3f04ce40baed..945b2392febd80e7a730ed5040024b9f851e4a75 100644 (file)
@@ -16,10 +16,6 @@ order=& ä ö ü Ä Ö Ü ß " < >
 order="
 "=&quot;
 
-[XUL]
-order=&
-&=&quot;
-
 [Template/HTML]
 order=< > \n
 <=&lt;
index e74b8ec5e069bc0e719cec0d7f29f7b622e09551..ced2ab27cad2d046c16eb880839ff5e95ac20ab0 100644 (file)
@@ -1702,7 +1702,6 @@ $self->{texts} = {
   'Top (CSS)'                   => '',
   'Top (CSS) new'               => '',
   'Top (Javascript)'            => '',
-  'Top (XUL; only for Mozilla Firefox)' => '',
   'Top 100'                     => '',
   'Top 100 hinzufuegen'         => '',
   'Top Level'                   => '',
diff --git a/menuXML.pl b/menuXML.pl
deleted file mode 120000 (symlink)
index 385000d..0000000
+++ /dev/null
@@ -1 +0,0 @@
-am.pl
\ No newline at end of file
index 07c195710985bdfb66f3fcd4c6ecc98fbcbcbd0c..3fab3bd782adc7709389070b78cb53d96861f56e 100755 (executable)
@@ -4,7 +4,7 @@ for i in am dispatcher login; do
        rm $i.pl 2> /dev/null
        ln -s admin.pl $i.pl
 done
-for i in acctranscorrections amcvar amtemplates ap ar bankaccounts bp ca common cp ct datev dn do fu gl ic ir is menujs menunew menu menuv3 menuv4 menuXML oe pe projects rc rp sepa todo ustva wh vk; do
+for i in acctranscorrections amcvar amtemplates ap ar bankaccounts bp ca common cp ct datev dn do fu gl ic ir is menujs menunew menu menuv3 menuv4 oe pe projects rc rp sepa todo ustva wh vk; do
        rm $i.pl 2> /dev/null
        ln -s am.pl $i.pl
 done
diff --git a/sql/Pg-upgrade2-auth/remove_menustyle_xml.sql b/sql/Pg-upgrade2-auth/remove_menustyle_xml.sql
new file mode 100644 (file)
index 0000000..f1e3327
--- /dev/null
@@ -0,0 +1,8 @@
+-- @tag: remove_menustyle_xml
+-- @description: Menütyp "XUL/XML" 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 = 'xml'));
index ae2ed8005d31dde17f7bdd123bafe02e61389634..dc8ccab973a79acf27a484148a31caa7f43483b7 100644 (file)
          <option value="v3"[% IF menustyle_v3 %] selected[% END %]>[% 'Top (CSS)' | $T8 %]</option>
          <option value="v4"[% IF menustyle_v4 %] selected[% END %]>[% 'Top (CSS) new' | $T8 %]</option>
          <option value="neu"[% IF menustyle_neu %] selected[% END %]>[% 'Top (Javascript)' | $T8 %]</option>
-         <option value="xml"[% IF menustyle_xml %] selected[% END %]>[% 'Top (XUL; only for Mozilla Firefox)' | $T8 %]</option>
         </select>
        </td>
       </tr>
index ea5b41b220b6d6a2ae93c1a01ba74b7937ba14f9..3c26298baaa5d4cead512dfbed100152d35e47f4 100644 (file)
         <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>
-        <option value="xml"[% IF myconfig_menustyle == 'xml' %] selected[% END %]>[% 'Top (XUL; only for Mozilla Firefox)' | $T8 %]</option>
        </select>
       </td>
      </tr>
 
-     <tr valign="top">
-      <th align="right">[% 'Favorites' | $T8 %]</th>
-      <td><textarea name="favorites" rows="4" cols="50">[% HTML.escape(myconfig_favorites) %]</textarea></td>
-     </tr>
-
      <tr>
       <th align="right">[% 'Form details (second row)' | $T8 %]</th>
       <td>
      </tr>
     </table>
 
-    <p>[% LxERP.t8('Note: For Firefox 4 and later the menu XUL menu requires the addon <a href="#1">Remote XUL Manager</a> and the Lx-Office server to be white listed.', 'https://addons.mozilla.org/de/firefox/addon/remote-xul-manager/') %]</p>
-
     <br style="clear: left" />
    </div>
 
diff --git a/xslt/style1.css b/xslt/style1.css
deleted file mode 100644 (file)
index 21130e5..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-/* toolbar style */
-toolbar{
- -moz-appearance:none !important;
- background: url('../image/fade.png');
- border-bottom:1px solid #888;
-}
-
-/* sidebar styles */
-tree{
- -moz-appearance: none !important;
- border:0px solid black;
- padding-top:2px;
- background: white url('../image/fade.png') repeat-x;
-}
-
-#sidebar{
- background-image: url('../image/fade.png');
- max-width:450px;
- width:150px;
- font:12px Arial;
- margin:0px;
- border-right:1px solid #888;
-}
-
-/* menubar styles */
-menubar{
- -moz-appearance:none !important;
- background: url('../image/bg_titel.gif');
- border:0px;
-}
-
-menu, 
-menuitem{
- font:12px Arial;
-}
-
-menu menu{
- -moz-appearance: none !important;
- color:white;
- background: #35a;
-}
-
-menubar menu{
- -moz-appearance: none !important;
- color:white;
-}
-
-menubar menu:hover{
- -moz-appearance:none !important;
- background:#46d;
- color:yellow;
-}
-
-/* are splitter & iframe in use currently? */
-splitter{
- -moz-appearance:none !important;
- background:white url('../image/fade.png') no-repeat !important;
- border:0px;
-}
-iframe{
- border-left:1px solid #888 !important;
-}
diff --git a/xslt/xulmenu.xsl b/xslt/xulmenu.xsl
deleted file mode 100644 (file)
index a5c109c..0000000
+++ /dev/null
@@ -1,353 +0,0 @@
-<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-    xmlns:html="http://www.w3.org/1999/xhtml"
-    xmlns:svg="http://www.w3.org/2000/svg"
-    xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
-<xsl:output media-type="application/vnd.mozilla.xul+xml"/>
-<xsl:template match="/">
-  <xsl:choose>
-    <xsl:when test="system-property('xsl:vendor')='Transformiix'">
-
-      <xsl:apply-templates/>
-    </xsl:when>
-    <xsl:otherwise>
-      <xsl:apply-templates mode="html"/>
-    </xsl:otherwise>
-  </xsl:choose>
-</xsl:template>
-
-<xsl:template match="doc" mode="html">
-  <html xmlns="http://www.w3.org/1999/xhtml">
-    <head>
-      <meta http-equiv="refresh" content="5;url=menu.pl?action=display"/>
-    </head>
-    <body style="background-color: #eee; color: #333;">
-     <div style="margin-top: 2em; margin-left: auto; margin-right: auto; border: solid 0.1em #f88; width: 30em; background-color:#fff; font-size: 0.8em;font-family: Verdana, Arial, Helvetica; padding: 2em;">
-      <h2>XUL-Men&#252; ist aktiviert</h2>
-      <h3>Nur der Firefox-Browser mag das XUL-Men&#252;.</h3>
-      Wir schalten auf die kompatiblere <a href="menu.pl?action=display">HTML-Variante</a> um.
-      <h3>Only the Firefox-Browser likes the XUL-Menu.</h3>
-      We switch to the <a href="menu.pl?action=display">HTML-Version</a> now.      
-     </div>
-    </body>
-  </html>
-</xsl:template>
-
-<!-- main document structure -->
-<!-- ******************************************************************* -->
-<xsl:template match="doc">
-<xsl:processing-instruction name="xml-stylesheet">href="xslt/style1.css" type="text/css"</xsl:processing-instruction>
-  <xsl:variable name="callback"><xsl:value-of select='/doc/callback'/></xsl:variable>
-  <xsl:variable name="title">
-      LX-Office Version <xsl:value-of select='/doc/version'/>
-      - <xsl:value-of select='/doc/name'/>
-      - <xsl:value-of select='/doc/db'/>
-    </xsl:variable>
-   <!-- <xsl:call-template name="style"/>-->
-  <window title="{$title}">
-  <html:title/>
-    <xsl:call-template name="script"/>
-    <toolbox>
-      <xsl:apply-templates select="menu"/>
-      <xsl:apply-templates select="favorites"/>
-    </toolbox>
-    <hbox flex="1">
-      <vbox id="sidebar" style="overflow:hidden">
-
-        <xsl:apply-templates mode="tree" select="menu"/>
-
-        <xsl:call-template name="ArtikelSuche"/>
-        <!--<iframe src="xslt/trans.xml" flex="1" id="uhr"/>-->
-      </vbox>
-      <splitter state="open" collapse="before" resizeafter="farthest"><grippy/></splitter>
-      <browser id="main_window" type="content" src="{$callback}" flex="1" style="border:0px"/>
-    </hbox>
-  </window>
-</xsl:template>
-<!-- ******************************************************************* -->
-
-
-<!-- the top menu -->
-<!-- ******************************************************************* -->
-<xsl:template match="menu"><menubar id="sample-menubar" flex="1"><xsl:apply-templates/></menubar></xsl:template>
-<!-- ******************************************************************* -->
-
-
-<!-- favorites toolbar -->
-<!-- ******************************************************************* -->
-<xsl:template match="favorites">
-  <toolbar id="favoriten" >
-    <xsl:call-template name="specialbuttons"/>
-    <toolbarseparator/>
-    <xsl:for-each select="link">
-      <xsl:variable name="name" select="@name"/>
-      <xsl:choose>
-        <xsl:when test="/*//item[@id=$name]/item">
-          <toolbarbutton type="menu" label="{$name}" tooltiptext="A simple popup" link="{/*//item[@id=$name]/@link}" oncommand="openLink(event)">
-            <image src="image/icons/24x24/{/*//item[@id=$name]/@id}.png" width="24" height="24" />
-            <menupopup id="file-popup">
-              <xsl:apply-templates select="/*//item[@id=$name]/*"/>
-            </menupopup>
-          </toolbarbutton>
-        </xsl:when>
-        <xsl:otherwise>
-          <toolbarbutton label="{$name}" tooltiptext="A simple popup" link="{/*//item[@id=$name]/@link}" oncommand="openLink(event)" lxid="{/*//item[@id=$name]/@id}">
-            <image src="image/icons/24x24/{/*//item[@id=$name]/@id}.png" width="24" height="24" />
-          </toolbarbutton>
-        </xsl:otherwise>
-      </xsl:choose>
-    </xsl:for-each>
-    <toolbarspring flex="1"/>
-    <xsl:call-template name="searchbox"/>
-
-  </toolbar>
-</xsl:template>
-<!-- ******************************************************************* -->
-
-
-<!-- template for the top menu items
-*********************************************************************************  -->
-<xsl:template match="item">
- <xsl:choose>
-  <xsl:when test="item">
-   <menu id="{@name}_menu" label="{@name}" class="menu-iconic" image="image/icons/16x16/{@id}.png">
-    <menupopup id="file-popup">
-     <xsl:apply-templates/>
-    </menupopup>
-   </menu>
-  </xsl:when>
-  <xsl:otherwise>
-   <menuitem target="{@target}" link="{@link}" label="{@name}" oncommand="openLink(event)" class="menuitem-iconic" image="image/icons/16x16/{@id}.png" lxid="{@id}" onclick="openLinkNewTab(event)"/>
-  </xsl:otherwise>
- </xsl:choose>
-</xsl:template>
-<!-- ***************************************************************************  -->
-
-
-<!-- templates for the treeview
-**********************************************************************************   -->
-<xsl:template match="menu" mode="tree">
-<toolbar>
-<label value="Hauptmen&#252;"/>
-</toolbar>
-  <tree flex="1" onselect="openTreeLink(event)" style="margin:0px;" hidecolumnpicker="true">
-    <treecols>
-        <treecol hideheader="true" id="menuepunkt"  primary="true" flex="1" />
-    </treecols>
-    <treechildren>
-      <xsl:apply-templates mode="tree"/>
-    </treechildren>
-  </tree>
-</xsl:template>
-
-<xsl:template match="item" mode="tree">
-  <xsl:choose>
-    <xsl:when test="item">
-        <treeitem container="true" open="false">
-          <treerow>
-            <treecell label="{@name}" src="image/icons/16x16/{@id}.png"/>
-          </treerow>
-          <treechildren>
-            <xsl:apply-templates mode="tree"/>
-          </treechildren>
-        </treeitem>
-    </xsl:when>
-    <xsl:otherwise>
-    <treeitem link="{@link}">
-      <treerow>
-        <treecell label="{@name}" src="image/icons/16x16/{@id}.png"/>
-      </treerow>
-    </treeitem>
-    </xsl:otherwise>
-  </xsl:choose>
-</xsl:template>
-<!-- ***************************************************************************  -->
-
-
-<!-- template fuer die uhr
-********************************************************************************  -->
-<xsl:template name="uhr">
-
-</xsl:template>
-<!-- ***************************************************************************  -->
-
-
-<!-- scripts
-********************************************************************************  -->
-<xsl:template name="script">
-  <html:script type="text/ecmascript">
-
-  function openLink(event)
-    {
-    var path=event.target.getAttribute("link")
-    if(event.target.getAttribute("target")=="_top")
-      {
-        window.location=path
-      }
-      else
-      {
-        var bf=document.getElementById("main_window")
-        bf.setAttribute("src",path)
-      }
-    }
-
-  function openLinkNewTab(event)
-    {
-    if(event.button!=1) return
-    var path=event.target.getAttribute("link")
-    if(event.target.getAttribute("target")=="_top")
-      {
-        window.location=path
-      }
-      else
-      {
-window.open(path,"_new","")
-
-      }
-    }
-
-
-  function openLinkNewWindow(event)
-    {
-      var path=event.target.getAttribute("link")
-      window.open(path,"_blank","")
-    }
-
-  function openTreeLink(event)
-    {
-      var tree=event.target
-      var selIndex=tree.currentIndex
-      var item=tree.view.getItemAtIndex(selIndex)
-      var link=item.getAttribute("link")
-      if(link) document.getElementById("main_window").setAttribute("src",link)
-    }
-
-  function updateClock()
-    {
-      var d= new Date()
-      var sec=d.getSeconds()
-      var min=d.getMinutes()
-      var std=(d.getHours() % 12 ) + min/60
-      document.getElementById("std").setAttribute("transform","rotate("+std*30+",20,20)")
-      document.getElementById("min").setAttribute("transform","rotate("+min*6+",20,20)")
-      document.getElementById("sec").setAttribute("transform","rotate("+sec*6+",20,20)")
-    }
-
-  function PrintW()
-    {
-      document.getElementById("main_window").contentWindow.print()
-    }
-
-  function doSearch(){
-  var t=document.getElementById("searchboxtext").value
-  document.getElementById("desc").value=t
-  document.getElementById("sb").click()
-
-  }
-  function checkEnter(event){
-  if(event.keyCode==13) doSearch()
-  }
-  //setInterval("updateClock()",1000)
-  function MyGoBack(){
-document.getElementById("main_window").contentWindow.history.back()
-}
-  function MyGoForward(){
-document.getElementById("main_window").contentWindow.history.forward()
-}
-  </html:script>
-</xsl:template>
-<!-- ***************************************************************************  -->
-
-<!-- special buttons ( logout , print, open new window )
-The tooltips, like tooltiptext="Neues Fenster", do not appear in my Firefox/Prism browsers. Why?
-https://developer.mozilla.org/en/XUL_Tutorial/Popup_Menus
-https://developer.mozilla.org/en/XUL/Attribute/tooltiptext
-****************************************************************************  -->
-<xsl:template name="specialbuttons">
-    <toolbarbutton image="image/icons/24x24/Batch Printing.png" oncommand="PrintW(event)" tooltiptext="Drucken"/>
-    <toolbarbutton image="image/icons/24x24/Neues Fenster.png" tooltiptext="Neues Fenster" link="menuXML.pl?action=display" target="_top" oncommand="openLinkNewWindow(event)"/>
-    <toolbarbutton image="image/icons/24x24/Program--Logout.png" link="{/*//item[@id='Program--Logout']/@link}" target="_top" oncommand="openLink(event)" tooltiptext="Abmelden"/>
-  <toolbarseparator/>
-    <toolbarbutton image="image/icons/24x24/leftarrow_24.png" tooltiptext="Schritt zurück" oncommand="MyGoBack()"/>
-    <toolbarbutton image="image/icons/24x24/rightarrow_24.png" tooltiptext="Schritt vor" oncommand="MyGoForward()"/>
-</xsl:template>
-<!-- ***************************************************************************  -->
-
-
-<!-- searchbox
-****************************************************************************  -->
-<xsl:template name="searchbox">
-<vbox style="padding-top:2px">
-  <hbox>
-    <textbox style="font-size:11px;margin-right:0px" width="200px" id="searchboxtext" onkeypress="checkEnter(event)"/> 
-    <toolbarbutton type="toolbar" width="20" height="20" style="padding:5px !important" image="image/icons/16x16/CRM--Schnellsuche.png" flex="0" oncommand="doSearch()"/>
-</hbox>
-
-</vbox>
-</xsl:template>
-<!-- ***************************************************************************  -->
-
-
-<!-- hidden form for article search
-****************************************************************************  -->
-<xsl:template name="ArtikelSuche">
-  <form id="aform" method="post" action="ic.pl" xmlns="http://www.w3.org/1999/xhtml" target="main_window" style="font-family:arial;font-size:12px;display:none">
-  <input name="partnumber" size="20"/>
-  <input name="description" flex="1" id="desc"/>
-  <input name="partsgroup" size="20"/>
-  <input name="make" size="20"/>
-  <input class="submit" type="submit" name="action" value="Weiter" id="sb"/>
-  <div style="display:none" >
-  <input class="submit" type="submit" name="action" value="Top 100"/>
-    <input type="hidden" name="serialnumber" size="20"/>
-    <input type="hidden" name="ean" size="20"/>
-    <input type="hidden" name="searchitems" value="part"/>
-    <input type="hidden" name="title" value="Waren"/>
-    <input type="hidden" name="revers" value="0"/>
-    <input type="hidden" name="lastsort" value=""/>
-    <input type="hidden" name="model" size="20"/>
-    <input type="hidden" name="drawing" size="20"/>
-    <input type="hidden" name="microfiche" size="20"/>
-    <input  name="itemstatus" class="radio" type="radio" value="active" checked="true"/>
-    <input name="itemstatus" class="radio" type="radio" value="onhand"/>
-    <input  name="itemstatus" class="radio" type="radio" value="short"/>
-    <input  name="itemstatus" class="radio" type="radio" value="obsolete"/>
-    <input  name="itemstatus" class="radio" type="radio" value="orphaned"/>
-    <input  name="bought" class="checkbox" type="checkbox" value="1"/>
-    <input  name="sold" class="checkbox" type="checkbox" value="1"/>
-    <input  name="onorder" class="checkbox" type="checkbox" value="1"/>
-    <input  name="ordered" class="checkbox" type="checkbox" value="1"/>
-    <input  name="rfq" class="checkbox" type="checkbox" value="1"/>Anfrage
-    <input  name="quoted" class="checkbox" type="checkbox" value="1"/>Angeboten
-    <input type="hidden" name="transdatefrom" id="transdatefrom" size="11" title="dd.mm.yy"/>
-    <input  type="button" name="transdatefrom" id="trigger1" value="?"/>
-    <input name="transdateto" id="transdateto" size="11" title="dd.mm.yy"/>
-    <input type="button" name="transdateto" id="trigger2" value="?"/>
-    <input name="l_partnumber" class="checkbox" type="checkbox" value="Y" checked="true"/>Artikelnummer
-    <input name="l_description" class="checkbox" type="checkbox" value="Y" checked="true"/>Artikelbeschreibung
-    <input name="l_serialnumber" class="checkbox" type="checkbox" value="Y"/>Seriennummer
-    <input name="l_unit" class="checkbox" type="checkbox" value="Y" checked="true"/>Maszeinheit
-    <input name="l_listprice" class="checkbox" type="checkbox" value="Y"/>Listenpreis
-    <input name="l_sellprice" class="checkbox" type="checkbox" value="Y" checked="true"/>Verkaufspreis
-    <input name="l_lastcost" class="checkbox" type="checkbox" value="Y" checked="true"/>Einkaufspreis
-    <input name="l_linetotal" class="checkbox" type="checkbox" value="Y" checked="true"/>Zeilensumme
-    <input name="l_priceupdate" class="checkbox" type="checkbox" value="Y"/>Erneuert am
-    <input name="l_bin" class="checkbox" type="checkbox" value="Y"/>Lagerplatz
-    <input name="l_rop" class="checkbox" type="checkbox" value="Y"/>Mindestlagerbestand
-    <input name="l_weight" class="checkbox" type="checkbox" value="Y"/>Gewicht
-    <input name="l_image" class="checkbox" type="checkbox" value="Y"/>Grafik
-    <input name="l_drawing" class="checkbox" type="checkbox" value="Y"/>Zeichnung
-    <input name="l_microfiche" class="checkbox" type="checkbox" value="Y"/>Mikrofilm
-    <input name="l_partsgroup" class="checkbox" type="checkbox" value="Y"/>Warengruppe
-    <input name="l_subtotal" class="checkbox" type="checkbox" value="Y"/>Zwischensumme
-    <input name="l_soldtotal" class="checkbox" type="checkbox" value="Y"/>Verkaufte Anzahl
-    <input name="l_deliverydate" class="checkbox" type="checkbox" value="Y"/>Lieferdatum
-    <input type="hidden" name="nextsub" value="generate_report"/>
-    <input type="hidden" name="revers" value="0"/>
-    <input type="hidden" name="lastsort" value=""/>
-    <input type="hidden" name="sort" value="description"/>
-    <input type="hidden" name="ndxs_counter" value="0"/>
-  </div>
-  </form>
-</xsl:template>
-<!-- ***************************************************************************  -->
-</xsl:stylesheet>