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 ff75921..4cf2bd6 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 1f542db..b3d47bc 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 bd4fcd9..d361a3d 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 38d87ad..5393c47 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 18bf069..640299d 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 1f96947..665cb91 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 defff69..15c3b2d 100644 (file)
@@ -133,7 +133,6 @@ writing the following are recognized:
 
   HTML
   URL@HTML
-  XUL
   Template/HTML
   Template/XML
   Template/LaTeX
index 5bfbe31..a4e06fe 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 eac151e..945b239 100644 (file)
@@ -16,10 +16,6 @@ order=& ä ö ü Ä Ö Ü ß " < >
 order="
 "=&quot;
 
-[XUL]
-order=&
-&=&quot;
-
 [Template/HTML]
 order=< > \n
 <=&lt;
index c164b7e..3657999 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 48a6733..ceedcd2 100644 (file)
@@ -16,10 +16,6 @@ order=& ä ö ü Ä Ö Ü ß " < >
 order="
 "=&quot;
 
-[XUL]
-order=&
-&=&quot;
-
 [Template/HTML]
 order=< > \n
 <=&lt;
index 5f658ed..4fc79c1 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 eac151e..945b239 100644 (file)
@@ -16,10 +16,6 @@ order=& ä ö ü Ä Ö Ü ß " < >
 order="
 "=&quot;
 
-[XUL]
-order=&
-&=&quot;
-
 [Template/HTML]
 order=< > \n
 <=&lt;
index e74b8ec..ced2ab2 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 07c1957..3fab3bd 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 ae2ed80..dc8ccab 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 ea5b41b..3c26298 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>