Webapplikation 1.0

This commit is contained in:
Geno 2020-11-19 22:44:19 +01:00
commit 26184b7751
192 changed files with 14827 additions and 0 deletions

465
OrderSprinter-LIZENZ.html Normal file
View File

@ -0,0 +1,465 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Creative Commons Legal Code</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<link rel="stylesheet" type="text/css" href="http://creativecommons.org/includes/deed3.css" media="screen" />
<link rel="stylesheet" type="text/css" href="http://creativecommons.org/includes/deed3-print.css" media="print"/>
<!--[if lt IE 7]><link rel="stylesheet" type="text/css" href="http://creativecommons.org/includes/deed3-ie.css" media="screen" /><![endif]-->
<script type="text/javascript" src="http://creativecommons.org/includes/errata.js"> </script>
</head>
<body>
<p id="header" align="center"><a href="http://creativecommons.org/">Creative Commons</a></p>
<div id="deed" class="yellow">
<div id="deed-head">
<div id="cc-logo">
<img src="http://creativecommons.org/images/deed/cc-logo.jpg" alt="" />
</div>
<h1><span>Creative Commons Legal Code</span></h1>
<div id="deed-license">
<h2>Namensnennung - Keine kommerzielle Nutzung - Keine Bearbeitungen 3.0 Deutschland</h2>
</div>
</div>
<div id="deed-main">
<div id="deed-main-content">
<img src="http://creativecommons.org/images/international/de.png" alt="" />
<blockquote> CREATIVE COMMONS IST KEINE RECHTSANWALTSKANZLEI UND
LEISTET KEINE RECHTSBERATUNG. DIE BEREITSTELLUNG DIESER LIZENZ FÜHRT ZU
KEINEM MANDATSVERHÄLTNIS. CREATIVE COMMONS STELLT DIESE INFORMATIONEN
OHNE GEWÄHR ZUR VERFÜGUNG. CREATIVE COMMONS ÜBERNIMMT KEINE
GEWÄHRLEISTUNG FÜR DIE GELIEFERTEN INFORMATIONEN UND SCHLIEßT DIE
HAFTUNG FÜR SCHÄDEN AUS, DIE SICH AUS DEREN GEBRAUCH ERGEBEN. </blockquote>
<h3><em>Lizenz</em></h3>
<p>DER GEGENSTAND DIESER LIZENZ (WIE UNTER "SCHUTZGEGENSTAND"
DEFINIERT) WIRD UNTER DEN BEDINGUNGEN DIESER CREATIVE COMMONS PUBLIC
LICENSE ("CCPL", "LIZENZ" ODER "LIZENZVERTRAG") ZUR VERFÜGUNG GESTELLT.
DER SCHUTZGEGENSTAND IST DURCH DAS URHEBERRECHT UND/ODER ANDERE GESETZE
GESCHÜTZT. JEDE FORM DER NUTZUNG DES SCHUTZGEGENSTANDES, DIE NICHT
AUFGRUND DIESER LIZENZ ODER DURCH GESETZE GESTATTET IST, IST UNZULÄSSIG.</p>
<p>DURCH DIE AUSÜBUNG EINES DURCH DIESE LIZENZ GEWÄHRTEN RECHTS AN DEM
SCHUTZGEGENSTAND ERKLÄREN SIE SICH MIT DEN LIZENZBEDINGUNGEN
RECHTSVERBINDLICH EINVERSTANDEN. SOWEIT DIESE LIZENZ ALS LIZENZVERTRAG
ANZUSEHEN IST, GEWÄHRT IHNEN DER LIZENZGEBER DIE IN DER LIZENZ
GENANNTEN RECHTE UNENTGELTLICH UND IM AUSTAUSCH DAFÜR, DASS SIE DAS
GEBUNDENSEIN AN DIE LIZENZBEDINGUNGEN AKZEPTIEREN.</p>
<p><strong>1. Definitionen</strong></p>
<ol type="a">
<li>Der Begriff "<strong>Abwandlung</strong>" im Sinne dieser Lizenz
bezeichnet das Ergebnis jeglicher Art von Veränderung des
Schutzgegenstandes, solange die eigenpersönlichen Züge des
Schutzgegenstandes darin nicht verblassen und daran eigene Schutzrechte
entstehen. Das kann insbesondere eine Bearbeitung, Umgestaltung,
Änderung, Anpassung, Übersetzung oder Heranziehung des
Schutzgegenstandes zur Vertonung von Laufbildern sein. Nicht als
Abwandlung des Schutzgegenstandes gelten seine Aufnahme in eine
Sammlung oder ein Sammelwerk und die freie Benutzung des
Schutzgegenstandes.</li>
<li>Der Begriff "<strong>Sammelwerk</strong>" im Sinne dieser Lizenz
meint eine Zusammenstellung von literarischen, künstlerischen oder
wissenschaftlichen Inhalten, sofern diese Zusammenstellung aufgrund von
Auswahl und Anordnung der darin enthaltenen selbständigen Elemente eine
geistige Schöpfung darstellt, unabhängig davon, ob die Elemente
systematisch oder methodisch angelegt und dadurch einzeln zugänglich
sind oder nicht.</li>
<li>"<strong>Verbreiten</strong>" im Sinne dieser Lizenz bedeutet,
den Schutzgegenstand im Original oder in Form von
Vervielfältigungsstücken, mithin in körperlich fixierter Form der
Öffentlichkeit anzubieten oder in Verkehr zu bringen.</li>
<li>Der "<strong>Lizenzgeber</strong>" im Sinne dieser Lizenz ist
diejenige natürliche oder juristische Person oder Gruppe, die den
Schutzgegenstand unter den Bedingungen dieser Lizenz anbietet und
insoweit als Rechteinhaberin auftritt.</li>
<li>"<strong>Rechteinhaber</strong>" im Sinne dieser Lizenz ist der
Urheber des Schutzgegenstandes oder jede andere natürliche oder
juristische Person oder Gruppe von Personen, die am Schutzgegenstand
ein Immaterialgüterrecht erlangt hat, welches die in Abschnitt 3
genannten Handlungen erfasst und bei dem eine Einräumung von
Nutzungsrechten oder eine Weiterübertragung an Dritte möglich ist.</li>
<li>Der Begriff "<strong>Schutzgegenstand</strong>" bezeichnet in
dieser Lizenz den literarischen, künstlerischen oder wissenschaftlichen
Inhalt, der unter den Bedingungen dieser Lizenz angeboten wird. Das
kann insbesondere eine persönliche geistige Schöpfung jeglicher Art,
ein Werk der kleinen Münze, ein nachgelassenes Werk oder auch ein
Lichtbild oder anderes Objekt eines verwandten Schutzrechts sein,
unabhängig von der Art seiner Fixierung und unabhängig davon, auf
welche Weise jeweils eine Wahrnehmung erfolgen kann, gleichviel ob in
analoger oder digitaler Form. Soweit Datenbanken oder
Zusammenstellungen von Daten einen immaterialgüterrechtlichen Schutz
eigener Art genießen, unterfallen auch sie dem Begriff
"Schutzgegenstand" im Sinne dieser Lizenz.</li>
<li>Mit "<strong>Sie</strong>" bzw. "<strong>Ihnen</strong>" ist die
natürliche oder juristische Person gemeint, die in dieser Lizenz im
Abschnitt 3 genannte Nutzungen des Schutzgegenstandes vornimmt und
zuvor in Hinblick auf den Schutzgegenstand nicht gegen Bedingungen
dieser Lizenz verstoßen oder aber die ausdrückliche Erlaubnis des
Lizenzgebers erhalten hat, die durch diese Lizenz gewährten
Nutzungsrechte trotz eines vorherigen Verstoßes auszuüben.</li>
<li>Unter "<strong>Öffentlich Zeigen</strong>" im Sinne dieser Lizenz
sind Veröffentlichungen und Präsentationen des Schutzgegenstandes zu
verstehen, die für eine Mehrzahl von Mitgliedern der Öffentlichkeit
bestimmt sind und in unkörperlicher Form mittels öffentlicher
Wiedergabe in Form von Vortrag, Aufführung, Vorführung, Darbietung,
Sendung, Weitersendung, zeit- und ortsunabhängiger Zugänglichmachung
oder in körperlicher Form mittels Ausstellung erfolgen, unabhängig von
bestimmten Veranstaltungen und unabhängig von den zum Einsatz kommenden
Techniken und Verfahren, einschließlich drahtgebundener oder drahtloser
Mittel und Einstellen in das Internet.</li>
<li>"<strong>Vervielfältigen</strong>" im Sinne dieser Lizenz
bedeutet, mittels beliebiger Verfahren Vervielfältigungsstücke des
Schutzgegenstandes herzustellen, insbesondere durch Ton- oder
Bildaufzeichnungen, und umfasst auch den Vorgang, erstmals körperliche
Fixierungen des Schutzgegenstandes sowie Vervielfältigungsstücke dieser
Fixierungen anzufertigen, sowie die Übertragung des Schutzgegenstandes
auf einen Bild- oder Tonträger oder auf ein anderes elektronisches
Medium, gleichviel ob in digitaler oder analoger Form.</li>
</ol>
<p><strong>2. Schranken des Immaterialgüterrechts</strong></p>
<p>Diese Lizenz ist in keiner Weise darauf gerichtet, Befugnisse zur
Nutzung des Schutzgegenstandes zu vermindern, zu beschränken oder zu
vereiteln, die Ihnen aufgrund der Schranken des Urheberrechts oder anderer
Rechtsnormen bereits ohne Weiteres zustehen oder sich aus dem
Fehlen eines immaterialgüterrechtlichen Schutzes ergeben.</p>
<p><strong>3. Einräumung von Nutzungsrechten</strong></p>
<p>Unter den Bedingungen dieser Lizenz räumt Ihnen der Lizenzgeber
- unbeschadet unverzichtbarer Rechte und vorbehaltlich des Abschnitts 4.e)
- das vergütungsfreie, räumlich und zeitlich (für die Dauer des Schutzrechts
am Schutzgegenstand) unbeschränkte einfache Recht ein, den Schutzgegenstand
auf die folgenden Arten und Weisen zu nutzen ("unentgeltlich eingeräumtes
einfaches Nutzungsrecht für jedermann"):</p>
<ol type="a">
<li>Den Schutzgegenstand in beliebiger Form und Menge zu
vervielfältigen, ihn in Sammelwerke zu integrieren und ihn als Teil
solcher Sammelwerke zu vervielfältigen;</li>
<li>den Schutzgegenstand, allein oder in Sammelwerke aufgenommen,
öffentlich zu zeigen und zu verbreiten.</li>
</ol>
<p>Das vorgenannte Nutzungsrecht wird für alle bekannten sowie für alle
noch nicht bekannten Nutzungsarten eingeräumt. Es beinhaltet auch das
Recht, solche Änderungen am Schutzgegenstand vorzunehmen, die für bestimmte
nach dieser Lizenz zulässige Nutzungen technisch erforderlich sind.
Weitergehende Änderungen oder Abwandlungen sind jedoch
untersagt. Alle sonstigen Rechte, die über diesen Abschnitt hinaus
nicht ausdrücklich durch den Lizenzgeber eingeräumt werden, bleiben
diesem allein vorbehalten. Soweit Datenbanken oder Zusammenstellungen
von Daten Schutzgegenstand dieser Lizenz oder Teil dessen sind und einen
immaterialgüterrechtlichen Schutz eigener Art genießen, verzichtet der
Lizenzgeber auf sämtliche aus diesem Schutz resultierenden Rechte.</p>
<p><strong>4. Bedingungen</strong></p>
<p>Die Einräumung des Nutzungsrechts gemäß Abschnitt 3 dieser Lizenz
erfolgt ausdrücklich nur unter den folgenden Bedingungen:</p>
<ol type="a">
<li>Sie dürfen den Schutzgegenstand ausschließlich unter den
Bedingungen dieser Lizenz verbreiten oder öffentlich zeigen. Sie müssen
dabei stets eine Kopie dieser Lizenz oder deren vollständige
Internetadresse in Form des Uniform-Resource-Identifier (URI) beifügen.
Sie dürfen keine Vertrags- oder Nutzungsbedingungen anbieten oder
fordern, die die Bedingungen dieser Lizenz oder die durch diese Lizenz
gewährten Rechte beschränken. Sie dürfen den Schutzgegenstand nicht
unterlizenzieren. Bei jeder Kopie des Schutzgegenstandes, die Sie
verbreiten oder öffentlich zeigen, müssen Sie alle Hinweise unverändert
lassen, die auf diese Lizenz und den Haftungsausschluss hinweisen. Wenn
Sie den Schutzgegenstand verbreiten oder öffentlich zeigen, dürfen Sie
(in Bezug auf den Schutzgegenstand) keine technischen Maßnahmen
ergreifen, die den Nutzer des Schutzgegenstandes in der Ausübung der
ihm durch diese Lizenz gewährten Rechte behindern können. Dieser
Abschnitt 4.a) gilt auch für den Fall, dass der Schutzgegenstand einen Bestandteil eines
Sammelwerkes bildet, was jedoch nicht bedeutet, dass das Sammelwerk
insgesamt dieser Lizenz unterstellt werden muss. Sofern Sie ein
Sammelwerk erstellen, müssen Sie auf
die Mitteilung eines Lizenzgebers hin aus dem Sammelwerk die in
Abschnitt 4.c) aufgezählten Hinweise entfernen.</li>
<li>Die Rechteeinräumung gemäß Abschnitt 3 gilt nur für Handlungen,
die nicht vorrangig auf einen geschäftlichen Vorteil oder eine
geldwerte Vergütung gerichtet sind ("nicht-kommerzielle Nutzung",
"Non-commercial-Option"). Wird Ihnen in Zusammenhang mit dem
Schutzgegenstand dieser Lizenz ein anderer Schutzgegenstand überlassen,
ohne dass eine vertragliche Verpflichtung hierzu besteht (etwa im Wege
von File-Sharing), so wird dies nicht als auf geschäftlichen Vorteil
oder geldwerte Vergütung gerichtet angesehen, wenn in Verbindung mit
dem Austausch der Schutzgegenstände tatsächlich keine Zahlung oder
geldwerte Vergütung geleistet wird.</li>
<li>Die Verbreitung und das öffentliche Zeigen des Schutzgegenstandes
oder ihn enthaltender Sammelwerke ist Ihnen nur unter der Bedingung
gestattet, dass Sie, vorbehaltlich etwaiger Mitteilungen im Sinne von
Abschnitt 4.a), alle dazu gehörenden Rechtevermerke unberührt lassen.
Sie sind verpflichtet, die Rechteinhaberschaft in einer der Nutzung
entsprechenden, angemessenen Form anzuerkennen, indem Sie - soweit
bekannt - Folgendes angeben:<br/><br/>
<ol type="i">
<li>Den Namen (oder das Pseudonym, falls ein solches verwendet
wird) des Rechteinhabers und / oder, falls der Lizenzgeber im
Rechtevermerk, in den Nutzungsbedingungen oder auf andere angemessene
Weise eine Zuschreibung an Dritte vorgenommen hat (z.B. an eine
Stiftung, ein Verlagshaus oder eine Zeitung)
("Zuschreibungsempfänger"), Namen bzw. Bezeichnung dieses oder dieser
Dritten;</li>
<li>den Titel des Inhaltes;</li>
<li>in einer praktikablen Form den Uniform-Resource-Identifier
(URI, z.B. Internetadresse), den der Lizenzgeber zum Schutzgegenstand
angegeben hat, es sei denn, dieser URI verweist nicht auf den
Rechtevermerk oder die Lizenzinformationen zum Schutzgegenstand.</li>
</ol>
<p>Die nach diesem Abschnitt 4.c) erforderlichen Angaben können in
jeder angemessenen Form gemacht werden; im Falle eines Sammelwerkes
müssen diese Angaben das Minimum darstellen und bei gemeinsamer Nennung
mehrerer Rechteinhaber dergestalt erfolgen, dass sie zumindest ebenso
hervorgehoben sind wie die Hinweise auf die übrigen Rechteinhaber. Die
Angaben nach diesem Abschnitt dürfen Sie ausschließlich zur Angabe der
Rechteinhaberschaft in der oben bezeichneten Weise verwenden. Durch die
Ausübung Ihrer Rechte aus dieser Lizenz dürfen Sie ohne eine vorherige,
separat und schriftlich vorliegende Zustimmung des Lizenzgebers und /
oder des Zuschreibungsempfängers weder explizit noch implizit
irgendeine Verbindung zum Lizenzgeber oder Zuschreibungsempfänger und
ebenso wenig eine Unterstützung oder Billigung durch ihn andeuten.</p>
</li>
<li>Die oben unter 4.a) bis c) genannten Einschränkungen gelten nicht
für solche Teile des Schutzgegenstandes, die allein deshalb unter den
Schutzgegenstandsbegriff fallen, weil sie als Datenbanken oder
Zusammenstellungen von Daten einen immaterialgüterrechtlichen Schutz
eigener Art genießen.</li>
<li>
<p>Bezüglich Vergütung für die Nutzung des Schutzgegenstandes gilt
Folgendes:</p>
<ol type="i">
<li><strong>Unverzichtbare gesetzliche Vergütungsansprüche</strong>:
Soweit unverzichtbare Vergütungsansprüche im Gegenzug für gesetzliche
Lizenzen vorgesehen oder Pauschalabgabensysteme (zum Beispiel für
Leermedien) vorhanden sind, behält sich der Lizenzgeber das
ausschließliche Recht vor, die entsprechende Vergütung einzuziehen für
jede Ausübung eines Rechts aus dieser Lizenz durch Sie.</li>
<li><strong>Vergütung bei Zwangslizenzen</strong>: Sofern
Zwangslizenzen außerhalb dieser Lizenz vorgesehen sind und zustande
kommen, behält sich der Lizenzgeber das ausschließliche Recht auf
Einziehung der entsprechenden Vergütung für den Fall vor, dass Sie eine
Nutzung des Schutzgegenstandes für andere als die in Abschnitt 4.b) als
nicht-kommerziell definierten Zwecke vornehmen, verzichtet für alle
übrigen, lizenzgerechten Fälle von Nutzung jedoch auf jegliche
Vergütung.</li>
<li><strong>Vergütung in sonstigen Fällen</strong>: Bezüglich
lizenzgerechter Nutzung des Schutzgegenstandes durch Sie, die nicht
unter die beiden vorherigen Abschnitte (i) und (ii) fällt, verzichtet
der Lizenzgeber auf jegliche Vergütung, unabhängig davon, ob eine
Einziehung der Vergütung durch ihn selbst oder nur durch eine
Verwertungsgesellschaft möglich wäre. Der Lizenzgeber behält sich
jedoch das ausschließliche Recht auf Einziehung der entsprechenden
Vergütung (durch ihn selbst oder eine Verwertungsgesellschaft) für den
Fall vor, dass Sie eine Nutzung des Schutzgegenstandes für andere als
die in Abschnitt 4.b) als nicht-kommerziell definierten Zwecke
vornehmen.</li>
</ol>
</li>
<li>Persönlichkeitsrechte bleiben - soweit sie bestehen - von dieser
Lizenz unberührt.</li>
</ol>
<p><strong>5. Gewährleistung</strong></p>
<p>SOFERN KEINE ANDERS LAUTENDE, SCHRIFTLICHE VEREINBARUNG ZWISCHEN DEM
LIZENZGEBER UND IHNEN GESCHLOSSEN WURDE UND SOWEIT MÄNGEL NICHT
ARGLISTIG VERSCHWIEGEN WURDEN, BIETET DER LIZENZGEBER DEN
SCHUTZGEGENSTAND UND DIE EINRÄUMUNG VON RECHTEN UNTER AUSSCHLUSS
JEGLICHER GEWÄHRLEISTUNG AN UND ÜBERNIMMT WEDER AUSDRÜCKLICH NOCH
KONKLUDENT GARANTIEN IRGENDEINER ART. DIES UMFASST INSBESONDERE DAS
FREISEIN VON SACH- UND RECHTSMÄNGELN, UNABHÄNGIG VON DEREN
ERKENNBARKEIT FÜR DEN LIZENZGEBER, DIE VERKEHRSFÄHIGKEIT DES
SCHUTZGEGENSTANDES, SEINE VERWENDBARKEIT FÜR EINEN BESTIMMTEN ZWECK
SOWIE DIE KORREKTHEIT VON BESCHREIBUNGEN. DIESE GEWÄHRLEISTUNGSBESCHRÄNKUNG
GILT NICHT, SOWEIT MÄNGEL ZU SCHÄDEN DER IN ABSCHNITT 6 BEZEICHNETEN ART
FÜHREN UND AUF SEITEN DES LIZENZGEBERS DAS JEWEILS GENANNTE VERSCHULDEN BZW.
VERTRETENMÜSSEN EBENFALLS VORLIEGT.</p>
<p><strong>6. Haftungsbeschränkung</strong></p>
<p>DER LIZENZGEBER HAFTET IHNEN GEGENÜBER IN BEZUG AUF SCHÄDEN AUS DER
VERLETZUNG DES LEBENS, DES KÖRPERS ODER DER GESUNDHEIT NUR, SOFERN IHM
WENIGSTENS FAHRLÄSSIGKEIT VORZUWERFEN IST, FÜR SONSTIGE SCHÄDEN NUR BEI
GROBER FAHRLÄSSIGKEIT ODER VORSATZ, UND ÜBERNIMMT DARÜBER HINAUS
KEINERLEI FREIWILLIGE HAFTUNG.</p>
<p><strong>7. Erlöschen</strong></p>
<ol type="a">
<li>Diese Lizenz und die durch sie eingeräumten Nutzungsrechte
erlöschen mit Wirkung für die Zukunft im Falle eines Verstoßes gegen
die Lizenzbedingungen durch Sie, ohne dass es dazu der Kenntnis des
Lizenzgebers vom Verstoß oder einer weiteren Handlung einer der
Vertragsparteien bedarf. Mit natürlichen oder juristischen Personen,
die den Schutzgegenstand enthaltende Sammelwerke unter den Bedingungen
dieser Lizenz von Ihnen erhalten haben, bestehen nachträglich
entstandene Lizenzbeziehungen jedoch solange weiter, wie die genannten
Personen sich ihrerseits an sämtliche Lizenzbedingungen halten. Darüber
hinaus gelten die Ziffern 1, 2, 5, 6, 7, und 8 auch nach einem
Erlöschen dieser Lizenz fort.</li>
<li>Vorbehaltlich der oben genannten Bedingungen gilt diese Lizenz
unbefristet bis der rechtliche Schutz für den Schutzgegenstand
ausläuft. Davon abgesehen behält der Lizenzgeber das Recht, den
Schutzgegenstand unter anderen Lizenzbedingungen anzubieten oder die
eigene Weitergabe des Schutzgegenstandes jederzeit einzustellen,
solange die Ausübung dieses Rechts nicht einer Kündigung oder einem
Widerruf dieser Lizenz (oder irgendeiner Weiterlizenzierung, die auf
Grundlage dieser Lizenz bereits erfolgt ist bzw. zukünftig noch
erfolgen muss) dient und diese Lizenz unter Berücksichtigung der oben
zum Erlöschen genannten Bedingungen vollumfänglich wirksam bleibt.</li>
</ol>
<p><strong>8. Sonstige Bestimmungen</strong></p>
<ol type="a">
<li>Jedes Mal wenn Sie den Schutzgegenstand für sich genommen oder
als Teil eines Sammelwerkes verbreiten oder öffentlich zeigen, bietet der
Lizenzgeber dem Empfänger eine Lizenz zu den gleichen Bedingungen und
im gleichen Umfang an, wie Ihnen in Form dieser Lizenz.</li>
<li>Sollte eine Bestimmung dieser Lizenz unwirksam sein, so bleibt
davon die Wirksamkeit der Lizenz im Übrigen unberührt.</li>
<li>Keine Bestimmung dieser Lizenz soll als abbedungen und kein
Verstoß gegen sie als zulässig gelten, solange die von dem Verzicht
oder von dem Verstoß betroffene Seite nicht schriftlich zugestimmt hat.</li>
<li>Diese Lizenz (zusammen mit in ihr ausdrücklich vorgesehenen
Erlaubnissen, Mitteilungen und Zustimmungen, soweit diese tatsächlich
vorliegen) stellt die vollständige Vereinbarung zwischen dem
Lizenzgeber und Ihnen in Bezug auf den Schutzgegenstand dar. Es
bestehen keine Abreden, Vereinbarungen oder Erklärungen in Bezug auf
den Schutzgegenstand, die in dieser Lizenz nicht genannt sind.
Rechtsgeschäftliche Änderungen des Verhältnisses zwischen dem
Lizenzgeber und Ihnen sind nur über Modifikationen dieser Lizenz
möglich. Der Lizenzgeber ist an etwaige zusätzliche, einseitig durch
Sie übermittelte Bestimmungen nicht gebunden. Diese Lizenz kann nur
durch schriftliche Vereinbarung zwischen Ihnen und dem Lizenzgeber
modifiziert werden. Derlei Modifikationen wirken ausschließlich
zwischen dem Lizenzgeber und Ihnen und wirken sich nicht auf die
Dritten gemäß Ziffern 8.a) angeboteten Lizenzen aus.</li>
<li>Sofern zwischen Ihnen und dem Lizenzgeber keine anderweitige
Vereinbarung getroffen wurde und soweit Wahlfreiheit besteht, findet
auf diesen Lizenzvertrag das Recht der Bundesrepublik Deutschland
Anwendung.</li>
</ol>
<!-- BREAKOUT FOR CC NOTICE. NOT A PART OF THE LICENSE -->
<blockquote>
<h3>Creative Commons Notice</h3>
<p>Creative Commons ist nicht Partei dieser Lizenz und übernimmt
keinerlei Gewähr oder dergleichen in Bezug auf den Schutzgegenstand.
Creative Commons haftet Ihnen oder einer anderen Partei unter keinem
rechtlichen Gesichtspunkt für irgendwelche Schäden, die - abstrakt oder
konkret, zufällig oder vorhersehbar - im Zusammenhang mit dieser Lizenz
entstehen. Unbeschadet der vorangegangen beiden Sätze, hat Creative
Commons alle Rechte und Pflichten eines Lizenzgebers, wenn es sich
ausdrücklich als Lizenzgeber im Sinne dieser Lizenz bezeichnet.</p>
<p>Creative Commons gewährt den Parteien nur insoweit das Recht, das
Logo und die Marke "Creative Commons" zu nutzen, als dies notwendig
ist, um der Öffentlichkeit gegenüber kenntlich zu machen, dass der
Schutzgegenstand unter einer CCPL steht. Ein darüber hinaus gehender
Gebrauch der Marke "Creative Commons" oder einer verwandten Marke oder
eines verwandten Logos bedarf der vorherigen schriftlichen Zustimmung
von Creative Commons. Jeder erlaubte Gebrauch richtet sich nach der
Creative Commons Marken-Nutzungs-Richtlinie in der jeweils aktuellen
Fassung, die von Zeit zu Zeit auf der Website veröffentlicht oder auf
andere Weise auf Anfrage zugänglich gemacht wird. Zur Klarstellung: Die
genannten Einschränkungen der Markennutzung sind nicht Bestandteil
dieser Lizenz.</p>
<p>Creative Commons kann kontaktiert werden über <a href="http://creativecommons.org/">http://creativecommons.org/</a>.</p>
</blockquote>
<!-- END CC NOTICE -->
</div>
</div>
<div id="deed-foot">
<p id="footer"><a href="./">« Zurück zur Commons Deed</a></p>
</div>
</div>
</body>
</html>

11
auth.php Normal file
View File

@ -0,0 +1,11 @@
<?php
session_start();
$hostname = $_SERVER['HTTP_HOST'];
$path = dirname($_SERVER['PHP_SELF']);
if (!isset($_SESSION['angemeldet']) || !$_SESSION['angemeldet']) {
header('Location: http://'.$hostname.($path == '/' ? '' : $path).'/login.php');
exit;
}
?>

120
bar.html Normal file
View File

@ -0,0 +1,120 @@
<html>
<head>
<title>Ansicht Bar</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<link rel="stylesheet" type="text/css" href="css/bestformat.css">
<link rel="stylesheet" href="php/3rdparty/orderstyle/orderstyle.min.css" />
<link rel="stylesheet" href="php/3rdparty/orderstyle/jquery.mobile.icons.min.css" />
<link rel="stylesheet" href="php/3rdparty/jquery.mobile-1.4.0.min.css" type="text/css" />
<script src="php/3rdparty/jquery-2.0.3.min.js"></script>
<script src="php/3rdparty/jquery.mobile-1.4.0.min.js"></script>
<script src="utilities.js"></script>
<script src="kitchenbar.js"></script>
<style>
#tableWithEntriesToCook,#tableWithCookedEntries,#headertableToCook
{
width:100%;
}
#declareready,#declarenotcooked {
text-align:center;
vertical-align:middle;
}
#readybutton,#notreadybutton {
width:90%;
}
#optiontext
{
font-family:sans-serif;
font-size:10pt;
color:black;
}
#tableWithCookedEntries td {
background:#b4b4ec
}
.dividerline {
height: 10px;
}
</style>
</head>
<body>
<script>
// refreshing the content
$(document).ready(function() {
var refreshId = setInterval(function() {
getAndDisplayAllEntries();
}, 10000);
$.ajaxSetup({ cache: false });
});
function getEntriesToCook() {
// Drinks
var data = { kind: 1 };
doAjax("GET","php/contenthandler.php?module=queue&command=getJsonAllQueueItemsToMake",data,fillTableWithEntriesToCook,"no entries to make");
}
function getCookedEntries() {
var data = { kind: 1 };
doAjax("GET","php/contenthandler.php?module=queue&command=getJsonLastMadeItems",data,fillTableWithCookedEntries,"no cooked entries");
}
function hideElementsForNonBarUser(jsonAnswer) {
if (jsonAnswer != "Yes") {
$("#allpagecontent").hide();
}
}
//pageinit event for first page
//triggers only once
//write all your on-load functions and event handlers pertaining to page1
$(document).on("pageinit", "#bar-page", function () {
initializeMainMenu("#modulemenu");
hideMenu();
doAjax("GET","php/contenthandler.php?module=admin&command=isLoggedinUserBar",null,hideElementsForNonBarUser,"Fehler");
getAndDisplayAllEntries();
});
</script>
<!--first page -->
<div data-role="page" id="bar-page">
<div data-role="panel" id="modulepanel" data-position="right" data-display="overlay">
<ul data-role="listview" id="modulemenu" data-divider-theme="a" data-inset="true">
<li data-role="list-divider" data-theme="b" data-role="heading">Module</li>
</ul>
</div><!-- /panel -->
<div data-role="header" data-theme="b" data-position="fixed">
<h1>Bar</h1>
<div data-type="horizontal" style="top:0px;position:absolute;float:right;z-index:10;display:inline;" align="right" class="ui-btn-right">
<a href="#" data-role="button" data-icon="arrow-d" data-ajax="false" id="menuswitch">Module</a>
</div>
</div>
<div data-role="content" id="allpagecontent">
<div id=listWithEntriesToCook></div>
<hr>
<div id=listWithCookedEntries></div>
</div>
<div data-role="footer" data-theme="b" id="thefooterr">
<div class="ui-grid-a">
<div class="ui-block-a userinfo" id="loggedinuser"></div>
<div class="ui-block-b grid_right" id="versioninfo"></div>
</div><!-- /grid-a -->
</div> <!-- footer -->
</body>
</html>

231
bill.html Normal file
View File

@ -0,0 +1,231 @@
<html>
<head>
<title>Ansicht Kassenbons</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<link rel="stylesheet" type="text/css" href="css/bestformat.css">
<link rel="stylesheet" href="php/3rdparty/orderstyle/orderstyle.min.css" />
<link rel="stylesheet" href="php/3rdparty/orderstyle/jquery.mobile.icons.min.css" />
<link rel="stylesheet" href="php/3rdparty/jquery.mobile-1.4.0.min.css" type="text/css" />
<script src="php/3rdparty/jquery-2.0.3.min.js"></script>
<script src="php/3rdparty/jquery.mobile-1.4.0.min.js"></script>
<script src="utilities.js"></script>
<style>
@media all
{
.receipttable {width: 30%; background-color: #cccccc;}
}
@media all
{
#colWithBillOverview { vertical-align:top;}
}
@media all
{
#receiptbill {display: none;}
}
@media print
{
.receipttable {width: 100%;};
}
@media print
{
#receiptbill {width: 100%; display: block;};
}
@media print
{
#theheader,#modulemenu,#billlist,#thefooterr {display: none;}
}
</style>
</head>
<body>
<script>
// refreshing the content
$(document).ready(function() {
var refreshId = setInterval(function() {
getAndDisplayAllEntries();
}, 10000);
$.ajaxSetup({ cache: false });
});
function getPayPrintType() {
doAjax("GET", "php/contenthandler.php?module=admin&command=getPayPrintType", null, insertPayPrintType, "Fehler Druckkonfiguration");
}
function insertPayPrintType(payPrintType) {
$("#bill-page").data("payPrintType",payPrintType);
}
function getLastBills() {
doAjax("GET","php/contenthandler.php?module=bill&command=getLastBillsWithContent",null,displayBillsWithContent,"letzte Bons");
}
function doAjaxCancelBill(billid,stornocode) {
var data = {
billid: billid,
stornocode: stornocode
};
doAjax("POST","php/contenthandler.php?module=bill&command=cancelBill",data,cancelBill,"Bonstorno abgebrochen");
}
function cancelBill(jsonText) {
if (jsonText.status != "OK") {
alert("Fehler " + jsonText.code + ": " + jsonText.msg);
}
setTimeout(function(){location.reload()},1000);
}
function displayBillsWithContent (jsonContent) {
if (jsonContent.status != "OK") {
return;
}
jsonContent = jsonContent.msg;
$.each(jsonContent, function (i, entry) {
var id = entry.id;
var shortdate = entry.shortdate;
var longdate = entry.longdate;
var tablename = entry.tablename;
var brutto = entry.brutto;
var content = entry.billcontent;
var printbuttonid = 'print' + id;
var cancelbuttonid = 'cancel' + id;
var collapse_elem_id = 'collapse_' + id;
var collapse_elem = '<div data-role="collapsible" data-content-theme="e" id="'+collapse_elem_id+'" data-collapsed="true" data-theme="c">';
var header = '<h3>'+shortdate + ": Tisch &lt;" + tablename + "&gt; " + brutto + ' Euro</h3>';
if (entry.isClosed == 1) {
header = '<h3>'+shortdate + ": Tisch &lt;" + tablename + "&gt; " + brutto + ' Euro -abgeschlossen-</h3>';
}
var printbutton = '<a href="#" data-role="button" id="' + printbuttonid + '" data-theme="f" class="printbuttons">Drucken</a>';
var cancelButton = '<a href="#" data-role="button" id="' + cancelbuttonid + '" data-theme="f" class="cancelbuttons">Storno</a>';
if (entry.isClosed == 0) {
// bill is not closed - so can be printed AND cancelled
$(collapse_elem + header + '<p><center>' + printbutton + cancelButton + '<br>' + content + '</center></p>').appendTo('#billlist');
} else {
// bill is closed - only printing possible, no cancelling
$(collapse_elem + header + '<p><center>' + printbutton + '<br>' + content + '</center></p>').appendTo('#billlist');
}
$("#" + collapse_elem_id).find("#billdate").html(longdate);
$("#" + collapse_elem_id).find("#billid").html("Bon-Nr:" + id);
var contentToPrint = new Array(id,longdate,content);
$("#" + printbuttonid).data("entrydata", contentToPrint);
if (entry.isClosed == 0) {
$("#" + cancelbuttonid).data("billid", id);
}
});
$('#billlist').trigger('create');
$(".printbuttons").off("click").on("click", function (e) {
var contentToPrint = $(this).data("entrydata");
$("#receiptbill").html(contentToPrint[2]);
$("#receiptbill table").css('width', '100%');
$("#receiptbill").find("#billdate").html(contentToPrint[1]);
$("#receiptbill").find("#billid").html(contentToPrint[0]);
var payPrintType = $("#bill-page").data("payPrintType");
if (payPrintType == 's') {
printBill($("#receiptbill").html());
} else {
window.print();
}
});
$(".cancelbuttons").off("click").on("click", function (e) {
var billid=$(this).data("billid");
areYouSure("Storno?", "Bon stornieren?", "Ja", function() {
doAjaxCancelBill(billid,$("#stornocode").val());
});
});
}
function printBill(htmlText) {
doAjax("POST","php/contenthandler.php?module=printqueue&command=queuePrintJob",
{content : htmlText, type: 3 }, null, "Druckfehler");
}
function areYouSure(text1, text2, button, callback) {
$("#sure .sure-1").text(text1);
$("#sure .sure-2").text(text2);
$("#sure .sure-do").text(button).off("click.sure").on("click.sure", function() {
callback();
$(this).off("click.sure");
});
$.mobile.changePage("#sure");
}
//pageinit event for first page
//triggers only once
//write all your on-load functions and event handlers pertaining to page1
$(document).on("pageinit", "#bill-page", function () {
initializeMainMenu("#modulemenu");
hideMenu();
getPayPrintType();
getLastBills();
});
</script>
<div data-role="page" id="bill-page">
<div data-role="panel" id="modulepanel" data-position="right" data-display="overlay">
<ul data-role="listview" id="modulemenu" data-divider-theme="a" data-inset="true">
<li data-role="list-divider" data-theme="b" data-role="heading">Module</li>
</ul>
</div><!-- /panel -->
<div data-role="header" data-theme="b" data-position="fixed" id="theheader">
<h1>Kassenbons</h1>
<div data-type="horizontal" style="top:0px;position:absolute;float:right;z-index:10;display:inline;" align="right" class="ui-btn-right">
<a href="#" data-role="button" data-icon="arrow-d" data-ajax="false" id="menuswitch">Module</a>
</div>
</div>
<div data-role="content">
<div id=billlist></div>
<div id=receiptbill></div>
</div>
<div data-role="footer" data-theme="b" id="thefooterr">
<div class="ui-grid-a">
<div class="ui-block-a userinfo" id="loggedinuser"></div>
<div class="ui-block-b grid_right" id="versioninfo"></div>
</div><!-- /grid-a -->
</div> <!-- footer -->
<div data-role="popup" id="cancelfailed" name="cancelfailed" data-overlay-theme="a" style="max-width:70%;" class="ui-corner-all">
<div data-role="header" class="ui-corner-top">
<h1>Storno fehlgeschlagen</h1>
</div>
<a href="#" data-rel="back" data-role="button" data-theme="a" data-icon="delete" data-iconpos="notext" class="ui-btn-right"></a>
<div data-role="content" class="ui-corner-bottom ui-content">
<p>Der Stornovorgang ist fehlgeschlagen. Die wahrscheinlichste Ursache ist ein Tagesabschluss, der den zu
stornierenden Bon einschließt. In diesem Fall darf der Bon rückwirkend nicht mehr annuliert werden.</p>
</div>
</div> <!-- popup for reading sample queue data -->
</div>
<!-- Dialog page -->
<div data-role="dialog" id="sure" data-title="Entfernen?">
<div data-role="content">
<h3 class="sure-1">?</h3>
<p class="sure-2">?</p>
<form>
<label for="stornocode">Stornocode: </label>
<input type="password" id="stornocode" value="" data-mini="true">
<a href="#" class="sure-do" data-role="button" data-theme="b" data-rel="back">Ja</a>
<a href="#" data-role="button" data-theme="c" data-rel="back">Nein</a>
</form>
</div>
</div>
</body>
</html>

303
css/bestformat.css Normal file
View File

@ -0,0 +1,303 @@
@CHARSET "UTF-8";
table.viewtable {
width: 100%;
display: block;
table-layout: fixed;
}
table.viewtable th {
background:#7abe5f;
font-size:10pt;
border-bottom:1px solid rgba(255,255,255,.7);
-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.2);
-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,.2);
-o-box-shadow:inset 0 1px 0 rgba(255,255,255,.2);
box-shadow:inset 0 1px 0 rgba(255,255,255,.2);
padding:6px 10px;}
table.viewtable td {
background:#eed33f;
font-size:8pt;
border-bottom:1px solid #fafafa;
border-bottom:1px solid rgba(255,255,255,.5);
padding:6px 10px;
color:rgba(0,0,0,255);}
table.viewtable th.complete {
background:#17370b;
color:rgba(255,255,255,0);}
table.viewtable th.incomplete {
background:#9c9224;
color:rgba(0,0,0,255);}
table.viewtable td.complete {
background:#78bb5e;
color:rgba(0,0,0,255);}
table.viewtable td.incomplete {
background:#eed33f;
color:rgba(0,0,0,255);}
table.viewtable tr:last-child td {
border-bottom:none;
}
table.viewtable tr:hover td {
background-color: #ffaaff;
}
table.receipttable td {
border: solid black 0px;
padding: 3px;
text-align:left;
vertical-align:bottom;
}
table.receipttable td.price {
border: solid black 0px;
padding: 3px;
text-align:right;
vertical-align:bottom;
}
table.receipttable td.restinfo {
text-align:center;
vertical-align:bottom;
}
table.receipttable td.declaration {
font-weight:bold;
text-align:right;
}
table.gridtable {
font-family: verdana,arial,sans-serif;
font-size:20px;
color:#333333;
border-width: 2px;
border-color: #666666;
border-collapse: collapse;
width: 100%;
}
table.gridtable th {
border-width: 1px;
padding: 8px;
border-style: solid;
border-color: #666666;
background-color: #dedede;
font-weight:bold;
}
table.gridtable td {
border-width: 1px;
padding: 8px;
border-style: solid;
border-color: #666666;
background-color: #ffffff;
}
table.linetable {
font-family: verdana,arial,sans-serif;
font-size:20px;
color:#333333;
border-width: 2px;
border-color: #666666;
border-collapse: collapse;
width: 100%;
}
table.linetable th {
border-width: 1px;
padding: 8px;
border-style: solid;
border-color: #666666;
background-color: #dedede;
font-weight:bold;
}
table.linetable td {
border-width: 1px;
padding: 8px;
border-style: solid;
border-color: #666666;
}
table.linetable tr{
background: #ffffff;
}
table.linetable tr:hover {
background-color: #ffaaff;
}
table.reporttable {
font-family: verdana,arial,sans-serif;
font-size:20px;
color:#333333;
border: solid black 2px;
border-color: #666666;
border-collapse: collapse;
width: 100%;
border-spacing: 10px;
}
table.reporttable th {
border-width: 1px;
padding: 8px;
border-style: solid;
border-color: #666666;
background-color: #dedede;
font-weight:bold;
}
table.reporttable td {
border: solid black 0px
padding: 8px;
text-align:left;
vertical-align:top;
}
table.reporttable tr{
background: #d6f8be;
}
table.reporttable tr:hover {
background-color: #ffaaff;
}
table.commandtable {
font-family: verdana,arial,sans-serif;
font-size:20px;
color:#333333;
border-width: 1px;
border-color: #666666;
border-collapse: collapse;
width: 100%;
}
table.commandtable th {
border-width: 1px;
padding: 8px;
border-style: solid;
border-color: #666666;
background-color: #e4d662;
font-weight:bold;
}
table.commandtable td {
border-width: 1px;
padding: 8px;
border-style: solid;
border-color: #666666;
background-color: #ffffff;
font-weight:bold;
}
table.navitable {
font-family: verdana,arial,sans-serif;
font-size:20px;
color:#333333;
border-width: 1px;
border-color: #666666;
border-collapse: collapse;
width: 100%;
}
table.navitable th {
border-width: 1px;
padding: 8px;
border-style: solid;
border-color: #666666;
background-color: #d09696;
font-weight:bold;
}
table.navitable td {
border-width: 1px;
padding: 8px;
border-style: solid;
border-color: #666666;
background-color: #c08f8f;
}
table.infotable {
font-family: verdana,arial,sans-serif;
font-size:20px;
color:#333333;
border-width: 1px;
border-color: #666666;
border-collapse: collapse;
width: 100%;
}
table.infotable th {
border-width: 1px;
padding: 8px;
border-style: solid;
border-color: #666666;
background-color: #c3c3ff;
font-weight:bold;
}
table.infotable td {
border-width: 1px;
padding: 8px;
border-style: solid;
border-color: #666666;
background-color: #c3c3ff;
}
table.billtable {
font-family: verdana,arial,sans-serif;
font-size:20px;
color:#000000;
border: solid black 2px;
border-color: #000000;
border-collapse: collapse;
width: 100%;
border-spacing: 10px;
}
table.billtable th {
border-width: 1px;
padding: 8px;
border-style: solid;
border-color: #666666;
background-color: #c3c3ff;
font-weight:bold;
text-align:left;
}
table.billtable #pricecolheader {
border-width: 1px;
padding: 8px;
border-style: solid;
border-color: #666666;
background-color: #c3c3ff;
font-weight:bold;
text-align:right;
}
table.billtable td {
border: solid black 0px
padding: 8px;
background-color: #ffffff;
text-align:left;
}
table.billtable #pricecol {
border: solid black 0px
padding: 8px;
background-color: #ffffff;
text-align:right;
}
table.billtable #totalprice {
border-width: 1px;
padding: 8px;
border-style: solid;
border-color: #666666;
background-color: #c3c3ff;
font-weight:bold;
text-align:center;
}
.grid_right {
text-align :right;
font-style: italic;
}
.userinfo {
font-style: italic;
}

View File

@ -0,0 +1,14 @@
<tr><td colspan=6><br>Angaben zum Nachweis der H&ouml;he und <br>
der betrieblichen Veranlassung von<br>
Bewirtungsaufwendungen<br>
(Par. 4 Abs. 5 Ziff. 2 EStG)<br></tr>
<tr><td colspan=3 style="border-style:solid; border-width:thin">Tag der Bewirtung<br><br><br>
<td colspan=3 style="border-style:solid; border-width:thin">Ort der Bewirtung<br><br><br>
</tr>
<tr><td colspan=6 style="border-style:solid; border-width:thin">Bewirtete Person(en)<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br></tr>
<tr><td colspan=6 style="border-style:solid; border-width:thin">Anlass der Bewirtung<br><br><br><br><br><br></tr>
<tr><td colspan=6 style="border-style:solid; border-width:thin">Ort, Datum &nbsp;&nbsp;&nbsp;&nbsp;Unterschrift<br><br><br><br></tr>

BIN
customer/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 KiB

72
customer/speisekarte.txt Executable file
View File

@ -0,0 +1,72 @@
# ***** Es wurde noch keine Speisekarte festgelegt ****
# ***** Daher wird hier nun eine Beispielkarte angezeigt, ****
# ***** die als Vorlage dienen soll ****
#
# Einrückungen bauen die Produktpalette hierarchisch auf
# Die tiefsten Einrückungen stellen die Produkte dar, alle
# Ebenen darüber die Kategorien
#
# Ein Produkteintrag hat folgendes Format:
# Kurzname ; NormalPreis (Stufe A); Langname # Preis (Stufe B); Preis (Stufe C)
# dabei ist der Kurzname nur in der Kellneransicht zu sehen
# Nur Kurzname und Preis (A) sind erforderlich, die anderen Teile werden bei
# Auslassung automatisch gefüllt (Preis B=C=A und Langname = Kurzname)
#
# Bei Kategorien:
# Wird ein K und B mitgegeben, so werden diese Produkte über die Küchen-
# und Bereitstellungsansicht geführt. Die Einstellung wird auf die Unterkategorien
# vererbt, wenn die darunter liegenden Kategorien keine Angabe dazu machen.
#
# Wenn ein D da steht, wird als Typ "Getränk" angenommen, bei einem F "Speise".
# Auch hier wird der übergeordnete Eintrag genommen, wenn Angabe fehlt.
#
#
# Reservierte Buchstaben: = ; #
# (Diese werden als Trenner verwendet!)
#
Speisen = KBF
Vom Grill
El Greco 2P; 26.90; EL Greco 2 Personen # 20.90; 13.80
El Greco 1P; 14.80; EL Greco 1 Person
Fleisch-Gerichte
Lammkotelett; 13.50; Lammkotelett # 11.30; 6.00
Zigeuner/Jägerschnitzel; 10.50 # 9.80; 3.50
Suzukakia 4H; 10.50; Suzukakia 4 Hacksteaks
Suzukakia 2H; 10.50; Suzukakia 2 Hacksteaks
Souvlaki; 10.50
Italienische Küche
Pizza
Siciliana
klein; 7.50; Pizza Siciliana klein
groß; 7.50; Pizza Siciliana groß
Salami
klein; 6,20; Pizza Salami klein
groß; 7.80; Pizza Salami groß
Special; 6.90; Ital. Tagesspecial
Getränke = KBD
Biere
Holsten; 1.60 # 1.00; 0.80
Warsteiner; 1.80 # 1.20
Becks Gold; 1.80
Alsterwasser; 1.50
Softdrinks
Coca-Cola; 2.50
Fanta; 2.50
Ohne Zucker = B
Cola Zero; 2.21
Sprite; 2.50
Eistee; 1.60
Wasser
Apollinaris; 2.20
still; 1.20; Stilles Wasser
Kategorie Selbstbedienung =
Frühstücksbuffet; 8.90
Frühstücksbuffet + Kaffe; 12.20
Kategorie vorbereitet = B
Deserts; 2.20
Fertigprodukte; 1.20
Kategorie Nur Küche = K
Tischzubereitung Fisch; 2.20
Tischzubereitung Fleischmenü; 1.20
Weine
Lambrusco; 7.00; Wein Lambrusco

190
feedback.html Normal file
View File

@ -0,0 +1,190 @@
<html>
<head>
<title>Ansicht Feedback</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<link rel="stylesheet" type="text/css" href="css/bestformat.css">
<link rel="stylesheet" href="php/3rdparty/orderstyle/orderstyle.min.css" />
<link rel="stylesheet" href="php/3rdparty/orderstyle/jquery.mobile.icons.min.css" />
<link rel="stylesheet" href="php/3rdparty/jquery.mobile-1.4.0.min.css" type="text/css" />
<script src="php/3rdparty/jquery-2.0.3.min.js"></script>
<script src="php/3rdparty/jquery.mobile-1.4.0.min.js"></script>
<script src="utilities.js"></script>
<script src="kitchenbar.js"></script>
<style>
#tableWithEntriesToCook,#tableWithCookedEntries,#headertableToCook
{
width:100%;
}
#declareready,#declarenotcooked {
text-align:center;
vertical-align:middle;
}
#readybutton,#notreadybutton {
width:90%;
}
#optiontext
{
font-family:sans-serif;
font-size:10pt;
color:black;
}
#tableWithCookedEntries td {
background:#b4b4ec
}
.dividerline {
height: 10px;
}
</style>
</head>
<body>
<script>
function binding() {
$("#sendMail").off("click").on("click", function (e) {
e.stopImmediatePropagation();
e.preventDefault();
var role = $('#role option:selected').text();
var topic = $('#topic option:selected').text();
var email = $("#emailaddr").val();
var tel = $("#tel").val();
var content = $("#content").val();
var rights = $("#rights").val();
if (email == '') {
alert("Email-Adresse angeben!");
return;
}
if (content == '') {
alert("Nachrichtenfeld ist leer");
return;
}
var data = {
role : role,
topic : topic,
email : email,
tel : tel,
allowSendRights : (rights == 1 ? 1 : 0),
content : content
};
doAjax("POST","php/contenthandler.php?module=feedback&command=sendMail",data,mailWasSent,"Fehler Nachrichtenversand");
});
}
function mailWasSent(jsonText) {
if (jsonText == "OK") {
alert ("Wenn eine Kopie der Nachricht an die angegebene Emailadresse gesendet wurde, scheint der Mailversand an den Entwickler erfolgreich gewesen zu sein.");
} else {
alert ("Fehler beim Nachrichtenversand: " + jsonText);
}
$("#emailaddr").val("");
$("#tel").val("");
$("#content").val("");
location.reload();
}
//pageinit event for first page
//triggers only once
//write all your on-load functions and event handlers pertaining to page1
$(document).on("pageinit", "#feedback-page", function () {
initializeMainMenu("#modulemenu");
hideMenu();
binding();
});
</script>
<!--first page -->
<div data-role="page" id="feedback-page">
<div data-role="panel" id="modulepanel" data-position="right" data-display="overlay">
<ul data-role="listview" id="modulemenu" data-divider-theme="a" data-inset="true">
<li data-role="list-divider" data-theme="b" data-role="heading">Module</li>
</ul>
</div><!-- /panel -->
<div data-role="header" data-theme="b" data-position="fixed">
<h1>Feedback</h1>
<div data-type="horizontal" style="top:0px;position:absolute;float:right;z-index:10;display:inline;" align="right" class="ui-btn-right">
<a href="#" data-role="button" data-icon="arrow-d" data-ajax="false" id="menuswitch">Module</a>
</div>
</div>
<div data-role="content" id="allpagecontent">
<p>Diese Seite dient zur Übermittlung von Feedback an den Entwickler. Die Email wird das Mailkonto
des Betreibers versendet.</p>
<form>
<div class="ui-field-contain">
<label for="role">Rolle:</label>
<select name="role" id="role" data-theme="e">
<option value="1" selected>Kellner</option>
<option value="2">Küchenpersonal</option>
<option value="3">Gastwirt</option>
<option value="4">Betriebsprüfer</option>
<option value="5">Tester</option>
</select>
</div> <!-- ui-field-contain -->
<div class="ui-field-contain">
<label for="topic">Thema:</label>
<select name="topic" id="topic" data-theme="e">
<option value="1" selected>Problem</option>
<option value="2">Frage</option>
<option value="3">Allg. Rückmeldung</option>
</select>
</div> <!-- ui-field-contain -->
<div class="ui-field-contain">
<label for="rights">Übermittlung:</label>
<select name="rights" id="rights" data-theme="e">
<option value="1" selected>mit DB-Info und Benutzerrechten</option>
<option value="2">nur Nachricht</option>
</select>
</div> <!-- ui-field-contain -->
<div class="ui-field-contain">
<label for="emailaddr">Email:</label>
<input type="text" id="emailaddr" value="" data-mini="true" placeholder="Email-Adresse" data-theme="e" />
</div> <!-- ui-field-contain -->
<div class="ui-field-contain">
<label for="tel">Telefon:</label>
<input type="text" id="tel" value="" data-mini="true" placeholder="0123-456789" data-theme="e"/>
</div> <!-- ui-field-contain -->
<div class="ui-field-contain">
<label for="content">Nachricht:</label>
<textarea cols="40" rows="8" name="content" id="content" data-theme="c"></textarea>
</div> <!-- ui-field-contain -->
<p>Bitte <i>Telefonnummer</i> angeben, wenn eine <b>Antwort</b> per Telefon gewünscht wird.
<br>Eine Antwort des Entwicklers
kann nicht garantiert werden! Informationen über den verwendeten Internetbrowser wird an den Entwickler gesendet, damit mögliche Fragen
oder Probleme leichter identifiziert werden können.</p>
<button type="submit" data-theme="f" data-icon="check" id="sendMail">Absenden</button>
</form>
</div>
<div data-role="footer" data-theme="b" id="thefooterr">
<div class="ui-grid-a">
<div class="ui-block-a userinfo" id="loggedinuser"></div>
<div class="ui-block-b grid_right" id="versioninfo"></div>
</div><!-- /grid-a -->
</div> <!-- footer -->
</body>
</html>

BIN
img/add.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 569 B

BIN
img/back.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
img/banner.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 478 KiB

BIN
img/bannerwithphone.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 501 KiB

BIN
img/cook.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

BIN
img/cook_l.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

BIN
img/delete.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 799 B

BIN
img/green.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 160 B

BIN
img/home.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 986 B

BIN
img/notavailable.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 594 B

BIN
img/ok.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 741 B

BIN
img/red.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 160 B

BIN
img/wait.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 260 B

BIN
img/waittimes/10min.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

BIN
img/waittimes/11min.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

BIN
img/waittimes/12min.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

BIN
img/waittimes/13min.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

BIN
img/waittimes/14min.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

BIN
img/waittimes/15min.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

BIN
img/waittimes/16min.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

BIN
img/waittimes/17min.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

BIN
img/waittimes/18min.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

BIN
img/waittimes/19min.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

BIN
img/waittimes/1min.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

BIN
img/waittimes/20min.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

BIN
img/waittimes/25min.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

BIN
img/waittimes/2min.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

BIN
img/waittimes/30min.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

BIN
img/waittimes/3min.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

BIN
img/waittimes/40min.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

BIN
img/waittimes/4min.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

BIN
img/waittimes/50min.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

BIN
img/waittimes/5min.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

BIN
img/waittimes/60min.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

BIN
img/waittimes/6min.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

BIN
img/waittimes/7min.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

BIN
img/waittimes/8min.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

BIN
img/waittimes/9min.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

BIN
img/workflow.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

BIN
img/yellow.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 160 B

182
index.html Normal file
View File

@ -0,0 +1,182 @@
<html>
<head>
<head>
<title>Ansicht Startseite</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css" href="css/bestformat.css">
<link rel="stylesheet" href="php/3rdparty/orderstyle/orderstyle.min.css" />
<link rel="stylesheet" href="php/3rdparty/orderstyle/jquery.mobile.icons.min.css" />
<link rel="stylesheet" href="php/3rdparty/jquery.mobile-1.4.0.min.css" type="text/css" />
<script src="php/3rdparty/jquery-2.0.3.min.js"></script>
<script src="php/3rdparty/jquery.mobile-1.4.0.min.js"></script>
<script src="utilities.js"></script>
</head>
<body>
<script>
function fillUserList(userinfo) {
var text = '<div class="ui-field-contain">';
text += '<select name="userlistselection" id="userlistselection" data-theme="f">';
$.each(userinfo, function (i, aUser) {
var username = aUser.username;
text += '<option>' + username + '</option>';
});
text += '</select>';
$("#userlist").html(text);
$("#loginmask").trigger("create");
}
function askAndFillUserList() {
doAjax("GET","php/contenthandler.php?module=admin&command=getUserList",null,fillUserList,"no user data received");
}
function showLoggedInView(jsonContent) {
if (jsonContent == "YES") {
// no login mask!
$("#loginmask").hide();
$("#logoutarea").show();
} else {
// user needs to log in!
$("#loginmask").show();
$("#logoutarea").hide();
}
}
function isUserAlreadyLoggedIn() {
doAjax("POST","php/contenthandler.php?module=admin&command=isUserAlreadyLoggedIn",null,showLoggedInView,"login status unclear");
}
function goToView(lastPageOfUser) {
window.location.href = lastPageOfUser;
}
function tryAuthenticate(username,password) {
var data = {
username: username,
password: password
};
doAjax("POST", "php/contenthandler.php?module=admin&command=tryAuthenticate", data, displayLoginOrLogoutMask, "Loginstatus" );
}
function displayLoginOrLogoutMask(jsonContent) {
if (jsonContent == "YES") {
// no login mask!
$("#loginmask").hide();
$("#logoutarea").show();
// forward to valid page!
doAjax("GET","php/contenthandler.php?module=admin&command=getViewAfterLogin",null,goToView,"Einstiegsseite nicht bekommen");
} else {
// user needs to log in!
$("#logoutarea").hide();
$("#invalidusercredentials").popup( "open", {transition: 'flip'} );
}
}
function doLogout() {
doAjax("POST", "php/contenthandler.php?module=admin&command=logout", null, showLoginMask, "Logoutproblem");
}
function showLoginMask(jsonContent) {
if (jsonContent == "OK") {
// no login mask!
$("#loginmask").show();
$("#logoutarea").hide();
initializeMainMenu("#modulemenu");
}
}
function binding() {
$("#loginbutton").off("click").on("click", function (e) {
e.stopImmediatePropagation();
e.preventDefault();
var username = $("#userlistselection").find(":selected").text();
var password = $("#passwordfield").val();
tryAuthenticate(username,password);
});
$("#logoutbutton").off("click").on("click", function (e) {
e.stopImmediatePropagation();
e.preventDefault();
doLogout();
});
}
//pageinit event for first page
//triggers only once
//write all your on-load functions and event handlers pertaining to page1
$(document).on("pageinit", "#index-page", function () {
initializeMainMenu("#modulemenu");
hideMenu();
askAndFillUserList();
isUserAlreadyLoggedIn();
binding();
});
</script>
<div data-role="page" id="index-page">
<div data-role="panel" id="modulepanel" data-position="right" data-display="overlay">
<ul data-role="listview" id="modulemenu" data-divider-theme="a" data-inset="true">
<li data-role="list-divider" data-theme="b" data-role="heading">Module</li>
</ul>
</div><!-- /panel -->
<div data-role="header" data-theme="b" data-position="fixed" id="theheader">
<h1>Info</h1>
<div data-type="horizontal" style="top:0px;position:absolute;float:right;z-index:10;display:inline;" align="right" class="ui-btn-right">
<a href="#" data-role="button" data-icon="arrow-d" data-ajax="false" id="menuswitch">Module</a>
</div>
</div>
<div data-role="content">
<div data-role="collapsible" data-content-theme="c" data-collapsed="false" data-theme="e" id="loginmask">
<H2>Logindaten</H2>
<form method="post">
<table border=0>
<tr><td>Username: <td id="userlist"><tr>
<tr><td>Passwort: <td><input type="password" name="password" id="passwordfield"/><tr />
<tr><td colspan=2 align=center><input type="submit" value="Anmelden" id="loginbutton" data-theme="d"/></tr>
</table>
</form>
</div> <!-- Login-Maske -->
<div data-role="collapsible" data-content-theme="c" data-collapsed="false" data-theme="e" id="logoutarea">
<H2>Abmelden</H2>
<form method="post">
<input type="submit" value="Abmelden" id="logoutbutton" data-theme="d"/>
</form>
</div>
</div>
<div data-role="footer" data-theme="b" id="thefooterr">
<div class="ui-grid-a">
<div class="ui-block-a userinfo" id="loggedinuser"></div>
<div class="ui-block-b grid_right" id="versioninfo"></div>
</div><!-- /grid-a -->
</div> <!-- footer -->
</div>
<div data-role="popup" id="invalidusercredentials" name="invalidusercredentials" data-overlay-theme="a" style="max-width:70%;" class="ui-corner-all">
<div data-role="header" class="ui-corner-top">
<h1>Ungültiges Passwort</h1>
</div>
<a href="#" data-rel="back" data-role="button" data-theme="a" data-icon="delete" data-iconpos="notext" class="ui-btn-right"></a>
<div data-role="content" class="ui-corner-bottom ui-content">
<p>Bitte prüfen Sie, ob Sie den richtigen Benutzer ausgewählt und das Passwort korrekt eingegeben haben.</p>
</div>
</div> <!-- popup for failed password change -->
</div>
</body>
</html>

238
install.html Normal file
View File

@ -0,0 +1,238 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Setup</title>
<link rel="stylesheet" type="text/css" href="css/bestformat.css">
<script src="php/3rdparty/jquery-2.0.3.min.js"></script>
<script src="utilities.js"></script>
<script>
function testdb() {
var dbhost = $("#db_host").val();
var dbname = $("#db_name").val();
var dbuser = $("#dbuser").val();
var dbpass = $("#dbpass").val();
var data = {
host:dbhost,
dbname:dbname,
user:dbuser,
pass:dbpass
};
doAjaxSuppressError("POST",
"install/installer.php?command=testDbConnection",
data,answerOfTestDb,
"Kommunikation zum Server fehlerhaft");
}
function getDbVals() {
doAjax("GET",
"install/installer.php?command=getConfig",
null,fillDbVals,
"Kommunikation zum Server fehlerhaft");
}
function fillDbVals(dbVals) {
if (dbVals.status == "OK") {
var db = dbVals.result;
$("#db_host").val(db.host);
$("#db_name").val(db.db);
$("#dbuser").val(db.user);
$("#dbpass").val(db.password);
$("#table_prefix").val(db.tabprefix);
testdb();
}
}
function answerOfTestDb(jsonText) {
if (jsonText.toLowerCase() == 'error') {
$("#testdbstatus").html("<b style='color:red;'>Fehlerhaft</b>");
$("#testdbstatus").data("status",false);
} else {
$("#testdbstatus").html("<b style='color:green;'>OK</b>");
$("#testdbstatus").data("status",true);
}
}
function checkWriteAccess() {
doAjax("GET",
"install/installer.php?command=checkWriteAccess",
null,
insertWriteAccessVals,
"Kommunikation mit Webserver fehlerhaft");
}
function insertBoolVal(id,boolval) {
if (boolval) {
$(id).html("<b style='color:green;'>OK</b>");
$(id).data("status",true);
} else {
$(id).html("<b style='color:red;'>Nicht beschreibbar</b>");
$(id).data("status",false);
}
}
function insertWriteAccessVals(writestatus) {
insertBoolVal("#writeaccessconfigfolder",writestatus.configfolder);
insertBoolVal("#writeaccessconfigfile",writestatus.configfile);
if (
$("#writeaccessconfigfolder").data("status") &&
$("#writeaccessconfigfile").data("status")) {
$("#writestatus").html("<b style='color:green;'>OK</b>");
$("#writestatus").data("status",true);
} else {
$("#writestatus").html("<b style='color:red;'>Fehlerhaft</b>");
$("#writestatus").data("status",false);
}
}
function startinstall() {
if ($("#adminpass").val().length == 0) {
alert("Administratorpasswort ist nicht gesetzt");
return;
}
if ($("#adminpass").val() != $("#adminpass2").val()) {
alert("Administratorpasswort uneinheitlich eingegeben");
return;
}
if ( $("#testdbstatus").data("status") &&
$("#writestatus").data("status")
) {
var data = {
host: $("#db_host").val(),
db: $("#db_name").val(),
user: $("#dbuser").val(),
password: $("#dbpass").val(),
prefix: $("#table_prefix").val(),
adminpass: $("#adminpass").val()
}
$("#progress").html("<b style='color:red;'>Arbeitet...</b>");
//$("#startinstall").attr("disabled", "disabled");
doAjax("POST",
"install/installer.php?command=install",
data,
resultOfInstall,
"Fehler bei der Installation");
} else {
alert("Installation nicht möglich");
}
}
function resultOfInstall(jsonAnswer) {
if (jsonAnswer == "OK") {
$("#progress").html("<b style='color:green;'>Abgeschlossen</b>");
alert("Die Installation ist nun abgeschlossen. Sie werden nun zur Einstiegsseite "
+ "umgeleitet. Wenn Sie sich mit dem soeben vergebenen Password einloggen "
+ "können, war die Installation erfolgreich. Löschen Sie in diesem Fall "
+ "das Verzeichnis 'install', damit die Installation nicht zu einem späteren "
+ "Zeitpunkt versehentlich überschrieben wird!");
window.location.href = "index.html";
}
}
function binding() {
$("#testdb").off("click").on("click", function (e) {
e.stopImmediatePropagation();
e.preventDefault();
testdb();
});
checkWriteAccess();
$("#testwriteaccess").off("click").on("click", function (e) {
e.stopImmediatePropagation();
e.preventDefault();
checkWriteAccess();
});
$("#startinstall").off("click").on("click", function (e) {
e.stopImmediatePropagation();
e.preventDefault();
startinstall();
});
}
$(document).ready(function() {
binding();
checkWriteAccess();
getDbVals();
$("#startinstall").css({ width: '300px', 'padding-top': '10px', 'padding-bottom': '10px' });
});
</script>
</head>
<body style="background-color:SaddleBrown ;">
<center><img src=img/bannerwithphone.png width=800px></img></center>
<form>
<center>
<table border="0" cellpadding="5" cellspacing="0" class="viewtable">
<tr><th width=200px>Kategorie<th width=200px;>Einstellung<th width=200px>Wert</tr>
<tr>
<td rowspan=7>Datenbank
<td align="right">Datenbank-Server: </td>
<td><input id="db_host" type="text" size="30" maxlength="30" placeholder="localhost"></td>
</tr>
<tr>
<td align="right">Datenbank-Name: </td>
<td><input id="db_name" type="text" size="30" maxlength="30"></td>
<tr>
<tr>
<td align="right">Datenbank-Benutzer: </td>
<td><input id="dbuser" type="text" size="30" maxlength="30"></td>
</tr>
<tr>
<td align="right">Datenbank-Passwort: </td>
<td><input id="dbpass" type="password" size="30" maxlength="30"></td>
</tr>
<tr>
<td align="right">Präfix für die Tabellen: </td>
<td><input id="table_prefix" type="text" size="30" maxlength="30"></td>
</tr>
<tr>
<td id=testdbbutton><button type="submit" id="testdb">Teste DB-Zugriff</button>
<td align=center id=testdbstatus>
</tr>
<tr><td rowspan=3>Schreibberechtigungen
<td align="right">php-Verzeichnis
<td align=center id=writeaccessconfigfolder>&nbsp;
</tr>
<tr>
<td align="right">config.php
<td align=center id=writeaccessconfigfile>&nbsp;
</tr>
<tr>
<td><button type="submit" id="testwriteaccess" onclick="checkWriteAccess();">Teste Schreibberechtigungen</button>
<td align=center id=writestatus>
</tr>
<tr>
<td rowspan=2>Applikation
<td align="right">Administrator-Passwort: </td>
<td><input id="adminpass" type="password" size="30" maxlength="30"></td>
</tr>
<tr>
<td align="right">Administrator-Passwort (Wdh.): </td>
<td><input id="adminpass2" type="password" size="30" maxlength="30"></td>
</tr>
<tr>
<td>&nbsp;
<td align=center><button type="submit" id="startinstall" onclick="startinstall();">Starte Installation</button>
<td><div id=progress>&nbsp;</div>
</tr>
</table>
</center>
</form>
</body>
</html>

624
install/installer.php Normal file
View File

@ -0,0 +1,624 @@
<?php
error_reporting(E_ALL);
class Installer {
private function checkwriteaccessconfigfolder() {
return (is_writable("../php"));
}
private function checkwriteaccessconfigfile() {
if (file_exists("../php/config.php")) {
return (is_writable("../php/config.php"));
} else {
return (is_writable("../php"));
}
}
private function checkwritecustomerfolder() {
return (is_writable("../customer"));
}
private function checkwritespeisekarte() {
if (file_exists("../customer/speisekarte.txt")) {
return (is_writable("../customer/speisekarte.txt"));
} else {
return (is_writable("../customer"));
}
}
function checkWriteAccess() {
$retArray = array(
"configfolder" => $this->checkwriteaccessconfigfolder(),
"configfile" => $this->checkwriteaccessconfigfile(),
"customerfolder" => $this->checkwritecustomerfolder(),
"speisekarte" => $this->checkwritespeisekarte()
);
echo json_encode($retArray);
}
}
class ConfigWriter {
function getConfigVals() {
if (is_readable("../php/config.php")) {
include( "../php/config.php" );
$retArray = array(
"host" => MYSQL_HOST,
"db" => MYSQL_DB,
"user" => MYSQL_USER,
"password" => MYSQL_PASSWORD,
"tabprefix" => TAB_PREFIX);
echo json_encode(array("status" => "OK","result" => $retArray));
} else {
echo json_encode(array("status" => "Failed"));
}
}
}
class Admin {
var $prefix = "";
var $pdo;
function setPrefix($pre) {
$this->prefix = $pre;
}
function setPdo($pdo) {
$this->pdo = $pdo;
}
function openDbAndReturnPdo ($host,$db,$user,$password) {
$dsn = 'mysql:host=' . $host . ';dbname=' . $db;
$pdo = null;
try {
$pdo = new PDO($dsn, $user, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch (PDOException $e) {
echo 'Verbindungsproblem: ' . $e->getMessage();
$pdo = null;
}
return $pdo;
}
function createTables()
{
$pdo = $this->pdo;
$this->doSQLcatch($pdo, "DROP TABLE `%hist%`");
$this->doSQLcatch($pdo, "DROP TABLE `%histprod%`");
$this->doSQLcatch($pdo, "DROP TABLE `%histconfig%`");
$this->doSQLcatch($pdo, "DROP TABLE `%histuser%`");
$this->doSQLcatch($pdo, "DROP TABLE `%histactions%`");
$this->doSQLcatch($pdo, "drop TABLE `%billproducts%`");
$this->doSQLcatch($pdo, "drop TABLE `%queue%`");
$this->doSQLcatch($pdo, "drop TABLE `%printjobs%`");
$this->doSQLcatch($pdo, "drop TABLE `%bill%`");
$this->doSQLcatch($pdo, "drop TABLE `%user%`");
$this->doSQLcatch($pdo, "drop TABLE `%closing%`");
$this->doSQLcatch($pdo, "drop TABLE `%config%`");
$this->doSQLcatch($pdo, "drop TABLE `%products%`");
$this->doSQLcatch($pdo, "drop TABLE `%prodtype%`");
$this->doSQLcatch($pdo, "drop TABLE `%pricelevel%`");
$this->doSQLcatch($pdo, "drop TABLE `%resttables%`");
$this->doSQLcatch($pdo, "drop TABLE `%room%`");
$this->doSQLcatch($pdo, "drop TABLE `%payment%`");
$this->createPaymentTable($pdo);
$this->createUserTable($pdo);
$this->createRoomTable($pdo);
$this->createRestTables($pdo);
$this->createConfigTable($pdo);
$this->createProdTypeTable($pdo);
$this->createProductTable($pdo);
$this->createPriceLevelTable($pdo);
$this->createClosingTable($pdo);
$this->createBillTable($pdo);
$this->createQueueTable($pdo);
$this->createBillProductsTable($pdo);
$this->createHistTables($pdo);
$this->createPrintJobsTable($pdo);
$this->doSQL($pdo,"INSERT INTO `%pricelevel%` (`id` , `name`,`info`) VALUES ('1', 'A', 'Normale Preisstufe')");
$this->doSQL($pdo,"INSERT INTO `%pricelevel%` (`id` , `name`,`info`) VALUES ('2', 'B', 'Wochenendtarif')");
$this->doSQL($pdo,"INSERT INTO `%pricelevel%` (`id` , `name`,`info`) VALUES ('3', 'C', 'Happy Hour')");
$this->doSQL($pdo,"INSERT INTO `%config%` (`id` , `name`, `setting`) VALUES (NULL , 'pricelevel', '1')");
$this->doSQL($pdo,"INSERT INTO `%config%` (`id` , `name`, `setting`) VALUES (NULL , 'tax', '19,0')");
$this->doSQL($pdo,"INSERT INTO `%config%` (`id` , `name`, `setting`) VALUES (NULL , 'togotax', '7,0')");
$this->doSQL($pdo,"INSERT INTO `%config%` (`id` , `name`, `setting`) VALUES (NULL , 'stornocode', '123')");
$this->doSQL($pdo,"INSERT INTO `%config%` (`id` , `name`, `setting`) VALUES (NULL , 'printpass', 'printen')");
$this->doSQL($pdo,"INSERT INTO `%config%` (`id` , `name`, `setting`) VALUES (NULL , 'companyinfo', 'Musterrestaurant\nBeispielstrasse 123\n12345 Musterort')");
$this->doSQL($pdo,"INSERT INTO `%config%` (`id` , `name`, `setting`) VALUES (NULL , 'serverurl', '')");
$this->doSQL($pdo,"INSERT INTO `%config%` (`id` , `name`, `setting`) VALUES (NULL , 'email', '')");
$this->doSQL($pdo,"INSERT INTO `%config%` (`id` , `name`, `setting`) VALUES (NULL , 'logourl', 'customer/logo.png')");
$this->doSQL($pdo,"INSERT INTO `%config%` (`id` , `name`, `setting`) VALUES (NULL , 'payprinttype', 'l')");
$this->doSQL($pdo,"INSERT INTO `%config%` (`id` , `name`, `setting`) VALUES (NULL , 'version', '1.0')");
$this->readConfigTableAndSendToHist($pdo);
return;
}
function doSQL($pdo,$sql) {
$stmt = $pdo->prepare($this->resolveTablenamesInSqlString($sql));
$stmt->execute();
}
function doSQLcatch($pdo,$sql) {
try {
$stmt = $pdo->prepare($this->resolveTablenamesInSqlString($sql));
$stmt->execute();
} catch (Exception $e) {
// nothing - table not present or whatever...
}
}
function readConfigTableAndSendToHist($pdo) {
$sql_query = "SELECT * FROM %config%";
$sql_insert_histconfig = "INSERT INTO %histconfig% (id,configid,setting) VALUES (
NULL,?,?)";
$stmt_query = $pdo->prepare($this->resolveTablenamesInSqlString($sql_query));
$stmt_insert_histconfig = $pdo->prepare($this->resolveTablenamesInSqlString($sql_insert_histconfig));
$stmt_query->execute();
$result = $stmt_query->fetchAll();
foreach($result as $row){
$stmt_insert_histconfig->execute(array($row['id'],$row['setting']));
$newRefIdForHist = $pdo->lastInsertId();
$this->insertIntoHist($pdo, '2', $newRefIdForHist);
}
}
private function insertIntoHist($pdo,$action,$refIdForHist) {
date_default_timezone_set('Europe/Berlin');
$currentTime = date('Y-m-d H:i:s');
$sql_insert_hist = "INSERT INTO %hist% (id,date,action,refid) VALUES (NULL,?,?,?)";
$stmt_insert_hist = $pdo->prepare($this->resolveTablenamesInSqlString($sql_insert_hist));
$stmt_insert_hist->execute(array($currentTime, $action, $refIdForHist));
}
function insertAdminUser($adminpass) {
$md5adminpass = md5($adminpass);
$pdo = $this->pdo;
$userInsertSql = "INSERT INTO `%user%` (`id` , `username` , `userpassword`, `is_admin`, `right_waiter`,`right_kitchen`,`right_bar`,`right_supply`,`right_paydesk`,`right_statistics`,`right_bill`,`right_products`,`right_manager`,`active`) VALUES (NULL,?,?,?,?,?,?,?,?,?,?,?,?,'1')";
$stmt = $pdo->prepare($this->resolveTablenamesInSqlString($userInsertSql));
$stmt->execute(array('admin',$md5adminpass,1,0,0,0,0,0,0,0,0,1));
$newUserIdForHist = $pdo->lastInsertId();
// now insert into hist
$sql_insert_histuser = "INSERT INTO %histuser% (`id` , `userid`, `username` ,
`is_admin`, `right_waiter`,`right_kitchen`,`right_bar`,`right_supply`,`right_paydesk`,
`right_statistics`,`right_bill`,`right_products`,`right_manager`,`active`) VALUES (
NULL,?,?,?,?,?,?,?,?,?,?,?,?,?)";
$stmt_insert_histuser = $pdo->prepare($this->resolveTablenamesInSqlString($sql_insert_histuser));
$stmt_insert_histuser->execute(array($newUserIdForHist,'admin',1,0,0,0,0,0,0,0,0,1,1));
$newRefIdForHist = $pdo->lastInsertId();
$this->insertIntoHist($pdo, '3', $newRefIdForHist);
}
function createBillProductsTable($pdo) {
$sql = "
CREATE TABLE `%billproducts%` (
`queueid` INT( 10 ) NOT NULL,
`billid` INT(10) NOT NULL,
FOREIGN KEY (queueid) REFERENCES %queue%(id),
FOREIGN KEY (billid) REFERENCES %bill%(id)
) ENGINE = InnoDb ;
";
$this->doSQL($pdo,$sql);
}
/*
* Create the queue table:
* action: P=Pay, S=Storno
*/
function createQueueTable($pdo)
{
$sql = "
CREATE TABLE `%queue%` (
`id` INT( 10 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`tablenr` INT( 3 ) NOT NULL ,
`productid` INT( 10 ) NULL ,
`pricelevel` INT( 3 ) NOT NULL ,
`price` DECIMAL (5,2) NOT NULL,
`productname` VARCHAR( 150 ) NULL,
`ordertime` DATETIME NULL ,
`anoption` VARCHAR( 150 ) NULL ,
`readytime` DATETIME NOT NULL,
`delivertime` DATETIME NULL,
`payinprogress` INT(3) NOT NULL,
`paidtime` DATETIME NULL,
`billid` INT(10),
`toremove` INT(3) NOT NULL,
`cooking` INT(10) NULL,
`workprinted` INT(2) NOT NULL,
`action` VARCHAR(3) NOT NULL,
FOREIGN KEY (tablenr) REFERENCES %resttables%(id),
FOREIGN KEY (pricelevel) REFERENCES %pricelevel%(id),
FOREIGN KEY (productid) REFERENCES %products%(id),
FOREIGN KEY (billid) REFERENCES %bill%(id),
FOREIGN KEY (cooking) REFERENCES %user%(id)
) ENGINE = InnoDb ;
";
$this->doSQL($pdo,$sql);
}
function createProdTypeTable($pdo)
{
$sql = "
CREATE TABLE `%prodtype%` (
`id` INT (10) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`name` VARCHAR ( 150 ) NOT NULL,
`usekitchen` INT(1) NOT NULL,
`usesupplydesk` INT(1) NOT NULL,
`kind` INT(2) NOT NULL,
`sorting` INT(2) NULL,
`reference` INT (10) NULL,
`removed` INT(1) NULL,
FOREIGN KEY (reference) REFERENCES %prodtype%(id)
) ENGINE = InnoDb ;
";
$this->doSQL($pdo,$sql);
}
function createProductTable($pdo)
{
$sql = "
CREATE TABLE `%products%` (
`id` INT (10) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`shortname` VARCHAR ( 150 ) NOT NULL,
`longname` VARCHAR ( 150 ) NOT NULL,
`priceA` DECIMAL (5,2) NULL,
`priceB` DECIMAL (5,2) NULL,
`priceC` DECIMAL (5,2) NULL,
`category` INT(3) NULL,
`sorting` INT(2) NULL,
`available` INT(2) NOT NULL,
`audio` VARCHAR ( 150 ) NULL,
`removed` INT(1) NULL,
FOREIGN KEY (category) REFERENCES %prodtype%(id)
) ENGINE = InnoDb ;
";
$this->doSQL($pdo,$sql);
}
function createUserTable($pdo)
{
$sql = "
CREATE TABLE `%user%` (
`id` INT (10) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`username` VARCHAR ( 150 ) NOT NULL,
`userpassword` VARCHAR ( 150 ) NOT NULL,
`is_admin` INT (2) NOT NULL,
`right_waiter` INT (2) NOT NULL,
`right_kitchen` INT (2) NOT NULL,
`right_bar` INT (2) NOT NULL,
`right_supply` INT (2) NOT NULL,
`right_paydesk` INT (2) NOT NULL,
`right_statistics` INT (2) NOT NULL,
`right_bill` INT (2) NOT NULL,
`right_products` INT (2) NOT NULL,
`right_manager` INT (2) NOT NULL,
`lastmodule` VARCHAR ( 30 ) NULL,
`ordervolume` INT (2) NULL,
`active` INT (2) NOT NULL
) ENGINE = InnoDb ;
";
$this->doSQL($pdo,$sql);
}
function createPaymentTable($pdo) {
$sql = "
CREATE TABLE `%payment%` (
`id` INT (3) NOT NULL UNIQUE,
`name` VARCHAR ( 20 ) NOT NULL
) ENGINE = InnoDb
";
$stmt = $pdo->prepare($this->resolveTablenamesInSqlString($sql));
$stmt->execute();
$sql = "INSERT INTO %payment% (id,name) VALUES (?,?)";
$stmt = $pdo->prepare($this->resolveTablenamesInSqlString($sql));
$stmt->execute(array('1', 'Barzahlung'));
$stmt = $pdo->prepare($this->resolveTablenamesInSqlString($sql));
$stmt->execute(array('2', 'EC-Kartenzahlung'));
$stmt = $pdo->prepare($this->resolveTablenamesInSqlString($sql));
$stmt->execute(array('3', 'Kreditkartenzahlung'));
$stmt = $pdo->prepare($this->resolveTablenamesInSqlString($sql));
$stmt->execute(array('4', 'Rechnung'));
$stmt = $pdo->prepare($this->resolveTablenamesInSqlString($sql));
$stmt->execute(array('5', 'Ueberweisung'));
$stmt = $pdo->prepare($this->resolveTablenamesInSqlString($sql));
$stmt->execute(array('6', 'Lastschrift'));
}
function createHistTables($pdo) {
$sql = "
CREATE TABLE `%hist%` (
`id` INT (10) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`date` DATETIME NOT NULL ,
`action` INT ( 2 ) NOT NULL,
`refid` INT (10) NOT NULL
) ENGINE = InnoDb
";
$this->doSQL($pdo,$sql);
$sql = "
CREATE TABLE `%histprod%` (
`id` INT (10) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`prodid` INT (10) NOT NULL,
`shortname` VARCHAR ( 150 ) NOT NULL,
`longname` VARCHAR ( 150 ) NOT NULL,
`priceA` DECIMAL (5,2) NULL,
`priceB` DECIMAL (5,2) NULL,
`priceC` DECIMAL (5,2) NULL,
`sorting` INT(2) NULL,
`available` INT(2) NOT NULL,
`audio` VARCHAR ( 150 ) NULL,
FOREIGN KEY (prodid) REFERENCES %products%(id)
) ENGINE = InnoDb
";
$this->doSQL($pdo,$sql);
$sql = "
CREATE TABLE `%histconfig%` (
`id` INT (10) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`configid` INT (10) ,
`setting` VARCHAR ( 10000 ),
FOREIGN KEY (configid) REFERENCES %config%(id)
) ENGINE = InnoDb
";
$this->doSQL($pdo,$sql);
$sql = "
CREATE TABLE `%histuser%` (
`id` INT (10) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`userid` INT (10) ,
`username` VARCHAR ( 150 ) NOT NULL,
`is_admin` INT (2) NOT NULL,
`right_waiter` INT (2) NOT NULL,
`right_kitchen` INT (2) NOT NULL,
`right_bar` INT (2) NOT NULL,
`right_supply` INT (2) NOT NULL,
`right_paydesk` INT (2) NOT NULL,
`right_statistics` INT (2) NOT NULL,
`right_bill` INT (2) NOT NULL,
`right_products` INT (2) NOT NULL,
`right_manager` INT (2) NOT NULL,
`active` INT (2) NOT NULL,
FOREIGN KEY (userid) REFERENCES %user%(id)
) ENGINE = InnoDb
";
$this->doSQL($pdo,$sql);
$sql = "
CREATE TABLE `%histactions%` (
`id` INT (3) NOT NULL,
`name` VARCHAR ( 20 ) NOT NULL,
`description` VARCHAR ( 150 ) NULL
) ENGINE = InnoDb
";
$this->doSQL($pdo,$sql);
$this->defineHistActions($pdo);
}
public function defineHistActions ($pdo) {
$sql = "INSERT INTO %histactions% (id,name,description) VALUES (?,?,?)";
$stmt = $pdo->prepare($this->resolveTablenamesInSqlString($sql));
$stmt->execute(array('1', 'ProdInit', 'Initiales Befuellen der Produkttabelle'));
$stmt->execute(array('2', 'ConfigInit', 'Initiales Befuellen der Konfigurationstabelle'));
$stmt->execute(array('3', 'UserInit', 'Initiales Befuellen der Benutzertabelle'));
$stmt->execute(array('4', 'ProdChange', 'Modifikation der Produktdaten'));
$stmt->execute(array('5', 'ProdCreation', 'Neues Produkt'));
$stmt->execute(array('6', 'ConfigChange', 'Modifikation der Konfiguration'));
$stmt->execute(array('7', 'UserCreation', 'Neuer Benutzer'));
$stmt->execute(array('8', 'UserChange', 'Modifikation eines Benutzers'));
}
function createRoomTable($pdo)
{
$sql = "
CREATE TABLE `%room%` (
`id` INT (10) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`roomname` VARCHAR ( 150 ) NOT NULL,
`removed` INT(2) NULL,
`sorting` INT(2) NULL
) ENGINE = InnoDb ;
";
$stmt = $pdo->prepare($this->resolveTablenamesInSqlString($sql));
$stmt->execute();
}
function createRestTables($pdo)
{
$sql = "
CREATE TABLE `%resttables%` (
`id` INT (10) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`tableno` VARCHAR ( 150 ) NOT NULL,
`roomid` INT ( 10 ) NOT NULL,
`removed` INT(2) NULL,
`sorting` INT(2) NULL,
FOREIGN KEY (roomid) REFERENCES %room%(id)
) ENGINE = InnoDb ;
";
$stmt = $pdo->prepare($this->resolveTablenamesInSqlString($sql));
$stmt->execute();
$sql = "INSERT INTO `%room%` (`id`, `roomname`) VALUES (NULL,?)";
$stmt = $pdo->prepare($this->resolveTablenamesInSqlString($sql));
$stmt->execute(array('Raum 1'));
$roomId = $pdo->lastInsertId();
$sql = "INSERT INTO `%resttables%` (`id` , `tableno`, `roomid`) VALUES (NULL ,?,?)";
$stmt = $pdo->prepare($this->resolveTablenamesInSqlString($sql));
$stmt->execute(array('Tisch 1',$roomId));
$stmt = $pdo->prepare($this->resolveTablenamesInSqlString($sql));
$stmt->execute(array('Tisch 2',$roomId));
}
function createBillTable($pdo)
{
$sql = "
CREATE TABLE `%bill%` (
`id` INT (10) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`billdate` DATETIME NOT NULL ,
`content` VARCHAR ( 50000 ) ,
`brutto` DECIMAL (5,2) NULL,
`netto` DECIMAL (5,2) NULL,
`tableid` VARCHAR ( 150 ) NOT NULL,
`closingid` INT(4) NULL,
`status` VARCHAR(2) NULL,
`paymentid` INT(2) NULL,
`userid` INT(3) NULL,
`ref` INT(10) NULL,
`tax` DECIMAL (5,2) NOT NULL,
FOREIGN KEY (closingid) REFERENCES %closing%(id),
FOREIGN KEY (paymentid) REFERENCES %payment%(id),
FOREIGN KEY (userid) REFERENCES %user%(id),
FOREIGN KEY (ref) REFERENCES %bill%(id)
) ENGINE = InnoDb ;
";
$stmt = $pdo->prepare($this->resolveTablenamesInSqlString($sql));
$stmt->execute();
// insert dummy entry so that select query with closing works
date_default_timezone_set('Europe/Berlin');
$currentTime = date('Y-m-d H:i:s');
$billInsertSql = "INSERT INTO `%bill%` (`id` , `billdate`,`content`,`brutto`,`tableid`,`paymentid`,`tax`) VALUES ( '0', '$currentTime' , '', '', '-1', NULL, '0.00')";
$stmt = $pdo->prepare($this->resolveTablenamesInSqlString($billInsertSql));
$stmt->execute();
}
function createPriceLevelTable($pdo) {
$sql = "
CREATE TABLE `%pricelevel%` (
`id` INT (10) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`name` VARCHAR ( 10000 ) ,
`info` VARCHAR ( 10000 )
) ENGINE = InnoDb ;
";
$stmt = $pdo->prepare($this->resolveTablenamesInSqlString($sql));
$stmt->execute();
}
function createConfigTable($pdo) {
$sql = "
CREATE TABLE `%config%` (
`id` INT (10) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`name` VARCHAR ( 1000 ) ,
`setting` VARCHAR ( 10000 )
) ENGINE = InnoDb ;
";
$stmt = $pdo->prepare($this->resolveTablenamesInSqlString($sql));
$stmt->execute();
}
function createClosingTable($pdo) {
$sql = "
CREATE TABLE `%closing%` (
`id` INT (10) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`closingdate` DATETIME NOT NULL ,
`remark` VARCHAR ( 10000 )
) ENGINE = InnoDb ;
";
$stmt = $pdo->prepare($this->resolveTablenamesInSqlString($sql));
$stmt->execute();
}
function createPrintJobsTable($pdo) {
$sql = "
CREATE TABLE `%printjobs%` (
`id` INT (10) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`content` VARCHAR ( 50000 ) NOT NULL ,
`type` INT (2) NOT NULL
) ENGINE = InnoDb ;
";
$stmt = $pdo->prepare($this->resolveTablenamesInSqlString($sql));
$stmt->execute();
}
function resolveTablenamesInSqlString($sqlString) {
$out = str_replace("%queue%",$this->prefix . "queue",$sqlString);
$out = str_replace("%products%",$this->prefix . "products",$out);
$out = str_replace("%user%",$this->prefix . "user",$out);
$out = str_replace("%room%",$this->prefix . "room",$out);
$out = str_replace("%resttables%",$this->prefix . "resttables",$out);
$out = str_replace("%bill%",$this->prefix . "bill",$out);
$out = str_replace("%pricelevel%",$this->prefix . "pricelevel",$out);
$out = str_replace("%config%",$this->prefix . "config",$out);
$out = str_replace("%closing%",$this->prefix . "closing",$out);
$out = str_replace("%printjobs%",$this->prefix . "printjob",$out);
$out = str_replace("%hist%",$this->prefix . "hist",$out);
$out = str_replace("%histprod%",$this->prefix . "histprod",$out);
$out = str_replace("%histconfig%",$this->prefix . "histconfig",$out);
$out = str_replace("%histuser%",$this->prefix . "histuser",$out);
$out = str_replace("%histactions%",$this->prefix . "histactions",$out);
$out = str_replace("%payment%",$this->prefix . "payment",$out);
$out = str_replace("%billproducts%",$this->prefix . "billproducts",$out);
return (str_replace("%prodtype%",$this->prefix . "prodtype",$out));
}
function testDbConnection($host,$dbname,$user,$pass) {
$pdo = $this->openDbAndReturnPdo($host,$dbname,$user,$pass);
if (!is_null($pdo)) {
echo json_encode("OK");
} else {
echo json_encode("ERROR");
}
}
function writeConfigFile($host,$db,$user,$password,$prefix) {
$errorlevel = "<?php\nerror_reporting(E_ERROR);\n\n"; // development: E_ALL
$hostlines = "// Zum Aufbau der Verbindung zur Datenbank\n";
$hostlines .= "// die Daten erhalten Sie von Ihrem Provider\n";
$hostlines .= "define ( 'MYSQL_HOST','$host' );";
$userlines = "define ( 'MYSQL_USER', '$user' );";
$dbpasslines = "define ( 'MYSQL_PASSWORD', '$password' );";
$dblines = "define ( 'MYSQL_DB', '$db' );";
$prefixlines = "define ('TAB_PREFIX', '$prefix');";
$configText = "$errorlevel\n$hostlines\n$userlines\n$dbpasslines\n$dblines\n$prefixlines\n?>";
file_put_contents("../php/config.php", $configText);
}
}
$command = $_GET["command"];
if ($command == 'checkWriteAccess') {
$checker = new Installer();
$checker->checkWriteAccess();
} else if ($command == 'testDbConnection') {
$admin = new Admin();
try {
if (isset($_POST['host']) && isset($_POST['dbname']) && isset($_POST['user']) && isset($_POST['pass'])) {
$admin->testDbConnection($_POST['host'],$_POST['dbname'],$_POST['user'],$_POST['pass']);
} else {
echo json_encode("ERROR");
}
} catch (Exception $e) {
echo json_encode("ERROR");
}
} else if ($command == 'getConfig') {
$configWriter = new ConfigWriter();
$configWriter->getConfigVals();
} else if ($command == 'install') {
$admin = new Admin();
$pdo = $admin->openDbAndReturnPdo($_POST['host'],$_POST['db'],$_POST['user'],$_POST['password']);
$admin->setPdo($pdo);
$admin->setPrefix($_POST['prefix']);
$admin->createTables();
$admin->insertAdminUser($_POST['adminpass']);
$admin->writeConfigFile($_POST['host'],$_POST['db'],$_POST['user'],$_POST['password'],$_POST['prefix']);
echo json_encode("OK");
}
?>

663
jQuery-MIT-LICENSE.html Normal file
View File

@ -0,0 +1,663 @@
<!DOCTYPE html>
<html lang="en" dir="ltr" class="client-nojs">
<head>
<meta charset="UTF-8" />
<title>MIT License - Wikipedia, the free encyclopedia</title>
<meta name="generator" content="MediaWiki 1.25wmf1" />
<link rel="alternate" href="android-app://org.wikipedia/http/en.m.wikipedia.org/wiki/MIT_License" />
<link rel="alternate" type="application/x-wiki" title="Edit this page" href="/w/index.php?title=MIT_License&amp;action=edit" />
<link rel="edit" title="Edit this page" href="/w/index.php?title=MIT_License&amp;action=edit" />
<link rel="apple-touch-icon" href="//bits.wikimedia.org/apple-touch/wikipedia.png" />
<link rel="shortcut icon" href="//bits.wikimedia.org/favicon/wikipedia.ico" />
<link rel="search" type="application/opensearchdescription+xml" href="/w/opensearch_desc.php" title="Wikipedia (en)" />
<link rel="EditURI" type="application/rsd+xml" href="//en.wikipedia.org/w/api.php?action=rsd" />
<link rel="alternate" hreflang="x-default" href="/wiki/MIT_License" />
<link rel="copyright" href="//creativecommons.org/licenses/by-sa/3.0/" />
<link rel="alternate" type="application/atom+xml" title="Wikipedia Atom feed" href="/w/index.php?title=Special:RecentChanges&amp;feed=atom" />
<link rel="canonical" href="http://en.wikipedia.org/wiki/MIT_License" />
<link rel="stylesheet" href="//bits.wikimedia.org/en.wikipedia.org/load.php?debug=false&amp;lang=en&amp;modules=ext.gadget.DRN-wizard%2CReferenceTooltips%2Ccharinsert%2Cfeatured-articles-links%2CrefToolbar%2Cteahouse%7Cext.rtlcite%2Cwikihiero%2CwikimediaBadges%7Cext.uls.nojs%7Cext.visualEditor.viewPageTarget.noscript%7Cmediawiki.legacy.commonPrint%2Cshared%7Cmediawiki.skinning.interface%7Cmediawiki.ui.button%7Cskins.vector.styles%7Cwikibase.client.init&amp;only=styles&amp;skin=vector&amp;*" />
<meta name="ResourceLoaderDynamicStyles" content="" />
<link rel="stylesheet" href="//bits.wikimedia.org/en.wikipedia.org/load.php?debug=false&amp;lang=en&amp;modules=site&amp;only=styles&amp;skin=vector&amp;*" />
<style>a:lang(ar),a:lang(kk-arab),a:lang(mzn),a:lang(ps),a:lang(ur){text-decoration:none}
/* cache key: enwiki:resourceloader:filter:minify-css:7:3904d24a08aa08f6a68dc338f9be277e */</style>
<script src="//bits.wikimedia.org/en.wikipedia.org/load.php?debug=false&amp;lang=en&amp;modules=startup&amp;only=scripts&amp;skin=vector&amp;*"></script>
<script>if(window.mw){
mw.config.set({"wgCanonicalNamespace":"","wgCanonicalSpecialPageName":false,"wgNamespaceNumber":0,"wgPageName":"MIT_License","wgTitle":"MIT License","wgCurRevisionId":627868497,"wgRevisionId":627868497,"wgArticleId":19193,"wgIsArticle":true,"wgIsRedirect":false,"wgAction":"view","wgUserName":null,"wgUserGroups":["*"],"wgCategories":["All articles with unsourced statements","Articles with unsourced statements from February 2012","Wikipedia articles needing clarification from August 2014","All accuracy disputes","Articles with disputed statements from August 2014","Articles with unsourced statements from January 2014","Free and open-source software licenses","X Window System","Massachusetts Institute of Technology"],"wgBreakFrames":false,"wgPageContentLanguage":"en","wgPageContentModel":"wikitext","wgSeparatorTransformTable":["",""],"wgDigitTransformTable":["",""],"wgDefaultDateFormat":"dmy","wgMonthNames":["","January","February","March","April","May","June","July","August","September","October","November","December"],"wgMonthNamesShort":["","Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"wgRelevantPageName":"MIT_License","wgIsProbablyEditable":true,"wgRestrictionEdit":[],"wgRestrictionMove":[],"wgWikiEditorEnabledModules":{"toolbar":true,"dialogs":true,"hidesig":true,"preview":false,"previewDialog":false,"publish":false},"wgBetaFeaturesFeatures":[],"wgMediaViewerOnClick":true,"wgMediaViewerEnabledByDefault":true,"wgVisualEditor":{"isPageWatched":false,"pageLanguageCode":"en","pageLanguageDir":"ltr","svgMaxSize":4096,"namespacesWithSubpages":{"6":0,"8":0,"1":true,"2":true,"3":true,"4":true,"5":true,"7":true,"9":true,"10":true,"11":true,"12":true,"13":true,"14":true,"15":true,"100":true,"101":true,"102":true,"103":true,"104":true,"105":true,"106":true,"107":true,"108":true,"109":true,"110":true,"111":true,"447":true,"2600":false,"828":true,"829":true}},"wikilove-recipient":"","wikilove-anon":0,"wgGuidedTourHelpGuiderUrl":"Help:Guided tours/guider","wgULSAcceptLanguageList":["ro-ro","ro","en-us","en","de"],"wgULSCurrentAutonym":"English","wgFlaggedRevsParams":{"tags":{"status":{"levels":1,"quality":2,"pristine":3}}},"wgStableRevisionId":null,"wgCategoryTreePageCategoryOptions":"{\"mode\":0,\"hideprefix\":20,\"showcount\":true,\"namespaces\":false}","wgNoticeProject":"wikipedia","wgWikibaseItemId":"Q334661"});
}</script><script>if(window.mw){
mw.loader.implement("user.options",function($,jQuery){mw.user.options.set({"ccmeonemails":0,"cols":80,"date":"default","diffonly":0,"disablemail":0,"editfont":"default","editondblclick":0,"editsectiononrightclick":0,"enotifminoredits":0,"enotifrevealaddr":0,"enotifusertalkpages":1,"enotifwatchlistpages":0,"extendwatchlist":0,"fancysig":0,"forceeditsummary":0,"gender":"unknown","hideminor":0,"hidepatrolled":0,"imagesize":2,"math":0,"minordefault":0,"newpageshidepatrolled":0,"nickname":"","norollbackdiff":0,"numberheadings":0,"previewonfirst":0,"previewontop":1,"rcdays":7,"rclimit":50,"rows":25,"showhiddencats":false,"shownumberswatching":1,"showtoolbar":1,"skin":"vector","stubthreshold":0,"thumbsize":4,"underline":2,"uselivepreview":0,"usenewrc":0,"watchcreations":1,"watchdefault":0,"watchdeletion":0,"watchlistdays":3,"watchlisthideanons":0,"watchlisthidebots":0,"watchlisthideliu":0,"watchlisthideminor":0,"watchlisthideown":0,"watchlisthidepatrolled":0,"watchmoves":0,"watchrollback":0,
"wllimit":250,"useeditwarning":1,"prefershttps":1,"flaggedrevssimpleui":1,"flaggedrevsstable":0,"flaggedrevseditdiffs":true,"flaggedrevsviewdiffs":false,"usebetatoolbar":1,"usebetatoolbar-cgd":1,"visualeditor-enable":0,"visualeditor-betatempdisable":0,"visualeditor-enable-experimental":0,"visualeditor-enable-language":0,"visualeditor-hidebetawelcome":0,"wikilove-enabled":1,"mathJax":false,"echo-subscriptions-web-page-review":true,"echo-subscriptions-email-page-review":false,"ep_showtoplink":false,"ep_bulkdelorgs":false,"ep_bulkdelcourses":true,"ep_showdyk":true,"echo-subscriptions-web-education-program":true,"echo-subscriptions-email-education-program":false,"echo-notify-show-link":true,"echo-show-alert":true,"echo-email-frequency":0,"echo-email-format":"html","echo-subscriptions-email-system":true,"echo-subscriptions-web-system":true,"echo-subscriptions-email-user-rights":true,"echo-subscriptions-web-user-rights":true,"echo-subscriptions-email-other":false,
"echo-subscriptions-web-other":true,"echo-subscriptions-email-edit-user-talk":false,"echo-subscriptions-web-edit-user-talk":true,"echo-subscriptions-email-reverted":false,"echo-subscriptions-web-reverted":true,"echo-subscriptions-email-article-linked":false,"echo-subscriptions-web-article-linked":false,"echo-subscriptions-email-mention":false,"echo-subscriptions-web-mention":true,"echo-subscriptions-web-edit-thank":true,"echo-subscriptions-email-edit-thank":false,"echo-subscriptions-web-flow-discussion":true,"echo-subscriptions-email-flow-discussion":false,"gettingstarted-task-toolbar-show-intro":true,"uls-preferences":"","multimediaviewer-enable":true,"language":"en","variant-gan":"gan","variant-iu":"iu","variant-kk":"kk","variant-ku":"ku","variant-shi":"shi","variant-sr":"sr","variant-tg":"tg","variant-uz":"uz","variant-zh":"zh","searchNs0":true,"searchNs1":false,"searchNs2":false,"searchNs3":false,"searchNs4":false,"searchNs5":false,"searchNs6":false,"searchNs7":false,"searchNs8":
false,"searchNs9":false,"searchNs10":false,"searchNs11":false,"searchNs12":false,"searchNs13":false,"searchNs14":false,"searchNs15":false,"searchNs100":false,"searchNs101":false,"searchNs108":false,"searchNs109":false,"searchNs118":false,"searchNs119":false,"searchNs446":false,"searchNs447":false,"searchNs710":false,"searchNs711":false,"searchNs828":false,"searchNs829":false,"searchNs2600":false,"gadget-teahouse":1,"gadget-ReferenceTooltips":1,"gadget-geonotice":1,"gadget-DRN-wizard":1,"gadget-charinsert":1,"gadget-refToolbar":1,"gadget-mySandbox":1,"gadget-featured-articles-links":1,"variant":"en"});},{},{});mw.loader.implement("user.tokens",function($,jQuery){mw.user.tokens.set({"editToken":"+\\","patrolToken":"+\\","watchToken":"+\\"});},{},{});
/* cache key: enwiki:resourceloader:filter:minify-js:7:8d55686787f352ccb6a28352f979b72d */
}</script>
<script>if(window.mw){
mw.loader.load(["mediawiki.page.startup","mediawiki.legacy.wikibits","mediawiki.legacy.ajax","ext.centralauth.centralautologin","mmv.head","ext.visualEditor.viewPageTarget.init","ext.uls.init","ext.uls.interface","ext.centralNotice.bannerController","skins.vector.js"]);
}</script>
<link rel="dns-prefetch" href="//meta.wikimedia.org" />
<!--[if lt IE 7]><style type="text/css">body{behavior:url("/w/static-1.25wmf1/skins/Vector/csshover.min.htc")}</style><![endif]-->
</head>
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-MIT_License skin-vector action-view vector-animateLayout">
<div id="mw-page-base" class="noprint"></div>
<div id="mw-head-base" class="noprint"></div>
<div id="content" class="mw-body" role="main">
<a id="top"></a>
<div id="siteNotice"><!-- CentralNotice --></div>
<h1 id="firstHeading" class="firstHeading" lang="en"><span dir="auto">MIT License</span></h1>
<div id="bodyContent" class="mw-body-content">
<div id="siteSub">From Wikipedia, the free encyclopedia</div>
<div id="contentSub"></div>
<div id="jump-to-nav" class="mw-jump">
Jump to: <a href="#mw-navigation">navigation</a>, <a href="#p-search">search</a>
</div>
<div id="mw-content-text" lang="en" dir="ltr" class="mw-content-ltr"><table class="infobox" cellspacing="3" style="border-spacing:3px;width:22em;">
<caption>MIT License</caption>
<tr>
<th scope="row" style="text-align:left;width:45%;;">Author</th>
<td style="width:55%;;"><a href="/wiki/Massachusetts_Institute_of_Technology" title="Massachusetts Institute of Technology">Massachusetts Institute of Technology</a></td>
</tr>
<tr>
<th scope="row" style="text-align:left;width:45%;;"><a href="/wiki/Publishing" title="Publishing">Publisher</a></th>
<td style="width:55%;;">Massachusetts Institute of Technology</td>
</tr>
<tr>
<th scope="row" style="text-align:left;width:45%;;">Published</th>
<td style="width:55%;;">1988<sup class="noprint Inline-Template Template-Fact" style="white-space:nowrap;">[<i><a href="/wiki/Wikipedia:Citation_needed" title="Wikipedia:Citation needed"><span title="This claim needs references to reliable sources. (February 2012)">citation needed</span></a></i>]</sup></td>
</tr>
<tr>
<th scope="row" style="text-align:left;width:45%;;"><a href="/wiki/Debian_Free_Software_Guidelines" title="Debian Free Software Guidelines">DFSG</a> compatible</th>
<td style="width:55%;;">Yes</td>
</tr>
<tr>
<th scope="row" style="text-align:left;width:45%;;"><a href="/wiki/List_of_FSF-approved_software_licenses" title="List of FSF-approved software licenses" class="mw-redirect">FSF approved</a></th>
<td style="width:55%;;">Yes</td>
</tr>
<tr>
<th scope="row" style="text-align:left;width:45%;;"><a href="/wiki/Open-source_license#OSI_approved_licenses" title="Open-source license">OSI approved</a></th>
<td style="width:55%;;">Yes</td>
</tr>
<tr>
<th scope="row" style="text-align:left;width:45%;;"><a href="/wiki/GPL_compatible" title="GPL compatible" class="mw-redirect">GPL compatible</a></th>
<td style="width:55%;;">Yes</td>
</tr>
<tr>
<th scope="row" style="text-align:left;width:45%;;"><a href="/wiki/Copyleft" title="Copyleft">Copyleft</a></th>
<td style="width:55%;;">No</td>
</tr>
<tr>
<th scope="row" style="text-align:left;width:45%;;"><a href="/wiki/GNU_Lesser_General_Public_License#Choosing_to_license_a_library_under_the_GPL_or_the_LGPL" title="GNU Lesser General Public License">Linking from code with a different license</a></th>
<td style="width:55%;;">Yes</td>
</tr>
</table>
<p>The <b>MIT License</b> is a <a href="/wiki/Free_software_license" title="Free software license">free software license</a> originating at the <a href="/wiki/Massachusetts_Institute_of_Technology" title="Massachusetts Institute of Technology">Massachusetts Institute of Technology</a> (MIT).<sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span>[</span>1<span>]</span></a></sup> It is a <a href="/wiki/Permissive_free_software_licence" title="Permissive free software licence">permissive free software license</a>, meaning that it permits reuse within <a href="/wiki/Proprietary_software" title="Proprietary software">proprietary software</a> provided all copies of the licensed software include a copy of the MIT License terms and the copyright notice. Such <a href="/wiki/Proprietary_software" title="Proprietary software">proprietary software</a> retains its proprietary nature even though it incorporates software under the MIT License. The license is also <a href="/wiki/GNU_General_Public_License#Compatibility_and_multi-licensing" title="GNU General Public License">GPL-compatible</a>, meaning that the <a href="/wiki/GPL" title="GPL" class="mw-redirect">GPL</a> permits combination and redistribution with software that uses the MIT License.<sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span>[</span>2<span>]</span></a></sup></p>
<p>Notable <a href="/wiki/Computer_software" title="Computer software" class="mw-redirect">software packages</a> that use one of the versions of the MIT License include <a href="/wiki/Expat_(XML)" title="Expat (XML)" class="mw-redirect">Expat</a>, the <a href="/wiki/Mono_(software)" title="Mono (software)">Mono development platform</a> class libraries, <a href="/wiki/Ruby_on_Rails" title="Ruby on Rails">Ruby on Rails</a>, <a href="/wiki/Node.js" title="Node.js">Node.js</a>, <a href="/wiki/Lua_(programming_language)" title="Lua (programming language)">Lua</a> (from version 5.0 onwards), <a href="/wiki/Wayland_(display_server_protocol)" title="Wayland (display server protocol)">Wayland</a> and the <a href="/wiki/X_Window_System" title="X Window System">X Window System</a>, for which the license was written.</p>
<p></p>
<div id="toc" class="toc">
<div id="toctitle">
<h2>Contents</h2>
</div>
<ul>
<li class="toclevel-1 tocsection-1"><a href="#Various_versions"><span class="tocnumber">1</span> <span class="toctext">Various versions</span></a></li>
<li class="toclevel-1 tocsection-2"><a href="#License_terms"><span class="tocnumber">2</span> <span class="toctext">License terms</span></a></li>
<li class="toclevel-1 tocsection-3"><a href="#Comparison_to_other_licenses"><span class="tocnumber">3</span> <span class="toctext">Comparison to other licenses</span></a></li>
<li class="toclevel-1 tocsection-4"><a href="#See_also"><span class="tocnumber">4</span> <span class="toctext">See also</span></a></li>
<li class="toclevel-1 tocsection-5"><a href="#References"><span class="tocnumber">5</span> <span class="toctext">References</span></a></li>
<li class="toclevel-1 tocsection-6"><a href="#External_links"><span class="tocnumber">6</span> <span class="toctext">External links</span></a></li>
</ul>
</div>
<p></p>
<h2><span class="mw-headline" id="Various_versions">Various versions</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=MIT_License&amp;action=edit&amp;section=1" title="Edit section: Various versions">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
<p>Because MIT has used many licenses for software, the <a href="/wiki/Free_Software_Foundation" title="Free Software Foundation">Free Software Foundation</a> considers "MIT License" ambiguous. "MIT License" may refer to the "Expat License" (used for Expat)<sup id="cite_ref-GUN-Expat_3-0" class="reference"><a href="#cite_note-GUN-Expat-3"><span>[</span>3<span>]</span></a></sup> or to the "X11 License" (also called "MIT/X Consortium License"; used for the <a href="/wiki/X_Window_System" title="X Window System">X Window System</a> by the <a href="/wiki/MIT_X_Consortium" title="MIT X Consortium" class="mw-redirect">MIT X Consortium</a>).<sup id="cite_ref-GUN-X11License_4-0" class="reference"><a href="#cite_note-GUN-X11License-4"><span>[</span>4<span>]</span></a></sup> The "MIT License" published on the official site of <a href="/wiki/Open_Source_Initiative" title="Open Source Initiative">Open Source Initiative</a><sup id="cite_ref-OSI-MIT_5-0" class="reference"><a href="#cite_note-OSI-MIT-5"><span>[</span>5<span>]</span></a></sup> is the same as the "Expat License".</p>
<p>Differing from the Expat License,<sup id="cite_ref-GUN-Expat_3-1" class="reference"><a href="#cite_note-GUN-Expat-3"><span>[</span>3<span>]</span></a></sup> the X11 License<sup id="cite_ref-GUN-X11License_4-1" class="reference"><a href="#cite_note-GUN-X11License-4"><span>[</span>4<span>]</span></a></sup> and the "MIT License" chosen for <a href="/wiki/Ncurses" title="Ncurses">ncurses</a> by the Free Software Foundation<sup id="cite_ref-6" class="reference"><a href="#cite_note-6"><span>[</span>6<span>]</span></a></sup> include the clause:</p>
<blockquote class="templatequote">
<p>Except as contained in this notice, the name(s) of the above copyright holders shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization.</p>
</blockquote>
<h2><span class="mw-headline" id="License_terms">License terms</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=MIT_License&amp;action=edit&amp;section=2" title="Edit section: License terms">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
<p>A common form of the MIT License (from OSI's official site, which is the same version as the "Expat License", and which is not identical to the X source code) is defined as follows:<sup id="cite_ref-OSI-MIT_5-1" class="reference"><a href="#cite_note-OSI-MIT-5"><span>[</span>5<span>]</span></a></sup></p>
<blockquote class="toccolours" style="float:none; padding: 10px 15px 10px 15px; display:table;">
<p>Copyright (c) &lt;year&gt; &lt;copyright holders&gt;<br /></p>
<p><br />
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:<br />
<br />
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.<br />
<br />
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.</p>
</blockquote>
<h2><span class="mw-headline" id="Comparison_to_other_licenses">Comparison to other licenses</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=MIT_License&amp;action=edit&amp;section=3" title="Edit section: Comparison to other licenses">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
<p>The MIT License is similar to the 3-clause "modified" <a href="/wiki/BSD_license#Terms" title="BSD license" class="mw-redirect">BSD license</a>, except that the BSD license contains a notice prohibiting the use of the name of the copyright holder in promotion. This is sometimes present in versions of the MIT License, as noted above.</p>
<p>The original BSD license also includes a clause requiring all advertising of the software to display a notice crediting its authors. This "advertising clause" (since disavowed by UC Berkeley<sup id="cite_ref-update_7-0" class="reference"><a href="#cite_note-update-7"><span>[</span>7<span>]</span></a></sup>) is present in the modified MIT License used by <a href="/wiki/XFree86_License" title="XFree86 License" class="mw-redirect">XFree86</a>.</p>
<p>The MIT License states more explicitly the rights given to the <a href="/wiki/End-user" title="End-user" class="mw-redirect">end-user</a>, including the right to use, copy, modify, merge, publish, distribute, sublicense, and/or sell the software. The MIT license also grants the right to sublicense<sup class="noprint Inline-Template" style="white-space:nowrap;">[<i><a href="/wiki/Wikipedia:Please_clarify" title="Wikipedia:Please clarify"><span title="The text near this tag may need clarification or removal of jargon. (August 2014)">clarification needed</span></a></i>]</sup>—a right not mentioned in the BSD license. Because the MIT license grants the right to sublicense, any distributor of MIT-licensed code has the right to grant a license to the entire code base,<sup class="noprint Inline-Template" style="white-space:nowrap;">[<i><a href="/wiki/Wikipedia:Disputed_statement" title="Wikipedia:Disputed statement" class="mw-redirect"><span title="The material near this tag is possibly inaccurate or nonfactual. (August 2014)">dubious</span></a> <span class="metadata"> <a href="/wiki/Talk:MIT_License#vague_reference_to_.22entire_code_base.22" title="Talk:MIT License">discuss</a></span></i>]</sup> including components that were originally licensed under the MIT license by third parties.</p>
<p>Like the BSD license the MIT license does not include an express patent license. Both the BSD and the MIT licenses were drafted before the patentability of software was generally recognized under US law. <sup id="cite_ref-8" class="reference"><a href="#cite_note-8"><span>[</span>8<span>]</span></a></sup> The MIT license contains terms that blur<sup class="noprint Inline-Template" style="white-space:nowrap;">[<i><a href="/wiki/Wikipedia:Please_clarify" title="Wikipedia:Please clarify"><span title="The text near this tag may need clarification or removal of jargon. (August 2014)">clarification needed</span></a></i>]</sup> the legal line between copyright and patent grants such as "deal in," "use," and "sell." <sup id="cite_ref-9" class="reference"><a href="#cite_note-9"><span>[</span>9<span>]</span></a></sup> Whether a court might imply a patent grant under the MIT license remains an open question.<sup id="cite_ref-10" class="reference"><a href="#cite_note-10"><span>[</span>10<span>]</span></a></sup></p>
<p>The <a href="/wiki/Simplified_BSD_license" title="Simplified BSD license" class="mw-redirect">Simplified BSD license</a> used by <a href="/wiki/FreeBSD" title="FreeBSD">FreeBSD</a> is essentially identical<sup class="noprint Inline-Template Template-Fact" style="white-space:nowrap;">[<i><a href="/wiki/Wikipedia:Citation_needed" title="Wikipedia:Citation needed"><span title="This claim needs references to reliable sources. (January 2014)">citation needed</span></a></i>]</sup><sup class="noprint selfreference">[<i><a href="/wiki/Talk:MIT_License#tag_not_related_to_statement" title="Talk:MIT License">discuss</a></i>]</sup> to the MIT License, as it contains neither an advertising clause, nor a prohibition on promotional use of the copyright holder's name.</p>
<p>Also similar in terms is the <a href="/wiki/ISC_license" title="ISC license">ISC license</a>, which has simpler language.</p>
<p>The <a href="/wiki/University_of_Illinois/NCSA_Open_Source_License" title="University of Illinois/NCSA Open Source License">University of Illinois/NCSA Open Source License</a> combines text from both the MIT and BSD licenses; the license grant and disclaimer are taken from the MIT License.</p>
<h2><span class="mw-headline" id="See_also">See also</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=MIT_License&amp;action=edit&amp;section=4" title="Edit section: See also">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
<ul>
<li><a href="/wiki/Category:Software_using_the_MIT_license" title="Category:Software using the MIT license">Category:Software using the MIT license</a></li>
<li><a href="/wiki/Comparison_of_free_and_open-source_software_licenses" title="Comparison of free and open-source software licenses">Comparison of free and open-source software licenses</a></li>
</ul>
<div class="noprint tright portal" style="border:solid #aaa 1px;margin:0.5em 0 0.5em 1em;">
<table style="background:#f9f9f9;font-size:85%;line-height:110%;max-width:175px;">
<tr valign="middle">
<td style="text-align:center;"><a href="/wiki/File:Free_and_open-source_software_logo_(2009).svg" class="image"><img alt="Portal icon" src="//upload.wikimedia.org/wikipedia/commons/thumb/3/31/Free_and_open-source_software_logo_%282009%29.svg/28px-Free_and_open-source_software_logo_%282009%29.svg.png" width="28" height="28" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/3/31/Free_and_open-source_software_logo_%282009%29.svg/42px-Free_and_open-source_software_logo_%282009%29.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/3/31/Free_and_open-source_software_logo_%282009%29.svg/56px-Free_and_open-source_software_logo_%282009%29.svg.png 2x" data-file-width="512" data-file-height="512" /></a></td>
<td style="padding:0 0.2em;vertical-align:middle;font-style:italic;font-weight:bold;"><a href="/wiki/Portal:Free_software" title="Portal:Free software">Free software portal</a></td>
</tr>
</table>
</div>
<h2><span class="mw-headline" id="References">References</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=MIT_License&amp;action=edit&amp;section=5" title="Edit section: References">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
<div class="reflist" style="list-style-type: decimal;">
<ol class="references">
<li id="cite_note-1"><span class="mw-cite-backlink"><b><a href="#cite_ref-1">^</a></b></span> <span class="reference-text">Lawrence Rosen, OPEN SOURCE LICENSING, p.85 (Prentice Hall PTR, 1st ed. 2004)</span></li>
<li id="cite_note-2"><span class="mw-cite-backlink"><b><a href="#cite_ref-2">^</a></b></span> <span class="reference-text"><a rel="nofollow" class="external text" href="https://www.gnu.org/licenses/license-list.html#GPLCompatibleLicenses">Various Licenses and Comments about Them GNU Project Free Software Foundation</a>. Gnu.org (1999-09-03). Retrieved on 2013-07-17.</span></li>
<li id="cite_note-GUN-Expat-3"><span class="mw-cite-backlink">^ <a href="#cite_ref-GUN-Expat_3-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-GUN-Expat_3-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><span class="citation web">Stallman, Richard. <a rel="nofollow" class="external text" href="https://www.gnu.org/licenses/license-list.html#Expat">"Various Licenses and Comments about Them # Expat License"</a>. Free Software Foundation<span class="reference-accessdate">. Retrieved 5 December 2010</span>.</span><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMIT+License&amp;rft.aufirst=Richard&amp;rft.aulast=Stallman&amp;rft.au=Stallman%2C+Richard&amp;rft.btitle=Various+Licenses+and+Comments+about+Them+%23+Expat+License&amp;rft.genre=book&amp;rft_id=https%3A%2F%2Fwww.gnu.org%2Flicenses%2Flicense-list.html%23Expat&amp;rft.pub=Free+Software+Foundation&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook" class="Z3988"><span style="display:none;">&#160;</span></span></span></li>
<li id="cite_note-GUN-X11License-4"><span class="mw-cite-backlink">^ <a href="#cite_ref-GUN-X11License_4-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-GUN-X11License_4-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><span class="citation web">Stallman, Richard. <a rel="nofollow" class="external text" href="https://www.gnu.org/licenses/license-list.html#X11License">"Various Licenses and Comments about Them # X11 License"</a>. Free Software Foundation<span class="reference-accessdate">. Retrieved 5 December 2010</span>.</span><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMIT+License&amp;rft.aufirst=Richard&amp;rft.aulast=Stallman&amp;rft.au=Stallman%2C+Richard&amp;rft.btitle=Various+Licenses+and+Comments+about+Them+%23+X11+License&amp;rft.genre=book&amp;rft_id=https%3A%2F%2Fwww.gnu.org%2Flicenses%2Flicense-list.html%23X11License&amp;rft.pub=Free+Software+Foundation&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook" class="Z3988"><span style="display:none;">&#160;</span></span></span></li>
<li id="cite_note-OSI-MIT-5"><span class="mw-cite-backlink">^ <a href="#cite_ref-OSI-MIT_5-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-OSI-MIT_5-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><span class="citation web"><a rel="nofollow" class="external text" href="http://opensource.org/licenses/MIT">"Open Source Initiative OSI The MIT License:Licensing"</a>. Open Source Initiative<span class="reference-accessdate">. Retrieved 5 December 2010</span>.</span><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMIT+License&amp;rft.btitle=Open+Source+Initiative+OSI+%E2%80%93+The+MIT+License%3ALicensing&amp;rft.genre=book&amp;rft_id=http%3A%2F%2Fopensource.org%2Flicenses%2FMIT&amp;rft.pub=Open+Source+Initiative&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook" class="Z3988"><span style="display:none;">&#160;</span></span></span></li>
<li id="cite_note-6"><span class="mw-cite-backlink"><b><a href="#cite_ref-6">^</a></b></span> <span class="reference-text"><span class="citation web">Dickey, Thomas E. <a rel="nofollow" class="external text" href="http://invisible-island.net/ncurses/ncurses.faq.html#is_it_gpl">"NCURSES&#160;— Frequently Asked Questions (FAQ)"</a>.</span><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMIT+License&amp;rft.au=Dickey%2C+Thomas+E.&amp;rft.aufirst=Thomas+E.&amp;rft.aulast=Dickey&amp;rft.btitle=NCURSES%26nbsp%3B%E2%80%94+Frequently+Asked+Questions+%28FAQ%29&amp;rft.genre=book&amp;rft_id=http%3A%2F%2Finvisible-island.net%2Fncurses%2Fncurses.faq.html%23is_it_gpl&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook" class="Z3988"><span style="display:none;">&#160;</span></span></span></li>
<li id="cite_note-update-7"><span class="mw-cite-backlink"><b><a href="#cite_ref-update_7-0">^</a></b></span> <span class="reference-text"><span class="citation web"><a rel="nofollow" class="external text" href="ftp://ftp.cs.berkeley.edu/pub/4bsd/README.Impt.License.Change">"To All Licensees, Distributors of Any Version of BSD"</a>. University of California, Berkeley. 1999-07-22<span class="reference-accessdate">. Retrieved 2006-11-15</span>.</span><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMIT+License&amp;rft.btitle=To+All+Licensees%2C+Distributors+of+Any+Version+of+BSD&amp;rft.date=1999-07-22&amp;rft.genre=book&amp;rft_id=ftp%3A%2F%2Fftp.cs.berkeley.edu%2Fpub%2F4bsd%2FREADME.Impt.License.Change&amp;rft.pub=University+of+California%2C+Berkeley&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook" class="Z3988"><span style="display:none;">&#160;</span></span></span></li>
<li id="cite_note-8"><span class="mw-cite-backlink"><b><a href="#cite_ref-8">^</a></b></span> <span class="reference-text">Stern and Allen, Open Source Licensing, p. 495 in Understanding the Intellectual Property License 2013 (Practicing Law Institute 2013)</span></li>
<li id="cite_note-9"><span class="mw-cite-backlink"><b><a href="#cite_ref-9">^</a></b></span> <span class="reference-text">Stern and Allen, supra, p. 495</span></li>
<li id="cite_note-10"><span class="mw-cite-backlink"><b><a href="#cite_ref-10">^</a></b></span> <span class="reference-text">Christian H. Nadan, Closing the Loophole; Open Source Licensing and the Implied Patent License, THE COMPUTER AND INTERNET LAWYER, Vol. 26, No. 8 (Aug. 2009) available at <a rel="nofollow" class="external free" href="http://www.scribd.com/doc/46088081/Closing-the-Loophole-Open-Source-Licensing-and-the-Implied-Patent-License-Nadan">http://www.scribd.com/doc/46088081/Closing-the-Loophole-Open-Source-Licensing-and-the-Implied-Patent-License-Nadan</a> who argues that “By using patent terms like “deal in,” “use,” and “sell,” the MIT license grant is more likely to be deemed to include express patent rights than the BSD license.</span></li>
</ol>
</div>
<h2><span class="mw-headline" id="External_links">External links</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=MIT_License&amp;action=edit&amp;section=6" title="Edit section: External links">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
<ul>
<li><a rel="nofollow" class="external text" href="https://fedoraproject.org/wiki/Licensing:MIT?rd=Licensing/MIT">MIT License variants</a></li>
<li><a rel="nofollow" class="external text" href="http://www.opensource.org/licenses/MIT">The MIT License template</a> (Open Source Initiative official site)</li>
<li><a rel="nofollow" class="external text" href="http://www.jclark.com/xml/copying.txt">Expat License</a></li>
<li><a rel="nofollow" class="external text" href="http://www.xfree86.org/3.3.6/COPYRIGHT2.html#3">X11 License</a></li>
</ul>
<table cellspacing="0" class="navbox" style="border-spacing:0;">
<tr>
<td style="padding:2px;">
<table cellspacing="0" class="nowraplinks hlist collapsible autocollapse navbox-inner" style="border-spacing:0;background:transparent;color:inherit;">
<tr>
<th scope="col" class="navbox-title" colspan="2">
<div class="plainlinks hlist navbar mini">
<ul>
<li class="nv-view"><a href="/wiki/Template:FOSS" title="Template:FOSS"><span title="View this template" style=";;background:none transparent;border:none;;">v</span></a></li>
<li class="nv-talk"><a href="/wiki/Template_talk:FOSS" title="Template talk:FOSS"><span title="Discuss this template" style=";;background:none transparent;border:none;;">t</span></a></li>
<li class="nv-edit"><a class="external text" href="//en.wikipedia.org/w/index.php?title=Template:FOSS&amp;action=edit"><span title="Edit this template" style=";;background:none transparent;border:none;;">e</span></a></li>
</ul>
</div>
<div style="font-size:110%;"><a href="/wiki/Free_and_open-source_software" title="Free and open-source software">Free and open-source software</a></div>
</th>
</tr>
<tr style="height:2px;">
<td colspan="2"></td>
</tr>
<tr>
<th scope="row" class="navbox-group">General</th>
<td class="navbox-list navbox-odd" style="text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px;">
<div style="padding:0em 0.25em;">
<ul>
<li><a href="/wiki/Alternative_terms_for_free_software" title="Alternative terms for free software">Alternative terms for free software</a></li>
<li><a href="/wiki/Comparison_of_open_source_and_closed_source" title="Comparison of open source and closed source">Comparison of open source and closed source</a></li>
<li><a href="/wiki/Comparison_of_open-source_software_hosting_facilities" title="Comparison of open-source software hosting facilities">Comparison of open-source software hosting facilities</a></li>
<li><a href="/wiki/List_of_formerly_proprietary_software" title="List of formerly proprietary software">Formerly proprietary software</a></li>
<li><a href="/wiki/List_of_free_and_open-source_Android_applications" title="List of free and open-source Android applications">Free and open-source Android applications</a></li>
<li><a href="/wiki/List_of_free_and_open-source_software_packages" title="List of free and open-source software packages">Free and open-source software packages</a></li>
<li><a href="/wiki/Free_software" title="Free software">Free software</a></li>
<li><a href="/wiki/List_of_free-software_events" title="List of free-software events">Free software events</a></li>
<li><a href="/wiki/Free_software_movement" title="Free software movement">Free software movement</a></li>
<li><a href="/wiki/List_of_free_software_project_directories" title="List of free software project directories">Free software project directories</a></li>
<li><a href="/wiki/List_of_free_software_web_applications" title="List of free software web applications">Free software web applications</a></li>
<li><a href="/wiki/Gratis_versus_libre" title="Gratis versus libre">Gratis versus libre</a></li>
<li><a href="/wiki/Long-term_support" title="Long-term support">Long-term support</a></li>
<li><a href="/wiki/Open-source_software" title="Open-source software">Open-source software</a></li>
<li><a href="/wiki/Outline_of_free_software" title="Outline of free software">Outline</a></li>
<li><a href="/wiki/Software_Package_Data_Exchange" title="Software Package Data Exchange">SPDX</a></li>
</ul>
</div>
</td>
</tr>
<tr style="height:2px;">
<td colspan="2"></td>
</tr>
<tr>
<th scope="row" class="navbox-group"><a href="/wiki/Comparison_of_open-source_operating_systems" title="Comparison of open-source operating systems">Operating system<br />
families</a></th>
<td class="navbox-list navbox-even" style="text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px;">
<div style="padding:0em 0.25em;">
<ul>
<li><a href="/wiki/AROS_Research_Operating_System" title="AROS Research Operating System">AROS</a></li>
<li><a href="/wiki/Berkeley_Software_Distribution" title="Berkeley Software Distribution">BSD</a></li>
<li><a href="/wiki/Darwin_(operating_system)" title="Darwin (operating system)">Darwin</a></li>
<li><a href="/wiki/ECos" title="ECos">eCos</a></li>
<li><a href="/wiki/FreeDOS" title="FreeDOS">FreeDOS</a></li>
<li><a href="/wiki/GNU" title="GNU">GNU</a></li>
<li><a href="/wiki/Haiku_(operating_system)" title="Haiku (operating system)">Haiku</a></li>
<li><a href="/wiki/Inferno_(operating_system)" title="Inferno (operating system)">Inferno</a></li>
<li><a href="/wiki/Linux" title="Linux">Linux</a></li>
<li><a href="/wiki/Mach_(kernel)" title="Mach (kernel)">Mach</a></li>
<li><a href="/wiki/MINIX" title="MINIX">MINIX</a></li>
<li><a href="/wiki/OpenSolaris" title="OpenSolaris">OpenSolaris</a></li>
<li><a href="/wiki/Plan_9_from_Bell_Labs" title="Plan 9 from Bell Labs">Plan 9</a></li>
<li><a href="/wiki/ReactOS" title="ReactOS">ReactOS</a></li>
<li><a href="/wiki/TUD:OS" title="TUD:OS">TUD:OS</a></li>
</ul>
</div>
</td>
</tr>
<tr style="height:2px;">
<td colspan="2"></td>
</tr>
<tr>
<th scope="row" class="navbox-group"><a href="/wiki/Open-source_software_development" title="Open-source software development">Development</a></th>
<td class="navbox-list navbox-odd" style="text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px;">
<div style="padding:0em 0.25em;">
<ul>
<li><a href="/wiki/Basic_For_Qt" title="Basic For Qt">Basic For Qt</a></li>
<li><a href="/wiki/Eclipse_(software)" title="Eclipse (software)">Eclipse</a></li>
<li><a href="/wiki/Free_Pascal" title="Free Pascal">Free Pascal</a></li>
<li><a href="/wiki/FreeBASIC" title="FreeBASIC">FreeBASIC</a></li>
<li><a href="/wiki/Gambas" title="Gambas">Gambas</a></li>
<li><a href="/wiki/GNU_Compiler_Collection" title="GNU Compiler Collection">GCC</a></li>
<li><a href="/wiki/Java_(programming_language)" title="Java (programming language)">Java</a></li>
<li><a href="/wiki/LLVM" title="LLVM">LLVM</a></li>
<li><a href="/wiki/Lua_(programming_language)" title="Lua (programming language)">Lua</a></li>
<li><a href="/wiki/NetBeans" title="NetBeans">NetBeans</a></li>
<li><a href="/wiki/Open64" title="Open64">Open64</a></li>
<li><a href="/wiki/Perl" title="Perl">Perl</a></li>
<li><a href="/wiki/PHP" title="PHP">PHP</a></li>
<li><a href="/wiki/Python_(programming_language)" title="Python (programming language)">Python</a></li>
<li><a href="/wiki/ROSE_(compiler_framework)" title="ROSE (compiler framework)">ROSE</a></li>
<li><a href="/wiki/Ruby_(programming_language)" title="Ruby (programming language)">Ruby</a></li>
<li><a href="/wiki/Tcl" title="Tcl">Tcl</a></li>
</ul>
</div>
</td>
</tr>
<tr style="height:2px;">
<td colspan="2"></td>
</tr>
<tr>
<th scope="row" class="navbox-group"><a href="/wiki/History_of_free_and_open-source_software" title="History of free and open-source software">History</a></th>
<td class="navbox-list navbox-even" style="text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px;">
<div style="padding:0em 0.25em;">
<ul>
<li><a href="/wiki/GNU#History" title="GNU">GNU</a></li>
<li><a href="/wiki/History_of_Haiku_(operating_system)" title="History of Haiku (operating system)">Haiku</a></li>
<li><a href="/wiki/History_of_Linux" title="History of Linux">Linux</a></li>
<li><a href="/wiki/Mozilla" title="Mozilla">Mozilla</a>
<ul>
<li><a href="/wiki/History_of_Mozilla_Application_Suite" title="History of Mozilla Application Suite">Application Suite</a></li>
<li><a href="/wiki/History_of_Firefox" title="History of Firefox">Firefox</a></li>
<li><a href="/wiki/History_of_Mozilla_Thunderbird" title="History of Mozilla Thunderbird">Thunderbird</a></li>
</ul>
</li>
</ul>
</div>
</td>
</tr>
<tr style="height:2px;">
<td colspan="2"></td>
</tr>
<tr>
<th scope="row" class="navbox-group">Organizations</th>
<td class="navbox-list navbox-odd" style="text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px;">
<div style="padding:0em 0.25em;">
<ul>
<li><a href="/wiki/Android_(operating_system)" title="Android (operating system)">Android Open Source Project</a></li>
<li><a href="/wiki/Apache_Software_Foundation" title="Apache Software Foundation">Apache Software Foundation</a></li>
<li><a href="/wiki/Blender_Foundation" title="Blender Foundation">Blender Foundation</a></li>
<li><a href="/wiki/The_Document_Foundation" title="The Document Foundation">The Document Foundation</a></li>
<li><a href="/wiki/Eclipse_Foundation" title="Eclipse Foundation">Eclipse Foundation</a></li>
<li><a href="/wiki/Free_Software_Foundation" title="Free Software Foundation">Free Software Foundation</a>
<ul>
<li><a href="/wiki/Free_Software_Foundation_Europe" title="Free Software Foundation Europe">Europe</a></li>
<li><a href="/wiki/Free_Software_Foundation_of_India" title="Free Software Foundation of India">India</a></li>
<li><a href="/wiki/Free_Software_Foundation_Latin_America" title="Free Software Foundation Latin America">Latin America</a></li>
</ul>
</li>
<li><a href="/wiki/FreeBSD_Foundation" title="FreeBSD Foundation">FreeBSD Foundation</a></li>
<li><a href="/wiki/Freedesktop.org" title="Freedesktop.org">freedesktop.org</a></li>
<li><a href="/wiki/Free_Software_Movement_of_India" title="Free Software Movement of India">FSMI</a></li>
<li><a href="/wiki/GNOME_Foundation" title="GNOME Foundation">GNOME Foundation</a></li>
<li><a href="/wiki/GNU_Project" title="GNU Project">GNU Project</a></li>
<li><a href="/wiki/Google_Code" title="Google Code" class="mw-redirect">Google Code</a></li>
<li><a href="/wiki/KDE_e.V." title="KDE e.V.">KDE e.V.</a></li>
<li><a href="/wiki/Linux_Foundation" title="Linux Foundation">Linux Foundation</a></li>
<li><a href="/wiki/Mozilla_Foundation" title="Mozilla Foundation">Mozilla Foundation</a></li>
<li><a href="/wiki/Open_Knowledge_Foundation" title="Open Knowledge Foundation" class="mw-redirect">Open Knowledge Foundation</a></li>
<li><a href="/wiki/Open_Source_Geospatial_Foundation" title="Open Source Geospatial Foundation">Open Source Geospatial Foundation</a></li>
<li><a href="/wiki/Open_Source_Initiative" title="Open Source Initiative">Open Source Initiative</a></li>
<li><a href="/wiki/Software_Freedom_Conservancy" title="Software Freedom Conservancy">Software Freedom Conservancy</a></li>
<li><a href="/wiki/SourceForge" title="SourceForge">SourceForge</a></li>
<li><a href="/wiki/Symbian_Foundation" title="Symbian Foundation">Symbian Foundation</a></li>
<li><a href="/wiki/Ubuntu_Foundation" title="Ubuntu Foundation">Ubuntu Foundation</a></li>
<li><a href="/wiki/VideoLAN" title="VideoLAN">VideoLAN Organization</a></li>
<li><a href="/wiki/Wikimedia_Foundation" title="Wikimedia Foundation">Wikimedia Foundation</a></li>
<li><a href="/wiki/X.Org_Foundation" title="X.Org Foundation">X.Org Foundation</a></li>
<li><a href="/wiki/Xiph.Org_Foundation" title="Xiph.Org Foundation">Xiph.Org Foundation</a></li>
<li><a href="/wiki/XMPP_Standards_Foundation" title="XMPP Standards Foundation">XMPP Standards Foundation</a></li>
</ul>
</div>
</td>
</tr>
<tr style="height:2px;">
<td colspan="2"></td>
</tr>
<tr>
<th scope="row" class="navbox-group"><a href="/wiki/Free_software_license" title="Free software license">Licenses</a></th>
<td class="navbox-list navbox-even" style="text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px;">
<div style="padding:0em 0.25em;">
<ul>
<li><a href="/wiki/Apache_License" title="Apache License">Apache</a></li>
<li><a href="/wiki/Artistic_License" title="Artistic License">Artistic</a></li>
<li><a href="/wiki/Beerware" title="Beerware">Beerware</a></li>
<li><a href="/wiki/Boost_Software_License" title="Boost Software License">Boost</a></li>
<li><a href="/wiki/BSD_licenses" title="BSD licenses">BSD</a></li>
<li><a href="/wiki/CC0" title="CC0" class="mw-redirect">CC0</a></li>
<li><a href="/wiki/GNU_General_Public_License" title="GNU General Public License">GNU GPL</a></li>
<li><a href="/wiki/GNU_Lesser_General_Public_License" title="GNU Lesser General Public License">GNU LGPL</a></li>
<li><a href="/wiki/ISC_license" title="ISC license">ISC</a></li>
<li><strong class="selflink">MIT</strong></li>
<li><a href="/wiki/Mozilla_Public_License" title="Mozilla Public License">MPL</a></li>
<li><a href="/wiki/Shared_source#Open_Source_licenses" title="Shared source">Ms-PL/RL</a></li>
<li><a href="/wiki/WTFPL" title="WTFPL">WTFPL</a></li>
<li><a href="/wiki/Zlib_License" title="Zlib License">zlib</a></li>
</ul>
</div>
</td>
</tr>
<tr style="height:2px;">
<td colspan="2"></td>
</tr>
<tr>
<th scope="row" class="navbox-group">License types<br />
and standards</th>
<td class="navbox-list navbox-odd" style="text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px;">
<div style="padding:0em 0.25em;">
<ul>
<li><a href="/wiki/Comparison_of_free_and_open-source_software_licenses" title="Comparison of free and open-source software licenses">Comparison of free and open-source software licenses</a></li>
<li><a href="/wiki/Contributor_License_Agreement" title="Contributor License Agreement">Contributor License Agreement</a></li>
<li><a href="/wiki/Copyfree" title="Copyfree">Copyfree</a></li>
<li><a href="/wiki/Copyleft" title="Copyleft">Copyleft</a></li>
<li><a href="/wiki/Debian_Free_Software_Guidelines" title="Debian Free Software Guidelines">Debian Free Software Guidelines</a></li>
<li><a href="/wiki/Definition_of_Free_Cultural_Works" title="Definition of Free Cultural Works">Definition of Free Cultural Works</a></li>
<li><a href="/wiki/Free_license" title="Free license">Free license</a></li>
<li><a href="/wiki/The_Free_Software_Definition" title="The Free Software Definition">The Free Software Definition</a></li>
<li><a href="/wiki/The_Open_Source_Definition" title="The Open Source Definition">The Open Source Definition</a></li>
<li><a href="/wiki/Open-source_license" title="Open-source license">Open-source license</a></li>
<li><a href="/wiki/Permissive_free_software_licence" title="Permissive free software licence">Permissive free software licence</a></li>
<li><a href="/wiki/Public_domain" title="Public domain">Public domain</a></li>
<li><a href="/wiki/Viral_license" title="Viral license">Viral license</a></li>
</ul>
</div>
</td>
</tr>
<tr style="height:2px;">
<td colspan="2"></td>
</tr>
<tr>
<th scope="row" class="navbox-group">Challenges</th>
<td class="navbox-list navbox-even" style="text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px;">
<div style="padding:0em 0.25em;">
<ul>
<li><a href="/wiki/Binary_blob" title="Binary blob">Binary blob</a></li>
<li><a href="/wiki/Digital_rights_management" title="Digital rights management">Digital rights management</a></li>
<li><a href="/wiki/Free_and_open-source_graphics_device_driver" title="Free and open-source graphics device driver">Free and open-source graphics device driver</a></li>
<li><a href="/wiki/Comparison_of_open-source_wireless_drivers" title="Comparison of open-source wireless drivers">Comparison of open-source wireless drivers</a></li>
<li><a href="/wiki/Hardware_restriction" title="Hardware restriction">Hardware restrictions</a></li>
<li><a href="/wiki/License_proliferation" title="License proliferation">License proliferation</a></li>
<li><a href="/wiki/Mozilla_Corporation_software_rebranded_by_the_Debian_project" title="Mozilla Corporation software rebranded by the Debian project">Mozilla software rebranding</a></li>
<li><a href="/wiki/Proprietary_software" title="Proprietary software">Proprietary software</a></li>
<li><a href="/wiki/SCO%E2%80%93Linux_controversies" title="SCOLinux controversies">SCOLinux controversies</a></li>
<li><a href="/wiki/UEFI_Secure_Boot#Secure_boot" title="UEFI Secure Boot" class="mw-redirect">Secure boot</a></li>
<li><a href="/wiki/Software_patents_and_free_software" title="Software patents and free software">Software patents</a></li>
<li><a href="/wiki/Open-source_software_security" title="Open-source software security">Software security</a></li>
<li><a href="/wiki/Trusted_Computing" title="Trusted Computing">Trusted Computing</a></li>
</ul>
</div>
</td>
</tr>
<tr style="height:2px;">
<td colspan="2"></td>
</tr>
<tr>
<th scope="row" class="navbox-group">Related topics</th>
<td class="navbox-list navbox-odd" style="text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px;">
<div style="padding:0em 0.25em;">
<ul>
<li><i><a href="/wiki/The_Cathedral_and_the_Bazaar" title="The Cathedral and the Bazaar">The Cathedral and the Bazaar</a></i></li>
<li><a href="/wiki/Fork_(software_development)" title="Fork (software development)">Forking</a></li>
<li><a href="/wiki/Linux_distribution" title="Linux distribution">Linux distribution</a></li>
<li><a href="/wiki/Microsoft_Open_Specification_Promise" title="Microsoft Open Specification Promise">Microsoft Open Specification Promise</a></li>
<li><i><a href="/wiki/Revolution_OS" title="Revolution OS">Revolution OS</a></i></li>
</ul>
</div>
</td>
</tr>
<tr style="height:2px;">
<td colspan="2"></td>
</tr>
<tr>
<td class="navbox-abovebelow" colspan="2" style="font-weight:bold;">
<div>
<ul>
<li><img alt="Wikipedia book" src="//upload.wikimedia.org/wikipedia/commons/thumb/8/89/Symbol_book_class2.svg/16px-Symbol_book_class2.svg.png" width="16" height="16" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/8/89/Symbol_book_class2.svg/23px-Symbol_book_class2.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/8/89/Symbol_book_class2.svg/31px-Symbol_book_class2.svg.png 2x" data-file-width="180" data-file-height="185" /> <a href="/wiki/Book:Free_and_Open_Source_Software" title="Book:Free and Open Source Software">Book</a></li>
<li><img alt="Category" src="//upload.wikimedia.org/wikipedia/en/thumb/4/48/Folder_Hexagonal_Icon.svg/16px-Folder_Hexagonal_Icon.svg.png" width="16" height="14" srcset="//upload.wikimedia.org/wikipedia/en/thumb/4/48/Folder_Hexagonal_Icon.svg/24px-Folder_Hexagonal_Icon.svg.png 1.5x, //upload.wikimedia.org/wikipedia/en/thumb/4/48/Folder_Hexagonal_Icon.svg/32px-Folder_Hexagonal_Icon.svg.png 2x" data-file-width="36" data-file-height="31" /> <a href="/wiki/Category:Free_software" title="Category:Free software">Category</a></li>
<li><img alt="Commons page" src="//upload.wikimedia.org/wikipedia/en/thumb/4/4a/Commons-logo.svg/12px-Commons-logo.svg.png" width="12" height="16" srcset="//upload.wikimedia.org/wikipedia/en/thumb/4/4a/Commons-logo.svg/18px-Commons-logo.svg.png 1.5x, //upload.wikimedia.org/wikipedia/en/thumb/4/4a/Commons-logo.svg/24px-Commons-logo.svg.png 2x" data-file-width="1024" data-file-height="1376" /> <a href="//commons.wikimedia.org/wiki/Category:Free_software" class="extiw" title="commons:Category:Free software">Commons</a></li>
<li><img alt="Portal" src="//upload.wikimedia.org/wikipedia/en/thumb/f/fd/Portal-puzzle.svg/16px-Portal-puzzle.svg.png" width="16" height="14" srcset="//upload.wikimedia.org/wikipedia/en/thumb/f/fd/Portal-puzzle.svg/24px-Portal-puzzle.svg.png 1.5x, //upload.wikimedia.org/wikipedia/en/thumb/f/fd/Portal-puzzle.svg/32px-Portal-puzzle.svg.png 2x" data-file-width="32" data-file-height="28" /> <a href="/wiki/Portal:Free_software" title="Portal:Free software">Portal</a></li>
</ul>
</div>
</td>
</tr>
</table>
</td>
</tr>
</table>
<!--
NewPP limit report
Parsed by mw1071
CPU time usage: 0.940 seconds
Real time usage: 1.044 seconds
Preprocessor visited node count: 1700/1000000
Preprocessor generated node count: 5796/1500000
Postexpand include size: 51650/2048000 bytes
Template argument size: 4517/2048000 bytes
Highest expansion depth: 14/40
Expensive parser function count: 6/500
Lua time usage: 0.125/10.000 seconds
Lua memory usage: 2.31 MB/50 MB
-->
<!-- Saved in parser cache with key enwiki:pcache:idhash:19193-0!*!0!!en!4!* and timestamp 20141001205443 and revision id 627868497
-->
<noscript><img src="//en.wikipedia.org/wiki/Special:CentralAutoLogin/start?type=1x1" alt="" title="" width="1" height="1" style="border: none; position: absolute;" /></noscript></div> <div class="printfooter">
Retrieved from "<a dir="ltr" href="http://en.wikipedia.org/w/index.php?title=MIT_License&amp;oldid=627868497">http://en.wikipedia.org/w/index.php?title=MIT_License&amp;oldid=627868497</a>" </div>
<div id='catlinks' class='catlinks'><div id="mw-normal-catlinks" class="mw-normal-catlinks"><a href="/wiki/Help:Category" title="Help:Category">Categories</a>: <ul><li><a href="/wiki/Category:Free_and_open-source_software_licenses" title="Category:Free and open-source software licenses">Free and open-source software licenses</a></li><li><a href="/wiki/Category:X_Window_System" title="Category:X Window System">X Window System</a></li><li><a href="/wiki/Category:Massachusetts_Institute_of_Technology" title="Category:Massachusetts Institute of Technology">Massachusetts Institute of Technology</a></li></ul></div><div id="mw-hidden-catlinks" class="mw-hidden-catlinks mw-hidden-cats-hidden">Hidden categories: <ul><li><a href="/wiki/Category:All_articles_with_unsourced_statements" title="Category:All articles with unsourced statements">All articles with unsourced statements</a></li><li><a href="/wiki/Category:Articles_with_unsourced_statements_from_February_2012" title="Category:Articles with unsourced statements from February 2012">Articles with unsourced statements from February 2012</a></li><li><a href="/wiki/Category:Wikipedia_articles_needing_clarification_from_August_2014" title="Category:Wikipedia articles needing clarification from August 2014">Wikipedia articles needing clarification from August 2014</a></li><li><a href="/wiki/Category:All_accuracy_disputes" title="Category:All accuracy disputes">All accuracy disputes</a></li><li><a href="/wiki/Category:Articles_with_disputed_statements_from_August_2014" title="Category:Articles with disputed statements from August 2014">Articles with disputed statements from August 2014</a></li><li><a href="/wiki/Category:Articles_with_unsourced_statements_from_January_2014" title="Category:Articles with unsourced statements from January 2014">Articles with unsourced statements from January 2014</a></li></ul></div></div> <div class="visualClear"></div>
</div>
</div>
<div id="mw-navigation">
<h2>Navigation menu</h2>
<div id="mw-head">
<div id="p-personal" role="navigation" class="" aria-labelledby="p-personal-label">
<h3 id="p-personal-label">Personal tools</h3>
<ul>
<li id="pt-createaccount"><a href="/w/index.php?title=Special:UserLogin&amp;returnto=MIT+License&amp;type=signup">Create account</a></li><li id="pt-login"><a href="/w/index.php?title=Special:UserLogin&amp;returnto=MIT+License" title="You're encouraged to log in; however, it's not mandatory. [o]" accesskey="o">Log in</a></li> </ul>
</div>
<div id="left-navigation">
<div id="p-namespaces" role="navigation" class="vectorTabs" aria-labelledby="p-namespaces-label">
<h3 id="p-namespaces-label">Namespaces</h3>
<ul>
<li id="ca-nstab-main" class="selected"><span><a href="/wiki/MIT_License" title="View the content page [c]" accesskey="c">Article</a></span></li>
<li id="ca-talk"><span><a href="/wiki/Talk:MIT_License" title="Discussion about the content page [t]" accesskey="t">Talk</a></span></li>
</ul>
</div>
<div id="p-variants" role="navigation" class="vectorMenu emptyPortlet" aria-labelledby="p-variants-label">
<h3 id="p-variants-label"><span>Variants</span><a href="#"></a></h3>
<div class="menu">
<ul>
</ul>
</div>
</div>
</div>
<div id="right-navigation">
<div id="p-views" role="navigation" class="vectorTabs" aria-labelledby="p-views-label">
<h3 id="p-views-label">Views</h3>
<ul>
<li id="ca-view" class="selected"><span><a href="/wiki/MIT_License" >Read</a></span></li>
<li id="ca-edit"><span><a href="/w/index.php?title=MIT_License&amp;action=edit" title="You can edit this page. Please use the preview button before saving [e]" accesskey="e">Edit</a></span></li>
<li id="ca-history" class="collapsible"><span><a href="/w/index.php?title=MIT_License&amp;action=history" title="Past versions of this page [h]" accesskey="h">View history</a></span></li>
</ul>
</div>
<div id="p-cactions" role="navigation" class="vectorMenu emptyPortlet" aria-labelledby="p-cactions-label">
<h3 id="p-cactions-label"><span>More</span><a href="#"></a></h3>
<div class="menu">
<ul>
</ul>
</div>
</div>
<div id="p-search" role="search">
<h3>
<label for="searchInput">Search</label>
</h3>
<form action="/w/index.php" id="searchform">
<div id="simpleSearch">
<input type="search" name="search" placeholder="Search" title="Search Wikipedia [f]" accesskey="f" id="searchInput" /><input type="hidden" value="Special:Search" name="title" /><input type="submit" name="fulltext" value="Search" title="Search Wikipedia for this text" id="mw-searchButton" class="searchButton mw-fallbackSearchButton" /><input type="submit" name="go" value="Go" title="Go to a page with this exact name if one exists" id="searchButton" class="searchButton" /> </div>
</form>
</div>
</div>
</div>
<div id="mw-panel">
<div id="p-logo" role="banner"><a style="background-image: url(//upload.wikimedia.org/wikipedia/en/b/bc/Wiki.png);" href="/wiki/Main_Page" title="Visit the main page"></a></div>
<div class="portal" role="navigation" id='p-navigation' aria-labelledby='p-navigation-label'>
<h3 id='p-navigation-label'>Navigation</h3>
<div class="body">
<ul>
<li id="n-mainpage-description"><a href="/wiki/Main_Page" title="Visit the main page [z]" accesskey="z">Main page</a></li>
<li id="n-contents"><a href="/wiki/Portal:Contents" title="Guides to browsing Wikipedia">Contents</a></li>
<li id="n-featuredcontent"><a href="/wiki/Portal:Featured_content" title="Featured content the best of Wikipedia">Featured content</a></li>
<li id="n-currentevents"><a href="/wiki/Portal:Current_events" title="Find background information on current events">Current events</a></li>
<li id="n-randompage"><a href="/wiki/Special:Random" title="Load a random article [x]" accesskey="x">Random article</a></li>
<li id="n-sitesupport"><a href="https://donate.wikimedia.org/wiki/Special:FundraiserRedirector?utm_source=donate&amp;utm_medium=sidebar&amp;utm_campaign=C13_en.wikipedia.org&amp;uselang=en" title="Support us">Donate to Wikipedia</a></li>
<li id="n-shoplink"><a href="//shop.wikimedia.org" title="Visit the Wikimedia Shop">Wikimedia Shop</a></li>
</ul>
</div>
</div>
<div class="portal" role="navigation" id='p-interaction' aria-labelledby='p-interaction-label'>
<h3 id='p-interaction-label'>Interaction</h3>
<div class="body">
<ul>
<li id="n-help"><a href="/wiki/Help:Contents" title="Guidance on how to use and edit Wikipedia">Help</a></li>
<li id="n-aboutsite"><a href="/wiki/Wikipedia:About" title="Find out about Wikipedia">About Wikipedia</a></li>
<li id="n-portal"><a href="/wiki/Wikipedia:Community_portal" title="About the project, what you can do, where to find things">Community portal</a></li>
<li id="n-recentchanges"><a href="/wiki/Special:RecentChanges" title="A list of recent changes in the wiki [r]" accesskey="r">Recent changes</a></li>
<li id="n-contactpage"><a href="//en.wikipedia.org/wiki/Wikipedia:Contact_us">Contact page</a></li>
</ul>
</div>
</div>
<div class="portal" role="navigation" id='p-tb' aria-labelledby='p-tb-label'>
<h3 id='p-tb-label'>Tools</h3>
<div class="body">
<ul>
<li id="t-whatlinkshere"><a href="/wiki/Special:WhatLinksHere/MIT_License" title="List of all English Wikipedia pages containing links to this page [j]" accesskey="j">What links here</a></li>
<li id="t-recentchangeslinked"><a href="/wiki/Special:RecentChangesLinked/MIT_License" title="Recent changes in pages linked from this page [k]" accesskey="k">Related changes</a></li>
<li id="t-upload"><a href="/wiki/Wikipedia:File_Upload_Wizard" title="Upload files [u]" accesskey="u">Upload file</a></li>
<li id="t-specialpages"><a href="/wiki/Special:SpecialPages" title="A list of all special pages [q]" accesskey="q">Special pages</a></li>
<li id="t-permalink"><a href="/w/index.php?title=MIT_License&amp;oldid=627868497" title="Permanent link to this revision of the page">Permanent link</a></li>
<li id="t-info"><a href="/w/index.php?title=MIT_License&amp;action=info">Page information</a></li>
<li id="t-wikibase"><a href="//www.wikidata.org/wiki/Q334661" title="Link to connected data repository item [g]" accesskey="g">Wikidata item</a></li>
<li id="t-cite"><a href="/w/index.php?title=Special:Cite&amp;page=MIT_License&amp;id=627868497" title="Information on how to cite this page">Cite this page</a></li> </ul>
</div>
</div>
<div class="portal" role="navigation" id='p-coll-print_export' aria-labelledby='p-coll-print_export-label'>
<h3 id='p-coll-print_export-label'>Print/export</h3>
<div class="body">
<ul>
<li id="coll-create_a_book"><a href="/w/index.php?title=Special:Book&amp;bookcmd=book_creator&amp;referer=MIT+License">Create a book</a></li>
<li id="coll-download-as-rdf2latex"><a href="/w/index.php?title=Special:Book&amp;bookcmd=render_article&amp;arttitle=MIT+License&amp;oldid=627868497&amp;writer=rdf2latex">Download as PDF</a></li>
<li id="t-print"><a href="/w/index.php?title=MIT_License&amp;printable=yes" title="Printable version of this page [p]" accesskey="p">Printable version</a></li>
</ul>
</div>
</div>
<div class="portal" role="navigation" id='p-lang' aria-labelledby='p-lang-label'>
<h3 id='p-lang-label'>Languages</h3>
<div class="body">
<ul>
<li class="interlanguage-link interwiki-ar"><a href="//ar.wikipedia.org/wiki/%D8%B1%D8%AE%D8%B5%D8%A9_%D8%A5%D9%85_%D8%A5%D9%8A_%D8%AA%D9%8A" title="رخصة إم إي تي Arabic" lang="ar" hreflang="ar">العربية</a></li>
<li class="interlanguage-link interwiki-bg"><a href="//bg.wikipedia.org/wiki/MIT_%D0%BB%D0%B8%D1%86%D0%B5%D0%BD%D0%B7" title="MIT лиценз Bulgarian" lang="bg" hreflang="bg">Български</a></li>
<li class="interlanguage-link interwiki-ca"><a href="//ca.wikipedia.org/wiki/Llic%C3%A8ncia_X11" title="Llicència X11 Catalan" lang="ca" hreflang="ca">Català</a></li>
<li class="interlanguage-link interwiki-cs"><a href="//cs.wikipedia.org/wiki/Licence_MIT" title="Licence MIT Czech" lang="cs" hreflang="cs">Čeština</a></li>
<li class="interlanguage-link interwiki-da"><a href="//da.wikipedia.org/wiki/MIT-licensen" title="MIT-licensen Danish" lang="da" hreflang="da">Dansk</a></li>
<li class="interlanguage-link interwiki-de"><a href="//de.wikipedia.org/wiki/MIT-Lizenz" title="MIT-Lizenz German" lang="de" hreflang="de">Deutsch</a></li>
<li class="interlanguage-link interwiki-es"><a href="//es.wikipedia.org/wiki/Licencia_MIT" title="Licencia MIT Spanish" lang="es" hreflang="es">Español</a></li>
<li class="interlanguage-link interwiki-eo"><a href="//eo.wikipedia.org/wiki/MIT-permesilo" title="MIT-permesilo Esperanto" lang="eo" hreflang="eo">Esperanto</a></li>
<li class="interlanguage-link interwiki-fa"><a href="//fa.wikipedia.org/wiki/%D9%BE%D8%B1%D9%88%D8%A7%D9%86%D9%87_%D8%A7%D9%85%E2%80%8C%D8%A2%DB%8C%E2%80%8C%D8%AA%DB%8C" title="پروانه ام‌آی‌تی Persian" lang="fa" hreflang="fa">فارسی</a></li>
<li class="interlanguage-link interwiki-fr"><a href="//fr.wikipedia.org/wiki/Licence_MIT" title="Licence MIT French" lang="fr" hreflang="fr">Français</a></li>
<li class="interlanguage-link interwiki-ko"><a href="//ko.wikipedia.org/wiki/MIT_%ED%97%88%EA%B0%80%EC%84%9C" title="MIT 허가서 Korean" lang="ko" hreflang="ko">한국어</a></li>
<li class="interlanguage-link interwiki-it"><a href="//it.wikipedia.org/wiki/Licenza_MIT" title="Licenza MIT Italian" lang="it" hreflang="it">Italiano</a></li>
<li class="interlanguage-link interwiki-ml"><a href="//ml.wikipedia.org/wiki/%E0%B4%8E%E0%B4%82%E0%B4%90%E0%B4%9F%E0%B4%BF_%E0%B4%85%E0%B4%A8%E0%B5%81%E0%B4%AE%E0%B4%A4%E0%B4%BF%E0%B4%AA%E0%B4%A4%E0%B5%8D%E0%B4%B0%E0%B4%82" title="എംഐടി അനുമതിപത്രം Malayalam" lang="ml" hreflang="ml">മലയാളം</a></li>
<li class="interlanguage-link interwiki-ms"><a href="//ms.wikipedia.org/wiki/Lesen_MIT" title="Lesen MIT Malay" lang="ms" hreflang="ms">Bahasa Melayu</a></li>
<li class="interlanguage-link interwiki-nl"><a href="//nl.wikipedia.org/wiki/MIT-licentie" title="MIT-licentie Dutch" lang="nl" hreflang="nl">Nederlands</a></li>
<li class="interlanguage-link interwiki-ja"><a href="//ja.wikipedia.org/wiki/MIT_License" title="MIT License Japanese" lang="ja" hreflang="ja">日本語</a></li>
<li class="interlanguage-link interwiki-no"><a href="//no.wikipedia.org/wiki/MIT-lisensen" title="MIT-lisensen Norwegian (bokmål)" lang="no" hreflang="no">Norsk bokmål</a></li>
<li class="interlanguage-link interwiki-pl"><a href="//pl.wikipedia.org/wiki/Licencja_X11" title="Licencja X11 Polish" lang="pl" hreflang="pl">Polski</a></li>
<li class="interlanguage-link interwiki-pt"><a href="//pt.wikipedia.org/wiki/Licen%C3%A7a_MIT" title="Licença MIT Portuguese" lang="pt" hreflang="pt">Português</a></li>
<li class="interlanguage-link interwiki-ru"><a href="//ru.wikipedia.org/wiki/%D0%9B%D0%B8%D1%86%D0%B5%D0%BD%D0%B7%D0%B8%D1%8F_MIT" title="Лицензия MIT Russian" lang="ru" hreflang="ru">Русский</a></li>
<li class="interlanguage-link interwiki-simple"><a href="//simple.wikipedia.org/wiki/MIT_License" title="MIT License Simple English" lang="simple" hreflang="simple">Simple English</a></li>
<li class="interlanguage-link interwiki-sk"><a href="//sk.wikipedia.org/wiki/MIT_licencia" title="MIT licencia Slovak" lang="sk" hreflang="sk">Slovenčina</a></li>
<li class="interlanguage-link interwiki-fi"><a href="//fi.wikipedia.org/wiki/MIT-lisenssi" title="MIT-lisenssi Finnish" lang="fi" hreflang="fi">Suomi</a></li>
<li class="interlanguage-link interwiki-sv"><a href="//sv.wikipedia.org/wiki/MIT_License" title="MIT License Swedish" lang="sv" hreflang="sv">Svenska</a></li>
<li class="interlanguage-link interwiki-th"><a href="//th.wikipedia.org/wiki/%E0%B8%AA%E0%B8%B1%E0%B8%8D%E0%B8%8D%E0%B8%B2%E0%B8%AD%E0%B8%99%E0%B8%B8%E0%B8%8D%E0%B8%B2%E0%B8%95%E0%B8%82%E0%B8%AD%E0%B8%87%E0%B8%AA%E0%B8%96%E0%B8%B2%E0%B8%9A%E0%B8%B1%E0%B8%99%E0%B9%80%E0%B8%97%E0%B8%84%E0%B9%82%E0%B8%99%E0%B9%82%E0%B8%A5%E0%B8%A2%E0%B8%B5%E0%B9%81%E0%B8%A1%E0%B8%AA%E0%B8%8B%E0%B8%B2%E0%B8%8A%E0%B8%B9%E0%B9%80%E0%B8%8B%E0%B8%95%E0%B8%AA%E0%B9%8C" title="สัญญาอนุญาตของสถาบันเทคโนโลยีแมสซาชูเซตส์ Thai" lang="th" hreflang="th">ไทย</a></li>
<li class="interlanguage-link interwiki-tr"><a href="//tr.wikipedia.org/wiki/MIT_Lisans%C4%B1" title="MIT Lisansı Turkish" lang="tr" hreflang="tr">Türkçe</a></li>
<li class="interlanguage-link interwiki-uk"><a href="//uk.wikipedia.org/wiki/%D0%9B%D1%96%D1%86%D0%B5%D0%BD%D0%B7%D1%96%D1%8F_MIT" title="Ліцензія MIT Ukrainian" lang="uk" hreflang="uk">Українська</a></li>
<li class="interlanguage-link interwiki-vi"><a href="//vi.wikipedia.org/wiki/Gi%E1%BA%A5y_ph%C3%A9p_MIT" title="Giấy phép MIT Vietnamese" lang="vi" hreflang="vi">Tiếng Việt</a></li>
<li class="interlanguage-link interwiki-zh"><a href="//zh.wikipedia.org/wiki/MIT%E8%A8%B1%E5%8F%AF%E8%AD%89" title="MIT許可證 Chinese" lang="zh" hreflang="zh">中文</a></li>
<li class="uls-p-lang-dummy"><a href="#"></a></li>
</ul>
<div class='after-portlet after-portlet-lang'><span class="wb-langlinks-edit wb-langlinks-link"><a action="edit" href="//www.wikidata.org/wiki/Q334661#sitelinks-wikipedia" text="Edit links" title="Edit interlanguage links" class="wbc-editpage">Edit links</a></span></div> </div>
</div>
</div>
</div>
<div id="footer" role="contentinfo">
<ul id="footer-info">
<li id="footer-info-lastmod"> This page was last modified on 1 October 2014 at 20:54.<br /></li>
<li id="footer-info-copyright">Text is available under the <a rel="license" href="//en.wikipedia.org/wiki/Wikipedia:Text_of_Creative_Commons_Attribution-ShareAlike_3.0_Unported_License">Creative Commons Attribution-ShareAlike License</a><a rel="license" href="//creativecommons.org/licenses/by-sa/3.0/" style="display:none;"></a>;
additional terms may apply. By using this site, you agree to the <a href="//wikimediafoundation.org/wiki/Terms_of_Use">Terms of Use</a> and <a href="//wikimediafoundation.org/wiki/Privacy_policy">Privacy Policy</a>. Wikipedia® is a registered trademark of the <a href="//www.wikimediafoundation.org/">Wikimedia Foundation, Inc.</a>, a non-profit organization.</li>
</ul>
<ul id="footer-places">
<li id="footer-places-privacy"><a href="//wikimediafoundation.org/wiki/Privacy_policy" title="wikimedia:Privacy policy">Privacy policy</a></li>
<li id="footer-places-about"><a href="/wiki/Wikipedia:About" title="Wikipedia:About">About Wikipedia</a></li>
<li id="footer-places-disclaimer"><a href="/wiki/Wikipedia:General_disclaimer" title="Wikipedia:General disclaimer">Disclaimers</a></li>
<li id="footer-places-contact"><a href="//en.wikipedia.org/wiki/Wikipedia:Contact_us">Contact Wikipedia</a></li>
<li id="footer-places-developers"><a href="https://www.mediawiki.org/wiki/Special:MyLanguage/How_to_contribute">Developers</a></li>
<li id="footer-places-mobileview"><a href="//en.m.wikipedia.org/w/index.php?title=MIT_License&amp;mobileaction=toggle_view_mobile" class="noprint stopMobileRedirectToggle">Mobile view</a></li>
</ul>
<ul id="footer-icons" class="noprint">
<li id="footer-copyrightico">
<a href="//wikimediafoundation.org/"><img src="//bits.wikimedia.org/images/wikimedia-button.png" width="88" height="31" alt="Wikimedia Foundation"/></a>
</li>
<li id="footer-poweredbyico">
<a href="//www.mediawiki.org/"><img src="//bits.wikimedia.org/static-1.25wmf1/resources/assets/poweredby_mediawiki_88x31.png" alt="Powered by MediaWiki" width="88" height="31" /></a>
</li>
</ul>
<div style="clear:both"></div>
</div>
<script>/*<![CDATA[*/window.jQuery && jQuery.ready();/*]]>*/</script><script>if(window.mw){
mw.loader.state({"ext.globalCssJs.site":"ready","ext.globalCssJs.user":"ready","site":"loading","user":"ready","user.groups":"ready"});
}</script>
<script>if(window.mw){
mw.loader.load(["ext.cite","mediawiki.toc","mediawiki.action.view.postEdit","mediawiki.user","mediawiki.hidpi","mediawiki.page.ready","mediawiki.searchSuggest","ext.gadget.teahouse","ext.gadget.ReferenceTooltips","ext.gadget.DRN-wizard","ext.gadget.charinsert","ext.gadget.refToolbar","ext.gadget.featured-articles-links","mmv.bootstrap.autostart","ext.eventLogging.subscriber","ext.navigationTiming","schema.UniversalLanguageSelector","ext.uls.eventlogger","ext.uls.interlanguage"],null,true);
}</script>
<script>if(window.mw){
document.write("\u003Cscript src=\"//bits.wikimedia.org/en.wikipedia.org/load.php?debug=false\u0026amp;lang=en\u0026amp;modules=site\u0026amp;only=scripts\u0026amp;skin=vector\u0026amp;*\"\u003E\u003C/script\u003E");
}</script>
<script>if(window.mw){
mw.config.set({"wgBackendResponseTime":239,"wgHostname":"mw1162"});
}</script>
</body>
</html>

117
kitchen.html Normal file
View File

@ -0,0 +1,117 @@
<html>
<head>
<title>Ansicht Kueche</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<link rel="stylesheet" type="text/css" href="css/bestformat.css">
<link rel="stylesheet" href="php/3rdparty/orderstyle/orderstyle.min.css" />
<link rel="stylesheet" href="php/3rdparty/orderstyle/jquery.mobile.icons.min.css" />
<link rel="stylesheet" href="php/3rdparty/jquery.mobile-1.4.0.min.css" type="text/css" />
<script src="php/3rdparty/jquery-2.0.3.min.js"></script>
<script src="php/3rdparty/jquery.mobile-1.4.0.min.js"></script>
<script src="utilities.js"></script>
<script src="kitchenbar.js"></script>
<style>
#tableWithEntriesToCook,#tableWithCookedEntries,#headertableToCook
{
width:100%;
}
#declareready,#declarenotcooked {
text-align:center;
vertical-align:middle;
}
#readybutton,#notreadybutton {
width:90%;
}
#optiontext
{
font-family:sans-serif;
font-size:10pt;
color:black;
}
#tableWithCookedEntries td {
background:#b4b4ec
}
.dividerline {
height: 10px;
}
</style>
</head>
<body>
<script>
// refreshing the content
$(document).ready(function() {
var refreshId = setInterval(function() {
getAndDisplayAllEntries();
}, 10000);
$.ajaxSetup({ cache: false });
});
function getEntriesToCook() {
// Food
var data = { kind: 0 };
doAjax("GET","php/contenthandler.php?module=queue&command=getJsonAllQueueItemsToMake",data,fillTableWithEntriesToCook,"no entries to make");
}
function getCookedEntries() {
var data = { kind: 0 };
doAjax("GET","php/contenthandler.php?module=queue&command=getJsonLastMadeItems",data,fillTableWithCookedEntries,"no cooked entries");
}
function hideElementsForNonKitchenUser(jsonAnswer) {
if (jsonAnswer != "Yes") {
$("#allpagecontent").hide();
}
}
$(document).on("pageinit", "#kitchen-page", function () {
initializeMainMenu("#modulemenu");
hideMenu();
doAjax("GET","php/contenthandler.php?module=admin&command=isLoggedinUserKitchen",null,hideElementsForNonKitchenUser,"Fehler");
getAndDisplayAllEntries();
});
</script>
<!--first page -->
<div data-role="page" id="kitchen-page">
<div data-role="panel" id="modulepanel" data-position="right" data-display="overlay">
<ul data-role="listview" id="modulemenu" data-divider-theme="a" data-inset="true">
<li data-role="list-divider" data-theme="b" data-role="heading">Module</li>
</ul>
</div><!-- /panel -->
<div data-role="header" data-theme="b" data-position="fixed">
<h1>Küche</h1>
<div data-type="horizontal" style="top:0px;position:absolute;float:right;z-index:10;display:inline;" align="right" class="ui-btn-right">
<a href="#" data-role="button" data-icon="arrow-d" data-ajax="false" id="menuswitch">Module</a>
</div>
</div>
<div data-role="content" id="allpagecontent">
<div id=listWithEntriesToCook></div>
<hr>
<div id=listWithCookedEntries></div>
</div>
<div data-role="footer" data-theme="b" id="thefooterr">
<div class="ui-grid-a">
<div class="ui-block-a userinfo" id="loggedinuser"></div>
<div class="ui-block-b grid_right" id="versioninfo"></div>
</div><!-- /grid-a -->
</div> <!-- footer -->
</body>
</html>

108
kitchenbar.js Normal file
View File

@ -0,0 +1,108 @@
function declareProductBeCookingOrCooked(queueid,action) {
var data = { queueid: queueid,
action : action};
doAjax("POST","php/contenthandler.php?module=queue&command=declareProductBeCookingOrCooked",data,resultOfProductDeclaration,"could not declare product");
}
function resultOfProductDeclaration(jsonText) {
if (jsonText.status != "OK") {
alert("Fehler " + jsonText.code + ": " + jsonText.msg);
}
}
function declareProductNOTBeCooked(queueid) {
var data = { queueid: queueid };
doAjax("POST","php/contenthandler.php?module=queue&command=declareProductNotBeCooked",data,resultOfProductDeclaration,"could not unmake product");
}
function fillTableWithEntriesToCook(entriesToCook) {
var aList = '';
$.each(entriesToCook, function (i, table) {
aList += listOfTable(table);
});
$("#listWithEntriesToCook").html(aList);
$("#listWithEntriesToCook").trigger("create");
$(".preparedlistitem").off("click").on("click", function (e) {
if ($(this).hasClass("cooking")) {
declareProductBeCookingOrCooked($(this).attr("id"),"r");
} else {
declareProductBeCookingOrCooked($(this).attr("id"),"c");
}
getAndDisplayAllEntries();
});
}
function listOfTable(table) {
var tableid = table.tableid;
var tablename = table.table;
var maxWaitTime = table.maxwaittime;
var aList = '<ul data-role="listview" id="' + tableid + '" data-divider-theme="a" data-inset="true">';
aList += '<li data-role="list-divider" data-theme="c" data-role="heading">' + tablename + ' (Max. Wartezeit: ' + maxWaitTime + ' min)</li>';
var itemsForTable = table.queueitems;
$.each(itemsForTable, function (i, entry) {
var option = '';
if (entry.option != '') {
option = '<p>' + entry.option + '</p>';
}
var theme = 'c';
var icon = "check";
var status = "not_cooking";
var label = entry.longname;
if (entry.cooking != '') {
theme ='d';
icon = "arrow-d";
status = "cooking";
label += "<small><i> (" + entry.cooking + ")</i></small>";
}
var img = '<img src="img/waittimes/' + entry.waiticon + '" />';
aList += '<li data-theme="' + theme + '" data-icon="' + icon + '" class="preparedlistitem ' + status + '" + id="'+ entry.id + '"><a href="#">' + img + label + option + '</a></li>';
});
aList += '</ul>';
return aList;
}
function fillTableWithCookedEntries(cookedEntries) {
var theList = '<ul data-role="listview" id="deliveredProdsList" data-divider-theme="a" data-inset="true">';
theList += '<li data-role="list-divider" data-theme="b" data-role="heading" data-icon="check">Zubereitet</li>';
$.each(cookedEntries, function (i, queueentry) {
var prodname = queueentry.longname;
var option = queueentry.option;
var readytime = queueentry.readytime;
var tablename = queueentry.tablename;
var infotext = tablename;
if (option != '') {
infotext = option + ' - ' + tablename;
}
var queue_entry_id = queueentry.id;
var tablename = queueentry.tablename;
theList += '<li data-theme="e" data-icon="arrow-u" id="' + queueentry.id + '" class="deliveredlistitem"><a href="#">' + prodname;
theList += '<p>' + infotext + '</p>';
theList += '</A></LI>';
});
theList += '</ul>';
$("#listWithCookedEntries").html(theList);
$("#listWithCookedEntries").trigger("create");
$(".deliveredlistitem").off("click").on("click", function (e) {
declareProductNOTBeCooked($(this).attr("id"));
getAndDisplayAllEntries();
});
}
function getAndDisplayAllEntries()
{
getEntriesToCook();
getCookedEntries();
}

9
logout.php Normal file
View File

@ -0,0 +1,9 @@
<?php
session_start();
session_destroy();
$hostname = $_SERVER['HTTP_HOST'];
$path = dirname($_SERVER['PHP_SELF']);
header('Location: http://'.$hostname.($path == '/' ? '' : $path).'/index.html');
?>

1370
manager.html Normal file

File diff suppressed because it is too large Load Diff

929
paydesk.html Normal file
View File

@ -0,0 +1,929 @@
<html>
<head>
<title>Ansicht Kasse</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<link rel="stylesheet" type="text/css" href="css/bestformat.css">
<link rel="stylesheet" href="php/3rdparty/orderstyle/orderstyle.min.css" />
<link rel="stylesheet" href="php/3rdparty/orderstyle/jquery.mobile.icons.min.css" />
<link rel="stylesheet" href="php/3rdparty/jquery.mobile-1.4.0.min.css" type="text/css" />
<script src="php/3rdparty/jquery-2.0.3.min.js"></script>
<script src="php/3rdparty/jquery.mobile-1.4.0.min.js"></script>
<script src="utilities.js"></script>
</head>
<body>
<style>
@media screen
{
.receipttable {width: 30%; background-color: #cccccc;}
}
@media print
{
.receipttable {width: 100%;};
}
@media print
{
#thefooter,#theheader,#modulemenu,#oben,#untenarea,#payWithoutPrint,#paybuttongroup,#hostbuttongroup {display: none;}
}
</style>
<script>
function getTax() {
doAjax("GET", "php/contenthandler.php?module=admin&command=getTax", null, insertTax, "Fehler Umsatzsteuerdaten");
}
function getTogoTax() {
doAjax("GET", "php/contenthandler.php?module=admin&command=getTogoTax", null, insertTogoTax, "Fehler Umsatzsteuerdaten");
}
function getCompanyInfo() {
doAjax("GET", "php/contenthandler.php?module=admin&command=getCompanyInfo", null, insertCompanyInfo, "Fehler Betriebsinfo");
}
function getLogoUrl() {
doAjax("GET", "php/contenthandler.php?module=admin&command=getLogoUrl", null, insertLogoUrl, "Fehler Logo-URL");
}
function getPayPrintType() {
doAjax("GET", "php/contenthandler.php?module=admin&command=getPayPrintType", null, insertPayPrintType, "Fehler Druckkonfiguration");
}
function getPayments() {
doAjax("GET", "php/contenthandler.php?module=admin&command=getPayments", null, insertPayments, "Fehler Zahlungswege");
}
function insertTax(taxval) {
if (taxval == "FAILED") {
alert("Keine Umsatzsteuerinformation bekommen!");
} else {
var usstGerVal = taxval.replace(".", ",");
$("#info-page").data("usstGerVal",usstGerVal);
$("#info-page").data("usst",taxval);
}
}
function insertTogoTax(taxval) {
if (taxval == "FAILED") {
alert("Keine ToGo-Umsatzsteuerinformation bekommen!");
} else {
var usstGerVal = taxval.replace(".", ",");
$("#info-page").data("togoTaxGerVal",usstGerVal);
$("#info-page").data("togotax",taxval);
}
}
function insertCompanyInfo(companyInfo) {
$("#info-page").data("companyInfo",companyInfo);
}
function insertLogoUrl(logoUrl) {
$("#info-page").data("logoUrl",logoUrl);
}
function insertPayPrintType(payPrintType) {
$("#info-page").data("payPrintType",payPrintType);
}
function insertPayments(payments) {
var paymentList = "";
$.each(payments, function (i,payType) {
paymentList += '<a href="#" class="sure-do" data-role="button" data-theme="f" data-rel="back" id="paym_' + payType.id + '">' + payType.name + '</a>';
});
paymentList += '<a href="#" data-role="button" data-theme="d" data-rel="back" id="paym_cancel">Abbruch</a>';
$("#paymentlist").html(paymentList);
}
function hideReceiptPart() {
$("#payWithoutPrint").hide();
$("#payWithPrint").hide();
$("#hostbutton").hide();
$("#togobutton").hide();
$("#unten").hide();
}
function showReceiptPart() {
$("#payWithoutPrint").show();
$("#payWithPrint").show();
$("#hostbutton").show();
$("#togobutton").show();
$("#unten").show();
}
function displayAllRooms() {
$("#moneyToInsert").val("");
$("#moneyToTakeOut").val("");
$("#cashactions").show();
hideReceiptPart();
// first empty receipt
$("#prodlistinreceipt").empty().append('<td id="receiptprodheader" class="price">Anz<td>Beschreibung<td class="price">Preis<td class="price">Total');
$.getJSON("php/contenthandler.php?module=roomtables&command=getRooms",function(roomtableinfo) {
var noOfRooms = roomtableinfo.length;
if (noOfRooms == 1) {
$("#info-page").data("roomid",roomtableinfo[0]["id"]);
displayTablesOfRoom(roomtableinfo[0]);
} else {
var li = "";
$.each(roomtableinfo, function (i, name) {
li += '<li data-theme="f"><a href="#" id="' + i + '" class="info-go">' + name.name + '</a></li>';
});
$("#oben").append(li).promise().done(function () {
$(this).off("click").on("click", "a", function (e) {
e.stopImmediatePropagation();
e.preventDefault();
var roomdetail = roomtableinfo[this.id];
$("#info-page").data("roomid",roomdetail["id"]);
displayTablesOfRoom(roomdetail);
});
refreshList(this);
});
}
});
}
function displayTablesOfRoom (roomdetail) {
var roomid = $("#info-page").data("roomid");
hideReceiptPart();
displayUnpaidTables("Tischinfo nicht erhalten!");
}
$(document).ready(function() {
var refreshId = setInterval(function() {
var roomid = $("#info-page").data("roomid");
if (roomid != null) {
displayUnpaidTables(null);
}
}, 10000);
$.ajaxSetup({ cache: false });
});
function displayUnpaidTables(errorMsg) {
doAjax("GET","php/contenthandler.php?module=roomtables&command=getUnpaidTables",{roomid:$("#info-page").data("roomid")},displayTables,errorMsg);
}
function displayTables(tables) {
$("#info-page").data("tableviewactive",1);
var li = '<li data-role="list-divider" data-theme="b" data-role="heading">Tischauswahl</li>';
$.each(tables, function( index, value ) {
var sum = value["sum"].replace(".",",");
var txt = value["name"] + "&nbsp;&nbsp;&nbsp;&nbsp;<small><i>(" + sum + " Euro)</i></small>";
li += '<li data-theme="e"><a href="#" id="' + index + '" class="info-go">' + txt + '</a></li>';
});
//append list to ul
$("#oben").empty().append(li).promise().done(function () {
$(this).off("click").on("click", ".info-go", function (e) {
e.stopImmediatePropagation();
e.preventDefault();
// this.id = Nummer des Eintrags in der Liste der Tische (d.h. 8. Eintrag k?nnte Tisch 10 sein)
//var roomid = roomdetail["id"]; // hier ist roomdetail das alte, nicht das von oben!!!
$("#info-page").data("roomid",null);
$("#info-page").data("tableviewactive",0);
var tableid = tables[this.id]["id"];
var tablename = tables[this.id]["name"];
$("#info-page").data("tid",tableid);
$("#info-page").data("tablename",tablename);
//var roomtable_array= new Array(roomid,tableid,tablename);
getProdsToPayForTable(tableid,tablename);
});
//refresh list to enhance its styling.
refreshList(this);
});
};
function getProdsToPayForTable(tableid,tablename) {
$("#cashactions").hide();
$.ajax({ type: "GET",
dataType: "json",
data : { tableid: tableid },
url: "php/contenthandler.php?module=queue&command=getJsonProductsOfTableToPay",
async: false,
success : function(jsonText)
{
var status = jsonText.status;
var msg = jsonText.msg;
if (status != "ERROR") {
showReceiptPart();
$("#info-page").data("tableprods",msg);
bindPayButton(msg,tableid,tablename);
displayProdsToPayForTable(msg,tablename);
} else {
alert("Fehler: " + msg);
}
},
error: function( text ) {
alert( "Sorry, there was a problem getting the products to pay for table!");
}
});
}
function displayProdsToPayForTable(jsonContent,tablename) {
$('#tableinreceipt').html(tablename + '<br>&nbsp;');
clearUntenAndReceipt();
createAllEntriesInReceipt();
calcSum();
$("#oben").empty().promise().done(function () {
var li = '<li data-role="list-divider" data-theme="b" data-role="heading">Ausstehend für Tisch ' + tablename + '</li>'; // init a list
$("#oben").empty().append(li);
$("#oben").append('<li data-theme="f" data-icon="check"><a href="#" id="payall">Alles</a></li>');
$.each(jsonContent, function (index,aProd) {
// var queueid = jsonContent[this.id]["id"];
addToOben(aProd["prodid"],aProd["longname"],aProd["price"],aProd["pricelevelname"],index);
});
});
refreshList("#oben");
addAllToUnten(jsonContent,tablename);
}
function generateListItem(theme,icon,id,content) {
var li = '<li data-theme="' + theme + '" data-icon="' + icon + '">';
li += '<a href="#" id="' + id + '" class="info-go">' + content + '</a></li>';
return li;
}
function addAllToUnten(jsonContent,tablename) {
$("#payall").off("click").on("click", function (e) {
e.stopImmediatePropagation();
e.preventDefault();
var entryListForReceipt=new Array();
$("#oben li a.info-go").each(function() {
var id_in_jsonText = $(this).attr('id');
var prodid = jsonContent[id_in_jsonText]["prodid"];
var longname = jsonContent[id_in_jsonText]["longname"];
var price = jsonContent[id_in_jsonText]["price"];
var pricelevelname = jsonContent[id_in_jsonText]["pricelevelname"];
var entry = new Array(id_in_jsonText,prodid,longname,price,pricelevelname);
entryListForReceipt.push(entry);
});
$.each(entryListForReceipt, function (i, entry) {
var indexInJson = entry[0];
var prodid = entry[1];
var longname = entry[2];
var price = entry[2];
var pricelevelname = entry[2];
addToUnten(prodid,longname,price,pricelevelname,indexInJson);
$("#oben li .info-go").each(function() {
$(this).closest('li').remove().promise();
});
refreshList("#oben");
});
});
}
function addToOben(prodid,longname,price,pricelevelname,index) {
var jsonContent = $("#info-page").data("tableprods");
var tablename = $("#info-page").data("tablename");
if (pricelevelname != "A") {
longname += " (" + pricelevelname + ")";
}
var li_item = generateListItem("c","plus",index,longname);
$("#oben").append(li_item).promise().done(function () {
createAllEntriesInReceipt();
$(this).off("click").on("click", ".info-go", function (e) {
e.stopImmediatePropagation();
e.preventDefault();
var prodid = jsonContent[this.id]["prodid"];
var price = jsonContent[this.id]["price"];
var pricelevelname = jsonContent[this.id]["pricelevelname"];
var longname = jsonContent[this.id]["longname"];
addToUnten(prodid,longname,price,pricelevelname,this.id);
createAllEntriesInReceipt();
$(this).closest("li").remove();
refreshList("#oben");
});
});
refreshList("#oben");
}
// Make table empty...
function clearUntenAndReceipt() {
var untenHeader = '<li data-role="list-divider" data-theme="b" data-role="heading">';
untenHeader += 'Inhalt Kassenbon: <p id="priceinreceipt">0,00 Euro</p></li>';
$("#unten").empty().append(untenHeader).promise().done(function () {
refreshList("#unten");
});
$('#prodlistinreceipt tr').each(function() {
$(this).remove();
});
$("#thedate").html('<br><br>&nbsp;<br>');
}
function addToUnten(prodid,longname,price,pricelevelname,index) {
var jsonContent = $("#info-page").data("tableprods");
var tablename = $("#info-page").data("tablename");
if (pricelevelname != "A") {
longname += " (" + pricelevelname + ")";
}
var li_item = generateListItem("f","minus",index,longname);
$("#unten").append(li_item).promise().done(function () {
createAllEntriesInReceipt();
$(this).off("click").on("click", ".info-go", function (e) {
e.stopImmediatePropagation();
e.preventDefault();
var prodid = jsonContent[this.id]["prodid"];
var price = jsonContent[this.id]["price"];
var pricelevelname = jsonContent[this.id]["pricelevelname"];
var longname = jsonContent[this.id]["longname"];
addToOben(prodid,longname,price,pricelevelname,this.id);
$(this).closest("li").remove();
createAllEntriesInReceipt();
refreshList("#unten");
});
});
refreshList("#unten");
}
// arrayToFill:
// [0]: count prodid prodid-pricelevelname queueid longname price pricelevelname
// [1]: count prodid prodid-pricelevelname queueid longname price pricelevelname
//
// entry:
// [0]: prodid queueid longname price pricelevelname
function addEntryOrIncreaseCount(arrayToFill,entry) {
var index=0;
var found = false;
var combinedIdAndPricelevel = entry[0] + "-" + entry[4];
for (index=0;index<arrayToFill.length;index++) {
var anEntry = arrayToFill[index];
// entry = prodid,queueid,longname,price,pricelevelname
// anEntry = count,prodid,"prodid-pricelevel",queueid,longname,price
if (anEntry[2] == combinedIdAndPricelevel) {
// prodid equal
anEntry[0] += 1;
//alert("Duplikate: " + anEntry[0]);
found = true;
}
}
if (!found) {
//alert("Adde hinzu);
arrayToFill.push(new Array(1,entry[0],combinedIdAndPricelevel,entry[1],entry[2],entry[3],entry[4]));
}
return arrayToFill;
}
function calcSum() {
var jsonContent = $("#info-page").data("tableprods");
var sum = 0.0;
var tax = parseFloat($("#info-page").data("usst"));
if ($("#info-page").data("taxtype") == "togo") {
tax = parseFloat($("#info-page").data("togotax"));
}
$("#unten li a.info-go").each(function() {
var id_in_jsonText = $(this).attr('id');
var price = jsonContent[id_in_jsonText]["price"];
sum += parseFloat(price);
});
var netto = sum/(1 + tax/100.0);
var mwst_part = sum - netto;
$("#mwst").html(mwst_part.toFixed(2).replace(".",","));
$("#netto").html(netto.toFixed(2).replace(".",","));
$("#brutto").html(sum.toFixed(2).replace(".",","));
$("#priceinreceipt").html(sum.toFixed(2).replace(".",",") + " Euro");
$("#priceinreceipt2").html(sum.toFixed(2).replace(".",",") + " Euro");
}
function createAllEntriesInReceipt() {
var jsonContent = $("#info-page").data("tableprods");
var tablename = $("#info-page").data("tablename");
var priceStyle = 'style="border: solid black 0px;padding: 3px;text-align:right;vertical-align:bottom;"';
var entryListForReceipt=new Array();
// collect all entries in the list #unten
$("#unten li a.info-go").each(function() {
//tablecontent += '<tr class="prodlistinreceipt"><td id="count" class="price">1<td>' + longname + '<td id="price" class="price">' + (eval(price)).toFixed(2) + '<td id="total" class="price">' + (eval(price)).toFixed(2) + '</tr>';
var id_in_jsonText = $(this).attr('id');
var queueid = jsonContent[id_in_jsonText]["id"];
var prodid = jsonContent[id_in_jsonText]["prodid"];
var longname = jsonContent[id_in_jsonText]["longname"];
var price = jsonContent[id_in_jsonText]["price"];
var pricelevelname = jsonContent[id_in_jsonText]["pricelevelname"];
var entry = new Array(prodid,queueid,longname,price,pricelevelname);
entryListForReceipt = addEntryOrIncreaseCount(entryListForReceipt,entry);
});
var tablecontent = createReceiptHeader();
var index=0;
for (index=0;index<entryListForReceipt.length;index++) {
var anEntry = entryListForReceipt[index];
var count = parseInt(anEntry[0]);
var prodid = anEntry[1];
var queueid = anEntry[3];
var longname = anEntry[4];
var price = parseFloat(anEntry[5]);
var pricelevelname = anEntry[6];
if (pricelevelname != "A") {
longname += " (" + pricelevelname + ")";
}
var totalPrice = count * price;
var aProductLine = '<tr>';
//aProductLine += '<td class="price" id="prodid">' + prodid;
aProductLine += '<td ' + priceStyle + ' id="count">' + count + '<td>&nbsp;<td colspan=2>' + longname;
aProductLine = aProductLine + '<td ' + priceStyle + '>' + price.toFixed(2).replace(".",",");
aProductLine += '<td ' + priceStyle + '>' + totalPrice.toFixed(2).replace(".",",") + '</tr>';
tablecontent += aProductLine;
}
var taxGerFormat = $("#info-page").data("usstGerVal");
if ($("#info-page").data("taxtype") == "togo") {
taxGerFormat = $("#info-page").data("togoTaxGerVal");
}
tablecontent += createReceiptFooter(taxGerFormat);
// now calculate everything without hosting part for later export
$('#receiptpart').html(tablecontent);
calcSum(); // updates info:
var calculatedBill = $('#receiptpart').html();
$('#info-page').data("receipthtml",calculatedBill);
// shall the hosting be visible?
var visibilityHostPart = $("#info-page").data("hosting");
var hosttablepart = "";
if (visibilityHostPart == 1) {
// need to use .ajax instead of .get to set cache to false!
$.ajax({
url: "customer/bon-bewirtungsvorlage.html",
async: false,
success: function(hostdata){
$('#receiptpart').html(tablecontent + hostdata);
calcSum();
},
error: function( text ) {
alert( "Kommunikationsfehler zum Server: ");
},
cache: false
});
} else {
$('#receiptpart').html(tablecontent + hosttablepart);
calcSum();
}
}
function createReceiptHeader() {
var priceStyle = 'style="border: solid black 0px;padding: 3px;text-align:right;vertical-align:bottom;"';
var tablename = $("#info-page").data("tablename");
var logoUrl = $("#info-page").data("logoUrl");
var header = '';
if (logoUrl.length != 0) {
header += '<tr><td colspan=6><img src="' + logoUrl + '" width=100% /></td></tr>';
}
header += '<tr><td colspan=6>&nbsp;</tr>';
header += '<tr><td colspan=4>Tisch: ' + tablename + ' <td id="billid" colspan=2 ' + priceStyle + '></tr>';
header += '<tr><td colspan=4>&nbsp;<td id="billdate" colspan=2 ' + priceStyle + '></tr>';
header += '<tr><td colspan=4>Es bedient Sie: ' + $("#loggedinuser").html() + "</tr>";
header += '<tr><td colspan=6>&nbsp</tr>';
header += '<tr><td>Anz <td>&nbsp; <td colspan=2>Beschreibung <td ' + priceStyle + '>Preis <td ' + priceStyle + '>Total </tr>';
return header;
}
function createReceiptFooter(taxGerFormat) {
var priceStyle = 'style="border: solid black 0px;padding: 3px;text-align:right;vertical-align:bottom;"';
var infoStyle = 'style="text-align:center;vertical-align:bottom;"';
var emptyLine = '<tr><td colspan=6>&nbsp</tr>';
var footer = emptyLine;
footer += '<tr><td> &nbsp; <td colspan=3>Summe: <td id="priceinreceipt2" ' + priceStyle + ' colspan=2></td></tr>';
footer += emptyLine;
footer += '<tr><td colspan=2>MwSt% <td ' + priceStyle + '>MwST <td ' + priceStyle + '>Netto <td ' + priceStyle + ' colspan=2>Brutto </tr>';
footer += '<tr><td colspan=2>' + taxGerFormat + '% <td id="mwst" ' + priceStyle + '> <td id="netto" ' + priceStyle + '><td id="brutto" ' + priceStyle + ' colspan=2> </tr>';
footer += '<tr><td ' + infoStyle + ' colspan=6><center>&nbsp;<br>';
footer += $("#info-page").data("companyInfo").replace(/(?:\r\n|\r|\n)/g, '<br />');
footer += '</center></tr>';
return footer;
}
function bindPayButton(jsonContent,tableid,tablename) {
$("#payWithoutPrint").off("click").on("click", function (e) {
e.stopImmediatePropagation();
e.preventDefault();
selectPayment(jsonContent,tableid,tablename,false);
});
$("#payWithPrint").off("click").on("click", function (e) {
e.stopImmediatePropagation();
e.preventDefault();
selectPayment(jsonContent,tableid,tablename,true);
});
}
function selectPayment(jsonContent,tableid,tablename,printoption) {
// first test if there are items to pay!
var itemsToPay = $('#unten li').size() - 1;
if (itemsToPay == 0) {
$.mobile.changePage("#nocashitems");
} else {
// start pay process by selection of payment types
$.mobile.changePage("#paymentdialog");
$("#paymentdialog .sure-do").off("click").on("click", function() {
var paymentId = (($(this).attr("id")).split("_"))[1];
$(this).off("click");
$.mobile.changePage("#info-page");
var appliedTax = $("#info-page").data("usst");
if ($("#info-page").data("taxtype") == "togo") {
appliedTax = $("#info-page").data("togotax");
}
startPayProcess(jsonContent,printoption,tableid,tablename,paymentId,appliedTax);
});
}
}
function startPayProcess(jsonContent,printoption,tableid,tablename,paymentid,tax) {
var ids="";
$('#unten li').each(function() {
var index = $(this).find("a").attr("id");
if (typeof index != 'undefined') {
var queueid = jsonContent[index]["id"];
ids += queueid + ",";
}
});
// declarePaidCreateBillReturnBillId
var style = ' style="width: 30%; background-color: #cccccc;" ';
var htmlContentWithoutHosting = '<table ' + style + '>' + $('#info-page').data("receipthtml") + '</table>';
$.ajax({ type: "POST",
dataType: "json",
data : { ids: ids,
html : htmlContentWithoutHosting,
brutto: $("#brutto").html().replace(",","."),
netto: $("#netto").html().replace(",","."),
tableid : tableid,
paymentid : paymentid,
tax : tax
},
url: "php/contenthandler.php?module=queue&command=declarePaidCreateBillReturnBillId",
async: false,
success : function(jsonText)
{
var status = jsonText.status;
var billinfo = jsonText.msg;
if (status != "ERROR") {
billid = billinfo.billid;
billdate = billinfo.date;
if (billid < 0) {
alert("Error! Bitte erneut versuchen. Error code: " + billid);
window.location.reload(false);
} else {
$("#billid").html("Bon-Nr: " + billid);
$("#billdate").html(billdate);
if (printoption) {
var htmlContent = "<table width=100%>" + $("#receiptpart").html() + "</table>";
var payPrintType = $("#info-page").data("payPrintType");
if (payPrintType == 's') {
printBill(htmlContent);
} else {
window.print();
}
}
var itemsLeft = $('#oben li').size() - 2;
if (itemsLeft > 0) {
getProdsToPayForTable(tableid,tablename);
} else {
// so that reload also works for Chrome:
setTimeout(function(){document.location.href = "paydesk.html"},500);
}
}
} else {
alert("Fehler: " + msg);
}
},
error: function( text ) {
alert( "Sorry, there was a problem! " + text);
}
});
}
function printBill(htmlText) {
doAjax("POST","php/contenthandler.php?module=printqueue&command=queuePrintJob",
{content : htmlText, type: 3 }, null, "Druckfehler");
}
function bindHostButton() {
$("#hostbutton").off("click").on("click", function (e) {
e.stopImmediatePropagation();
e.preventDefault();
var statusVisibility = $("#info-page").data("hosting");
if (statusVisibility == '0') {
$("#info-page").data("hosting",'1');
} else {
$("#info-page").data("hosting",'0');
}
createAllEntriesInReceipt();
});
}
function bindTogoButton() {
$("#togobutton").off("click").on("click", function (e) {
e.stopImmediatePropagation();
e.preventDefault();
if ($("#info-page").data("taxtype") == "normal") {
$("#info-page").data("taxtype","togo");
$("#togobutton").buttonMarkup({ icon: "check"});
} else {
$("#info-page").data("taxtype","normal");
$("#togobutton").buttonMarkup({ icon: "delete"});
}
createAllEntriesInReceipt();
});
}
function cashactions() {
$(".cashaction").off("click").on("click", function (e) {
var id = $(this).attr('id');
if (id == "cashtakeout") {
startCashTakeOutProcess();
} else if (id == "cashinsert") {
startCashInsertProcess();
} else if (id == "cashoverview") {
startCashOverviewProcess() ;
}
});
}
function startCashInsertProcess() {
$("#cashinsertdialog .sure-do").off("click").on("click", function() {
//$(this).off("click");
$.mobile.changePage("#info-page");
var money = $("#moneyToInsert").val().replace(",",".");
if (isNaN(money)) {
alert("Keine Zahl!");
} else {
if (parseFloat(money) >= 0.0) {
doCashInsert(money);
} else {
alert("Betrag muss positiv sein!");
}
}
});
$.mobile.changePage("#cashinsertdialog");
}
function startCashTakeOutProcess() {
$("#cashtakeoutdialog .sure-do").off("click").on("click", function() {
//$(this).off("click");
$.mobile.changePage("#info-page");
var money = $("#moneyToTakeOut").val().replace(",",".");
if (isNaN(money)) {
alert("Keine Zahl!");
} else {
if (parseFloat(money) >= 0.0) {
doCashTakeOut(money);
} else {
alert("Betrag muss positiv sein!");
}
}
});
$.mobile.changePage("#cashtakeoutdialog");
}
function doCashInsert(money) {
doAjax("POST", "php/contenthandler.php?module=bill&command=doCashAction", {money: money}, handleCashActionResult, "Fehler Kassenaktion");
}
function doCashTakeOut(money) {
money = 0.0 - parseFloat(money);
doAjax("POST", "php/contenthandler.php?module=bill&command=doCashAction", {money: money}, handleCashActionResult, "Fehler Kassenaktion");
}
function startCashOverviewProcess() {
doAjax("POST", "php/contenthandler.php?module=bill&command=getCashOverviewOfUser", null, showCashOverview, "Fehler Kassenaktion");
}
function handleCashActionResult(jsonText) {
if (jsonText.status == "ERROR") {
alert("Fehler " + jsonText.code + ": " + jsonText.msg);
} else if (jsonText.status == "OK") {
alert("Kassenaktion abgeschlossen");
}
}
function showCashOverview(jsonText) {
$("#cashbyguests").html((parseFloat(jsonText.guestmoney).toFixed(2)).replace(".",","));
$("#cashtotal").html((parseFloat(jsonText.total).toFixed(2)).replace(".",","));
$.mobile.changePage("#cashoverviewinfo");
}
$(document).on("pageinit", "#info-page", function () {
initializeMainMenu("#modulemenu");
hideMenu();
getTax(); // put tax info as data to page
$("#info-page").data("taxtype","normal");
getTogoTax();
getCompanyInfo(); // request the company info and put it as data to page for later use
getLogoUrl();
getPayPrintType();
getPayments();
$("#hostingtablepart").hide();
$("#info-page").data("hosting",'0');
bindHostButton();
bindTogoButton();
cashactions();
// button in header to start paydesk
$("#startpaypage").off("click").on("click", function (e) {
e.stopImmediatePropagation();
e.preventDefault();
window.location.reload(false);
});
var urlsuffix = location.search;
if (urlsuffix.length==0) {
displayAllRooms();
} else {
var urlstr=urlsuffix.slice(1);
var parts= urlstr.split("=");
if (parts.length != 2) {
// default
displayAllRooms();
}
var tid = parts[1];
// do not show cash actions if URL called by waiter module
$("#cashactions").hide();
$.ajax({ type: "GET",
url: "php/contenthandler.php?module=queue&command=getJsonTableNameFromId",
dataType: "json",
data: {tableid : tid},
async: false,
success : function(jsonContent)
{
$("#info-page").data("tid",tid);
$("#info-page").data("tablename",jsonContent);
getProdsToPayForTable(tid,jsonContent);
},
error: function( text ) {
alert( "Kommunikationsfehler zum Server bei Tischnamenabfrage: " + errorMsg);
}
});
}
});
</script>
<div data-role="page" id="info-page">
<div data-role="panel" id="modulepanel" data-position="right" data-display="overlay">
<ul data-role="listview" id="modulemenu" data-divider-theme="a" data-inset="true">
<li data-role="list-divider" data-theme="b" data-role="heading">Module</li>
</ul>
</div><!-- /panel -->
<div data-role="header" data-theme="b" data-position="fixed" id="theheader">
<h1>Kasse</h1>
<div data-type="horizontal" style="top:0px;position:absolute;float:right;z-index:10;display:inline;" align="right" class="ui-btn-right">
<a href="#" data-role="button" data-icon="arrow-d" data-ajax="false" id="menuswitch">Module</a>
</div>
<div data-type="horizontal" style="top:10px;position:absolute;float:right;z-index:10;display:inline;" align="left" class="ui-btn-left">
<a href="#" data-role="button" data-icon="arrow-l" data-ajax="false" id="startpaypage"></a>
</div>
</div>
<div data-role="content">
<ul data-role="listview" id="oben" data-divider-theme="a" data-inset="true">
<li data-role="list-divider" data-theme="b" data-role="heading">Raumauswahl</li>
</ul>
<ul data-role="listview" id="cashactions" data-divider-theme="a" data-inset="true">
<li data-role="list-divider" data-theme="b" data-role="heading">Kassenaktionen</li>
<li data-theme="e"><a href="#" id="cashinsert" class="info-go cashaction">Bareinlage</a></li>
<li data-theme="e"><a href="#" id="cashtakeout" class="info-go cashaction">Barentnahme</a></li>
<li data-theme="e"><a href="#" id="cashoverview" class="info-go cashaction">Einnahmen</a></li>
</ul>
<div id="untenarea">
<ul data-role="listview" id="unten" data-divider-theme="a" data-inset="true">
<li data-role="list-divider" data-theme="b" data-role="heading">
Inhalt Kassenbon: <p id="priceinreceipt">0,00 Euro</p>
</li>
</ul>
</div>
<div data-role="controlgroup" data-type="horizontal" id="paybuttongroup">
<a href="#" data-role="button" data-theme="b" data-icon="check" id="payWithoutPrint">Nur Zahlung</a>
<a href="#" data-role="button" data-theme="b" data-icon="grid" id="payWithPrint">Bondruck</a>
</div>
<div data-role="controlgroup" data-type="horizontal" id="hostbuttongroup">
<a href="#" data-role="button" data-theme="b" data-icon="check" id="hostbutton">Bewirtungsbeleg</a>
<a href="#" data-role="button" data-theme="b" data-icon="delete" id="togobutton">To Go</a>
</div>
<div id="partForSaveInBill"> <!-- This part will be saved into bill in db -->
<table id="receiptpart" class="receipttable" border=1>
</table>
</div> <!-- end of partForSaveInBill -->
</div>
<div data-role="footer" data-theme="b" id="thefooter">
<div class="ui-grid-a">
<div class="ui-block-a userinfo" id="loggedinuser"></div>
<div class="ui-block-b grid_right" id="versioninfo"></div>
</div><!-- /grid-a -->
</div> <!-- footer -->
</div>
<!-- Dialog page -->
<div data-role="dialog" id="paymentdialog" data-title="Zahlungsart">
<div data-role="content">
<h3>Zahlungsart</h3>
<p>Auswahl der Zahlungsart</p>
<div id=paymentlist>
<a href="#" class="sure-do" data-role="button" data-theme="b" data-rel="back">Ja</a>
</div>
</div>
</div>
<!-- Dialog page -->
<div data-role="dialog" id="sure" data-title="Entfernen?">
<div data-role="content">
<h3>Zahlungsart</h3>
<a href="#" class="sure-do" data-role="button" data-theme="b" data-rel="back">Ja</a>
<a href="#" class="sure-do" data-role="button" data-theme="b" data-rel="back">Wert2</a>
<a href="#" data-role="button" data-theme="c" data-rel="back">Nein</a>
</div>
</div>
<!-- Dialog page for cash insert -->
<div data-role="dialog" id="cashinsertdialog" data-title="Kassenaktion">
<div data-role="content">
<h3>Bareinlage in die Kasse</h3>
<label for="stornocode">Betrag: </label>
<input type="text" id="moneyToInsert" value="" data-mini="true">
<div id=paymentlist>
<a href="#" class="sure-do" data-role="button" data-theme="b" data-rel="back">Einlegen</a>
<a href="#" data-role="button" data-theme="d" data-rel="back" id="cash_insert_cancel">Abbruch</a>
</div>
</div>
</div>
<!-- Dialog page for cash insert -->
<div data-role="dialog" id="cashtakeoutdialog" data-title="Kassenaktion">
<div data-role="content">
<h3>Barentnahme aus der Kasse</h3>
<label for="stornocode">Betrag: </label>
<input type="text" id="moneyToTakeOut" value="" data-mini="true">
<div id=paymentlist>
<a href="#" class="sure-do" data-role="button" data-theme="b" data-rel="back">Entnehmen</a>
<a href="#" data-role="button" data-theme="d" data-rel="back" id="cash_takeout_cancel">Abbruch</a>
</div>
</div>
</div>
<div data-role="dialog" id="cashoverviewinfo" name="cashoverviewinfo" data-overlay-theme="a" style="max-width:70%;" class="ui-corner-all">
<div data-role="content">
<h3>Übersicht Kellnerkasse</h3>
<p>Diese Übersicht enthält die Bewirtungseinnahme durch den Kellner seit der letzten Tageslosung sowie
als weiteren Wert den Kassenstand unter Berücksichtigung der eigenen Eingaben und Entnahmen.<p>
<p><i>Bewirtungseinnahmen:</i> <b><span id=cashbyguests></span></b></p>
<p><i>inkl. eigener Kassen-Eingaben/Entnahmen:</i> <b><span id=cashtotal></span></b><p>
<a href="#" data-role="button" data-theme="d" data-rel="back" id="cash_overview_ok">OK</a>
</div>
</div> <!-- popup -->
<div data-role="dialog" id="nocashitems" name="nocashitems" data-overlay-theme="a" style="max-width:70%;" class="ui-corner-all">
<div data-role="content">
<h3>Keine Rechnungselemente</h3>
<p>Es wurden keine abrechenbaren Produkte festgelegt (der Bon ist leer!).<p>
<a href="#" data-role="button" data-theme="d" data-rel="back" id="nocashitems_ok">OK</a>
</div>
</div> <!-- popup nocashitems -->
</body>
</html>

6
php/3rdparty/jquery-2.0.3.min.js vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

11
php/3rdparty/jquery.mobile-1.4.0.min.js vendored Normal file

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 180 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 204 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 197 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 224 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 107 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 123 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 125 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 121 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 126 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 109 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 107 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 115 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 109 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 121 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 119 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 122 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 118 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 228 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 260 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 191 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 218 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 99 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 118 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 106 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 173 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 195 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 92 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 B

Some files were not shown because too many files have changed in this diff Show More