Avisota Formularfelder anpassen - value ändern

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • cheche
    Contao-Nutzer
    • 08.03.2010
    • 105

    #1

    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
  • xchs
    Administrator
    • 19.06.2009
    • 14682

    #2
    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.
    Zuletzt geändert von xchs; 24.11.2011, 14:02.
    Contao Community Administrator

    [Unterstützungsmöglichkeiten]
    sigpic

    Kommentar

    • cheche
      Contao-Nutzer
      • 08.03.2010
      • 105

      #3
      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.

      Kommentar

      • tril
        Contao-Urgestein
        • 07.01.2010
        • 2939

        #4
        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.

        Kommentar

        • cheche
          Contao-Nutzer
          • 08.03.2010
          • 105

          #5
          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

          Kommentar

          • tril
            Contao-Urgestein
            • 07.01.2010
            • 2939

            #6
            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.



            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> 
            

            Kommentar

            • cheche
              Contao-Nutzer
              • 08.03.2010
              • 105

              #7
              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">
              
              <p class="preamble">Melden Sie sich zu unserem Newsletter an.</p>
              
              <div class="fields">
                <label class="mandatory" for="ctrl_email"><span class="invisible">Pflichtfeld</span> E-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

              Kommentar

              • tril
                Contao-Urgestein
                • 07.01.2010
                • 2939

                #8
                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>

                Kommentar

                • cheche
                  Contao-Nutzer
                  • 08.03.2010
                  • 105

                  #9
                  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

                  Kommentar

                  • tril
                    Contao-Urgestein
                    • 07.01.2010
                    • 2939

                    #10
                    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

                    Kommentar

                    • franksy
                      Contao-Nutzer
                      • 17.05.2011
                      • 6

                      #11
                      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.

                      Kommentar

                      • tril
                        Contao-Urgestein
                        • 07.01.2010
                        • 2939

                        #12
                        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

                        Kommentar

                        • franksy
                          Contao-Nutzer
                          • 17.05.2011
                          • 6

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

                          Kommentar

                          • tril
                            Contao-Urgestein
                            • 07.01.2010
                            • 2939

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

                            Kommentar

                            • franksy
                              Contao-Nutzer
                              • 17.05.2011
                              • 6

                              #15
                              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 https://www.deineseite.com/newslette...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.

                              Kommentar

                              Lädt...