--- /dev/null
+#=====================================================================
+# 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;
+}
--- /dev/null
+<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&login={/doc/login}&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