Location: PHPKode > projects > interface preprocessor for php > ippfp-0.2.10/doc/ippfp_doc_de.xml
<!DOCTYPE BOOK PUBLIC "-//Davenport//DTD DocBook V3.0//EN" []>

<book id="ippfp" lang="de">

<bookinfo>

    <Date>10/30/2004</Date>
    <title>ippfp Dokumentation</title>
    <authorgroup>
     <author>
	<firstname>Thomas</firstname>
          <surname>M&ouml;nicke</surname>
          <affiliation>
            <address><email>tm at ippfp dot org</email></address>
          </affiliation>
     </author>

    </authorgroup>

    <pubdate>30. Oktober 2004</pubdate>
    <copyright>
        <year>2004</year>
	<holder>Thomas M&ouml;nicke</holder>
    </copyright>

  <legalnotice>
   <title></title>
   <simpara>
   Dieses Dokument ist unter <ulink url="http://www.ippfp.org/doc/de/">http://www.ippfp.org/doc/de/</> verf&uuml;gbar.
   </simpara>
  </legalnotice>


  <legalnotice id="copyright">
   <title>Copyright</title>
   <simpara>
    Copyright &copy; 2004 Thomas M&ouml;nicke. Dieses Material
    darf nur gem&auml;ss den Regeln und Bedingungen der Open Publication Licence
    Version v1.0 oder neuer weiter verbreitet werden. Die Open Publication License ist unter 
    <ulink url="http://www.opencontent.org/openpub/">http://www.opencontent.org/openpub/</> verf&uuml;gbar.
   </simpara>
   </legalnotice>


</bookinfo>


<Chapter id="gettingstarted">
    <Title>Einf&uuml;hrung</Title>
    <sect1>
	<title>Einleitung</title>
	<sect2>
	    <title>Was ist ippfp</title>
	    <para>ippfp ist eine objektorientierte Umgebung um Benutzerschnittstellen schnell und einfach in verschiedenen Ausgabeformaten umzusetzen. Es unterst&uuml;tzt 
	    die wichtigsten Ein/Ausgabeelemente und stellt diese als Objekte zur Verf&uuml;gung. Das bedeutet dass Eigenschaften eines jeden Elements in einer
	    Datenstruktur vorhanden und abrufbar sind. Diese Datenstruktur ist in der Klasse <command>element</command> definiert, alle Elemente leiten sich von
	    dieser Klasse ab und erweitern diese ggf. um formatspezifische Eigenschaften.</para>
	    <para>Die Bibliothek ist darauf ausgerichtet, schnell und effizient Benutzerschnittstellen konstruieren zu k&ouml;nnen. Will man beispielsweise eine besonders
	    ausgefeilte Webseite oder GTK-Programmoberfl&auml;che umsetzen, ist es sicher der bessere Weg diese Techniken direkt zu verwenden. ippfp hingegen eignet sich gut
	    zur automatischen Generierung von Benutzeroberfl&auml;chen durch Software, f&uuml;r rapid prototyping, f&uuml;r Eingabemasken von Datenbanken, Programmoberfl&auml;chen usw. Wegen seiner 
	    Objektorientierung und sauberen Trennung von eigentlichem Programmcode und Ausgabetechnologie eignet es sich auch f&uuml;r gr&ouml;ssere Projekte.</para>
	</sect2>

	<sect2>
	    <Title>Funktionsweise</Title>
	    <para>Die Bibliothek setzt die im view zusammengefassten Elemente in einem Rahmen zusammen. F&uuml;r HTML bedeutet das, dass eine HTML-Seite erstellt wird, die die 
	    Elemente enth&auml;lt, GTK und NCURSES haben ein entsprechendes Fenster. Die Daten der Elemente werden in Session-Variablen gespeichert. Um die Details der Formate 
	    wie HTML-Tags oder GTK-Klassen braucht man sich nicht zu k&uuml;mmern. Zur Navigation innerhalb eines Programmes sollte das Button-Element verwendet werden, zur Anordnung
	    die Elemente "grid" bzw. "table".</para>
	    <para>
	    Elemente werden mittels <command>create</command>-Funktionen der Klasse ippfp erstellt, sie geben ein entsprechendes Objekt zur&uuml;ck. Zur Anzeige werden sie gebracht, 
	    indem sie zun&auml;chst in einem <command>view</command> gruppiert werden und dieses view dann der ippfp-Instanz zur Ausf&uuml;hrung &uuml;bergeben wird. 
	    Das ist ein flexibler Weg, da ein angelegtes Element in verschiedenen views verwendet werden kann, es wird also als Referenz eingebunden, nicht als Kopie. 
	    Die Vorteile liegen auf der Hand: befindet sich ein Element in einem Zustand, so ist dies unab&auml;ngig vom aktuellen view und die Information steht 
	    &uuml;berall zur Verf&uuml;gung.
	    </para>
	    <para>
	    Beispiel: Erzeugen eines Textfeldes:

	    <programlisting>
	    $myText = $ippfp->createText("default", 20, "my_text");
	    ...
	    echo $myText->getValue();
	    </programlisting>

	    </para>

	    <para>Das Programm sollte mittels Funktionen gegliedert werden, wird beispielsweise ein Button benutzt, so ruft er die ihm mitgeteilte Funktion auf. In die Funktionen
	    k&ouml;nnen views sinnvollerweise integriert werden.
	    </para>
	</sect2>
    </sect1>
    <sect1>
	<title>Ein einfaches Beispiel</title>
	<sect2>
	    <title>hello world</title>
	    <para>
	    Das Programm:
	    <programlisting>
	    < php
		require_once('ippfp/ippfp.php');
		
		$myView = $ippfp->createView("my view");

		$myLabel = $ippfp->createLabel("hello world");
		
		$myView->insert($myLabel);
		
		$ippfp->process($myView);
	    ?>
	    </programlisting>
	    Einbinden der Bibliothek:
	    <programlisting>
		require_once('ippfp/ippfp.php');
	    </programlisting>
	    Funtion zum Starten:
	    <programlisting>
		$ippfp->run();
	    </programlisting>
	    Erzeugen eines view:
	    <programlisting>
		$myView = $ippfp->createView("my view");
	    </programlisting>
	    Erzeugen eines Labels:
	    <programlisting>
	    $myLabel = $ippfp->createLabel("hello world");
	    </programlisting>
	    Einf&uuml;gen des Labels in das view:
	    <programlisting>
		$myView->insert($myLabel);
	    </programlisting>
	    Ausf&uuml;hrung des view:
	    <programlisting>
		$ippfp->process($myView);
	    </programlisting>
	    </para>
	</sect2>
    </sect1>
    <sect1>
	<title>Weitere Beispiele</title>
	<sect2>
	    <title>Button, Zust&auml;nde</title>
	    <para>
	    Dieses Beispiel zeigt sehr sch&ouml;n, wie im Programm verschiedene Views erzeugt und zwischen diesen navigiert werden kann. Jedes view ist dazu in eine Funktion 
	    eingebettet, welche durch eine Aktion des Button-Elements aufgerufen werden kann. Eine Auswahlliste wird erzeugt und gezeigt, wie diese in verschiedenen 
	    Views verwendet werden kann.
	    </para>
	    <para>
	    Das Programm:
	    <programlisting>
	    < php
		require_once('ippfp/ippfp.php');
		$ippfp->run();
		
		$myChoice = $ippfp->createChoice("",
		    array(1 => "Dresden", 2 => "Prague", 3 => "San Jose"),"myChoice");
		
		function start($value = null){

		    global $ippfp;
		    global $myChoice;

		    $myView = $ippfp->createView("my view");
		
		    $myView->insert($myChoice);
		    $myView->insert($ippfp->createButton("finish","","myButton");

		    $ippfp->process($myView);

		}

		function finish($value = null){

		    global $ippfp;
		    global $myChoice;

		    $myView = $ippfp->createView("my second view");

		    $myView->insert($myChoice->getValue());

		    $ippfp->process($myView);
		
		}		
		
	    ?>
	    </programlisting>
	    Einbinden der Bibliothek:
	    <programlisting>
		require_once('ippfp/ippfp.php');
	    </programlisting>
	    Aufrufen der Funktion:
	    <programlisting>
		$status();
	    </programlisting>
	    Anlegen eines Choice-Elements:
	    <programlisting>
		$myChoice = $ippfp->createChoice("",array(1 => "Dresden", 2 => "Prague", 3 => "San Jose"),"myChoice");
	    </programlisting>
	    Die start()-Funktion, Erzeugen eines View:
	    <programlisting>
	    	function start($value = null){

		    global $ippfp;
		    global $myChoice;

		    $myView = $ippfp->createView("my view");
	    </programlisting>
	    
	    Einf&uuml;gen der Auswahlliste:
	    <programlisting>
	    	$myView->insert($myChoice);
	    </programlisting>

	    Erzeugen und Einf&uuml;gen eines Buttons:
	    <programlisting>
		    $myView->insert($ippfp->createButton("finish","","myButton");
	    </programlisting>

	    Ausf&uuml;hrung des View:
	    <programlisting>
		    $ippfp->process($myView);
	    </programlisting>

	    Die finish()-Funktion:
	    <programlisting>
	    	function finish($value = null){

		    global $ippfp;
		    global $myChoice;
		    
		    $myView = $ippfp->createView("my second view");
	    </programlisting>
	    
	    Einf&uuml;gen des aktuellen Wertes in das View, der Wert wird automatisch in ein Label-Element umgewandelt:
	    <programlisting>
		    $myView->insert($myChoice->getValue());
	    </programlisting>
	    
	    Ausf&uuml;hrung des View:
	    <programlisting>
		    $ippfp->process($myView);
	    </programlisting>
	</sect2>
	<sect2>
	    <title>mehrere Button, Fallunterscheidung</title>
	    <para>
	    Dieses Beispiel zeigt wie verschiedene Button, die dieselbe Funktion ansteuern, unterschieden werden k&ouml;nnen.
	    </para>
	    <para>
	    Das Programm:
	    <programlisting>
	    < php
		require_once('ippfp/ippfp.php');
		$ippfp->run();

		function start($value){
		    global $ippfp;

		    $myView = $ippfp->createView("my view");

		    $myView->insert($ippfp->createButton("start", "1", "", "button_1");
		    $myView->insert($ippfp->createButton("start", "2", "", "button_2");

		    $myView->insert($value);

		    $ippfp->process($myView);

		}
	
	    ?>
	    </programlisting>
	    Erzeugen 2er Button, als 2. Argument k&ouml;nnen sie einen Wert erhalten welcher dann ausgelesen werden kann:
	    <programlisting>
		    $myView->insert($ippfp->createButton("start", "1", "", "button_1");
		    $myView->insert($ippfp->createButton("start", "2", "", "button_2");
	    </programlisting>
	    
	    Auslesen des Wertes, wurde Button 1 gedr&uuml;ckt, liegt der Wert auf 1, bei Button 2 auf 2.
	    <programlisting>
		function start($value){
		    ...	    
	    	    $myView->insert($value);
		    ...
		}
	    </programlisting>
	    
	    </para>
	</sect2>
    </sect1>

</Chapter>



<Chapter id="installation">
    <title>Installation</title>
    <para>Prinzipiell ist ippfp &uuml;berall lauff&auml;hig wo php l&auml;uft. Probleme kann es bei GTK und NCURSES geben, diese sind derzeit nur auf Linuxsystemen getestet.
    Es empfiehlt sich, ippfp &uuml;ber den <ulink url="http://pear.php.net">pear</> installer zu installieren: <command>pear install ippfp_x.x.x.tgz</command> gen&uuml;gt. Ansonsten ist es 
    lediglich notwendig, das Verzeichnis <filename>ippfp</filename> in das Verzeichnis des Programms zu kopieren.
    </para>
    <para>Beim Einbinden der Bibliothek mittels <command>require_once('ippfp/ippfp.php');</command> wird bereits eine Instanz namens <command>ippfp</command> angelegt, die 
    sofort verwendet werden kann. Wichtig ist es, die entsprechende Funktion aufzurufen, das geschieht mittels <command>$ippfp->run();</command>, wobei $status zu Beginn 
    auf start gesetzt ist.
    </para>
    <sect1>
	<title>HTML</title>
	<para>HTML sollte keine weiteren Fragen aufwerfen, ein Webserver mit geladenem php-Modul ab Version 4.x., der das Programm ausf&uuml;hrt, gen&uuml;gt.
	Mehr Informationen siehe <ulink url="http://www.php.net/manual/de/install.php">php-Dokumentation</>.</para>
    </sect1>
    <sect1>
	<title>GTK</title>
	<para>extern: <ulink url="http://gtk.php.net/manual/de/getting-started.php">PHP-GTK installieren</>
	</para>
    </sect1>
    <sect1>
	<title>NCURSES</title>
	    <para>Um diese Funktion zu nutzen muss php mit der Option --with-ncurses[=DIR] compiliert worden sein. F&uuml;r Informationen siehe auch <ulink url="http://www.php.net/manual/de/ref.ncurses.php">php Dokumentation</>.</para>
    </sect1>
    <sect1>
	<title>PDF</title>
	    <para>Eine leicht modifizierte Version der verwendeten FPDF-Library ist bereits in ippfp eingebunden, es ist keine weitere Installation notwendig.</para>
	    <para>
	    Die PDF-Ausgabe wird mit Hilfe der FPDF-Bibliothek erzeugt. Zu Beachten ist, dass Defaultwerte nicht! erzeugt werden, es w&uuml;rde keinen Sinn ergeben. 
	    Stattdessen bleiben die Felder in diesen F&auml;llen leer. Ebenso werden beim Choice-Element die Auswahlwerte nicht angezeigt, sondern eine 
	    leere unterstrichene Zeile. Es ist darauf zu achten, dass kein Zeichen an den Browser gesendet wird, bevor ein PDF erzeugt wird.
	    Zum Erzeugen eines PDF kann man ein bestehendes view eines anderen Formats mittels der copy()-Funktion in ein PDF-view &uuml;berf&uuml;hren.
	    </para>
    </sect1>
</Chapter>



<Chapter id="reference">
    <Title>Referenz</Title>

	<sect1>
	    <title>ippfp</title>
	    <para>$ippfp ist eine Instanz der Klasse ippfp_application. Sie wird beim Einbinden automatisch angelegt, alle Methoden zum Erzeugen von Elementen 
	    sind member dieser Klasse und im jeweiligen Abschnitts des Elements beschrieben. Weiterhin sind folgende Funktionen verf&uuml;gbar:</para>


	    <para>Funktion process, Verarbeitung des view, wenn die Definition abgeschlossen ist.
		<funcsynopsis>
		    <funcdef> 
			<function>process</function>
		    </funcdef>
		    <paramdef>view <parameter>$view</parameter></paramdef>
		</funcsynopsis>	
	    </para>
	    <para>
		Parameter:
	    </para>
	    <itemizedlist>
		<listitem><para><command>$view</command> - View.</para>
		</listitem>
	    </itemizedlist>
	    <para>
		Beispiel:
		<programlisting>
		$ippfp->process($myView);
		</programlisting>
	    </para>

	    <para>Funktion run, ruft Funktion auf.
		<funcsynopsis>
		    <funcdef> 
			<function>run</function>
		    </funcdef>
		    <paramdef><parameter></parameter></paramdef>
		</funcsynopsis>	
	    </para>
	    <para>
		Beispiel:
		<programlisting>
		$ippfp->run();
		</programlisting>
	    </para>


	    <para>Funktion copy, kopiert ein View.
		<funcsynopsis>
		    <funcdef>view 
			<function>copy</function>
		    </funcdef>
		    <paramdef>view <parameter>$view</parameter></paramdef>
		    <paramdef>string <parameter>$title</parameter></paramdef>
		    <paramdef>string <parameter>$type</parameter></paramdef>
		</funcsynopsis>	
	    </para>
	    <para>
		Parameter:
	    </para>
	    <itemizedlist>
		<listitem><para><command>$view</command> - View, welcher kopiert werden soll.</para>
		</listitem>
		<listitem><para><command>$title</command> - Titel des view.</para>
		</listitem>
		<listitem><para><command>$type</command> - Ausgabeformat.</para>
		</listitem>
	    </itemizedlist>
	    <para>
		Beispiel:
		<programlisting>
		$secondView = $ippfp->copy($firstView, "my pdf", "PDF");
		</programlisting>
	    </para>


	    <para>Funktion info, gibt die Versionsnummer zur&uuml;ck.
		<funcsynopsis>
		    <funcdef>string 
			<function>info</function>
		    </funcdef>
		    <paramdef><parameter></parameter></paramdef>
		</funcsynopsis>	
	    </para>
	    <para>
		Beispiel:
		<programlisting>
		echo $ippfp->info();
		</programlisting>
	    </para>


	    <para>Funktion addError, einf&uuml;gen einer Fehlermeldung. Alle Fehlermeldungen werden beim Aufrufen von process() in einem Subfenster angezeigt. 
	    Gibt bei Erfolg true zur&uuml;ck.
		<funcsynopsis>
		    <funcdef>bool 
			<function>addError</function>
		    </funcdef>
		    <paramdef>string <parameter>$msg</parameter></paramdef>
		</funcsynopsis>	
	    </para>
	    <para>
		Parameter:
	    </para>
	    <itemizedlist>
		<listitem><para><command>$msg</command> - Fehlermeldung.</para>
		</listitem>
	    </itemizedlist>
	    <para>
		Beispiel:
		<programlisting>
		$ippfp->addError("value could not be saved.");
		</programlisting>
	    </para>


	</sect1>

	<sect1>
	    <title>button</title>
	    <para>
	    Button-Element, Navigation innerhalb des Programms.
	    </para>
	    <para>folgende Funktion erzeugt ein Button-Element:
		<funcsynopsis>
		    <funcdef>element 
			<function>createButton</function>
		    </funcdef>
		    <paramdef>string <parameter>status</parameter></paramdef>
		    <paramdef>string <parameter>value</parameter></paramdef>
		    <paramdef>[string <parameter>src</parameter></paramdef>
		    <paramdef>[string <parameter>name</parameter>]]</paramdef>
		</funcsynopsis>	
	    </para>
	    <para>Parameter:</para>
	    <itemizedlist>
		<listitem>
		    <para><command>status</command> - Name der Funktion die beim Dr&uuml;cken aufgerufen wird.</para>
		</listitem>
		<listitem>
		    <para><command>value</command> - Wert, der Wert ist sp&auml;ter &uuml;ber view->emitter abrufbar.</para>
		</listitem>
		<listitem>
		    <para><command>src</command> - optional. Angabe einer Grafik f&uuml;r grafische Buttons.</para>
		</listitem>
		<listitem>
		    <para><command>name</command> - optional. Angabe eines Bezeichners. Es wird empfohlen, eindeutige Bezeichner zuzuweisen, um Seiteneffekte zu vermeiden.</para>
		</listitem>
	    </itemizedlist>
	    <para>
		Beispiel:
		<programlisting>
		$myButton = $ippfp->createButton("start","10","img/next.png","mybutton");
		</programlisting>
	    </para>
	    <para>
		Hinweis: wenn kein Bildpfad angegeben wird, wird der Name des Buttons angezeigt.
		<programlisting>
		$myButton = $ippfp->createButton("start","10","","mybutton");
		</programlisting>
	    </para>
	</sect1>

	<sect1>
	    <title>checkbox</title>
	    <para>
	    Checkbox-Element.
	    </para>
	    <para>folgende Funktion erzeugt ein Checkbox-Element:
		<funcsynopsis>
		    <funcdef>element 
			<function>createCheckbox</function>
		    </funcdef>
		    <paramdef>string <parameter>text</parameter></paramdef>
		    <paramdef>bool <parameter>checked</parameter></paramdef>
		    <paramdef>[string <parameter>name</parameter>]</paramdef>
		</funcsynopsis>	
	    </para>
	    <para>
		Parameter:
	    </para>
	    <itemizedlist>
		<listitem><para><command>text</command> - Text, der neben dem Element angezeigt wird.</para>
		</listitem>
		<listitem><para><command>checked</command> - ist checked = true, wird das Element mit gesetztem H&auml;kchen erzeugt, sonst ohne.</para>
		</listitem>
		<listitem><para><command>name</command> - optional. Angabe eines Bezeichners. Es wird empfohlen, eindeutige Bezeichner zuzuweisen, um Seiteneffekte zu vermeiden.</para>
		</listitem>
	    </itemizedlist>
	    <para>
		Beispiel:
		<programlisting>
		$myCheckbox = $ippfp->createCheckbox("public",true,"mycheckbox");
		</programlisting>
	    </para>
	</sect1>

	<sect1>
	    <title>choice</title>
	    <para>
	    Auswahl-Element, eindeutige Auswahl (Ausklappliste).
	    </para>
	    <para>folgende Funktion erzeugt ein Auswahl-Element:
		<funcsynopsis>
		    <funcdef>element 
			<function>createChoice</function>
		    </funcdef>
		    <paramdef>string <parameter>value</parameter></paramdef>
		    <paramdef>array <parameter>array</parameter></paramdef>
		    <paramdef>[string <parameter>name</parameter>]</paramdef>
		    <paramdef>[string <parameter>status</parameter>]]</paramdef>
		</funcsynopsis>	
	    </para>
	    <para>
		Parameter:
	    </para>
	    <itemizedlist>
		<listitem><para><command>value</command> - Wert, der standardm&auml;ssig angezeigt wird.</para>
		</listitem>
		<listitem><para><command>array</command> - Array mit den Paaren Wert => Bezeichner.</para>
		</listitem>
		<listitem><para><command>name</command> - optional. Angabe eines Bezeichners. Es wird empfohlen, eindeutige Bezeichner zuzuweisen, um Seiteneffekte zu vermeiden.</para>
		</listitem>
		<listitem><para><command>status</command> - optional. status ist die Funktion, die nach einem automatischen Reload aufgerufen wird. 
		Das Flag choice->reload wird automatisch auf true gesetzt, wenn status angegeben ist.</para>
		</listitem>
	    </itemizedlist>
	    <para>
		Beispiel:
		<programlisting>
		$myChoice = $ippfp->createChoice("",array(1 => "value 1", 2 => "value 2", 3 => "value 3"),"mychoice");
		</programlisting>
	    </para>
	    <para>
	    Hinweis: getValue() gibt den Key zurueck, nicht den zugehoerigen Wert.
	    getValueFromString() gibt den Wert zurueck.
	    </para>
	</sect1>

	<sect1>
	    <title>fopen</title>
	    <para>
	    Fileopen-Element, kann verwendet werden um im Programm eine Datei zu laden.
	    </para>
	    <para>folgende Funktion erzeugt ein Fileopen-Element:
		<funcsynopsis>
		    <funcdef>element 
			<function>createFopen</function>
		    </funcdef>
		    <paramdef>string <parameter>status</parameter></paramdef>
		    <paramdef>string <parameter>value</parameter></paramdef>
		    <paramdef>[string <parameter>name</parameter>]</paramdef>
		</funcsynopsis>	
	    </para>
	    <para>
		Parameter:
	    </para>
	    <itemizedlist>
		<listitem><para><command>status</command> - Funktion, die nach dem Fileopen aufgerufen wird.</para>
		</listitem>
		<listitem><para><command>value</command> - Standardwert.</para>
		</listitem>
		<listitem><para><command>name</command> - optional. Angabe eines Bezeichners. Es wird empfohlen, eindeutige Bezeichner zuzuweisen, um Seiteneffekte zu vermeiden.</para>
		</listitem>
	    </itemizedlist>
	    <para>
		Beispiel:
		<programlisting>
		$myFopen = $ippfp->createFopen("","","myfopen");
		</programlisting>
	    </para>
	</sect1>

	<sect1>
	    <title>grid</title>
	    <para>
	    Grid-Element, Anordnung von Elementen, ohne eine Tabelle zweckentfremden zu m&uuml;ssen.
	    </para>
	    <para>folgende Funktion erzeugt ein Grid-Element:
		<funcsynopsis>
		    <funcdef>element 
			<function>createGrid</function>
		    </funcdef>
		    <paramdef>string <parameter>text</parameter></paramdef>
		    <paramdef>array <parameter>array</parameter></paramdef>
		    <paramdef>[string <parameter>name</parameter>]</paramdef>
		</funcsynopsis>	
	    </para>
	    <para>
		Parameter:
	    </para>
	    <itemizedlist>
		<listitem><para><command>text</command> - &Uuml;berschrift, kann leer bleiben, dann wird keine &Uuml;berschrift-Umgebung erzeugt.</para>
		</listitem>
		<listitem><para><command>array</command> - Array mit Elementen. Wird nur eine Zeichenkette gefunden, wird diese automatisch in ein entsprechendes Labelelement umgewandelt. Eine 1 wird in "true" umgewandelt.</para>
		</listitem>
		<listitem><para><command>name</command> - optional. Angabe eines Bezeichners. Es wird empfohlen, eindeutige Bezeichner zuzuweisen, um Seiteneffekte zu vermeiden.</para>
		</listitem>
	    </itemizedlist>
	    <para>
		Flags: <command>wrapdiv</command> -  gibt die Klasse der div an welches um die Tabelle herum gesetzt wird. Wenn nicht gesetzt wird kein div erzeugt. Nur HTML.
		$myGrid->wrapdiv = "myclass"; N&uuml;tzlich um css-Eigenschaften zuzuordnen.
	    </para>
	    <para>
		Beispiel:
		<programlisting>
		$myArray = array(
		    array("City:",$ippfp->createText("",20,"city")),
		    array("Phone:",$ippfp->createText("",20,"phone")),
		    array("Description:",$ippfp->createTextarea("",20,"description")),
		);
		$myGrid = $ippfp->createGrid("",$myArray,"mygrid");
		</programlisting>
		Tipp: Man kann das Flag $myGrid->wrapdiv = "myclass" auf eine Klasse setzen, ein Div dieser Klasse umschlie&szlig;t nun das Element und mit css kann man
		Eigenschaften zuordnet (before, after).
	    </para>
	</sect1>

	<sect1>
	    <title>image</title>
	    <para>
	    Image-Element, zeigt ein Bild an. Es wird empfohlen, png-Bilder zu verwenden.
	    </para>
	    <para>folgende Funktion erzeugt ein Image-Element:
		<funcsynopsis>
		    <funcdef>element 
			<function>createImage</function>
		    </funcdef>
		    <paramdef>string <parameter>text</parameter></paramdef>
		    <paramdef>string <parameter>src</parameter></paramdef>
		    <paramdef>[string <parameter>name</parameter>]</paramdef>
		</funcsynopsis>	
	    </para>
	    <para>
		Parameter:
	    </para>
	    <itemizedlist>
		<listitem><para><command>text</command> - beschreibender Text, der ggf. angezeigt wird. Kann leer bleiben. Bei HTML wird beispielsweise das alt-Attribut mit diesem Wert belegt.</para>
		</listitem>
		<listitem><para><command>src</command> - relativer oder absoluter Pfad zum Bild.</para>
		</listitem>
		<listitem><para><command>name</command> - optional. Angabe eines Bezeichners. Es wird empfohlen, eindeutige Bezeichner zuzuweisen, um Seiteneffekte zu vermeiden.</para>
		</listitem>
	    </itemizedlist>
	    <para>
		Beispiel:
		<programlisting>
		$myImage = $ippfp->createImage("my computer","pictures/mycomputer.png","myimage");
		</programlisting>
	    </para>
	</sect1>

	<sect1>
	    <title>label</title>
	    <para>
	    Label-Element, zeigt einen Text an.
	    </para>
	    <para>folgende Funktion erzeugt ein Label-Element:
		<funcsynopsis>
		    <funcdef>element 
			<function>createLabel</function>
		    </funcdef>
		    <paramdef>string <parameter>text</parameter></paramdef>
		    <paramdef>int <parameter>cols</parameter></paramdef>
		    <paramdef>[string <parameter>name</parameter>]</paramdef>
		</funcsynopsis>	
	    </para>
	    <para>
		Parameter:
	    </para>
	    <itemizedlist>
		<listitem><para><command>text</command> - Text, der angezeigt wird.</para>
		</listitem>
		<listitem><para><command>cols</command> - Dieser Wert wird in Tabellen und Grids ausgewertet. Es werden $cols-Anzahl von Zellen nebeneinander zusammengefasst.</para>
		</listitem>
		<listitem><para><command>name</command> - optional. Angabe eines Bezeichners.</para>
		</listitem>
		<listitem><para><command>formatting</command> - optional. einfache Formatierung, kann einen der Werte IPPFP_HEADLINE, IPPFP_BOLD, IPPFP_ITALIC, IPPFP_UNDERLINED haben.</para>
		</listitem>
	    </itemizedlist>
	    <para>
		Beispiel:
		<programlisting>
		$myLabel = $ippfp->createLabel("example text",1,"mylabel",IPPFP_BOLD);
		</programlisting>
	    </para>
	    <para>HTML: wenn ein Name angegeben wurde wird das Label in einem span-Tag mit dem Namen dargestellt. So kann man css-Aweisungen nutzen.</para>
	</sect1>

	<sect1>
	    <title>link</title>
	    <para>
	    Link-Element, verweist auf die angegebene Adresse. Es sollte nicht verwendet werden, um innerhalb des Programms zu navigieren.
	    </para>
	    <para>folgende Funktion erzeugt ein Link-Element:
		<funcsynopsis>
		    <funcdef>element 
			<function>createLink</function>
		    </funcdef>
		    <paramdef>string <parameter>text</parameter></paramdef>
		    <paramdef>string <parameter>target</parameter></paramdef>
		    <paramdef>[string <parameter>src</parameter>]</paramdef>
		    <paramdef>[string <parameter>name</parameter>]]</paramdef>
		</funcsynopsis>	
	    </para>
	    <para>
		Parameter:
	    </para>
	    <itemizedlist>
		<listitem><para><command>text</command> - Text, Bezeichnung des Links.</para>
		</listitem>
		<listitem><para><command>target</command> - Ziel des Links.</para>
		</listitem>
		<listitem><para><command>src</command> - optional. Angabe einer Grafik f&uuml;r grafische Links.</para>
		</listitem>
		<listitem><para><command>name</command> - optional. Angabe eines Bezeichners. Es wird empfohlen, eindeutige Bezeichner zuzuweisen, um Seiteneffekte zu vermeiden.</para>
		</listitem>
	    </itemizedlist>
	    <para>
		Beispiel:
		<programlisting>
		$myLink = $ippfp->createLink("www.ippfp.org","http://www.ippfp.org","","mylink");
		</programlisting>
		Tipp: In html gibt es 4 zusaetzliche Attribute: bool newWindow, String newTitle, newWidth, newHeight mit welchen man ein Popupfenster
		erzeugen kann.
	    </para>
	</sect1>

	<sect1>
	    <title>multiplechoice</title>
	    <para>
	    Auswahl-Element, Mehrfachauswahl.
	    </para>
	    <para>folgende Funktion erzeugt ein Mehrfachauswahl-Element:
		<funcsynopsis>
		    <funcdef>element 
			<function>createMultipleChoice</function>
		    </funcdef>
		    <paramdef>string <parameter>value</parameter></paramdef>
		    <paramdef>array <parameter>array</parameter></paramdef>
		    <paramdef>[string <parameter>name</parameter>]</paramdef>
		    <paramdef>[string <parameter>status</parameter>]]</paramdef>
		</funcsynopsis>	
	    </para>
	    <para>
		Parameter:
	    </para>
	    <itemizedlist>
		<listitem><para><command>value</command> - Wert, der standardm&auml;ssig angezeigt wird.</para>
		</listitem>
		<listitem><para><command>array</command> - Array mit den Paaren Wert => Bezeichner.</para>
		</listitem>
		<listitem><para><command>name</command> - optional. Angabe eines Bezeichners. Es wird empfohlen, eindeutige Bezeichner zuzuweisen, um Seiteneffekte zu vermeiden.</para>
		</listitem>
		<listitem><para><command>status</command> - optional. status ist die Funktion, die nach einem automatischen Reload aufgerufen wird. 
		Das Flag choice->reload wird automatisch auf true gesetzt, wenn status angegeben ist.</para>
		</listitem>
	    </itemizedlist>
	    <para>
		Beispiel:
		<programlisting>
		$myMultipleChoice = $ippfp->createMultipleChoice("",array(1 => "value 1", 2 => "value 2", 3 => "value 3"),"mymultiplechoice");
		</programlisting>
	    </para>
	    <para>
	    Hinweis: getValue() gibt ein Array von Keys zurueck, nicht die zugehoerigen Werte.
	    getValueFromString() gibt ein Array der Werte zurueck.
	    </para>
	</sect1>

	<sect1>
	    <title>password</title>
	    <para>
	    Passwort-Element.
	    </para>
	    <para>folgende Funktion erzeugt ein Passwort-Element:
		<funcsynopsis>
		    <funcdef>element 
			<function>createPassword</function>
		    </funcdef>
		    <paramdef>string <parameter>text</parameter></paramdef>
		    <paramdef>int <parameter>size</parameter></paramdef>
		    <paramdef>[string <parameter>name</parameter>]</paramdef>
		</funcsynopsis>	
	    </para>
	    <para>
		Parameter:
	    </para>
	    <itemizedlist>
		<listitem><para><command>text</command> - Standardpasswort.</para>
		</listitem>
		<listitem><para><command>size</command> - Gr&ouml;sse des Feldes.</para>
		</listitem>
		<listitem><para><command>name</command> - optional. Angabe eines Bezeichners. Es wird empfohlen, eindeutige Bezeichner zuzuweisen, um Seiteneffekte zu vermeiden.</para>
		</listitem>
	    </itemizedlist>
	    <para>
		Beispiel:
		<programlisting>
		$myPassword = $ippfp->createPassword("",20,"mypassword");
		</programlisting>
	    </para>
	</sect1>

	<sect1>
	    <title>radio</title>
	    <para>
	    Radio-Element.
	    </para>
	    <para>folgende Funktion erzeugt ein Radio-Element:
		<funcsynopsis>
		    <funcdef>element 
			<function>createRadio</function>
		    </funcdef>
		    <paramdef>string <parameter>text</parameter></paramdef>
		    <paramdef>bool <parameter>checked</parameter></paramdef>
		    <paramdef>[string <parameter>name</parameter>]</paramdef>
		</funcsynopsis>	
	    </para>
	    <para>
		Parameter:
	    </para>
	    <itemizedlist>
		<listitem><para><command>text</command> - Text, Bezeichnung des Radiobuttons, dieser wird mit angezeigt.</para>
		</listitem>
		<listitem><para><command>checked</command> - wenn true, wird ein aktiviertes Radioelement erzeugt.</para>
		</listitem>
		<listitem><para><command>name</command> - optional. Angabe eines Bezeichners. Es wird empfohlen, eindeutige Bezeichner zuzuweisen, um Seiteneffekte zu vermeiden.</para>
		</listitem>
	    </itemizedlist>
	    <para>
		Beispiel:
		<programlisting>
		$myRadio = $ippfp->createRadio("checkme",false,"","myradio");
		</programlisting>
	</sect1>

	<sect1>
	    <title>table</title>
	    <para>
	    Table-Element, Anordnung von Elementen in einer Tabelle.
	    </para>
	    <para>folgende Funktion erzeugt ein Table-Element:
		<funcsynopsis>
		    <funcdef>element 
			<function>createTable</function>
		    </funcdef>
		    <paramdef>array <parameter>head</parameter></paramdef>
		    <paramdef>array <parameter>array</parameter></paramdef>
		    <paramdef>[string <parameter>name</parameter>]</paramdef>
		</funcsynopsis>	
	    </para>
	    <para>
		Parameter:
	    </para>
	    <itemizedlist>
		<listitem><para><command>head</command> - Array mit Tabellenkopf.</para>
		</listitem>
		<listitem><para><command>array</command> - Array mit Elementen. Wird nur eine Zeichenkette gefunden, wird diese automatisch in ein entsprechendes Labelelement umgewandelt. Eine 1 wird in "true" umgewandelt.</para>
		</listitem>
		<listitem><para><command>name</command> - optional. Angabe eines Bezeichners. Es wird empfohlen, eindeutige Bezeichner zuzuweisen, um Seiteneffekte zu vermeiden.</para>
		</listitem>
	    </itemizedlist>
	    <para>
		Flags: <command>wrapdiv</command> -  gibt die Klasse der div an welches um die Tabelle herum gesetzt wird. Wenn nicht gesetzt wird kein div erzeugt. Nur HTML.
		$myTable->wrapdiv = "myclass"; N&uuml;tzlich um css-Eigenschaften zuzuordnen.
	    </para>
	    <para>
		Beispiel:
		<programlisting>
		$myArray = array(
		    array("Dresden","a city with the flair of the former Saxon residence","Germany"),
		    array("Prague","one of the nine cities awarded by the European Community the title of European City of Culture for the year 2000.","Czech"),
		    array("San Jose", "San Jose has a world-renowned quality of life.","United States"),
		);
		$myTable = $ippfp->createTable(array("city","description","country"),$myArray,"mytable");
		</programlisting>
		Tipp: in HTML wird jede 2.te Zeile der Klasse "mark" zugeordnet, diese kann man z.B. mittels einer css Anweisung anders einf&auml;rben.
	    </para>
	</sect1>

	<sect1>
	    <title>text</title>
	    <para>
	    Text-Element, ein einzeiliges Eingabefeld.
	    </para>
	    <para>folgende Funktion erzeugt ein Text-Element:
		<funcsynopsis>
		    <funcdef>element 
			<function>createText</function>
		    </funcdef>
		    <paramdef>string <parameter>text</parameter></paramdef>
		    <paramdef>int <parameter>size</parameter></paramdef>
		    <paramdef>[string <parameter>name</parameter>]</paramdef>
		</funcsynopsis>	
	    </para>
	    <para>
		Parameter:
	    </para>
	    <itemizedlist>
		<listitem><para><command>text</command> - Standardtext, mit diesem Wert wird das Textfeld vorbelegt, wenn vorhanden.</para>
		</listitem>
		<listitem><para><command>size</command> - Anzahl der Zeichen. Es handelt sich nicht um die L&auml;nge des Elements bei der Anzeige.</para>
		</listitem>
		<listitem><para><command>name</command> - optional. Angabe eines Bezeichners. Es wird empfohlen, eindeutige Bezeichner zuzuweisen, um Seiteneffekte zu vermeiden.</para>
		</listitem>
	    </itemizedlist>
	    <para>
		Flags: <command>maxlength</command> - maximale L&auml;nge der Zeichenkette, standardm&auml;&szlig;ig auf <command>size</command> gesetzt.
	    </para>
	    <para>
		Beispiel:
		<programlisting>
		$myText = $ippfp->createText("",20,"mytext");
		</programlisting>
	</sect1>

	<sect1>
	    <title>textarea</title>
	    <para>
	    Textarea-Element, ein mehrzeiliges Eingabefeld.
	    </para>
	    <para>folgende Funktion erzeugt ein Textarea-Element:
		<funcsynopsis>
		    <funcdef>element 
			<function>createTextarea</function>
		    </funcdef>
		    <paramdef>string <parameter>text</parameter></paramdef>
		    <paramdef>int <parameter>cols</parameter></paramdef>
		    <paramdef>[string <parameter>name</parameter>]</paramdef>
		</funcsynopsis>	
	    </para>
	    <para>
		Parameter:
	    </para>
	    <itemizedlist>
		<listitem><para><command>text</command> - Standardtext, mit diesem Wert wird das Textfeld vorbelegt, wenn vorhanden.</para>
		</listitem>
		<listitem><para><command>cols</command> - Breite des Feldes. Die L&auml;nge kann &uuml;ber das Flag textarea->rows ge&auml;ndert werden.</para>
		</listitem>
		<listitem><para><command>name</command> - optional. Angabe eines Bezeichners. Es wird empfohlen, eindeutige Bezeichner zuzuweisen, um Seiteneffekte zu vermeiden.</para>
		</listitem>
	    </itemizedlist>
	    <para>
		Beispiel:
		<programlisting>
		$myTextarea = $ippfp->createTextarea("",20,"mytextarea");
		</programlisting>
	</sect1>

	<sect1>
	    <title>view</title>
	    <para>
	    View-Element, gruppiert Elemente um sie zur Anzeige bringen zu k&ouml;nnen.
	    </para>
	    <para>folgende Funktion erzeugt ein View-Element:
		<funcsynopsis>
		    <funcdef>element 
			<function>createView</function>
		    </funcdef>
		    <paramdef>string <parameter>title</parameter></paramdef>
		</funcsynopsis>	
	    </para>
	    <para>
		Parameter:
	    </para>
	    <itemizedlist>
		<listitem><para><command>title</command> - Titel der Ansicht.</para>
		</listitem>
	    </itemizedlist>
	    <para>
		Beispiel:
		<programlisting>
		$myView = $ippfp->createView("myview");
		</programlisting>
	</sect1>

</Chapter>

<appendix>
    <title>Anhang</title>
    <para></para>
</appendix>

</book>
Return current item: interface preprocessor for php