mirror of https://github.com/halo-dev/halo
Create ThemeService
parent
3b451491a8
commit
ca73a30c78
|
@ -0,0 +1,68 @@
|
|||
package cc.ryanc.halo.service;
|
||||
|
||||
import cc.ryanc.halo.model.support.Theme;
|
||||
import cc.ryanc.halo.model.support.ThemeProperties;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author : RYAN0UP
|
||||
* @date : 2019/3/26
|
||||
*/
|
||||
public interface ThemeService {
|
||||
|
||||
/**
|
||||
* Gets all themes
|
||||
*
|
||||
* @return list of themes
|
||||
*/
|
||||
List<Theme> getThemes();
|
||||
|
||||
/**
|
||||
* Gets theme templates
|
||||
*
|
||||
* @param theme theme
|
||||
* @return List<String>
|
||||
*/
|
||||
List<String> getTemplates(String theme);
|
||||
|
||||
/**
|
||||
* Gets custom template, such as page_xxx.ftl, and xxx will be template name
|
||||
*
|
||||
* @param theme theme name
|
||||
* @return List
|
||||
*/
|
||||
List<String> getCustomTpl(String theme);
|
||||
|
||||
/**
|
||||
* Judging whether template exists under the specified theme
|
||||
*
|
||||
* @param template template
|
||||
* @return boolean
|
||||
*/
|
||||
boolean isTemplateExist(String template);
|
||||
|
||||
/**
|
||||
* Judging whether theme exists under template path
|
||||
*
|
||||
* @param theme theme name
|
||||
* @return boolean
|
||||
*/
|
||||
boolean isThemeExist(String theme);
|
||||
|
||||
/**
|
||||
* Gets theme base path.
|
||||
*
|
||||
* @return File
|
||||
*/
|
||||
File getThemeBasePath();
|
||||
|
||||
/**
|
||||
* Get theme Properties.
|
||||
*
|
||||
* @param path path
|
||||
* @return ThemeProperties
|
||||
*/
|
||||
ThemeProperties getProperties(File path);
|
||||
}
|
|
@ -1,34 +1,33 @@
|
|||
package cc.ryanc.halo.utils;
|
||||
package cc.ryanc.halo.service.impl;
|
||||
|
||||
import cc.ryanc.halo.model.support.HaloConst;
|
||||
import cc.ryanc.halo.model.support.Theme;
|
||||
import cc.ryanc.halo.model.support.ThemeProperties;
|
||||
import cc.ryanc.halo.service.ThemeService;
|
||||
import cc.ryanc.halo.web.controller.content.base.BaseContentController;
|
||||
import cn.hutool.core.text.StrBuilder;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.setting.dialect.Props;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Theme utils
|
||||
*
|
||||
* @author : RYAN0UP
|
||||
* @date : 2019/3/26
|
||||
*/
|
||||
@Slf4j
|
||||
public class ThemeUtils {
|
||||
@Service
|
||||
public class ThemeServiceImpl implements ThemeService {
|
||||
|
||||
/**
|
||||
* Gets all themes
|
||||
*
|
||||
* @return list of themes
|
||||
*/
|
||||
public static List<Theme> getThemes() {
|
||||
@Override
|
||||
public List<Theme> getThemes() {
|
||||
final List<Theme> themes = new ArrayList<>();
|
||||
final File[] files = getThemeBasePath().listFiles();
|
||||
try {
|
||||
|
@ -62,7 +61,8 @@ public class ThemeUtils {
|
|||
* @param theme theme
|
||||
* @return List<String>
|
||||
*/
|
||||
public static List<String> getTemplates(String theme) {
|
||||
@Override
|
||||
public List<String> getTemplates(String theme) {
|
||||
final List<String> templates = new ArrayList<>();
|
||||
try {
|
||||
final File themesPath = new File(getThemeBasePath(), theme);
|
||||
|
@ -95,7 +95,8 @@ public class ThemeUtils {
|
|||
* @param theme theme name
|
||||
* @return List
|
||||
*/
|
||||
public static List<String> getCustomTpl(String theme) throws FileNotFoundException {
|
||||
@Override
|
||||
public List<String> getCustomTpl(String theme) {
|
||||
final List<String> templates = new ArrayList<>();
|
||||
final File themePath = new File(getThemeBasePath(), theme);
|
||||
final File[] themeFiles = themePath.listFiles();
|
||||
|
@ -116,7 +117,8 @@ public class ThemeUtils {
|
|||
* @param template template
|
||||
* @return boolean
|
||||
*/
|
||||
public static boolean isTemplateExist(String template) throws FileNotFoundException {
|
||||
@Override
|
||||
public boolean isTemplateExist(String template) {
|
||||
StrBuilder templatePath = new StrBuilder(BaseContentController.THEME);
|
||||
templatePath.append("/");
|
||||
templatePath.append(template);
|
||||
|
@ -129,9 +131,9 @@ public class ThemeUtils {
|
|||
*
|
||||
* @param theme theme name
|
||||
* @return boolean
|
||||
* @throws FileNotFoundException FileNotFoundException
|
||||
*/
|
||||
public static boolean isThemeExist(String theme) throws FileNotFoundException {
|
||||
@Override
|
||||
public boolean isThemeExist(String theme) {
|
||||
File file = new File(getThemeBasePath(), theme);
|
||||
return file.exists();
|
||||
}
|
||||
|
@ -141,7 +143,8 @@ public class ThemeUtils {
|
|||
*
|
||||
* @return File
|
||||
*/
|
||||
private static File getThemeBasePath() {
|
||||
@Override
|
||||
public File getThemeBasePath() {
|
||||
return new File(System.getProperties().getProperty("user.home"), ".halo/templates/themes");
|
||||
}
|
||||
|
||||
|
@ -151,7 +154,8 @@ public class ThemeUtils {
|
|||
* @param path path
|
||||
* @return ThemeProperties
|
||||
*/
|
||||
private static ThemeProperties getProperties(File path) {
|
||||
@Override
|
||||
public ThemeProperties getProperties(File path) {
|
||||
File propertiesFile = new File(path, "theme.properties");
|
||||
ThemeProperties properties = new ThemeProperties();
|
||||
if (propertiesFile.exists()) {
|
|
@ -3,7 +3,7 @@ package cc.ryanc.halo.web.controller.admin.api;
|
|||
import cc.ryanc.halo.model.enums.BlogProperties;
|
||||
import cc.ryanc.halo.model.support.Theme;
|
||||
import cc.ryanc.halo.service.OptionService;
|
||||
import cc.ryanc.halo.utils.ThemeUtils;
|
||||
import cc.ryanc.halo.service.ThemeService;
|
||||
import cc.ryanc.halo.web.controller.content.base.BaseContentController;
|
||||
import freemarker.template.Configuration;
|
||||
import freemarker.template.TemplateModelException;
|
||||
|
@ -29,10 +29,14 @@ public class ThemeController {
|
|||
|
||||
private final Configuration configuration;
|
||||
|
||||
private final ThemeService themeService;
|
||||
|
||||
public ThemeController(OptionService optionService,
|
||||
Configuration configuration) {
|
||||
Configuration configuration,
|
||||
ThemeService themeService) {
|
||||
this.optionService = optionService;
|
||||
this.configuration = configuration;
|
||||
this.themeService = themeService;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -43,7 +47,7 @@ public class ThemeController {
|
|||
@GetMapping
|
||||
@ApiOperation("List all themes")
|
||||
public List<Theme> listAll() {
|
||||
return ThemeUtils.getThemes();
|
||||
return themeService.getThemes();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in New Issue