Meeskond "Kujuneb": Difference between revisions
From ICO wiki
Jump to navigationJump to search
Created page with '===XML=== <source lang="xml"> <?xml version="1.0" encoding="utf-8"?> <albumid> <album id="1"> <artist>Queen</artist> <plaat>Greatest Hits</plaat> <aasta>2005</aasta…' |
|||
(51 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
===XML=== | == Teema == | ||
Muusikapoe tootekataloogi osaline realisatsioon klient-server põhimõttel. | |||
== Liikmed == | |||
* Rauno Väli | |||
* Andreas Lea | |||
* Erik Peinar | |||
== Lähtekood == | |||
* Versioonihalduseks kasutatud GitHub-i võimalusi: | |||
https://github.com/R3ality/tootekataloog | |||
== XML == | |||
=== Andmefail (XML) === | |||
<source lang="xml"> | |||
<?xml version="1.0" encoding="utf-8" standalone="yes"?> | |||
<!-- <?xml-stylesheet type="text/xsl" href="style.xslt"?> --> | |||
<tootekataloog> | |||
<!-- zanride loetelu--> | |||
<zanrid> | |||
<zanr id="1"> | |||
<nimi>Pop</nimi> | |||
</zanr> | |||
<zanr id="2"> | |||
<nimi>Rap</nimi> | |||
</zanr> | |||
</zanrid> | |||
<!-- artistide loetelu--> | |||
<artistid> | |||
<artist id="1"> | |||
<nimi>Queen</nimi> | |||
</artist> | |||
<artist id="2"> | |||
<nimi>Madonna</nimi> | |||
</artist> | |||
</artistid> | |||
<!-- albumite loetelu--> | |||
<albumid> | |||
<album id="1"> | |||
<zanr>1</zanr> | |||
<artist>1</artist> | |||
<nimi>Greatest Hits</nimi> | |||
<aasta>2005</aasta> | |||
<lugusi>15</lugusi> | |||
<pilt>http://bit.ly/jreygb</pilt> | |||
<hind>12</hind> | |||
</album> | |||
<album id="2"> | |||
<zanr>2</zanr> | |||
<artist>2</artist> | |||
<nimi>American Life</nimi> | |||
<aasta>2002</aasta> | |||
<lugusi>19</lugusi> | |||
<pilt>http://bit.ly/jwEHdl</pilt> | |||
<hind>8.3</hind> | |||
</album> | |||
</albumid> | |||
</tootekataloog> | |||
</source> | |||
=== Skeemifail (XSD) === | |||
<source lang="xml"> | |||
<?xml version="1.0" encoding="utf-8"?> | |||
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> | |||
<xs:element name="tootekataloog"> | |||
<xs:complexType> | |||
<xs:sequence> | |||
<xs:element name="zanrid"> | |||
<xs:complexType> | |||
<xs:sequence> | |||
<xs:element maxOccurs="unbounded" name="zanr"> | |||
<xs:complexType> | |||
<xs:sequence> | |||
<xs:element name="nimi" type="xs:string" /> | |||
</xs:sequence> | |||
<xs:attribute name="id" type="xs:unsignedByte" use="required" /> | |||
</xs:complexType> | |||
</xs:element> | |||
</xs:sequence> | |||
</xs:complexType> | |||
</xs:element> | |||
<xs:element name="artistid"> | |||
<xs:complexType> | |||
<xs:sequence> | |||
<xs:element maxOccurs="unbounded" name="artist"> | |||
<xs:complexType> | |||
<xs:sequence> | |||
<xs:element name="nimi" type="xs:string" /> | |||
</xs:sequence> | |||
<xs:attribute name="id" type="xs:unsignedByte" use="required" /> | |||
</xs:complexType> | |||
</xs:element> | |||
</xs:sequence> | |||
</xs:complexType> | |||
</xs:element> | |||
<xs:element name="albumid"> | |||
<xs:complexType> | |||
<xs:sequence> | |||
<xs:element maxOccurs="unbounded" name="album"> | |||
<xs:complexType> | |||
<xs:sequence> | |||
<xs:element name="zanr" type="xs:unsignedByte" /> | |||
<xs:element name="artist" type="xs:unsignedByte" /> | |||
<xs:element name="nimi" type="xs:string" /> | |||
<xs:element name="aasta" type="xs:unsignedShort" /> | |||
<xs:element name="lugusi" type="xs:unsignedByte" /> | |||
<xs:element name="pilt" type="xs:string" /> | |||
<xs:element name="hind" type="xs:decimal" /> | |||
</xs:sequence> | |||
<xs:attribute name="id" type="xs:unsignedByte" use="required" /> | |||
</xs:complexType> | |||
</xs:element> | |||
</xs:sequence> | |||
</xs:complexType> | |||
</xs:element> | |||
</xs:sequence> | |||
</xs:complexType> | |||
</xs:element> | |||
</xs:schema> | |||
</source> | |||
=== Stiilifail (XSLT) === | |||
<source lang="xml"> | <source lang="xml"> | ||
<?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="utf-8"?> | ||
< | <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> | ||
< | <xsl:template match="/"> | ||
<artist> | <html> | ||
<head> | |||
<title>Tootekataloog</title> | |||
<style type="text/css"> | |||
body { | |||
font-family: Arial, Verdana; | |||
} | |||
table { | |||
font-size: 12px; | |||
border-collapse: collapse; | |||
} | |||
table.main { | |||
</ | border: 1px solid #98bf21; | ||
</ | } | ||
table.main th { | |||
padding: 3px 10px 3px 10px; | |||
border: 1px solid #98bf21; | |||
background-color: #A7C942; | |||
color: #FFFFFF; | |||
} | |||
table.main tr { | |||
background-color: #FFFFFF; | |||
} | |||
table.main td { | |||
text-align: center; | |||
padding: 3px; | |||
border: 1px solid #98bf21; | |||
} | |||
a, a:hover, a:active, a:visited { | |||
color: #000000; | |||
} | |||
a img { | |||
border: none; | |||
} | |||
</style> | |||
</head> | |||
<body> | |||
<h3>Albumid</h3> | |||
<table class="main"> | |||
<tr> | |||
<th>Artist</th> | |||
<th>Album</th> | |||
<th>Žanr</th> | |||
<th>Aasta</th> | |||
<th>Lugusi</th> | |||
<th>Pilt</th> | |||
<th>YouTube</th> | |||
<th>Hind</th> | |||
</tr> | |||
<xsl:for-each select="tootekataloog/albumid/album"> | |||
<xsl:variable name="artistID" select="artist"/> | |||
<xsl:variable name="zanrID" select="zanr"/> | |||
<tr> | |||
<xsl:if test="position() mod 2 =0"> | |||
<xsl:attribute name="style"> | |||
background-color: #EAF2D3; | |||
</xsl:attribute> | |||
</xsl:if> | |||
<td> | |||
<xsl:value-of select="/tootekataloog/artistid/artist[@id=$artistID]/nimi"/> | |||
</td> | |||
<td> | |||
<xsl:value-of select="nimi"/> | |||
</td> | |||
<td> | |||
<xsl:value-of select="/tootekataloog/zanrid/zanr[@id=$zanrID]/nimi"/> | |||
</td> | |||
<td> | |||
<xsl:value-of select="aasta"/> | |||
</td> | |||
<td> | |||
<xsl:value-of select="lugusi"/> | |||
</td> | |||
<td> | |||
<img width="100" height="100"> | |||
<xsl:attribute name="src"> | |||
<xsl:value-of select="pilt"/> | |||
</xsl:attribute> | |||
</img> | |||
</td> | |||
<td> | |||
<a> | |||
<xsl:attribute name="href"> | |||
<xsl:text>http://www.youtube.com/results?search_query=</xsl:text><xsl:value-of select="/tootekataloog/artistid/artist[@id=$artistID]/nimi"/>+<xsl:value-of select="nimi"/> | |||
</xsl:attribute> | |||
<img src="http://www.upload.ee/image/1288041/youtube-badge-64x64.png"> | |||
</img> | |||
</a> | |||
</td> | |||
<td> | |||
<xsl:value-of select="hind"/> € | |||
</td> | |||
</tr> | |||
</xsl:for-each> | |||
</table> | |||
<br/><br/> | |||
<h3>Toored andmed</h3> | |||
<table> | |||
<tr> | |||
<td style="padding-right: 50px; vertical-align: top;"> | |||
<h4>Žanrid</h4> | |||
<table class="main"> | |||
<tr> | |||
<th>id</th> | |||
<th>nimi</th> | |||
</tr> | |||
<xsl:for-each select="tootekataloog/zanrid/zanr"> | |||
<tr> | |||
<xsl:if test="position() mod 2 =0"> | |||
<xsl:attribute name="style"> | |||
background-color: #EAF2D3; | |||
</xsl:attribute> | |||
</xsl:if> | |||
<td> | |||
<xsl:value-of select="@id"/> | |||
</td> | |||
<td> | |||
<xsl:value-of select="nimi"/> | |||
</td> | |||
</tr> | |||
</xsl:for-each> | |||
</table> | |||
</td> | |||
<td style="padding-right: 50px; vertical-align: top;"> | |||
<h4>Artistid</h4> | |||
<table class="main"> | |||
<tr> | |||
<th>id</th> | |||
<th>nimi</th> | |||
</tr> | |||
<xsl:for-each select="tootekataloog/artistid/artist"> | |||
<tr> | |||
<xsl:if test="position() mod 2 =0"> | |||
<xsl:attribute name="style"> | |||
background-color: #EAF2D3; | |||
</xsl:attribute> | |||
</xsl:if> | |||
<td> | |||
<xsl:value-of select="@id"/> | |||
</td> | |||
<td> | |||
<xsl:value-of select="nimi"/> | |||
</td> | |||
</tr> | |||
</xsl:for-each> | |||
</table> | |||
</td> | |||
<td style="vertical-align: top;"> | |||
<h4>Albumid</h4> | |||
<table class="main"> | |||
<tr> | |||
<th>id</th> | |||
<th>zanr</th> | |||
<th>artist</th> | |||
<th>nimi</th> | |||
<th>aasta</th> | |||
<th>lugusi</th> | |||
<th>pilt</th> | |||
<th>hind</th> | |||
</tr> | |||
<xsl:for-each select="tootekataloog/albumid/album"> | |||
<tr> | |||
<xsl:if test="position() mod 2 =0"> | |||
<xsl:attribute name="style"> | |||
background-color: #EAF2D3; | |||
</xsl:attribute> | |||
</xsl:if> | |||
<td> | |||
<xsl:value-of select="@id"/> | |||
</td> | |||
<td> | |||
<xsl:value-of select="zanr"/> | |||
</td> | |||
<td> | |||
<xsl:value-of select="artist"/> | |||
</td> | |||
<td> | |||
<xsl:value-of select="nimi"/> | |||
</td> | |||
<td> | |||
<xsl:value-of select="aasta"/> | |||
</td> | |||
<td> | |||
<xsl:value-of select="lugusi"/> | |||
</td> | |||
<td> | |||
<xsl:value-of select="pilt"/> | |||
</td> | |||
<td> | |||
<xsl:value-of select="hind"/> | |||
</td> | |||
</tr> | |||
</xsl:for-each> | |||
</table> | |||
</td> | |||
</tr> | |||
</table> | |||
</body> | |||
</html> | |||
</xsl:template> | |||
</xsl:stylesheet> | |||
</source> | </source> | ||
=== Andmefaili vaade stiilifailiga === | |||
[[File:Muusikakogu_naidis.png]] | |||
== Teenus == | |||
* Online jooksev teenus: | |||
http://kujuneb.somee.com/Teenus.asmx | |||
=== Teenuse signatuur === | |||
Hetkeseisuga on teenusel järgnevad avalikud veebimeetodid (tärniga tähistatud meetodid nõuavad autentimist): | |||
<br>AnnaAlbum(int Id) | |||
<br>AnnaAlbumLaos() | |||
<br>AnnaAlbumiLood() | |||
<br>AnnaAlbumid() | |||
<br>AnnaAlbumidByZanr() | |||
<br>AnnaAlbumidByArtist() | |||
<br>AnnaArtist() | |||
<br>AnnaArtistid() | |||
<br>AnnaKasutajaNimi() | |||
<br>AnnaLadu() | |||
<br>AnnaLaod() | |||
<br>AnnaLogi()* | |||
<br>AnnaLood() | |||
<br>AnnaLooAlbum() | |||
<br>AnnaLugu() | |||
<br>AnnaRiigid() | |||
<br>AnnaRiik() | |||
<br>AnnaZanr() | |||
<br>AnnaZanrid() | |||
<br>KasOnAutenditud() | |||
<br>KustutaAlbum()* | |||
<br>KustutaArtist()* | |||
<br>KustutaLugu()* | |||
<br>LisaAlbum()* | |||
<br>LisaArtist()* | |||
<br>LisaLugu()* | |||
<br>LoendaMeetodiParingud()* | |||
<br>LogiValja() | |||
<br>MuudaAlbum()* | |||
<br>Otsi() | |||
<br>MuudaArtist()* | |||
<br>MuudaLugu()* | |||
=== Andmetabelid === | |||
[[File:Andmebaas.png]] | |||
=== Statistika === | |||
[[File:Statistika.png]] | |||
== Klientrakendus == | |||
Klientrakendus on teostatud C# Windows Forms rakendusena | |||
=== Demoprogramm === | |||
* '''TootekatKlient-local.exe''' | |||
http://www.upload.ee/files/1372294/TootekatKlient-local.exe.html (versioon 1) | |||
http://www.upload.ee/files/1389696/TootekatKlient-v2-local.exe.html (versioon 2) | |||
Eeldab et teenus jookseb lokaalses masinas (näiteks Visual Studiost debugima panduna) | |||
* '''TootekatKlient-remote.exe''' | |||
http://www.upload.ee/files/1372297/TootekatKlient-remote.exe.html (versioon 1) | |||
http://www.upload.ee/files/1389698/TootekatKlient-v2-remote.exe.html (versioon 2) | |||
Online teenuse pihta käiv klient. Administreerimisfunktsioonid sihipäraselt eemaldatud. Autentimine ei toimi. | |||
=== Ekraanipildid === | |||
[[File:TootekatKlientv2-1.png]] | |||
[[File:KujunebKlient1.jpg]] | |||
[[File:KujunebKlient2.jpg]] | |||
[[File:KujunebKlient3.jpg]] | |||
[[File:KujunebKlient4.jpg]] |
Latest revision as of 17:22, 3 June 2011
Teema
Muusikapoe tootekataloogi osaline realisatsioon klient-server põhimõttel.
Liikmed
- Rauno Väli
- Andreas Lea
- Erik Peinar
Lähtekood
- Versioonihalduseks kasutatud GitHub-i võimalusi:
https://github.com/R3ality/tootekataloog
XML
Andmefail (XML)
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<!-- <?xml-stylesheet type="text/xsl" href="style.xslt"?> -->
<tootekataloog>
<!-- zanride loetelu-->
<zanrid>
<zanr id="1">
<nimi>Pop</nimi>
</zanr>
<zanr id="2">
<nimi>Rap</nimi>
</zanr>
</zanrid>
<!-- artistide loetelu-->
<artistid>
<artist id="1">
<nimi>Queen</nimi>
</artist>
<artist id="2">
<nimi>Madonna</nimi>
</artist>
</artistid>
<!-- albumite loetelu-->
<albumid>
<album id="1">
<zanr>1</zanr>
<artist>1</artist>
<nimi>Greatest Hits</nimi>
<aasta>2005</aasta>
<lugusi>15</lugusi>
<pilt>http://bit.ly/jreygb</pilt>
<hind>12</hind>
</album>
<album id="2">
<zanr>2</zanr>
<artist>2</artist>
<nimi>American Life</nimi>
<aasta>2002</aasta>
<lugusi>19</lugusi>
<pilt>http://bit.ly/jwEHdl</pilt>
<hind>8.3</hind>
</album>
</albumid>
</tootekataloog>
Skeemifail (XSD)
<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="tootekataloog">
<xs:complexType>
<xs:sequence>
<xs:element name="zanrid">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="zanr">
<xs:complexType>
<xs:sequence>
<xs:element name="nimi" type="xs:string" />
</xs:sequence>
<xs:attribute name="id" type="xs:unsignedByte" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="artistid">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="artist">
<xs:complexType>
<xs:sequence>
<xs:element name="nimi" type="xs:string" />
</xs:sequence>
<xs:attribute name="id" type="xs:unsignedByte" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="albumid">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="album">
<xs:complexType>
<xs:sequence>
<xs:element name="zanr" type="xs:unsignedByte" />
<xs:element name="artist" type="xs:unsignedByte" />
<xs:element name="nimi" type="xs:string" />
<xs:element name="aasta" type="xs:unsignedShort" />
<xs:element name="lugusi" type="xs:unsignedByte" />
<xs:element name="pilt" type="xs:string" />
<xs:element name="hind" type="xs:decimal" />
</xs:sequence>
<xs:attribute name="id" type="xs:unsignedByte" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Stiilifail (XSLT)
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<head>
<title>Tootekataloog</title>
<style type="text/css">
body {
font-family: Arial, Verdana;
}
table {
font-size: 12px;
border-collapse: collapse;
}
table.main {
border: 1px solid #98bf21;
}
table.main th {
padding: 3px 10px 3px 10px;
border: 1px solid #98bf21;
background-color: #A7C942;
color: #FFFFFF;
}
table.main tr {
background-color: #FFFFFF;
}
table.main td {
text-align: center;
padding: 3px;
border: 1px solid #98bf21;
}
a, a:hover, a:active, a:visited {
color: #000000;
}
a img {
border: none;
}
</style>
</head>
<body>
<h3>Albumid</h3>
<table class="main">
<tr>
<th>Artist</th>
<th>Album</th>
<th>Žanr</th>
<th>Aasta</th>
<th>Lugusi</th>
<th>Pilt</th>
<th>YouTube</th>
<th>Hind</th>
</tr>
<xsl:for-each select="tootekataloog/albumid/album">
<xsl:variable name="artistID" select="artist"/>
<xsl:variable name="zanrID" select="zanr"/>
<tr>
<xsl:if test="position() mod 2 =0">
<xsl:attribute name="style">
background-color: #EAF2D3;
</xsl:attribute>
</xsl:if>
<td>
<xsl:value-of select="/tootekataloog/artistid/artist[@id=$artistID]/nimi"/>
</td>
<td>
<xsl:value-of select="nimi"/>
</td>
<td>
<xsl:value-of select="/tootekataloog/zanrid/zanr[@id=$zanrID]/nimi"/>
</td>
<td>
<xsl:value-of select="aasta"/>
</td>
<td>
<xsl:value-of select="lugusi"/>
</td>
<td>
<img width="100" height="100">
<xsl:attribute name="src">
<xsl:value-of select="pilt"/>
</xsl:attribute>
</img>
</td>
<td>
<a>
<xsl:attribute name="href">
<xsl:text>http://www.youtube.com/results?search_query=</xsl:text><xsl:value-of select="/tootekataloog/artistid/artist[@id=$artistID]/nimi"/>+<xsl:value-of select="nimi"/>
</xsl:attribute>
<img src="http://www.upload.ee/image/1288041/youtube-badge-64x64.png">
</img>
</a>
</td>
<td>
<xsl:value-of select="hind"/> €
</td>
</tr>
</xsl:for-each>
</table>
<br/><br/>
<h3>Toored andmed</h3>
<table>
<tr>
<td style="padding-right: 50px; vertical-align: top;">
<h4>Žanrid</h4>
<table class="main">
<tr>
<th>id</th>
<th>nimi</th>
</tr>
<xsl:for-each select="tootekataloog/zanrid/zanr">
<tr>
<xsl:if test="position() mod 2 =0">
<xsl:attribute name="style">
background-color: #EAF2D3;
</xsl:attribute>
</xsl:if>
<td>
<xsl:value-of select="@id"/>
</td>
<td>
<xsl:value-of select="nimi"/>
</td>
</tr>
</xsl:for-each>
</table>
</td>
<td style="padding-right: 50px; vertical-align: top;">
<h4>Artistid</h4>
<table class="main">
<tr>
<th>id</th>
<th>nimi</th>
</tr>
<xsl:for-each select="tootekataloog/artistid/artist">
<tr>
<xsl:if test="position() mod 2 =0">
<xsl:attribute name="style">
background-color: #EAF2D3;
</xsl:attribute>
</xsl:if>
<td>
<xsl:value-of select="@id"/>
</td>
<td>
<xsl:value-of select="nimi"/>
</td>
</tr>
</xsl:for-each>
</table>
</td>
<td style="vertical-align: top;">
<h4>Albumid</h4>
<table class="main">
<tr>
<th>id</th>
<th>zanr</th>
<th>artist</th>
<th>nimi</th>
<th>aasta</th>
<th>lugusi</th>
<th>pilt</th>
<th>hind</th>
</tr>
<xsl:for-each select="tootekataloog/albumid/album">
<tr>
<xsl:if test="position() mod 2 =0">
<xsl:attribute name="style">
background-color: #EAF2D3;
</xsl:attribute>
</xsl:if>
<td>
<xsl:value-of select="@id"/>
</td>
<td>
<xsl:value-of select="zanr"/>
</td>
<td>
<xsl:value-of select="artist"/>
</td>
<td>
<xsl:value-of select="nimi"/>
</td>
<td>
<xsl:value-of select="aasta"/>
</td>
<td>
<xsl:value-of select="lugusi"/>
</td>
<td>
<xsl:value-of select="pilt"/>
</td>
<td>
<xsl:value-of select="hind"/>
</td>
</tr>
</xsl:for-each>
</table>
</td>
</tr>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Andmefaili vaade stiilifailiga
Teenus
- Online jooksev teenus:
http://kujuneb.somee.com/Teenus.asmx
Teenuse signatuur
Hetkeseisuga on teenusel järgnevad avalikud veebimeetodid (tärniga tähistatud meetodid nõuavad autentimist):
AnnaAlbum(int Id)
AnnaAlbumLaos()
AnnaAlbumiLood()
AnnaAlbumid()
AnnaAlbumidByZanr()
AnnaAlbumidByArtist()
AnnaArtist()
AnnaArtistid()
AnnaKasutajaNimi()
AnnaLadu()
AnnaLaod()
AnnaLogi()*
AnnaLood()
AnnaLooAlbum()
AnnaLugu()
AnnaRiigid()
AnnaRiik()
AnnaZanr()
AnnaZanrid()
KasOnAutenditud()
KustutaAlbum()*
KustutaArtist()*
KustutaLugu()*
LisaAlbum()*
LisaArtist()*
LisaLugu()*
LoendaMeetodiParingud()*
LogiValja()
MuudaAlbum()*
Otsi()
MuudaArtist()*
MuudaLugu()*
Andmetabelid
Statistika
Klientrakendus
Klientrakendus on teostatud C# Windows Forms rakendusena
Demoprogramm
- TootekatKlient-local.exe
http://www.upload.ee/files/1372294/TootekatKlient-local.exe.html (versioon 1) http://www.upload.ee/files/1389696/TootekatKlient-v2-local.exe.html (versioon 2) Eeldab et teenus jookseb lokaalses masinas (näiteks Visual Studiost debugima panduna)
- TootekatKlient-remote.exe
http://www.upload.ee/files/1372297/TootekatKlient-remote.exe.html (versioon 1) http://www.upload.ee/files/1389698/TootekatKlient-v2-remote.exe.html (versioon 2) Online teenuse pihta käiv klient. Administreerimisfunktsioonid sihipäraselt eemaldatud. Autentimine ei toimi.