Translation
"bd0d11a9-9e71-4980-9265-c4a037432d48";"Dialogberechtigte";"Dialog authorized";"";"";"";"False";"0"
Aktion
Methode AdditionalRibbonButtonAssignment
erweitern
public override void AdditionalRibbonButtonAssignment(RibbonButtonItem ribbonItem, Dictionary<string, object> additionalClientData, EnumActionVisibleForParentType parentType, DevExUIModelBase uiModel, OrmBABase orm)
{
// Die Basemethode sollte immer als erste ausgeführt werden
base.AdditionalRibbonButtonAssignment(ribbonItem, additionalClientData, parentType, uiModel, orm);
// Vorheriger Inhalt
...........
// Ermittlung ob die Aktion ausgeführt werden kann
bool canHandle;
if (orm != null)
// Überprüfung eines konkreten Orms, ob der Benutzer es bearbeiten kann. Für Aktionen in Masken.
// Hinweis: Oben wurde die Aktion nur für Ansichten definiert. Daher wird dieser Abschnitt
// nicht durchlaufen und dient nur als Beispiel
canHandle = orm.IsAllowed(EnumTableOperations.Edit);
else
{
// In einer Ansicht kann nicht ein konkretes Orm angefragt werden, daher wird nur geprüft ob der Benutzer theoritisch
// Datensätze dieses Typs bearbeiten kann. Dazu wird die Datentabellenkonfiguration geladen.
OrmEntityConfiguration entityConfig = Api.Config.OrmEntity(EnumDataSourceExtension.Engine.ValueGuid);
canHandle = entityConfig.IsAllowed(EnumTableOperations.Edit) != EnumTableOperations.Denied;
}
// Ergebnis zum Client übertragen. Siehe dazu im Konstruktor DynamicClientVisibility.Add(EnumActionVisibility.IfUserHasRole);
additionalClientData.AddOrUpdate("UserHasRole", canHandle);
}
Dynamische Sichtbarkeit
DynamicClientVisibility.Add(EnumActionVisibility.IfUserHasRole);
Eigenschaft
[TokenboxControl]
[CDPRolesProviderProperties(dataSources: new[] { EnumDataSource.RoleGuid })]
[DisplayName("BD0D11A9-9E71-4980-9265-C4A037432D48")]
public RoleSet DialogRoles { get; set; }
AdditionalRibbonButtonAssignment
AdditionalClientData.AddOrUpdate("DialogAuthorized", Api.User.CurrentUserIsInRole(DialogRoles, false));
Igniter
public override ActionResult Ignite()
{
if (SomethingSelected)
{
if (IgnitionModel.Parameters.TryGetValue("RemarkMessage", out object remarkObj) && remarkObj is string remark && !string.IsNullOrWhiteSpace(remark))
{
DateTime date;
if (IgnitionModel.Parameters.TryGetValue("ServiceDate", out object dateObj) && dateObj is DateTime)
date = (DateTime)dateObj;
else
date = DateTime.Now;
int successful = 0;
int missingRights = 0;
Session session = Api.ORM.GetNewSession();
IEnumerable<Guid> oids = Records.Select(ff => ff.Oid);
IQueryable<OrmEngine> engines = Api.ORM.GetQuery<OrmEngine>(session).Where(ff => oids.Contains(ff.Oid));
foreach (OrmEngine engine in engines)
{
if (engine.IsAllowed(EnumTableOperations.Edit))
{
OrmSubEngineServices service = engine.Services.AddNewObject();
service.SortOrder = engine.Services.Count() - 1;
service.ServiceDate = date;
service.Remark = remark;
engine.Save();
successful++;
}
else
missingRights++;
}
if (missingRights == 0)
Api.ClientCommunication.CreateSuccess(Api.User.CurrentUserGuid(), "dd1ceadc-6808-4583-b6b7-dda73188b5a8".Translate(successful));
else
Api.ClientCommunication.CreateSuccess(Api.User.CurrentUserGuid(), "e3f652e7-8019-4444-9e6c-f3c30528e862".Translate(successful, missingRights));
return new JsonResult() { Data = new JsonFormResult() { RefreshGrid = true } };
}
else
Api.ClientCommunication.CreateError(Api.User.CurrentUserGuid(), "d49ef787-3ad1-4f66-bb12-b2660fd71738".Translate());
}
return null;
}
Type Script
public static ClientActionAddService(event: any, customData: CustomData) {
if (customData.DialogAuthorized) {
let paramter: CustomData = {};
paramter.RemarkMessage = customData.RemarkMessage;
paramter.ServiceDate = customData.ServiceDate;
BA.Ui.Dialog.DialogManager.OpenDialog("BA.Training.AddServiceDialog", customData, customData,
function (result: BA.Ui.Dialog.DialogResult, customData: CustomData) {
if (result.ButtonId == 'okButton') {
Actions.StartAddServiceMassOperation(event, customData, result.Data.Remark, result.Data.Date);
}
}
);
} else if (!customData.RemarkMessage || customData.RemarkMessage == "")
BA.Ui.Translations.TranslationTools.GetTranslation("d49ef787-3ad1-4f66-bb12-b2660fd71738", function (result) {
BA.Ui.Toast.Warning(result);
});
else
Actions.StartAddServiceMassOperation(event, customData, customData.RemarkMessage, customData.ServiceDate);
}
public static StartAddServiceMassOperation(event: any, customData: CustomData, remark: any, date: any) {
let igniterParams: CustomData = {};
igniterParams.RemarkMessage = remark;
igniterParams.ServiceDate = date;
customData["MassOperationIgniterParameters"] = JSON.stringify(igniterParams);
BA.Ui.Actions.GridActions.StartMassOperation(event, customData);
}