Das sd:system-interaction- Element

Container zur Erstellung einer Maske, welche Erstanmeldung, Anfordern eines neuen Passworts, Ändern des Passwortes oder der Mail durch den Nutzer, Login, eine 'tell-a-friend' / 'Diese Seite empfehlen' - Funktionalität oder die für Newsletter benötigten Anmelde-, Bestätigungs- und Abmeldemasken ermöglicht. Das Element fügt ein <form>-Element ein und zeigt zunächst den Inhalt des sd:start -Elements an. In Abhängigkeit vom Erfolg oder Mißerfolg der Anmeldung wird der Inhalt von sd:success oder sd:error ausgegeben. Alternativ kann statt sd:error auch sofort sd:start ausgegeben werden, dies wird durch sd:with-error = 1 erzeugt.

In Abhängigkeit von der gewünschten Funktion muß sd:start eine geeignete Anzahl von sd:input-identifier -Elementen mit geeignetem Typ enthalten. Die sinnvollen Werte ergeben sich aus der folgenden Tabelle:

TypZahl der sd:input-identifier-Elementesd:input-type-Werte
new-anonym1mail
new-nick2mail + nick
new-pwd1both
change-pwd3pwd + pwd_i + pwd_ii
change-mail2mail + pwd
login2both + pwd
tell-a-friend3recipient + own_name + own_mail
newsletter-subscribe1mail
newsletter-confirm1identifier
newsletter-unsubscribe1identifier

Fehlende Elemente verhindern nicht das Erstellen der Ausgabeseite, diese Logik läßt sich nicht mit XmlSchema-Definitionen erzwingen. Solche Fehler bei der Erstellung der Ausgabeseite führen dazu, daß die vom Benutzer eingegebenen Daten nicht ausgewertet werden, da die korrekten Namen der Formularelemente im POST-Datenstrom fehlen.

Es ist nicht möglich, ein Loginformular nur für einen Nutzertyp zu erstellen bzw. für andere Nutzertypen zu sperren. Falls Seiten nur einem gewissen Nutzerkreis zugänglich sein sollen, so müssen die Seiten selbst gesperrt werden.

'tell-a-friend' ermöglicht die Erstellung einer Ausgabeseite, die drei Eingabefelder (Mail des Empfängers, eigene Mail, eigener Name) enthält. Zusätzlich muß das sd:url-Attribut angegeben werden. Wird die Seite anschließend mit

Seitenname.html?url=http://www.example.com/dateiname.html
aufgerufen und ist das sd:url-Attribut mit dem Wert 'http://www.example.com/' belegt, dann wird eine Mail mit dem gewünschten Ziel
http://www.example.com/dateiname.html
an den Empfänger versandt.
Typ
Äußere Elemente
Attribute
sd:interaction-type
Gültige Werte für dieses Attribut sind:
	new-anonym
	new-nick
	new-pwd
	change-pwd
	change-mail
	login
	tell-a-friend
	newsletter-subscribe
	newsletter-confirm
	newsletter-unsubscribe
	
Die beiden ersten Werte ermöglichen die Neuregistrierung eines anonymen Nutzers (nur Mail) oder eines neuen Nutzers mit Mail und Nick-Namen. Der dritte Wert (new-pwd) sendet an die einzugebende Mailadresse bzw. an die dem Nick zugeordnete Mailadresse ein neues Passwort und stellt eine 'Forgot-Password' - Funktionalität bereit. 'change-pwd' interpretiert die Eingaben als Aufforderung, das Passwort zu ändern, 'login' interpretiert die Daten als Login. 'tell-a-friend' ermöglicht das Versenden einer Mail, welche eine per Url übergebene Adresse an den gewünschten Empfänger verschickt.

Die drei Newsletter-Werte stellen die Elemente für die Selbstanmeldung eines Nutzers, den Eintrag des Bestätigungsschlüssels als Double-Opt-In-Verfahren und eine Möglichkeit zur Abmeldung bereit. Für diese Werte muß zusätzlich das sd:newsletter-table - Attribut angegeben werden, um den Namen der Tabelle vom Sondertyp Newsletter-Mail festzulegen.

Wenn der Wert 'newsletter-subscribe' gewählt ist, also eine Maske zum Eintragen der Mailadresse ausgegeben wird, muß zusätzlich ein sd:mail -Element erstellt und das sd:mail-name -Attribut mit dessen Namen belegt werden. Diese Mail wird nach dem erfolgreichen Speichern der Mailadresse dem Nutzer zugesandt und sollte das Kürzel '{4}' sowie einen Link auf eine Seite mit der 'newsletter-confirm' - Funktionalität enthalten. Das Kürzel '{4}' kennzeichnet die vierte Spalte und wird mit dem Bestätigungsschlüssel gefüllt. Erst die Bestätigung mit diesem Schlüssel (Double Opt-In)schaltet die Mail für den Newsletter frei und vermeidet damit den Mißbrauch fremder Mailadressen.

sd:with-error
Ist diesem Attribut der Wert 1 zugewiesen, so wird bei einem gescheiterten Anmeldeversuch nicht der Inhalt von sd:error , sondern erneut das Startelement sd:start ausgegeben. Fehlermeldungen können im dortigen sd:err-block ausgegeben werden.
sd:url
Dient zur Festlegung der Stammadresse für die 'tell-a-friend' - Funktionalität. Hier muß eine komplette Url einschließlich 'http://' angegeben werden. Dieses Attribut ist für den 'tell-a-friend'-Typ Pflicht. Bei der Verarbeitung der vom Nutzer eingegebenen Werte wird geprüft, ob die zu empfohlene Adresse zu der Url gehört, welche durch die Stammadresse festgelegt worden ist. Falls ja, wird die Mail versandt, falls nicht, wird die Verarbeitung abgebrochen. Ansonsten könnte die Ausgabeseite mit jeder beliebigen Url aufgerufen und eine empfehlende Mail versandt werden.
sd:action
Legt eine alternative Zielseite für das Ziel des Formularaufrufs fest.
sd:pathinfo-reduced
Wenn dieses Attribut mit dem Wert 'true' belegt ist, dann wird als Wert des Action-Elements die Ausgabeseite ohne Path-Ergänzungen festgelegt. Dies ist nützlich, falls die Seite bsp. als Folder definiert und zur Bearbeitung von Wiki-Seiten genutzt wird.
sd:add-slash
Wenn dieses Attribut mit dem Wert 'true' belegt ist, dann wird an den ermittelten Wert zusätzlich ein Slash angehängt. Das ist wichtig, falls bei angehängten Ländercodes in Kombination mit Folder-Adressierungen sofort korrekte Adressen ausgegeben werden sollen.
sd:newsletter-table
Falls sich das sd:system-interaction auf eine Newsletter-Aktivität bezieht, muß dieses Attribut vorhanden und mit dem Wert der zugrundeliegenden Mailtabelle belegt sein. Dies ist eine Tabelle vom Typ 'Newsletter-Mails' mit fest vorgegebenen Spalten. Ihr Inhalt läßt sich nur über Ausgabeseiten mit dem sd:system-interaction - Element bearbeiten, nicht über die internen Masken.
sd:groups
Falls das sd:system-interaction - Element eine Maske für die Neuanmeldung (new-anonym oder new-nick) bereitstellt, dann kann dieses Attribut eine Liste von benutzerdefinierten, durch Leerzeichen getrennten Gruppen enthalten. Beim Speichern wird der neue Nutzer zum Mitglied dieser Gruppen gemacht.
sd:with-confirm
Hier kann eine semikolongetrennte Liste von Namen notiert werden.
sd:confirm-missing-message
Hier kann eine kommagetrennte Liste von Namen notiert werden.
sd:add-prefix
Fügt dem neu erstellten Benutzer das Präfix hinzu, durch das auch der aktuelle Nutzer gekennzeichnet ist.
sd:add-suffix
Fügt dem neu erstellten Benutzer das Suffix hinzu, das als Wert dieses Attributes eingetragen ist.
sd:mail-send-options
Kann mit einer Zahl belegt werden. Falls zu dieser Zahl und dem gewählten Nutzertyp eine spezielle Nachricht definiert ist, wird diese an den Nutzer verschickt. Ansonsten wird die Standardnachricht gesendet.
sd:mail-name
Existiert dieses Attribut und ist der Wert gleich dem Namen eines sd:mail -Elements, dann wird beim Speichern des Datensatzes eine Mail gemäß den Daten des sd:mail -Elements versandt.
sd:udr-data
Benötigt den Namen der Detailtabelle, die zu aktualisierende Spalte und den Cache-Namen, unter dem der neue Wert zu finden ist.
sd:name
Legt den Namen des Objektes fest. Dieses Attribut ist immer ein Pflicht-Attribut.
Child-Elemente
Beispiele

Beispiel für die Selbstanmeldung eines Nutzers mit Mail und Nick

Dieses Beispiel kann direkt über den entsprechenden Menüpunkt per Vorlage erzeugt werden.
<sd:system-interaction sd:name="login"
  sd:with-error="1" sd:interaction-type="new-nick">
  <sd:start>
    <table>
      <tr>
        <td>Ihre Mailadresse</td>
        <td>
          <sd:input-identifier size="60px" sd:input-type="mail" />
        </td>
      </tr>
      <tr>
        <td>Ihr Nickname</td>
        <td>
          <sd:input-identifier size="60px" sd:input-type="nick" />
        </td>
      </tr>
    </table>
    <sd:button sd:name="myButton">
      <sd:label-standard>Absenden</sd:label-standard>
    </sd:button>
    <p />
    <sd:err-message />
  </sd:start>
  <sd:success>
    Ihre Anmeldung war erfolgreich. Ihr Passwort wird Ihnen
    in Kürze per Mail zugesandt.
  </sd:success>
</sd:system-interaction>

Beispiel für eine 'tell-a-friend' - Ausgabeseite

Der Code entspricht dem body-Abschnitt von https://beispiel.server-daten.de/tell-a-friend.html.

Hier wird zusätzlich ein sd:param -Element mit Namen 'url' deklariert. Da die Url dieser Seite um den Ausdruck

?url=Zu empfehlende Seite
ergänzt wird, wird der Wert dieser Pfadangabe auf das sd:param-Element abgebildet und kann mit dem sd:value -Element ausgegeben und mit dem sd:attribute -Element als Attributwert eines gewöhnlichen a-Elements eingesetzt werden. Als Ergebnis entsteht ein gewöhnlicher Link, so daß der Nutzer das Versenden abbrechen und zurück zur Ausgangsseite wechseln kann.
<sd:param sd:name="url" />
<div>
  <div style="width:200px;float:left;height:500px; background-color:#003C78;">
    &#160;
  </div>
  <div style="float:left;left:250px;margin:0; padding:18px;">
    <p />
    <sd:system-interaction sd:with-error="1"
      sd:interaction-type="tell-a-friend" sd:name="tell-this"
      sd:url="http://www.sql-und-xml.de/">
      <sd:start>
        <h3>Empfehlen Sie diese Url weiter</h3>
        <p />
        <table>
          <tr>
            <td style="width:250px">Url:</td>
            <td style="width:450px">
              <a>
                <sd:attribute sd:attribute-name="href">
                  <sd:value sd:param-name="url" />
                </sd:attribute>
                <sd:value sd:param-name="url" />
              </a>
            </td>
          </tr>
          <tr>
            <td><br /></td>
            <td><br /></td>
          </tr>
          <tr>
            <td>Mail des Empfängers:</td>
            <td>
              <sd:input-identifier
                sd:input-type="recipient" />
            </td>
          </tr>
          <tr>
            <td>Ihre Mail:</td>
            <td>
              <sd:input-identifier
                sd:input-type="own_mail" />
            </td>
          </tr>
          <tr>
            <td>Ihr Name:</td>
            <td>
              <sd:input-identifier
                sd:input-type="own_name" />
            </td>
          </tr>
        </table>
        <p />
        <sd:button>
          <sd:label-standard>Empfehlung absenden</sd:label-standard>
        </sd:button>
        <p />
        <span class="sd-error"><sd:err-message /></span>
      </sd:start>

      <sd:success>
        <sd:err-message />
      </sd:success>
    </sd:system-interaction>
  </div>
</div>
Man sieht: Das meiste sind Html-Elemente für die Anordnung und Formatierung, dazwischen eingestreut die sd-Elemente für die Ausgabe.


Kontaktformular:

Schreiben Sie mir und wir bauen gemeinsam Ihre neue Web-Datenbank!

Die Erläuterungen zum Datenschutz habe ich gelesen und stimme diesen zu.

© 2003-2019 Jürgen Auer, Berlin.