Aller au contenu principal

Vorgabefeld beim kopieren zurücksetzen

Commentaires

3 commentaires

  • Holger Höbbel

    Hallo Dajana,

    das beim Kopieren eines Datensatzes alle Felder mit kopiert werden, ist ja erst einmal das gewünschte Verhalten. 
    Du brauchst für den Sonderfall, dass alles bis auf eine Eingabekomponente kopiert werden soll, also eine Möglichkeit festzustellen, dass der (durch das Kopieren) neu angelegte Datensatz nicht einfach nur bearbeitet wurde. Leider gibt es in den Regeln meines Wissens nach keine Standardmethode, um das direkt abzufragen. Insofern muss man hier etwas um die Ecke denken.

    Ich würde das so lösen:
    Um herauszufinden, ob ein Element kopiert wurde, benötigt man eine Information, die sich zwischen dem Original und der Kopie ändert. Bei Datensätzen ist das die GID. (bei Absätzen/Seiten wäre es die ID)
    Also würde ich eine neue CMS_INPUT_TEXT Eingabekomponente anlegen, in der diese GID gespeichert wird. Nennen wir sie "tt_gid". Diese muss ihre Werte aber speichern, also muss auch ein entsprechendes Textfeld in der Datenbanktabelle angelegt werden und die Eingabekomponente auf dieses gemappt werden!


    Nun brauchen wir eine Regel, die die Eingabekomponente mit der GID des Datensatzes füllt. Das Ganze automatisch aber erst beim Speichern des Datensatzes, damit die Regeln nicht zu früh ausgeführt wird und das von uns gewünschte Zurücksetzen der anderen Eingabekomponente möglicherweise verhindern würde.

    <RULE when="ONSAVE">
     <WITH>
     <PROPERTY name="GID" source="#global"/>
     </WITH>
     <DO>
     <PROPERTY name="VALUE" source="tt_gid"/>
     </DO>
    </RULE>

    Dann brauchen wir noch eine Regel, die die Eingabekomponente zurücksetzt, deren Inhalt nicht kopiert werden soll. Und zwar immer dann, wenn nicht die korrekte GID in der "tt_gid" Eingabekomponente steht.

    <RULE>
     <IF>
     <NOT>
     <EQUAL>
     <PROPERTY name="GID" source="#global"/>
     <PROPERTY name="VALUE" source="tt_gid"/>
     </EQUAL>
     </NOT>
     </IF>
     <WITH>
     <FALSE/>
     </WITH>
     <DO>
     <PROPERTY name="VALUE" source="csSent"/>
     </DO>
    </RULE>

     

    Anmerkung: Wenn alles so wie gewünscht funktioniert, dann sollte die technische Eingabekomponente noch versteckt werden, damit diese die Redakteure nicht stört.

    <RULE when="ONLOCK">
     <WITH>
     <FALSE/>
     </WITH>
     <DO>
     <PROPERTY name="VISIBLE" source="tt_gid"/>
     </DO>
    </RULE>

    Bitte den Regelcode kritisch betrachten, da ich das Ganze nicht ausprobiert habe. Die Antwort ist erst einmal nur dazu gedacht, eine mögliche Lösung aufzuzeigen :) 

    Viele Grüße
    Holger

    0
  • betrieb.eportale

    Hallo Holger,

    erstmal Danke für deine Unterstützung.

    Ich werde das mal so wie du vorgeschlagen hast umsetzten und gebe hier gerne Rückmeldung ob es funktioniert hat.

    Ich hab wohl zu unkompliziert gedacht :) aber so eine Regel für kopierte Elemente und Vorgabewerte wäre zu schön um wahr zu sein. Evtl. ist das etwas, dass man für ein künftiges FS Release mitnehmen kann? 

    Nochmal Danke und ich melde mich.

    VG Dajana

    0
  • Holger Höbbel

    Hallo Dajana,

    > Ich hab wohl zu unkompliziert gedacht :)

    Du hast einen Anwendungsfall, bei dem ich persönlich überhaupt nicht einschätzen kann, wie oft dieser in der Praxis benötigt wird.
    Wenn beim Kopieren von Datensätzen (oder Absätzen) in vielen Szenarien immer dieselben Eingabekomponenten geleert werden müssen, dann ist das ein fehlendes Feature.
    Wird das aber nur sehr selten so benötigt, so muss die etwas kompliziertere Regel oder eine Projektlösung (Skript bzw. Modul, über das der Datensatz kopiert werden kann) ausreichend sein.

    > Evtl. ist das etwas, dass man für ein künftiges FS Release mitnehmen kann?

    Bitte Änderungswünsche bitte unbedingt über "Submit idea" hier einstellen: https://firstspirit-portal.crownpeak.com/

    Dabei ist es sehr hilfreich, den entsprechenden Anwendungsfall zu beschreiben.

    Aufgrund solcher Feature Requests kann unser Produkt Management dann entscheiden, welche neuen Funktionen für zukünftige Versionen implementiert werden sollen.

    Viele Grüße
    Holger

    0

Vous devez vous connecter pour laisser un commentaire.