Sebastian1
I'm new here

WebClient5 Datensatz anlegen und das Verhalten danach

Jump to solution

Hallo,

für eine eigenes Seitentemplate habe ich für den Webclient einen fsbutton eingebaut, mit dem ich einen Datensatz in den Pressemitteilungen (Demoprojekt) anlegen kann.

<span$CMS_VALUE(fsbutton(editorName:"pt_createPr",parameter:{"content2": "pressreleases"}))$>/span>

Nachdem ich im Dialog auf Speichern klicke, wird allerdings die Vorschauseite der Pressemitteilungen angezeit. D.h. es gibt einen redirect von meiner eigenen Seite zur Seite mit der neu angelegten Pressemitteilung.

Kann man dieses Verhalten dahingehend ändern, dass nach der Speicherung des neuen Datensatzes der WebClient auf der Seite bleibt, wo sich auch der fsbutton befindet?

Viele Grüße,

Sebastian


0 Kudos
1 Solution

Accepted Solutions

Hallo Sebastian,

Wenn Du als zweiten Parameter der .perform()-Methode eine Liste ALLER Sprachen übergibst sollte es so funktionieren wie gewünscht. In Deinem aktuellen Code übergibst Du wie es scheint nur eine Liste mit EINER Sprache - dadurch steht auch nur diese im Formular zur Verfügung.

Viele Grüße

Michael

View solution in original post

0 Kudos
5 Replies
rednoss
I'm new here

Hallo Sebastian,

wie sieht denn Dein Skript aus? Ich habe deinen Anwendungsfall mit diesem Skript nachgebaut und hier wird ein Datensatz ohne anschließenden redirect erzeugt.

Viele Grüße,

René

0 Kudos

Hallo Rene,

ich nutze an der Stelle kein eigenes Script, sondern eine der vorhandenen Klick-Handler Klassen (NewContent)

      <FS_BUTTON

        name="pt_createPr"

        hidden="yes"

        icon="fs:new"

        onClick="class:NewContent"

        style="firstspirit"

        useLanguages="no">

        <LANGINFOS>

          <LANGINFO lang="*" label="Create news entry"/>

          <LANGINFO lang="DE" label="Meldung anlegen"/>

        </LANGINFOS>

      </FS_BUTTON>

D.h. ich müsste an dieser Stelle eine eigene Hanlder-Klasse implementieren?

0 Kudos

Hallo Sebastian,

die Klasse NewContent ist so implementiert, dass ein redirect stattfindet wenn ein neuer Datensatz angelegt wird. Als Alternative bleibt dir demnach ein eigenes Skript bzw. eine eigene Klasse zu schreiben ohne redirect.

Grüße,

René

Hallo,

ich bin inzwischen mal dazu gekommen eine eigene Handler-Klasse zu implementieren, die genau meine Wünsche erfüllt.

Es gibt allerdings noch ein kleines Problem beim Anzeigen des Formulars. Dazu erst einmal mein FS_BUTTON

<FS_BUTTON

    name="pt_createNewsEntry"

    hidden="yes"

    icon="fs:new"

    onClick="class:Content2ToListAppender"

    style="firstspirit"

    useLanguages="no">

    <LANGINFOS>

      <LANGINFO lang="*" label="Create news entry and append to list"/>

      <LANGINFO lang="DE" label="Meldung anlegen und hinzufügen"/>

    </LANGINFOS>

    <PARAMS>

      <PARAM name="content2">pressreleases</PARAM>

      <PARAM name="appendToList">db_news</PARAM>

    </PARAMS>

  </FS_BUTTON>

Der button öffnet das passende Formular zum übergebenen content2-Objekt (hier 'pressreleases'). Beim Speichern wird der neu angelegte Datensatz auch an die FS_LIST gehängt, die im Parameter appendToList übergeben wurde (hier 'db_news').

Nun zu meiner Frage. Das Formular zeige ich momentan so an, indem ich eine ShowFormDialogOperation nutze und das Formular übergebe tableTemplate.getGomSource().

...

// get the Content2 item which has been provided via FS_BUTTON parameter

Content2 destinationContent2 = (Content2) contentStoreRoot.getStoreElement(destinationContent2Uid, Content2.UID_TYPE);

TableTemplate tableTemplate = destinationContent2.getTemplate();

//context.logInfo(language.toString());

String formString = tableTemplate.getGomSource();

OperationAgent operationAgent = context.requireSpecialist(OperationAgent.TYPE);

ShowFormDialogOperation operation = operationAgent.getOperation(ShowFormDialogOperation.TYPE);

 

operation.setTitle("News anlegen und der Liste hinzufügen");

operation.setOkText("Speichern und schließen");

 

Form form = context.requireSpecialist(FormsAgent.TYPE).getForm(formString);

FormData formData = null;

try {

     formData = operation.perform(form, Arrays.asList(language));

} catch (ShowFormDialogOperation.InvalidRulesetDefinition invalidRulesetDefinition) {

     invalidRulesetDefinition.printStackTrace();

}

...

Wenn sich das Formular öffnet fehlen allerdings die Sprachumschalter. Geht das irgendwie noch besser? Also gibt es eine Möglichkeit das Formular so anzuzeigen, dass auch die Sprachumschalter erscheinen also so, als ob man die Klasse NewContentExecutable nutzt?

Gruß,

Sebastian

0 Kudos

Hallo Sebastian,

Wenn Du als zweiten Parameter der .perform()-Methode eine Liste ALLER Sprachen übergibst sollte es so funktionieren wie gewünscht. In Deinem aktuellen Code übergibst Du wie es scheint nur eine Liste mit EINER Sprache - dadurch steht auch nur diese im Formular zur Verfügung.

Viele Grüße

Michael

0 Kudos