This commit is contained in:
2025-05-09 19:00:29 +08:00
parent 232343324a
commit 5b07ba0dad
4 changed files with 15 additions and 15 deletions

View File

@@ -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;
}

View File

@@ -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);

View File

@@ -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);

View File

@@ -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 + "";