Explorar el Código

Slight tweaks to JobResourcePlanner

Kenric Nugteren hace 1 semana
padre
commit
ea43c89e52
Se han modificado 1 ficheros con 29 adiciones y 18 borrados
  1. 29 18
      prs.desktop/Panels/JobPlanner/JobResourcePlanner.xaml.cs

+ 29 - 18
prs.desktop/Panels/JobPlanner/JobResourcePlanner.xaml.cs

@@ -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;
         }
     }