Ergebnis 1 bis 3 von 3

Thema: Klasse für Label in der Nutzervereinbarung vergeben

  1. #1
    Contao-Fan Avatar von bibib
    Registriert seit
    19.06.2009.
    Ort
    Linz, Oberösterreich
    Beiträge
    644
    Partner-ID
    8517

    Standard Klasse für Label in der Nutzervereinbarung vergeben

    Moin,

    ich habe ein Registrierungsformular mit Nutzungsvereinbarung angelegt, das Formulartemplate ist member_grouped_useragreement, mit tabellenlosem Layout (zu sehen hier ).

    Nun haben alle meine labels per CSS eine Breite von 100px bekommen, und damit natürlich auch das Label, das den Text "Bitte lesen Sie die Nutzervereinbarung durch ... " enthält, und das Feld sollte definitiv etwas breiter werden als 100px. Ich finde nur keinen Ansatz, wo ich diesem Label eine Klasse vergeben kann. (Zur Verdeutlichung siehe auch die Bilder im Anhang).

    Der entsprechende Teil im Template "member_grouped_useragreement.xhtml" sieht so aus:

    PHP-Code:
    <?php if ($this->agreement): ?>
    <fieldset><legend><?php echo $this->agreementDetails?></legend>
    <table cellspacing="0" cellpadding="0" summary="<?php echo $this->agreementDetails?>">
    <?php foreach ($this->agreement as $field) echo $field?>
    </table>
    </fieldset>
    <?php endif; ?>
    - hier kann ich offenbar keine Klasse vergeben. Ich habe dann diverse xtmember-php-Dateien durchsucht, habe aber absolut keine Ahnung, aus welcher Datei die Daten für dieses Template generiert werden.

    Kann mir irgendjemand die Datei sagen, in der ich die Klasse vergeben kann?
    Danke schon mal,
    Birgit

    ---------------------------------------------------------------------------------------
    Edit: Problem ist jetzt mal soweit gelöst, Lösung folgt, trotzdem würde ich gerne wissen, in welcher Datei man die Klasse vergeben kann ...
    Angehängte Grafiken Angehängte Grafiken
    Geändert von bibib (04.12.2011 um 14:17 Uhr)

  2. #2
    Contao-Nutzer
    Registriert seit
    04.12.2011.
    Beiträge
    11

    HTML

    Tach,

    hier die angekündigte Lösung (musste mich erst mal noch anmelden ). Ist zwar ein ziemlich dreckiger Fix, aber lieber dreckig und funktioniert als sauber und funktioniert nicht.

    PHP-Code:
    <?php if ($this->agreement): ?>
    <fieldset><legend><?php echo $this->agreementDetails?></legend>
    <table cellspacing="0" cellpadding="0" summary="<?php echo $this->agreementDetails?>">
      <?php foreach ($this->agreement as $field){
            echo 
    substr($field,0,10).str_replace("<label for=\"ctrl_agreement\">","<label for=\"ctrl_agreement\" class=\"meinsupertollerklassennamen\">",substr($field,10));
      }
    ?>
    </table>
    </fieldset>
    <?php endif; ?>
    1. in $this->agreement ist nur 1 Element drin, wenn das so bleibt, ist der Fix recht unbedenklich, sonst wird in den weiteren Elementen natürlich auch rumgepfuscht. Dann müsste man nachbessern, aber eben erst dann.
    2. Idee war, das 2. <label>-Tag durch eines zu ersetzen, das ein class-Attribut hat. Problem: beide <label>-Tags sind gleich
    3. Lösung: am Anfang einfach was mit substr() wegschneiden. Da noch ein paar Leerzeichen drin waren, habe ich einfach mal 10 Zeichen weggeschnibbelt. Hätte auch 5 oder 15 oder sonst was nehmen können, hauptsache, das <label>-Tag wird angeschnitten, damit es im nächsten Schritt nicht mehr erkannt wird
    4. <label> mit str_replace() durch <label class="..."> ersetzen
    5. den weggeschnittenen Teil wieder drankleben mit substr()."..."
    6. freuen, dass es geklappt hat



    Bei Fragen: fragen!

    lg
    Elch

  3. #3
    Contao-Fan Avatar von hschottm
    Registriert seit
    15.06.2009.
    Ort
    Loxstedt, Germany
    Beiträge
    825
    User beschenken
    Wunschliste

    Standard

    Moin bibib,

    Zitat Zitat von bibib Beitrag anzeigen
    Moin,

    ich habe ein Registrierungsformular mit Nutzungsvereinbarung angelegt, das Formulartemplate ist member_grouped_useragreement, mit tabellenlosem Layout (zu sehen hier ).

    Nun haben alle meine labels per CSS eine Breite von 100px bekommen, und damit natürlich auch das Label, das den Text "Bitte lesen Sie die Nutzervereinbarung durch ... " enthält, und das Feld sollte definitiv etwas breiter werden als 100px. Ich finde nur keinen Ansatz, wo ich diesem Label eine Klasse vergeben kann. (Zur Verdeutlichung siehe auch die Bilder im Anhang).

    Der entsprechende Teil im Template "member_grouped_useragreement.xhtml" sieht so aus:

    PHP-Code:
    <?php if ($this->agreement): ?>
    <fieldset><legend><?php echo $this->agreementDetails?></legend>
    <table cellspacing="0" cellpadding="0" summary="<?php echo $this->agreementDetails?>">
    <?php foreach ($this->agreement as $field) echo $field?>
    </table>
    </fieldset>
    <?php endif; ?>
    - hier kann ich offenbar keine Klasse vergeben. Ich habe dann diverse xtmember-php-Dateien durchsucht, habe aber absolut keine Ahnung, aus welcher Datei die Daten für dieses Template generiert werden.

    Kann mir irgendjemand die Datei sagen, in der ich die Klasse vergeben kann?
    Danke schon mal,
    Birgit

    ---------------------------------------------------------------------------------------
    Edit: Problem ist jetzt mal soweit gelöst, Lösung folgt, trotzdem würde ich gerne wissen, in welcher Datei man die Klasse vergeben kann ...
    das User-Agreement ist eine Form-Klasse und hat deswegen, wie alle anderen Formularelemente kein eigenes Template. Generiert wird der Code in FormAgreement.php im xtmembers-Modul.
    Das Problem beim Agreement ist, dass es für die Tabellenlose Ausgabe im Gegensatz zu allen anderen Formularelementen eben nicht nur aus LABEL und FORMULARELEMENT besteht, sondern aus LABEL, FORMULARELEMENT (Checkbox), LABEL (Text zur Checkbox), TEXT (Agreement).
    Was ich aber jetzt noch gemacht habe, ist das folgende: Ich habe dem Label, das zur Checkbox gehört, noch eine weitere Klasse gegeben: 'agreement_check_text'. Damit hat das User Agreement jetzt die folgenden Klassen und sollte gesondert über CSS zu formatieren sein:

    HTML-Code:
    <label>Standardlabel, keine Klasse, hier sollte das 'normale' CSS greifen</label>
    <input class="agreement">Checkbox für das Agreement</input>
    <label class="agreement_check_text">Text zur Checkbox, die Klasse agreement_check_text ist neu</label>
    <div class="agreement_text">Der eigentliche Text des User Agreements</div>
    Durch die neue Klasse agreement_check_text solltest du dann eigentlich alle Elemente stylen können.

    Gruß,
    Helmut
    Blackmail's such an ugly word. I prefer extortion -- the "x" makes it sound cool.
    -- Bender

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •