mirror of https://github.com/halo-dev/halo
Complete issue(#156)
parent
c02bb1dc48
commit
30955e598f
|
@ -11,6 +11,7 @@ import org.springframework.stereotype.Component;
|
||||||
import run.halo.app.event.options.OptionUpdatedEvent;
|
import run.halo.app.event.options.OptionUpdatedEvent;
|
||||||
import run.halo.app.event.theme.ThemeActivatedEvent;
|
import run.halo.app.event.theme.ThemeActivatedEvent;
|
||||||
import run.halo.app.event.user.UserUpdatedEvent;
|
import run.halo.app.event.user.UserUpdatedEvent;
|
||||||
|
import run.halo.app.handler.theme.config.support.ThemeProperty;
|
||||||
import run.halo.app.service.OptionService;
|
import run.halo.app.service.OptionService;
|
||||||
import run.halo.app.service.ThemeService;
|
import run.halo.app.service.ThemeService;
|
||||||
import run.halo.app.service.ThemeSettingService;
|
import run.halo.app.service.ThemeSettingService;
|
||||||
|
@ -92,8 +93,9 @@ public class FreemarkerConfigAwareListener {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void loadThemeConfig() throws TemplateModelException {
|
private void loadThemeConfig() throws TemplateModelException {
|
||||||
configuration.setSharedVariable("theme", themeService.getActivatedTheme());
|
ThemeProperty activatedTheme = themeService.getActivatedTheme();
|
||||||
configuration.setSharedVariable("static", themeService.getActivatedTheme().getFolderName());
|
configuration.setSharedVariable("theme", activatedTheme);
|
||||||
|
configuration.setSharedVariable("static", activatedTheme.getFolderName());
|
||||||
configuration.setSharedVariable("settings", themeSettingService.listAsMapBy(themeService.getActivatedThemeId()));
|
configuration.setSharedVariable("settings", themeSettingService.listAsMapBy(themeService.getActivatedThemeId()));
|
||||||
log.debug("Loaded theme and settings");
|
log.debug("Loaded theme and settings");
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package run.halo.app.listener;
|
package run.halo.app.listener;
|
||||||
|
|
||||||
|
import com.sun.nio.zipfs.JarFileSystemProvider;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.boot.context.event.ApplicationStartedEvent;
|
import org.springframework.boot.context.event.ApplicationStartedEvent;
|
||||||
|
@ -81,6 +82,8 @@ public class StartedListener implements ApplicationListener<ApplicationStartedEv
|
||||||
|
|
||||||
URI themeUri = ResourceUtils.getURL(themeClassPath).toURI();
|
URI themeUri = ResourceUtils.getURL(themeClassPath).toURI();
|
||||||
|
|
||||||
|
log.debug("Theme uri: [{}]", themeUri);
|
||||||
|
|
||||||
Path source;
|
Path source;
|
||||||
|
|
||||||
if (themeUri.getScheme().equalsIgnoreCase("jar")) {
|
if (themeUri.getScheme().equalsIgnoreCase("jar")) {
|
||||||
|
|
|
@ -186,11 +186,11 @@ public interface BaseCommentService<COMMENT extends BaseComment> extends CrudSer
|
||||||
List<BaseCommentVO> convertToVo(@Nullable List<COMMENT> comments, @Nullable Comparator<BaseCommentVO> comparator);
|
List<BaseCommentVO> convertToVo(@Nullable List<COMMENT> comments, @Nullable Comparator<BaseCommentVO> comparator);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Target must exist.
|
* Target validation.
|
||||||
*
|
*
|
||||||
* @param targetId target id must not be null (post id, sheet id or journal id)
|
* @param targetId target id must not be null (post id, sheet id or journal id)
|
||||||
*/
|
*/
|
||||||
void targetMustExist(@NonNull Integer targetId);
|
void validateTarget(@NonNull Integer targetId);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Lists a page of top comment.
|
* Lists a page of top comment.
|
||||||
|
|
|
@ -223,7 +223,7 @@ public abstract class BaseCommentServiceImpl<COMMENT extends BaseComment> extend
|
||||||
|
|
||||||
// Check post id
|
// Check post id
|
||||||
if (!ServiceUtils.isEmptyId(comment.getPostId())) {
|
if (!ServiceUtils.isEmptyId(comment.getPostId())) {
|
||||||
targetMustExist(comment.getPostId());
|
validateTarget(comment.getPostId());
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check parent id
|
// Check parent id
|
||||||
|
|
|
@ -47,9 +47,9 @@ public class JournalCommentServiceImpl extends BaseCommentServiceImpl<JournalCom
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void targetMustExist(Integer journalId) {
|
public void validateTarget(Integer journalId) {
|
||||||
if (!journalRepository.existsById(journalId)) {
|
if (!journalRepository.existsById(journalId)) {
|
||||||
throw new NotFoundException("The journal with id " + journalId + " was not found");
|
throw new NotFoundException("该日志不存在或已删除").setErrorData(journalId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -8,6 +8,7 @@ import org.springframework.data.domain.Pageable;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.util.Assert;
|
import org.springframework.util.Assert;
|
||||||
import org.springframework.util.CollectionUtils;
|
import org.springframework.util.CollectionUtils;
|
||||||
|
import run.halo.app.exception.BadRequestException;
|
||||||
import run.halo.app.exception.NotFoundException;
|
import run.halo.app.exception.NotFoundException;
|
||||||
import run.halo.app.model.dto.post.BasePostMinimalDTO;
|
import run.halo.app.model.dto.post.BasePostMinimalDTO;
|
||||||
import run.halo.app.model.entity.Post;
|
import run.halo.app.model.entity.Post;
|
||||||
|
@ -92,9 +93,12 @@ public class PostCommentServiceImpl extends BaseCommentServiceImpl<PostComment>
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void targetMustExist(Integer postId) {
|
public void validateTarget(Integer postId) {
|
||||||
if (!postRepository.existsById(postId)) {
|
Post post = postRepository.findById(postId)
|
||||||
throw new NotFoundException("The post with id " + postId + " was not found");
|
.orElseThrow(() -> new NotFoundException("该文章不存在或已删除").setErrorData(postId));
|
||||||
|
|
||||||
|
if (post.getDisallowComment()) {
|
||||||
|
throw new BadRequestException("该文章已经被禁止评论").setErrorData(postId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,6 +6,7 @@ import org.springframework.data.domain.PageImpl;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.util.Assert;
|
import org.springframework.util.Assert;
|
||||||
import org.springframework.util.CollectionUtils;
|
import org.springframework.util.CollectionUtils;
|
||||||
|
import run.halo.app.exception.BadRequestException;
|
||||||
import run.halo.app.exception.NotFoundException;
|
import run.halo.app.exception.NotFoundException;
|
||||||
import run.halo.app.model.dto.post.BasePostMinimalDTO;
|
import run.halo.app.model.dto.post.BasePostMinimalDTO;
|
||||||
import run.halo.app.model.entity.Sheet;
|
import run.halo.app.model.entity.Sheet;
|
||||||
|
@ -48,9 +49,12 @@ public class SheetCommentServiceImpl extends BaseCommentServiceImpl<SheetComment
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void targetMustExist(Integer sheetId) {
|
public void validateTarget(Integer sheetId) {
|
||||||
if (sheetRepository.existsById(sheetId)) {
|
Sheet sheet = sheetRepository.findById(sheetId)
|
||||||
throw new NotFoundException("The sheet with id " + sheetId + " was not found");
|
.orElseThrow(() -> new NotFoundException("该页面不存在或已删除").setErrorData(sheetId));
|
||||||
|
|
||||||
|
if (sheet.getDisallowComment()) {
|
||||||
|
throw new BadRequestException("该页面已被禁止评论").setErrorData(sheetId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,42 @@
|
||||||
|
package run.halo.app.utils;
|
||||||
|
|
||||||
|
import com.sun.nio.zipfs.JarFileSystemProvider;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.net.URI;
|
||||||
|
import java.net.URISyntaxException;
|
||||||
|
import java.nio.file.*;
|
||||||
|
import java.util.Collections;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Path test.
|
||||||
|
*
|
||||||
|
* @author johnniang
|
||||||
|
* @date 19-5-20
|
||||||
|
*/
|
||||||
|
public class PathTest {
|
||||||
|
|
||||||
|
@Test(expected = FileSystemNotFoundException.class)
|
||||||
|
public void getPathOfJarFileFailure() throws URISyntaxException {
|
||||||
|
String file = "jar:file:/path/to/jar/xxx.jar!/BOOT-INF/classes!/templates/themes";
|
||||||
|
URI uri = new URI(file);
|
||||||
|
Path path = Paths.get(uri);
|
||||||
|
|
||||||
|
System.out.println("Path: " + path.toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Test
|
||||||
|
// public void getPathOfJarFileSuccessfully() throws URISyntaxException, IOException {
|
||||||
|
// String file = "jar:file:/path/to/jar/xxx.jar!/BOOT-INF/classes!/templates/themes";
|
||||||
|
// URI uri = new URI(file);
|
||||||
|
// FileSystem fileSystem = FileSystems.newFileSystem(uri, Collections.emptyMap());
|
||||||
|
// Path path = fileSystem.getPath("/BOOT-INF/classes/templates/themes");
|
||||||
|
//
|
||||||
|
// System.out.println("Path: " + path.toString());
|
||||||
|
//
|
||||||
|
// Files.walk(path, 1).forEach(p -> {
|
||||||
|
// System.out.println(p.toString());
|
||||||
|
// });
|
||||||
|
// }
|
||||||
|
}
|
Loading…
Reference in New Issue