luettel
I'm new here

Drop-Down Feld rechteabhängig

Hi,

ich habe folgendes Problem.

Wir brauchen ein Drop-Down Feld, welches berechtigungsgesteuert ist, d.h. je nach Nutzerrechten sollen andere Einträge enthalten sein. Meines Wissens nach funktioniert das in einem normalen Formular nicht.

Erzeugen wir das Formular dynamisch per Skript, dann würde doch theoretisch hätten wir doch prinzipiell die Möglichkeit auch die Auswahlwerte in Abhängigkeit von den Nutzerberechtigungen zu setzen, oder?


Hat jemand eine andere Idee?

Gruß

Daniel

3 Replies
daniel2
I'm new here

Hi Daniel,

leider kommt man an den FS-Benutzer nur sehr schwer ran.

Wenn es sich nur um wenige Einträge und wenige Nutzerberechtigungen handelt und Du FS5 einsetzt, hätte ich spontan folgende Idee:

Du definierst separate Eingabekomponenten mit unterschiedlicher Befüllung und schaltest mit den RULES im Template je nach Benutzer(gruppe) die eine sichtbar und lässt die anderen versteckt. Klappt auch im JavaClient.

Allerdings musst Du dann halt im Ausgabekanal auf die separaten Eingabekomponenten reagieren.

Vielleicht hilft Dir das schon.

Viele Grüße,

Daniel

0 Kudos

Hallo Daniel,

wir würde das gerne über ein Skript umsetzen. Einen Lösungsansatz hätten wir bereits.

Es wird einen Workflow mit verschiedenen Skripten geben, welche nach und nach abgearbeitet werden.

Im ersten Schritt wird ein Skript aufgerufen, bei dem wir eine Drop-Down box haben die Rechteabhängig Einträge anzeigt. Im Skript danach werden dann die Eingabekomponenten angezeigt. Diese werden in abhängig zu dem vorher gewählten Typ angezeigt.

So ist jetzt mal unsere Idee.

Man kommt ja an die Benutzer, usw. dran.

Gruß

Daniel

0 Kudos

Hallo Daniel,

das würde so funktionieren wie in Deinem Lösungsansatz beschrieben. Als Basis hilft Dir vielleicht das folgende Script:

import de.espirit.firstspirit.ui.operations.ShowFormDialogOperation;

import de.espirit.firstspirit.forms.Form;

import de.espirit.firstspirit.agency.OperationAgent;

import de.espirit.firstspirit.agency.FormsAgent;

import de.espirit.firstspirit.access.User;

import de.espirit.firstspirit.access.store.StoreElement;

import de.espirit.firstspirit.access.store.Permission;

//get user/permissions

User user = context.getUser();

StoreElement storeElement = context.getStoreElement();

Permission permission = storeElement.getPermission(user);

//build gui

StringBuilder gomSource = new StringBuilder();

gomSource.append("<CMS_MODULE>");

gomSource.append("<CMS_INPUT_COMBOBOX name=\"st_combobox\" hFill=\"yes\">");

gomSource.append("<ENTRIES>");

//todo: create/show entries corresponding to permissions

gomSource.append("<ENTRY value=\"value\">");

gomSource.append("<LANGINFOS>");

gomSource.append("<LANGINFO lang=\"*\" label=\"TEXT\"/>");

gomSource.append("</LANGINFOS>");

gomSource.append("</ENTRY>");

gomSource.append("</ENTRIES>");

gomSource.append("<LANGINFOS>");

gomSource.append("<LANGINFO lang=\"*\" label=\"TEXT\" description=\"TEXT\"/>");

gomSource.append("</LANGINFOS>");

gomSource.append("</CMS_INPUT_COMBOBOX>");

gomSource.append("</CMS_MODULE>");

//show gui

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

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

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

try {

    showFormDialogOperation.setOkText("Ok");

    showFormDialogOperation.perform(form, context.getProject().getLanguages());

} catch (ShowFormDialogOperation.InvalidRulesetDefinition invalidRulesetDefinition) {

    invalidRulesetDefinition.printStackTrace();

}

Viele Grüße

Jörg