Klasse zum leichteren Bearbeiten des Fontend Editing Templates

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • Timo29
    Contao-Nutzer
    • 12.11.2009
    • 73

    #1

    Klasse zum leichteren Bearbeiten des Fontend Editing Templates

    Hallo Zusammen,

    Ich hatte ein paar Probleme mit dem anpassen des Formulars im Frontend Editing. Und zwar findet sich das ganze Formlar in einem Array Feld "field" wodurch die Änderung sehr schwer ist. Erstens passte für mein Vorhaben die Tabellenstruktur nicht so ganz und zweitens wolle ich einzelne Felder mit einem Fieldset Gruppieren können, was allerdings auch schwer ist wenn alles in einem Array Feld steht...

    Deswegen hat mein Kollege Jens Bernhardt eine Klasse programmiert die mir viel Arbeit abnimmt.

    Dadurch kann ich das Template aufbauen wie ich möchte und mit der Funktion einzelne Felder einfügen.

    Beispiel: (catalog_edit.tpl)
    PHP-Code:
    <?php 
    require_once('tpl_lib_mix.php'); 
    
    $tag_hiding_obj = new tag_hiding_class(); 
    $tag_hiding_obj->hiding_prepare( $this->field );
    ?>
    <fieldset>
    <legend>Angaben zur Person</legend>
    <div class="formrow">
    <div class="formfield">
        <div class="formlabel"><?php echo $tag_hiding_obj->get_param_tags( 'family', 0 ); ?> </div><div class="formvalue"><?php echo $tag_hiding_obj->get_param_tags( 'family' ); ?></div>
    </div>
    <div class="formfield">
        <div class="formlabel"><?php echo $tag_hiding_obj->get_param_tags( 'childreen', 0 ); ?> </div><div class="formvalue"><?php echo $tag_hiding_obj->get_param_tags( 'childreen' ); ?></div>
    </div>
    </div>
    </fieldset>
    mit <?php echo $tag_hiding_obj->get_param_tags( 'family', 0 ); ?> holt er das Label
    und mit <?php echo $tag_hiding_obj->get_param_tags( 'family' ); ?> das Formularfeld inklusive dem derzeitigen Value.
    "family" ersetzt man einfach mit dem jeweiligen Tabellenfeld und schon kann man sich ein richtig schönes Formular basteln.

    Die Klasse kann auch noch die bestehende Tabellenstruktur in eine Div Struktur umwandeln...

    Alle Dateien und eine kleine Doku findet Ihr im Anhang.

    Wer es gebrauchen kann, darf es gerne verwenden.

    Achja, das ganze war eine echte Nacht und Nebel Aktion, weswegen noch viele Kommentare im Quelltext fehlen... Aber es funktioniert.

    Gruß
    Timo

    *EDIT*
    Ich habe mal eine neue Version hochgeladen... Am besten zukünftig diese verwenden, da dort einige "Fehler" behoben wurden! Dateiname: tpl_lib_mix - Auszug #4-2.zip
    Angehängte Dateien
    Zuletzt geändert von Timo29; 10.12.2010, 13:51.
  • MacKP
    Contao-Yoda
    • 15.06.2009
    • 13315

    #2
    Hallo Timo29,
    super. Danke dafür
    Ich muss allerdings zugeben das ich das noch nicht getestet habe.. weiß auch noch nicht wann ich dazu komme. Aber magst das vllt auch ins Ticket System bringen, damit das aufgenommen werden kann? Oder / Und ins Wiki packen auf eine eigene Seite im Catalog Bereich?

    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."

    Kommentar

    • Timo29
      Contao-Nutzer
      • 12.11.2009
      • 73

      #3
      Hallo MacKP,

      ich muss noch bis Montag ein Projekt fertig machen und danach kann ich das gerne mal machen. Allerdings habe ich das noch nie gemacht, weshalb ich mir das mal genau anschauen muss. Aber ich denke ich kriege das hin

      Gruß
      Timo

      Kommentar

      • andreasisaak
        Contao-Urgestein
        • 07.07.2009
        • 4107

        #4
        Wow, damit lässt sich wirklich sehr gut arbeiten. Ich konnte so innerhalb von 10min komplett auf die lästigen Tabellen verzichten und meine vorgefertige Formularstruktur verwenden.

        ABER ...

        wie bekomme ich das Sicherheitscaptcha damit in das Template? Meine Felder kann ich ja via der Bezeichnung in mySQL herausfinden - beim Captcha ist mir das noch nicht gelungen.

        Kommentar

        • andreasisaak
          Contao-Urgestein
          • 07.07.2009
          • 4107

          #5
          Einen kleinen Fehler habe ich noch gefunden.

          Wie kann ich bei Checkboxen das beschreibende Label der Funktion (nicht der Checkbox) einfügen? Somit hätte ich dann ja 2 Labels.
          Wenn ich einen Fehler hervorrufe, z.B. fülle ich ein Pflichtfeld nicht aus oder so, ist das 2te Label aufeinmal da :-)

          Ich hoffe du verstehst was ich meine.

          EDIT:

          Wenn ich via Frontend-Editing einen neuen Eintrag hinzufüge, ist das Label da. Aber wenn ich einen bestehenden Eintrag ändere, sind die 2ten Labels nicht vorhanden?! Da steckt auf jeden Fall noch der Wurm drinne
          Zuletzt geändert von andreasisaak; 09.08.2010, 16:19.

          Kommentar

          • Timo29
            Contao-Nutzer
            • 12.11.2009
            • 73

            #6
            Hi Jared,

            hast Du mal ein Beispiel wo ich mir das anschauen kann?

            Gruß
            Timo

            Kommentar

            • andreasisaak
              Contao-Urgestein
              • 07.07.2009
              • 4107

              #7
              Nein leider nicht da ich nur lokal arbeite. Sorry.
              Vielleicht kann es jemand anderer bestätigen.

              Kommentar

              • Timo29
                Contao-Nutzer
                • 12.11.2009
                • 73

                #8
                hmmm, ich bräuchte ein beispiel um den Fehler genau sehen zu können...
                Kann das noch jemand bestätigen, oder hat vielleicht jemand ein Beispiel für mich? Dann leite ich das mal an Jens weiter und wie ich den einschätze, korrigiert der das ziemlich fix...

                Kommentar

                • Timo29
                  Contao-Nutzer
                  • 12.11.2009
                  • 73

                  #9
                  das Sicherheitscaptcha habe ich gar nicht bedacht, weil ich eh nur im Internen Bereich einen Katalog Edit zulasse. Kann aber sicher recht zügig eingefügt werden.

                  Kommentar

                  • andreasisaak
                    Contao-Urgestein
                    • 07.07.2009
                    • 4107

                    #10
                    Na ja das Sicherheitscaptcha ist mir auch nur aufgefallen weil ich es in Contao 2.9 nicht deaktivieren kann.

                    Kommentar

                    • Timo29
                      Contao-Nutzer
                      • 12.11.2009
                      • 73

                      #11
                      Nicht??? bei mir geht das...

                      Kommentar

                      • andreasisaak
                        Contao-Urgestein
                        • 07.07.2009
                        • 4107

                        #12
                        Könntest du dich in dem dafür aufgemachten Thread melden?



                        Mir fehlt die Option zum Deaktivieren des Sicherheitscaptchas leider im Backend. Und ich glaube nicht das es mit meiner Installation zusammenhängt - bzw sie sich irgendwie von anderen unterscheidet.

                        Kommentar

                        • scribble
                          Contao-Nutzer
                          • 04.09.2009
                          • 174

                          #13
                          Funktioniert toll - so machen die Formulare noch mehr Freude. Wie kann ich die Vorschaubilder bei Dateifeldern mit Eurer Klasse anzeigen?

                          Vielen Dank für diese tolle Klasse.

                          Sam

                          Kommentar

                          • Blue_Thunder
                            Contao-Nutzer
                            • 31.08.2010
                            • 7

                            #14
                            Neue Version + Antworten auf ältere Fragen

                            Hallo alle miteinander.

                            Generell ein wenig zur Klarstellung bezüglich der Lib, die "Tim29" euch vorgestellt hat.
                            1. Sie lässt sich für "Catalog Edit", aber z.B. auch "Benutzer → Persönliche Daten" verwenden.
                            2. Sie diente eigentlich / ursprünglich dem Zweck, einzelne Spalten auszublenden indem sie in input type="hidden" Felder umgewandelt werden.
                            3. Sie diente eigentlich / ursprünglich dem Zweck, an die Werte der Felder / Attribute zu gelangen, um z.B. Abfragen durchführen zu können.

                            @jared:
                            Das "Sicherheitscaptcha" kannst Du ebenso auslesen wie andere Felder auch, musst nur den gegenwärtig verwendeten Namen in Erfahrung bringen. Da diese Klasse für eher generelle Verwendung gedacht ist, gibt es dazu keine gesonderte Methode. Da zumindest die Struktur dieses Feldnamen immer gleich scheint, gibt es jedoch einen recht simplen Trick:
                            PHP-Code:
                            $tag_hiding_obj = new tag_hiding_class();
                            $tag_hiding_obj->hiding_prepare( $this->field );
                            
                            $protect_name = "";
                            $field_array = $tag_hiding_obj->get_param_list();
                            foreach( $field_array as $fieldname )
                              if( preg_match( "/^[a-f0-9]{33}$/" , $fieldname ) ) // Struktur = Captcha-Name ?
                              {
                                $protect_name = $fieldname;
                                break; // foreach abbrechen da Ergebnis gefunden.
                              };
                            ...
                            if ( $protect_name ) echo  $tag_hiding_obj->get_param_tags( $protect_name );
                              else echo "Nada!"; // ... sofern ein "else"-Zweig benötigt wird. 
                            
                            @jared und @scribble:
                            Was weitere Felder betrifft, so z.B. die Fehlermeldung, Bilder, etc:
                            Diese müssten über eine Anpassung des "Zeilen Index" in "string get_param_tags( [Feldname], [Zeilen Index]=1 )" adressierbar sein ( z.B. index "2" ? ).
                            Unerwünschte Tags kann man auch recht einfach mittels "preg_replace" entfernen, oder aber mittels einem "explode" über das Label-Tag auch in ein Array zerlegen um es schließlich über den Index zu adressieren.
                            Für Fortgeschrittene: Die Lib liefert ebenso die Klasse "tag_class" mit, welche es erlaubt, html/xhtml-Strukturen in ein Array zu zerlegen sowie wieder zusammenzubasteln; eine Manipulation dieses Arrays ist immerhin einiges leichter als hier "zu Fuß" zu arbeiten - leider kann ich euch aber derzeit keine Doku dazu anbieten.


                            Die aktuelle Version der Lib/Klasse "tpl_lib_mix" findet sich hier: tpl_lib_mix - Auszug #2.zip
                            Ergänzt / Geändert wurde ...
                            1. Lesen der Attribute von u.A. input type="text" oder "select".
                            2. Ändern der Attribute von u.A. input type="text" oder "select" um z.B. Styles bzw. Klassen oder z.B. onclick-Ereignisse einzufügen.
                            3. Einige neue Beispiele für Dokumentation.
                            4. Stand-Alone ausführbarer Beispielcode.
                            5. Ein Beispiel für Sicherheitsabfrage ( captcha ) in Doku ( siehe oben ).

                            Ansonsten ... frohes Schaffen ! :-)

                            Kommentar

                            • niqo
                              Contao-Nutzer
                              • 29.10.2010
                              • 17

                              #15
                              Was weitere Felder betrifft, so z.B. die Fehlermeldung, Bilder, etc:
                              Diese müssten über eine Anpassung des "Zeilen Index" in "string get_param_tags( [Feldname], [Zeilen Index]=1 )" adressierbar sein ( z.B. index "2" ? ).
                              Leider hatte eine Änderung des "Zeilen Index" keinen Erfolg gebraucht. Es wäre super wenn der User seine bspw. hoch geladenen Bilder in der Bearbeitung sehen und evtl wieder löschen kann. Gibt es dafür schon getestete Lösungsansätze?

                              Vielen Dank im Voraus ;-)

                              Kommentar

                              Lädt...