1
This commit is contained in:
@@ -7,10 +7,8 @@
|
||||
string FileName
|
||||
);
|
||||
|
||||
public class GetThemeFilesQueryHandler(IOptionsMonitor<BlogSettings> options, IMapper mapper, IWebHostEnvironment env) : IRequestHandler<GetThemeFilesQuery, List<GetThemeFilesQueryResponse>>
|
||||
public class GetThemeFilesQueryHandler(IWebHostEnvironment env) : IRequestHandler<GetThemeFilesQuery, List<GetThemeFilesQueryResponse>>
|
||||
{
|
||||
private readonly BlogSettings _settings = options.CurrentValue;
|
||||
private readonly IMapper _mapper = mapper;
|
||||
private readonly IWebHostEnvironment _env = env;
|
||||
|
||||
public async Task<List<GetThemeFilesQueryResponse>> Handle(GetThemeFilesQuery request, CancellationToken cancellationToken)
|
||||
@@ -18,11 +16,11 @@
|
||||
var themeName = request.Name;
|
||||
var themes = new List<GetThemeFilesQueryResponse>();
|
||||
var themePath = Path.Combine(_env.ContentRootPath, "files", "themes", themeName);
|
||||
var files = Directory.GetFiles(themePath).Where(x=>x.EndsWith(".liquid") || x.EndsWith(".css") || x.EndsWith(".js"));
|
||||
|
||||
var allowedExtensions = new[] { ".liquid", ".css", ".js" };
|
||||
var files = Directory.GetFiles(themePath, "*.*", SearchOption.AllDirectories).Where(file => allowedExtensions.Contains(Path.GetExtension(file).ToLowerInvariant()));
|
||||
|
||||
|
||||
themes = files.Select(x=>new GetThemeFilesQueryResponse(Path.GetFileName(x))).ToList();
|
||||
themes = files.Select(x=>new GetThemeFilesQueryResponse(Path.GetRelativePath(themePath, x))).ToList();
|
||||
|
||||
return themes;
|
||||
}
|
||||
|
||||
@@ -2,14 +2,16 @@
|
||||
{
|
||||
public class GetThemeFileEndpoint : ThemeEndpointScheme, IEndpoint
|
||||
{
|
||||
public void Map(IEndpointRouteBuilder app) => app.MapGet("/themes/{themeName}/files/{fileName}", Handle);
|
||||
|
||||
public record Request([FromRoute(Name = "themeName")] string ThemeName, [FromRoute(Name = "fileName")] string FileName);
|
||||
public void Map(IEndpointRouteBuilder app) => app.MapGet("/themes/{themeName}/file", Handle);
|
||||
|
||||
|
||||
private async Task<IResult> Handle([AsParameters] Request request, IMediator mediator, IMapper mapper, CancellationToken cancellationToken)
|
||||
|
||||
private async Task<IResult> Handle(
|
||||
[FromRoute(Name = "themeName")] string themeName,
|
||||
[FromQuery] string fileName, IMediator mediator,
|
||||
IMapper mapper, CancellationToken cancellationToken)
|
||||
{
|
||||
var query = new GetThemeFileQuery(request.ThemeName, request.FileName);
|
||||
var query = new GetThemeFileQuery(themeName, fileName);
|
||||
var response = await mediator.Send(query, cancellationToken);
|
||||
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ namespace Yes.Blog.Endpoints.Admins.Themes
|
||||
{
|
||||
public class UpdateThemeFileEndpoint : ThemeEndpointScheme, IEndpoint
|
||||
{
|
||||
public void Map(IEndpointRouteBuilder app) => app.MapPut("/themes/{themeName}/files/{fileName}", Handle);//.WithRequestValidation<Request>();
|
||||
public void Map(IEndpointRouteBuilder app) => app.MapPut("/themes/{themeName}/file", Handle);//.WithRequestValidation<Request>();
|
||||
|
||||
internal record Request(
|
||||
string Content
|
||||
@@ -21,7 +21,7 @@ namespace Yes.Blog.Endpoints.Admins.Themes
|
||||
|
||||
private async Task<IResult> Handle([FromBody] Request request,
|
||||
[FromRoute(Name = "themeName")] string themeName,
|
||||
[FromRoute(Name = "fileName")] string fileName,
|
||||
[FromQuery(Name = "fileName")] string fileName,
|
||||
IMediator mediator, IMapper mapper, CancellationToken cancellationToken)
|
||||
{
|
||||
var command = mapper.Map<UpdateThemeFileCommand>(request);
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
return this;
|
||||
},
|
||||
loadFile() {
|
||||
axios.get('/themes/' + themeName + '/files/' + fileName)
|
||||
axios.get('/themes/' + themeName + '/file/?fileName=' + fileName)
|
||||
.then(data => {
|
||||
this.file = data;
|
||||
editor.setValue(this.file.content);
|
||||
@@ -47,7 +47,7 @@
|
||||
return;
|
||||
}
|
||||
this.isSubmitting = true;
|
||||
axios.put('/themes/' + themeName + '/files/' + fileName, { content: this.file.content })
|
||||
axios.put('/themes/' + themeName + '/file/?fileName=' + fileName, { content: this.file.content })
|
||||
.then(data => {
|
||||
console.log('data:', data);
|
||||
location.href = "/admin/theme/detail?themeName=" + themeName + "&fileName=" + fileName + "";
|
||||
|
||||
Reference in New Issue
Block a user