新建主题完善

This commit is contained in:
2020-07-17 17:46:52 +08:00
parent 06c48f8606
commit 1c1cd6edb3
11 changed files with 835 additions and 889 deletions
@@ -69,7 +69,7 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter{
.loginProcessingUrl("/login") //登录POST请求路径
.usernameParameter("username") //登录用户名参数
.passwordParameter("password") //登录密码参数
.defaultSuccessUrl("/") //默认登录成功页面
.defaultSuccessUrl("/main") //默认登录成功页面
.and()
.exceptionHandling()
.accessDeniedHandler(customAccessDeniedHandler) //无权限处理器
@@ -22,7 +22,6 @@ public class TestController {
@RequestMapping("/world")
public String world(Map<String, Object> model) {
model.put("data","2019");
// request.setAttribute("name", "xxxxxxxxx");
@@ -48,11 +48,7 @@ public class UserSystemController extends BaseController {
List<Users> useral2 = usersService.getAllList();
logger.info(">>> 第二遍的全部用户:"+useral2);
String username ="";
//分页获取主题帖子
// List<Discussions> allDiscussions = discussionsService.getAllList();
Page<Discussions> allDiscussionsPage = discussionsService.queryAllDiscussionsList(0,20);
List<Discussions> allDiscussions =allDiscussionsPage.getContent();
@@ -80,6 +76,38 @@ public class UserSystemController extends BaseController {
}
//首页main
@RequestMapping("/main")
public String homePage(HttpServletRequest request, ModelMap map) {
logger.info(">>> index");
//分页获取主题帖子
Page<Discussions> allDiscussionsPage = discussionsService.queryAllDiscussionsList(0,20);
List<Discussions> allDiscussions =allDiscussionsPage.getContent();
logger.info("全部主题==>{}",allDiscussions);
//获取主题帖子的分页数据
List<String> pageNumList = getPageNumList(allDiscussionsPage.getTotalPages());
//获取所有标签(以后尝试去缓存中取)
List<Tags> allTags = tagsService.getAllList();
logger.info("全部标签==>{}",allTags);
map.put("data", "Jiscuss 用户");
map.put("allDiscussions", allDiscussions);
map.put("pageDiscussions", pageNumList);
map.put("allTags", allTags);
UserInfo user = getUserInfo(request);
if(user != null){
map.put("username", user.getUsername());
map.put("data", "Jiscuss 用户:" + user.getUsername());
}
return "index";
}
private List<String> getPageNumList(int size) {
List<String> pageNumList = new ArrayList<String>();
if(size>5) {
@@ -4,51 +4,3 @@ function setusername(name) {
console.log('已经登陆:'+name);
username = name; // name
}
$("#loginBtn").click(function(){
$.ajax({
type: "POST",
url: "/login",
data: $("#loginForm").serialize(),
dataType: "JSON",
success: function (data) {
console.log(data);
if(data.flag){
username = data.username;
$('#userlogin').html('');
$('#userlogin').html(data.username + '<a href="javascript:void(0);" onclick="loginOut(this)" id="loginOut">注销</a>');
// window.alert(data.username + ',登录成功!');
$('.ui.modal.login').modal('hide');
console.log($('.ui.modal.login'));
}else{
window.alert(data.msg);
return false;
}
}
});
});
function loginOut() {
console.log('loginOut');
$.ajax({
type: "POST",
url: "/loginout",
dataType: "JSON",
success: function (data) {
console.log(data);
if(data.flag){
$('#userlogin').html('');
$('#userlogin').html('<a href="/login" id="loginmodel">登录 & 注册</a>');
window.alert(username + data.msg);
username = null;
}else{
window.alert('用户退出失败!');
return false;
}
}
});
}
+19 -11
View File
@@ -1,25 +1,28 @@
$("#createNewDiccuss").click(function () {
console.log("dianji createNewDiccuss");
console.log("点击 createNewDiccuss");
console.log(username);
if(username && username!=null){
$('.ui.modal.createNewDiccuss')
.modal('show')
;
tinymce.init({
selector: '#discussionscontent',
});
}else{
window.alert('您未登录,请先登录!');
massage('您未登录,请先登录!','');
}
});
$("#newdiscussions").click(function(){
var token = $("meta[name='_csrf']").attr("content");
var header = $("meta[name='_csrf_header']").attr("content");
console.warn(header)
console.warn(token)
var title = $("#discussionstitle").val();
// $("#discussionscontent").val();
console.log(tinyMCE.editors[0].getContent());
@@ -34,6 +37,9 @@ $("#newdiscussions").click(function(){
content: content
}),
contentType: 'application/json',
beforeSend: function(request) {
request.setRequestHeader(header, token); // 添加 CSRF Token
},
dataType: "JSON",
success: function (data) {
console.log(data);
@@ -49,20 +55,19 @@ $("#newdiscussions").click(function(){
});
$("#newtags").click(function(){
$('#createNewtagsdiv').show();
$('#createNewtagsDiv').show();
$('#createNewtagsBtn').show();
return false;
});
$("#commitnewtags").click(function(){
var name = $("#tagsname").val();
var header = $("meta[name='_csrf_header']").attr("content");
var token =$("meta[name='_csrf']").attr("content");
var name = $("#tagsname").val();
console.log(name);
$.ajax({
type: "POST",
@@ -71,6 +76,9 @@ $("#commitnewtags").click(function(){
name: name,
}),
contentType: 'application/json',
beforeSend : function(xhr) {
xhr.setRequestHeader(header, token);
},
dataType: "JSON",
success: function (data) {
console.log(data);
+13 -89
View File
@@ -6,96 +6,23 @@
<!-- <script src="static/jquery/jquery-3.4.1.min.js"></script> -->
<!-- <script src="static/semanticui/semantic.min.js"></script> -->
<link crossorigin="anonymous" integrity="sha384-ATvSpJEmy1egycrmomcFxVn4Z0A6rfjwlzDQrts/1QRerQhR9EEpEYtdysLpQPuQ" href="https://lib.baomitu.com/semantic-ui/2.4.1/semantic.min.css" rel="stylesheet">
<!-- default header name is X-CSRF-TOKEN -->
<meta name="_csrf" content="${_csrf.token}"/>
<meta name="_csrf_header" content="${_csrf.headerName}"/>
<link crossorigin="anonymous" integrity="sha384-ATvSpJEmy1egycrmomcFxVn4Z0A6rfjwlzDQrts/1QRerQhR9EEpEYtdysLpQPuQ"
href="https://lib.baomitu.com/semantic-ui/2.4.1/semantic.min.css" rel="stylesheet">
<link rel="stylesheet" type="text/css" href="/static/semanticui/my.css">
<script crossorigin="anonymous" integrity="sha384-vk5WoKIaW/vJyUAd9n/wmopsmNhiy+L2Z+SBxGYnUkunIxVxAv/UtMOhba/xskxh" src="https://lib.baomitu.com/jquery/3.4.1/jquery.min.js"></script>
<script crossorigin="anonymous" integrity="sha384-6urqf2sgCGDfIXcoxTUOVIoQV+jFr/Zuc4O2wCRS6Rnd8w0OJ17C4Oo3PuXu8ZtF" src="https://lib.baomitu.com/semantic-ui/2.4.1/semantic.min.js"></script>
<script crossorigin="anonymous" integrity="sha384-vk5WoKIaW/vJyUAd9n/wmopsmNhiy+L2Z+SBxGYnUkunIxVxAv/UtMOhba/xskxh"
src="https://lib.baomitu.com/jquery/3.4.1/jquery.min.js"></script>
<script crossorigin="anonymous" integrity="sha384-6urqf2sgCGDfIXcoxTUOVIoQV+jFr/Zuc4O2wCRS6Rnd8w0OJ17C4Oo3PuXu8ZtF"
src="https://lib.baomitu.com/semantic-ui/2.4.1/semantic.min.js"></script>
</head>
<body>
<div class="ui main menu" id="menu">
<div class="ui container">
<div href="#" class="header borderless item">
<img class="logo" src="static/assets/images/logo.png">
&nbsp;Jiscuss
</div>
<a class=" item borderless">首页</a>
<a class="active borderless item">论坛</a>
<div class="ui dropdown item borderless" tabindex="0">
更多
<i class="dropdown icon"></i>
<div class="menu transition hidden" tabindex="-1">
<div class="item">行为</div>
<div class="item">另一个行为</div>
<div class="item">其他东西</div>
<div class="divider"></div>
<div class="item">分割链接</div>
<div class="divider"></div>
<div class="item">另一个分割链接</div>
</div>
</div>
<div class="right menu">
<div class="item">
<div class="ui transparent icon input">
<i class="search icon"></i>
<input type="text" placeholder="搜索">
</div>
</div>
<div class="item" id="userlogin">
<#if username??>
${username} <a href="javascript:void(0);" onclick="loginOut(this)" id="loginOut">注销</a>
<#else>
<a href="javascript:void(0);" onclick="loginmodel(this)" id="loginmodel">登录 & 注册</a>
</#if>
</div>
</div>
</div>
<div class="ui mini modal login">
<i class="close icon"></i>
<div class=" content">
<div class="ui middle aligned center aligned grid">
<div class="column">
<h2 class="ui blue image header">
<img src="static/assets/images/logo.png" class="image">
<div class="content">
登录到账号
</div>
</h2>
<form class="ui large form" id="loginForm">
<div class="ui stacked segment">
<div class="field">
<div class="ui left icon input">
<i class="user icon"></i>
<input type="text" name="username" placeholder="用户名">
</div>
</div>
<div class="field">
<div class="ui left icon input">
<i class="lock icon"></i>
<input type="password" name="password" placeholder="密码">
</div>
</div>
<div class="ui fluid large blue button" id="loginBtn">登录</div>
</div>
<div class="ui error message"></div>
</form>
<div class="ui message">
新用户? <a href="l#">注册</a>
</div>
</div>
</div>
</div>
</div>
</div>
<#include "header.ftl"/>
<div class="ui container" id="container">
<div class="ui info message">
@@ -152,7 +79,6 @@ class="widescreen large screen computer tablet only twelve wide column">
</div>
<div class="ui minimal comments">
<h3 class="ui dividing header">评论区</h3>
<div class="comment">
@@ -260,8 +186,6 @@ class="widescreen large screen computer tablet only twelve wide column">
</div>
</div>
</div>
@@ -306,7 +230,6 @@ class="widescreen large screen computer tablet only four wide column">
</div>
<div class="ui card">
<div class="content">
<img class="right floated mini ui image"
@@ -314,7 +237,8 @@ class="widescreen large screen computer tablet only four wide column">
<div class="header">Jiscuss Demo</div>
<div class="meta">简单、易用、开源</div>
<div class="description">一款基于JAVA的开源论坛 框架采用:Spring Boot + H2
+ Semantic UI</div>
+ Semantic UI
</div>
</div>
<div class="extra content">
<div class="ui two buttons">
-1
View File
@@ -1,4 +1,3 @@
<div class="ui section divider"></div>
<div class="ui vertical footer segment">
+1 -1
View File
@@ -28,7 +28,7 @@
</div>
<div class="item" id="userlogin">
<#if username??>
${username} <a href="javascript:void(0);" onclick="loginOut(this)" id="loginOut">注销</a>
${username} <a href="/logout" id="loginOut">注销</a>
<#else>
<a href="/login" id="loginmodel">登录 & 注册</a>
</#if>
+40 -18
View File
@@ -6,13 +6,24 @@
<!-- <script src="static/jquery/jquery-3.4.1.min.js"></script> -->
<!-- <script src="static/semanticui/semantic.min.js"></script> -->
<link crossorigin="anonymous" integrity="sha384-ATvSpJEmy1egycrmomcFxVn4Z0A6rfjwlzDQrts/1QRerQhR9EEpEYtdysLpQPuQ" href="https://lib.baomitu.com/semantic-ui/2.4.1/semantic.min.css" rel="stylesheet">
<!-- default header name is X-CSRF-TOKEN -->
<meta name="_csrf" content="${_csrf.token}"/>
<meta name="_csrf_header" content="${_csrf.headerName}"/>
<script crossorigin="anonymous" integrity="sha384-vk5WoKIaW/vJyUAd9n/wmopsmNhiy+L2Z+SBxGYnUkunIxVxAv/UtMOhba/xskxh"
src="https://lib.baomitu.com/jquery/3.4.1/jquery.min.js"></script>
<#--semantic-->
<link crossorigin="anonymous" integrity="sha384-ATvSpJEmy1egycrmomcFxVn4Z0A6rfjwlzDQrts/1QRerQhR9EEpEYtdysLpQPuQ"
href="https://lib.baomitu.com/semantic-ui/2.4.1/semantic.min.css" rel="stylesheet">
<link rel="stylesheet" type="text/css" href="/static/semanticui/my.css">
<script crossorigin="anonymous" integrity="sha384-6urqf2sgCGDfIXcoxTUOVIoQV+jFr/Zuc4O2wCRS6Rnd8w0OJ17C4Oo3PuXu8ZtF"
src="https://lib.baomitu.com/semantic-ui/2.4.1/semantic.min.js"></script>
<script crossorigin="anonymous" integrity="sha384-vk5WoKIaW/vJyUAd9n/wmopsmNhiy+L2Z+SBxGYnUkunIxVxAv/UtMOhba/xskxh" src="https://lib.baomitu.com/jquery/3.4.1/jquery.min.js"></script>
<script crossorigin="anonymous" integrity="sha384-6urqf2sgCGDfIXcoxTUOVIoQV+jFr/Zuc4O2wCRS6Rnd8w0OJ17C4Oo3PuXu8ZtF" src="https://lib.baomitu.com/semantic-ui/2.4.1/semantic.min.js"></script>
<script crossorigin="anonymous" integrity="sha384-CpsBIlOAWHuSRRN235sCBzEeKN6hLT6SpOGRkGadKpYj0gDP7+s3Q8pC38z8uGHH" src="https://lib.baomitu.com/tinymce/5.1.1/tinymce.min.js"></script>
<#--tinymce-->
<script crossorigin="anonymous" integrity="sha384-CpsBIlOAWHuSRRN235sCBzEeKN6hLT6SpOGRkGadKpYj0gDP7+s3Q8pC38z8uGHH"
src="https://lib.baomitu.com/tinymce/5.1.1/tinymce.min.js"></script>
<#--jquery-cookie-->
<script src="https://cdn.bootcdn.net/ajax/libs/jquery-cookie/1.4.1/jquery.cookie.js"></script>
</head>
<body>
@@ -21,7 +32,8 @@
<div class="ui container" id="container">
<div class="ui info message">
<i class="close icon"></i>
<div class="header">欢迎来到这里,${data},主题数: ${allDiscussions?size} ,主题页数:${pageDiscussions?size},标签数 ${allTags?size} </div>
<div class="header">欢迎来到这里,${data},主题数: ${allDiscussions?size} ,主题页数:${pageDiscussions?size}
,标签数 ${allTags?size} </div>
<ul class="list">
<li>JAVA + DISCUSS = JISCUSS 。</li>
<li>简单的,易用的JAVA论坛。</li>
@@ -71,9 +83,11 @@ class="widescreen large screen computer tablet only four wide column">
<button class="ui teal button" id="newtags">新增标签</button>
</div>
<div class="field" id= "createNewtagsdiv" style="display:none">
<div class="field" id="createNewtagsDiv" style="display:none">
<label>标签名</label>
<input type="text" placeholder="标签名" id="tagsname">
</div>
<div class="field" id="createNewtagsBtn" style="display:none">
<button class="ui teal button" id="commitnewtags">保存</button>
</div>
@@ -184,7 +198,6 @@ class="widescreen large screen computer tablet only four wide column">
</div>
<div class="ui card">
<div class="content">
<img class="right floated mini ui image"
@@ -192,7 +205,8 @@ class="widescreen large screen computer tablet only four wide column">
<div class="header">Jiscuss Demo</div>
<div class="meta">简单、易用、开源</div>
<div class="description">一款基于JAVA的开源论坛 框架采用:Spring Boot + H2
+ Semantic UI</div>
+ Semantic UI
</div>
</div>
<div class="extra content">
<div class="ui two buttons">
@@ -221,7 +235,8 @@ class="widescreen large screen computer tablet only twelve wide column">
<div class="ui secondary menu">
<a class="item active" data-tab="fourth"> <i class="icon mail"></i>
最新回复
<div class="floating ui red label">22</div></a> <a class="item "
<div class="floating ui red label">22</div>
</a> <a class="item "
data-tab="fifth">热门</a> <a class="item " data-tab="sixth">新帖</a>
</div>
<div class="ui active tab segment" data-tab="fourth">
@@ -250,11 +265,15 @@ class="widescreen large screen computer tablet only twelve wide column">
</a>
</div>
</div>
<div class="extra text" style="width: 300px;overflow: hidden;white-space: nowrap;text-overflow: ellipsis;">
<div class="extra text"
style="width: 300px;overflow: hidden;white-space: nowrap;text-overflow: ellipsis;">
${discussions.content}
</div>
<div class="meta">
<div class=" description "><i class="edit icon"></i> <a><b>用户1</b></a>&nbsp;&nbsp;•&nbsp;&nbsp; <i class="reply icon"></i>最后由 <a><b>${discussions.last_user_id}</b></a> 回复于10 hours ago.</div>
<div class=" description "><i class="edit icon"></i> <a><b>用户1</b></a>&nbsp;&nbsp;•&nbsp;&nbsp;
<i class="reply icon"></i>最后由 <a><b>${discussions.last_user_id}</b></a>
回复于10 hours ago.
</div>
</div>
<div class="nullright meta">
<a class="like ">
@@ -404,14 +423,11 @@ class="widescreen large screen computer tablet only twelve wide column">
</div>
<div class="ui button" data-tooltip="预留" data-position="top center">
预留
</div>
<#include "footer.ftl"/>
<script type="text/javascript">
$(document).ready(function () {
@@ -419,11 +435,17 @@ $(document).ready(function() {
setusername('${username}');
console.log('已经登陆:' + username);
</#if>
var token = $("meta[name='_csrf']").attr("content");
if(token == '' && username && username != null){
console.log('因为默认页没有_csrf_token,跳页');
location.href="/main";
}
});
function massage(msg,type){
window.alert(msg);
}
</script>
<script type="text/javascript" charset="UTF-8" src="/static/js/user/system.js"></script>
+18 -5
View File
@@ -5,22 +5,27 @@
<!-- <link rel="stylesheet" type="text/css" href="static/semanticui/semantic.css"> -->
<!-- <script src="static/jquery/jquery-3.4.1.min.js"></script> -->
<!-- <script src="static/semanticui/semantic.min.js"></script> -->
<link crossorigin="anonymous" integrity="sha384-ATvSpJEmy1egycrmomcFxVn4Z0A6rfjwlzDQrts/1QRerQhR9EEpEYtdysLpQPuQ" href="https://lib.baomitu.com/semantic-ui/2.4.1/semantic.min.css" rel="stylesheet">
<link crossorigin="anonymous" integrity="sha384-ATvSpJEmy1egycrmomcFxVn4Z0A6rfjwlzDQrts/1QRerQhR9EEpEYtdysLpQPuQ"
href="https://lib.baomitu.com/semantic-ui/2.4.1/semantic.min.css" rel="stylesheet">
<link rel="stylesheet" type="text/css" href="/static/semanticui/my.css">
<script crossorigin="anonymous" integrity="sha384-vk5WoKIaW/vJyUAd9n/wmopsmNhiy+L2Z+SBxGYnUkunIxVxAv/UtMOhba/xskxh" src="https://lib.baomitu.com/jquery/3.4.1/jquery.min.js"></script>
<script crossorigin="anonymous" integrity="sha384-6urqf2sgCGDfIXcoxTUOVIoQV+jFr/Zuc4O2wCRS6Rnd8w0OJ17C4Oo3PuXu8ZtF" src="https://lib.baomitu.com/semantic-ui/2.4.1/semantic.min.js"></script>
<script crossorigin="anonymous" integrity="sha384-CpsBIlOAWHuSRRN235sCBzEeKN6hLT6SpOGRkGadKpYj0gDP7+s3Q8pC38z8uGHH" src="https://lib.baomitu.com/tinymce/5.1.1/tinymce.min.js"></script>
<script crossorigin="anonymous" integrity="sha384-vk5WoKIaW/vJyUAd9n/wmopsmNhiy+L2Z+SBxGYnUkunIxVxAv/UtMOhba/xskxh"
src="https://lib.baomitu.com/jquery/3.4.1/jquery.min.js"></script>
<script crossorigin="anonymous" integrity="sha384-6urqf2sgCGDfIXcoxTUOVIoQV+jFr/Zuc4O2wCRS6Rnd8w0OJ17C4Oo3PuXu8ZtF"
src="https://lib.baomitu.com/semantic-ui/2.4.1/semantic.min.js"></script>
<style type="text/css">
body {
background-color: #DADADA;
}
body > .grid {
height: 100%;
}
.image {
margin-top: -100px;
}
.column {
max-width: 450px;
}
@@ -51,7 +56,7 @@
<input type="password" name="password" placeholder="密码">
</div>
</div>
<div class="field">
<div class="field" id="msgId" style="display:none">
<div class="ui pointing red basic label">
${msg}
</div>
@@ -68,8 +73,16 @@
</div>
</div>
</div>
<script type="text/javascript">
$(document).ready(function () {
<#if msg??>
$('#msgId').show();
</#if>
});
</script>
</body>
</html>
+1
View File
@@ -15,5 +15,6 @@
<p>
welcome ${msg} to freemarker!
</p>
</body>
</html>