Questions & Answers

SOLVED
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

Type a product name