Merge branch 'develop' into 'release'
1 See merge request yescent/yes.blog!15
This commit is contained in:
@@ -7,10 +7,8 @@
|
|||||||
string FileName
|
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;
|
private readonly IWebHostEnvironment _env = env;
|
||||||
|
|
||||||
public async Task<List<GetThemeFilesQueryResponse>> Handle(GetThemeFilesQuery request, CancellationToken cancellationToken)
|
public async Task<List<GetThemeFilesQueryResponse>> Handle(GetThemeFilesQuery request, CancellationToken cancellationToken)
|
||||||
@@ -18,11 +16,11 @@
|
|||||||
var themeName = request.Name;
|
var themeName = request.Name;
|
||||||
var themes = new List<GetThemeFilesQueryResponse>();
|
var themes = new List<GetThemeFilesQueryResponse>();
|
||||||
var themePath = Path.Combine(_env.ContentRootPath, "files", "themes", themeName);
|
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.GetRelativePath(themePath, x))).ToList();
|
||||||
themes = files.Select(x=>new GetThemeFilesQueryResponse(Path.GetFileName(x))).ToList();
|
|
||||||
|
|
||||||
return themes;
|
return themes;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,14 +2,16 @@
|
|||||||
{
|
{
|
||||||
public class GetThemeFileEndpoint : ThemeEndpointScheme, IEndpoint
|
public class GetThemeFileEndpoint : ThemeEndpointScheme, IEndpoint
|
||||||
{
|
{
|
||||||
public void Map(IEndpointRouteBuilder app) => app.MapGet("/themes/{themeName}/files/{fileName}", Handle);
|
public void Map(IEndpointRouteBuilder app) => app.MapGet("/themes/{themeName}/file", Handle);
|
||||||
|
|
||||||
public record Request([FromRoute(Name = "themeName")] string ThemeName, [FromRoute(Name = "fileName")] string FileName);
|
|
||||||
|
|
||||||
|
|
||||||
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);
|
var response = await mediator.Send(query, cancellationToken);
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ namespace Yes.Blog.Endpoints.Admins.Themes
|
|||||||
{
|
{
|
||||||
public class UpdateThemeFileEndpoint : ThemeEndpointScheme, IEndpoint
|
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(
|
internal record Request(
|
||||||
string Content
|
string Content
|
||||||
@@ -21,7 +21,7 @@ namespace Yes.Blog.Endpoints.Admins.Themes
|
|||||||
|
|
||||||
private async Task<IResult> Handle([FromBody] Request request,
|
private async Task<IResult> Handle([FromBody] Request request,
|
||||||
[FromRoute(Name = "themeName")] string themeName,
|
[FromRoute(Name = "themeName")] string themeName,
|
||||||
[FromRoute(Name = "fileName")] string fileName,
|
[FromQuery(Name = "fileName")] string fileName,
|
||||||
IMediator mediator, IMapper mapper, CancellationToken cancellationToken)
|
IMediator mediator, IMapper mapper, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
var command = mapper.Map<UpdateThemeFileCommand>(request);
|
var command = mapper.Map<UpdateThemeFileCommand>(request);
|
||||||
|
|||||||
@@ -35,7 +35,7 @@
|
|||||||
return this;
|
return this;
|
||||||
},
|
},
|
||||||
loadFile() {
|
loadFile() {
|
||||||
axios.get('/themes/' + themeName + '/files/' + fileName)
|
axios.get('/themes/' + themeName + '/file/?fileName=' + fileName)
|
||||||
.then(data => {
|
.then(data => {
|
||||||
this.file = data;
|
this.file = data;
|
||||||
editor.setValue(this.file.content);
|
editor.setValue(this.file.content);
|
||||||
@@ -47,7 +47,7 @@
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
this.isSubmitting = true;
|
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 => {
|
.then(data => {
|
||||||
console.log('data:', data);
|
console.log('data:', data);
|
||||||
location.href = "/admin/theme/detail?themeName=" + themeName + "&fileName=" + fileName + "";
|
location.href = "/admin/theme/detail?themeName=" + themeName + "&fileName=" + fileName + "";
|
||||||
|
|||||||
Reference in New Issue
Block a user