Search the FirstSpirit Knowledge Base
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
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
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
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