mirror of https://github.com/halo-dev/halo
commit
1ef1095632
40
README.md
40
README.md
|
@ -3,42 +3,56 @@
|
||||||
> Halo 是一款现代化的个人独立博客系统,给习惯写博客的同学一个更好的选择。
|
> Halo 是一款现代化的个人独立博客系统,给习惯写博客的同学一个更好的选择。
|
||||||
|
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<a href="https://ryanc.cc"><img alt="Author" src="https://img.shields.io/badge/author-ruibaby-red.svg?style=flat-square"/></a>
|
|
||||||
<a href="#"><img alt="JDK" src="https://img.shields.io/badge/JDK-1.8-yellow.svg?style=flat-square"/></a>
|
<a href="#"><img alt="JDK" src="https://img.shields.io/badge/JDK-1.8-yellow.svg?style=flat-square"/></a>
|
||||||
<a href="https://github.com/halo-dev/halo/releases"><img alt="GitHub release" src="https://img.shields.io/github/release/halo-dev/halo.svg?style=flat-square"/></a>
|
<a href="https://github.com/halo-dev/halo/releases"><img alt="GitHub release" src="https://img.shields.io/github/release/halo-dev/halo.svg?style=flat-square"/></a>
|
||||||
|
<a href="https://github.com/halo-dev/halo/releases"><img alt="GitHub All Releases" src="https://img.shields.io/github/downloads/halo-dev/halo/total.svg?style=flat-square"></a>
|
||||||
|
<a href="https://github.com/halo-dev/halo/commits"><img alt="GitHub commit activity" src="https://img.shields.io/github/commit-activity/w/halo-dev/halo.svg?style=flat-square"></a>
|
||||||
|
<a href="https://github.com/halo-dev/halo/commits"><img alt="GitHub last commit" src="https://img.shields.io/github/last-commit/halo-dev/halo.svg?style=flat-square"></a>
|
||||||
<a href="https://travis-ci.org/halo-dev/halo"><img alt="Travis CI" src="https://img.shields.io/travis/halo-dev/halo.svg?style=flat-square"/></a>
|
<a href="https://travis-ci.org/halo-dev/halo"><img alt="Travis CI" src="https://img.shields.io/travis/halo-dev/halo.svg?style=flat-square"/></a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
------------------------------
|
------------------------------
|
||||||
|
|
||||||
## 新版本说明
|
|
||||||
|
|
||||||
**老版本已不提供维护,请不要再使用老版本进行部署了,当前分支为新版本,正在内测中,将于近期发布版本**
|
|
||||||
|
|
||||||
## 简介
|
## 简介
|
||||||
|
|
||||||
**Halo** [ˈheɪloʊ],意为光环。当然,你也可以当成拼音读(哈喽)。
|
**Halo** [ˈheɪloʊ],意为光环。当然,你也可以当成拼音读(哈喽)。
|
||||||
|
|
||||||
轻快,简洁,功能强大,使用 Java 开发的博客系统。
|
轻快,简洁,功能强大,使用 Java 开发的博客系统。
|
||||||
|
|
||||||
> QQ 交流群: 162747721 | Telegram 交流群:[https://t.me/HaloBlog](https://t.me/HaloBlog) | Telegram 频道:[https://t.me/halo_dev](https://t.me/halo_dev) | [WeHalo 小程序](https://github.com/aquanlerou/WeHalo)。
|
> [官网论坛](https://bbs.halo.run) | [QQ 交流群](https://jq.qq.com/?_wv=1027&k=5tnr930) | [Telegram 交流群](https://t.me/HaloBlog) | [Telegram 频道](https://t.me/halo_dev) | [WeHalo 小程序](https://github.com/aquanlerou/WeHalo)。
|
||||||
|
|
||||||
## 快速开始
|
## 快速开始
|
||||||
|
|
||||||
老版本下载地址:[https://github.com/halo-dev/halo/releases/tag/v0.4.4](https://github.com/halo-dev/halo/releases/tag/v0.4.4)
|
### 下载最新的 Halo 安装包
|
||||||
|
|
||||||
新版本正在内测中。
|
```bash
|
||||||
|
curl -L https://github.com/halo-dev/halo/releases/download/v1.0.0-beta.9/halo-1.0.0-beta.9.jar --output halo-latest.jar
|
||||||
|
```
|
||||||
|
|
||||||
|
或者
|
||||||
|
|
||||||
|
```bash
|
||||||
|
wget https://github.com/halo-dev/halo/releases/download/v1.0.0-beta.9/halo-1.0.0-beta.9.jar -O halo-latest.jar
|
||||||
|
```
|
||||||
|
|
||||||
|
### 启动 Halo
|
||||||
|
|
||||||
|
```bash
|
||||||
|
nohup java -jar halo-latest.jar &
|
||||||
|
```
|
||||||
|
|
||||||
|
详细文档请移步:<https://halo.run/docs>
|
||||||
|
|
||||||
## 博客示例
|
## 博客示例
|
||||||
|
|
||||||
请看 <[https://github.com/halo-dev/halo/issues/26](https://github.com/halo-dev/halo/issues/26)>。
|
请移步: <https://github.com/halo-dev/halo/issues/26>。
|
||||||
|
|
||||||
## 周边
|
## 周边
|
||||||
|
|
||||||
- 后台管理(halo-admin):<[https://github.com/halo-dev/halo-admin](https://github.com/halo-dev/halo-admin)>
|
- 后台管理(halo-admin):<https://github.com/halo-dev/halo-admin>
|
||||||
- 独立评论模块(halo-comment):<[https://github.com/halo-dev/halo-comment](https://github.com/halo-dev/halo-comment)>
|
- 独立评论模块(halo-comment):<https://github.com/halo-dev/halo-comment>
|
||||||
- 管理 APP(halo-app):<[https://github.com/halo-dev/halo-app](https://github.com/halo-dev/halo-app)>
|
- 管理 APP(halo-app):<https://github.com/halo-dev/halo-app>
|
||||||
- 主题仓库:<[https://halo.run/theme](https://halo.run/theme)>
|
- 主题仓库:<https://halo.run/theme>
|
||||||
|
|
||||||
## 许可证
|
## 许可证
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@ apply plugin: 'io.spring.dependency-management'
|
||||||
|
|
||||||
group = 'run.halo.app'
|
group = 'run.halo.app'
|
||||||
archivesBaseName = 'halo'
|
archivesBaseName = 'halo'
|
||||||
version = '1.0.0-beta.8'
|
version = '1.0.0'
|
||||||
sourceCompatibility = '1.8'
|
sourceCompatibility = '1.8'
|
||||||
description = 'Halo, personal blog system developed in Java.'
|
description = 'Halo, personal blog system developed in Java.'
|
||||||
|
|
||||||
|
|
|
@ -50,7 +50,7 @@ public class MainController {
|
||||||
|
|
||||||
@GetMapping("/avatar")
|
@GetMapping("/avatar")
|
||||||
public void avatar(HttpServletResponse response) throws IOException {
|
public void avatar(HttpServletResponse response) throws IOException {
|
||||||
User user = userService.getCurrentUser().orElseThrow(() -> new ServiceException("Can not find blog owner"));
|
User user = userService.getCurrentUser().orElseThrow(() -> new ServiceException("找不到博主信息"));
|
||||||
if (StringUtils.isNotEmpty(user.getAvatar())) {
|
if (StringUtils.isNotEmpty(user.getAvatar())) {
|
||||||
response.sendRedirect(user.getAvatar());
|
response.sendRedirect(user.getAvatar());
|
||||||
}
|
}
|
||||||
|
|
|
@ -65,7 +65,7 @@ public class CommentEventListener {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
User user = userService.getCurrentUser().orElseThrow(() -> new ServiceException("Can not find blog owner"));
|
User user = userService.getCurrentUser().orElseThrow(() -> new ServiceException("找不到博主信息"));
|
||||||
|
|
||||||
|
|
||||||
Map<String, Object> data = new HashMap<>();
|
Map<String, Object> data = new HashMap<>();
|
||||||
|
|
|
@ -21,27 +21,27 @@ import javax.validation.constraints.Size;
|
||||||
@Data
|
@Data
|
||||||
public class UserParam implements InputConverter<User> {
|
public class UserParam implements InputConverter<User> {
|
||||||
|
|
||||||
@NotBlank(message = "用户名不能为空", groups = {AllCheck.class})
|
@NotBlank(message = "用户名不能为空", groups = {CreateCheck.class, UpdateCheck.class})
|
||||||
@Size(max = 50, message = "用户名的字符长度不能超过 {max}", groups = {AllCheck.class})
|
@Size(max = 50, message = "用户名的字符长度不能超过 {max}", groups = {CreateCheck.class, UpdateCheck.class})
|
||||||
private String username;
|
private String username;
|
||||||
|
|
||||||
@NotBlank(message = "用户昵称不能为空", groups = {AllCheck.class})
|
@NotBlank(message = "用户昵称不能为空", groups = {CreateCheck.class, UpdateCheck.class})
|
||||||
@Size(max = 255, message = "用户昵称的字符长度不能超过 {max}", groups = {AllCheck.class})
|
@Size(max = 255, message = "用户昵称的字符长度不能超过 {max}", groups = {CreateCheck.class, UpdateCheck.class})
|
||||||
private String nickname;
|
private String nickname;
|
||||||
|
|
||||||
@Email(message = "电子邮件地址的格式不正确", groups = {AllCheck.class})
|
@Email(message = "电子邮件地址的格式不正确", groups = {CreateCheck.class, UpdateCheck.class})
|
||||||
@NotBlank(message = "电子邮件地址不能为空", groups = {AllCheck.class})
|
@NotBlank(message = "电子邮件地址不能为空", groups = {CreateCheck.class, UpdateCheck.class})
|
||||||
@Size(max = 127, message = "电子邮件的字符长度不能超过 {max}", groups = {AllCheck.class})
|
@Size(max = 127, message = "电子邮件的字符长度不能超过 {max}", groups = {CreateCheck.class, UpdateCheck.class})
|
||||||
private String email;
|
private String email;
|
||||||
|
|
||||||
@Null(groups = UpdateCheck.class)
|
@Null(groups = UpdateCheck.class)
|
||||||
@Size(min = 8, max = 100, message = "密码的字符长度必须在 {min} - {max} 之间", groups = {CreateCheck.class})
|
@Size(min = 8, max = 100, message = "密码的字符长度必须在 {min} - {max} 之间", groups = {CreateCheck.class})
|
||||||
private String password;
|
private String password;
|
||||||
|
|
||||||
@Size(max = 1023, message = "头像链接地址的字符长度不能超过 {max}", groups = {AllCheck.class})
|
@Size(max = 1023, message = "头像链接地址的字符长度不能超过 {max}", groups = {CreateCheck.class, UpdateCheck.class})
|
||||||
private String avatar;
|
private String avatar;
|
||||||
|
|
||||||
@Size(max = 1023, message = "用户描述的字符长度不能超过 {max}", groups = {AllCheck.class})
|
@Size(max = 1023, message = "用户描述的字符长度不能超过 {max}", groups = {CreateCheck.class, UpdateCheck.class})
|
||||||
private String description;
|
private String description;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -137,7 +137,7 @@ public abstract class AbstractAuthenticationFilter extends OncePerRequestFilter
|
||||||
|
|
||||||
if (!isInstalled) {
|
if (!isInstalled) {
|
||||||
// If not installed
|
// If not installed
|
||||||
getFailureHandler().onFailure(request, response, new NotInstallException("The blog has not been initialized yet!"));
|
getFailureHandler().onFailure(request, response, new NotInstallException("当前博客还没有初始化"));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -98,7 +98,7 @@ public class AdminAuthenticationFilter extends AbstractAuthenticationFilter {
|
||||||
Optional<Integer> optionalUserId = cacheStore.getAny(SecurityUtils.buildTokenAccessKey(token), Integer.class);
|
Optional<Integer> optionalUserId = cacheStore.getAny(SecurityUtils.buildTokenAccessKey(token), Integer.class);
|
||||||
|
|
||||||
if (!optionalUserId.isPresent()) {
|
if (!optionalUserId.isPresent()) {
|
||||||
getFailureHandler().onFailure(request, response, new AuthenticationException("The token has been expired or not exist").setErrorData(token));
|
getFailureHandler().onFailure(request, response, new AuthenticationException("Token 已过期或不存在").setErrorData(token));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -77,7 +77,7 @@ public abstract class BasePostServiceImpl<POST extends BasePost> extends Abstrac
|
||||||
public POST getByUrl(String url) {
|
public POST getByUrl(String url) {
|
||||||
Assert.hasText(url, "Url must not be blank");
|
Assert.hasText(url, "Url must not be blank");
|
||||||
|
|
||||||
return basePostRepository.getByUrl(url).orElseThrow(() -> new NotFoundException("The post does not exist").setErrorData(url));
|
return basePostRepository.getByUrl(url).orElseThrow(() -> new NotFoundException("该文章不存在").setErrorData(url));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -87,7 +87,7 @@ public abstract class BasePostServiceImpl<POST extends BasePost> extends Abstrac
|
||||||
|
|
||||||
Optional<POST> postOptional = basePostRepository.getByUrlAndStatus(url, status);
|
Optional<POST> postOptional = basePostRepository.getByUrlAndStatus(url, status);
|
||||||
|
|
||||||
return postOptional.orElseThrow(() -> new NotFoundException("The post with status " + status + " and url " + url + "was not existed").setErrorData(url));
|
return postOptional.orElseThrow(() -> new NotFoundException("The post with status " + status + " and url " + url + " was not existed").setErrorData(url));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -152,7 +152,7 @@ public class CategoryServiceImpl extends AbstractCrudService<Category, Integer>
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public Category getBySlugName(String slugName) {
|
public Category getBySlugName(String slugName) {
|
||||||
return categoryRepository.getBySlugName(slugName).orElseThrow(() -> new NotFoundException("The Category does not exist").setErrorData(slugName));
|
return categoryRepository.getBySlugName(slugName).orElseThrow(() -> new NotFoundException("该分类已存在").setErrorData(slugName));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -57,7 +57,7 @@ public class TagServiceImpl extends AbstractCrudService<Tag, Integer> implements
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public Tag getBySlugNameOfNonNull(String slugName) {
|
public Tag getBySlugNameOfNonNull(String slugName) {
|
||||||
return tagRepository.getBySlugName(slugName).orElseThrow(() -> new NotFoundException("The tag does not exist").setErrorData(slugName));
|
return tagRepository.getBySlugName(slugName).orElseThrow(() -> new NotFoundException("该标签已存在").setErrorData(slugName));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -223,7 +223,7 @@ public class ThemeServiceImpl implements ThemeService {
|
||||||
try {
|
try {
|
||||||
return new String(Files.readAllBytes(path), StandardCharsets.UTF_8);
|
return new String(Files.readAllBytes(path), StandardCharsets.UTF_8);
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
throw new ServiceException("Failed to read file " + absolutePath, e);
|
throw new ServiceException("读取模板内容失败 " + absolutePath, e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -237,7 +237,7 @@ public class ThemeServiceImpl implements ThemeService {
|
||||||
try {
|
try {
|
||||||
Files.write(path, content.getBytes(StandardCharsets.UTF_8));
|
Files.write(path, content.getBytes(StandardCharsets.UTF_8));
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
throw new ServiceException("Failed to write file " + absolutePath, e);
|
throw new ServiceException("保存模板内容失败 " + absolutePath, e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -418,7 +418,7 @@ public class ThemeServiceImpl implements ThemeService {
|
||||||
.anyMatch(themeProperty -> themeProperty.getId().equalsIgnoreCase(tmpThemeProperty.getId()));
|
.anyMatch(themeProperty -> themeProperty.getId().equalsIgnoreCase(tmpThemeProperty.getId()));
|
||||||
|
|
||||||
if (isExist) {
|
if (isExist) {
|
||||||
throw new AlreadyExistsException("The theme with id " + tmpThemeProperty.getId() + " has already existed");
|
throw new AlreadyExistsException("当前安装的主题已存在");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Copy the temporary path to current theme folder
|
// Copy the temporary path to current theme folder
|
||||||
|
@ -722,7 +722,7 @@ public class ThemeServiceImpl implements ThemeService {
|
||||||
*/
|
*/
|
||||||
@NonNull
|
@NonNull
|
||||||
private Path getThemePropertyPath(@NonNull Path themePath) {
|
private Path getThemePropertyPath(@NonNull Path themePath) {
|
||||||
return getThemePropertyPathOfNullable(themePath).orElseThrow(() -> new ThemePropertyMissingException(themePath + " dose not exist any theme property file").setErrorData(themePath));
|
return getThemePropertyPathOfNullable(themePath).orElseThrow(() -> new ThemePropertyMissingException(themePath + " 没有说明文件").setErrorData(themePath));
|
||||||
}
|
}
|
||||||
|
|
||||||
private Optional<ThemeProperty> getPropertyOfNullable(Path themePath) {
|
private Optional<ThemeProperty> getPropertyOfNullable(Path themePath) {
|
||||||
|
@ -773,7 +773,7 @@ public class ThemeServiceImpl implements ThemeService {
|
||||||
*/
|
*/
|
||||||
@NonNull
|
@NonNull
|
||||||
private ThemeProperty getProperty(@NonNull Path themePath) {
|
private ThemeProperty getProperty(@NonNull Path themePath) {
|
||||||
return getPropertyOfNullable(themePath).orElseThrow(() -> new ThemePropertyMissingException("Cannot resolve theme property").setErrorData(themePath));
|
return getPropertyOfNullable(themePath).orElseThrow(() -> new ThemePropertyMissingException("该主题没有说明文件").setErrorData(themePath));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -1 +0,0 @@
|
||||||
.v-note-wrapper[data-v-669770a4]{z-index:1000;min-height:580px}.post-thum .img[data-v-669770a4]{width:100%;cursor:pointer;border-radius:4px}.post-thum .post-thum-remove[data-v-669770a4]{margin-top:16px}
|
|
|
@ -0,0 +1 @@
|
||||||
|
.category-tree[data-v-0f333a36]{margin-top:1rem}
|
|
@ -1 +0,0 @@
|
||||||
.analysis-card-container[data-v-4cadd8f2]{position:relative;overflow:hidden;width:100%}.analysis-card-container .meta[data-v-4cadd8f2]{position:relative;overflow:hidden;width:100%;color:rgba(0,0,0,.45);font-size:14px;line-height:22px}.analysis-card-container .meta .analysis-card-action[data-v-4cadd8f2]{cursor:pointer;position:absolute;top:0;right:0}.number[data-v-4cadd8f2]{overflow:hidden;text-overflow:ellipsis;word-break:break-all;white-space:nowrap;color:#000;margin-top:4px;margin-bottom:0;font-size:32px;line-height:38px;height:38px}
|
|
|
@ -0,0 +1 @@
|
||||||
|
.height-100[data-v-1ac0b863]{height:100vh}.install-action[data-v-1ac0b863]{margin-top:1rem}.previus-button[data-v-1ac0b863]{margin-right:1rem}.install-card[data-v-1ac0b863]{-webkit-box-shadow:0 10px 20px 0 hsla(0,0%,92.5%,.86);box-shadow:0 10px 20px 0 hsla(0,0%,92.5%,.86)}
|
|
@ -1 +0,0 @@
|
||||||
.category-tree[data-v-3d736771]{margin-top:1rem}
|
|
|
@ -0,0 +1 @@
|
||||||
|
.attach-detail-img img{width:100%}.ant-divider-horizontal[data-v-40ab62a8]{margin:24px 0 12px 0}.search-box[data-v-40ab62a8]{padding-bottom:12px}.attach-thumb[data-v-40ab62a8]{width:100%;margin:0 auto;position:relative;padding-bottom:56%;overflow:hidden}.attach-thumb img[data-v-40ab62a8]{width:100%;height:100%;position:absolute;top:0;left:0}.ant-card-meta[data-v-40ab62a8]{padding:.8rem}.attach-detail-img img[data-v-40ab62a8]{width:100%}.table-operator[data-v-40ab62a8]{margin-bottom:0}
|
|
@ -1 +0,0 @@
|
||||||
.attach-detail-img img{width:100%}.ant-divider-horizontal[data-v-b694bf52]{margin:24px 0 12px 0}.search-box[data-v-b694bf52]{padding-bottom:12px}.attach-thumb[data-v-b694bf52]{width:100%;margin:0 auto;position:relative;padding-bottom:56%;overflow:hidden}.attach-thumb img[data-v-b694bf52]{width:100%;height:100%;position:absolute;top:0;left:0}.ant-card-meta[data-v-b694bf52]{padding:.8rem}.attach-detail-img img[data-v-b694bf52]{width:100%}.table-operator[data-v-b694bf52]{margin-bottom:0}
|
|
|
@ -0,0 +1 @@
|
||||||
|
.v-note-wrapper[data-v-6778754a]{z-index:1000;min-height:580px}.sheet-thum .img[data-v-6778754a]{width:100%;cursor:pointer;border-radius:4px}.sheet-thum .sheet-thum-remove[data-v-6778754a]{margin-top:16px}
|
|
@ -0,0 +1 @@
|
||||||
|
.v-note-wrapper[data-v-348cd59e]{z-index:1000;min-height:580px}.post-thum .img[data-v-348cd59e]{width:100%;cursor:pointer;border-radius:4px}.post-thum .post-thum-remove[data-v-348cd59e]{margin-top:16px}
|
|
@ -1 +1 @@
|
||||||
.attach-item{width:50%;margin:0 auto;position:relative;padding-bottom:28%;overflow:hidden;float:left;cursor:pointer}.attach-item img{width:100%;height:100%;position:absolute;top:0;left:0}.page-header-wrapper-grid-content-main[data-v-f7b75946]{width:100%;height:100%;min-height:100%;-webkit-transition:.3s;transition:.3s}.page-header-wrapper-grid-content-main .profile-center-avatarHolder[data-v-f7b75946]{text-align:center;margin-bottom:24px}.page-header-wrapper-grid-content-main .profile-center-avatarHolder>.avatar[data-v-f7b75946]{margin:0 auto;width:104px;height:104px;margin-bottom:20px;border-radius:50%;overflow:hidden;cursor:pointer}.page-header-wrapper-grid-content-main .profile-center-avatarHolder>.avatar img[data-v-f7b75946]{height:100%;width:100%}.page-header-wrapper-grid-content-main .profile-center-avatarHolder .username[data-v-f7b75946]{color:rgba(0,0,0,.85);font-size:20px;line-height:28px;font-weight:500;margin-bottom:4px}.page-header-wrapper-grid-content-main .profile-center-detail p[data-v-f7b75946]{margin-bottom:8px;padding-left:26px;position:relative}.page-header-wrapper-grid-content-main .profile-center-detail i[data-v-f7b75946]{position:absolute;height:14px;width:14px;left:0;top:4px}
|
.attach-item{width:50%;margin:0 auto;position:relative;padding-bottom:28%;overflow:hidden;float:left;cursor:pointer}.attach-item img{width:100%;height:100%;position:absolute;top:0;left:0}.page-header-wrapper-grid-content-main[data-v-23ca7e76]{width:100%;height:100%;min-height:100%;-webkit-transition:.3s;transition:.3s}.page-header-wrapper-grid-content-main .profile-center-avatarHolder[data-v-23ca7e76]{text-align:center;margin-bottom:24px}.page-header-wrapper-grid-content-main .profile-center-avatarHolder>.avatar[data-v-23ca7e76]{margin:0 auto;width:104px;height:104px;margin-bottom:20px;border-radius:50%;overflow:hidden;cursor:pointer}.page-header-wrapper-grid-content-main .profile-center-avatarHolder>.avatar img[data-v-23ca7e76]{height:100%;width:100%}.page-header-wrapper-grid-content-main .profile-center-avatarHolder .username[data-v-23ca7e76]{color:rgba(0,0,0,.85);font-size:20px;line-height:28px;font-weight:500;margin-bottom:4px}.page-header-wrapper-grid-content-main .profile-center-detail p[data-v-23ca7e76]{margin-bottom:8px;padding-left:26px;position:relative}.page-header-wrapper-grid-content-main .profile-center-detail i[data-v-23ca7e76]{position:absolute;height:14px;width:14px;left:0;top:4px}
|
|
@ -1 +1 @@
|
||||||
.attach-detail-img img{width:100%}.attach-item{width:50%;margin:0 auto;position:relative;padding-bottom:28%;overflow:hidden;float:left;cursor:pointer}.attach-item img{width:100%;height:100%;position:absolute;top:0;left:0}.upload-button[data-v-76b16ba4]{position:fixed;bottom:30px;right:30px}.theme-thumb[data-v-76b16ba4]{width:100%;margin:0 auto;position:relative;padding-bottom:56%;overflow:hidden}.theme-thumb img[data-v-76b16ba4]{width:100%;height:100%;position:absolute;top:0;left:0}
|
.attach-detail-img img{width:100%}.attach-item{width:50%;margin:0 auto;position:relative;padding-bottom:28%;overflow:hidden;float:left;cursor:pointer}.attach-item img{width:100%;height:100%;position:absolute;top:0;left:0}.upload-button[data-v-773a8e75]{position:fixed;bottom:30px;right:30px}.theme-thumb[data-v-773a8e75]{width:100%;margin:0 auto;position:relative;padding-bottom:56%;overflow:hidden}.theme-thumb img[data-v-773a8e75]{width:100%;height:100%;position:absolute;top:0;left:0}
|
File diff suppressed because one or more lines are too long
|
@ -0,0 +1 @@
|
||||||
|
.attach-item{width:50%;margin:0 auto;position:relative;padding-bottom:28%;overflow:hidden;float:left;cursor:pointer}.attach-item img{width:100%;height:100%;position:absolute;top:0;left:0}.ant-divider-horizontal[data-v-4bf43659]{margin:24px 0 12px 0}.search-box[data-v-4bf43659]{padding-bottom:12px}.photo-thumb[data-v-4bf43659]{width:100%;margin:0 auto;position:relative;padding-bottom:56%;overflow:hidden}.photo-thumb img[data-v-4bf43659]{width:100%;height:100%;position:absolute;top:0;left:0}.ant-card-meta[data-v-4bf43659]{padding:.8rem}.photo-detail-img img[data-v-4bf43659]{width:100%}.table-operator[data-v-4bf43659]{margin-bottom:0}
|
|
@ -1 +0,0 @@
|
||||||
.attach-item{width:50%;margin:0 auto;position:relative;padding-bottom:28%;overflow:hidden;float:left;cursor:pointer}.attach-item img{width:100%;height:100%;position:absolute;top:0;left:0}.ant-divider-horizontal[data-v-a0043536]{margin:24px 0 12px 0}.search-box[data-v-a0043536]{padding-bottom:12px}.photo-thumb[data-v-a0043536]{width:100%;margin:0 auto;position:relative;padding-bottom:56%;overflow:hidden}.photo-thumb img[data-v-a0043536]{width:100%;height:100%;position:absolute;top:0;left:0}.ant-card-meta[data-v-a0043536]{padding:.8rem}.photo-detail-img img[data-v-a0043536]{width:100%}.table-operator[data-v-a0043536]{margin-bottom:0}
|
|
|
@ -1 +0,0 @@
|
||||||
.v-note-wrapper[data-v-d8269fa2]{z-index:1000;min-height:580px}.sheet-thum .img[data-v-d8269fa2]{width:100%;cursor:pointer;border-radius:4px}.sheet-thum .sheet-thum-remove[data-v-d8269fa2]{margin-top:16px}
|
|
|
@ -1 +0,0 @@
|
||||||
.height-100[data-v-02458676]{height:100vh}.install-action[data-v-02458676]{margin-top:1rem}.previus-button[data-v-02458676]{margin-right:1rem}.install-card[data-v-02458676]{-webkit-box-shadow:0 10px 20px 0 hsla(0,0%,92.5%,.86);box-shadow:0 10px 20px 0 hsla(0,0%,92.5%,.86)}
|
|
|
@ -0,0 +1 @@
|
||||||
|
.analysis-card-container[data-v-704c3674]{position:relative;overflow:hidden;width:100%}.analysis-card-container .meta[data-v-704c3674]{position:relative;overflow:hidden;width:100%;color:rgba(0,0,0,.45);font-size:14px;line-height:22px}.analysis-card-container .meta .analysis-card-action[data-v-704c3674]{cursor:pointer;position:absolute;top:0;right:0}.number[data-v-704c3674]{overflow:hidden;text-overflow:ellipsis;word-break:break-all;white-space:nowrap;color:#000;margin-top:4px;margin-bottom:0;font-size:32px;line-height:38px;height:38px}
|
File diff suppressed because one or more lines are too long
|
@ -0,0 +1 @@
|
||||||
|
.exception[data-v-230942b4]{min-height:500px;height:80%;-webkit-box-align:center;-ms-flex-align:center;align-items:center;text-align:center;margin-top:150px}.exception .img[data-v-230942b4]{display:inline-block;padding-right:52px;zoom:1}.exception .img img[data-v-230942b4]{height:360px;max-width:430px}.exception .content[data-v-230942b4]{display:inline-block;-webkit-box-flex:1;-ms-flex:auto;flex:auto}.exception .content h1[data-v-230942b4]{color:#434e59;font-size:72px;font-weight:600;line-height:72px;margin-bottom:24px}.exception .content .desc[data-v-230942b4]{color:rgba(0,0,0,.45);font-size:20px;line-height:28px;margin-bottom:16px}.mobile .exception[data-v-230942b4]{margin-top:30px}.mobile .exception .img[data-v-230942b4]{padding-right:unset}.mobile .exception .img img[data-v-230942b4]{height:40%;max-width:80%}
|
|
@ -1 +0,0 @@
|
||||||
.exception[data-v-729a8fea]{min-height:500px;height:80%;-webkit-box-align:center;-ms-flex-align:center;align-items:center;text-align:center;margin-top:150px}.exception .img[data-v-729a8fea]{display:inline-block;padding-right:52px;zoom:1}.exception .img img[data-v-729a8fea]{height:360px;max-width:430px}.exception .content[data-v-729a8fea]{display:inline-block;-webkit-box-flex:1;-ms-flex:auto;flex:auto}.exception .content h1[data-v-729a8fea]{color:#434e59;font-size:72px;font-weight:600;line-height:72px;margin-bottom:24px}.exception .content .desc[data-v-729a8fea]{color:rgba(0,0,0,.45);font-size:20px;line-height:28px;margin-bottom:16px}.mobile .exception[data-v-729a8fea]{margin-top:30px}.mobile .exception .img[data-v-729a8fea]{padding-right:unset}.mobile .exception .img img[data-v-729a8fea]{height:40%;max-width:80%}
|
|
|
@ -1 +1 @@
|
||||||
<!DOCTYPE html><html lang=zh-cmn-Hans><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no"><meta name=robots content=noindex,nofllow><meta name=generator content=Halo><link rel=icon href=/logo.png><title>Halo Dashboard</title><link href=/css/chunk-02f1697e.7cf84e9e.css rel=prefetch><link href=/css/chunk-0aab7d1a.701a4459.css rel=prefetch><link href=/css/chunk-14e8932a.b6783003.css rel=prefetch><link href=/css/chunk-1c8b985a.c1990d7c.css rel=prefetch><link href=/css/chunk-1ea08528.db89d50a.css rel=prefetch><link href=/css/chunk-31829c73.f3153164.css rel=prefetch><link href=/css/chunk-4fb0639b.743bdcba.css rel=prefetch><link href=/css/chunk-75751d79.7d0c0e85.css rel=prefetch><link href=/css/chunk-898a93f6.909d3d1b.css rel=prefetch><link href=/css/chunk-9449c032.dafef2de.css rel=prefetch><link href=/css/chunk-b6cd2e50.0090ea54.css rel=prefetch><link href=/css/chunk-c5b09f02.5e377c2d.css rel=prefetch><link href=/css/chunk-edd856c6.ca1bfaac.css rel=prefetch><link href=/css/chunk-efde06fa.aaca0f75.css rel=prefetch><link href=/css/fail.e9c3e2d8.css rel=prefetch><link href=/js/chunk-02f1697e.fbb91c62.js rel=prefetch><link href=/js/chunk-0aab7d1a.dba028d3.js rel=prefetch><link href=/js/chunk-142c8832.0d298dce.js rel=prefetch><link href=/js/chunk-14e8932a.c6563b86.js rel=prefetch><link href=/js/chunk-1c8b985a.d1e58af8.js rel=prefetch><link href=/js/chunk-1ea08528.6dd705ab.js rel=prefetch><link href=/js/chunk-2d0b64bf.14e99e26.js rel=prefetch><link href=/js/chunk-2d0d65a2.d68d48c2.js rel=prefetch><link href=/js/chunk-2d21a35c.19f1174e.js rel=prefetch><link href=/js/chunk-31829c73.620e8a22.js rel=prefetch><link href=/js/chunk-407d6578.1ef8e454.js rel=prefetch><link href=/js/chunk-4fb0639b.1be7f2f2.js rel=prefetch><link href=/js/chunk-5bf599cc.b6b7c7ec.js rel=prefetch><link href=/js/chunk-71fa6d51.79e1ddb2.js rel=prefetch><link href=/js/chunk-75751d79.1b49b36e.js rel=prefetch><link href=/js/chunk-87e2df70.8d9028cf.js rel=prefetch><link href=/js/chunk-898a93f6.c0e9bb6c.js rel=prefetch><link href=/js/chunk-9449c032.9e9ce69b.js rel=prefetch><link href=/js/chunk-b6cd2e50.cc4cab63.js rel=prefetch><link href=/js/chunk-c5b09f02.3952a273.js rel=prefetch><link href=/js/chunk-edd856c6.20633ba8.js rel=prefetch><link href=/js/chunk-efde06fa.9e1e510c.js rel=prefetch><link href=/js/fail.b90b115d.js rel=prefetch><link href=/css/app.803dd628.css rel=preload as=style><link href=/css/chunk-vendors.80056587.css rel=preload as=style><link href=/js/app.63c77087.js rel=preload as=script><link href=/js/chunk-vendors.fb9e7626.js rel=preload as=script><link href=/css/chunk-vendors.80056587.css rel=stylesheet><link href=/css/app.803dd628.css rel=stylesheet></head><body><noscript><strong>We're sorry but vue-antd-pro doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id=app></div><script src=/js/chunk-vendors.fb9e7626.js></script><script src=/js/app.63c77087.js></script></body></html>
|
<!DOCTYPE html><html lang=zh-cmn-Hans><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no"><meta name=robots content=noindex,nofllow><meta name=generator content=Halo><link rel=icon href=/logo.png><title>Halo Dashboard</title><link href=/css/chunk-0337f7a6.4c6b622f.css rel=prefetch><link href=/css/chunk-14e0b302.32f796a8.css rel=prefetch><link href=/css/chunk-1be69b35.b6783003.css rel=prefetch><link href=/css/chunk-2a007c18.45475c5a.css rel=prefetch><link href=/css/chunk-31c8ea42.4a090118.css rel=prefetch><link href=/css/chunk-35e63e70.6a83ae7d.css rel=prefetch><link href=/css/chunk-4851a43a.09186be6.css rel=prefetch><link href=/css/chunk-4e835ab8.5f75da19.css rel=prefetch><link href=/css/chunk-55d28d8a.5710ea86.css rel=prefetch><link href=/css/chunk-5b9151a2.5ac5144c.css rel=prefetch><link href=/css/chunk-6d8b31f6.ad8d17b2.css rel=prefetch><link href=/css/chunk-9449c032.6f053d75.css rel=prefetch><link href=/css/chunk-bb4f0d4a.c1990d7c.css rel=prefetch><link href=/css/chunk-f1eac230.8481e8b4.css rel=prefetch><link href=/css/fail.809a6bc5.css rel=prefetch><link href=/js/chunk-0337f7a6.53ede862.js rel=prefetch><link href=/js/chunk-142c8832.919c15cb.js rel=prefetch><link href=/js/chunk-14e0b302.8cbbed1c.js rel=prefetch><link href=/js/chunk-1be69b35.3b96d59c.js rel=prefetch><link href=/js/chunk-2a007c18.d7c59ddb.js rel=prefetch><link href=/js/chunk-2d0b64bf.2af37a5a.js rel=prefetch><link href=/js/chunk-2d0d65a2.cea2ab69.js rel=prefetch><link href=/js/chunk-2d21a35c.8a7b3003.js rel=prefetch><link href=/js/chunk-2d228d13.f8dd7bb5.js rel=prefetch><link href=/js/chunk-31c8ea42.fcec41a2.js rel=prefetch><link href=/js/chunk-35e63e70.25724764.js rel=prefetch><link href=/js/chunk-4851a43a.eadb6121.js rel=prefetch><link href=/js/chunk-4b5e9e93.8033dcf8.js rel=prefetch><link href=/js/chunk-4e835ab8.734baaf4.js rel=prefetch><link href=/js/chunk-55d28d8a.e28b3150.js rel=prefetch><link href=/js/chunk-5b9151a2.9189da9d.js rel=prefetch><link href=/js/chunk-5bf599cc.c2681092.js rel=prefetch><link href=/js/chunk-6d8b31f6.cb49297f.js rel=prefetch><link href=/js/chunk-87e2df70.b954f846.js rel=prefetch><link href=/js/chunk-9449c032.8f6a0d1a.js rel=prefetch><link href=/js/chunk-bb4f0d4a.c336573f.js rel=prefetch><link href=/js/chunk-f1eac230.05982c8b.js rel=prefetch><link href=/js/fail.13f5cbab.js rel=prefetch><link href=/css/app.8abf48c5.css rel=preload as=style><link href=/css/chunk-vendors.da56ac75.css rel=preload as=style><link href=/js/app.e0ba5034.js rel=preload as=script><link href=/js/chunk-vendors.fe7dde0e.js rel=preload as=script><link href=/css/chunk-vendors.da56ac75.css rel=stylesheet><link href=/css/app.8abf48c5.css rel=stylesheet></head><body><noscript><strong>We're sorry but vue-antd-pro doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id=app></div><script src=/js/chunk-vendors.fe7dde0e.js></script><script src=/js/app.e0ba5034.js></script></body></html>
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -1 +0,0 @@
|
||||||
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-14e8932a"],{2967:function(t,a,e){"use strict";e.r(a);var n=function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("div",{staticClass:"page-header-index-wide"},[e("a-row",[e("a-col",{attrs:{span:24}},[e("a-card",{attrs:{bordered:!1}},[e("a-list",{attrs:{itemLayout:"horizontal"}},[e("a-list-item",[e("a-list-item-meta",[e("h3",{attrs:{slot:"title"},slot:"title"},[t._v("\n 环境信息\n ")]),e("template",{slot:"description"},[e("ul",[e("li",[t._v("版本:"+t._s(t.environments.version))]),e("li",[t._v("数据库:"+t._s(t.environments.database))]),e("li",[t._v("启动时间:"+t._s(t._f("moment")(t.environments.startTime)))])]),e("a",{attrs:{href:"https://github.com/halo-dev",target:"_blank"}},[t._v("开源地址\n "),e("a-icon",{attrs:{type:"link"}})],1),t._v(" \n "),e("a",{attrs:{href:"https://docs.halo.run",target:"_blank"}},[t._v("用户文档\n "),e("a-icon",{attrs:{type:"link"}})],1),t._v(" \n "),e("a",{attrs:{href:"https://bbs.halo.run",target:"_blank"}},[t._v("问题反馈\n "),e("a-icon",{attrs:{type:"link"}})],1),t._v(" \n ")])],2)],1),e("a-list-item",[e("a-list-item-meta",[e("h3",{attrs:{slot:"title"},slot:"title"},[t._v("\n 开发者\n ")]),e("template",{slot:"description"},t._l(t.developers,function(t,a){return e("a-tooltip",{key:a,attrs:{placement:"top",title:t.name}},[e("a-avatar",{style:{marginRight:"10px"},attrs:{size:"large",src:t.avatar}})],1)}),1)],2)],1),e("a-list-item",[e("a-list-item-meta",[e("h3",{attrs:{slot:"title"},slot:"title"},[t._v("\n 时间轴\n ")]),e("template",{slot:"description"},[e("a-timeline",[e("a-timeline-item",[t._v("...")]),t._l(t.steps,function(a,n){return e("a-timeline-item",{key:n},[t._v(t._s(a.date)+" "+t._s(a.content))])})],2)],1)],2)],1)],1)],1)],1)],1)],1)},i=[],s=e("50fc"),r={data:function(){return{environments:{},developers:[{name:"Ryan Wang",avatar:"https://gravatar.loli.net/avatar/7cc7f29278071bd4dce995612d428834?s=256&d=mm",website:"https://ryanc.cc",github:"https://github.com/ruibaby"},{name:"John Niang",avatar:"https://gravatar.loli.net/avatar/1dcf60ef27363dae539385d5bae9b2bd?s=256&d=mm",website:"https://johnniang.me",github:"https://github.com/johnniang"},{name:"Aquan",avatar:"https://gravatar.loli.net/avatar/3958035fa354403fa9ca3fca36b08068?s=256&d=mm",website:"https://blog.eunji.cn",github:"https://github.com/aquanlerou"},{name:"appdev",avatar:"https://gravatar.loli.net/avatar/08cf681fb7c6ad1b4fe70a8269c2103c?s=256&d=mm",website:"https://www.apkdv.com",github:"https://github.com/appdev"}],steps:[{date:"2019-??-??",content:"1.0 正式版发布"},{date:"2019-05-03",content:"Star 数达到 3300"},{date:"2019-01-30",content:"John Niang 加入开发"},{date:"2018-10-18",content:"构建镜像到 Docker hub"},{date:"2018-09-22",content:"Star 数达到 800"},{date:"2018-05-02",content:"第一条 Issue"},{date:"2018-05-01",content:"Star 数达到 100"},{date:"2018-04-29",content:"第一个 Pull request"},{date:"2018-04-28",content:"正式开源"},{date:"2018-03-21",content:"确定命名为 Halo,并上传到 Github"}]}},created:function(){this.getEnvironments()},methods:{getEnvironments:function(){var t=this;s["a"].environments().then(function(a){t.environments=a.data.data})}}},o=r,l=(e("5ea2"),e("17cc")),c=Object(l["a"])(o,n,i,!1,null,null,null);a["default"]=c.exports},"5ea2":function(t,a,e){"use strict";var n=e("8b55"),i=e.n(n);i.a},"8b55":function(t,a,e){}}]);
|
|
|
@ -0,0 +1 @@
|
||||||
|
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-1be69b35"],{"031c":function(t,a,e){},2967:function(t,a,e){"use strict";e.r(a);var n=function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("div",{staticClass:"page-header-index-wide"},[e("a-row",[e("a-col",{attrs:{span:24}},[e("a-card",{attrs:{bordered:!1}},[e("a-list",{attrs:{itemLayout:"horizontal"}},[e("a-list-item",[e("a-list-item-meta",[e("h3",{attrs:{slot:"title"},slot:"title"},[t._v("\n 环境信息\n ")]),e("template",{slot:"description"},[e("ul",[e("li",[t._v("版本:"+t._s(t.environments.version))]),e("li",[t._v("数据库:"+t._s(t.environments.database))]),e("li",[t._v("启动时间:"+t._s(t._f("moment")(t.environments.startTime)))])]),e("a",{attrs:{href:"https://github.com/halo-dev",target:"_blank"}},[t._v("开源地址\n "),e("a-icon",{attrs:{type:"link"}})],1),t._v(" \n "),e("a",{attrs:{href:"https://halo.run/docs",target:"_blank"}},[t._v("用户文档\n "),e("a-icon",{attrs:{type:"link"}})],1),t._v(" \n "),e("a",{attrs:{href:"https://bbs.halo.run",target:"_blank"}},[t._v("在线社区\n "),e("a-icon",{attrs:{type:"link"}})],1),t._v(" \n ")])],2)],1),e("a-list-item",[e("a-list-item-meta",[e("h3",{attrs:{slot:"title"},slot:"title"},[t._v("\n 开发者\n ")]),e("template",{slot:"description"},t._l(t.developers,function(t,a){return e("a-tooltip",{key:a,attrs:{placement:"top",title:t.name}},[e("a-avatar",{style:{marginRight:"10px"},attrs:{size:"large",src:t.avatar}})],1)}),1)],2)],1),e("a-list-item",[e("a-list-item-meta",[e("h3",{attrs:{slot:"title"},slot:"title"},[t._v("\n 时间轴\n ")]),e("template",{slot:"description"},[e("a-timeline",[e("a-timeline-item",[t._v("...")]),t._l(t.steps,function(a,n){return e("a-timeline-item",{key:n},[t._v(t._s(a.date)+" "+t._s(a.content))])})],2)],1)],2)],1)],1)],1)],1)],1)],1)},i=[],s=e("50fc"),r={data:function(){return{environments:{},developers:[{name:"Ryan Wang",avatar:"https://gravatar.loli.net/avatar/7cc7f29278071bd4dce995612d428834?s=256&d=mm",website:"https://ryanc.cc",github:"https://github.com/ruibaby"},{name:"John Niang",avatar:"https://gravatar.loli.net/avatar/1dcf60ef27363dae539385d5bae9b2bd?s=256&d=mm",website:"https://johnniang.me",github:"https://github.com/johnniang"},{name:"Aquan",avatar:"https://gravatar.loli.net/avatar/3958035fa354403fa9ca3fca36b08068?s=256&d=mm",website:"https://blog.eunji.cn",github:"https://github.com/aquanlerou"},{name:"appdev",avatar:"https://gravatar.loli.net/avatar/08cf681fb7c6ad1b4fe70a8269c2103c?s=256&d=mm",website:"https://www.apkdv.com",github:"https://github.com/appdev"}],steps:[{date:"2019-??-??",content:"1.0 正式版发布"},{date:"2019-05-03",content:"Star 数达到 3300"},{date:"2019-01-30",content:"John Niang 加入开发"},{date:"2018-10-18",content:"构建镜像到 Docker hub"},{date:"2018-09-22",content:"Star 数达到 800"},{date:"2018-05-02",content:"第一条 Issue"},{date:"2018-05-01",content:"Star 数达到 100"},{date:"2018-04-29",content:"第一个 Pull request"},{date:"2018-04-28",content:"正式开源"},{date:"2018-03-21",content:"确定命名为 Halo,并上传到 Github"}]}},created:function(){this.getEnvironments()},methods:{getEnvironments:function(){var t=this;s["a"].environments().then(function(a){t.environments=a.data.data})}}},o=r,l=(e("5ea2"),e("17cc")),c=Object(l["a"])(o,n,i,!1,null,null,null);a["default"]=c.exports},"5ea2":function(t,a,e){"use strict";var n=e("031c"),i=e.n(n);i.a}}]);
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -1 +1 @@
|
||||||
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d21a35c"],{bb17:function(t,e,n){"use strict";n.r(e);var a=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"page-header-index-wide"},[n("a-row",{attrs:{gutter:12}},[n("a-col",{style:{"padding-bottom":"12px"},attrs:{xl:10,lg:10,md:10,sm:24,xs:24}},[n("a-card",{attrs:{title:t.title}},[n("a-form",{attrs:{layout:"horizontal"}},[n("a-form-item",{attrs:{label:"网站名称:"}},[n("a-input",{model:{value:t.link.name,callback:function(e){t.$set(t.link,"name",e)},expression:"link.name"}})],1),n("a-form-item",{attrs:{label:"网站地址:",help:"* 需要加上 http://"}},[n("a-input",{model:{value:t.link.url,callback:function(e){t.$set(t.link,"url",e)},expression:"link.url"}})],1),n("a-form-item",{attrs:{label:"Logo:"}},[n("a-input",{model:{value:t.link.logo,callback:function(e){t.$set(t.link,"logo",e)},expression:"link.logo"}})],1),n("a-form-item",{attrs:{label:"分组:",help:"* 非必填"}},[n("a-input",{model:{value:t.link.team,callback:function(e){t.$set(t.link,"team",e)},expression:"link.team"}})],1),n("a-form-item",{attrs:{label:"描述:"}},[n("a-input",{attrs:{type:"textarea",autosize:{minRows:5}},model:{value:t.link.description,callback:function(e){t.$set(t.link,"description",e)},expression:"link.description"}})],1),n("a-form-item",["create"===t.formType?n("a-button",{attrs:{type:"primary"},on:{click:t.handleSaveClick}},[t._v("保存")]):n("a-button-group",[n("a-button",{attrs:{type:"primary"},on:{click:t.handleSaveClick}},[t._v("更新")]),"update"===t.formType?n("a-button",{attrs:{type:"dashed"},on:{click:t.handleAddLink}},[t._v("返回添加")]):t._e()],1)],1)],1)],1)],1),n("a-col",{style:{"padding-bottom":"12px"},attrs:{xl:14,lg:14,md:14,sm:24,xs:24}},[n("a-card",{attrs:{title:"所有友情链接"}},[n("a-table",{attrs:{columns:t.columns,dataSource:t.links,loading:t.loading,rowKey:function(t){return t.id}},scopedSlots:t._u([{key:"url",fn:function(e){return[n("a",{attrs:{target:"_blank",href:e}},[t._v(t._s(e))])]}},{key:"name",fn:function(e){return n("ellipsis",{attrs:{length:15,tooltip:""}},[t._v(t._s(e))])}},{key:"action",fn:function(e,a){return n("span",{},[n("a",{attrs:{href:"javascript:;"},on:{click:function(e){return t.handleEditLink(a.id)}}},[t._v("编辑")]),n("a-divider",{attrs:{type:"vertical"}}),n("a-popconfirm",{attrs:{title:"你确定要删除【"+a.name+"】链接?",okText:"确定",cancelText:"取消"},on:{confirm:function(e){return t.handleDeleteLink(a.id)}}},[n("a",{attrs:{href:"javascript:;"}},[t._v("删除")])])],1)}}])})],1)],1)],1)],1)},i=[],l=(n("3aba"),n("9efd")),o="/api/admin/links",c={listAll:function(){return Object(l["a"])({url:"".concat(o),method:"get"})},create:function(t){return Object(l["a"])({url:o,data:t,method:"post"})},get:function(t){return Object(l["a"])({url:"".concat(o,"/").concat(t),method:"get"})},update:function(t,e){return Object(l["a"])({url:"".concat(o,"/").concat(t),data:e,method:"put"})},delete:function(t){return Object(l["a"])({url:"".concat(o,"/").concat(t),method:"delete"})}},r=c,s=[{title:"名称",dataIndex:"name",scopedSlots:{customRender:"name"}},{title:"网址",dataIndex:"url",scopedSlots:{customRender:"url"}},{title:"分组",dataIndex:"team"},{title:"操作",key:"action",scopedSlots:{customRender:"action"}}],d={data:function(){return{formType:"create",data:[],loading:!1,columns:s,links:[],link:{}}},computed:{title:function(){return this.link.id?"修改友情链接":"添加友情链接"}},created:function(){this.loadLinks()},methods:{loadLinks:function(){var t=this;this.loading=!0,r.listAll().then(function(e){t.links=e.data.data,t.loading=!1})},handleSaveClick:function(){this.createOrUpdateLink()},handleAddLink:function(){this.formType="create",this.link={}},handleEditLink:function(t){var e=this;r.get(t).then(function(t){e.link=t.data.data,e.formType="update"})},handleDeleteLink:function(t){var e=this;r.delete(t).then(function(t){e.$message.success("删除成功!"),e.loadLinks()})},createOrUpdateLink:function(){var t=this;this.link.id?r.update(this.link.id,this.link).then(function(e){t.$message.success("更新成功!"),t.loadLinks()}):r.create(this.link).then(function(e){t.$message.success("保存成功!"),t.loadLinks()}),this.handleAddLink()}}},u=d,m=n("17cc"),k=Object(m["a"])(u,a,i,!1,null,"243cf1cf",null);e["default"]=k.exports}}]);
|
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d21a35c"],{bb17:function(t,e,n){"use strict";n.r(e);var a=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"page-header-index-wide"},[n("a-row",{attrs:{gutter:12}},[n("a-col",{style:{"padding-bottom":"12px"},attrs:{xl:10,lg:10,md:10,sm:24,xs:24}},[n("a-card",{attrs:{title:t.title}},[n("a-form",{attrs:{layout:"horizontal"}},[n("a-form-item",{attrs:{label:"网站名称:"}},[n("a-input",{model:{value:t.link.name,callback:function(e){t.$set(t.link,"name",e)},expression:"link.name"}})],1),n("a-form-item",{attrs:{label:"网站地址:",help:"* 需要加上 http://"}},[n("a-input",{model:{value:t.link.url,callback:function(e){t.$set(t.link,"url",e)},expression:"link.url"}})],1),n("a-form-item",{attrs:{label:"Logo:"}},[n("a-input",{model:{value:t.link.logo,callback:function(e){t.$set(t.link,"logo",e)},expression:"link.logo"}})],1),n("a-form-item",{attrs:{label:"分组:",help:"* 非必填"}},[n("a-input",{model:{value:t.link.team,callback:function(e){t.$set(t.link,"team",e)},expression:"link.team"}})],1),n("a-form-item",{attrs:{label:"描述:"}},[n("a-input",{attrs:{type:"textarea",autosize:{minRows:5}},model:{value:t.link.description,callback:function(e){t.$set(t.link,"description",e)},expression:"link.description"}})],1),n("a-form-item",["create"===t.formType?n("a-button",{attrs:{type:"primary"},on:{click:t.handleSaveClick}},[t._v("保存")]):n("a-button-group",[n("a-button",{attrs:{type:"primary"},on:{click:t.handleSaveClick}},[t._v("更新")]),"update"===t.formType?n("a-button",{attrs:{type:"dashed"},on:{click:t.handleAddLink}},[t._v("返回添加")]):t._e()],1)],1)],1)],1)],1),n("a-col",{style:{"padding-bottom":"12px"},attrs:{xl:14,lg:14,md:14,sm:24,xs:24}},[n("a-card",{attrs:{title:"所有友情链接"}},[n("a-table",{attrs:{columns:t.columns,dataSource:t.links,loading:t.loading,rowKey:function(t){return t.id}},scopedSlots:t._u([{key:"url",fn:function(e){return[n("a",{attrs:{target:"_blank",href:e}},[t._v(t._s(e))])]}},{key:"name",fn:function(e){return n("ellipsis",{attrs:{length:15,tooltip:""}},[t._v(t._s(e))])}},{key:"action",fn:function(e,a){return n("span",{},[n("a",{attrs:{href:"javascript:;"},on:{click:function(e){return t.handleEditLink(a.id)}}},[t._v("编辑")]),n("a-divider",{attrs:{type:"vertical"}}),n("a-popconfirm",{attrs:{title:"你确定要删除【"+a.name+"】链接?",okText:"确定",cancelText:"取消"},on:{confirm:function(e){return t.handleDeleteLink(a.id)}}},[n("a",{attrs:{href:"javascript:;"}},[t._v("删除")])])],1)}}])})],1)],1)],1)],1)},i=[],l=(n("3aba"),n("9efd")),o="/api/admin/links",r={listAll:function(){return Object(l["a"])({url:"".concat(o),method:"get"})},create:function(t){return Object(l["a"])({url:o,data:t,method:"post"})},get:function(t){return Object(l["a"])({url:"".concat(o,"/").concat(t),method:"get"})},update:function(t,e){return Object(l["a"])({url:"".concat(o,"/").concat(t),data:e,method:"put"})},delete:function(t){return Object(l["a"])({url:"".concat(o,"/").concat(t),method:"delete"})}},c=r,s=[{title:"名称",dataIndex:"name",scopedSlots:{customRender:"name"}},{title:"网址",dataIndex:"url",scopedSlots:{customRender:"url"}},{title:"分组",dataIndex:"team"},{title:"操作",key:"action",scopedSlots:{customRender:"action"}}],d={data:function(){return{formType:"create",data:[],loading:!1,columns:s,links:[],link:{}}},computed:{title:function(){return this.link.id?"修改友情链接":"添加友情链接"}},created:function(){this.loadLinks()},methods:{loadLinks:function(){var t=this;this.loading=!0,c.listAll().then(function(e){t.links=e.data.data,t.loading=!1})},handleSaveClick:function(){this.createOrUpdateLink()},handleAddLink:function(){this.formType="create",this.link={}},handleEditLink:function(t){var e=this;c.get(t).then(function(t){e.link=t.data.data,e.formType="update"})},handleDeleteLink:function(t){var e=this;c.delete(t).then(function(t){e.$message.success("删除成功!"),e.loadLinks()})},createOrUpdateLink:function(){var t=this;this.link.id?c.update(this.link.id,this.link).then(function(e){t.$message.success("更新成功!"),t.loadLinks()}):c.create(this.link).then(function(e){t.$message.success("保存成功!"),t.loadLinks()}),this.handleAddLink()}}},u=d,m=n("17cc"),k=Object(m["a"])(u,a,i,!1,null,"56d4c6ed",null);e["default"]=k.exports}}]);
|
|
@ -0,0 +1 @@
|
||||||
|
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d228d13"],{db98:function(a,t,o){"use strict";o.r(t);var e=function(){var a=this,t=a.$createElement,o=a._self._c||t;return o("div",{staticClass:"page-header-index-wide"},[o("div",{staticClass:"card-content"},[o("a-row",{attrs:{gutter:12}},[o("a-col",{attrs:{xl:6,lg:6,md:12,sm:24,xs:24}},[o("a-card",{attrs:{title:"Markdown 文章导入",bordered:!1,bodyStyle:{padding:"16px"}}},[o("p",[a._v("支持 Hexo/Jekyll 文章导入并解析元数据")]),o("a-button",{staticStyle:{float:"right"},attrs:{type:"primary"},on:{click:a.handleImportMarkdown}},[a._v("导入")])],1)],1)],1),o("a-modal",{attrs:{title:"Markdown 文章导入",footer:null},model:{value:a.markdownUpload,callback:function(t){a.markdownUpload=t},expression:"markdownUpload"}},[o("upload",{attrs:{name:"files",multiple:"",accept:"text/markdown",uploadHandler:a.uploadHandler},on:{change:a.handleChange}},[o("p",{staticClass:"ant-upload-drag-icon"},[o("a-icon",{attrs:{type:"inbox"}})],1),o("p",{staticClass:"ant-upload-text"},[a._v("拖拽或点击选择 Markdown 文件到此处")]),o("p",{staticClass:"ant-upload-hint"},[a._v("支持多个文件同时上传")])])],1)],1)])},n=[],d=(o("3a23"),o("9efd")),r="/api/admin/backups",l={importMarkdown:function(a,t,o){return Object(d["a"])({url:"".concat(r,"/import/markdowns"),timeout:864e4,data:a,onUploadProgress:t,cancelToken:o,method:"post"})}},s=l,i={data:function(){return{markdownUpload:!1,uploadHandler:s.importMarkdown}},methods:{handleImportMarkdown:function(){this.markdownUpload=!0},handleChange:function(a){var t=a.file.status;"uploading"!==t&&console.log(a.file,a.fileList),"done"===t?this.$message.success("".concat(a.file.name," 导入成功!")):"error"===t&&this.$message.error("".concat(a.file.name," 导入失败!"))}}},c=i,p=o("17cc"),u=Object(p["a"])(c,e,n,!1,null,"8dab78e6",null);t["default"]=u.exports}}]);
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -1 +0,0 @@
|
||||||
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-407d6578"],{aa1e9:function(t,a,e){"use strict";e.r(a);var n=function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("div",{staticClass:"page-header-index-wide"},[e("a-row",{attrs:{gutter:12}},[e("a-col",{style:{"padding-bottom":"12px"},attrs:{xl:10,lg:10,md:10,sm:24,xs:24}},[e("a-card",{attrs:{title:"添加标签"}},[e("a-form",{attrs:{layout:"horizontal"}},[e("a-form-item",{attrs:{label:"名称:",help:"* 页面上所显示的名称"}},[e("a-input",{model:{value:t.tagToCreate.name,callback:function(a){t.$set(t.tagToCreate,"name",a)},expression:"tagToCreate.name"}})],1),e("a-form-item",{attrs:{label:"别名",help:"* 一般为单个标签页面的标识,最好为英文"}},[e("a-input",{model:{value:t.tagToCreate.slugName,callback:function(a){t.$set(t.tagToCreate,"slugName",a)},expression:"tagToCreate.slugName"}})],1),e("a-form-item",[e("a-button",{attrs:{type:"primary"},on:{click:t.handleCreateTag}},[t._v("保存")])],1)],1)],1)],1),e("a-col",{style:{"padding-bottom":"12px"},attrs:{xl:14,lg:14,md:14,sm:24,xs:24}},[e("a-card",{attrs:{title:"所有标签"}},t._l(t.tags,function(a){return e("a-tooltip",{key:a.id,attrs:{placement:"topLeft"}},[e("template",{slot:"title"},[e("span",[t._v(t._s(a.postCount)+" 篇文章")])]),e("a-tag",{attrs:{closable:"",color:"blue"},on:{close:function(e){return t.handleDeleteTag(a.id)}}},[t._v(t._s(a.name))])],2)}),1)],1)],1)],1)},o=[],l=e("d28db"),r={data:function(){return{tags:[],tagToCreate:{},tagToUpdate:{}}},created:function(){this.loadTags()},methods:{loadTags:function(){var t=this;l["a"].listAll(!0).then(function(a){t.tags=a.data.data})},handleCreateTag:function(){var t=this;l["a"].create(this.tagToCreate).then(function(a){t.loadTags()})},handleUpdateTag:function(t){var a=this;l["a"].update(t,this.tagToUpdate).then(function(t){a.loadTags()})},handleDeleteTag:function(t){var a=this;l["a"].delete(t).then(function(t){a.$message.success("删除成功!"),a.loadTags()})}}},s=r,c=e("17cc"),i=Object(c["a"])(s,n,o,!1,null,null,null);a["default"]=i.exports},d28db:function(t,a,e){"use strict";var n=e("9efd"),o="/api/admin/tags",l={listAll:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return Object(n["a"])({url:o,params:{more:t},method:"get"})},createWithName:function(t){return Object(n["a"])({url:o,data:{name:t},method:"post"})},create:function(t){return Object(n["a"])({url:o,data:t,method:"post"})},update:function(t,a){return Object(n["a"])({url:"".concat(o,"/").concat(t),data:a,method:"put"})},delete:function(t){return Object(n["a"])({url:"".concat(o,"/").concat(t),method:"delete"})}};a["a"]=l}}]);
|
|
File diff suppressed because one or more lines are too long
|
@ -0,0 +1 @@
|
||||||
|
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-4b5e9e93"],{aa1e:function(t,a,e){"use strict";e.r(a);var n=function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("div",{staticClass:"page-header-index-wide"},[e("a-row",{attrs:{gutter:12}},[e("a-col",{style:{"padding-bottom":"12px"},attrs:{xl:10,lg:10,md:10,sm:24,xs:24}},[e("a-card",{attrs:{title:t.title}},[e("a-form",{attrs:{layout:"horizontal"}},[e("a-form-item",{attrs:{label:"名称:",help:"* 页面上所显示的名称"}},[e("a-input",{model:{value:t.tagToCreate.name,callback:function(a){t.$set(t.tagToCreate,"name",a)},expression:"tagToCreate.name"}})],1),e("a-form-item",{attrs:{label:"别名",help:"* 一般为单个标签页面的标识,最好为英文"}},[e("a-input",{model:{value:t.tagToCreate.slugName,callback:function(a){t.$set(t.tagToCreate,"slugName",a)},expression:"tagToCreate.slugName"}})],1),e("a-form-item",["create"===t.formType?e("a-button",{attrs:{type:"primary"},on:{click:t.handleSaveClick}},[t._v("保存")]):e("a-button-group",[e("a-button",{attrs:{type:"primary"},on:{click:t.handleSaveClick}},[t._v("更新")]),"update"===t.formType?e("a-button",{attrs:{type:"dashed"},on:{click:t.handleAddTag}},[t._v("返回添加")]):t._e()],1),"update"===t.formType?e("a-popconfirm",{attrs:{title:"你确定要删除【"+t.tagToCreate.name+"】标签?",okText:"确定",cancelText:"取消"},on:{confirm:function(a){return t.handleDeleteTag(t.tagToCreate.id)}}},[e("a-button",{staticStyle:{float:"right"},attrs:{type:"danger"}},[t._v("删除")])],1):t._e()],1)],1)],1)],1),e("a-col",{style:{"padding-bottom":"12px"},attrs:{xl:14,lg:14,md:14,sm:24,xs:24}},[e("a-card",{attrs:{title:"所有标签"}},t._l(t.tags,function(a){return e("a-tooltip",{key:a.id,attrs:{placement:"topLeft"}},[e("template",{slot:"title"},[e("span",[t._v(t._s(a.postCount)+" 篇文章")])]),e("a-tag",{staticStyle:{"margin-bottom":"8px"},attrs:{color:"blue"},on:{click:function(e){return t.handleEditTag(a)}}},[t._v(t._s(a.name))])],2)}),1)],1)],1)],1)},o=[],r=e("d28db"),s={data:function(){return{formType:"create",tags:[],tagToCreate:{}}},computed:{title:function(){return this.tagToCreate.id?"修改标签":"添加标签"}},created:function(){this.loadTags()},methods:{loadTags:function(){var t=this;r["a"].listAll(!0).then(function(a){t.tags=a.data.data})},handleSaveClick:function(){this.createOrUpdateTag()},handleAddTag:function(){this.formType="create",this.tagToCreate={}},handleEditTag:function(t){this.tagToCreate=t,this.formType="update"},handleDeleteTag:function(t){var a=this;r["a"].delete(t).then(function(t){a.$message.success("删除成功!"),a.loadTags(),a.handleAddTag()})},createOrUpdateTag:function(){var t=this;this.tagToCreate.id?r["a"].update(this.tagToCreate.id,this.tagToCreate).then(function(a){t.$message.success("更新成功!"),t.loadTags(),t.tagToCreate={}}):r["a"].create(this.tagToCreate).then(function(a){t.$message.success("保存成功!"),t.loadTags(),t.tagToCreate={}}),this.handleAddTag()}}},i=s,l=e("17cc"),c=Object(l["a"])(i,n,o,!1,null,null,null);a["default"]=c.exports},d28db:function(t,a,e){"use strict";var n=e("9efd"),o="/api/admin/tags",r={listAll:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return Object(n["a"])({url:o,params:{more:t},method:"get"})},createWithName:function(t){return Object(n["a"])({url:o,data:{name:t},method:"post"})},create:function(t){return Object(n["a"])({url:o,data:t,method:"post"})},update:function(t,a){return Object(n["a"])({url:"".concat(o,"/").concat(t),data:a,method:"put"})},delete:function(t){return Object(n["a"])({url:"".concat(o,"/").concat(t),method:"delete"})}};a["a"]=r}}]);
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -1 +0,0 @@
|
||||||
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-71fa6d51"],{"46b4":function(n,t){},"7ad4":function(n,t,u){"use strict";u.r(t);var r=u("46b4"),a=u.n(r);for(var c in r)"default"!==c&&function(n){u.d(t,n,function(){return r[n]})}(c);t["default"]=a.a},a9d6:function(n,t,u){"use strict";var r=function(){var n=this,t=n.$createElement,u=n._self._c||t;return u("div")},a=[];u.d(t,"a",function(){return r}),u.d(t,"b",function(){return a})},bb51:function(n,t,u){"use strict";u.r(t);var r=u("a9d6"),a=u("7ad4");for(var c in a)"default"!==c&&function(n){u.d(t,n,function(){return a[n]})}(c);var e=u("17cc"),f=Object(e["a"])(a["default"],r["a"],r["b"],!1,null,"5c5c3362",null);t["default"]=f.exports}}]);
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -1 +1 @@
|
||||||
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-9449c032"],{9231:function(a,e,t){"use strict";var s=t("ea0a"),n=t.n(s);n.a},ac2a5:function(a,e,t){"use strict";t.r(e);var s=function(){var a=this,e=a.$createElement,t=a._self._c||e;return t("div",{staticClass:"container"},[a._m(0),t("div",{staticClass:"loginBody animated"},[t("a-form",{attrs:{layout:"vertical"},nativeOn:{keyup:function(e){return!e.type.indexOf("key")&&a._k(e.keyCode,"enter",13,e.key,"Enter")?null:a.handleLogin(e)}}},[t("a-form-item",{staticClass:"animated fadeInUp",style:{"animation-delay":"0.1s"}},[t("a-input",{attrs:{placeholder:"用户名/邮箱"},model:{value:a.username,callback:function(e){a.username=e},expression:"username"}},[t("a-icon",{staticStyle:{color:"rgba(0,0,0,.25)"},attrs:{slot:"prefix",type:"user"},slot:"prefix"})],1)],1),t("a-form-item",{staticClass:"animated fadeInUp",style:{"animation-delay":"0.2s"}},[t("a-input",{attrs:{type:"password",placeholder:"密码"},model:{value:a.password,callback:function(e){a.password=e},expression:"password"}},[t("a-icon",{staticStyle:{color:"rgba(0,0,0,.25)"},attrs:{slot:"prefix",type:"lock"},slot:"prefix"})],1)],1),t("a-row",[t("a-button",{staticClass:"animated fadeInUp",style:{"animation-delay":"0.3s"},attrs:{type:"primary",block:!0},on:{click:a.handleLogin}},[a._v("登录")])],1)],1)],1)])},n=[function(){var a=this,e=a.$createElement,t=a._self._c||e;return t("div",{staticClass:"loginLogo animated fadeInUp"},[t("span",[a._v("Halo")])])}],i=(t("f91a"),t("3556")),r=t("591a"),o={data:function(){return{username:null,password:null}},methods:Object(i["a"])({},Object(r["b"])(["login","loadUser"]),{handleLogin:function(){var a=this;this.username?this.password?this.login({username:this.username,password:this.password}).then(function(e){a.loginSuccess()}):this.$message.warn("密码不能为空"):this.$message.warn("用户名不能为空")},loginSuccess:function(){this.loadUser(),this.$route.query.redirect?this.$router.replace(this.$route.query.redirect):this.$router.replace({name:"Dashboard"})}})},l=o,c=(t("9231"),t("17cc")),u=Object(c["a"])(l,s,n,!1,null,null,null);e["default"]=u.exports},ea0a:function(a,e,t){}}]);
|
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-9449c032"],{9231:function(a,e,t){"use strict";var s=t("ea0a"),n=t.n(s);n.a},ac2a5:function(a,e,t){"use strict";t.r(e);var s=function(){var a=this,e=a.$createElement,t=a._self._c||e;return t("div",{staticClass:"container"},[a._m(0),t("div",{staticClass:"loginBody animated"},[t("a-form",{attrs:{layout:"vertical"},nativeOn:{keyup:function(e){return!e.type.indexOf("key")&&a._k(e.keyCode,"enter",13,e.key,"Enter")?null:a.handleLogin(e)}}},[t("a-form-item",{staticClass:"animated fadeInUp",style:{"animation-delay":"0.1s"}},[t("a-input",{attrs:{placeholder:"用户名/邮箱"},model:{value:a.username,callback:function(e){a.username=e},expression:"username"}},[t("a-icon",{staticStyle:{color:"rgba(0,0,0,.25)"},attrs:{slot:"prefix",type:"user"},slot:"prefix"})],1)],1),t("a-form-item",{staticClass:"animated fadeInUp",style:{"animation-delay":"0.2s"}},[t("a-input",{attrs:{type:"password",placeholder:"密码"},model:{value:a.password,callback:function(e){a.password=e},expression:"password"}},[t("a-icon",{staticStyle:{color:"rgba(0,0,0,.25)"},attrs:{slot:"prefix",type:"lock"},slot:"prefix"})],1)],1),t("a-row",[t("a-button",{staticClass:"animated fadeInUp",style:{"animation-delay":"0.3s"},attrs:{type:"primary",block:!0},on:{click:a.handleLogin}},[a._v("登录")])],1)],1)],1)])},n=[function(){var a=this,e=a.$createElement,t=a._self._c||e;return t("div",{staticClass:"loginLogo animated fadeInUp"},[t("span",[a._v("Halo")])])}],i=(t("f91a"),t("3556")),r=t("591a"),o={data:function(){return{username:null,password:null}},methods:Object(i["a"])({},Object(r["b"])(["login","loadUser"]),{handleLogin:function(){var a=this;this.username?this.password?this.login({username:this.username,password:this.password}).then(function(e){a.loginSuccess()}):this.$message.warn("密码不能为空!"):this.$message.warn("用户名不能为空!")},loginSuccess:function(){this.loadUser(),this.$route.query.redirect?this.$router.replace(this.$route.query.redirect):this.$router.replace({name:"Dashboard"})}})},l=o,c=(t("9231"),t("17cc")),u=Object(c["a"])(l,s,n,!1,null,null,null);e["default"]=u.exports},ea0a:function(a,e,t){}}]);
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -1 +1 @@
|
||||||
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["fail"],{5517:function(t,e,s){"use strict";var c=s("998f"),n=s.n(c);n.a},"998f":function(t,e,s){},cc89:function(t,e,s){"use strict";s.r(e);var c=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("exception-page",{attrs:{type:"404"}})},n=[],a=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("div",{staticClass:"exception"},[s("div",{staticClass:"img"},[s("img",{attrs:{src:t.config[t.type].img}})]),s("div",{staticClass:"content"},[s("h1",[t._v(t._s(t.config[t.type].title))]),s("div",{staticClass:"desc"},[t._v(t._s(t.config[t.type].desc))]),s("div",{staticClass:"action"},[s("a-button",{attrs:{type:"primary"},on:{click:t.handleToHome}},[t._v("返回首页")])],1)])])},i=[],o={404:{img:"https://gw.alipayobjects.com/zos/rmsportal/KpnpchXsobRgLElEozzI.svg",title:"404",desc:"抱歉,你访问的页面不存在"},500:{img:"https://gw.alipayobjects.com/zos/rmsportal/RVRUAYdCGeYNBWoKiIwB.svg",title:"500",desc:"抱歉,服务器出错了"}},p=o,r={name:"Exception",props:{type:{type:String,default:"404"}},data:function(){return{config:p}},methods:{handleToHome:function(){this.$router.push({name:"Dashboard"})}}},l=r,u=(s("5517"),s("17cc")),d=Object(u["a"])(l,a,i,!1,null,"729a8fea",null),f=d.exports,m={components:{ExceptionPage:f}},g=m,v=Object(u["a"])(g,c,n,!1,null,"388fe08d",null);e["default"]=v.exports}}]);
|
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["fail"],{"01a4":function(t,e,s){},2254:function(t,e,s){"use strict";var a=s("01a4"),c=s.n(a);c.a},cc89:function(t,e,s){"use strict";s.r(e);var a=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("exception-page",{attrs:{type:"404"}})},c=[],n=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("div",{staticClass:"exception"},[s("div",{staticClass:"img"},[s("img",{attrs:{src:t.config[t.type].img}})]),s("div",{staticClass:"content"},[s("h1",[t._v(t._s(t.config[t.type].title))]),s("div",{staticClass:"desc"},[t._v(t._s(t.config[t.type].desc))]),s("div",{staticClass:"action"},[s("a-button",{attrs:{type:"primary"},on:{click:t.handleToHome}},[t._v("返回首页")])],1)])])},i=[],o={404:{img:"https://gw.alipayobjects.com/zos/rmsportal/KpnpchXsobRgLElEozzI.svg",title:"404",desc:"抱歉,你访问的页面不存在"},500:{img:"https://gw.alipayobjects.com/zos/rmsportal/RVRUAYdCGeYNBWoKiIwB.svg",title:"500",desc:"抱歉,服务器出错了"}},p=o,r={name:"Exception",props:{type:{type:String,default:"404"}},data:function(){return{config:p}},methods:{handleToHome:function(){this.$router.push({name:"Dashboard"})}}},l=r,u=(s("2254"),s("17cc")),d=Object(u["a"])(l,n,i,!1,null,"230942b4",null),m=d.exports,g={components:{ExceptionPage:m}},f=g,v=Object(u["a"])(f,a,c,!1,null,"e319b3a6",null);e["default"]=v.exports}}]);
|
|
@ -57,7 +57,7 @@ logging:
|
||||||
org.hibernate: INFO
|
org.hibernate: INFO
|
||||||
org.hibernate.type.descriptor.sql.BasicBinder: INFO
|
org.hibernate.type.descriptor.sql.BasicBinder: INFO
|
||||||
org.hibernate.type.descriptor.sql.BasicExtractor: INFO
|
org.hibernate.type.descriptor.sql.BasicExtractor: INFO
|
||||||
file: ./logs/log.log
|
path: ${user.home}/halo-dev/logs
|
||||||
|
|
||||||
halo:
|
halo:
|
||||||
doc-disabled: false
|
doc-disabled: false
|
||||||
|
|
|
@ -54,7 +54,7 @@ logging:
|
||||||
level:
|
level:
|
||||||
run.halo.app: DEBUG
|
run.halo.app: DEBUG
|
||||||
org.hibernate: ERROR
|
org.hibernate: ERROR
|
||||||
file: ./logs/log.log
|
path: ${user.home}/halo-test/logs
|
||||||
|
|
||||||
halo:
|
halo:
|
||||||
doc-disabled: false
|
doc-disabled: false
|
||||||
|
|
|
@ -56,4 +56,4 @@ spring:
|
||||||
logging:
|
logging:
|
||||||
level:
|
level:
|
||||||
run.halo.app: INFO
|
run.halo.app: INFO
|
||||||
file: ./logs/log.log
|
path: ${user.home}/.halo/logs
|
|
@ -0,0 +1,53 @@
|
||||||
|
package run.halo.app.model.params;
|
||||||
|
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.junit.Test;
|
||||||
|
import run.halo.app.model.support.AllCheck;
|
||||||
|
import run.halo.app.model.support.CreateCheck;
|
||||||
|
|
||||||
|
import javax.validation.ConstraintViolation;
|
||||||
|
import javax.validation.Validation;
|
||||||
|
import javax.validation.Validator;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
import static org.hamcrest.Matchers.equalTo;
|
||||||
|
import static org.junit.Assert.assertThat;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author johnniang
|
||||||
|
* @date 19-6-1
|
||||||
|
*/
|
||||||
|
@Slf4j
|
||||||
|
public class InstallParamTest {
|
||||||
|
|
||||||
|
private final Validator validator = Validation.buildDefaultValidatorFactory().getValidator();
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void createCheckTest() {
|
||||||
|
InstallParam installParam = new InstallParam();
|
||||||
|
|
||||||
|
Set<ConstraintViolation<InstallParam>> constraintViolations = validator.validate(installParam, CreateCheck.class);
|
||||||
|
assertThat(constraintViolations.size(), equalTo(4));
|
||||||
|
printMessage(constraintViolations);
|
||||||
|
|
||||||
|
installParam.setEmail("test");
|
||||||
|
constraintViolations = validator.validate(installParam, CreateCheck.class);
|
||||||
|
assertThat(constraintViolations.size(), equalTo(4));
|
||||||
|
printMessage(constraintViolations);
|
||||||
|
|
||||||
|
installParam.setEmail("test@test.com");
|
||||||
|
constraintViolations = validator.validate(installParam, CreateCheck.class);
|
||||||
|
assertThat(constraintViolations.size(), equalTo(3));
|
||||||
|
printMessage(constraintViolations);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void printMessage(Set<ConstraintViolation<InstallParam>> constraintViolations) {
|
||||||
|
if (constraintViolations == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
log.debug("");
|
||||||
|
|
||||||
|
constraintViolations.forEach(constraintViolation -> log.debug(constraintViolation.getMessage()));
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue