|
|
@@ -1330,7 +1330,7 @@ public partial class JobResourcePlanner : UserControl
|
|
|
|
|
|
private void Schedule_AppointmentEditorOpening(object? sender, AppointmentEditorOpeningEventArgs e)
|
|
|
{
|
|
|
-
|
|
|
+ e.Cancel = true;
|
|
|
}
|
|
|
|
|
|
void CreateMenu<T>(ItemsControl menu, CalendarMenuName name, string header, Action<T?>? action, T data)
|
|
|
@@ -1419,30 +1419,41 @@ public partial class JobResourcePlanner : UserControl
|
|
|
e.ContextMenu.Items.Clear();
|
|
|
if ((e.MenuType == SchedulerContextMenuType.Appointment) && (e.MenuInfo.Appointment is StageModel model))
|
|
|
{
|
|
|
- CreateMenu(e.ContextMenu, CalendarMenuName.Edit, "Edit Booking", EditJobStage, model);
|
|
|
+ CreateMenu(e.ContextMenu, CalendarMenuName.Edit, Security.CanEdit<JobStage>() ? "Edit Booking" : "View Booking", EditJobStage, model);
|
|
|
CreateMenu(e.ContextMenu, CalendarMenuName.Copy, "Copy Booking", CopyJobStage, model);
|
|
|
- e.ContextMenu.Items.Add(new Separator());
|
|
|
- CreateMenu(e.ContextMenu, CalendarMenuName.Edit, "Delete Booking", DeleteJobStage, model);
|
|
|
+ if (Security.CanEdit<JobStage>())
|
|
|
+ {
|
|
|
+ e.ContextMenu.AddSeparatorIfNeeded();
|
|
|
+ CreateMenu(e.ContextMenu, CalendarMenuName.Delete, "Delete Booking", DeleteJobStage, model);
|
|
|
+ }
|
|
|
}
|
|
|
else if (e.MenuType == SchedulerContextMenuType.MonthCell)
|
|
|
{
|
|
|
- types ??= new Client<JobStageType>().Query(null, Columns.All<JobStageType>()).ToList<JobStageType>();
|
|
|
- if (types.Any())
|
|
|
+ if (Security.CanEdit<JobStage>())
|
|
|
{
|
|
|
- var header = new MenuItem() { Header = "Create Booking..." };
|
|
|
- foreach (var type in types)
|
|
|
- CreateMenu(header, CalendarMenuName.CreateNew, type.Description, CreateJobStage, type);
|
|
|
- e.ContextMenu.Items.Add(header);
|
|
|
+ types ??= new Client<JobStageType>().Query(null, Columns.All<JobStageType>()).ToList<JobStageType>();
|
|
|
+ if (types.Any())
|
|
|
+ {
|
|
|
+ var header = new MenuItem() { Header = "Create Booking..." };
|
|
|
+ foreach (var type in types)
|
|
|
+ CreateMenu(header, CalendarMenuName.CreateNew, type.Description, CreateJobStage, type);
|
|
|
+ e.ContextMenu.Items.Add(header);
|
|
|
|
|
|
+ }
|
|
|
+ else
|
|
|
+ CreateMenu(e.ContextMenu, CalendarMenuName.CreateNew, "Create Booking", CreateJobStage, new JobStageType());
|
|
|
+
|
|
|
+ if (_copiedModel != null)
|
|
|
+ {
|
|
|
+ e.ContextMenu.Items.Add(new Separator());
|
|
|
+ CreateMenu(e.ContextMenu, CalendarMenuName.Paste, "Paste Booking", PasteJobStage, _copiedModel);
|
|
|
+ }
|
|
|
}
|
|
|
- else
|
|
|
- CreateMenu(e.ContextMenu, CalendarMenuName.CreateNew, "Create Booking", CreateJobStage, new JobStageType());
|
|
|
-
|
|
|
- if (_copiedModel != null)
|
|
|
- {
|
|
|
- e.ContextMenu.Items.Add(new Separator());
|
|
|
- CreateMenu(e.ContextMenu, CalendarMenuName.Paste, "Paste Booking", PasteJobStage, _copiedModel);
|
|
|
- }
|
|
|
+ }
|
|
|
+
|
|
|
+ if(e.ContextMenu.Items.Count == 0)
|
|
|
+ {
|
|
|
+ e.Cancel = true;
|
|
|
}
|
|
|
}
|
|
|
|