Ergebnis 1 bis 25 von 25

Thema: Avisota Formularfelder anpassen - value ändern

  1. #1
    Contao-Nutzer
    Registriert seit
    08.03.2010.
    Beiträge
    105

    Standard Avisota Formularfelder anpassen - value ändern

    Hab schon eine wenig gesucht danach, leider nix gefunden.

    Gibt es die Möglichkeit die Formularfelder selber anzupassen. Ich hab schon versucht ein eigenes hardgecodedes Template einzubinden. Da werden leider dann die Errormeldungen nicht angezeigt ...

    Zb. Möchte ich einen eigenen Standardvalue oder Javascriptcode einfügen zwecks ausblenden des Values onFocus.

    Im Temlate mod_avisota_subscription.html5 steht nur <?php echo $this->fields; ?>.

    Wie komm ich da ran?

    Lg
    Cheche

  2. #2
    Administrator Avatar von xchs
    Registriert seit
    19.06.2009.
    Beiträge
    14.583
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Zitat Zitat von cheche Beitrag anzeigen
    Zb. Möchte ich einen eigenen Standardvalue oder Javascriptcode einfügen zwecks ausblenden des Values onFocus.
    Dafür gäbe es bereits die Erweiterung [cleardefault].

    EDIT: Sehe gerade, dass Du das nicht im Formulargenerator brauchst, sondern für Avisota.
    Geändert von xchs (24.11.2011 um 14:02 Uhr)
    Contao Community Administrator

    [Unterstützungsmöglichkeiten]

  3. #3
    Contao-Nutzer
    Registriert seit
    08.03.2010.
    Beiträge
    105

    Standard

    Ja danke! Die hab ich eh schon für zb. das Kontaktformular. Wäre übrigens super wenn die Erweiterung für Avisota-Formulare auch funktionieren würde.

  4. #4
    Contao-Urgestein Avatar von tril
    Registriert seit
    07.01.2010.
    Ort
    Bad Marienberg
    Beiträge
    2.939
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von cheche Beitrag anzeigen
    Im Temlate mod_avisota_subscription.html5 steht nur <?php echo $this->fields; ?>.

    Wie komm ich da ran?
    Die Felder basieren auf ganz normalen Formular-Widgets. Du kannst das also über die Form-Templates verändern.
    Außerdem werden die Felder über den DCA tl_avisota_recipient gesteuert, dort kannst du default Werte setzen.

  5. #5
    Contao-Nutzer
    Registriert seit
    08.03.2010.
    Beiträge
    105

    Standard

    ok danke für die Info!

    meinst du hier in dieser Datei?
    system/modules/Avisota/dca/tl_avisota_recipient.php

    Könntest du mir da bitte etwas auf die Sprünge helfen.

    Wie könnte eine Anpassung über DCA aussehen wenn meine Felder zb. so aussehen sollen:

    PHP-Code:

    <input type="text" name="email" id="ctrl_email" class="text mandatory cleardefault" value="E-Mail *" style="" 
    onblur="if (this.value=='') { this.value='E-Mail *'; $(this).addClass('cleardefault'); }" 
    onfocus="if (this.value=='E-Mail *') { this.value=''; $(this).removeClass('cleardefault'); this.select(); }">

    <
    input type="text" name="lastname" id="ctrl_lastname" class="text cleardefault" value="Vorname Name" style="" 
    onblur="if (this.value=='') { this.value='Vorname Name'; $(this).addClass('cleardefault'); }" 
    onfocus="if (this.value=='Vorname Name') { this.value=''; $(this).removeClass('cleardefault'); this.select(); }"
    ...also mit value und javascriptcode.

    Übrigens. Ein tolle Erweiterung wurde da entwickelt! Die kann was!

    Lg
    cheche

  6. #6
    Contao-Urgestein Avatar von tril
    Registriert seit
    07.01.2010.
    Ort
    Bad Marienberg
    Beiträge
    2.939
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von cheche Beitrag anzeigen
    ok danke für die Info!

    meinst du hier in dieser Datei?
    system/modules/Avisota/dca/tl_avisota_recipient.php

    Könntest du mir da bitte etwas auf die Sprünge helfen.
    Man überschreibt nicht vorhandene Dateien, das ist nicht Update-Sicher
    Führe dir mal den Beitrag zu gemüte, da geht es zwar um das hinzufügen von default Werten, aber es wird auch beschrieben wie man den DCA sicher verändert.
    http://de.contaowiki.org/Defaultwerte_vorbelegen


    Zitat Zitat von cheche Beitrag anzeigen
    Wie könnte eine Anpassung über DCA aussehen wenn meine Felder zb. so aussehen sollen:

    PHP-Code:

    <input type="text" name="email" id="ctrl_email" class="text mandatory cleardefault" value="E-Mail *" style="" 
    onblur="if (this.value=='') { this.value='E-Mail *'; $(this).addClass('cleardefault'); }" 
    onfocus="if (this.value=='E-Mail *') { this.value=''; $(this).removeClass('cleardefault'); this.select(); }">

    <
    input type="text" name="lastname" id="ctrl_lastname" class="text cleardefault" value="Vorname Name" style="" 
    onblur="if (this.value=='') { this.value='Vorname Name'; $(this).addClass('cleardefault'); }" 
    onfocus="if (this.value=='Vorname Name') { this.value=''; $(this).removeClass('cleardefault'); this.select(); }"
    ...also mit value und javascriptcode.
    Sowas geht im DCA leider nicht, das geht auch nur mit str_replace im Template, aber was spricht dagegen, dass du dein mod_avisota_subscription Template folgendes hinzufügst:
    PHP-Code:
    <script>
    $$(
    'div.mod_avisota_subscription input').each(function(input) {
      var 
    label = $$('div.mod_avisota_subscription label[for="' input.id '"]');
      if (
    label.length) {
        
    label label[0];
        var default = 
    label.get('text');
        if (!
    input.value) {
          
    input.value = default;
        }
        
    input.addClass('cleardefault');
        
    input.addEvents({
          
    focus: function() {
            if (
    input.value == default) {
              
    input.value '';
              
    input.removeClass('cleardefault');
            }
          },
          
    blur: function() {
            if (
    input.value == '') {
              
    input.value = default;
              
    input.addClass('cleardefault');
            }
          }
        });
        
    label.destroy();
      }
    }
    </script> 

  7. #7
    Contao-Nutzer
    Registriert seit
    08.03.2010.
    Beiträge
    105

    Standard

    Danke für den Code! Soweit ich die Codezeilen verstehe schaut das ganz gut aus. Bekomme es aber leider nicht zum Laufen.

    Ist das vielleicht irgend ein bestimmter Javascript code (query oder mootools)?

    So sieht das ganze Formular aus:
    PHP-Code:
    <div class="mod_avisota_subscription block">

    <
    form id="tl_avisota_recipient" method="post" action="newsletter-abonnieren-danke.html">
    <
    div class="formbody">
    <
    input type="hidden" value="tl_avisota_recipient" name="FORM_SUBMIT">
    <
    input type="hidden" value="b07e035e98991ade22eb228953092edf" name="REQUEST_TOKEN">

    <
    class="preamble">Melden Sie sich zu unserem Newsletter an.</p>

    <
    div class="fields">
      <
    label class="mandatory" for="ctrl_email"><span class="invisible">Pflichtfeld</spanE-Mail<span class="mandatory">*</span></label
      <
    input type="text" maxlength="255" value="" class="text mandatory" id="ctrl_email" name="email"><br>

      <
    label for="ctrl_lastname">Nachname</label
      <
    input type="text" maxlength="255" value="" class="text" id="ctrl_lastname" name="lastname"><br>
    </
    div>

    <
    div class="submit_container">
        <
    input type="submit" value="Passivhaus-Newsletter anfordern" name="subscribe">
        <
    input type="submit" value="Passivhaus-Newsletter kündigen" name="unsubscribe">
    </
    div>

    </
    div>
    </
    form>

    </
    div
    Hast du vielleicht bitte noch irgend eine Idee warum das nicht funktionieren könnte?

    Danke!

    cheche

  8. #8
    Contao-Urgestein Avatar von tril
    Registriert seit
    07.01.2010.
    Ort
    Bad Marienberg
    Beiträge
    2.939
    User beschenken
    Wunschliste

    Standard

    Ja das ist Mootools spezifischer Code. Aber auch nicht fehlerfrei (ich hatte ihn ja auch nur hier im Forum geschrieben ohne zu testen).

    2 kleine Fehler behoben, jetzt sollte er passen:
    HTML-Code:
    <script>
    $$('div.mod_avisota_subscription input').each(function(input) { 
      var label = $$('div.mod_avisota_subscription label[for="' + input.id + '"]'); 
      if (label.length) { 
        label = label[0]; 
        var defaultLabel = label.get('text'); 
        if (!input.value) { 
          input.value = defaultLabel; 
        } 
        input.addClass('cleardefaultLabel'); 
        input.addEvents({ 
          focus: function() { 
            if (input.value == defaultLabel) { 
              input.value = ''; 
              input.removeClass('cleardefaultLabel'); 
            } 
          }, 
          blur: function() { 
            if (input.value == '') { 
              input.value = defaultLabel; 
              input.addClass('cleardefaultLabel'); 
            } 
          } 
        }); 
        label.destroy(); 
      } 
    });
    </script>

  9. #9
    Contao-Nutzer
    Registriert seit
    08.03.2010.
    Beiträge
    105

    Standard

    Vielen Dank!!!
    Es funktioniert jetzt sehr gut!

    Jetzt hätte ich noch eine kleine Sache.
    Wo könnte ich jetzt die Label anpassen bzw. eintragen für die relevanten Felder?

    Habe hier mal versucht etwas zu ändern aber ohne Erfolg:
    system/modules/Avisota/languages/de/tl_avisota_recipient.php

    Danke!

    cheche

  10. #10
    Contao-Urgestein Avatar von tril
    Registriert seit
    07.01.2010.
    Ort
    Bad Marienberg
    Beiträge
    2.939
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von cheche Beitrag anzeigen
    Habe hier mal versucht etwas zu ändern aber ohne Erfolg:
    system/modules/Avisota/languages/de/tl_avisota_recipient.php
    Im Prinzip warst du dort schon richtig, aber man sollte nicht die Moduldateien ändern, sonst werden deine Änderungen beim Update überschrieben ;-)
    Schau mal in die system/config/langconfig.php, dort kannst du deine lokalen Änderungen Updatesicher machen

  11. #11
    Contao-Nutzer
    Registriert seit
    17.05.2011.
    Ort
    Heidelberg
    Beiträge
    6

    Standard value GET

    erstmal - tolle Erweiterung, vielen Dank schonmal.

    Eine kleine Frage:
    was bei mir nicht tut und was ich gerne anpassen würde ist, die Abmeldung über den Abmelde-Link der E-Mail übergibt die abzumeldende email. das input-Feld auf der Verwalten-Seite übernimmt aber die mail-adresse nicht. Value bleibt leer.

    Ich würde ganz gerne z.B.
    value="<?php echo ($_GET['email']); ?>"
    einfügen und weiss nicht wo ich das tun könnte. kein plan wo "fields" geschrieben werden ...

    wäre sehr dankbar für einen Tip.

  12. #12
    Contao-Urgestein Avatar von tril
    Registriert seit
    07.01.2010.
    Ort
    Bad Marienberg
    Beiträge
    2.939
    User beschenken
    Wunschliste

    Standard

    Der Fehler ist bekannt, ist in der Entwicklungsversion sogar schon teilweise behoben, das Modul wird aber noch komplett überarbeiten werden, genau genommen plane ich, das Modul in mehrere aufzusplitten, neue hinzuzufügen und die ganze An-/Abmelde Logik zu überarbeiten. Mitte März ist es soweit

  13. #13
    Contao-Nutzer
    Registriert seit
    17.05.2011.
    Ort
    Heidelberg
    Beiträge
    6

    Standard

    eine Zwischenlösung (auch gerne update-unsicher) wäre dennoch möglich?

  14. #14
    Contao-Urgestein Avatar von tril
    Registriert seit
    07.01.2010.
    Ort
    Bad Marienberg
    Beiträge
    2.939
    User beschenken
    Wunschliste

    Standard

    Diese Änderung an der AvisotaInsertTag.php behebt diesen Fehler.

  15. #15
    Contao-Nutzer
    Registriert seit
    17.05.2011.
    Ort
    Heidelberg
    Beiträge
    6

    Standard

    hat leider nicht funktioniert, habe einmal nur den Abschnitt kopiert & einmal die gesamte Datei eingesetzt. leider ohne Erfolg.
    der unsubscribe-Link ist wie folgt: www.deineseite.com/?email=deinemail@mail.com
    sollte http://www.deineseite.com/newsletter...email@mail.com

    habe ich etwas vergessen? sollte ich das Modul neu aufsetzen?

    ansonsten warte ich bis ddas update draussen ist und lege diese Zeile einfach vor das Formular
    <?php echo addslashes($_GET['email']); ?>
    dann sieht der User zumindest mit welcher mail er angemeldet ist.

    danke trotzdem.

  16. #16
    Contao-Urgestein Avatar von tril
    Registriert seit
    07.01.2010.
    Ort
    Bad Marienberg
    Beiträge
    2.939
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von franksy Beitrag anzeigen
    hat leider nicht funktioniert, habe einmal nur den Abschnitt kopiert & einmal die gesamte Datei eingesetzt. leider ohne Erfolg.
    der unsubscribe-Link ist wie folgt: www.deineseite.com/?email=deinemail@mail.com
    sollte http://www.deineseite.com/newsletter...email@mail.com
    Dann ist die "Abonnement Verwalten Seite" im Verteiler nicht richtig konfiguriert.

  17. #17
    Contao-Fan Avatar von qba
    Registriert seit
    23.07.2010.
    Ort
    Berlin Mariendorf
    Beiträge
    574

    Standard

    Zitat Zitat von tril Beitrag anzeigen
    Die Felder basieren auf ganz normalen Formular-Widgets. Du kannst das also über die Form-Templates verändern.
    Äh öh kann mir jemand verraten welches Template das für Contao 2.11.11 z.B. sein soll? "nl_default" ist es jedenfalls nicht oder? Konkret würde ich eigentlich gern nur die Felder in der Reihenfolge ändern und einen Container um das ein oder andere Checkbox Feld legen.
    Gruß qba|uwe

  18. #18
    Contao-Urgestein Avatar von tril
    Registriert seit
    07.01.2010.
    Ort
    Bad Marienberg
    Beiträge
    2.939
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von qba Beitrag anzeigen
    Äh öh kann mir jemand verraten welches Template das für Contao 2.11.11 z.B. sein soll? "nl_default" ist es jedenfalls nicht oder? Konkret würde ich eigentlich gern nur die Felder in der Reihenfolge ändern und einen Container um das ein oder andere Checkbox Feld legen.
    Das ist das Contao Formular-Widget System, nix anderes. Es gibt zwar ein Template für das subscription Modul, dort werden aber nur noch die Felder als eine Variable ausgegeben.

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

    Standard

    Zitat Zitat von tril Beitrag anzeigen
    Das ist das Contao Formular-Widget System, nix anderes.
    Auf die Gefahr hin, jetzt als Vollhonk abgestempelt zu werden - wo und was ist das?

  20. #20
    Contao-Urgestein Avatar von tril
    Registriert seit
    07.01.2010.
    Ort
    Bad Marienberg
    Beiträge
    2.939
    User beschenken
    Wunschliste

    Standard

    @bibib schon mal mit dem Contao Formular-Generator gearbeitet und dort Templates angepasst? Ich sag nur: form_widget.html5/xhtml

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

    Standard

    Zitat Zitat von tril Beitrag anzeigen
    @bibib schon mal mit dem Contao Formular-Generator gearbeitet
    Das schon, ja.

    Zitat Zitat von tril Beitrag anzeigen
    und dort Templates angepasst?
    Leider nein, sonst wüsste ich wahrscheinlich schon, was ich jetzt tun muss.

    Zitat Zitat von tril Beitrag anzeigen
    Ich sag nur: form_widget.html5/xhtml
    Da drin war ich auch schon, kann damit aber ungefähr soviel anfangen wie mit mod_avisota_subscription


    Mir geht's eh selbst auf den Keks, dass ich hier so blöde Anfängerfragen stellen muss. Ich würde das ja eh gerne lernen, mir fehlt aber ein bisschen der rote Faden. Meine PHP-Kenntnisse sind noch recht rudimentär, bis OOP ist es noch ein weiter Weg - hast du einen Tipp für mich, wie man sich am besten in die Innereien von Contao reinwühlt?

    Grüße, bibib
    Geändert von bibib (19.08.2013 um 18:40 Uhr)

  22. #22
    Contao-Yoda Avatar von MacKP
    Registriert seit
    15.06.2009.
    Ort
    Duisburg
    Beiträge
    13.293
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    @ bibib,
    was willst du denn machen?
    Eigentlich braucht man fürs Template bearbeiten nicht viel Ahnung von OOP. Wenn man nur hier und da ein <div> haben möchte, dann braucht man das eigentlich gar nicht *g*

    Wenn du nicht damit klar kommst, dann zeig uns einfach mal dein Template wie es bisher ist. Dann findet man schon eine Lösung ;-)

    Viele Grüße
    Contao Pool | C-C-A | MetaModels | [Internetseite -> Mediendepot Ruhr]
    [Arbeitet bei -> Paus Design & Medien]
    "I can EXPLAIN it to you, but I can't UNDERSTAND it for you."

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

    Standard

    Danke MacKP, war schon am Wände hochgehen

    Es geht um die Anmeldung zum Avisota-Newsletter, die soll so aussehen wie im Anhang: Vorname, Nachname in einer Zeile, darunter E-Mail, darunter Anmeldebutton und daneben die Listenauswahl.
    Live anzusehen unter http://www.contao.layacommenda.at/

    Ich dachte mir eben, bevor ich anfange, die Elemente da einzeln absolut zu positionieren, ändere ich mal die Reihenfolge der Ausgabe. Na ja, Pustekuchen, ich komme im Template mod_avisota_subscription nicht wirklich da dran?

    PHP-Code:
    <!-- Modul für Startseite - preamble gelöscht und kündigen-Button auskommentiert | -->
    <!-- indexer::stop -->
    <div class="<?php echo $this->class?> block"<?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->formAction ?>" method="post" id="<?php echo $this->formId ?>">
    <div class="formbody">
    <input type="hidden" name="FORM_SUBMIT" value="<?php echo $this->formId?>" />
    <input type="hidden" name="REQUEST_TOKEN" value="{{request_token}}" />

    <?php
    foreach ($this->messages as $strClass => $arrMessages):
    foreach (
    $arrMessages as $strMessage):
    ?>
    <p class="message <?php echo $strClass?>"><?php echo $strMessage ?></p>
    <?php
    endforeach;
    endforeach;
    ?>

    <?php if (!$this->hideForm): ?>
    <?php 
    if (!$this->tableless): ?>
    <table cellspacing="0" cellpadding="0" summary="">
        <tbody>
            <?php echo $this->fields?>
            <tr class="<?php echo $this->rowLast?> row_last">
                <td class="col_0 col_1 col_submit col_first col_last" colspan="2">
                    <div class="submit_container">
                        <input type="submit" name="subscribe" value="<?php echo specialchars($GLOBALS['TL_LANG']['avisota']['subscribe']['submit']); ?>" />
                        <input type="submit" name="unsubscribe" value="<?php echo specialchars($GLOBALS['TL_LANG']['avisota']['unsubscribe']['submit']); ?>" />
                    </div>
                </td>
            </tr>
        </tbody>
    </table>
    <?php else: ?>
    <div class="fields">
        <?php echo $this->fields?>
    </div>
    <div class="submit_container">
        <input type="submit" name="subscribe" value="<?php echo specialchars($GLOBALS['TL_LANG']['avisota']['subscribe']['submit']); ?>" />
        <!--input type="submit" name="unsubscribe" value="<?php echo specialchars($GLOBALS['TL_LANG']['avisota']['unsubscribe']['submit']); ?>" /-->
    </div>
    <?php endif; ?>
    <?php 
    endif; ?>

    </div>
    </form>

    </div>
    <!-- indexer::continue -->
    da der für mich relevante Teil da drin steckt:
    PHP-Code:
    <div class="fields">
        <?php echo $this->fields?>
    </div>
    Ich hab mir dann das von tril angesprochene Formular-Template angeschaut (und die anderen auch) ... aber ... Bahnhof. Das hilft mir bei der Ausgabereihenfolge auch nicht wirklich weiter?
    Weiters krieg ich einfach die beiden Checkbox-Zeilen nicht untereinander ... da dachte ich, ev. kann man irgendwo ein <div> drumspannen ... nur wo?

    Danke schon mal
    bibib
    Angehängte Grafiken Angehängte Grafiken

  24. #24
    Contao-Yoda Avatar von MacKP
    Registriert seit
    15.06.2009.
    Ort
    Duisburg
    Beiträge
    13.293
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Hallo bibib,
    du kannst

    Code:
    <div class="fields">
        <?php echo $this->fields; ?>
    </div>
    ersetzen und das selber aufbauen. So in der Art:

    Code:
    <div class="fields">
    
    <div class="einezeile">
    <?php echo $this->firstname; ?> <?php echo $this->lastname; ?>
    </div> 
    
    <div class="email">
    <?php echo $this->email; ?>
    </div>
    
    </div>
    Und so weiter.
    Wie du jetz genau die Listenauswahl machen kannst musst du mal gucken. Das hab ich jetzt nicht im Kopf.
    Sowas kannst du eventuell aber mit
    Code:
    <pre>
    <?php $this->showTemplateVars(); ?>
    </pre>
    Nachschauen. Damit werden dir alle Variablen des Templates im Frontend ausgegeben.

    Vele Grüße
    Contao Pool | C-C-A | MetaModels | [Internetseite -> Mediendepot Ruhr]
    [Arbeitet bei -> Paus Design & Medien]
    "I can EXPLAIN it to you, but I can't UNDERSTAND it for you."

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

    Standard

    Vielen Dank!!! Da hab ich wieder mal kompliziert gedacht ...
    Das werd ich nachher gleich probieren!

    Grüße, bibib

Aktive Benutzer

Aktive Benutzer

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

Berechtigungen

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