<?xml version="1.0" encoding="UTF-8"?>
<!-- EN-Revision: 15215 -->
<!-- Reviewed: no -->
<sect1 id="zend.progressbar.introduction" xmlns:xi="http://www.w3.org/2001/XInclude">
    <title>Zend_ProgressBar</title>

    <sect2 id="zend.progressbar.whatisit">
        <title>Einführung</title>
        <para>
            <classname>Zend_ProgressBar</classname> ist eine Komponente um Fortschrittsbalken in verschiedenen
            Umgebungen zu erstellen und zu aktualisieren. Sie besteht aus einem einzelnen Backend, welches
            des Fortschritt durch eines der verschiedenen Backends ausgibt. Bei jedem Update nimmt es einen
            absoluten Wert und optional eine Statusmeldung und ruft dann den Adapter mit einigen
            vorkalkulierten Werten, wie Prozentwerte und voraussichtliche Restzeit, auf.
        </para>
    </sect2>

    <sect2 id="zend.progressbar.basic">
        <title>Grundsätzliche Verwendung von Zend_Progressbar</title>
        <para>
            <classname>Zend_ProgressBar</classname> ist sehr einfach in seiner Verwendung. Man erstellt einfach eine
            neue Instanz von <classname>Zend_Progressbar</classname>, definiert einen minimalen und einen maximalan Wert, und wählt
            den Adapter der die Daten ausgibt. Wenn man die Datei ausführen will, muß man etwas ähnliches
            wie folgt machen:
        </para>

        <programlisting role="php"><![CDATA[
$progressBar = new Zend_ProgressBar($adapter, 0, $fileSize);

while (!feof($fp)) {
    // Mach was

    $progressBar->update($currentByteCount);
}

$progressBar->finish();
]]></programlisting>

        <para>
            Im ersten Schritt, wird eine Instanz von <classname>Zend_ProgressBar</classname> erstellt, mit einem
            speziellen Adapter, einem minimalen Wert von 0 und einem maximalen Wert der kompletten
            Dateigröße. Dann wird die Datei ausgeführt und bei jeder Schleife wird der Fortschrittsbalken
            mit der aktuellen Byteanzahl aktualisiert. Am Ende der Schreife, wird der Status des
            Fortschrittsbalken auf fertig gestellt.
        </para>
        <para>
            Man kann auch die <code>update()</code> Methode von <classname>Zend_ProgressBar</classname> ohne Argumente
            aufrufen, das die ETA einfach neu berechnet und den Adapter aktualisiert. Das ist nützlich
            wenn kein Update der Daten war, man aber den Fortschrittsbalken aktualisieren will.
        </para>
    </sect2>

    <sect2 id="zend.progressbar.persistent">
        <title>Persistenter Fortschritt</title>
        <para>
            Wenn man den Fortschrittsbalken über mehrere Aufrufe hinweg persistent haben will, kann man den
            Namen eines Session Namespaces als viertes Argument an den Constructor angeben. In diesem Fall
            wird der Fortschrittsbalken den Adapter nicht im Constructor benachrichtigen, sondern nur wenn
            man <code>update()</code> oder <code>finish()</code> aufruft. Auch der aktuelle Wert, der Statustext
            und die Startzeit für die ETA Kalkulation werden im nächsten Ablauf erneut geholt.
        </para>
    </sect2>

    <sect2 id="zend.progressbar.adapters">
        <title>Standard Adapter</title>
        <para>
            <classname>Zend_ProgressBar</classname> kommt mit den folgenden zwei Adaptern:

            <itemizedlist mark="opencircle">
                <listitem><para><xref linkend="zend.progressbar.adapter.console" /></para></listitem>
                <listitem><para><xref linkend="zend.progressbar.adapter.jspush" /></para></listitem>
                <listitem><para><xref linkend="zend.progressbar.adapter.jspull" /></para></listitem>
            </itemizedlist>
        </para>

        <xi:include href="Zend_ProgressBar_Adapter_Console.xml" />
        <xi:include href="Zend_ProgressBar_Adapter_JsPush.xml" />
        <xi:include href="Zend_ProgressBar_Adapter_JsPull.xml" />
    </sect2>
</sect1>
<!--
vim:se ts=4 sw=4 et:
-->
