XML basiertes Menue, siehe Bug #771
authorHolger Will <holger@treebuilder.de>
Wed, 31 Oct 2007 17:02:57 +0000 (17:02 +0000)
committerHolger Will <holger@treebuilder.de>
Wed, 31 Oct 2007 17:02:57 +0000 (17:02 +0000)
SL/Menu.pm
SL/User.pm
bin/mozilla/login.pl
bin/mozilla/menuXML.pl [new file with mode: 0644]
locale/de/menuXML [new file with mode: 0755]
menuXML.pl [new symlink]
templates/webpages/am/config_de.html
xslt/style1.css [new file with mode: 0644]
xslt/xulmenu.xsl [new file with mode: 0644]

index 89a6ffd..7d07153 100644 (file)
@@ -164,6 +164,64 @@ sub menuitem_v3 {
   return $str;
 }
 
+sub menuitem_XML {
+  $main::lxdebug->enter_sub();
+
+  my ($self, $myconfig, $form, $item, $other) = @_;
+
+  my $module = $form->{script};
+  my $action = "section_menu";
+  my $target = "";
+
+  if ($self->{$item}{module}) {
+    $module = $self->{$item}{module};
+  }
+  if ($self->{$item}{action}) {
+    $action = $self->{$item}{action};
+  }
+  if ($self->{$item}{target}) {
+    $target = $self->{$item}{target};
+  }
+
+  my $level = $form->escape($item);
+
+  my $str = qq| link="$module?action=| . $form->escape($action) .
+    qq|&amp;level=| . $form->escape($level);
+  map({ $str .= "&amp;${_}=" . $form->escape($form->{$_}); } qw(login password));
+
+  my @vars = qw(module action target href);
+
+  if ($self->{$item}{href}) {
+    $str  = qq| link=$self->{$item}{href}|;
+    @vars = qw(module target href);
+  }
+
+  map { delete $self->{$item}{$_} } @vars;
+
+  # add other params
+  foreach my $key (keys %{ $self->{$item} }) {
+    $str .= "&amp;" . $form->escape($key, 1) . "=";
+    ($value, $conf) = split(/=/, $self->{$item}{$key}, 2);
+    $value = $myconfig->{$value} . "/$conf" if ($conf);
+    $str .= $form->escape($value, 1);
+  }
+
+  $str .= '"';
+
+
+
+  if ($other) {
+    foreach my $key (keys(%{$other})) {
+      $str .= qq| ${key}="| . $form->quote($other->{$key}) . qq|"|;
+    }
+  }
+
+
+  $main::lxdebug->leave_sub();
+
+  return $str;
+}
+
 sub menuitemNew {
   my ($self, $myconfig, $form, $item) = @_;
 
index 99c5319..13bde36 100644 (file)
@@ -224,6 +224,7 @@ sub login {
       my $menufile =
         $self->{"menustyle"} eq "v3" ? "menuv3.pl" :
         $self->{"menustyle"} eq "neu" ? "menunew.pl" :
+        $self->{"menustyle"} eq "xml" ? "menuXML.pl" :
         "menu.pl";
 
       print($form->parse_html_template2("dbupgrade/footer",
@@ -1106,7 +1107,7 @@ sub config_vars {
     printer role sid signature stylesheet tel templates vclimit angebote
     bestellungen rechnungen anfragen lieferantenbestellungen einkaufsrechnungen
     taxnumber co_ustid duns menustyle template_format default_media
-    default_printer_id copies show_form_details);
+    default_printer_id copies show_form_details favorites);
 
   $main::lxdebug->leave_sub();
 
index 72032f3..7623bff 100644 (file)
@@ -156,6 +156,9 @@ sub login {
   } elsif ($user->{menustyle} eq "neu") {
     $form->{callback} =
       "menunew.pl?login=$form->{login}&password=$form->{password}&action=display";
+  } elsif ($user->{menustyle} eq "xml") {
+    $form->{callback} =
+      "menuXML.pl?login=$form->{login}&password=$form->{password}&action=display";
   } else {
     $form->{callback} =
       "menu.pl?login=$form->{login}&password=$form->{password}&action=display";
diff --git a/bin/mozilla/menuXML.pl b/bin/mozilla/menuXML.pl
new file mode 100644 (file)
index 0000000..84fabbb
--- /dev/null
@@ -0,0 +1,140 @@
+#=====================================================================
+# 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>
+#######################################################################
+
+$menufile = "menu.ini";
+use SL::Menu;
+
+use CGI::Carp qw(fatalsToBrowser);
+use Encode;
+1;
+
+# end of main
+
+sub display {
+  print "Content-type: text/xml; charset=iso-8859-1\n\n";
+  print qq|<?xml version="1.0" encoding="iso-8859-1"?>\n|;
+  print qq|<?xml-stylesheet href="xslt/xulmenu.xsl" type="text/xsl"?>\n|;
+  print qq|<!DOCTYPE doc [
+<!ENTITY szlig "ß">
+]>|;
+  print qq|<doc>|;
+  print qq|<login>|;
+  print $form->{login};
+  print qq|</login>|;
+  print qq|<password>|;
+  print $form->{password};
+  print qq|</password>|;
+  print qq|<name>|;
+  print %myconfig->{name};
+  print qq|</name>|;
+  print qq|<db>|;
+  print %myconfig->{dbname};
+  print qq|</db>|;
+  print qq|<favorites>|;
+  my $fav=%myconfig->{favorites};
+  my @favorites = split(/;/, $fav);
+  foreach (@favorites) {
+    print qq|<link name="$_"/>|;
+  }
+  print qq|</favorites>|;
+  print qq|<menu>|;
+my $isoencodedmenu=&acc_menu($menu);
+ print encode("iso-8859-1",$isoencodedmenu );
+
+  print qq|</menu>|;
+  print qq|</doc>|;
+  
+}
+
+
+sub acc_menu {
+  $locale = Locale->new($language, "menu");
+
+  $mainlevel = $form->{level};
+  $mainlevel =~ s/$mainlevel--//g;
+  my $menu = new Menu "$menufile";
+
+  $| = 1;
+
+  return print_menu($menu);
+}
+
+sub print_menu {
+  my ($menu, $parent, $depth) = @_;
+  my $html;
+
+  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;
+}
diff --git a/locale/de/menuXML b/locale/de/menuXML
new file mode 100755 (executable)
index 0000000..821b8ec
--- /dev/null
@@ -0,0 +1,11 @@
+$self->{texts} = {
+};
+
+$self->{subs} = {
+  'acc_menu'                    => 'acc_menu',
+  'clock_line'                  => 'clock_line',
+  'display'                     => 'display',
+  'print_menu'                  => 'print_menu',
+};
+
+1;
diff --git a/menuXML.pl b/menuXML.pl
new file mode 120000 (symlink)
index 0000000..385000d
--- /dev/null
@@ -0,0 +1 @@
+am.pl
\ No newline at end of file
index edfcccf..052204c 100644 (file)
       <label for="menustyle_neu">Oben (mit Javascript)</label>
       <input name="menustyle" id="menustyle_old" type="radio" class="radio" value="old" [% IF menustyle_old %]checked[% END %]>&nbsp;
       <label for="menustyle_old">Alt (seitlich)</label>
+      <input name="menustyle" id="menustyle_xml" type="radio" class="radio" value="xml" [% IF menustyle_xml %]checked[% END %]>&nbsp;
+      <label for="menustyle_xml">XML (XUL,...)</label>
      </td>
     </tr>
 
+    <tr valign="top">
+     <th align="right">Favoriten</th>
+     <td><textarea name="favorites" rows="4" cols="50">[% HTML.escape(myconfig_favorites) %]</textarea></td>
+    </tr>
+
     <tr>
      <th align="right">Formulardetails (zweite Positionszeile)</th>
      <td>
diff --git a/xslt/style1.css b/xslt/style1.css
new file mode 100644 (file)
index 0000000..81517d2
--- /dev/null
@@ -0,0 +1,14 @@
+treechildren::-moz-tree-row(hover){background-color:#eef !important;}
+tree{-moz-appearance: none !important;border:0px solid black !important;padding-top:2px;background: white}
+treechildren::-moz-tree-column{background: white}
+
+toolbar{-moz-appearance: none !important;background:lavender !important;border-bottom:1px solid black;border-top:1px solid black;}
+menubar{-moz-appearance: none !important;background:darkblue !important;border:0px}
+splitter{-moz-appearance: none !important;background:lavender !important;border:0px solid black !important}
+iframe{border-left:1px solid black !important}
+#sidebar{background:grey;max-width:450px;width:150px;font-family:arial;font-size:12px;margin:0px;border-right:1px solid black}
+menubar menu{-moz-appearance: none !important;color:white !important;}
+menubar menu:hover{-moz-appearance: none;background:lightblue !important}
+menu menu{-moz-appearance: none !important;color:black !important;}
+menu menu:hover{-moz-appearance: none;background:lightgrey !important}
+toolbarbutton{padding:5px !important;margin:2px !important}
\ No newline at end of file
diff --git a/xslt/xulmenu.xsl b/xslt/xulmenu.xsl
new file mode 100644 (file)
index 0000000..3a7df20
--- /dev/null
@@ -0,0 +1,328 @@
+<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:template match="/">
+  <xsl:apply-templates/>
+</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>
+  <window>
+    <html:title>
+      LX-Office Version <xsl:value-of select='/doc/version'/> 
+      - <xsl:value-of select='/doc/name'/> 
+      - <xsl:value-of select='/doc/db'/>
+    </html:title>
+   <!-- <xsl:call-template name="style"/>-->
+    <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"/>
+
+        <xsl:call-template name="ArtikelSuche"/>
+        <!--<iframe src="xslt/trans.xml" flex="1" id="uhr"/>-->
+      </vbox>
+      <splitter/>
+          <html:iframe id="main_window" src="{/*//item[@id='Programm--Version']/@link}" flex="1" style="border:0px"/>
+    </hbox>
+  </window>
+</xsl:template>
+<!-- ******************************************************************* -->
+
+
+<!-- the top menu -->
+<!-- ******************************************************************* -->
+<xsl:template match="menu">
+<!--<div style="background:grey">-->
+  <menubar id="sample-menubar">
+    <xsl:apply-templates/>
+  </menubar>
+<!--</div>-->
+</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="Hauptmenue"/>
+</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 für 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.getElementsByTagName("iframe").item(0)
+        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,"_new","")
+    }
+  
+  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)
+  
+  </html:script>
+</xsl:template>
+<!-- ***************************************************************************  -->
+
+<!-- special buttons ( logout , print, open new window )
+****************************************************************************  -->
+<xsl:template name="specialbuttons">
+  <toolbarbutton image="image/icons/24x24/Batch Printing.png" tooltiptext="hallo" oncommand="PrintW(event)"/>
+  <toolbarbutton image="image/icons/24x24/Neues Fenster.png" tooltip="Neues Fenster" link="menuXML.pl?action=display&amp;login={/doc/login}&amp;password={/doc/password}" target="_top" oncommand="openLinkNewWindow(event)"/>
+  <toolbarbutton label="Logout" link="{/*//item[@id='Programm--Logout']/@link}" target="_top" oncommand="openLink(event)">
+    <image src="image/icons/24x24/Programm--Logout.png" width="24" height="24" />
+  </toolbarbutton>
+</xsl:template>
+<!-- ***************************************************************************  -->
+
+
+<!-- searchbox
+****************************************************************************  -->
+<xsl:template name="searchbox">
+<vbox style="padding-top:5px">
+  <hbox>
+
+    <textbox height="22px" style="font-size:12px;margin-right:0px" width="200px" id="searchboxtext" onkeypress="checkEnter(event)"/>
+<toolbarbutton type="toolbar" width="20" height="20" style="padding:5px !important"
+image="xslt/images/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"/>Maßeinheit
+    <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="login" value="{/doc/login}"/>
+    <input type="hidden" name="password" value="{/doc/password}"/>
+    <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>
\ No newline at end of file