Berechtigung UDF
Andreas Schlingmann
Hallo,sorry für die einfache Frage, mit Customize arbeiten wir selten:
Wie kann man einfach (!) eine Berechtigung für ein UDF prüfen. Benutzer A darf alles, Benutzer B nur anschauen (nichts ändern).
Vielen Dank für jeden Tipp
Daniel Ebi
Hallo Andreas,das habe ich gerade gemacht für den Artikelstamm, aber wesentlich komplizierter: In Abhängigkeit der Abteilung, der der User zugeordnet ist, darf er verschiedene Felder bearbeiten, oder auch nicht. Ist aber sehr kompliziert geworden, da jedes einzelne Feld und jeder einzelne Event (Click, OnFocus) geprüft werden muss.
Bei Bedarf kann ich das gerne verkaufen :-) (Ich musste selbst von coresystems kostenpflichtige Hilfe in Anspruch nehmen.)
Gruss
Daniel
Andreas Schlingmann
[quote name='Daniel Ebi' timestamp='1347455010' post='21395']Bei Bedarf kann ich das gerne verkaufen :-) (Ich musste selbst von coresystems kostenpflichtige Hilfe in Anspruch nehmen.)
Gruss
Daniel
[/quote]
na, das hilft doch weiter...Danke.
Andreas Schlingmann
Habe es selber gelöst.Eine kleine Optimizer-Regel wird benötigt, hier der XML (COCU)-Import:
[CODE]
<?xml version="1.0" encoding="utf-16"?><customize><COR_CUSTOM_FIELD U_RuleName="Unirez - Can't edit BP fields" U_Type="0" U_Action="0" U_Warning="N" U_WarningText="" U_WarningBox="N" U_WarningStatus="N" U_Active="Y" U_FormTypeBasis="" U_ItemUIDBasis="" U_ColumnBasis="" U_FormType="-139" U_ItemUID="" U_Column="" U_EventType="16" U_Before="N" U_Mode="-1" U_Refresh=" " U_Creator="Wizard" U_LastModified="13/02/2012 11:33:28" U_LastModifiedBy="1" U_Permission="100000000000000" U_EasyFunctionRule="" U_ErrorBox="" U_ErrorStatus=""><U_Expression>//locks fields in the list
string[] itemsToLock = new string[]{ "U_USERFIELD" };
LockFields(pVal.Form, itemsToLock);
return true;</U_Expression></COR_CUSTOM_FIELD></customize>[/CODE]
Zusätzlich wird noch ein extended Code benötigt:
[CODE]
public static void LockFields(Form form, string[] UIDsOfItemsToLock)
{
foreach(string itemUID in UIDsOfItemsToLock)
{
Item item = form.Items[itemUID];
if(item is ComboBox)
{
((ComboBox) item).AddHandler_Click(ModeComponent.FormModes.ALL, LockFieldsClick);
((ComboBox) item).AddHandler_Select(ModeComponent.FormModes.ALL, LockFieldsComboSelected);
}
else if(item is TextEdit)
{
((TextEdit) item).AddHandler_Click(ModeComponent.FormModes.ALL, LockFieldsClick);
((TextEdit) item).AddHandler_GotFocus(ModeComponent.FormModes.ALL, null, LockFieldsGotFocus);
}
else if(item is CheckBox)
{
((CheckBox) item).AddHandler_Click(ModeComponent.FormModes.ALL, LockFieldsClick);
}
}
}
private static void LockFieldsGotFocus(SwissAddonFramework.UI.EventHandling.ItemEvents.GotFocus ev)
{
if(ev.Form.Mode != ModeComponent.FormModes.FIND && ev.Form.Mode != ModeComponent.FormModes.ADD)
{
SendKeys.Send("{TAB}");
}
}
private static void LockFieldsClick(SwissAddonFramework.UI.EventHandling.ItemEvents.Click ev)
{
if(ev.Form.Mode != ModeComponent.FormModes.FIND && ev.Form.Mode != ModeComponent.FormModes.ADD)
{
ev.ExecuteSAPAction = false;
StatusBar.WriteError("Dieses Feld ist gesperrt.",
StatusBar.MessageTime.Short);
}
}
private static void LockFieldsComboSelected(SwissAddonFramework.UI.EventHandling.ItemEvents.ComboSelected ev)
{
if(ev.Form.Mode != ModeComponent.FormModes.FIND && ev.Form.Mode != ModeComponent.FormModes.ADD)
{
ev.ExecuteSAPAction = false;
StatusBar.WriteError("Dieses Feld ist gesperrt.",
StatusBar.MessageTime.Short);
}
}[/CODE]
Hoffe das hilft mal jemanden.
gruß
0
Please sign in to leave a comment.
Comments
0 comments