<?xml version="1.0" encoding="UTF-8"?>
<!-- EN-Revision: 24249 -->
<!-- Reviewed: 22761 -->
<sect1 id="zend.tag.cloud">
    <title>Zend_Tag_Cloud</title>

    <para>
        <classname>Zend_Tag_Cloud</classname> ist der Darstellungs-Teil von
        <classname>Zend_Tag</classname>. Standardmäßig kommt Sie mit einem Set von
        <acronym>HTML</acronym> Dekoratoren welche es erlauben Tag Wolken für WebSites zu erstellen,
        bietet aber auch zwei abstrakte Klassen für die Erstellung eigener Dekoratore, um zum
        Beispiel Tag Wolken in <acronym>PDF</acronym> Dokumenten zu erstellen.
    </para>

    <para>
        Man kann <classname>Zend_Tag_Cloud</classname> entweder programmtechnisch instanziieren und
        konfigurieren, oder komplett über ein Array oder eine Instanz von
        <classname>Zend_Config</classname>. Die vorhandenen Optionen sind:
    </para>

    <itemizedlist>
        <listitem>
            <para>
                <property>cloudDecorator</property>: definiert den Dekorator für die Wolke. Das kann
                entweder der Name der Klasse sein, die vom PluginLoader geladen werden soll, eine
                Instanz von <classname>Zend_Tag_Cloud_Decorator_Cloud</classname>, oder ein Array
                das den String 'decorator' enthält, und optional ein 'options' Array, welches an den
                Contructor des Dekorators übergeben wird.
            </para>
        </listitem>

        <listitem>
            <para>
                <property>tagDecorator</property>: definiert den Dekorator für individuelle Tags.
                Das kann entweder der Name der Klasse sein, die vom PluginLoader geladen werden
                soll, eine Instanz von <classname>Zend_Tag_Cloud_Decorator_Tag</classname>, oder ein
                Array das den String 'decorator' enthält, und optional ein 'options' Array, welches
                an den Contructor des Dekorators übergeben wird.
            </para>
        </listitem>

        <listitem>
            <para>
                <property>pluginLoader</property>: ein anderer Plugin Loader der zu verwenden ist.
                Muß eine Instanz von <classname>Zend_Loader_PluginLoader_Interface</classname> sein.
            </para>
        </listitem>

        <listitem>
            <para>
                <property>prefixPath</property>: Präfix Pfade die dem Plugin Loader hinzugefügt
                werden. Muß ein Array sein das die Schlüssel prefix und path oder mehrere Arrays
                enthält, welche die Schlüssel prefix und path enthalten. Ungültige Elemente
                werden übersprungen.
            </para>
        </listitem>

        <listitem>
            <para>
                <property>pluginLoader</property>: ein anderer Plugin Loader der verwendet wird. Muß
                eine Instanz von <classname>Zend_Loader_PluginLoader_Interface</classname> sein.
            </para>
        </listitem>

        <listitem>
            <para>
                <property>prefixPath</property>: Präfix Pfad der dem Plugin Loader hinzugefügt wird.
                Muß ein Array sein das die Schlüssel prefix und path enthält, oder mehrere Array
                welche die Schlüssel prefix und path enthalten. Ungültige Elemente werden
                übersprungen.
            </para>
        </listitem>

        <listitem>
            <para>
                <property>itemList</property>: eine andere Liste von Elementen die verwendet wird.
                Muß eine Instanz von <classname>Zend_Tag_ItemList</classname> sein.
            </para>
        </listitem>

        <listitem>
            <para>
                <property>tags</property>: eine Liste von Tags die der Wolke zugeordnet werden.
                Jedes Tag muß entweder <classname>Zend_Tag_Taggable</classname> implementieren oder
                ein Array sein welches verwendet werden kann um <classname>Zend_Tag_Item</classname>
                implementieren.
            </para>
        </listitem>
    </itemizedlist>

    <example id="zend.tag.cloud.example.using">
        <title>Verwenden von Zend_Tag_Cloud</title>

        <para>
            Dieses Beispiel zeigt ein grundsätzliches Beispiel davon, wie eine Tag Wolke erstellt,
            Ihr mehrere Tags hinzugefügt, und Sie letztendlich dargestellt wird.
        </para>

        <programlisting language="php"><![CDATA[
// Die Wolke erstellen und Ihr statische Tags zuordnen
$cloud = new Zend_Tag_Cloud(array(
    'tags' => array(
        array('title' => 'Code', 'weight' => 50,
              'params' => array('url' => '/tag/code')),
        array('title' => 'Zend Framework', 'weight' => 1,
              'params' => array('url' => '/tag/zend-framework')),
        array('title' => 'PHP', 'weight' => 5,
              'params' => array('url' => '/tag/php')),
    )
));

// Die Wolke darstellen
echo $cloud;
]]></programlisting>

        <para>
            Das gibt die Tag Wolke mit drei Tags aus, welche mit den standardmäßigen Schriftgrößen
            ausgebreitet wird.
        </para>
    </example>

    <sect2 id="zend.tag.cloud.decorators">
        <title>Dekoratore</title>

        <para>
            <classname>Zend_Tag_Cloud</classname> benötigt zwei Typen von Dekoratoren die fähig
            sein müssen eine Tag Wolke darzustellen. Das beinhaltet einen Dekorator welcher ein
            einzelnes Tag darstellt, sowie einen Dekorator welcher die umgebende Wolke darstellt.
            <classname>Zend_Tag_Cloud</classname> liefert ein standardmäßiges Set von Dekoratoren
            für die Formatierung einer Tag Wolke in <acronym>HTML</acronym>. Dieses Set wird eine
            Tag Wolke standardmäßig als ul/li-Liste darstellen, und diese mit unterschiedlichen
            Schriftgrößen, abhängig vom Gewicht der Werte Ihrer zugeordneten Tags, versehen.
        </para>

        <sect3 id="zend.tag.cloud.decorators.htmltag">
            <title>Der HTML Tag Dekorator</title>

            <para>
                Der <acronym>HTML</acronym> Tag Dekorator stellt standardmäßig jedes Tag in einem
                Anker Element dar, umgeben von einem li Element. Der Anker selbst ist fixiert und
                kann nicht geändert werden; die umgebenden Elemente können hingegen geändert werden.
            </para>

            <note>
                <title>URL Parameter</title>

                <para>
                    Da der <acronym>HTML</acronym> Tag Dekorator immer den Titel des Tags mit einem
                    Anker umgibt, sollte man einen <acronym>URL</acronym> Parameter, für jedes in
                    Ihm verwendete Tag, definiert werden.
                </para>
            </note>

            <para>
                Der Tag Dekorator kann entweder unterschiedliche Schriftgrößen über die Anker,
                oder eine definierte Liste von Klassennamen, verteilen. Wenn Optionen für eine
                dieser Möglichkeiten gesetzt werden, werden die korrespondierenden automatisch
                aktiviert. Die folgenden Konfigurationsoptionen sind vorhanden:
            </para>

            <itemizedlist>
                <listitem>
                    <para>
                        <property>fontSizeUnit</property>: definiert die Einheit die für alle
                        Schriftgrößen verwendet wird. Die möglichen Werte sind:
                        em, ex, px, in, cm, mm, pt, pc und &#37;.
                    </para>
                </listitem>

                <listitem>
                    <para>
                        <property>minFontSize</property>: definiert die minimale Schriftgröße der
                        Tags (muß ein Integer sein).
                    </para>
                </listitem>

                <listitem>
                    <para>
                        <property>maxFontSize</property>: definiert die maximale Schriftgröße der
                        Tags (muß ein Integer sein).
                    </para>
                </listitem>

                <listitem>
                    <para>
                        <property>classList</property>: ein Array von Klassen die an die Tags
                        vergeben werden soll.
                    </para>
                </listitem>

                <listitem>
                    <para>
                        <property>htmlTags</property>: ein Array von <acronym>HTML</acronym> Tags
                        die den Anker umgeben. Jedes Element kann entweder ein String sein, welches
                        als Elementtyp verwendet wird, oder ein Array das eine Liste von Attributen
                        für das Element enthält, welches wiederum als Schlüssel/Werte Paar definiert
                        ist. In diesem Fall wird der Array Schlüssel als Elementtyp verwendet.
                    </para>
                </listitem>
            </itemizedlist>
        </sect3>

        <sect3 id="zend.tag.cloud.decorators.htmlcloud">
            <title>HTML Cloud Dekorator</title>

            <para>
                Der <acronym>HTML</acronym> Cloud Dekorator umgibt die <acronym>HTML</acronym> Tags
                standardmäßig mit einem ul-Element und fügt keine Trennung hinzu. Wie im Tag
                Dekorator, können mehrere umgebende <acronym>HTML</acronym> Tags und zusätzlich ein
                Trennzeichen definiert werden. Die vorhandenen Optionen sind:
            </para>

            <itemizedlist>
                <listitem>
                    <para>
                        <property>separator</property>: definiert das Trennzeichen welches zwischen
                        alle Tags platziert wird.
                    </para>
                </listitem>

                <listitem>
                    <para>
                        <property>htmlTags</property>: ein Array von <acronym>HTML</acronym> Tags,
                        welche alle Tags umgeben. Jedes Element kann entweder ein String sein,
                        welches als Elementtyp verwendet wird, oder ein Array das eine Liste von
                        Attributen für das Element enthält, und als Schlüssel/Werte Paar definiert
                        ist. In diesem Fall wird der Arrayschlüssel als Elementtyp verwendet.
                    </para>
                </listitem>
            </itemizedlist>
        </sect3>
    </sect2>
</sect1>
