Răsfoiți Sursa

revise shortcut support

Luke Pulverenti 9 ani în urmă
părinte
comite
54dd38b2bd

+ 9 - 0
MediaBrowser.Controller/Entities/CollectionFolder.cs

@@ -35,6 +35,15 @@ namespace MediaBrowser.Controller.Entities
             }
         }
 
+        [IgnoreDataMember]
+        protected override bool SupportsShortcutChildren
+        {
+            get
+            {
+                return true;
+            }
+        }
+
         public override bool CanDelete()
         {
             return false;

+ 35 - 31
MediaBrowser.Controller/Entities/Folder.cs

@@ -1,7 +1,6 @@
 using MediaBrowser.Common.Progress;
 using MediaBrowser.Controller.Entities.TV;
 using MediaBrowser.Controller.Library;
-using MediaBrowser.Controller.Localization;
 using MediaBrowser.Controller.Providers;
 using MediaBrowser.Model.Dto;
 using MediaBrowser.Model.Entities;
@@ -14,7 +13,6 @@ using System.Linq;
 using System.Runtime.Serialization;
 using System.Threading;
 using System.Threading.Tasks;
-using MediaBrowser.Model.Users;
 
 namespace MediaBrowser.Controller.Entities
 {
@@ -50,7 +48,7 @@ namespace MediaBrowser.Controller.Entities
         [IgnoreDataMember]
         public virtual bool IsPreSorted
         {
-            get { return false; }
+            get { return ConfigurationManager.Configuration.EnableWindowsShortcuts; }
         }
 
         /// <summary>
@@ -122,7 +120,7 @@ namespace MediaBrowser.Controller.Entities
         [IgnoreDataMember]
         protected virtual bool SupportsShortcutChildren
         {
-            get { return true; }
+            get { return false; }
         }
 
         /// <summary>
@@ -176,7 +174,7 @@ namespace MediaBrowser.Controller.Entities
         protected void AddChildInternal(BaseItem child)
         {
             var actualChildren = ActualChildren;
-            
+
             lock (_childrenSyncLock)
             {
                 var newChildren = actualChildren.ToList();
@@ -1070,7 +1068,7 @@ namespace MediaBrowser.Controller.Entities
         {
             var changesFound = false;
 
-            if (SupportsShortcutChildren && LocationType == LocationType.FileSystem)
+            if (LocationType == LocationType.FileSystem)
             {
                 if (RefreshLinkedChildren(fileSystemChildren))
                 {
@@ -1092,37 +1090,43 @@ namespace MediaBrowser.Controller.Entities
             var currentManualLinks = LinkedChildren.Where(i => i.Type == LinkedChildType.Manual).ToList();
             var currentShortcutLinks = LinkedChildren.Where(i => i.Type == LinkedChildType.Shortcut).ToList();
 
-            var newShortcutLinks = fileSystemChildren
-                .Where(i => (i.Attributes & FileAttributes.Directory) != FileAttributes.Directory && FileSystem.IsShortcut(i.FullName))
-                .Select(i =>
-                {
-                    try
+            List<LinkedChild> newShortcutLinks;
+
+            if (SupportsShortcutChildren)
+            {
+                newShortcutLinks = fileSystemChildren
+                    .Where(i => (i.Attributes & FileAttributes.Directory) != FileAttributes.Directory && FileSystem.IsShortcut(i.FullName))
+                    .Select(i =>
                     {
-                        Logger.Debug("Found shortcut at {0}", i.FullName);
+                        try
+                        {
+                            Logger.Debug("Found shortcut at {0}", i.FullName);
 
-                        var resolvedPath = FileSystem.ResolveShortcut(i.FullName);
+                            var resolvedPath = FileSystem.ResolveShortcut(i.FullName);
 
-                        if (!string.IsNullOrEmpty(resolvedPath))
-                        {
-                            return new LinkedChild
+                            if (!string.IsNullOrEmpty(resolvedPath))
                             {
-                                Path = resolvedPath,
-                                Type = LinkedChildType.Shortcut
-                            };
-                        }
+                                return new LinkedChild
+                                {
+                                    Path = resolvedPath,
+                                    Type = LinkedChildType.Shortcut
+                                };
+                            }
 
-                        Logger.Error("Error resolving shortcut {0}", i.FullName);
+                            Logger.Error("Error resolving shortcut {0}", i.FullName);
 
-                        return null;
-                    }
-                    catch (IOException ex)
-                    {
-                        Logger.ErrorException("Error resolving shortcut {0}", ex, i.FullName);
-                        return null;
-                    }
-                })
-                .Where(i => i != null)
-                .ToList();
+                            return null;
+                        }
+                        catch (IOException ex)
+                        {
+                            Logger.ErrorException("Error resolving shortcut {0}", ex, i.FullName);
+                            return null;
+                        }
+                    })
+                    .Where(i => i != null)
+                    .ToList();
+            }
+            else { newShortcutLinks = new List<LinkedChild>(); }
 
             if (!newShortcutLinks.SequenceEqual(currentShortcutLinks, new LinkedChildComparer()))
             {

+ 9 - 0
MediaBrowser.Controller/Entities/Movies/BoxSet.cs

@@ -74,6 +74,15 @@ namespace MediaBrowser.Controller.Entities.Movies
             }
         }
 
+        [IgnoreDataMember]
+        protected override bool SupportsShortcutChildren
+        {
+            get
+            {
+                return true;
+            }
+        }
+
         public override bool IsAuthorizedToDelete(User user)
         {
             return true;

+ 12 - 1
MediaBrowser.Controller/Entities/UserRootFolder.cs

@@ -1,4 +1,5 @@
-using MediaBrowser.Controller.Providers;
+using System.Runtime.Serialization;
+using MediaBrowser.Controller.Providers;
 using MediaBrowser.Model.Dto;
 using MediaBrowser.Model.Library;
 using MediaBrowser.Model.Querying;
@@ -36,6 +37,16 @@ namespace MediaBrowser.Controller.Entities
             return PostFilterAndSort(result.Where(filter), query);
         }
 
+        [IgnoreDataMember]
+        protected override bool SupportsShortcutChildren
+        {
+            get
+            {
+                return true;
+            }
+        }
+
+        [IgnoreDataMember]
         public override bool IsPreSorted
         {
             get

+ 1 - 0
MediaBrowser.Model/Configuration/ServerConfiguration.cs

@@ -214,6 +214,7 @@ namespace MediaBrowser.Model.Configuration
         public int SharingExpirationDays { get; set; }
 
         public bool DisableXmlSavers { get; set; }
+        public bool EnableWindowsShortcuts { get; set; }
 
         /// <summary>
         /// Initializes a new instance of the <see cref="ServerConfiguration" /> class.