Du bist nicht angemeldet. Der Zugriff auf einige Boards wurde daher deaktiviert.

#26 06. April 2021 11:30

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.435

Re: FormBuilder-Daten nach LISE übernehmen ?

das Problem ist, dass das Feld "eMail" mir den Wert 'Array' zurückgibt

Dann hast Du da ein anderes Feld als ich.
Schau mal genau nach, was für einen Feld-Typ Du für die E-mail verwendest.
Es gibt da mehrere.
Bei einigen können per Komma getrennt mehrere Adressen angegeben werden.
Dadurch entsteht dieses Array.

Lass mal das Herausfiltern der E-mail weg.
Klappt es dann?
Bei mir ja.
D.h. an der Abfrage

{if $alias|stripos:"uhrzeit" !== false && ...

liegt es nicht.
Erst wenn ich Deine zusätzliche if-Bedingung mit dem herausfiltern der E-mail Adresse einbaue, dann klappt es nicht mehr.

EDIT: Wenn ich das richtig verstehe, willst Du E-mail Adressen nicht in der Listenansicht haben. Und leere Felder sollen mit -- angezeigt werden. Dann versuchs mal so...

{foreach from=$entry->fieldsbyalias item=value key=alias name=fldlist}    {* Schleife über alle Felder mittels Alias *}
{if $alias|stripos:"email" === false} {* keine email felder anzeigen *}
      <td>
         {if $value == '(nicht angegeben)' || ($alias|stripos:"uhrzeit" !== false && $entry->fields[$smarty.foreach.fldlist.index-1] == "(nicht angegeben)")}   {* entweder kein Wert oder String 'uhrzeit_' kommt im Alias vor UND Wert des zugehörigen Datums = "(nicht angegeben)" *}
           --
         {else} {* ansonsten einfach anzeigen *}
            {$value|escape}
         {/if}
      </td>
{/if}
{/foreach}

PS: nach wie vor bin ich der Meinung, wenn nichts angegeben wurde, sollte auch nichts gespeichert/angezeigt werden. Denn was ist, wenn der User tatsächlich den Text "(nichts angegeben)" oder "--" verwendet? Hat er dann nichts angegeben oder doch? Aber ich glaube das endet in einer philosophischen Grundsatzdikussion.


Module: GBFilePicker, AdvancedContent
Sicherheit: Beispiel .htaccess-Datei
CMSms 1.12 unter PHP 7:
cmsms-1.12.3.zip (inoffiziell - komplett inkl. Installer)
CMSms 1.12 unter PHP 8:
cmsms-1.12.4.zip (inoffiziell - komplett inkl. Installer)

Offline

#27 06. April 2021 12:33

Dancer62
Server-Pate
Ort: 26345 Bockhorn, Niedersachsen
Registriert: 08. November 2013
Beiträge: 414

Re: FormBuilder-Daten nach LISE übernehmen ?

NaN schrieb:

Schau mal genau nach, was für einen Feld-Typ Du für die E-mail verwendest.
Es gibt da mehrere.
Bei einigen können per Komma getrennt mehrere Adressen angegeben werden.

Bei mir heißt der Feldtyp "E-Mail-Adresse 'Von'" und ich kann auch nicht mehrere Adressen eingeben (das dürfte beim Feldtyp "E-Mail-Feld „Kopie senden an …“ (CC)" der Fall sein).

NaN schrieb:

Was hast Du bei Datum angegeben?

Der Feldtyp heißt "Datumsauswahl" und ich habe die Option "Voreingestellt leer (deaktiviert die Voreinstellung für das heutige Datum)" angekreuzt. Dadurch sollte ich (nach meinem Verständnis) ein leeres Datumsfeld erhalten, was bei der (ursprünglichen) Auswertung ja auch mit "(nicht angegeben)" angezeigt wird. Allerdings - ich habe es gerade nochmal ausprobiert - erhalte ich auch hier das gleiche Problem (nur eben mit "(nicht angegeben)" statt "--" und anschließendem "Leerfeld").

NaN schrieb:

Wenn bei einem Datum, das leer sein soll, nicht alle Felder leer sind (z.B. noch der Monat drinsteht)

Genau das ist für mich unlogisch : wenn der Wert des Feldes "(nicht angegeben)" ist (weil ja leer), warum ist dann trotzdem noch ein (leerer ?) Wert drin ? Was wird denn ausgewertet bzw. wie kann ich den Wert des Feldes prüfen und definitv auf "leer" bzw. "--" setzen ?


Man ist so alt, wie man sich fühlt...

Offline

#28 06. April 2021 12:50

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.435

Re: FormBuilder-Daten nach LISE übernehmen ?

Schau mal mein EDIT.
Hab den Beitrag in der Zwischenzeit nochmal komplett geändert, weil nichts von dem was ich ursprünglich geschrieben hatte, tatsächlich ursächlich war.

Feldtyp "E-Mail-Adresse 'Von'"

Ich verwende "*Ergebnisse per E-Mail an eine vom Besucher angegebene E-Mail-Adresse versenden".
Da hab ich die E-mail Funktion gleich mit dabei.
Und das Array-Problem nicht.


Module: GBFilePicker, AdvancedContent
Sicherheit: Beispiel .htaccess-Datei
CMSms 1.12 unter PHP 7:
cmsms-1.12.3.zip (inoffiziell - komplett inkl. Installer)
CMSms 1.12 unter PHP 8:
cmsms-1.12.4.zip (inoffiziell - komplett inkl. Installer)

Offline

#29 06. April 2021 13:08

Dancer62
Server-Pate
Ort: 26345 Bockhorn, Niedersachsen
Registriert: 08. November 2013
Beiträge: 414

Re: FormBuilder-Daten nach LISE übernehmen ?

NaN schrieb:

EDIT: Wenn ich das richtig verstehe, willst Du E-mail Adressen nicht in der Listenansicht haben. Und leere Felder sollen mit -- angezeigt werden.

Jein, es soll die eMail-Adresse nur einmal angezeigt werden (ich habe auch noch das Feld "eMail-Adresse bestätigen" drin) und weil die eMail-Adresse mit "Array" angezeigt, die Bestätigung aber die korrekte eMail-Adresse anzeigt, habe ich diesen 'Tausch' vorgenommen. Leere Felder sollen mit "--" angezeigt werden, weil das gegenüber "(nicht angegeben)" übersichtlicher und deutlich kürzer ist und somit Platz auf dem Bildschirm spart.

Ich habe jetzt mal die erste if-Abfrage verkürzt auf

Damit wird jetzt wieder alles korrekt angezeigt (ohne leeren Wert). Füge ich aber Deine zusätzliche Abfrage ein

{foreach from=$entry->fieldsbyalias item=value key=alias name=fldlist}
   {if $alias != "eMail_from"}
      <td>
         {if $value == '(nicht angegeben)' || ($alias|stripos:"uhrzeit" !== false && $entry->fields[$smarty.foreach.fldlist.index-1] == '(nicht angegeben)')}
            --
         {else}
            {$value|escape}
         {/if}
      </td>
   {/if}
{/foreach}

so hängt sich FormBuilder auf, d.h. er hat irgendwo einen Fehler entdeckt.


Man ist so alt, wie man sich fühlt...

Offline

#30 06. April 2021 13:13

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.435

Re: FormBuilder-Daten nach LISE übernehmen ?

d.h. er hat irgendwo einen Fehler entdeckt.

Der da lautet???

Kannst Du Dein Formular exportieren und hier hochladen?
(Oder per Mail schicken?)
Wir basteln hier an einem Template mit unterschiedlichen Formularen.
Das kann nicht wirklich zielführend sein.
Jedes Mal wenn ich ein Problem zu lösen glaube, kommt ein neues Detail hinzu.
Erst waren es mehrere Termine, jetzt sind es mehrere E-mail Adressen.
Ich brauche schon die ganze Story, um da für eine Lösung mitdenken zu können.


Module: GBFilePicker, AdvancedContent
Sicherheit: Beispiel .htaccess-Datei
CMSms 1.12 unter PHP 7:
cmsms-1.12.3.zip (inoffiziell - komplett inkl. Installer)
CMSms 1.12 unter PHP 8:
cmsms-1.12.4.zip (inoffiziell - komplett inkl. Installer)

Offline

#31 06. April 2021 13:20

Dancer62
Server-Pate
Ort: 26345 Bockhorn, Niedersachsen
Registriert: 08. November 2013
Beiträge: 414

Re: FormBuilder-Daten nach LISE übernehmen ?

Ok, ich habe jetzt mal das eigentliche Formular und das "Listen-Template (Administrator)" (ist mit Notepad++ erstellt worden) angehängt.

Beitrag geändert von Dancer62 (06. April 2021 13:26)


Man ist so alt, wie man sich fühlt...

Offline

#32 06. April 2021 13:21

Dancer62
Server-Pate
Ort: 26345 Bockhorn, Niedersachsen
Registriert: 08. November 2013
Beiträge: 414

Re: FormBuilder-Daten nach LISE übernehmen ?

...und hier das "Listen-Template (Administartor)"


Man ist so alt, wie man sich fühlt...

Offline

#33 06. April 2021 14:26

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.435

Re: FormBuilder-Daten nach LISE übernehmen ?

Wusst ich's doch!
Es liegt an Deinem Formular.
Naja, und den Modulen ...

Erst erkläre ich hier groß, dass man beim Index darauf achten muss, dass der mit 0 beginnt und so, und dass der sich ändert und nicht immer alle Felder beinhaltet ... , dann überrede ich Dich, Aliases zu verwenden - und dann muss ich feststellen, dass man, wenn man mit Aliases und Index arbeiten will, wirklich ALLEN Feldern ein Alias geben muss, weil sonst das Array "fieldsbyalias" nicht alle Felder beinhaltet - sondern nur die mit Alias.

Nun hast Du aber an erster Stelle noch ein Feld vom Typ CSRF-Token. Diesem Feld kann man überhaupt kein Alias geben.

Ergo haben wir im Array "fields" mehr Felder drin als im Array "fieldsbyalias". Dadurch stimmt der Index der Foreach-Schleife beim Durchlaufen des assoziativen Array "fieldsbyalias" nicht mit den Indizes des indizierten Arrays "fields" überein.  roll

Ergo:

{$entry->fields[$smarty.foreach.fldlist.index-1]}

Gibt in Deinem Falle nicht das vorherige Element aus, sondern das "vor-vorherige".
Da muss man erstmal drauf kommen.
Lösung in diesem Fall, entweder das CSRF-Feld nach ganz unten packen, oder das "-1" beim Zugriff auf den vorherigen Index rausnehmen. Aktueller Index in der Foreach-Schleife bei "fieldsbyalias" entspricht dann bereits dem vorherigen Index in "fields".

Jetzt verstehe ich auch das Array-Problem bei der Ausgabe der E-mail.
Im E-mail Feld werden zwei Daten gespeichert. Einmal die Adresse und einmal die Checkbox, dass man an diese Adresse eine Kopie der Daten erhalten möchte.
feld[0] = adresse
feld[1] = checkbox
Da müsste man bei der Ausgabe also nochmal prüfen, ob es sich um ein "E-Mail-Von" Feld handelt und zur Sicherheit evtl. noch ob es ein Array ist.

Da wären wir mit der urpsünglichen Idee - mit der Hilfsvariable {$show_time} - zwar vielleicht weniger elegant aber doch irgendwie schneller am Ziel gewesen.  lol


Module: GBFilePicker, AdvancedContent
Sicherheit: Beispiel .htaccess-Datei
CMSms 1.12 unter PHP 7:
cmsms-1.12.3.zip (inoffiziell - komplett inkl. Installer)
CMSms 1.12 unter PHP 8:
cmsms-1.12.4.zip (inoffiziell - komplett inkl. Installer)

Offline

#34 06. April 2021 16:36

Dancer62
Server-Pate
Ort: 26345 Bockhorn, Niedersachsen
Registriert: 08. November 2013
Beiträge: 414

Re: FormBuilder-Daten nach LISE übernehmen ?

Jetzt weiß ich auch, warum ich mir sicher war, dass der Index eben nicht immer mit "0" beginnt :

Smarty-Handbuch schrieb:

Foreach-Loops haben auch eigene Variablen welche die Foreach-Eigenschaften enthalten. Diese werden wie folgt ausgewiesen:
{$smarty.foreach.foreachname.varname}. foreachname ist der Name der als name Attribut von Foreach übergeben wurde.
iteration  gibt die aktuelle iteration aus
iteration beginnt immer mit 1 und wird danach bei jedem durchgang um 1 inkrementiert.

und da Du mir ja sagtest

NaN schrieb:
Dancer62 schrieb:

Bei einer 'foreach'-Schleife gibt es zwar die Eigenschaft 'iteration'

Ja, oder auch ".index". Das gibt aber leider nur die aktuelle Iteration/den aktuellen Index aus.

war ich der Meinung, dass das dann ja passt... big_smile

Ich hatte zuerst versucht, den CSRF-Token ganz ans Ende des Formulars zu verschieben, obwohl die Modulhilfe vom FormBuilder sagt

We recommend the use of CSRF in every form unless the form is used to submit to a 3rd party API. The field should be the topmost field for efficiency.

Aber dann war plötzlich die Reihenfolge des Tabellenheader durcheinander. Jetzt habe ich beim Index das "-1" weggelassen, und

schon funktioniert es !!! Danke NaN !!!

Beitrag geändert von Dancer62 (06. April 2021 17:04)


Man ist so alt, wie man sich fühlt...

Offline

#35 06. April 2021 18:52

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.435

Re: FormBuilder-Daten nach LISE übernehmen ?

Sehr schön.
Nur mal kurz was anmerken:

iteration beginnt immer mit 1 und wird danach bei jedem durchgang um 1 inkrementiert.

Iteration und Index sind zwei verschiedene Sachen.
Iteration beginnt mit 1.
Index mit 0.
Hätten wir mir Iteration gearbeitet, hätte ich daher mit -2 gerechnet um an das vorherige Element zu kommen.
Das Problem war aber doch, dass wir nicht wussten, dass die beiden Arrays nicht übereinstimmen und wir daher prinzipiell anders rechnen müssen.


Module: GBFilePicker, AdvancedContent
Sicherheit: Beispiel .htaccess-Datei
CMSms 1.12 unter PHP 7:
cmsms-1.12.3.zip (inoffiziell - komplett inkl. Installer)
CMSms 1.12 unter PHP 8:
cmsms-1.12.4.zip (inoffiziell - komplett inkl. Installer)

Offline

#36 06. April 2021 20:10

Dancer62
Server-Pate
Ort: 26345 Bockhorn, Niedersachsen
Registriert: 08. November 2013
Beiträge: 414

Re: FormBuilder-Daten nach LISE übernehmen ?

Trotzdem, danke NaN.

Ich weiß es sehr zu schätzen, dass Du Deine (Frei)Zeit opferst und Dein Wissen mit uns teilst, obwohl Du ja nebenbei auch arbeiten musst. Ich habe jetzt wieder Einiges gelernt und hoffe, dass ich es in der Zukunft auch ein bisschen weitergeben kann. Schließlich will ich nicht nur nehmen, sondern auch (zurück)geben.


Man ist so alt, wie man sich fühlt...

Offline

#37 08. April 2021 09:38

Dancer62
Server-Pate
Ort: 26345 Bockhorn, Niedersachsen
Registriert: 08. November 2013
Beiträge: 414

Re: FormBuilder-Daten nach LISE übernehmen ?

Nur noch eine Kleinigkeit:
ich wollte die Tabellenüberschrift 'schön machen' und aus "Deine eMail-Adresse" den String "eMail-Adresse" machen. Ich hatte versucht das so zu realisieren

<th>
    {if $smarty.section.namelist.index != "4"}     {* Überschrift von "Deine eMail-Adresse" *}
        {$names[$smarty.section.namelist.index]}
    {else}
        <?php
        substr($names[$smarty.section.namelist.index], 6);
        ?>
    {/if}
</th>

aber leider gibt er mir da nur eine (leere ?) Zeichenkette aus. Im UDT funktioniert das. Kennt PHP die Variable nicht, so dass ich sie vorher zuweisen muss oder woran liegt es ???


Man ist so alt, wie man sich fühlt...

Offline

#38 08. April 2021 14:21

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.435

Re: FormBuilder-Daten nach LISE übernehmen ?

Du vermischst hier zwei Sachen.
Du kannst nicht einfach PHP-Code in einem Smarty Template schreiben.
Das wird i.d.R. garnicht erst ausgeführt.
(Sicherheit und so)
Daher ja der Umweg über den UDT.
Dem UDT musst Du dann aber noch die Variable übergeben.
(Scope und so)

Aber Du kannst PHP-Funktionen in Smarty auf Templatevariablen anwenden.
Sowohl als Funktion als auch als Modifikator.
Funktion:

{substr($names[$smarty.section.namelist.index], 6)}

Modifikator:

{$names[$smarty.section.namelist.index]|substr:6}

Module: GBFilePicker, AdvancedContent
Sicherheit: Beispiel .htaccess-Datei
CMSms 1.12 unter PHP 7:
cmsms-1.12.3.zip (inoffiziell - komplett inkl. Installer)
CMSms 1.12 unter PHP 8:
cmsms-1.12.4.zip (inoffiziell - komplett inkl. Installer)

Offline

#39 08. April 2021 15:07

Dancer62
Server-Pate
Ort: 26345 Bockhorn, Niedersachsen
Registriert: 08. November 2013
Beiträge: 414

Re: FormBuilder-Daten nach LISE übernehmen ?

Kaum macht man's richtig - schon funktioniert's... smile

Danke NaN, ich glaube, ich sollte vielleicht langsam auch PHP lernen, damit ich nicht derart "dumme" Fehler mache.

Beitrag geändert von Dancer62 (11. April 2021 13:23)


Man ist so alt, wie man sich fühlt...

Offline