0263d042e9fd314b9b693082ee0f6c899f3e3de2
[kivitendo-erp.git] / xslt / xulmenu.xsl
1 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
2     xmlns:html="http://www.w3.org/1999/xhtml"
3     xmlns:svg="http://www.w3.org/2000/svg"
4     xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
5 <xsl:output media-type="application/vnd.mozilla.xul+xml"/>
6 <xsl:template match="/">
7   <xsl:choose>
8     <xsl:when test="system-property('xsl:vendor')='Transformiix'">
9
10       <xsl:apply-templates/>
11     </xsl:when>
12     <xsl:otherwise>
13       <xsl:apply-templates mode="html"/>
14     </xsl:otherwise>
15   </xsl:choose>
16 </xsl:template>
17
18 <xsl:template match="doc" mode="html">
19   <html xmlns="http://www.w3.org/1999/xhtml">
20     <head>
21       <meta http-equiv="refresh" content="2;url=menuv3.pl?action=display"/>
22     </head>
23     <body>
24 Ihr Browser unterstuetzt kein XUL!<br/>
25 wenn die automatische weiterleitung nicht funktioniert klicken sie <a href="menuv3.pl?action=display">hier</a>
26     </body>
27   </html>
28 </xsl:template>
29
30 <!-- main document structure -->
31 <!-- ******************************************************************* -->
32 <xsl:template match="doc">
33 <xsl:processing-instruction name="xml-stylesheet">href="xslt/style1.css" type="text/css"</xsl:processing-instruction>
34   <xsl:variable name="callback"><xsl:value-of select='/doc/callback'/></xsl:variable>
35   <xsl:variable name="title">
36       LX-Office Version <xsl:value-of select='/doc/version'/>
37       - <xsl:value-of select='/doc/name'/>
38       - <xsl:value-of select='/doc/db'/>
39     </xsl:variable>
40    <!-- <xsl:call-template name="style"/>-->
41   <window title="{$title}">
42   <html:title/>
43     <xsl:call-template name="script"/>
44     <toolbox>
45       <xsl:apply-templates select="menu"/>
46       <xsl:apply-templates select="favorites"/>
47     </toolbox>
48     <hbox flex="1">
49       <vbox id="sidebar" style="overflow:hidden">
50
51         <xsl:apply-templates mode="tree" select="menu"/>
52
53         <xsl:call-template name="ArtikelSuche"/>
54         <!--<iframe src="xslt/trans.xml" flex="1" id="uhr"/>-->
55       </vbox>
56       <splitter state="open" collapse="before" resizeafter="farthest"><grippy/></splitter>
57           <html:iframe id="main_window" src="{$callback}" flex="1" style="border:0px"/>
58     </hbox>
59   </window>
60 </xsl:template>
61 <!-- ******************************************************************* -->
62
63
64 <!-- the top menu -->
65 <!-- ******************************************************************* -->
66 <xsl:template match="menu"><menubar id="sample-menubar" flex="1"><xsl:apply-templates/></menubar></xsl:template>
67 <!-- ******************************************************************* -->
68
69
70 <!-- favorites toolbar -->
71 <!-- ******************************************************************* -->
72 <xsl:template match="favorites">
73   <toolbar id="favoriten" >
74     <xsl:call-template name="specialbuttons"/>
75     <toolbarseparator/>
76     <xsl:for-each select="link">
77       <xsl:variable name="name" select="@name"/>
78       <xsl:choose>
79         <xsl:when test="/*//item[@id=$name]/item">
80           <toolbarbutton type="menu" label="{$name}" tooltiptext="A simple popup" link="{/*//item[@id=$name]/@link}" oncommand="openLink(event)">
81             <image src="image/icons/24x24/{/*//item[@id=$name]/@id}.png" width="24" height="24" />
82             <menupopup id="file-popup">
83               <xsl:apply-templates select="/*//item[@id=$name]/*"/>
84             </menupopup>
85           </toolbarbutton>
86         </xsl:when>
87         <xsl:otherwise>
88           <toolbarbutton label="{$name}" tooltiptext="A simple popup" link="{/*//item[@id=$name]/@link}" oncommand="openLink(event)" lxid="{/*//item[@id=$name]/@id}">
89             <image src="image/icons/24x24/{/*//item[@id=$name]/@id}.png" width="24" height="24" />
90           </toolbarbutton>
91         </xsl:otherwise>
92       </xsl:choose>
93     </xsl:for-each>
94     <toolbarspring flex="1"/>
95     <xsl:call-template name="searchbox"/>
96
97   </toolbar>
98 </xsl:template>
99 <!-- ******************************************************************* -->
100
101
102 <!-- template for the top menu items
103 *********************************************************************************  -->
104 <xsl:template match="item">
105  <xsl:choose>
106   <xsl:when test="item">
107    <menu id="{@name}_menu" label="{@name}" class="menu-iconic" image="image/icons/16x16/{@id}.png">
108     <menupopup id="file-popup">
109      <xsl:apply-templates/>
110     </menupopup>
111    </menu>
112   </xsl:when>
113   <xsl:otherwise>
114    <menuitem target="{@target}" link="{@link}" label="{@name}" oncommand="openLink(event)" class="menuitem-iconic" image="image/icons/16x16/{@id}.png" lxid="{@id}" onclick="openLinkNewTab(event)"/>
115   </xsl:otherwise>
116  </xsl:choose>
117 </xsl:template>
118 <!-- ***************************************************************************  -->
119
120
121 <!-- templates for the treeview
122 **********************************************************************************   -->
123 <xsl:template match="menu" mode="tree">
124 <toolbar>
125 <label value="Hauptmenue"/>
126 </toolbar>
127   <tree flex="1" onselect="openTreeLink(event)" style="margin:0px;" hidecolumnpicker="true">
128     <treecols>
129         <treecol hideheader="true" id="menuepunkt"  primary="true" flex="1" />
130     </treecols>
131     <treechildren>
132       <xsl:apply-templates mode="tree"/>
133     </treechildren>
134   </tree>
135 </xsl:template>
136
137 <xsl:template match="item" mode="tree">
138   <xsl:choose>
139     <xsl:when test="item">
140         <treeitem container="true" open="false">
141           <treerow>
142             <treecell label="{@name}" src="image/icons/16x16/{@id}.png"/>
143           </treerow>
144           <treechildren>
145             <xsl:apply-templates mode="tree"/>
146           </treechildren>
147         </treeitem>
148     </xsl:when>
149     <xsl:otherwise>
150     <treeitem link="{@link}">
151       <treerow>
152         <treecell label="{@name}" src="image/icons/16x16/{@id}.png"/>
153       </treerow>
154     </treeitem>
155     </xsl:otherwise>
156   </xsl:choose>
157 </xsl:template>
158 <!-- ***************************************************************************  -->
159
160
161 <!-- template fuer die uhr
162 ********************************************************************************  -->
163 <xsl:template name="uhr">
164
165 </xsl:template>
166 <!-- ***************************************************************************  -->
167
168
169 <!-- scripts
170 ********************************************************************************  -->
171 <xsl:template name="script">
172   <html:script type="text/ecmascript">
173
174   function openLink(event)
175     {
176     var path=event.target.getAttribute("link")
177     if(event.target.getAttribute("target")=="_top")
178       {
179         window.location=path
180       }
181       else
182       {
183         var bf=document.getElementsByTagNameNS("http://www.w3.org/1999/xhtml","iframe").item(0)
184         bf.setAttribute("src",path)
185       }
186     }
187
188   function openLinkNewTab(event)
189     {
190     if(event.button!=1) return
191     var path=event.target.getAttribute("link")
192     if(event.target.getAttribute("target")=="_top")
193       {
194         window.location=path
195       }
196       else
197       {
198 window.open(path,"_new","")
199
200       }
201     }
202
203
204   function openLinkNewWindow(event)
205     {
206       var path=event.target.getAttribute("link")
207       window.open(path,"_blank","")
208     }
209
210   function openTreeLink(event)
211     {
212       var tree=event.target
213       var selIndex=tree.currentIndex
214       var item=tree.view.getItemAtIndex(selIndex)
215       var link=item.getAttribute("link")
216       if(link) document.getElementById("main_window").setAttribute("src",link)
217     }
218
219   function updateClock()
220     {
221       var d= new Date()
222       var sec=d.getSeconds()
223       var min=d.getMinutes()
224       var std=(d.getHours() % 12 ) + min/60
225       document.getElementById("std").setAttribute("transform","rotate("+std*30+",20,20)")
226       document.getElementById("min").setAttribute("transform","rotate("+min*6+",20,20)")
227       document.getElementById("sec").setAttribute("transform","rotate("+sec*6+",20,20)")
228     }
229
230   function PrintW()
231     {
232       document.getElementById("main_window").contentWindow.print()
233     }
234
235   function doSearch(){
236   var t=document.getElementById("searchboxtext").value
237   document.getElementById("desc").value=t
238   document.getElementById("sb").click()
239
240   }
241   function checkEnter(event){
242   if(event.keyCode==13) doSearch()
243   }
244   //setInterval("updateClock()",1000)
245   function MyGoBack(){
246 document.getElementById("main_window").contentWindow.history.back()
247 }
248   function MyGoForward(){
249 document.getElementById("main_window").contentWindow.history.forward()
250 }
251   </html:script>
252 </xsl:template>
253 <!-- ***************************************************************************  -->
254
255 <!-- special buttons ( logout , print, open new window )
256 The tooltips, like tooltiptext="Neues Fenster", do not appear in my Firefox/Prism browsers. Why?
257 https://developer.mozilla.org/en/XUL_Tutorial/Popup_Menus
258 https://developer.mozilla.org/en/XUL/Attribute/tooltiptext
259 ****************************************************************************  -->
260 <xsl:template name="specialbuttons">
261     <toolbarbutton image="image/icons/24x24/Batch Printing.png" oncommand="PrintW(event)" tooltiptext="Drucken"/>
262     <toolbarbutton image="image/icons/24x24/Neues Fenster.png" tooltiptext="Neues Fenster" link="menuXML.pl?action=display" target="_top" oncommand="openLinkNewWindow(event)"/>
263     <toolbarbutton image="image/icons/24x24/Programm--Logout.png" link="{/*//item[@id='Programm--Logout']/@link}" target="_top" oncommand="openLink(event)" tooltiptext="Abmelden"/>
264   <toolbarseparator/>
265     <toolbarbutton image="image/icons/24x24/leftarrow_24.png" tooltiptext="Schritt zurück" oncommand="MyGoBack()"/>
266     <toolbarbutton image="image/icons/24x24/rightarrow_24.png" tooltiptext="Schritt vor" oncommand="MyGoForward()"/>
267 </xsl:template>
268 <!-- ***************************************************************************  -->
269
270
271 <!-- searchbox
272 ****************************************************************************  -->
273 <xsl:template name="searchbox">
274 <vbox style="padding-top:2px">
275   <hbox>
276     <textbox style="font-size:11px;margin-right:0px" width="200px" id="searchboxtext" onkeypress="checkEnter(event)"/> 
277     <toolbarbutton type="toolbar" width="20" height="20" style="padding:5px !important" image="image/icons/16x16/CRM--Schnellsuche.png" flex="0" oncommand="doSearch()"/>
278 </hbox>
279
280 </vbox>
281 </xsl:template>
282 <!-- ***************************************************************************  -->
283
284
285 <!-- hidden form for article search
286 ****************************************************************************  -->
287 <xsl:template name="ArtikelSuche">
288   <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">
289   <input name="partnumber" size="20"/>
290   <input name="description" flex="1" id="desc"/>
291   <input name="partsgroup" size="20"/>
292   <input name="make" size="20"/>
293   <input class="submit" type="submit" name="action" value="Weiter" id="sb"/>
294   <div style="display:none" >
295   <input class="submit" type="submit" name="action" value="Top 100"/>
296     <input type="hidden" name="serialnumber" size="20"/>
297     <input type="hidden" name="ean" size="20"/>
298     <input type="hidden" name="searchitems" value="part"/>
299     <input type="hidden" name="title" value="Waren"/>
300     <input type="hidden" name="revers" value="0"/>
301     <input type="hidden" name="lastsort" value=""/>
302     <input type="hidden" name="model" size="20"/>
303     <input type="hidden" name="drawing" size="20"/>
304     <input type="hidden" name="microfiche" size="20"/>
305     <input  name="itemstatus" class="radio" type="radio" value="active" checked="true"/>
306     <input name="itemstatus" class="radio" type="radio" value="onhand"/>
307     <input  name="itemstatus" class="radio" type="radio" value="short"/>
308     <input  name="itemstatus" class="radio" type="radio" value="obsolete"/>
309     <input  name="itemstatus" class="radio" type="radio" value="orphaned"/>
310     <input  name="bought" class="checkbox" type="checkbox" value="1"/>
311     <input  name="sold" class="checkbox" type="checkbox" value="1"/>
312     <input  name="onorder" class="checkbox" type="checkbox" value="1"/>
313     <input  name="ordered" class="checkbox" type="checkbox" value="1"/>
314     <input  name="rfq" class="checkbox" type="checkbox" value="1"/>Anfrage
315     <input  name="quoted" class="checkbox" type="checkbox" value="1"/>Angeboten
316     <input type="hidden" name="transdatefrom" id="transdatefrom" size="11" title="dd.mm.yy"/>
317     <input  type="button" name="transdatefrom" id="trigger1" value="?"/>
318     <input name="transdateto" id="transdateto" size="11" title="dd.mm.yy"/>
319     <input type="button" name="transdateto" id="trigger2" value="?"/>
320     <input name="l_partnumber" class="checkbox" type="checkbox" value="Y" checked="true"/>Artikelnummer
321     <input name="l_description" class="checkbox" type="checkbox" value="Y" checked="true"/>Artikelbeschreibung
322     <input name="l_serialnumber" class="checkbox" type="checkbox" value="Y"/>Seriennummer
323     <input name="l_unit" class="checkbox" type="checkbox" value="Y" checked="true"/>Maszeinheit
324     <input name="l_listprice" class="checkbox" type="checkbox" value="Y"/>Listenpreis
325     <input name="l_sellprice" class="checkbox" type="checkbox" value="Y" checked="true"/>Verkaufspreis
326     <input name="l_lastcost" class="checkbox" type="checkbox" value="Y" checked="true"/>Einkaufspreis
327     <input name="l_linetotal" class="checkbox" type="checkbox" value="Y" checked="true"/>Zeilensumme
328     <input name="l_priceupdate" class="checkbox" type="checkbox" value="Y"/>Erneuert am
329     <input name="l_bin" class="checkbox" type="checkbox" value="Y"/>Lagerplatz
330     <input name="l_rop" class="checkbox" type="checkbox" value="Y"/>Mindestlagerbestand
331     <input name="l_weight" class="checkbox" type="checkbox" value="Y"/>Gewicht
332     <input name="l_image" class="checkbox" type="checkbox" value="Y"/>Grafik
333     <input name="l_drawing" class="checkbox" type="checkbox" value="Y"/>Zeichnung
334     <input name="l_microfiche" class="checkbox" type="checkbox" value="Y"/>Mikrofilm
335     <input name="l_partsgroup" class="checkbox" type="checkbox" value="Y"/>Warengruppe
336     <input name="l_subtotal" class="checkbox" type="checkbox" value="Y"/>Zwischensumme
337     <input name="l_soldtotal" class="checkbox" type="checkbox" value="Y"/>Verkaufte Anzahl
338     <input name="l_deliverydate" class="checkbox" type="checkbox" value="Y"/>Lieferdatum
339     <input type="hidden" name="nextsub" value="generate_report"/>
340     <input type="hidden" name="revers" value="0"/>
341     <input type="hidden" name="lastsort" value=""/>
342     <input type="hidden" name="sort" value="description"/>
343     <input type="hidden" name="ndxs_counter" value="0"/>
344   </div>
345   </form>
346 </xsl:template>
347 <!-- ***************************************************************************  -->
348 </xsl:stylesheet>