Hallo Community,
Ist-Situation
Ich habe eine Datenquelle, in dieser Datenquelle gibt es ein Bild (tt_picture) und einen Alternativtext (tt_alternativeText).
Soll-Situation
1. Neben dem Alternativfeld, dass manuell befüllt werden soll, soll auch ein Knopf sein, der die Metainformation des Bildes holt und dann in das Feld tt_alternativeText für jede Sprache schreibt.
2. Zusätzlich soll wenn ein Bild eingefügt wird, automatisch der Alt-Text aus den Metadaten in das tt_alternativeText geschrieben werden.
Problem
Kann ich durch Klick auf den FS_Button in der Sprache Deutsch automatisch den Wert, der hier gesetzt wird auch für alle anderen Sprachen übernehmen?
Momentan kann ich über das Skript für jede Sprache die Eingabekomponente herausholen, das Speichern funktioniert aber leider weder für die Komponente, wo ich mich gerade befinde, noch für alle anderen Sprachen.
Der einzige Lösungsansatz zu 2., der mir einfällt wäre, einen ValueService über eine on_event-Regel einzubinden, nur leider weiß ich nicht so recht, wie ich hier an das aktuelle Element komme.
FS_Button:
<FS_BUTTON
name="tt_alt_text_metadata_teaser"
alwaysEnabled="yes"
noBreak="yes"
onClick="script:getalttextfrommetadata"
style="button"
useLanguages="no">
<LANGINFOS>
<LANGINFO lang="*" label="Get Alt-Text from Metainformation"/>
<LANGINFO lang="DE" label="Alt-Text aus Metadaten"/>
</LANGINFOS>
<PARAMS>
<PARAM name="altText">#field.tt_alternativeText</PARAM>
<PARAM name="media">#field.tt_video</PARAM>
</PARAMS>
</FS_BUTTON>
Hier ein Auszug aus dem Skript:
languages = element.getProject().getLanguages();
formData = element.getFormData();
for(lang : languages){
if(lang.getAbbreviation().equals("DE")){
altTextDE = formData.get(lang, altText.getName());
}else if(lang.getAbbreviation().equals("EN")){
altTextEN = formData.get(lang, altText.getName());
}else if(lang.getAbbreviation().equals("FR")){
altTextFR = formData.get(lang, altText.getName());
}else if(lang.getAbbreviation().equals("ES")){
altTextES = formData.get(lang, altText.getName());
}else if(lang.getAbbreviation().equals("PT")){
altTextPT = formData.get(lang, altText.getName());
}
}
//Alt-Text aus den Metadaten des Bildes
altOfMedia = media.media.getMetaFormData().get(masterLanguage, "meta_pictureAlternativeText").get();
//Speichern des Wertes, leider wird aber nichts in das Feld gespeichert
altTextDE.set(altOfMedia.toString());
altTextEN.set(altOfMedia.toString());
altTextFR.set(altOfMedia.toString());
altTextES.set(altOfMedia.toString());
altTextPT.set(altOfMedia.toString());
element.setFormData(formData);
element.save();
//Alternative, die nur für das akuelle Feld funktioniert (mit Übergabewert des FS_Buttons)
altText.set(altOfMedia.toString());