Aller au contenu principal

FS_LIST-Entity bei Erstellung mit Werten aus Vaterformular befüllen

Commentaires

3 commentaires

  • Zendesk API User
    Author: thmarx - 11/14/2013 10:45

    Hallo Nils,

    ich bin mir ziemlich sicher, dass du es mit den Regeln alleine nicht gehen wird.

    Ich glaube, der Ansatz mit dem FS_BUTTON und einem Skript ist der vielversprechendste.

    Viele Grüße

    Thorsten

    0
  • Zendesk API User
    Author: MichaelaReydt - 12/5/2013 9:59

    Hallo Nils,

    ist diese Frage noch aktuell und benötigst du weitere Hilfe oder konnte Thorstens Antwort Deine Frage bereits beantworten?

    Solltest du inzwischen eine eigene Lösung gefunden haben, wäre es nett, wenn du diese hier beschreibst, um sie auch den anderen Community-Teilnehmern zur Verfügung zu stellen.

    Viele Grüße

    Michaela

    0
  • Zendesk API User
    Author: Anonymous - 2/12/2014 9:40

    Das Problems wurde nun wie folgt gelöst:

    FS_BUTTON innerhalb des Kind-Tabellentemplates:

    <FS_BUTTON name="cs_importStoryTextButton" onClick="class:ocm-copy-story-text-into-teaser" useLanguages="no">

      <LANGINFOS>

        <LANGINFO lang="*" label="Texte aus Beitrag übernehmen"/>

      </LANGINFOS>

      <PARAMS>

        <PARAM name="field1">#field.cs_kicker</PARAM>

        <PARAM name="field2">#field.cs_headline</PARAM>

        [...]

      </PARAMS>

    </FS_BUTTON>

    ocm-copy-story-text-into-teaser ist dabei per <public>-Komponente innerhalb der module.xml mit einer ausgelagerten Executable (bzw. unserem Wrapper AbstractCommonExecutable) verknüpft:

    public class CopyStoryTextIntoTeaser extends AbstractCommonExecutable {

        @Override

        protected Object execute() {

            Dataset teaser = (Dataset) getParams().get("element");

            Entity story = (Entity) teaser.getEntity().get("stories");

            FormData storyFormData = getStoryTemplate().getDataset(story).getFormData();

            setFieldValue(storyFormData, "cs_kicker", "field1");

            setFieldValue(storyFormData, "cs_headline", "field2");

            [...]

            return null;

        }

        private TableTemplate getStoryTemplate() {

            StoreAgent storeAgent = getContext().requireSpecialist(StoreAgent.TYPE);

            Store templateStore = storeAgent.getStore(Store.Type.TEMPLATESTORE);

            TableTemplate template = (TableTemplate) templateStore.getStoreElement(Constants.SCHEMA_NAME + "." + EntityType.stories.getTableName(), IDProvider.UidType.TEMPLATESTORE_SCHEMA);

            return template;

        }

        private void setFieldValue(final FormData storyFormData, final String storyFieldName, final String teaserFieldName) {

            if (getParams().containsKey(teaserFieldName)) {

                FormField<?> field = (FormField<?>) getParams().get(teaserFieldName);

                if (field != null && field.isEmpty()) {

                    field.set(storyFormData.get(getMasterLanguage(), storyFieldName).get());

                }

            }

        }

    }

    0

Vous devez vous connecter pour laisser un commentaire.