mirror of https://github.com/halo-dev/halo
Create api of theme files.
parent
ceb8887454
commit
44163519c3
|
@ -0,0 +1,21 @@
|
|||
package cc.ryanc.halo.model.support;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.ToString;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author RYAN0UP
|
||||
* @date 2019/04/02
|
||||
*/
|
||||
@Data
|
||||
@ToString
|
||||
public class ThemeFile {
|
||||
|
||||
private String name;
|
||||
|
||||
private Boolean isFile;
|
||||
|
||||
private List<ThemeFile> node;
|
||||
}
|
|
@ -1,6 +1,7 @@
|
|||
package cc.ryanc.halo.service;
|
||||
|
||||
import cc.ryanc.halo.model.support.Theme;
|
||||
import cc.ryanc.halo.model.support.ThemeFile;
|
||||
import cc.ryanc.halo.model.support.ThemeProperties;
|
||||
|
||||
import java.io.File;
|
||||
|
@ -20,12 +21,20 @@ public interface ThemeService {
|
|||
List<Theme> getThemes();
|
||||
|
||||
/**
|
||||
* Gets theme templates
|
||||
* Lists theme folder by absolute path.
|
||||
*
|
||||
* @param absolutePath absolutePath
|
||||
* @return List<ThemeFile>
|
||||
*/
|
||||
List<ThemeFile> listThemeFolder(String absolutePath);
|
||||
|
||||
/**
|
||||
* Lists theme folder by theme name.
|
||||
*
|
||||
* @param theme theme
|
||||
* @return List<String>
|
||||
* @return List<ThemeFile>
|
||||
*/
|
||||
List<String> getTemplates(String theme);
|
||||
List<ThemeFile> listThemeFolderBy(String theme);
|
||||
|
||||
/**
|
||||
* Gets custom template, such as page_xxx.ftl, and xxx will be template name
|
||||
|
|
|
@ -2,6 +2,7 @@ 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.ThemeFile;
|
||||
import cc.ryanc.halo.model.support.ThemeProperties;
|
||||
import cc.ryanc.halo.service.ThemeService;
|
||||
import cc.ryanc.halo.web.controller.content.base.BaseContentController;
|
||||
|
@ -56,31 +57,29 @@ public class ThemeServiceImpl implements ThemeService {
|
|||
}
|
||||
|
||||
/**
|
||||
* Gets theme templates
|
||||
* Lists theme folder by absolute path.
|
||||
*
|
||||
* @param theme theme
|
||||
* @return List<String>
|
||||
* @param absolutePath absolutePath
|
||||
* @return List<ThemeFile>
|
||||
*/
|
||||
@Override
|
||||
public List<String> getTemplates(String theme) {
|
||||
final List<String> templates = new ArrayList<>();
|
||||
public List<ThemeFile> listThemeFolder(String absolutePath) {
|
||||
final List<ThemeFile> templates = new ArrayList<>();
|
||||
try {
|
||||
final File themesPath = new File(getThemeBasePath(), theme);
|
||||
final File modulePath = new File(themesPath.getAbsolutePath(), "module");
|
||||
final File[] baseFiles = themesPath.listFiles();
|
||||
final File[] moduleFiles = modulePath.listFiles();
|
||||
if (null != moduleFiles) {
|
||||
for (File file : moduleFiles) {
|
||||
if (file.isFile() && file.getName().endsWith(HaloConst.SUFFIX_FTL)) {
|
||||
templates.add("module/" + file.getName());
|
||||
}
|
||||
}
|
||||
}
|
||||
File absolutePathFile = new File(absolutePath);
|
||||
File[] baseFiles = absolutePathFile.listFiles();
|
||||
if (null != baseFiles) {
|
||||
for (File file : baseFiles) {
|
||||
if (file.isFile() && file.getName().endsWith(HaloConst.SUFFIX_FTL)) {
|
||||
templates.add(file.getName());
|
||||
for (File base : baseFiles) {
|
||||
ThemeFile file = new ThemeFile();
|
||||
if (base.isDirectory()) {
|
||||
file.setName(base.getAbsolutePath());
|
||||
file.setIsFile(false);
|
||||
file.setNode(listThemeFolder(base.getAbsolutePath()));
|
||||
} else {
|
||||
file.setName(base.getAbsolutePath());
|
||||
file.setIsFile(true);
|
||||
}
|
||||
templates.add(file);
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
|
@ -89,6 +88,18 @@ public class ThemeServiceImpl implements ThemeService {
|
|||
return templates;
|
||||
}
|
||||
|
||||
/**
|
||||
* Lists theme folder by theme name.
|
||||
*
|
||||
* @param theme theme
|
||||
* @return List<ThemeFile>
|
||||
*/
|
||||
@Override
|
||||
public List<ThemeFile> listThemeFolderBy(String theme) {
|
||||
File themePath = new File(getThemeBasePath(), theme);
|
||||
return listThemeFolder(themePath.getAbsolutePath());
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets custom template, such as page_xxx.ftl, and xxx will be template name
|
||||
*
|
||||
|
|
|
@ -4,6 +4,7 @@ import cc.ryanc.halo.model.enums.OptionSource;
|
|||
import cc.ryanc.halo.model.properties.PrimaryProperties;
|
||||
import cc.ryanc.halo.model.properties.PropertyEnum;
|
||||
import cc.ryanc.halo.model.support.Theme;
|
||||
import cc.ryanc.halo.model.support.ThemeFile;
|
||||
import cc.ryanc.halo.service.OptionService;
|
||||
import cc.ryanc.halo.service.ThemeService;
|
||||
import cc.ryanc.halo.web.controller.content.base.BaseContentController;
|
||||
|
@ -52,6 +53,16 @@ public class ThemeController {
|
|||
return themeService.getThemes();
|
||||
}
|
||||
|
||||
/**
|
||||
* List all of theme files.
|
||||
*
|
||||
* @return List<ThemeFile>
|
||||
*/
|
||||
@GetMapping(value = "/files")
|
||||
public List<ThemeFile> listFiles() {
|
||||
return themeService.listThemeFolderBy(BaseContentController.THEME);
|
||||
}
|
||||
|
||||
/**
|
||||
* Active theme
|
||||
*
|
||||
|
|
Loading…
Reference in New Issue