mirror of https://github.com/halo-dev/halo
Refactor template existence check
parent
57172cdf55
commit
e4e36cbfe5
|
@ -66,7 +66,7 @@ public class ContentSheetController {
|
||||||
model.addAttribute("sheet", sheetService.convertToDetail(sheet));
|
model.addAttribute("sheet", sheetService.convertToDetail(sheet));
|
||||||
|
|
||||||
if (StrUtil.isNotEmpty(sheet.getTemplate())) {
|
if (StrUtil.isNotEmpty(sheet.getTemplate())) {
|
||||||
if (themeService.isTemplateExist(sheet.getTemplate() + HaloConst.SUFFIX_FTL)) {
|
if (themeService.templateExists(sheet.getTemplate() + HaloConst.SUFFIX_FTL)) {
|
||||||
return themeService.render(sheet.getTemplate());
|
return themeService.render(sheet.getTemplate());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,12 +8,10 @@ import org.springframework.util.StringUtils;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
import run.halo.app.model.entity.User;
|
import run.halo.app.model.entity.User;
|
||||||
import run.halo.app.model.support.HaloConst;
|
import run.halo.app.model.support.HaloConst;
|
||||||
import run.halo.app.service.OptionService;
|
|
||||||
import run.halo.app.service.ThemeService;
|
import run.halo.app.service.ThemeService;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import javax.servlet.http.HttpSession;
|
import javax.servlet.http.HttpSession;
|
||||||
import java.io.FileNotFoundException;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Error page Controller
|
* Error page Controller
|
||||||
|
@ -105,7 +103,7 @@ public class CommonController implements ErrorController {
|
||||||
*/
|
*/
|
||||||
@GetMapping(value = "/404")
|
@GetMapping(value = "/404")
|
||||||
public String contentNotFround() {
|
public String contentNotFround() {
|
||||||
if (!themeService.isTemplateExist(NOT_FROUND_TEMPLATE)) {
|
if (!themeService.templateExists(NOT_FROUND_TEMPLATE)) {
|
||||||
return "common/error/404";
|
return "common/error/404";
|
||||||
}
|
}
|
||||||
StrBuilder path = new StrBuilder("themes/");
|
StrBuilder path = new StrBuilder("themes/");
|
||||||
|
@ -121,7 +119,7 @@ public class CommonController implements ErrorController {
|
||||||
*/
|
*/
|
||||||
@GetMapping(value = "/500")
|
@GetMapping(value = "/500")
|
||||||
public String contentInternalError() {
|
public String contentInternalError() {
|
||||||
if (!themeService.isTemplateExist(INTERNAL_ERROR_TEMPLATE)) {
|
if (!themeService.templateExists(INTERNAL_ERROR_TEMPLATE)) {
|
||||||
return "common/error/500";
|
return "common/error/500";
|
||||||
}
|
}
|
||||||
StrBuilder path = new StrBuilder("themes/");
|
StrBuilder path = new StrBuilder("themes/");
|
||||||
|
|
|
@ -119,10 +119,10 @@ public interface ThemeService {
|
||||||
/**
|
/**
|
||||||
* Judging whether template exists under the specified theme
|
* Judging whether template exists under the specified theme
|
||||||
*
|
*
|
||||||
* @param template template
|
* @param template template must not be blank
|
||||||
* @return boolean
|
* @return boolean
|
||||||
*/
|
*/
|
||||||
boolean isTemplateExist(@NonNull String template);
|
boolean templateExists(@NonNull String template);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Checks whether theme exists under template path
|
* Checks whether theme exists under template path
|
||||||
|
|
|
@ -3,7 +3,6 @@ package run.halo.app.service.impl;
|
||||||
import cn.hutool.core.io.FileUtil;
|
import cn.hutool.core.io.FileUtil;
|
||||||
import cn.hutool.core.io.file.FileReader;
|
import cn.hutool.core.io.file.FileReader;
|
||||||
import cn.hutool.core.io.file.FileWriter;
|
import cn.hutool.core.io.file.FileWriter;
|
||||||
import cn.hutool.core.text.StrBuilder;
|
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import freemarker.template.Configuration;
|
import freemarker.template.Configuration;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
@ -182,12 +181,17 @@ public class ThemeServiceImpl implements ThemeService {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isTemplateExist(String template) {
|
public boolean templateExists(String template) {
|
||||||
StrBuilder templatePath = new StrBuilder(getActivatedThemeId());
|
Assert.hasText(template, "Template must not be blank");
|
||||||
templatePath.append("/");
|
|
||||||
templatePath.append(template);
|
// Resolve template path
|
||||||
File file = new File(getThemeBasePath(), templatePath.toString());
|
Path templatePath = getBasePath().resolve(getActivatedTheme().getFolderName()).resolve(template);
|
||||||
return file.exists();
|
|
||||||
|
// Check the directory
|
||||||
|
checkDirectory(templatePath.toString());
|
||||||
|
|
||||||
|
// Check existence
|
||||||
|
return Files.exists(templatePath);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
Loading…
Reference in New Issue