add support for public content folders
This commit is contained in:
@ -1,8 +1,9 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Oqtane.Extensions;
|
||||
using Oqtane.Infrastructure;
|
||||
using Oqtane.Models;
|
||||
using Oqtane.Shared;
|
||||
using File = Oqtane.Models.File;
|
||||
@ -14,21 +15,25 @@ namespace Oqtane.Repository
|
||||
private TenantDBContext _db;
|
||||
private readonly IPermissionRepository _permissions;
|
||||
private readonly IFolderRepository _folderRepository;
|
||||
private readonly ITenantManager _tenants;
|
||||
|
||||
public FileRepository(TenantDBContext context, IPermissionRepository permissions, IFolderRepository folderRepository)
|
||||
public FileRepository(TenantDBContext context, IPermissionRepository permissions, IFolderRepository folderRepository, ITenantManager tenants)
|
||||
{
|
||||
_db = context;
|
||||
_permissions = permissions;
|
||||
_folderRepository = folderRepository;
|
||||
_tenants = tenants;
|
||||
}
|
||||
|
||||
public IEnumerable<File> GetFiles(int folderId)
|
||||
{
|
||||
IEnumerable<Permission> permissions = _permissions.GetPermissions(EntityNames.Folder, folderId).ToList();
|
||||
IEnumerable<File> files = _db.File.Where(item => item.FolderId == folderId).Include(item => item.Folder);
|
||||
var alias = _tenants.GetAlias();
|
||||
foreach (File file in files)
|
||||
{
|
||||
file.Folder.Permissions = permissions.EncodePermissions();
|
||||
file.Url = GetFileUrl(file, alias);
|
||||
}
|
||||
return files;
|
||||
}
|
||||
@ -49,7 +54,9 @@ namespace Oqtane.Repository
|
||||
|
||||
public File GetFile(int fileId)
|
||||
{
|
||||
return GetFile(fileId, true);
|
||||
File file = GetFile(fileId, true);
|
||||
file.Url = GetFileUrl(file, _tenants.GetAlias());
|
||||
return file;
|
||||
}
|
||||
|
||||
public File GetFile(int fileId, bool tracking)
|
||||
@ -68,6 +75,7 @@ namespace Oqtane.Repository
|
||||
{
|
||||
IEnumerable<Permission> permissions = _permissions.GetPermissions(EntityNames.Folder, file.FolderId).ToList();
|
||||
file.Folder.Permissions = permissions.EncodePermissions();
|
||||
file.Url = GetFileUrl(file, _tenants.GetAlias());
|
||||
}
|
||||
return file;
|
||||
}
|
||||
@ -92,5 +100,20 @@ namespace Oqtane.Repository
|
||||
var filepath = Path.Combine(_folderRepository.GetFolderPath(folder), file.Name);
|
||||
return filepath;
|
||||
}
|
||||
|
||||
private string GetFileUrl(File file, Alias alias)
|
||||
{
|
||||
string url = "";
|
||||
switch (file.Folder.Type)
|
||||
{
|
||||
case FolderTypes.Private:
|
||||
url = Utilities.ContentUrl(alias, file.FileId);
|
||||
break;
|
||||
case FolderTypes.Public:
|
||||
url = "/" + Utilities.UrlCombine("Content", "Tenants", alias.TenantId.ToString(), "Sites", file.Folder.SiteId.ToString(), file.Folder.Path) + file.Name;
|
||||
break;
|
||||
}
|
||||
return url;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user