浏览代码

Added default lookup format

Kenric Nugteren 2 年之前
父节点
当前提交
17250f9e69

+ 6 - 1
InABox.Core/ILookupDefinition.cs

@@ -312,7 +312,12 @@ namespace InABox.Core
 
         public static string FormatLookup(Type TLookup, Dictionary<string, object> values, IEnumerable<string> exclude)
         {
-            return DoInvoke(TLookup, typeof(string), "FormatLookup", values, exclude) as string;
+            var result = DoInvoke(TLookup, typeof(string), "FormatLookup", values, exclude) as string;
+            if(result is null)
+            {
+                return DefaultFormatLookup(values, exclude);
+            }
+            return result;
         }
 
         public static string FormatLookup<TLookup>(Dictionary<string, object> values, IEnumerable<string> exclude)

+ 5 - 0
InABox.Core/Security/Security.cs

@@ -155,6 +155,11 @@ namespace InABox.Core
                    && IsAllowed<AutoSecurityDescriptor<TEntity, CanView<TEntity>>>(userGuid, securityId);
         }
 
+        public static bool CanView(Type TEntity)
+        {
+            return ClientFactory.IsSupported(TEntity) &&
+                IsAllowed(typeof(AutoSecurityDescriptor<,>).MakeGenericType(TEntity, typeof(CanView<>).MakeGenericType(TEntity)));
+        }
         public static bool CanView<TEntity>() where TEntity : Entity, new()
         {
             return ClientFactory.IsSupported<TEntity>() && IsAllowed<AutoSecurityDescriptor<TEntity, CanView<TEntity>>>();

+ 9 - 7
InABox.DynamicGrid/Columns/DynamicMenuColumn.cs

@@ -21,7 +21,7 @@ namespace InABox.DynamicGrid
     
     public class DynamicMenuColumn : DynamicImageColumn
     {
-        private readonly Action<DynamicMenuColumn, CoreRow?> _build;
+        private readonly BuildMenu _build;
 
         private readonly ContextMenu _menu;
         
@@ -30,7 +30,9 @@ namespace InABox.DynamicGrid
         private readonly BitmapImage _enabled = Resources.menu.AsBitmapImage();
         private readonly BitmapImage _disabled = Resources.menu.Fade(0.25F).AsBitmapImage();
 
-        public DynamicMenuColumn(Action<DynamicMenuColumn, CoreRow?> build, Func<CoreRow, DynamicMenuStatus>? status = null) : base(r => null)
+        public delegate void BuildMenu(DynamicMenuColumn column, CoreRow? row);
+
+        public DynamicMenuColumn(BuildMenu build, Func<CoreRow, DynamicMenuStatus>? status = null) : base(r => null)
         {
             _menu = new ContextMenu();
 
@@ -63,7 +65,7 @@ namespace InABox.DynamicGrid
             };
         }
         
-        public MenuItem AddItem(string text, System.Drawing.Bitmap? image, Action<CoreRow>? action, object? parent = null, bool enabled = true)
+        public MenuItem AddItem(string text, System.Drawing.Bitmap? image, Action<CoreRow?>? action, object? parent = null, bool enabled = true)
         {
             var item = new MenuItem();
             if (image != null)
@@ -84,7 +86,7 @@ namespace InABox.DynamicGrid
             return item;
         }
         
-        public MenuItem AddCalendar(string text, DateTime startDate, System.Drawing.Bitmap? image, Action<CoreRow, DateTime?>? action, object? parent = null, bool enabled = true)
+        public MenuItem AddCalendar(string text, DateTime startDate, System.Drawing.Bitmap? image, Action<CoreRow?, DateTime?>? action, object? parent = null, bool enabled = true)
         {
             var item = new MenuItem();
             if (image != null)
@@ -117,7 +119,7 @@ namespace InABox.DynamicGrid
             return item;
         }
 
-        public void AddSeparator(object parent = null)
+        public void AddSeparator(object? parent = null)
         {
             var item = new Separator();
             if (parent == null)
@@ -126,13 +128,13 @@ namespace InABox.DynamicGrid
                 ((MenuItem)parent).Items.Add(item);
         }
 
-        private CoreRow GetRow(MenuItem item)
+        private CoreRow? GetRow(MenuItem? item)
         {
             if (item == null)
                 return null;
 
             if (item.Parent is ContextMenu)
-                return (item.Parent as ContextMenu).Tag as CoreRow;
+                return (item.Parent as ContextMenu)?.Tag as CoreRow;
 
             return GetRow(item.Parent as MenuItem);
         }