Contao Open Source CMS > Contao-Forum

Zum englischen Forum

Index > Feature vorschlagen > Passwort anfordern - Templates unvollständig

Nina
Partner
Avatar
Beiträge: 1200
Märkische Heide, Deutschland
Beim Modul "Passwort anfordern" ist das Template unvollständig. Im Gegensatz zu den normalen Kontaktformularen habe ich hier nicht die Möglichkeit zur Wahl ob ich das Anforderungsformular mit Tabellen oder Tabellenlos will. Außerdem kann ich die Sicherheitsabfrage nicht stylen.

Vielleicht könntest du es so einbinden dass die gleichen Templates genutzt werden wie bei den normalen Kontaktformularen?
2008-06-04 13:49
fruitmedia
Partner
Avatar
Beiträge: 187
Krumbeck, Deutschland
Hallo Nina,

den Text der Sicherheitsabfrage wie z.B. "Bitte addieren Sie 8 und 5." kannst Du so per CSS ansprechen bzw. stylen:

iconCode:
.mod_lostPassword .captcha_text
{
}

Viele Grüße
Axel
2008-06-05 14:43
Nina
Partner
Avatar
Beiträge: 1200
Märkische Heide, Deutschland
@Schaak: Danke für den Hinweis, aber das Styling per CSS ist gar nicht mein Problem. :)
Es gibt eigentlich bei den Formularen für die Sicherheitsfrage ein eigenes Template damit man darin Umstellungen machen kann. Darauf (und auf die anderen Template-Einstellungen die sonst bei Formularen greifen) wird in diesem Fall aber leider nicht zugegriffen.
Zuletzt bearbeitet von Nina, 2008-06-05 15:36
2008-06-05 15:36
Nina
Partner
Avatar
Beiträge: 1200
Märkische Heide, Deutschland
Ich schieb den Beitrag mal nach oben, da das Problem leider immer noch besteht.

Kurzfassung: Für die Funktion "Passwort anfordern" steht kein eigenes Template (mod_lostPassword) zur Verfügung. Es greift aber auch nicht auf das normale Formular-Template zu, das ich bereits gestyled habe. Somit erscheint an dieser Stelle HTML-Code den ich leider nicht beeinflussen kann ...
Zuletzt bearbeitet von Nina, 2008-07-29 14:42
2008-07-29 14:41
leo
Administrator
Avatar
Beiträge: 7044
Wuppertal, Deutschland
Hi Nina,

das Modul nutzt das Template "mod_password" und die Formularfelder das Template "form_widget".

Grüße
Leo
2008-08-02 11:41
Es wäre vielleicht generell hilfreich, wenn man an mehr Stellen die das verwendete Template wählen könnte.

In einigen Modulen ist das zwar schon der Fall, aber geraden bei mehreren Domains trifft eine Änderung an z.B. einem Formular Template auch alle anderen Präsenzen.
2008-08-02 13:36
Nina
Partner
Avatar
Beiträge: 1200
Märkische Heide, Deutschland
iconZitat:
das Modul nutzt das Template "mod_password" und die Formularfelder das Template "form_widget".

Hm, dann tut es das aber anscheinend nach einem anderen Schema als bei den normalen Formularen.
Normalerweise generiert mir das Template die normalen Felder z. B. so:

iconCode:
...
<p class="cfix">
    <label for="ctrl_11">Name</label>    
   <input type="text" name="ihrname" id="ctrl_11" class="text" value="" />  
</p>

<p class="cfix">
    <label for="ctrl_13">E-Mail</label>    
    <input type="text" name="ihreemail" id="ctrl_13" class="text" value="" />  
</p>
...

Und danach das Captcha so:

iconCode:
<p class="cfix antispam">
  <label for="ctrl_16" class="cfix">
    <span class="capt_lab">Anti-Spam Abfrage:</span>
    <em><span class="captcha_text">Was ist die Summe aus 3 und 6?</span></em> 
  </label> 
  <input name="c99d08829b542fd42ec163ee4523328b4" id="ctrl_16" class="captcha" value="" maxlength="2" type="text">
</p>

Bei der Passwort-Vergessen-Funktion generiert er aber das:

iconCode:
<p class="cfix">  
    <label for="ctrl_username" class="mandatory">Benutzername</label><span class="mandatory">*</span>
    <input name="username" id="ctrl_username" class="text mandatory" value="" maxlength="64" type="text">
  
    <label for="ctrl_email" class="mandatory">Emailadresse</label><span class="mandatory">*</span>
    <input name="email" id="ctrl_email" class="text mandatory" value="" maxlength="255" type="text">
  
    <label for="ctrl_lost_password" class="mandatory">Sicherheitsfrage</label><span class="mandatory">*</span>
    <input name="c688dea04304d1ed13e0682e750ae686d" id="ctrl_lost_password" class="captcha mandatory" value="" maxlength="2" type="text"> <span class="captcha_text mandatory">Bitte addieren Sie 7 und 2.</span>
</p>

Im Grunde stopft es also alle Felder in das umschließende <p> (das ich im form_widget angelegt habe), anstatt nach jedem input ein neues <p> zu beginnen. Bei der Sicherheitsanfrage folgt es auch nicht dem captcha-Template sondern macht daraus plötzlich wieder ein "normales" Label+Input.

"Falsch" ist der XHTML-Code so nicht, aber man verliert viele Stylingmöglichkeiten, die einem bei normalen Formularen zur Verfügung stehen. Was das Captcha angeht, habe ich jetzt sogar ein Barrierefreiheitsproblem, das nicht da wäre, wenn er das Captcha-Template nutzen würde.

Es wäre wirklich toll, wenn er dieses Formular genauso generiert, wie die normalen Formulare generiert werden.
2008-08-03 19:48
leo
Administrator
Avatar
Beiträge: 7044
Wuppertal, Deutschland
Das Formular wird genauso generiert wie die anderen auch. Es nutzt dieselben Templates und Klassen und mit den Originaltemplates klappt es auch einwandfrei. Der Fehler ist wahrscheinlich irgendwo auf Deinem Weg der kompletten Anpassung entstanden :-(
2008-08-03 19:51
Nina
Partner
Avatar
Beiträge: 1200
Märkische Heide, Deutschland
Ne, jetzt sehe ich wo der Haken ist:
Es gibt bei diesem Formular nicht die Wahl ob man es tabellenlos möchte oder nicht (so wie bei allen anderen Formularen). Deshalb hatte ich die mod_password so gut wie irgendwie ansatzweise möglich angepasst, da ich an der Stelle wirklich keine Tabelle gebrauchen kann.

Also lautet meine Frage anders: Wäre es möglich, dass du auch bei diesem Formular die Möglichkeiten gibst, die du für normale Formulare hast? Also die Wahl ob mit / ohne Tabelle und beim Captcha den Zugriff auf das captcha-Template?
Zuletzt bearbeitet von Nina, 2008-08-03 20:02
2008-08-03 20:02
leo
Administrator
Avatar
Beiträge: 7044
Wuppertal, Deutschland
Hi Nina,

iconNina:
ob man es tabellenlos möchte oder nicht (so wie bei allen anderen Formularen)

die Option "tabellenlos" gibt es nur beim Formulargenerator. Bei Modulen gibt es diese Möglichkeit nicht, daher verstehe ich nicht, wie Du zu dieser Annahme kommst?

Grüße
Leo
2008-08-03 23:01
Nina
Partner
Avatar
Beiträge: 1200
Märkische Heide, Deutschland
Hm, bisher habe ich alle meine Formulare tabellenlos hinbekommen, deswegen komme ich wohl darauf.

Wenn du keine tabellenlose Variante an der Stelle anbieten willst und auch beim Captcha nicht auf das Template zugreifst, akzeptiere ich das natürlich - aber ich muss dann dafür sorgen, dass ein entsprechendes Modul programmiert wird, da es so für mich nicht den Grad der Barrierefreiheit erreicht, den ich benötige.

Trotzdem natürlich danke für deine Zeit, die du dir fürs ausführliche Antworten genommen hast :)
2008-08-04 10:16
leo
Administrator
Avatar
Beiträge: 7044
Wuppertal, Deutschland
Meinst Du mit "alle Formulare" nur solche, die mit dem Formulargenerator erstellt wurden, oder auch die Formulare der Module (Benutzerregistrierung, Kommentare, etc.)?
2008-08-04 10:19
Nina
Partner
Avatar
Beiträge: 1200
Märkische Heide, Deutschland
Die Benutzerregistrierung habe ich bisher noch nciht gebraucht, aber ich spreche von allen Formularen die ich irgendwie durch Templates direkt ansprechen kann. Als Beispiel hierfür fällt mir das ce_comments.tpl ein, wo es (wenn auch etwas umständlich) schon etwas besser im Template anpassbar war. Bis aufs Captcha, aber das mag an der Stelle auch an meinen nicht sonderlich ausgereiften PHP-Kenntnissen liegen.
Zuletzt bearbeitet von Nina, 2008-08-04 10:39
2008-08-04 10:37
leo
Administrator
Avatar
Beiträge: 7044
Wuppertal, Deutschland
Hi Nina,

kannst Du bitte mal Dein angepasstes Template form_widget.tpl hier posten?

Grüße
Leo
2008-08-04 11:18
Nina
Partner
Avatar
Beiträge: 1200
Märkische Heide, Deutschland
Gerne :)
ich poste auch noch die anderen Formular-Templates mit, die ich am häufigsten nutze.

form_widget.tpl (.cfix ist die normale Clearfix-Methode; hab nur den Klassennamen gekürzt)

iconCode:
<?php if (!$this->tableless): ?>
  <tr class="<?php echo $this->rowClass; ?>">
    <td class="col_0 col_first"><?php echo $this->generateLabel(); ?><?php if ($this->mandatory): ?><span class="mandatory">*</span><?php endif; ?></td>
    <td class="col_1 col_last"><?php echo $this->generateWithError(); ?></td>
  </tr>
<?php else: ?>
  <p class="cfix">
    <?php echo $this->generateLabel(); ?>
    <?php echo $this->generateWithError(); ?>
  </p>
<?php endif; ?>

form_captcha.tpl

iconCode:
<?php if (!$this->tableless): ?>
  <tr class="<?php echo $this->rowClass; ?>">
    <td class="col_0 col_first"><?php echo $this->generateLabel(); ?><?php if ($this->mandatory): ?><span class="mandatory">*</span><?php endif; ?></td>
    <td class="col_1 col_last"><?php echo $this->generateWithError(); ?> <?php echo $this->generateQuestion(); ?></td>
  </tr>
<?php else: ?>

<p class="cfix antispam">
  <label for="ctrl_<?php echo $this->id; ?>" class="cfix">
    <span class="capt_lab"><?php echo $this->label; ?></span>
    <em><?php echo $this->generateQuestion(); ?></em> 
  </label> 
  <?php echo $this->generateWithError(); ?>
</p>

<?php endif; ?>

Und hier noch ein Beispiel für ein "spezielles Formular-Template: mod_login_1cl.tpl

iconCode:
<!-- indexer::stop -->
<div class="<?php echo $this->class; ?>"<?php echo $this->cssID; ?><?php if ($this->style): ?> style="<?php echo $this->style; ?>"<?php endif; ?>>
<?php if ($this->headline): ?>
<<?php echo $this->hl; ?>><?php echo $this->headline; ?></<?php echo $this->hl; ?>>
<?php endif; ?>

<form action="<?php echo $this->action; ?>" method="post">
<fieldset>
  <legend>Ihre Benutzerdaten:</legend>

<?php if ($this->message): ?>
<p class="error"><?php echo $this->message; ?></p>
<?php endif; ?>

<p class="cfix">
  <input type="hidden" name="FORM_SUBMIT" value="tl_login" />
  <label for="username"><?php echo $this->username; ?></label>
  <input type="text" name="username" id="username" class="text" maxlength="64" value="<?php echo $this->value; ?>" />
</p>

<p class="cfix">
  <label for="password"><?php echo $this->password; ?></label>
  <input type="password" name="password" id="password" class="text password" maxlength="64" value="" />
</p>
</fieldset>
<p class="submit_container"><input type="submit" class="send" value="<?php echo $this->slabel; ?>" /></p>

</form>

</div>
<!-- indexer::continue -->

An ein paar Stellen habe ich direkt bestimmte Klassen dazu geschrieben, die ich für dieses Projekt benötigt habe. Also davon bitte nicht irritieren lassen.

Im Template für "Passwort vergessen" hatte ich den Tabellenaufruf rausgelöscht und stattdessen mein <p class="cfix"> reingeschrieben, dadurch kam es dazu, dass er die (was ich oben monierte) Felder alle in ein einziges <p> schob. Allerdings habe ich das inzwischen gelöscht und an der Stelle ein ganz normales Formular eingefügt (wodurch ich die Passwörter zwar händisch ändern muss, aber es barrierefrei nutzbar ist - war mir jetzt erstmal wichtiger).
Zuletzt bearbeitet von Nina, 2008-08-04 14:28
2008-08-04 14:25