add fileHelper
This commit is contained in:
parent
50f0bef484
commit
a82efce2a1
@ -29,6 +29,7 @@ using System.Collections.Generic;
|
|||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text.Json;
|
using System.Text.Json;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
|
|
||||||
namespace ASC.Core.ChunkedUploader
|
namespace ASC.Core.ChunkedUploader
|
||||||
{
|
{
|
||||||
@ -58,6 +59,8 @@ namespace ASC.Core.ChunkedUploader
|
|||||||
public Dictionary<string, object> Items { get; set; } = new Dictionary<string, object>();
|
public Dictionary<string, object> Items { get; set; } = new Dictionary<string, object>();
|
||||||
|
|
||||||
private const string TempPathKey = "TempPath";
|
private const string TempPathKey = "TempPath";
|
||||||
|
|
||||||
|
[JsonIgnore]
|
||||||
public string TempPath
|
public string TempPath
|
||||||
{
|
{
|
||||||
get { return GetItemOrDefault<string>(TempPathKey); }
|
get { return GetItemOrDefault<string>(TempPathKey); }
|
||||||
@ -65,6 +68,8 @@ namespace ASC.Core.ChunkedUploader
|
|||||||
}
|
}
|
||||||
|
|
||||||
private const string UploadIdKey = "UploadId";
|
private const string UploadIdKey = "UploadId";
|
||||||
|
|
||||||
|
[JsonIgnore]
|
||||||
public string UploadId
|
public string UploadId
|
||||||
{
|
{
|
||||||
get { return GetItemOrDefault<string>(UploadIdKey); }
|
get { return GetItemOrDefault<string>(UploadIdKey); }
|
||||||
@ -72,6 +77,8 @@ namespace ASC.Core.ChunkedUploader
|
|||||||
}
|
}
|
||||||
|
|
||||||
private const string ChunksBufferKey = "ChunksBuffer";
|
private const string ChunksBufferKey = "ChunksBuffer";
|
||||||
|
|
||||||
|
[JsonIgnore]
|
||||||
public string ChunksBuffer
|
public string ChunksBuffer
|
||||||
{
|
{
|
||||||
get { return GetItemOrDefault<string>(ChunksBufferKey); }
|
get { return GetItemOrDefault<string>(ChunksBufferKey); }
|
||||||
@ -120,6 +127,10 @@ namespace ASC.Core.ChunkedUploader
|
|||||||
{
|
{
|
||||||
newItems.Add(item.Key, item.Value.ToString());
|
newItems.Add(item.Key, item.Value.ToString());
|
||||||
}
|
}
|
||||||
|
if (value.ValueKind == JsonValueKind.Number)
|
||||||
|
{
|
||||||
|
newItems.Add(item.Key, Int32.Parse(item.Value.ToString()));
|
||||||
|
}
|
||||||
if (value.ValueKind == JsonValueKind.Array)
|
if (value.ValueKind == JsonValueKind.Array)
|
||||||
{
|
{
|
||||||
newItems.Add(item.Key, value.EnumerateArray().Select(o => o.ToString()).ToList());
|
newItems.Add(item.Key, value.EnumerateArray().Select(o => o.ToString()).ToList());
|
||||||
@ -131,6 +142,7 @@ namespace ASC.Core.ChunkedUploader
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Items = newItems;
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual object Clone()
|
public virtual object Clone()
|
||||||
|
@ -145,7 +145,7 @@ namespace ASC.Data.Backup.Storage
|
|||||||
}
|
}
|
||||||
|
|
||||||
using var source = File.OpenRead(localPath);
|
using var source = File.OpenRead(localPath);
|
||||||
var newFile = ServiceProvider.GetService<File<T>>();
|
var newFile = new File<T>();
|
||||||
newFile.Title = Path.GetFileName(localPath);
|
newFile.Title = Path.GetFileName(localPath);
|
||||||
newFile.FolderID = folder.ID;
|
newFile.FolderID = folder.ID;
|
||||||
newFile.ContentLength = source.Length;
|
newFile.ContentLength = source.Length;
|
||||||
|
@ -71,16 +71,13 @@ namespace ASC.Files.Core.Data
|
|||||||
{
|
{
|
||||||
public static void Register(DIHelper services)
|
public static void Register(DIHelper services)
|
||||||
{
|
{
|
||||||
services.TryAdd<File<int>>();
|
services.TryAdd<FileHelper<int>>();
|
||||||
services.TryAdd<IFileDao<int>, FileDao>();
|
services.TryAdd<FileHelper<string>>();
|
||||||
|
|
||||||
services.TryAdd<File<string>>();
|
services.TryAdd<IFileDao<int>, FileDao>();
|
||||||
services.TryAdd<IFileDao<string>, ProviderFileDao>();
|
services.TryAdd<IFileDao<string>, ProviderFileDao>();
|
||||||
|
|
||||||
services.TryAdd<Folder<int>>();
|
|
||||||
services.TryAdd<IFolderDao<int>, FolderDao>();
|
services.TryAdd<IFolderDao<int>, FolderDao>();
|
||||||
|
|
||||||
services.TryAdd<Folder<string>>();
|
|
||||||
services.TryAdd<IFolderDao<string>, ProviderFolderDao>();
|
services.TryAdd<IFolderDao<string>, ProviderFolderDao>();
|
||||||
|
|
||||||
services.TryAdd<SecurityDao<int>>();
|
services.TryAdd<SecurityDao<int>>();
|
||||||
|
@ -823,8 +823,10 @@ namespace ASC.Files.Core.Data
|
|||||||
var file = GetFile(fileId);
|
var file = GetFile(fileId);
|
||||||
if (file != null)
|
if (file != null)
|
||||||
{
|
{
|
||||||
var copy = ServiceProvider.GetService<File<int>>();
|
var copy = new File<int>();
|
||||||
copy.FileStatus = file.FileStatus;
|
var fileHelper = ServiceProvider.GetService<FileHelper<int>>();
|
||||||
|
fileHelper.FileEntry = file;
|
||||||
|
copy._status = fileHelper.FileStatus;
|
||||||
copy.FolderID = toFolderId;
|
copy.FolderID = toFolderId;
|
||||||
copy.Title = file.Title;
|
copy.Title = file.Title;
|
||||||
copy.ConvertedType = file.ConvertedType;
|
copy.ConvertedType = file.ConvertedType;
|
||||||
@ -1039,7 +1041,7 @@ namespace ASC.Files.Core.Data
|
|||||||
|
|
||||||
return file;
|
return file;
|
||||||
}
|
}
|
||||||
var result = ServiceProvider.GetService<File<int>>();
|
var result = new File<int>();
|
||||||
result.FolderID = uploadSession.File.FolderID;
|
result.FolderID = uploadSession.File.FolderID;
|
||||||
result.Title = uploadSession.File.Title;
|
result.Title = uploadSession.File.Title;
|
||||||
result.ContentLength = uploadSession.BytesTotal;
|
result.ContentLength = uploadSession.BytesTotal;
|
||||||
@ -1429,7 +1431,7 @@ namespace ASC.Files.Core.Data
|
|||||||
|
|
||||||
public File<int> ToFile(DbFileQuery r)
|
public File<int> ToFile(DbFileQuery r)
|
||||||
{
|
{
|
||||||
var file = ServiceProvider.GetService<File<int>>();
|
var file = new File<int>();
|
||||||
if (r == null) return null;
|
if (r == null) return null;
|
||||||
file.ID = r.File.Id;
|
file.ID = r.File.Id;
|
||||||
file.Title = r.File.Title;
|
file.Title = r.File.Title;
|
||||||
@ -1479,7 +1481,7 @@ namespace ASC.Files.Core.Data
|
|||||||
return dbFile;
|
return dbFile;
|
||||||
}
|
}
|
||||||
|
|
||||||
var file = ServiceProvider.GetService<File<int>>();
|
var file = new File<int>();
|
||||||
file.ID = dbFile.Id;
|
file.ID = dbFile.Id;
|
||||||
file.Title = dbFile.Title;
|
file.Title = dbFile.Title;
|
||||||
file.Version = dbFile.Version;
|
file.Version = dbFile.Version;
|
||||||
@ -1513,7 +1515,7 @@ namespace ASC.Files.Core.Data
|
|||||||
return dbFile;
|
return dbFile;
|
||||||
}
|
}
|
||||||
|
|
||||||
var file = ServiceProvider.GetService<File<int>>();
|
var file = new File<int>();
|
||||||
file.ID = dbFile.Id;
|
file.ID = dbFile.Id;
|
||||||
file.Title = dbFile.Title;
|
file.Title = dbFile.Title;
|
||||||
file.Version = dbFile.Version;
|
file.Version = dbFile.Version;
|
||||||
|
@ -50,7 +50,6 @@ using ASC.Web.Studio.Utility;
|
|||||||
|
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using Microsoft.EntityFrameworkCore.Storage;
|
using Microsoft.EntityFrameworkCore.Storage;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
|
||||||
|
|
||||||
namespace ASC.Files.Core.Data
|
namespace ASC.Files.Core.Data
|
||||||
{
|
{
|
||||||
@ -576,7 +575,7 @@ namespace ASC.Files.Core.Data
|
|||||||
if (folder.FolderType == FolderType.BUNCH)
|
if (folder.FolderType == FolderType.BUNCH)
|
||||||
folder.FolderType = FolderType.DEFAULT;
|
folder.FolderType = FolderType.DEFAULT;
|
||||||
|
|
||||||
var copy = ServiceProvider.GetService<Folder<int>>();
|
var copy = new Folder<int>();
|
||||||
copy.FolderID = toFolderId;
|
copy.FolderID = toFolderId;
|
||||||
copy.RootFolderId = toFolder.RootFolderId;
|
copy.RootFolderId = toFolder.RootFolderId;
|
||||||
copy.RootFolderCreator = toFolder.RootFolderCreator;
|
copy.RootFolderCreator = toFolder.RootFolderCreator;
|
||||||
@ -834,7 +833,7 @@ namespace ASC.Files.Core.Data
|
|||||||
var newFolderId = 0;
|
var newFolderId = 0;
|
||||||
if (createIfNotExists && !folderIdsDictionary.TryGetValue(key, out var folderId))
|
if (createIfNotExists && !folderIdsDictionary.TryGetValue(key, out var folderId))
|
||||||
{
|
{
|
||||||
var folder = ServiceProvider.GetService<Folder<int>>();
|
var folder = new Folder<int>();
|
||||||
switch (bunch)
|
switch (bunch)
|
||||||
{
|
{
|
||||||
case my:
|
case my:
|
||||||
@ -918,7 +917,7 @@ namespace ASC.Files.Core.Data
|
|||||||
var newFolderId = 0;
|
var newFolderId = 0;
|
||||||
if (createIfNotExists)
|
if (createIfNotExists)
|
||||||
{
|
{
|
||||||
var folder = ServiceProvider.GetService<Folder<int>>();
|
var folder = new Folder<int>();
|
||||||
folder.FolderID = 0;
|
folder.FolderID = 0;
|
||||||
switch (bunch)
|
switch (bunch)
|
||||||
{
|
{
|
||||||
@ -1090,7 +1089,7 @@ namespace ASC.Files.Core.Data
|
|||||||
public Folder<int> ToFolder(DbFolderQuery r)
|
public Folder<int> ToFolder(DbFolderQuery r)
|
||||||
{
|
{
|
||||||
if (r == null) return null;
|
if (r == null) return null;
|
||||||
var result = ServiceProvider.GetService<Folder<int>>();
|
var result = new Folder<int>();
|
||||||
result.ID = r.Folder.Id;
|
result.ID = r.Folder.Id;
|
||||||
result.FolderID = r.Folder.ParentId;
|
result.FolderID = r.Folder.ParentId;
|
||||||
result.Title = r.Folder.Title;
|
result.Title = r.Folder.Title;
|
||||||
|
@ -30,8 +30,6 @@ using System.Text.Json.Serialization;
|
|||||||
|
|
||||||
using ASC.Common;
|
using ASC.Common;
|
||||||
using ASC.Web.Core.Files;
|
using ASC.Web.Core.Files;
|
||||||
using ASC.Web.Files.Classes;
|
|
||||||
using ASC.Web.Files.Utils;
|
|
||||||
using ASC.Web.Studio.Core;
|
using ASC.Web.Studio.Core;
|
||||||
|
|
||||||
namespace ASC.Files.Core
|
namespace ASC.Files.Core
|
||||||
@ -61,63 +59,38 @@ namespace ASC.Files.Core
|
|||||||
[DebuggerDisplay("{Title} ({ID} v{Version})")]
|
[DebuggerDisplay("{Title} ({ID} v{Version})")]
|
||||||
public class File<T> : FileEntry<T>
|
public class File<T> : FileEntry<T>
|
||||||
{
|
{
|
||||||
private FileStatus _status;
|
public FileStatus _status;
|
||||||
|
|
||||||
public File(Global global,
|
|
||||||
FilesLinkUtility filesLinkUtility,
|
|
||||||
FileUtility fileUtility,
|
|
||||||
FileConverter fileConverter,
|
|
||||||
FileTrackerHelper fileTracker)
|
|
||||||
: base(global)
|
|
||||||
{
|
|
||||||
Version = 1;
|
|
||||||
VersionGroup = 1;
|
|
||||||
FileEntryType = FileEntryType.File;
|
|
||||||
FilesLinkUtility = filesLinkUtility;
|
|
||||||
FileUtility = fileUtility;
|
|
||||||
FileConverter = fileConverter;
|
|
||||||
FileTracker = fileTracker;
|
|
||||||
}
|
|
||||||
|
|
||||||
public File()
|
public File()
|
||||||
{
|
{
|
||||||
|
Version = 1;
|
||||||
|
VersionGroup = 1;
|
||||||
|
FileEntryType = FileEntryType.File;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int Version { get; set; }
|
public int Version { get; set; }
|
||||||
|
|
||||||
[JsonPropertyName("version_group")]
|
|
||||||
public int VersionGroup { get; set; }
|
public int VersionGroup { get; set; }
|
||||||
|
|
||||||
public string Comment { get; set; }
|
public string Comment { get; set; }
|
||||||
|
|
||||||
|
[JsonIgnore]
|
||||||
public string PureTitle
|
public string PureTitle
|
||||||
{
|
{
|
||||||
get { return base.Title; }
|
get { return Title; }
|
||||||
set { base.Title = value; }
|
set { Title = value; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public override string Title
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
return string.IsNullOrEmpty(ConvertedType)
|
|
||||||
? base.Title
|
|
||||||
: FileUtility.ReplaceFileExtension(base.Title, FileUtility.GetInternalExtension(base.Title));
|
|
||||||
}
|
|
||||||
set { base.Title = value; }
|
|
||||||
}
|
|
||||||
|
|
||||||
[JsonPropertyName("content_length")]
|
|
||||||
public long ContentLength { get; set; }
|
public long ContentLength { get; set; }
|
||||||
|
|
||||||
[JsonPropertyName("content_length_string")]
|
[JsonIgnore]
|
||||||
public string ContentLengthString
|
public string ContentLengthString
|
||||||
{
|
{
|
||||||
get { return FileSizeComment.FilesSizeToString(ContentLength); }
|
get { return FileSizeComment.FilesSizeToString(ContentLength); }
|
||||||
set { }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[JsonIgnore]
|
||||||
public FilterType FilterType
|
public FilterType FilterType
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
@ -143,36 +116,11 @@ namespace ASC.Files.Core
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[JsonPropertyName("file_status")]
|
|
||||||
public FileStatus FileStatus
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
if (FileTracker.IsEditing(ID))
|
|
||||||
{
|
|
||||||
_status |= FileStatus.IsEditing;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (FileTracker.IsEditingAlone(ID))
|
|
||||||
{
|
|
||||||
_status |= FileStatus.IsEditingAlone;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (FileConverter.IsConverting(this))
|
|
||||||
{
|
|
||||||
_status |= FileStatus.IsConverting;
|
|
||||||
}
|
|
||||||
|
|
||||||
return _status;
|
|
||||||
}
|
|
||||||
set { _status = value; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool Locked { get; set; }
|
public bool Locked { get; set; }
|
||||||
|
|
||||||
[JsonPropertyName("locked_by")]
|
|
||||||
public string LockedBy { get; set; }
|
public string LockedBy { get; set; }
|
||||||
|
|
||||||
|
[JsonIgnore]
|
||||||
public override bool IsNew
|
public override bool IsNew
|
||||||
{
|
{
|
||||||
get { return (_status & FileStatus.IsNew) == FileStatus.IsNew; }
|
get { return (_status & FileStatus.IsNew) == FileStatus.IsNew; }
|
||||||
@ -211,18 +159,13 @@ namespace ASC.Files.Core
|
|||||||
|
|
||||||
public bool Encrypted { get; set; }
|
public bool Encrypted { get; set; }
|
||||||
|
|
||||||
[JsonPropertyName("thumbnail_status")]
|
|
||||||
public Thumbnail ThumbnailStatus { get; set; }
|
public Thumbnail ThumbnailStatus { get; set; }
|
||||||
|
|
||||||
public ForcesaveType Forcesave { get; set; }
|
public ForcesaveType Forcesave { get; set; }
|
||||||
|
|
||||||
public string DownloadUrl
|
|
||||||
{
|
|
||||||
get { return FilesLinkUtility.GetFileDownloadUrl(ID); }
|
|
||||||
}
|
|
||||||
|
|
||||||
public string ConvertedType { get; set; }
|
public string ConvertedType { get; set; }
|
||||||
|
|
||||||
|
[JsonIgnore]
|
||||||
public string ConvertedExtension
|
public string ConvertedExtension
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
@ -241,17 +184,6 @@ namespace ASC.Files.Core
|
|||||||
}
|
}
|
||||||
|
|
||||||
public object NativeAccessor { get; set; }
|
public object NativeAccessor { get; set; }
|
||||||
|
|
||||||
[NonSerialized]
|
|
||||||
public FileTrackerHelper FileTracker;
|
|
||||||
|
|
||||||
[NonSerialized]
|
|
||||||
public FilesLinkUtility FilesLinkUtility;
|
|
||||||
|
|
||||||
[NonSerialized]
|
|
||||||
public FileUtility FileUtility;
|
|
||||||
|
|
||||||
[NonSerialized]
|
|
||||||
public FileConverter FileConverter;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -28,68 +28,41 @@ using System;
|
|||||||
using System.Text.Json.Serialization;
|
using System.Text.Json.Serialization;
|
||||||
|
|
||||||
using ASC.Files.Core.Security;
|
using ASC.Files.Core.Security;
|
||||||
using ASC.Web.Files.Classes;
|
|
||||||
|
|
||||||
namespace ASC.Files.Core
|
namespace ASC.Files.Core
|
||||||
{
|
{
|
||||||
[Serializable]
|
[Serializable]
|
||||||
public abstract class FileEntry : ICloneable
|
public abstract class FileEntry : ICloneable
|
||||||
{
|
{
|
||||||
public FileEntry(Global global)
|
public string Title { get; set; }
|
||||||
{
|
|
||||||
Global = global;
|
|
||||||
}
|
|
||||||
|
|
||||||
public FileEntry()
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public virtual string Title { get; set; }
|
|
||||||
|
|
||||||
[JsonPropertyName("create_by_id")]
|
|
||||||
public Guid CreateBy { get; set; }
|
public Guid CreateBy { get; set; }
|
||||||
|
|
||||||
[JsonPropertyName("create_by")]
|
[JsonIgnore]
|
||||||
public string CreateByString
|
|
||||||
{
|
|
||||||
get { return !CreateBy.Equals(Guid.Empty) ? Global.GetUserName(CreateBy) : _createByString; }
|
|
||||||
set { _createByString = value; }
|
|
||||||
}
|
|
||||||
|
|
||||||
[JsonPropertyName("create_on")]
|
|
||||||
public string CreateOnString
|
public string CreateOnString
|
||||||
{
|
{
|
||||||
get { return CreateOn.Equals(default) ? null : CreateOn.ToString("g"); }
|
get { return CreateOn.Equals(default) ? null : CreateOn.ToString("g"); }
|
||||||
}
|
}
|
||||||
|
|
||||||
[JsonPropertyName("modified_on")]
|
[JsonIgnore]
|
||||||
public string ModifiedOnString
|
public string ModifiedOnString
|
||||||
{
|
{
|
||||||
get { return ModifiedOn.Equals(default) ? null : ModifiedOn.ToString("g"); }
|
get { return ModifiedOn.Equals(default) ? null : ModifiedOn.ToString("g"); }
|
||||||
}
|
}
|
||||||
|
|
||||||
[JsonPropertyName("modified_by_id")]
|
|
||||||
public Guid ModifiedBy { get; set; }
|
public Guid ModifiedBy { get; set; }
|
||||||
|
|
||||||
[JsonPropertyName("modified_by")]
|
|
||||||
public string ModifiedByString
|
|
||||||
{
|
|
||||||
get { return !ModifiedBy.Equals(Guid.Empty) ? Global.GetUserName(ModifiedBy) : _modifiedByString; }
|
|
||||||
set { _modifiedByString = value; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public string Error { get; set; }
|
public string Error { get; set; }
|
||||||
|
|
||||||
public FileShare Access { get; set; }
|
public FileShare Access { get; set; }
|
||||||
|
|
||||||
public bool Shared { get; set; }
|
public bool Shared { get; set; }
|
||||||
|
|
||||||
[JsonPropertyName("provider_id")]
|
|
||||||
public int ProviderId { get; set; }
|
public int ProviderId { get; set; }
|
||||||
|
|
||||||
[JsonPropertyName("provider_key")]
|
public string ProviderKey { get; set; }
|
||||||
public string ProviderKey { get; set; }
|
|
||||||
|
[JsonIgnore]
|
||||||
public bool ProviderEntry
|
public bool ProviderEntry
|
||||||
{
|
{
|
||||||
get { return !string.IsNullOrEmpty(ProviderKey); }
|
get { return !string.IsNullOrEmpty(ProviderKey); }
|
||||||
@ -107,12 +80,8 @@ namespace ASC.Files.Core
|
|||||||
|
|
||||||
public FileEntryType FileEntryType;
|
public FileEntryType FileEntryType;
|
||||||
|
|
||||||
[NonSerialized]
|
public string _modifiedByString;
|
||||||
public Global Global;
|
public string _createByString;
|
||||||
|
|
||||||
private string _modifiedByString;
|
|
||||||
private string _createByString;
|
|
||||||
|
|
||||||
|
|
||||||
public override string ToString()
|
public override string ToString()
|
||||||
{
|
{
|
||||||
@ -128,14 +97,6 @@ namespace ASC.Files.Core
|
|||||||
[Serializable]
|
[Serializable]
|
||||||
public abstract class FileEntry<T> : FileEntry, ICloneable
|
public abstract class FileEntry<T> : FileEntry, ICloneable
|
||||||
{
|
{
|
||||||
public FileEntry(Global global) : base(global)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
public FileEntry()
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public T ID { get; set; }
|
public T ID { get; set; }
|
||||||
|
|
||||||
@ -143,7 +104,6 @@ namespace ASC.Files.Core
|
|||||||
|
|
||||||
private T _folderIdDisplay;
|
private T _folderIdDisplay;
|
||||||
|
|
||||||
[JsonPropertyName("folder_id")]
|
|
||||||
public T FolderIdDisplay
|
public T FolderIdDisplay
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
@ -155,7 +115,9 @@ namespace ASC.Files.Core
|
|||||||
set { _folderIdDisplay = value; }
|
set { _folderIdDisplay = value; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public T RootFolderId { get; set; }
|
public T RootFolderId { get; set; }
|
||||||
|
|
||||||
|
[JsonIgnore]
|
||||||
public string UniqID
|
public string UniqID
|
||||||
{
|
{
|
||||||
get { return string.Format("{0}_{1}", GetType().Name.ToLower(), ID); }
|
get { return string.Format("{0}_{1}", GetType().Name.ToLower(), ID); }
|
||||||
|
110
products/ASC.Files/Core/Core/Entries/FileHelper.cs
Normal file
110
products/ASC.Files/Core/Core/Entries/FileHelper.cs
Normal file
@ -0,0 +1,110 @@
|
|||||||
|
/*
|
||||||
|
*
|
||||||
|
* (c) Copyright Ascensio System Limited 2010-2021
|
||||||
|
*
|
||||||
|
* This program is freeware. You can redistribute it and/or modify it under the terms of the GNU
|
||||||
|
* General Public License (GPL) version 3 as published by the Free Software Foundation (https://www.gnu.org/copyleft/gpl.html).
|
||||||
|
* In accordance with Section 7(a) of the GNU GPL its Section 15 shall be amended to the effect that
|
||||||
|
* Ascensio System SIA expressly excludes the warranty of non-infringement of any third-party rights.
|
||||||
|
*
|
||||||
|
* THIS PROGRAM IS DISTRIBUTED WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY OR
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE. For more details, see GNU GPL at https://www.gnu.org/copyleft/gpl.html
|
||||||
|
*
|
||||||
|
* You can contact Ascensio System SIA by email at sales@onlyoffice.com
|
||||||
|
*
|
||||||
|
* The interactive user interfaces in modified source and object code versions of ONLYOFFICE must display
|
||||||
|
* Appropriate Legal Notices, as required under Section 5 of the GNU GPL version 3.
|
||||||
|
*
|
||||||
|
* Pursuant to Section 7 § 3(b) of the GNU GPL you must retain the original ONLYOFFICE logo which contains
|
||||||
|
* relevant author attributions when distributing the software. If the display of the logo in its graphic
|
||||||
|
* form is not reasonably feasible for technical reasons, you must include the words "Powered by ONLYOFFICE"
|
||||||
|
* in every copy of the program you distribute.
|
||||||
|
* Pursuant to Section 7 § 3(e) we decline to grant you any rights under trademark law for use of our trademarks.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
using System;
|
||||||
|
|
||||||
|
using ASC.Common;
|
||||||
|
using ASC.Web.Core.Files;
|
||||||
|
using ASC.Web.Files.Classes;
|
||||||
|
using ASC.Web.Files.Utils;
|
||||||
|
|
||||||
|
namespace ASC.Files.Core
|
||||||
|
{
|
||||||
|
[Transient]
|
||||||
|
public class FileHelper<T>
|
||||||
|
{
|
||||||
|
private FileTrackerHelper FileTracker { get; set; }
|
||||||
|
|
||||||
|
private FilesLinkUtility FilesLinkUtility { get; set; }
|
||||||
|
|
||||||
|
private FileUtility FileUtility { get; set; }
|
||||||
|
|
||||||
|
private FileConverter FileConverter { get; set; }
|
||||||
|
|
||||||
|
private Global Global { get; set; }
|
||||||
|
|
||||||
|
public FileEntry FileEntry { get; set; }
|
||||||
|
|
||||||
|
public FileHelper(FileTrackerHelper fileTracker, FilesLinkUtility filesLinkUtility, FileUtility fileUtility, FileConverter fileConverter, Global global)
|
||||||
|
{
|
||||||
|
FileTracker = fileTracker;
|
||||||
|
FilesLinkUtility = filesLinkUtility;
|
||||||
|
FileUtility = fileUtility;
|
||||||
|
FileConverter = fileConverter;
|
||||||
|
Global = global;
|
||||||
|
}
|
||||||
|
|
||||||
|
public string CreateByString
|
||||||
|
{
|
||||||
|
get { return !FileEntry.CreateBy.Equals(Guid.Empty) ? Global.GetUserName(FileEntry.CreateBy) : FileEntry._createByString; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public string ModifiedByString
|
||||||
|
{
|
||||||
|
get { return !FileEntry.ModifiedBy.Equals(Guid.Empty) ? Global.GetUserName(FileEntry.ModifiedBy) : FileEntry._modifiedByString; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public string Title
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
var File = (File<T>)FileEntry;
|
||||||
|
return string.IsNullOrEmpty(File.ConvertedType)
|
||||||
|
? File.Title
|
||||||
|
: FileUtility.ReplaceFileExtension(File.Title, FileUtility.GetInternalExtension(File.Title));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public FileStatus FileStatus
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
|
||||||
|
var File = (File<T>)FileEntry;
|
||||||
|
if (FileTracker.IsEditing(File.ID))
|
||||||
|
{
|
||||||
|
File._status |= FileStatus.IsEditing;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (FileTracker.IsEditingAlone(File.ID))
|
||||||
|
{
|
||||||
|
File._status |= FileStatus.IsEditingAlone;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (FileConverter.IsConverting(File))
|
||||||
|
{
|
||||||
|
File._status |= FileStatus.IsConverting;
|
||||||
|
}
|
||||||
|
|
||||||
|
return File._status;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public string DownloadUrl
|
||||||
|
{
|
||||||
|
get { return FilesLinkUtility.GetFileDownloadUrl(((FileEntry<T>)FileEntry).ID); }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -28,7 +28,6 @@ using System;
|
|||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
|
|
||||||
using ASC.Common;
|
using ASC.Common;
|
||||||
using ASC.Web.Files.Classes;
|
|
||||||
|
|
||||||
namespace ASC.Files.Core
|
namespace ASC.Files.Core
|
||||||
{
|
{
|
||||||
@ -84,8 +83,7 @@ namespace ASC.Files.Core
|
|||||||
set { NewForMe = Convert.ToInt32(value); }
|
set { NewForMe = Convert.ToInt32(value); }
|
||||||
}
|
}
|
||||||
|
|
||||||
public Folder(Global global)
|
public Folder()
|
||||||
: base(global)
|
|
||||||
{
|
{
|
||||||
Title = string.Empty;
|
Title = string.Empty;
|
||||||
FileEntryType = FileEntryType.Folder;
|
FileEntryType = FileEntryType.Folder;
|
||||||
|
@ -405,7 +405,7 @@ namespace ASC.Web.Files.Services.WCFService
|
|||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var newFolder = ServiceProvider.GetService<Folder<T>>();
|
var newFolder = new Folder<T>();
|
||||||
newFolder.Title = title;
|
newFolder.Title = title;
|
||||||
newFolder.FolderID = parent.ID;
|
newFolder.FolderID = parent.ID;
|
||||||
|
|
||||||
@ -578,7 +578,7 @@ namespace ASC.Web.Files.Services.WCFService
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
var file = ServiceProvider.GetService<File<T>>();
|
var file = new File<T>();
|
||||||
file.FolderID = folder.ID;
|
file.FolderID = folder.ID;
|
||||||
file.Comment = FilesCommonResource.CommentCreate;
|
file.Comment = FilesCommonResource.CommentCreate;
|
||||||
|
|
||||||
@ -1532,7 +1532,7 @@ namespace ASC.Web.Files.Services.WCFService
|
|||||||
|
|
||||||
if (file == null)
|
if (file == null)
|
||||||
{
|
{
|
||||||
var newFile = ServiceProvider.GetService<File<T>>();
|
var newFile = new File<T>();
|
||||||
newFile.ID = fileId;
|
newFile.ID = fileId;
|
||||||
newFile.Version = version;
|
newFile.Version = version;
|
||||||
|
|
||||||
@ -1602,7 +1602,7 @@ namespace ASC.Web.Files.Services.WCFService
|
|||||||
{
|
{
|
||||||
//create folder with name userFrom in folder userTo
|
//create folder with name userFrom in folder userTo
|
||||||
var folderIdToMy = folderDao.GetFolderIDUser(true, userTo.ID);
|
var folderIdToMy = folderDao.GetFolderIDUser(true, userTo.ID);
|
||||||
var newFolder = ServiceProvider.GetService<Folder<T>>();
|
var newFolder = new Folder<T>();
|
||||||
newFolder.Title = string.Format(CustomNamingPeople.Substitute<FilesCommonResource>("TitleDeletedUserFolder"), userFrom.DisplayUserName(false, DisplayUserSettingsHelper));
|
newFolder.Title = string.Format(CustomNamingPeople.Substitute<FilesCommonResource>("TitleDeletedUserFolder"), userFrom.DisplayUserName(false, DisplayUserSettingsHelper));
|
||||||
newFolder.FolderID = folderIdToMy;
|
newFolder.FolderID = folderIdToMy;
|
||||||
|
|
||||||
@ -2138,12 +2138,14 @@ namespace ASC.Web.Files.Services.WCFService
|
|||||||
var newFile = file;
|
var newFile = file;
|
||||||
if (file.CreateBy != userInfo.ID)
|
if (file.CreateBy != userInfo.ID)
|
||||||
{
|
{
|
||||||
newFile = ServiceProvider.GetService<File<T>>();
|
newFile = new File<T>();
|
||||||
|
var fileHelper = ServiceProvider.GetService<FileHelper<T>>();
|
||||||
|
fileHelper.FileEntry = file;
|
||||||
newFile.ID = file.ID;
|
newFile.ID = file.ID;
|
||||||
newFile.Version = file.Version + 1;
|
newFile.Version = file.Version + 1;
|
||||||
newFile.VersionGroup = file.VersionGroup + 1;
|
newFile.VersionGroup = file.VersionGroup + 1;
|
||||||
newFile.Title = file.Title;
|
newFile.Title = file.Title;
|
||||||
newFile.FileStatus = file.FileStatus;
|
newFile._status = fileHelper.FileStatus;
|
||||||
newFile.FolderID = file.FolderID;
|
newFile.FolderID = file.FolderID;
|
||||||
newFile.CreateBy = userInfo.ID;
|
newFile.CreateBy = userInfo.ID;
|
||||||
newFile.CreateOn = file.CreateOn;
|
newFile.CreateOn = file.CreateOn;
|
||||||
|
@ -118,7 +118,7 @@ namespace ASC.Files.Core.Thirdparty
|
|||||||
{
|
{
|
||||||
var fromFolder = fromFolderDao.GetFolder(fromConverter(fromFolderId));
|
var fromFolder = fromFolderDao.GetFolder(fromConverter(fromFolderId));
|
||||||
|
|
||||||
var toFolder1 = ServiceProvider.GetService<Folder<TTo>>();
|
var toFolder1 = new Folder<TTo>();
|
||||||
toFolder1.Title = fromFolder.Title;
|
toFolder1.Title = fromFolder.Title;
|
||||||
toFolder1.FolderID = toConverter(toRootFolderId);
|
toFolder1.FolderID = toConverter(toRootFolderId);
|
||||||
|
|
||||||
|
@ -20,7 +20,6 @@ using ASC.Web.Files.Services.DocumentService;
|
|||||||
using ASC.Web.Studio.Core;
|
using ASC.Web.Studio.Core;
|
||||||
|
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
|
||||||
using Microsoft.Extensions.Options;
|
using Microsoft.Extensions.Options;
|
||||||
|
|
||||||
using FileShare = ASC.Files.Core.Security.FileShare;
|
using FileShare = ASC.Files.Core.Security.FileShare;
|
||||||
@ -290,7 +289,7 @@ namespace ASC.Files.Thirdparty
|
|||||||
|
|
||||||
protected Folder<string> GetFolder()
|
protected Folder<string> GetFolder()
|
||||||
{
|
{
|
||||||
var folder = ServiceProvider.GetService<Folder<string>>();
|
var folder = new Folder<string>();
|
||||||
|
|
||||||
InitFileEntry(folder);
|
InitFileEntry(folder);
|
||||||
|
|
||||||
@ -315,12 +314,11 @@ namespace ASC.Files.Thirdparty
|
|||||||
|
|
||||||
protected File<string> GetFile()
|
protected File<string> GetFile()
|
||||||
{
|
{
|
||||||
var file = ServiceProvider.GetService<File<string>>();
|
var file = new File<string>();
|
||||||
|
|
||||||
InitFileEntry(file);
|
InitFileEntry(file);
|
||||||
|
|
||||||
file.Access = FileShare.None;
|
file.Access = FileShare.None;
|
||||||
file.FileStatus = FileStatus.None;
|
|
||||||
file.Shared = false;
|
file.Shared = false;
|
||||||
file.Version = 1;
|
file.Version = 1;
|
||||||
|
|
||||||
|
@ -35,8 +35,6 @@ using ASC.Files.Core.Data;
|
|||||||
using ASC.Files.Core.Security;
|
using ASC.Files.Core.Security;
|
||||||
using ASC.Files.Core.Thirdparty;
|
using ASC.Files.Core.Thirdparty;
|
||||||
|
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
|
||||||
|
|
||||||
namespace ASC.Files.Thirdparty.ProviderDao
|
namespace ASC.Files.Thirdparty.ProviderDao
|
||||||
{
|
{
|
||||||
[Scope]
|
[Scope]
|
||||||
@ -155,7 +153,7 @@ namespace ASC.Files.Thirdparty.ProviderDao
|
|||||||
foreach (var pureShareRecord in pureShareRecords)
|
foreach (var pureShareRecord in pureShareRecords)
|
||||||
{
|
{
|
||||||
if (pureShareRecord == null) continue;
|
if (pureShareRecord == null) continue;
|
||||||
var f = ServiceProvider.GetService<Folder<string>>();
|
var f = new Folder<string>();
|
||||||
f.ID = pureShareRecord.EntryId.ToString();
|
f.ID = pureShareRecord.EntryId.ToString();
|
||||||
|
|
||||||
pureShareRecord.Level = parentFolders.IndexOf(f);
|
pureShareRecord.Level = parentFolders.IndexOf(f);
|
||||||
|
@ -37,9 +37,8 @@ using ASC.Common.Caching;
|
|||||||
using ASC.Common.Logging;
|
using ASC.Common.Logging;
|
||||||
using ASC.Core.Tenants;
|
using ASC.Core.Tenants;
|
||||||
using ASC.Files.Core;
|
using ASC.Files.Core;
|
||||||
using ASC.Web.Files.Classes;
|
using ASC.Web.Files.Classes;
|
||||||
|
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
|
||||||
using Microsoft.Extensions.Options;
|
using Microsoft.Extensions.Options;
|
||||||
using Microsoft.SharePoint.Client;
|
using Microsoft.SharePoint.Client;
|
||||||
|
|
||||||
@ -281,7 +280,7 @@ namespace ASC.Files.Thirdparty.SharePoint
|
|||||||
if (file == null)
|
if (file == null)
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
var result = ServiceProvider.GetService<File<string>>();
|
var result = new File<string>();
|
||||||
|
|
||||||
if (file is SharePointFileErrorEntry errorFile)
|
if (file is SharePointFileErrorEntry errorFile)
|
||||||
{
|
{
|
||||||
@ -307,7 +306,6 @@ namespace ASC.Files.Thirdparty.SharePoint
|
|||||||
//ContentLength = file.Length,
|
//ContentLength = file.Length,
|
||||||
result.CreateBy = Owner;
|
result.CreateBy = Owner;
|
||||||
result.CreateOn = file.TimeCreated.Kind == DateTimeKind.Utc ? TenantUtil.DateTimeFromUtc(file.TimeCreated) : file.TimeCreated;
|
result.CreateOn = file.TimeCreated.Kind == DateTimeKind.Utc ? TenantUtil.DateTimeFromUtc(file.TimeCreated) : file.TimeCreated;
|
||||||
result.FileStatus = FileStatus.None;
|
|
||||||
result.FolderID = MakeId(GetParentFolderId(file.ServerRelativeUrl));
|
result.FolderID = MakeId(GetParentFolderId(file.ServerRelativeUrl));
|
||||||
result.ModifiedBy = Owner;
|
result.ModifiedBy = Owner;
|
||||||
result.ModifiedOn = file.TimeLastModified.Kind == DateTimeKind.Utc ? TenantUtil.DateTimeFromUtc(file.TimeLastModified) : file.TimeLastModified;
|
result.ModifiedOn = file.TimeLastModified.Kind == DateTimeKind.Utc ? TenantUtil.DateTimeFromUtc(file.TimeLastModified) : file.TimeLastModified;
|
||||||
@ -498,7 +496,7 @@ namespace ASC.Files.Thirdparty.SharePoint
|
|||||||
{
|
{
|
||||||
if (folder == null) return null;
|
if (folder == null) return null;
|
||||||
|
|
||||||
var result = ServiceProvider.GetService<Folder<string>>();
|
var result = new Folder<string>();
|
||||||
|
|
||||||
if (folder is SharePointFolderErrorEntry errorFolder)
|
if (folder is SharePointFolderErrorEntry errorFolder)
|
||||||
{
|
{
|
||||||
|
@ -55,9 +55,8 @@ using ASC.Web.Studio.Core;
|
|||||||
|
|
||||||
using DocuSign.eSign.Api;
|
using DocuSign.eSign.Api;
|
||||||
using DocuSign.eSign.Client;
|
using DocuSign.eSign.Client;
|
||||||
using DocuSign.eSign.Model;
|
using DocuSign.eSign.Model;
|
||||||
|
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
|
||||||
using Microsoft.Extensions.Options;
|
using Microsoft.Extensions.Options;
|
||||||
using Microsoft.Extensions.Primitives;
|
using Microsoft.Extensions.Primitives;
|
||||||
|
|
||||||
@ -408,7 +407,7 @@ namespace ASC.Web.Files.Helpers
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var file = ServiceProvider.GetService<File<T>>();
|
var file = new File<T>();
|
||||||
file.FolderID = folderId;
|
file.FolderID = folderId;
|
||||||
file.Comment = FilesCommonResource.CommentCreateByDocuSign;
|
file.Comment = FilesCommonResource.CommentCreateByDocuSign;
|
||||||
file.Title = FileUtility.ReplaceFileExtension(documentName, ".pdf");
|
file.Title = FileUtility.ReplaceFileExtension(documentName, ".pdf");
|
||||||
|
@ -47,7 +47,6 @@ using ASC.Web.Core.WhiteLabel;
|
|||||||
using ASC.Web.Files.Utils;
|
using ASC.Web.Files.Utils;
|
||||||
|
|
||||||
using Microsoft.Extensions.Configuration;
|
using Microsoft.Extensions.Configuration;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
|
||||||
using Microsoft.Extensions.Options;
|
using Microsoft.Extensions.Options;
|
||||||
|
|
||||||
using Constants = ASC.Core.Configuration.Constants;
|
using Constants = ASC.Core.Configuration.Constants;
|
||||||
@ -572,7 +571,7 @@ namespace ASC.Web.Files.Classes
|
|||||||
|
|
||||||
foreach (var folderName in storeTemplate.ListDirectoriesRelative(path, false))
|
foreach (var folderName in storeTemplate.ListDirectoriesRelative(path, false))
|
||||||
{
|
{
|
||||||
var folder = ServiceProvider.GetService<Folder<T>>();
|
var folder = new Folder<T>();
|
||||||
folder.Title = folderName;
|
folder.Title = folderName;
|
||||||
folder.FolderID = folderId;
|
folder.FolderID = folderId;
|
||||||
|
|
||||||
@ -591,7 +590,7 @@ namespace ASC.Web.Files.Classes
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
var fileName = Path.GetFileName(filePath);
|
var fileName = Path.GetFileName(filePath);
|
||||||
var file = ServiceProvider.GetService<File<T>>();
|
var file = new File<T>();
|
||||||
|
|
||||||
file.Title = fileName;
|
file.Title = fileName;
|
||||||
file.FolderID = folder;
|
file.FolderID = folder;
|
||||||
|
@ -1144,7 +1144,7 @@ namespace ASC.Web.Files
|
|||||||
fileTitle += fileExt;
|
fileTitle += fileExt;
|
||||||
}
|
}
|
||||||
|
|
||||||
var file = ServiceProvider.GetService<File<T>>();
|
var file = new File<T>();
|
||||||
file.Title = fileTitle;
|
file.Title = fileTitle;
|
||||||
file.FolderID = folder.ID;
|
file.FolderID = folder.ID;
|
||||||
file.Comment = FilesCommonResource.CommentCreate;
|
file.Comment = FilesCommonResource.CommentCreate;
|
||||||
@ -1160,7 +1160,7 @@ namespace ASC.Web.Files
|
|||||||
if (string.IsNullOrEmpty(fileTitle))
|
if (string.IsNullOrEmpty(fileTitle))
|
||||||
fileTitle = Path.GetFileName(HttpUtility.UrlDecode(fileUri));
|
fileTitle = Path.GetFileName(HttpUtility.UrlDecode(fileUri));
|
||||||
|
|
||||||
var file = ServiceProvider.GetService<File<T>>();
|
var file = new File<T>();
|
||||||
file.Title = fileTitle;
|
file.Title = fileTitle;
|
||||||
file.FolderID = folder.ID;
|
file.FolderID = folder.ID;
|
||||||
file.Comment = FilesCommonResource.CommentCreate;
|
file.Comment = FilesCommonResource.CommentCreate;
|
||||||
|
@ -39,6 +39,8 @@ using ASC.Web.Files.Helpers;
|
|||||||
using ASC.Web.Files.Utils;
|
using ASC.Web.Files.Utils;
|
||||||
using ASC.Web.Studio.Core;
|
using ASC.Web.Studio.Core;
|
||||||
|
|
||||||
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
|
|
||||||
namespace ASC.Web.Files.Configuration
|
namespace ASC.Web.Files.Configuration
|
||||||
{
|
{
|
||||||
public class SearchHandler
|
public class SearchHandler
|
||||||
@ -72,6 +74,7 @@ namespace ASC.Web.Files.Configuration
|
|||||||
private FileUtility FileUtility { get; }
|
private FileUtility FileUtility { get; }
|
||||||
private PathProvider PathProvider { get; }
|
private PathProvider PathProvider { get; }
|
||||||
private ThirdpartyConfiguration ThirdpartyConfiguration { get; }
|
private ThirdpartyConfiguration ThirdpartyConfiguration { get; }
|
||||||
|
private IServiceProvider ServiceProvider { get; }
|
||||||
|
|
||||||
public SearchHandler(
|
public SearchHandler(
|
||||||
FileSecurity fileSecurity,
|
FileSecurity fileSecurity,
|
||||||
@ -82,7 +85,8 @@ namespace ASC.Web.Files.Configuration
|
|||||||
FilesLinkUtility filesLinkUtility,
|
FilesLinkUtility filesLinkUtility,
|
||||||
FileUtility fileUtility,
|
FileUtility fileUtility,
|
||||||
PathProvider pathProvider,
|
PathProvider pathProvider,
|
||||||
ThirdpartyConfiguration thirdpartyConfiguration)
|
ThirdpartyConfiguration thirdpartyConfiguration,
|
||||||
|
IServiceProvider serviceProvider)
|
||||||
{
|
{
|
||||||
FileSecurity = fileSecurity;
|
FileSecurity = fileSecurity;
|
||||||
DaoFactory = daoFactory;
|
DaoFactory = daoFactory;
|
||||||
@ -93,6 +97,7 @@ namespace ASC.Web.Files.Configuration
|
|||||||
FileUtility = fileUtility;
|
FileUtility = fileUtility;
|
||||||
PathProvider = pathProvider;
|
PathProvider = pathProvider;
|
||||||
ThirdpartyConfiguration = thirdpartyConfiguration;
|
ThirdpartyConfiguration = thirdpartyConfiguration;
|
||||||
|
ServiceProvider = serviceProvider;
|
||||||
}
|
}
|
||||||
|
|
||||||
public IEnumerable<File<int>> SearchFiles(string text)
|
public IEnumerable<File<int>> SearchFiles(string text)
|
||||||
@ -130,39 +135,49 @@ namespace ASC.Web.Files.Configuration
|
|||||||
public SearchResultItem[] Search(string text)
|
public SearchResultItem[] Search(string text)
|
||||||
{
|
{
|
||||||
var folderDao = DaoFactory.GetFolderDao<int>();
|
var folderDao = DaoFactory.GetFolderDao<int>();
|
||||||
var result = SearchFiles(text)
|
var files = SearchFiles(text);
|
||||||
.Select(r => new SearchResultItem
|
var helper = ServiceProvider.GetService<FileHelper<int>>();
|
||||||
{
|
List<SearchResultItem> list = new List<SearchResultItem>();
|
||||||
Name = r.Title ?? string.Empty,
|
foreach (var file in files)
|
||||||
Description = string.Empty,
|
{
|
||||||
URL = FilesLinkUtility.GetFileWebPreviewUrl(FileUtility, r.Title, r.ID),
|
helper.FileEntry = file;
|
||||||
Date = r.ModifiedOn,
|
var searchResultItem = new SearchResultItem
|
||||||
Additional = new Dictionary<string, object>
|
{
|
||||||
|
Name = file.Title ?? string.Empty,
|
||||||
|
Description = string.Empty,
|
||||||
|
URL = FilesLinkUtility.GetFileWebPreviewUrl(FileUtility, file.Title, file.ID),
|
||||||
|
Date = file.ModifiedOn,
|
||||||
|
Additional = new Dictionary<string, object>
|
||||||
{
|
{
|
||||||
{ "Author", r.CreateByString.HtmlEncode() },
|
{ "Author", helper.CreateByString.HtmlEncode() },
|
||||||
{ "Path", FolderPathBuilder<int>(EntryManager.GetBreadCrumbs(r.FolderID, folderDao)) },
|
{ "Path", FolderPathBuilder<int>(EntryManager.GetBreadCrumbs(file.FolderID, folderDao)) },
|
||||||
{ "Size", FileSizeComment.FilesSizeToString(r.ContentLength) }
|
{ "Size", FileSizeComment.FilesSizeToString(file.ContentLength) }
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
);
|
list.Add(searchResultItem);
|
||||||
|
}
|
||||||
|
|
||||||
var resultFolder = SearchFolders(text)
|
var folders = SearchFolders(text);
|
||||||
.Select(f =>
|
foreach (var folder in folders)
|
||||||
new SearchResultItem
|
{
|
||||||
{
|
helper.FileEntry = folder;
|
||||||
Name = f.Title ?? string.Empty,
|
var searchResultItem = new SearchResultItem
|
||||||
Description = string.Empty,
|
{
|
||||||
URL = PathProvider.GetFolderUrl(f),
|
Name = folder.Title ?? string.Empty,
|
||||||
Date = f.ModifiedOn,
|
Description = string.Empty,
|
||||||
Additional = new Dictionary<string, object>
|
URL = PathProvider.GetFolderUrl(folder),
|
||||||
|
Date = folder.ModifiedOn,
|
||||||
|
Additional = new Dictionary<string, object>
|
||||||
{
|
{
|
||||||
{ "Author", f.CreateByString.HtmlEncode() },
|
{ "Author", helper.CreateByString.HtmlEncode() },
|
||||||
{ "Path", FolderPathBuilder<int>(EntryManager.GetBreadCrumbs(f.ID, folderDao)) },
|
{ "Path", FolderPathBuilder<int>(EntryManager.GetBreadCrumbs(folder.ID, folderDao)) },
|
||||||
{ "IsFolder", true }
|
{ "IsFolder", true }
|
||||||
}
|
}
|
||||||
});
|
};
|
||||||
|
list.Add(searchResultItem);
|
||||||
|
}
|
||||||
|
|
||||||
return result.Concat(resultFolder).ToArray();
|
return list.ToArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static string FolderPathBuilder<T>(IEnumerable<FileEntry> folders)
|
private static string FolderPathBuilder<T>(IEnumerable<FileEntry> folders)
|
||||||
|
@ -40,6 +40,8 @@ using ASC.Web.Core.Files;
|
|||||||
using ASC.Web.Files.Classes;
|
using ASC.Web.Files.Classes;
|
||||||
using ASC.Web.Studio.Utility;
|
using ASC.Web.Studio.Utility;
|
||||||
|
|
||||||
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
|
|
||||||
using FileShare = ASC.Files.Core.Security.FileShare;
|
using FileShare = ASC.Files.Core.Security.FileShare;
|
||||||
namespace ASC.Api.Documents
|
namespace ASC.Api.Documents
|
||||||
{
|
{
|
||||||
@ -153,7 +155,8 @@ namespace ASC.Api.Documents
|
|||||||
private GlobalFolderHelper GlobalFolderHelper { get; }
|
private GlobalFolderHelper GlobalFolderHelper { get; }
|
||||||
private CommonLinkUtility CommonLinkUtility { get; }
|
private CommonLinkUtility CommonLinkUtility { get; }
|
||||||
private FilesLinkUtility FilesLinkUtility { get; }
|
private FilesLinkUtility FilesLinkUtility { get; }
|
||||||
private FileUtility FileUtility { get; }
|
private FileUtility FileUtility { get; }
|
||||||
|
private IServiceProvider ServiceProvider { get; }
|
||||||
|
|
||||||
public FileWrapperHelper(
|
public FileWrapperHelper(
|
||||||
ApiDateTimeHelper apiDateTimeHelper,
|
ApiDateTimeHelper apiDateTimeHelper,
|
||||||
@ -164,7 +167,8 @@ namespace ASC.Api.Documents
|
|||||||
GlobalFolderHelper globalFolderHelper,
|
GlobalFolderHelper globalFolderHelper,
|
||||||
CommonLinkUtility commonLinkUtility,
|
CommonLinkUtility commonLinkUtility,
|
||||||
FilesLinkUtility filesLinkUtility,
|
FilesLinkUtility filesLinkUtility,
|
||||||
FileUtility fileUtility)
|
FileUtility fileUtility,
|
||||||
|
IServiceProvider serviceProvider)
|
||||||
: base(apiDateTimeHelper, employeeWrapperHelper)
|
: base(apiDateTimeHelper, employeeWrapperHelper)
|
||||||
{
|
{
|
||||||
AuthContext = authContext;
|
AuthContext = authContext;
|
||||||
@ -173,7 +177,8 @@ namespace ASC.Api.Documents
|
|||||||
GlobalFolderHelper = globalFolderHelper;
|
GlobalFolderHelper = globalFolderHelper;
|
||||||
CommonLinkUtility = commonLinkUtility;
|
CommonLinkUtility = commonLinkUtility;
|
||||||
FilesLinkUtility = filesLinkUtility;
|
FilesLinkUtility = filesLinkUtility;
|
||||||
FileUtility = fileUtility;
|
FileUtility = fileUtility;
|
||||||
|
ServiceProvider = serviceProvider;
|
||||||
}
|
}
|
||||||
|
|
||||||
public FileWrapper<T> Get<T>(File<T> file, List<Tuple<FileEntry<T>, bool>> folders = null)
|
public FileWrapper<T> Get<T>(File<T> file, List<Tuple<FileEntry<T>, bool>> folders = null)
|
||||||
@ -212,6 +217,9 @@ namespace ASC.Api.Documents
|
|||||||
|
|
||||||
private FileWrapper<T> GetFileWrapper<T>(File<T> file)
|
private FileWrapper<T> GetFileWrapper<T>(File<T> file)
|
||||||
{
|
{
|
||||||
|
var fileHelper = ServiceProvider.GetService<FileHelper<T>>();
|
||||||
|
fileHelper.FileEntry = file;
|
||||||
|
|
||||||
var result = Get<FileWrapper<T>, T>(file);
|
var result = Get<FileWrapper<T>, T>(file);
|
||||||
|
|
||||||
result.FileExst = FileUtility.GetFileExtension(file.Title);
|
result.FileExst = FileUtility.GetFileExtension(file.Title);
|
||||||
@ -219,7 +227,7 @@ namespace ASC.Api.Documents
|
|||||||
result.Version = file.Version;
|
result.Version = file.Version;
|
||||||
result.VersionGroup = file.VersionGroup;
|
result.VersionGroup = file.VersionGroup;
|
||||||
result.ContentLength = file.ContentLengthString;
|
result.ContentLength = file.ContentLengthString;
|
||||||
result.FileStatus = file.FileStatus;
|
result.FileStatus = fileHelper.FileStatus;
|
||||||
result.PureContentLength = file.ContentLength.NullIfDefault();
|
result.PureContentLength = file.ContentLength.NullIfDefault();
|
||||||
result.Comment = file.Comment;
|
result.Comment = file.Comment;
|
||||||
result.Encrypted = file.Encrypted.NullIfDefault();
|
result.Encrypted = file.Encrypted.NullIfDefault();
|
||||||
@ -228,7 +236,7 @@ namespace ASC.Api.Documents
|
|||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
result.ViewUrl = CommonLinkUtility.GetFullAbsolutePath(file.DownloadUrl);
|
result.ViewUrl = CommonLinkUtility.GetFullAbsolutePath(fileHelper.DownloadUrl);
|
||||||
|
|
||||||
result.WebUrl = CommonLinkUtility.GetFullAbsolutePath(FilesLinkUtility.GetFileWebPreviewUrl(FileUtility, file.Title, file.ID, file.Version));
|
result.WebUrl = CommonLinkUtility.GetFullAbsolutePath(FilesLinkUtility.GetFileWebPreviewUrl(FileUtility, file.Title, file.ID, file.Version));
|
||||||
|
|
||||||
|
@ -200,17 +200,19 @@ namespace ASC.Web.Files.Services.DocumentService
|
|||||||
[Transient]
|
[Transient]
|
||||||
public class InfoConfig<T>
|
public class InfoConfig<T>
|
||||||
{
|
{
|
||||||
public File<T> File;
|
public File<T> File;
|
||||||
|
private FileHelper<T> FileHelper;
|
||||||
|
|
||||||
public EditorType Type = EditorType.Desktop;
|
public EditorType Type = EditorType.Desktop;
|
||||||
private string _breadCrumbs;
|
private string _breadCrumbs;
|
||||||
|
|
||||||
public InfoConfig(BreadCrumbsManager breadCrumbsManager, FileSharing fileSharing, SecurityContext securityContext, UserManager userManager)
|
public InfoConfig(BreadCrumbsManager breadCrumbsManager, FileSharing fileSharing, SecurityContext securityContext, UserManager userManager, FileHelper<T> fileHelper)
|
||||||
{
|
{
|
||||||
BreadCrumbsManager = breadCrumbsManager;
|
BreadCrumbsManager = breadCrumbsManager;
|
||||||
FileSharing = fileSharing;
|
FileSharing = fileSharing;
|
||||||
SecurityContext = securityContext;
|
SecurityContext = securityContext;
|
||||||
UserManager = userManager;
|
UserManager = userManager;
|
||||||
|
FileHelper = fileHelper;
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool? Favorite
|
public bool? Favorite
|
||||||
@ -245,7 +247,10 @@ namespace ASC.Web.Files.Services.DocumentService
|
|||||||
public string Owner
|
public string Owner
|
||||||
{
|
{
|
||||||
set { }
|
set { }
|
||||||
get { return File.CreateByString; }
|
get {
|
||||||
|
FileHelper.FileEntry = File;
|
||||||
|
return FileHelper.CreateByString;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public string Uploaded
|
public string Uploaded
|
||||||
|
@ -62,7 +62,6 @@ using ASC.Web.Studio.Utility;
|
|||||||
|
|
||||||
using Microsoft.AspNetCore.Http;
|
using Microsoft.AspNetCore.Http;
|
||||||
using Microsoft.Extensions.Configuration;
|
using Microsoft.Extensions.Configuration;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
|
||||||
using Microsoft.Extensions.Options;
|
using Microsoft.Extensions.Options;
|
||||||
|
|
||||||
using Newtonsoft.Json.Linq;
|
using Newtonsoft.Json.Linq;
|
||||||
@ -207,7 +206,7 @@ namespace ASC.Web.Files.ThirdPartyApp
|
|||||||
|
|
||||||
var jsonFile = JObject.Parse(boxFile);
|
var jsonFile = JObject.Parse(boxFile);
|
||||||
|
|
||||||
var file = ServiceProvider.GetService<File<string>>();
|
var file = new File<string>();
|
||||||
file.ID = ThirdPartySelector.BuildAppFileId(AppAttr, jsonFile.Value<string>("id"));
|
file.ID = ThirdPartySelector.BuildAppFileId(AppAttr, jsonFile.Value<string>("id"));
|
||||||
file.Title = Global.ReplaceInvalidCharsAndTruncate(jsonFile.Value<string>("name"));
|
file.Title = Global.ReplaceInvalidCharsAndTruncate(jsonFile.Value<string>("name"));
|
||||||
file.CreateOn = TenantUtil.DateTimeFromUtc(jsonFile.Value<DateTime>("created_at"));
|
file.CreateOn = TenantUtil.DateTimeFromUtc(jsonFile.Value<DateTime>("created_at"));
|
||||||
@ -218,13 +217,13 @@ namespace ASC.Web.Files.ThirdPartyApp
|
|||||||
var modifiedBy = jsonFile.Value<JObject>("modified_by");
|
var modifiedBy = jsonFile.Value<JObject>("modified_by");
|
||||||
if (modifiedBy != null)
|
if (modifiedBy != null)
|
||||||
{
|
{
|
||||||
file.ModifiedByString = modifiedBy.Value<string>("name");
|
file._modifiedByString = modifiedBy.Value<string>("name");
|
||||||
}
|
}
|
||||||
|
|
||||||
var createdBy = jsonFile.Value<JObject>("created_by");
|
var createdBy = jsonFile.Value<JObject>("created_by");
|
||||||
if (createdBy != null)
|
if (createdBy != null)
|
||||||
{
|
{
|
||||||
file.CreateByString = createdBy.Value<string>("name");
|
file._createByString = createdBy.Value<string>("name");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -63,7 +63,6 @@ using ASC.Web.Studio.Utility;
|
|||||||
|
|
||||||
using Microsoft.AspNetCore.Http;
|
using Microsoft.AspNetCore.Http;
|
||||||
using Microsoft.Extensions.Configuration;
|
using Microsoft.Extensions.Configuration;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
|
||||||
using Microsoft.Extensions.Options;
|
using Microsoft.Extensions.Options;
|
||||||
|
|
||||||
using Newtonsoft.Json.Linq;
|
using Newtonsoft.Json.Linq;
|
||||||
@ -227,19 +226,19 @@ namespace ASC.Web.Files.ThirdPartyApp
|
|||||||
|
|
||||||
var jsonFile = JObject.Parse(driveFile);
|
var jsonFile = JObject.Parse(driveFile);
|
||||||
|
|
||||||
var file = ServiceProvider.GetService<File<string>>();
|
var file = new File<string>();
|
||||||
file.ID = ThirdPartySelector.BuildAppFileId(AppAttr, jsonFile.Value<string>("id"));
|
file.ID = ThirdPartySelector.BuildAppFileId(AppAttr, jsonFile.Value<string>("id"));
|
||||||
file.Title = Global.ReplaceInvalidCharsAndTruncate(GetCorrectTitle(jsonFile));
|
file.Title = Global.ReplaceInvalidCharsAndTruncate(GetCorrectTitle(jsonFile));
|
||||||
file.CreateOn = TenantUtil.DateTimeFromUtc(jsonFile.Value<DateTime>("createdTime"));
|
file.CreateOn = TenantUtil.DateTimeFromUtc(jsonFile.Value<DateTime>("createdTime"));
|
||||||
file.ModifiedOn = TenantUtil.DateTimeFromUtc(jsonFile.Value<DateTime>("modifiedTime"));
|
file.ModifiedOn = TenantUtil.DateTimeFromUtc(jsonFile.Value<DateTime>("modifiedTime"));
|
||||||
file.ContentLength = Convert.ToInt64(jsonFile.Value<string>("size"));
|
file.ContentLength = Convert.ToInt64(jsonFile.Value<string>("size"));
|
||||||
file.ModifiedByString = jsonFile["lastModifyingUser"]["displayName"].Value<string>();
|
file._modifiedByString = jsonFile["lastModifyingUser"]["displayName"].Value<string>();
|
||||||
file.ProviderKey = "Google";
|
file.ProviderKey = "Google";
|
||||||
|
|
||||||
var owners = jsonFile["owners"];
|
var owners = jsonFile["owners"];
|
||||||
if (owners != null)
|
if (owners != null)
|
||||||
{
|
{
|
||||||
file.CreateByString = owners[0]["displayName"].Value<string>();
|
file._createByString = owners[0]["displayName"].Value<string>();
|
||||||
}
|
}
|
||||||
|
|
||||||
editable = jsonFile["capabilities"]["canEdit"].Value<bool>();
|
editable = jsonFile["capabilities"]["canEdit"].Value<bool>();
|
||||||
|
@ -31,11 +31,8 @@ using ASC.Common;
|
|||||||
using ASC.Common.Logging;
|
using ASC.Common.Logging;
|
||||||
using ASC.Core.ChunkedUploader;
|
using ASC.Core.ChunkedUploader;
|
||||||
using ASC.Files.Core;
|
using ASC.Files.Core;
|
||||||
using ASC.Web.Core.Files;
|
|
||||||
using ASC.Web.Files.Classes;
|
using ASC.Web.Files.Classes;
|
||||||
using ASC.Web.Studio.Core;
|
using ASC.Web.Studio.Core;
|
||||||
|
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
|
||||||
|
|
||||||
using Microsoft.Extensions.Options;
|
using Microsoft.Extensions.Options;
|
||||||
|
|
||||||
@ -46,21 +43,18 @@ namespace ASC.Web.Files.Utils
|
|||||||
{
|
{
|
||||||
public static readonly TimeSpan SlidingExpiration = TimeSpan.FromHours(12);
|
public static readonly TimeSpan SlidingExpiration = TimeSpan.FromHours(12);
|
||||||
|
|
||||||
private IOptionsMonitor<ILog> Options { get; }
|
private IOptionsMonitor<ILog> Options { get; }
|
||||||
private IServiceProvider ServiceProvider { get; }
|
|
||||||
private GlobalStore GlobalStore { get; }
|
private GlobalStore GlobalStore { get; }
|
||||||
private SetupInfo SetupInfo { get; }
|
private SetupInfo SetupInfo { get; }
|
||||||
private TempPath TempPath { get; }
|
private TempPath TempPath { get; }
|
||||||
|
|
||||||
public ChunkedUploadSessionHolder(
|
public ChunkedUploadSessionHolder(
|
||||||
IOptionsMonitor<ILog> options,
|
IOptionsMonitor<ILog> options,
|
||||||
IServiceProvider serviceProvider,
|
|
||||||
GlobalStore globalStore,
|
GlobalStore globalStore,
|
||||||
SetupInfo setupInfo,
|
SetupInfo setupInfo,
|
||||||
TempPath tempPath)
|
TempPath tempPath)
|
||||||
{
|
{
|
||||||
Options = options;
|
Options = options;
|
||||||
ServiceProvider = serviceProvider;
|
|
||||||
GlobalStore = globalStore;
|
GlobalStore = globalStore;
|
||||||
SetupInfo = setupInfo;
|
SetupInfo = setupInfo;
|
||||||
TempPath = tempPath;
|
TempPath = tempPath;
|
||||||
@ -90,11 +84,6 @@ namespace ASC.Web.Files.Utils
|
|||||||
{
|
{
|
||||||
using var stream = CommonSessionHolder(false).GetStream(sessionId);
|
using var stream = CommonSessionHolder(false).GetStream(sessionId);
|
||||||
var chunkedUploadSession = ChunkedUploadSession<T>.Deserialize(stream);
|
var chunkedUploadSession = ChunkedUploadSession<T>.Deserialize(stream);
|
||||||
chunkedUploadSession.File.Global = ServiceProvider.GetService<Global>();
|
|
||||||
chunkedUploadSession.File.FilesLinkUtility = ServiceProvider.GetService<FilesLinkUtility>();
|
|
||||||
chunkedUploadSession.File.FileUtility = ServiceProvider.GetService<FileUtility>();
|
|
||||||
chunkedUploadSession.File.FileConverter = ServiceProvider.GetService<FileConverter>();
|
|
||||||
chunkedUploadSession.File.FileTracker = ServiceProvider.GetService<FileTrackerHelper>();
|
|
||||||
return chunkedUploadSession;
|
return chunkedUploadSession;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -777,7 +777,14 @@ namespace ASC.Web.Files.Utils
|
|||||||
,
|
,
|
||||||
SortedByType.Author => (x, y) =>
|
SortedByType.Author => (x, y) =>
|
||||||
{
|
{
|
||||||
var cmp = c * string.Compare(x.CreateByString, y.CreateByString);
|
var fileHelper = ServiceProvider.GetService<FileHelper<T>>();
|
||||||
|
fileHelper.FileEntry = x;
|
||||||
|
var xCreateByString = fileHelper.CreateByString;
|
||||||
|
|
||||||
|
fileHelper.FileEntry = y;
|
||||||
|
var yCreateByString = fileHelper.CreateByString;
|
||||||
|
|
||||||
|
var cmp = c * string.Compare(xCreateByString, yCreateByString);
|
||||||
return cmp == 0 ? x.Title.EnumerableComparer(y.Title) : cmp;
|
return cmp == 0 ? x.Title.EnumerableComparer(y.Title) : cmp;
|
||||||
}
|
}
|
||||||
,
|
,
|
||||||
@ -831,7 +838,7 @@ namespace ASC.Web.Files.Utils
|
|||||||
public Folder<string> GetFakeThirdpartyFolder<T>(IProviderInfo providerInfo, string parentFolderId = null)
|
public Folder<string> GetFakeThirdpartyFolder<T>(IProviderInfo providerInfo, string parentFolderId = null)
|
||||||
{
|
{
|
||||||
//Fake folder. Don't send request to third party
|
//Fake folder. Don't send request to third party
|
||||||
var folder = ServiceProvider.GetService<Folder<string>>();
|
var folder = new Folder<string>();
|
||||||
|
|
||||||
folder.FolderID = parentFolderId;
|
folder.FolderID = parentFolderId;
|
||||||
|
|
||||||
@ -1105,13 +1112,15 @@ namespace ASC.Web.Files.Utils
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
var currFile = fileDao.GetFile(fileId);
|
var currFile = fileDao.GetFile(fileId);
|
||||||
var newFile = ServiceProvider.GetService<File<T>>();
|
var newFile = new File<T>();
|
||||||
|
var fileHelper = ServiceProvider.GetService<FileHelper<T>>();
|
||||||
|
fileHelper.FileEntry = currFile;
|
||||||
|
|
||||||
newFile.ID = fromFile.ID;
|
newFile.ID = fromFile.ID;
|
||||||
newFile.Version = currFile.Version + 1;
|
newFile.Version = currFile.Version + 1;
|
||||||
newFile.VersionGroup = currFile.VersionGroup;
|
newFile.VersionGroup = currFile.VersionGroup;
|
||||||
newFile.Title = FileUtility.ReplaceFileExtension(currFile.Title, FileUtility.GetFileExtension(fromFile.Title));
|
newFile.Title = FileUtility.ReplaceFileExtension(currFile.Title, FileUtility.GetFileExtension(fromFile.Title));
|
||||||
newFile.FileStatus = currFile.FileStatus;
|
newFile._status = fileHelper.FileStatus;
|
||||||
newFile.FolderID = currFile.FolderID;
|
newFile.FolderID = currFile.FolderID;
|
||||||
newFile.CreateBy = currFile.CreateBy;
|
newFile.CreateBy = currFile.CreateBy;
|
||||||
newFile.CreateOn = currFile.CreateOn;
|
newFile.CreateOn = currFile.CreateOn;
|
||||||
|
@ -769,7 +769,7 @@ namespace ASC.Web.Files.Utils
|
|||||||
|
|
||||||
if (newFile == null)
|
if (newFile == null)
|
||||||
{
|
{
|
||||||
newFile = ServiceProvider.GetService<File<T>>();
|
newFile = new File<T>();
|
||||||
newFile.FolderID = folderId;
|
newFile.FolderID = folderId;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -24,15 +24,18 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
using System;
|
||||||
using System.Web;
|
using System.Web;
|
||||||
|
|
||||||
using ASC.Common;
|
using ASC.Common;
|
||||||
using ASC.Common.Utils;
|
using ASC.Common.Utils;
|
||||||
using ASC.Core.Common;
|
using ASC.Core.Common;
|
||||||
using ASC.Files.Core;
|
using ASC.Files.Core;
|
||||||
using ASC.Files.Core.Security;
|
using ASC.Files.Core.Security;
|
||||||
using ASC.Web.Core.Files;
|
using ASC.Web.Core.Files;
|
||||||
using ASC.Web.Files.Classes;
|
using ASC.Web.Files.Classes;
|
||||||
|
|
||||||
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
|
|
||||||
using FileShare = ASC.Files.Core.Security.FileShare;
|
using FileShare = ASC.Files.Core.Security.FileShare;
|
||||||
|
|
||||||
@ -45,25 +48,30 @@ namespace ASC.Web.Files.Utils
|
|||||||
private FilesLinkUtility FilesLinkUtility { get; }
|
private FilesLinkUtility FilesLinkUtility { get; }
|
||||||
private BaseCommonLinkUtility BaseCommonLinkUtility { get; }
|
private BaseCommonLinkUtility BaseCommonLinkUtility { get; }
|
||||||
private Global Global { get; }
|
private Global Global { get; }
|
||||||
private FileSecurity FileSecurity { get; }
|
private FileSecurity FileSecurity { get; }
|
||||||
|
private IServiceProvider ServiceProvider { get; }
|
||||||
|
|
||||||
public FileShareLink(
|
public FileShareLink(
|
||||||
FileUtility fileUtility,
|
FileUtility fileUtility,
|
||||||
FilesLinkUtility filesLinkUtility,
|
FilesLinkUtility filesLinkUtility,
|
||||||
BaseCommonLinkUtility baseCommonLinkUtility,
|
BaseCommonLinkUtility baseCommonLinkUtility,
|
||||||
Global global,
|
Global global,
|
||||||
FileSecurity fileSecurity)
|
FileSecurity fileSecurity,
|
||||||
|
IServiceProvider serviceProvider)
|
||||||
{
|
{
|
||||||
FileUtility = fileUtility;
|
FileUtility = fileUtility;
|
||||||
FilesLinkUtility = filesLinkUtility;
|
FilesLinkUtility = filesLinkUtility;
|
||||||
BaseCommonLinkUtility = baseCommonLinkUtility;
|
BaseCommonLinkUtility = baseCommonLinkUtility;
|
||||||
Global = global;
|
Global = global;
|
||||||
FileSecurity = fileSecurity;
|
FileSecurity = fileSecurity;
|
||||||
|
ServiceProvider = serviceProvider;
|
||||||
}
|
}
|
||||||
|
|
||||||
public string GetLink<T>(File<T> file, bool withHash = true)
|
public string GetLink<T>(File<T> file, bool withHash = true)
|
||||||
{
|
{
|
||||||
var url = file.DownloadUrl;
|
var fileHelper = ServiceProvider.GetService<FileHelper<T>>();
|
||||||
|
fileHelper.FileEntry = file;
|
||||||
|
var url = fileHelper.DownloadUrl;
|
||||||
|
|
||||||
if (FileUtility.CanWebView(file.Title))
|
if (FileUtility.CanWebView(file.Title))
|
||||||
url = FilesLinkUtility.GetFileWebPreviewUrl(FileUtility, file.Title, file.ID);
|
url = FilesLinkUtility.GetFileWebPreviewUrl(FileUtility, file.Title, file.ID);
|
||||||
|
@ -44,8 +44,6 @@ using ASC.Web.Files.Helpers;
|
|||||||
using ASC.Web.Studio.Core;
|
using ASC.Web.Studio.Core;
|
||||||
using ASC.Web.Studio.UserControls.Statistics;
|
using ASC.Web.Studio.UserControls.Statistics;
|
||||||
using ASC.Web.Studio.Utility;
|
using ASC.Web.Studio.Utility;
|
||||||
|
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
|
||||||
|
|
||||||
namespace ASC.Web.Files.Utils
|
namespace ASC.Web.Files.Utils
|
||||||
{
|
{
|
||||||
@ -162,7 +160,7 @@ namespace ASC.Web.Files.Utils
|
|||||||
return file;
|
return file;
|
||||||
}
|
}
|
||||||
|
|
||||||
var newFile = ServiceProvider.GetService<File<T>>();
|
var newFile = new File<T>();
|
||||||
newFile.FolderID = folderId;
|
newFile.FolderID = folderId;
|
||||||
newFile.Title = fileName;
|
newFile.Title = fileName;
|
||||||
return newFile;
|
return newFile;
|
||||||
@ -215,7 +213,7 @@ namespace ASC.Web.Files.Utils
|
|||||||
|
|
||||||
if (folder == null)
|
if (folder == null)
|
||||||
{
|
{
|
||||||
var newFolder = ServiceProvider.GetService<Folder<T>>();
|
var newFolder = new Folder<T>();
|
||||||
newFolder.Title = subFolderTitle;
|
newFolder.Title = subFolderTitle;
|
||||||
newFolder.FolderID = folderId;
|
newFolder.FolderID = folderId;
|
||||||
|
|
||||||
@ -252,7 +250,7 @@ namespace ASC.Web.Files.Utils
|
|||||||
|
|
||||||
public ChunkedUploadSession<T> InitiateUpload<T>(T folderId, T fileId, string fileName, long contentLength, bool encrypted)
|
public ChunkedUploadSession<T> InitiateUpload<T>(T folderId, T fileId, string fileName, long contentLength, bool encrypted)
|
||||||
{
|
{
|
||||||
var file = ServiceProvider.GetService<File<T>>();
|
var file = new File<T>();
|
||||||
file.ID = fileId;
|
file.ID = fileId;
|
||||||
file.FolderID = folderId;
|
file.FolderID = folderId;
|
||||||
file.Title = fileName;
|
file.Title = fileName;
|
||||||
|
Loading…
Reference in New Issue
Block a user