Charlotte_Koeni
I'm new here

Label per Skript erstellen

Hallo Zusammen,

kann man per Skript etwas als Beschreibung in die Labels eines Formulars hinzufügen?

Also in die Labels:

<LABELS>

        <LABEL lang="*"></LABEL>

</LABELS>

Oder kann man per Skript ein    <CMS_LABEL> erstellen und füllen?

Habe bisher noch nicht die richtige Methode/Klasse gefunden. Oder geht so etwas nicht?

Vielen Dank

Charlotte Baumann

0 Kudos
10 Replies
kohlbrecher
Crownpeak employee

Hallo Charlotte,

mit folgendem Skript hole ich mir alle Labels eines Formulars und änder diese. Wichtig ist, dass man dafür über den GomProvider gehen muss.

storeElement = context.getStoreElement();

template = storeElement.getTemplate();

gomProvider = template.getGomProvider();

iterator = gomProvider.forms().iterator();

while(iterator.hasNext()){

     langInfos = iterator.next().getLangInfos();

     it = langInfos.iterator();

     while(it.hasNext())

          langInfo = it.next();

          langInfo.setLabel("Hans");

}

Grüße

Jan

0 Kudos

Vielen Dank.

Damit kann ich weitermachen. Wobei ich gerne bei einem vorhandenen Label etwas dazu schreiben würde. Also bei setLabel() überschreibe ich wahrscheiblich das vorhandene Label. Evtl. müsste ich mir aber das vorhandene Label erst auslesen, dann verändern und dann wieder setzten. Das müsste gehen.

Noch lieber würde ich aber ein CMS_LABEL per Skript setzten.

Geht das?

Viele Grüße

Charlotte

0 Kudos

Hallo Charlotte,

ich habe es nicht ausprobiert aber der GomProvider hat eine Funktion

add(int index,

         E element)

, wenn du da ein Label übergibst, würde ich vermuten, dass ein Label hinzugefügt wird. Wenn es funktioniert, kannst du kurz ein Feedback geben? Wenn nicht natürlich auch. Smiley Wink

Grüße

Jan

0 Kudos

Hallo,

blöde Frage, aber wie übergibt man ein Label? Wie ist ein Label definiert?

Ich habe nun auch mal versucht mit "getLabel" die Labels auszulesen, aber es werden dabei die Labels der langInfos ausgelesen:

        <LANGINFO lang="*" label="Choose an image (dimensional drawing)"/>

Ich bräuchte aber bei einer FS_List nicht die LangInfos sondern das Label, das in der Übersicht angezeigt wird.

      <LABELS>
        <LABEL lang="*">

Gruß

Charlotte

0 Kudos

Hallo Charlotte,

ich bin ein wenig verwirrt, weil hier jetzt einmal von <LABELS> und einmal von <CMS_LABEL> die Rede ist. Ein <CMS_LABEL> ist ja einfach nur ein gestalterisches Element, um an eine beliebige Stelle im Formular eine beliebige Beschriftung hinzuzufügen. Ist es das was Du möchtest? Die <LABELS> in einer FS_LIST wiederum haben nichts mit dem CMS_LABEL zu tun, sondern können z.B. Werte aus dem ausgewählten Datensatz anzeigen, falls als Datasource "database" ausgewählt wurde.

Vielleicht kannst Du noch mal den konkreten Anwendungsfall schildern.

Viele Grüße

Donato

0 Kudos

Hallo,

ja dass Eine hat mit dem Anderen nichts zu run.

Aber ich würde eben gerne entwerder das eine ODER das andere "Label" per Script setzten.

Das Ziel ist etwas per Script zu setzten, was ein Redakteur nicht ändern kann. Wenn ich jetzt einfach etwas in ein Textfeld schreibe, könnte der Redakteur dieses einfach überschreiben. Ich möchte nur einen Hinweis setzten.

Entweder eben in die Übersicht einer FS_LIST also in die <LABELS> oder in den Absatz der FS_LIST als <CMS_LABEL>. Je nachdem was einfach ist bzw. was machbar ist.

Viele Grüße

Charlotte

0 Kudos

Hallo Charlotte,

wenn ich dich jetzt richtig verstanden habe, würde mein erster beschriebener Weg dein Problem schon lösen können. Ist dann zwar "nur" der Titel der FS_LIST der verändert wird und nicht die einzelnen LABELS aber da könnte schon ein Hinweis untergebracht werden.

Ein CMS_LABEL müsste bereits im Formular vorhanden sein, dann sollte auch der Text zu ändern sein.

Macht es denn nicht mehr Sinn, das über Berechtigungen zu regeln? Dem Redakteur kein Recht zu geben das Formular zu bearbeiten und einfach ein CMS_LABEL mit dem Hinweis ins Formular zu packen?

Grüße

Jan

0 Kudos

Hallo,

mein Script funktioniert so, dass es eine Datenbank Tabelle ausliest und für jeden Datensatz einen FS_List Eintrag erstellt. Immer wenn es ein Update in der Datenbank gibt, wird auch das Script gestartet und fügt einen neuen Eintrag hinzu, wenn ein neuer Datensatz hinzugekommen ist. Es kann aber auch sein, dass ein Datensatz mittlerweile gelöscht wurde. Wenn das der Fall ist, dann wird in meiner FS_List der entsprechende Datensatz nicht gelöscht, sondern als "Nicht mehr aktiv" markiert. Und genau darum geht es bei meiner Frage.

Ich würde gerne direkt im FS_LIST Eintrag  entweder ein CMS_LABEL setzten, so dass der Redakteur,  wenn er den Eintrag öffnet sofort diesen Hinweis sieht. Oder es eben bereits in der FS_List Übersicht erkennt.  Deswegen meine Frage, ob (und wie) man entweder die <LABELS> einer FS_LIST oder ein <CMS_LABEL> per Script setzen kann.

Momentan sieht meine "Lösung" so aus, dass ich eine entsprechend beschriftete Checkbox aktivere, wenn der Eintrag "inaktiv" ist. Wenn das der einfachste Weg ist, dann lass ich das jetzt so 🙂  Der Nachteil ist nur der, dass der Redakteur ausversehen das Häkchen dieser Checkboxen setzten könnte.

Viele Grüße

Charlotte

0 Kudos

Hallo Charlotte.

Erstelle eine Regel mit der der Wert der Checkbox geprüft wird. Die Regel blendet dann ein Label ein für den Fall dass die Checkbox gesetzt ist und aus wenn das nicht der Fall ist.

Die Checkbox kannst du dann auf hidden setzen, dann verstellt das auch niemand ausversehen.

Gruß,

Daniel