mirror of https://github.com/halo-dev/halo
👽 1. 发表文章页可直接弹出附件窗口,2. 修复了我疑惑了很久的事:为啥我天天收到测试邮件,原来是我单元测试的邮箱配置没有删。
parent
eb3de2f27e
commit
704ca6cf54
|
@ -8,6 +8,7 @@ import cc.ryanc.halo.service.AttachmentService;
|
||||||
import cc.ryanc.halo.service.LogsService;
|
import cc.ryanc.halo.service.LogsService;
|
||||||
import cc.ryanc.halo.utils.HaloUtils;
|
import cc.ryanc.halo.utils.HaloUtils;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.data.domain.Page;
|
import org.springframework.data.domain.Page;
|
||||||
import org.springframework.data.domain.PageRequest;
|
import org.springframework.data.domain.PageRequest;
|
||||||
|
@ -81,12 +82,16 @@ public class AttachmentController {
|
||||||
@GetMapping(value = "/select")
|
@GetMapping(value = "/select")
|
||||||
public String selectAttachment(Model model,
|
public String selectAttachment(Model model,
|
||||||
@RequestParam(value = "page", defaultValue = "0") Integer page,
|
@RequestParam(value = "page", defaultValue = "0") Integer page,
|
||||||
@RequestParam(value = "id") String id) {
|
@RequestParam(value = "id",defaultValue = "none") String id,
|
||||||
|
@RequestParam(value = "type",defaultValue = "normal") String type) {
|
||||||
Sort sort = new Sort(Sort.Direction.DESC, "attachId");
|
Sort sort = new Sort(Sort.Direction.DESC, "attachId");
|
||||||
Pageable pageable = PageRequest.of(page, 18, sort);
|
Pageable pageable = PageRequest.of(page, 18, sort);
|
||||||
Page<Attachment> attachments = attachmentService.findAllAttachments(pageable);
|
Page<Attachment> attachments = attachmentService.findAllAttachments(pageable);
|
||||||
model.addAttribute("attachments", attachments);
|
model.addAttribute("attachments", attachments);
|
||||||
model.addAttribute("id", id);
|
model.addAttribute("id", id);
|
||||||
|
if(StringUtils.equals(type,"post")){
|
||||||
|
return "admin/widget/_attachment-select-post";
|
||||||
|
}
|
||||||
return "admin/widget/_attachment-select";
|
return "admin/widget/_attachment-select";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -177,7 +177,7 @@
|
||||||
<table class="table table-bordered table-hover text-center">
|
<table class="table table-bordered table-hover text-center">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>标题</th>
|
<th width="50%">标题</th>
|
||||||
<th>状态</th>
|
<th>状态</th>
|
||||||
<th>日期</th>
|
<th>日期</th>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
|
@ -100,7 +100,7 @@
|
||||||
</#list>
|
</#list>
|
||||||
<#else>
|
<#else>
|
||||||
<tr>
|
<tr>
|
||||||
<td colspan="5" style="text-align: center;">暂无页面</td>
|
<td colspan="6" style="text-align: center;">暂无页面</td>
|
||||||
</tr>
|
</tr>
|
||||||
</#if>
|
</#if>
|
||||||
</tbody>
|
</tbody>
|
||||||
|
|
|
@ -12,11 +12,19 @@
|
||||||
#post_title{
|
#post_title{
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
}
|
}
|
||||||
|
#btnOpenAttach{margin-left:4px;padding:3px 6px;position:relative;top:-4px;border:1px solid #ccc;border-radius:2px;background:#fff;text-shadow:none;font-weight:600;font-size:12px;line-height:normal;color:#3c8dbc;cursor:pointer;transition:all .2s ease-in-out}
|
||||||
|
#btnOpenAttach:hover{background:#3c8dbc;color:#fff}
|
||||||
|
.form-horizontal .control-label{
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
<section class="content-header">
|
<section class="content-header">
|
||||||
<h1>
|
<h1 style="display: inline-block;">
|
||||||
新建页面
|
新建页面
|
||||||
</h1>
|
</h1>
|
||||||
|
<a id="btnOpenAttach" href="#" onclick="openAttachCopy()">
|
||||||
|
附件库
|
||||||
|
</a>
|
||||||
<ol class="breadcrumb">
|
<ol class="breadcrumb">
|
||||||
<li>
|
<li>
|
||||||
<a data-pjax="true" href="#"><i class="fa fa-dashboard"></i> 首页</a>
|
<a data-pjax="true" href="#"><i class="fa fa-dashboard"></i> 首页</a>
|
||||||
|
@ -119,6 +127,18 @@
|
||||||
scrollbar: false
|
scrollbar: false
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
function openAttachCopy() {
|
||||||
|
layer.open({
|
||||||
|
type: 2,
|
||||||
|
title: '所有附件',
|
||||||
|
shadeClose: true,
|
||||||
|
shade: 0.5,
|
||||||
|
maxmin: true,
|
||||||
|
area: ['90%', '90%'],
|
||||||
|
content: '/admin/attachments/select?type=post',
|
||||||
|
scrollbar: false
|
||||||
|
});
|
||||||
|
}
|
||||||
var editor;
|
var editor;
|
||||||
function loadEditor() {
|
function loadEditor() {
|
||||||
editor = editormd("markdown-editor", {
|
editor = editormd("markdown-editor", {
|
||||||
|
|
|
@ -61,7 +61,11 @@
|
||||||
<#if posts.content?size gt 0>
|
<#if posts.content?size gt 0>
|
||||||
<#list posts.content as post>
|
<#list posts.content as post>
|
||||||
<tr>
|
<tr>
|
||||||
<td>${post.postTitle}</td>
|
<#if post.postTitle?length gt 20>
|
||||||
|
<td>${post.postTitle?substring(0,20)}...</td>
|
||||||
|
<#else >
|
||||||
|
<td>${post.postTitle}</td>
|
||||||
|
</#if>
|
||||||
<td>
|
<td>
|
||||||
<#if post.categories?size gt 0>
|
<#if post.categories?size gt 0>
|
||||||
<#list post.categories as cate>
|
<#list post.categories as cate>
|
||||||
|
@ -109,7 +113,7 @@
|
||||||
</#list>
|
</#list>
|
||||||
<#else>
|
<#else>
|
||||||
<tr>
|
<tr>
|
||||||
<th colspan="6" style="text-align: center">暂无文章</th>
|
<th colspan="7" style="text-align: center">暂无文章</th>
|
||||||
</tr>
|
</tr>
|
||||||
</#if>
|
</#if>
|
||||||
</tbody>
|
</tbody>
|
||||||
|
|
|
@ -13,11 +13,17 @@
|
||||||
#post_title{
|
#post_title{
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
}
|
}
|
||||||
|
#btnOpenAttach{margin-left:4px;padding:3px 6px;position:relative;top:-4px;border:1px solid #ccc;border-radius:2px;background:#fff;text-shadow:none;font-weight:600;font-size:12px;line-height:normal;color:#3c8dbc;cursor:pointer;transition:all .2s ease-in-out}
|
||||||
|
#btnOpenAttach:hover{background:#3c8dbc;color:#fff}
|
||||||
|
.form-horizontal .control-label{
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
<section class="content-header">
|
<section class="content-header">
|
||||||
<h1>
|
<h1 style="display: inline-block;">新建文章</h1>
|
||||||
新建文章
|
<a id="btnOpenAttach" href="#" onclick="openAttachCopy()">
|
||||||
</h1>
|
附件库
|
||||||
|
</a>
|
||||||
<ol class="breadcrumb">
|
<ol class="breadcrumb">
|
||||||
<li>
|
<li>
|
||||||
<a data-pjax="true" href="#"><i class="fa fa-dashboard"></i> 首页</a>
|
<a data-pjax="true" href="#"><i class="fa fa-dashboard"></i> 首页</a>
|
||||||
|
@ -194,6 +200,19 @@
|
||||||
scrollbar: false
|
scrollbar: false
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function openAttachCopy() {
|
||||||
|
layer.open({
|
||||||
|
type: 2,
|
||||||
|
title: '所有附件',
|
||||||
|
shadeClose: true,
|
||||||
|
shade: 0.5,
|
||||||
|
maxmin: true,
|
||||||
|
area: ['90%', '90%'],
|
||||||
|
content: '/admin/attachments/select?type=post',
|
||||||
|
scrollbar: false
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
var editor;
|
var editor;
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -0,0 +1,108 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
|
<meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport">
|
||||||
|
<link rel="stylesheet" href="/static/plugins/bootstrap/css/bootstrap.min.css">
|
||||||
|
<link rel="stylesheet" href="/static/plugins/toast/css/jquery.toast.min.css">
|
||||||
|
<link rel="stylesheet" href="/static/plugins/fileinput/fileinput.min.css">
|
||||||
|
<link rel="stylesheet" href="/static/css/AdminLTE.min.css">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="container-fluid">
|
||||||
|
<section class="content">
|
||||||
|
<div class="nav-tabs-custom">
|
||||||
|
<ul class="nav nav-tabs">
|
||||||
|
<li class="active">
|
||||||
|
<a href="#allAttach" data-toggle="tab">所有附件</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="#uploadAttach" data-toggle="tab">选择上传</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<div class="tab-content">
|
||||||
|
<div class="tab-pane active" id="allAttach">
|
||||||
|
<div class="row">
|
||||||
|
<#list attachments.content as attachment>
|
||||||
|
<div class="col-lg-2 col-md-2 col-sm-6 col-xs-6 div-thumbnail">
|
||||||
|
<a href="#" class="thumbnail" data-clipboard-text="${attachment.attachPath}">
|
||||||
|
<img src="${attachment.attachSmallPath}" class="img-responsive">
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</#list>
|
||||||
|
<div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">
|
||||||
|
<div class="no-margin pull-left">
|
||||||
|
第${attachments.number+1}/${attachments.totalPages}页
|
||||||
|
</div>
|
||||||
|
<ul class="pagination no-margin pull-right">
|
||||||
|
<li><a class="btn btn-sm <#if !attachments.hasPrevious()>disabled</#if>" href="/admin/attachments/select" >首页</a> </li>
|
||||||
|
<li><a class="btn btn-sm <#if !attachments.hasPrevious()>disabled</#if>" href="/admin/attachments/select?page=${attachments.number-1}" >上页</a></li>
|
||||||
|
<li><a class="btn btn-sm <#if !attachments.hasNext()>disabled</#if>" href="/admin/attachments/select?page=${attachments.number+1}">下页</a></li>
|
||||||
|
<li><a class="btn btn-sm <#if !attachments.hasNext()>disabled</#if>" href="/admin/attachments/select?page=${attachments.totalPages-1}">尾页</a> </li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="tab-pane" id="uploadAttach">
|
||||||
|
<div class="row" id="uploadForm">
|
||||||
|
<div class="col-md-12">
|
||||||
|
<div class="form-group">
|
||||||
|
<div class="file-loading">
|
||||||
|
<input id="uploadImg" class="file-loading" type="file" multiple name="file">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
<script src="/static/plugins/jquery/jquery.min.js"></script>
|
||||||
|
<script src="/static/plugins/bootstrap/js/bootstrap.min.js"></script>
|
||||||
|
<script src="/static/plugins/fileinput/fileinput.min.js"></script>
|
||||||
|
<script src="/static/plugins/fileinput/zh.min.js"></script>
|
||||||
|
<script src="/static/plugins/clipboard/clipboard.min.js"></script>
|
||||||
|
<script src="/static/plugins/toast/js/jquery.toast.min.js"></script>
|
||||||
|
<script src="/static/js/app.js"></script>
|
||||||
|
<script>
|
||||||
|
$('#uploadImg').fileinput({
|
||||||
|
language: 'zh',
|
||||||
|
uploadUrl: '/admin/attachments/upload',
|
||||||
|
uploadAsync: true,
|
||||||
|
allowedFileExtensions: ['jpg','gif','png','jpeg','svg'],
|
||||||
|
maxFileCount: 10,
|
||||||
|
enctype : 'multipart/form-data',
|
||||||
|
showClose: false
|
||||||
|
}).on("fileuploaded",function (event,data,previewId,index) {
|
||||||
|
var data = data.jqXHR.responseJSON;
|
||||||
|
if(data.success=="1"){
|
||||||
|
$("#uploadForm").hide(400);
|
||||||
|
$.toast({
|
||||||
|
text: "上传成功!",
|
||||||
|
heading: '提示',
|
||||||
|
icon: 'success',
|
||||||
|
showHideTransition: 'fade',
|
||||||
|
allowToastClose: true,
|
||||||
|
hideAfter: 1000,
|
||||||
|
stack: 1,
|
||||||
|
position: 'top-center',
|
||||||
|
textAlign: 'left',
|
||||||
|
loader: true,
|
||||||
|
loaderBg: '#ffffff',
|
||||||
|
afterHidden: function () {
|
||||||
|
window.location.reload();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
$(document).ready(function(){
|
||||||
|
var clipboard = new Clipboard('.thumbnail');
|
||||||
|
});
|
||||||
|
$('.thumbnail').click(function () {
|
||||||
|
showMsg("复制成功","success",1000)
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
</html>
|
|
@ -22,37 +22,37 @@ import static org.junit.Assert.*;
|
||||||
*/
|
*/
|
||||||
public class MailServiceImplTest {
|
public class MailServiceImplTest {
|
||||||
|
|
||||||
@Before
|
// @Before
|
||||||
public void before() throws GeneralSecurityException {
|
// public void before() throws GeneralSecurityException {
|
||||||
// 配置,一次即可
|
// // 配置,一次即可
|
||||||
OhMyEmail.config(OhMyEmail.SMTP_163(false), "ryan0up@163.com", "wangdashen666");
|
// OhMyEmail.config(OhMyEmail.SMTP_163(false), "", "");
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
@Test
|
// @Test
|
||||||
public void testSendText() throws MessagingException {
|
// public void testSendText() throws MessagingException {
|
||||||
OhMyEmail.subject("这是一封测试TEXT邮件")
|
// OhMyEmail.subject("这是一封测试TEXT邮件")
|
||||||
.from("RYAN0UP")
|
// .from("RYAN0UP")
|
||||||
.to("709831589@qq.com")
|
// .to("709831589@qq.com")
|
||||||
.text("信件内容")
|
// .text("信件内容")
|
||||||
.send();
|
// .send();
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
@Test
|
// @Test
|
||||||
public void testSendHtml() throws MessagingException {
|
// public void testSendHtml() throws MessagingException {
|
||||||
OhMyEmail.subject("这是一封测试HTML邮件")
|
// OhMyEmail.subject("")
|
||||||
.from("王爵的QQ邮箱")
|
// .from("")
|
||||||
.to("921293209@qq.com")
|
// .to("")
|
||||||
.html("<h1 font=red>信件内容</h1>")
|
// .html("")
|
||||||
.send();
|
// .send();
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
@Test
|
// @Test
|
||||||
public void testSendAttach() throws MessagingException {
|
// public void testSendAttach() throws MessagingException {
|
||||||
OhMyEmail.subject("这是一封测试附件邮件")
|
// OhMyEmail.subject("")
|
||||||
.from("王爵的QQ邮箱")
|
// .from("")
|
||||||
.to("921293209@qq.com")
|
// .to("")
|
||||||
.html("<h1 font=red>信件内容</h1>")
|
// .html("")
|
||||||
.attach(new File("/Users/biezhi/Downloads/hello.jpeg"), "测试图片.jpeg")
|
// .attach(new File(""), "")
|
||||||
.send();
|
// .send();
|
||||||
}
|
// }
|
||||||
}
|
}
|
Loading…
Reference in New Issue