本地代码提交

This commit is contained in:
2020-10-14 11:29:36 +08:00
parent c4da2f8ddd
commit d343255e09
101 changed files with 71028 additions and 0 deletions
@@ -0,0 +1,36 @@
<component name="InspectionProjectProfileManager">
<profile version="1.0">
<option name="myName" value="Project Default" />
<inspection_tool class="JavaDoc" enabled="true" level="WARNING" enabled_by_default="true">
<option name="TOP_LEVEL_CLASS_OPTIONS">
<value>
<option name="ACCESS_JAVADOC_REQUIRED_FOR" value="none" />
<option name="REQUIRED_TAGS" value="" />
</value>
</option>
<option name="INNER_CLASS_OPTIONS">
<value>
<option name="ACCESS_JAVADOC_REQUIRED_FOR" value="none" />
<option name="REQUIRED_TAGS" value="" />
</value>
</option>
<option name="METHOD_OPTIONS">
<value>
<option name="ACCESS_JAVADOC_REQUIRED_FOR" value="none" />
<option name="REQUIRED_TAGS" value="@return@param@throws or @exception" />
</value>
</option>
<option name="FIELD_OPTIONS">
<value>
<option name="ACCESS_JAVADOC_REQUIRED_FOR" value="none" />
<option name="REQUIRED_TAGS" value="" />
</value>
</option>
<option name="IGNORE_DEPRECATED" value="false" />
<option name="IGNORE_JAVADOC_PERIOD" value="true" />
<option name="IGNORE_DUPLICATED_THROWS" value="false" />
<option name="IGNORE_POINT_TO_ITSELF" value="false" />
<option name="myAdditionalJavadocTags" value="date" />
</inspection_tool>
</profile>
</component>
+9
View File
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="JavaScriptSettings">
<option name="languageLevel" value="ES6" />
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="1.8" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" />
</component>
</project>
+8
View File
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/templates.iml" filepath="$PROJECT_DIR$/.idea/templates.iml" />
</modules>
</component>
</project>
+9
View File
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$" />
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>
+6
View File
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$/../../../.." vcs="Git" />
</component>
</project>
+54
View File
@@ -0,0 +1,54 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ChangeListManager">
<list default="true" id="755544fc-90a1-4d60-9093-335fc4c5e923" name="Default Changelist" comment="">
<change beforePath="$PROJECT_DIR$/../../java/com/yaoyuan/jiscuss/config/WebSecurityConfig.java" beforeDir="false" afterPath="$PROJECT_DIR$/../../java/com/yaoyuan/jiscuss/config/WebSecurityConfig.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/../../java/com/yaoyuan/jiscuss/controller/UserSystemController.java" beforeDir="false" afterPath="$PROJECT_DIR$/../../java/com/yaoyuan/jiscuss/controller/UserSystemController.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/comm/footer.ftl" beforeDir="false" afterPath="$PROJECT_DIR$/comm/footer.ftl" afterDir="false" />
<change beforePath="$PROJECT_DIR$/index.ftl" beforeDir="false" afterPath="$PROJECT_DIR$/index.ftl" afterDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
<option name="LAST_RESOLUTION" value="IGNORE" />
</component>
<component name="Git.Settings">
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$/../../../.." />
</component>
<component name="ProjectId" id="1hzVfIl0oebNSYJlVoYCSm1cyrz" />
<component name="ProjectLevelVcsManager" settingsEditedManually="true" />
<component name="ProjectViewState">
<option name="hideEmptyMiddlePackages" value="true" />
<option name="showLibraryContents" value="true" />
</component>
<component name="PropertiesComponent">
<property name="RunOnceActivity.OpenProjectViewOnStart" value="true" />
<property name="RunOnceActivity.ShowReadmeOnStart" value="true" />
<property name="WebServerToolWindowFactoryState" value="false" />
<property name="aspect.path.notification.shown" value="true" />
<property name="last_opened_file_path" value="$PROJECT_DIR$/../../../../../../other_project/h2&amp;mysql/spb-jpa-mysql-master" />
</component>
<component name="SvnConfiguration">
<configuration>C:\Users\A11200321050045\AppData\Roaming\Subversion</configuration>
</component>
<component name="TaskManager">
<task active="true" id="Default" summary="Default task">
<changelist id="755544fc-90a1-4d60-9093-335fc4c5e923" name="Default Changelist" comment="" />
<created>1601014009683</created>
<option name="number" value="Default" />
<option name="presentableId" value="Default" />
<updated>1601014009683</updated>
<workItem from="1601014011056" duration="15000" />
</task>
<servers />
</component>
<component name="TypeScriptGeneratedFilesManager">
<option name="version" value="2" />
</component>
<component name="WindowStateProjectService">
<state x="740" y="274" key="FileChooserDialogImpl" timestamp="1601014023451">
<screen x="0" y="0" width="1920" height="1040" />
</state>
<state x="740" y="274" key="FileChooserDialogImpl/1920.137.1366.728/0.0.1920.1040@0.0.1920.1040" timestamp="1601014023451" />
</component>
</project>
@@ -0,0 +1,38 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>后台管理登录页</title>
</head>
<body>
<h2>后台管理登录页</h2>
<form id="loginForm" action="/login" method="post">
用户名:<input type="text" id="username" name="username"><br/><br/>
密&nbsp;&nbsp;&nbsp;码:<input type="password" id="password" name="password"><br/><br/>
<!-- <button id="loginBtn" type="submit">登录</button> -->
<button id="loginBtn" type="button">登录</button>
</form>
<script src="http://libs.baidu.com/jquery/2.1.4/jquery.min.js"></script>
<script type="text/javascript">
$("#loginBtn").click(function () {
$.ajax({
type: "POST",
url: "/login",
data: $("#loginForm").serialize(),
dataType: "JSON",
success: function (data) {
console.log(data);
//window.location.href = "/index";
}
});
});
</script>
</body>
</html>
@@ -0,0 +1,23 @@
<#--jquery-->
<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-ui-->
<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>
<#--tinymce-->
<script crossorigin="anonymous" integrity="sha384-CpsBIlOAWHuSRRN235sCBzEeKN6hLT6SpOGRkGadKpYj0gDP7+s3Q8pC38z8uGHH"
src="https://lib.baomitu.com/tinymce/5.1.1/tinymce.min.js"></script>
<#--toastr-->
<link crossorigin="anonymous" integrity="sha384-YzEqZ2pBV0i9OmlTyoz75PqwTR8If8GsXBv7HLQclEVqIC3VxIt98/U94ES6CJTR"
href="https://lib.baomitu.com/toastr.js/2.1.4/toastr.min.css" rel="stylesheet">
<script crossorigin="anonymous" integrity="sha384-VDls8ImYGI8SwVxpmjX2Bn27U2TcNodzTNROTusVEWO55+lmL+H9NczoQJk6mwZR"
src="https://lib.baomitu.com/toastr.js/2.1.4/toastr.min.js"></script>
@@ -0,0 +1,54 @@
<#--<div class="ui section divider"></div>-->
<div class="ui vertical footer segment">
<div class="ui center aligned container">
<div class="ui section divider"></div>
<div class="ui stackable divided grid">
<div class="three wide column">
<h4 class="ui header">关于遥远</h4>
<div class="ui link list">
<a href="http://yaoyuan.io" class="item">Yaoyuan.io</a>
<a href="http://cyy.im" class="item">CYY.IM</a>
</div>
</div>
<div class="three wide column">
<h4 class="ui header">底层</h4>
<div class="ui link list">
<a href="#" class="item">JAVA</a>
<a href="#" class="item">H2 Database</a>
</div>
</div>
<div class="three wide column">
<h4 class="ui header">框架</h4>
<div class="ui link list">
<a href="#" class="item">Spring Boot</a>
<a href="#" class="item">Semantic UI</a>
</div>
</div>
<div class="seven wide column">
<h4 class="ui header">这里是页脚预留信息</h4>
<p>This is about Jiscuus Page
.</p>
</div>
</div>
<div class="ui section divider"></div>
<img src="static/assets/images/logo.png" class="ui centered mini image">
@ 2019-2020 &nbsp;
<div class="ui horizontal small divided link list">
<a class="item" href="fixed.php#">站点地图</a>
<a class="item" href="fixed.php#">关于这里</a>
<a class="item" href="fixed.php#">团队介绍</a>
<a class="item" href="fixed.php#">隐私政策</a>
</div>
</div>
</div>
<script type="text/javascript">
function massage(msg,type){
// window.alert(msg);
toastr.info(msg)
}
</script>
@@ -0,0 +1,44 @@
<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" href="/">首页</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??>
<form class="ui large form" action="/logout" id="logoutForm" method="post" style="display: none;">
<input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/>
</form>
${username} &nbsp;&nbsp;<a href="javascript:document.getElementById('logoutForm').submit();">注销</a>
<#else>
<a href="/login" id="loginmodel">登录&nbsp;&nbsp;&&nbsp;&nbsp;注册</a>
</#if>
</div>
</div>
</div>
</div>
<script type="text/javascript" charset="UTF-8" src="/static/js/user/header.js"></script>
@@ -0,0 +1,76 @@
<#--
参数解释:
page:当前页码,从1开始
pagesize:分页大小
totalpages:总页数。也可以放到模板里计算。这里在MyPager类里已计算过了。
totalrecords:总记录数
url:链接地址,自动拼接page参数。为了简单,没有判断当前页面是否有get参数了,直接做了&连接,默认认为原来就有参数。当前你也可以用servlet自己获取当前url及参数,就不用传了。
以上这些参数除url外均可以从MyPager实例中获取。其实可以直接把mypager实例传进来,为了便于以后扩展,分字段传过来。
-->
<#macro fpage page pagesize totalpages totalrecords url>
<a class="icon item" id="upPage">
<i class="left chevron icon"></i>
</a>
<#-- <li class="page-item"><span class="page-link">共条${totalrecords}记录&nbsp;&nbsp;第${page}页/共${totalpages}页</span></li>-->
<a class="item" ><span >共条${totalrecords}记录&nbsp;&nbsp;第${page}页/共${totalpages}页</span></a>
<#--startpage:起始页码就是pageendpage:结束页码,showfirstpage是否显示首页按钮,showlastpage:是否显示末页按钮,showpre是否显示前...shownext是否显示后...-->
<#assign startpage = page,endpage=10,showfirstpage=false,showlastpage=false,showpre=false,shownext=false,prepage = 1,nextpage=11>
<#--是否显示首页按钮及计算初始页码-->
<#if page gt 1>
<#assign showfirstpage = true>
<#--startpage向前挪4页,如果不足4页,则startpage=1-->
<#assign startpage=(page-4)>
<#if startpage lte 0>
<#assign startpage = 1>
</#if>
</#if>
<#--是否显示前n页的...,以及...的链接-->
<#if page gt 5>
<#assign showpre = true,prepage=page-5>
</#if>
<#--计算endpage-->
<#if page+pagesize-1 lt totalpages>
<#assign endpage = page+pagesize-1>
<#--显示后面的...按钮-->
<#assign shownext = true>
<#--后面...的页面码-->
<#assign nextpage=page+pagesize>
<#--显示末页-->
<#assign showlastpage = true>
<#else>
<#assign endpage = totalpages>
</#if>
<#if endpage lte 0>
<#assign endpage = 1>
</#if>
<#--开始展示-->
<#--首页-->
<#if showfirstpage>
<#-- <li class="page-item"><span><a class="page-link" href="${url}&pageNum=1">首页</a></span></li>-->
<a class="item" href="${url}&pageNum=1">首页</a>
</#if>
<#--前面的...-->
<#if showpre>
<#-- <li class="page-item"><span><a class="page-link" href="${url}&page=${prepage}">...</a></span></li>-->
<a class="item" href="${url}&pageNum=${prepage}">...</a>
</#if>
<#--显示的页码按钮-->
<#list startpage..endpage as p>
<#-- <li class="page-item <#if p == page>active</#if>"><span><a class="page-link" href="${url}&pageNum=${p}">${p}</a></span></li>-->
<a class="item" style=" <#if p == page>background-color: #7d827d;</#if>" href="${url}&pageNum=${p}">${p}</a>
</#list>
<#--后面的...-->
<#if shownext>
<#-- <li class="page-item"><span><a class="page-link" href="${url}&pageNum=${nextpage}">...</a></span></li>-->
<a class="item" href="${url}&pageNum=${nextpage}">...</a>
</#if>
<#--显示尾页-->
<#if showlastpage>
<#-- <li class="page-item"><span><a class="page-link" href="${url}&pageNum=${totalpages}">末页</a></span></li>-->
<a class="item" href="${url}&pageNum=${totalpages}">末页</a>
</#if>
</#macro>
@@ -0,0 +1,354 @@
<!DOCTYPE html>
<html>
<title>主题详情页</title>
<head>
<!-- <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> -->
<!-- default header name is X-CSRF-TOKEN -->
<meta name="_csrf" content="${_csrf.token}"/>
<meta name="_csrf_header" content="${_csrf.headerName}"/>
<#include "comm/commjs.ftl"/>
</head>
<body>
<#include "comm/header.ftl"/>
<div class="ui container" id="container">
<div class="ui info message">
<i class="close icon"></i>
<div class="header">欢迎来到这里</div>
<ul class="list">
<li>JAVA + DISCUSS = JISCUSS 。${posts?size}</li>
<li>简单的,易用的JAVA论坛。</li>
<li>请享受发帖回帖带来的乐趣吧!</li>
</ul>
</div>
<h3 class="ui center aligned header"></h3>
<div class="ui four column grid">
<div
class="widescreen large screen computer tablet only twelve wide column">
<div id="context2">
<h2 class="ui header">
<i class="settings icon"></i>
<div class="content">
${discussions.title}
<div class="sub header">某某标签分类</div>
<#list tags as tag>
<div class="sub header">${tag.name}</div>
</#list>
</div>
</h2>
<div class="ui main text container">
${discussions.content}
</div>
<div class="ui labeled button" tabindex="0">
<div class="ui red button">
<i class="heart icon"></i> 赞这个主题
</div>
<a class="ui basic red left pointing label">
1,048
</a>
</div>
<div class="ui feed">
<div class="event">
<div class="label">
<img src="/static/assets/images/logo.png">
</div>
<div class="content">
<div class="summary">
用户 <a>${discussions.realname}</a> 发布于
<div class="date">
${discussions.startTime}
</div>
</div>
<div class="summary">
用户 <a>${discussions.realnameLast}</a> 最后回复于
<div class="date">
${discussions.lastTime}
</div>
</div>
<div class="meta">
<a class="like">
<i class="like icon"></i> 0 喜欢作者
</a>
</div>
</div>
</div>
</div>
<div class="ui threaded comments">
<h3 class="ui dividing header">评论区</h3>
<input type="hidden" name="postId" id="postId" value=""/>
<#--<#list posts as post>
<div class="comment">
<a class="avatar">
<img src="/static/assets/images/logo.png">
</a>
<div class="content">
<a class="author">${post.username}</a>
<div class="metadata">
<span class="date">${post.createTime}</span>
</div>
<div class="text">
${post.content}
</div>
<div class="actions">
<a class="reply" onclick="replyThis('${post.username}', '${post.id}')">回复</a>
</div>
</div>
<#list post.nextNodes as child>
<div class="comments">
<div class="comment">
<a class="avatar">
<img src="/static/assets/images/logo.png">
</a>
<div class="content">
<a class="author">${child.username}</a>
<div class="metadata">
<span class="date">${child.createTime}</span>
</div>
<div class="text">
${child.content}
</div>
<div class="actions">
<a class="reply" onclick="replyThis('${child.username}', '${child.id}')">回复</a>
</div>
</div>
</div>
</div>
</#list>
</div>
</#list>-->
<!-- 定义遍历方法 -->
<#macro bpTree posts>
<#if posts?? && posts?size gt 0> <!-- 判断是否为空,并且长度是否大于0 -->
<!-- 不为空 开始遍历 -->
<#list posts as post>
<#if post.nextNodes?? && post.nextNodes?size gt 0>
<!-- 如果是拥有子节点 -->
<div class="comment">
<a class="avatar">
<img src="/static/assets/images/logo.png">
</a>
<div class="content">
<a class="author">${post.username}</a>
<div class="metadata">
<span class="date">${post.createTime}</span>
</div>
<div class="text">
${post.content}
</div>
<div class="actions">
<a class="reply" onclick="replyThis('${post.username}', '${post.id}')">回复</a>
</div>
</div>
<div class="comments">
<@bpTree posts=post.nextNodes />
</div>
</div>
<#else>
<!-- 没有子节点! -->
<div class="comment">
<a class="avatar">
<img src="/static/assets/images/logo.png">
</a>
<div class="content">
<a class="author">${post.username}</a>
<div class="metadata">
<span class="date">${post.createTime}</span>
</div>
<div class="text">
${post.content}
</div>
<div class="actions">
<a class="reply" onclick="replyThis('${post.username}', '${post.id}')">回复</a>
</div>
</div>
</div>
</#if>
</#list>
</#if>
</#macro>
<@bpTree posts=posts /> <!-- 调用方法 -->
<div class="ui">
</div>
<form class="ui reply form">
<div class="field">
<textarea id="postContent"></textarea>
</div>
<div class="ui blue labeled submit icon button" id="addPost">
<i class="icon edit"></i> 添加评论
</div>
</form>
</div>
</div>
</div>
<div class="widescreen large screen computer tablet only four wide column">
<div class="ui fluid action input">
<input type="text" placeholder="搜索...">
<div class="ui button">搜索</div>
</div>
<div class="ui section divider"></div>
<div class="ui card">
<div class="content">
<div class="header">作者</div>
</div>
<div class="content">
<h4 class="ui sub header">测试人员1</h4>
<div class="ui small feed">
<div class="event">
<div class="content">
<div class="summary">
<a>Jiscuss</a> 一直, <a>Jiscuss</a> 一感谢支持!
</div>
</div>
</div>
<div class="event">
<div class="content">
<div class="summary">
<a>2019</a> 测试内容
</div>
</div>
</div>
</div>
</div>
<div class="extra content">
<button class="ui button">预留按钮</button>
</div>
</div>
<div class="ui card">
<div class="content">
<div class="header">作者的热门主题</div>
</div>
<div class="content">
<div class="ui middle aligned divided list">
<div class="item">
<img class="ui avatar image" src="/static/assets/images/logo.png">
<div class="content">
<a class="header">他的测试主题1</a>
</div>
</div>
<div class="item">
<img class="ui avatar image" src="/static/assets/images/logo.png">
<div class="content">
<a class="header">他的测试主题2</a>
</div>
</div>
<div class="item">
<img class="ui avatar image" src="/static/assets/images/logo.png">
<div class="content">
<a class="header">他的测试主题3</a>
</div>
</div>
</div>
</div>
<div class="extra content">
<p>预留信息</p>
</div>
</div>
<div class="ui card">
<div class="content">
<img class="right floated mini ui image"
src="static/assets/images/logo.png">
<div class="header">Jiscuss Demo</div>
<div class="meta">简单、易用、开源</div>
<div class="description">一款基于JAVA的开源论坛 框架采用:Spring Boot + H2
+ Semantic UI
</div>
</div>
<div class="extra content">
<div class="ui two buttons">
<div class="ui basic red button">
<div class="ui mini statistic">
<div class="value">1</div>
<div class="label">用户数</div>
</div>
</div>
<div class="ui basic green button">
<div class="ui mini statistic">
<div class="value">10</div>
<div class="label">发帖数</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="mobile only sixteen wide column">
<div class="ui segment">Jiscuss手机可见,内容正在编写中,pc端可正常访问</div>
<div class="ui pagination menu">
<a class="icon item">
<i class="left chevron icon"></i>
</a>
<a class="item">
1
</a>
<a class="item">
2
</a>
<div class="disabled item">
...
</div>
<a class="item">
10
</a>
<a class="item">
11
</a>
<a class="icon item"> <i class="right chevron icon"></i>
</a>
</div>
</div>
</div>
</div>
<#include "comm/footer.ftl"/>
<script type="text/javascript">
$(document).ready(function () {
<#if username??>
setusername('${username}');
console.log('已经登陆:' + username);
</#if>
setDiscussionsId('${discussions.id}');
});
</script>
<script type="text/javascript" charset="UTF-8" src="/static/js/user/discussions.js"></script>
</body>
</html>
+546
View File
@@ -0,0 +1,546 @@
<!DOCTYPE html>
<html>
<title>Jiscuss Demo</title>
<head>
<!-- <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> -->
<!-- default header name is X-CSRF-TOKEN -->
<meta name="_csrf" content="${_csrf.token}"/>
<meta name="_csrf_header" content="${_csrf.headerName}"/>
<#include "comm/commjs.ftl"/>
</head>
<body>
<#include "comm/header.ftl"/>
<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>
<ul class="list">
<li>JAVA + DISCUSS = JISCUSS 。</li>
<li>简单的,易用的JAVA论坛。</li>
<li>请享受发帖回帖带来的乐趣吧!</li>
</ul>
</div>
<h3 class="ui center aligned header"></h3>
<div class="ui four column grid">
<div
class="widescreen large screen computer tablet only four wide column">
<div class="fluid ui animated fade primary button" tabindex="0" id='createNewDiccuss'>
<div class="visible content">
<i class="pen square icon"></i>创建新帖
</div>
<div class="hidden content">
您是最棒的<i class="thumbs up icon"></i>
</div>
</div>
<div class="ui modal createNewDiccuss">
<i class="close icon"></i>
<div class="header">
创建新帖
</div>
<div class=" content">
<form class="ui form">
<div class="field">
<label>标题</label>
<input type="text" placeholder="标题" id="discussionstitle">
</div>
<div class="field">
<label>选择标签</label>
<select multiple="" class="ui dropdown" id="selectTag">
<option value="">选择标签</option>
<#list allTags as tags>
<option value=${tags.id}>${tags.name}</option>
</#list>
</select>
</div>
<div class="field">
<button class="ui teal button" id="newtags">新增标签</button>
</div>
<div class="field" id="createNewtagsDiv" style="display:none">
<label>标签名</label>
<input type="text" placeholder="标签名" id="tagsname">
</div>
<div class="two fields">
<div class="field" id="tagDescriptionDiv" style="display:none">
<label>描述</label>
<input type="text" placeholder="描述" id="tagdescription">
</div>
<div class="field" id="parentTagDiv" style="display:none">
<label>父标签</label>
<select class="ui fluid dropdown" id="parentTag">
<#list allTags as tag>
<option value="{tag.id}">{tag.name}</option>
</#list>
</select>
</div>
</div>
<div class="two fields" id="colorIconDiv" style="display:none">
<div class="field">
<label>选择颜色</label>
<div class="ui fluid search selection dropdown">
<input type="hidden" id="tagColor">
<i class="dropdown icon"></i>
<div class="default text">选择颜色</div>
<div class="menu">
<div class="item" data-value="red"><div class="ui red empty circular label"></div>红色</div>
<div class="item" data-value="orange"><div class="ui orange empty circular label"></div>橙色</div>
<div class="item" data-value="yellow"><div class="ui yellow empty circular label"></div>黄色</div>
<div class="item" data-value="olive"><div class="ui olive empty circular label"></div>橄榄绿</div>
<div class="item" data-value="green"><div class="ui green empty circular label"></div>纯绿</div>
<div class="item" data-value="teal"><div class="ui teal empty circular label"></div>水鸭蓝</div>
<div class="item" data-value="blue"><div class="ui blue empty circular label"></div>纯蓝</div>
<div class="item" data-value="violet"><div class="ui violet empty circular label"></div>紫罗兰</div>
<div class="item" data-value="purple"><div class="ui purple empty circular label"></div>纯紫</div>
<div class="item" data-value="pink"><div class="ui pink empty circular label"></div>粉红</div>
<div class="item" data-value="brown"><div class="ui brown empty circular label"></div>棕色</div>
<div class="item" data-value="grey"><div class="ui grey empty circular label"></div>灰色</div>
<div class="item" data-value="black"><div class="ui black empty circular label"></div>黑色</div>
</div>
</div>
</div>
<div class="field">
<label>选择图标</label>
<div class="ui fluid search selection dropdown">
<input type="hidden" id="tagIcon">
<i class="dropdown icon"></i>
<div class="default text">选择图标</div>
<div class="menu">
<div class="item" data-value="bullhorn"><i class="bullhorn"></i>bullhorn</div>
<div class="item" data-value="coffee"><i class="coffee"></i>coffee</div>
<div class="item" data-value="edit"><i class="edit"></i>edit</div>
<div class="item" data-value="fax"><i class="fax"></i>fax</div>
<div class="item" data-value="bug"><i class="bug"></i>bug</div>
<div class="item" data-value="keyboard"><i class="keyboard"></i>keyboard</div>
<div class="item" data-value="folder open outline"><i class="folder open outline"></i>folder open outline</div>
<div class="item" data-value="comment outline"><i class="comment outline"></i>comment outline</div>
</div>
</div>
</div>
</div>
<div class="field" id="createNewtagsBtn" style="display:none">
<a class="ui teal button" id="commitnewtags">保存</a>
<a class="ui grey button" id="cancelnewtags">取消</a>
</div>
<div class="field">
<label>内容</label>
<textarea id="discussionscontent"></textarea>
</div>
<div class="ui fluid large blue button" id="newdiscussions">提交内容</div>
</form>
</div>
</div>
<div class="ui section divider"></div>
<div class="ui card red ">
<div class="content">
<div class="header">全部标签</div>
</div>
<div class="content">
<div class="ui ordered list">
<div class="item">
<i class="folder icon"></i>
<div class="content">
<div class="header">src</div>
<div class="description">Source files for project</div>
<div class="list">
<div class="item">
<i class="folder icon"></i>
<div class="content">
<div class="header">site</div>
<div class="description">Your site's theme</div>
</div>
</div>
<div class="item">
<i class="blue folder icon"></i>
<div class="content">
<div class="header">themes</div>
<div class="description">Packaged theme files</div>
<div class="list">
<div class="item">
<i class="folder icon"></i>
<div class="content">
<div class="header">default</div>
<div class="description">Default packaged theme</div>
</div>
</div>
<div class="item">
<i class="folder icon"></i>
<div class="content">
<div class="header">my_theme</div>
<div class="description">Packaged themes are also available in
this folder
</div>
</div>
</div>
</div>
</div>
</div>
<div class="item">
<i class="file icon"></i>
<div class="content">
<a class="header">theme.config</a>
<div class="description">Config file for setting packaged themes</div>
</div>
</div>
</div>
</div>
</div>
<div class="item">
<i class="red folder icon"></i>
<div class="content">
<a class="header">dist</a>
<div class="description">Compiled CSS and JS files</div>
<div class="list">
<div class="item">
<i class="folder icon"></i>
<div class="content">
<a class="header">components</a>
<div class="description">Individual component CSS and JS</div>
</div>
</div>
</div>
</div>
</div>
<div class="item">
<i class="file icon red"></i>
<div class="content">
<div class="header">semantic.json</div>
<div class="description">Contains build settings for gulp</div>
</div>
</div>
<#list allTags as tags>
<div class="item">
<i class="icon ${tags.icon} ${tags.color}"></i>
<div class="content">
<a class="header" onclick="onTags(${tags.id})">${tags.name}</a>
<div class="description">${tags.description}</div>
</div>
</div>
</#list>
</div>
</div>
</div>
<div class="ui card black ">
<div class="content">
<div class="header">预留功能</div>
</div>
<div class="content">
<h4 class="ui sub header">Jiscuss</h4>
<div class="ui small feed">
<div class="event">
<div class="content">
<div class="summary">
<a>Jiscuss</a> 一直持续更新, <a>Jiscuss</a> 一直更新完善,感谢支持!
</div>
</div>
</div>
<div class="event">
<div class="content">
<div class="summary">
<a>2019</a> 测试内容
</div>
</div>
</div>
</div>
</div>
<div class="extra content">
<button class="ui button">预留按钮</button>
</div>
</div>
<div class="ui card violet ">
<div class="content">
<img class="right floated mini ui image"
src="static/assets/images/logo.png">
<div class="header">Jiscuss Demo</div>
<div class="meta">简单、易用、开源</div>
<div class="description">一款基于JAVA的开源论坛 框架采用:Spring Boot + H2
+ Semantic UI
</div>
</div>
<div class="extra content">
<div class="ui two buttons">
<div class="ui basic red button">
<div class="ui mini statistic">
<div class="value">1</div>
<div class="label">用户数</div>
</div>
</div>
<div class="ui basic green button">
<div class="ui mini statistic">
<div class="value">10</div>
<div class="label">发帖数</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div
class="widescreen large screen computer tablet only twelve wide column">
<div id="context2">
<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 "
data-tab="fifth">热门</a> <a class="item " data-tab="sixth">新帖</a>
</div>
<div class="ui active tab segment" data-tab="fourth">
<div class="ui large feed">
<#list allDiscussions as discussions>
<div class="event">
<div class="label">
<img src="static/assets/images/logo.png">
</div>
<div class="content">
<div class="summary">
<a href="/getdiscussionsbyid?id=${discussions.id}">
${discussions.title}
</a>
<div class="date">
3 days ago
</div>
<div class="nullright">
<a class="ui teal label">
标签1
</a>
<a class="ui purple label">
标签2
</a>
</div>
</div>
<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>
<div class="nullright meta">
<a class="like ">
<i class="like icon"></i> 11 喜欢
</a>
<a class="comment ">
<i class="comment icon"></i> 22 回复
</a>
</div>
</div>
</div>
<div class="ui fitted divider"></div>
</#list>
</div>
</div>
<div class="ui tab segment" data-tab="fifth">
<div class="ui divided items">
<div class="item">
<div class="ui tiny image">
<img src="static/assets/images/logo.png">
</div>
<div class="content">
<h4 class="header">置顶测试帖222</h4>
<div class="meta">
<span class="cinema">测试广场 14</span>
</div>
<div class="description">
<p>123234324</p>
</div>
<div class="extra">
<div class="ui label">IMAX</div>
<div class="ui label">
<i class="globe icon"></i> 附加的留言
</div>
</div>
</div>
</div>
<div class="item">
<div class="ui tiny image">
<img src="static/assets/images/logo.png">
</div>
<div class="content">
<a class="header">龙猫</a>
<div class="meta">
<span class="cinema">测试帖1111</span>
</div>
<div class="description">
<p></p>
</div>
<div class="extra">
<div class="ui right floated primary button">
Jiscuss测试内容,测试内容 <i class="right chevron icon"></i>
</div>
<div class="ui label">限制的</div>
</div>
</div>
</div>
<div class="item">
<div class=" ui tiny image">
<img src="static/assets/images/logo.png">
</div>
<div class="content">
<a class="header">测试帖子</a>
<div class="meta">
<span class="cinema">xxx于什么时候最新回复</span>
</div>
<div class="meta">
<span class="cinema">IFC2222222。。。。</span>
</div>
<div class="description">
<p></p>
</div>
<div class="extra">
<div class="mini ui right floated labeled button" tabindex="0">
<div class="mini ui red button">
<i class="heart icon"></i> 喜欢
</div>
<a class="ui basic red left pointing label"> 1,048 </a>
</div>
<div class="mini ui right floated labeled button" tabindex="0">
<div class=" mini ui basic blue button">
<i class="fork icon"></i>评论
</div>
<a class="ui basic left pointing blue label"> 1,048 </a>
</div>
<div class="ui label">限制的2</div>
<div class="ui label">限制的3</div>
<div class="ui label">限制的4</div>
</div>
</div>
</div>
</div>
</div>
<div class="ui tab segment" data-tab="sixth">6</div>
</div>
<div class="ui borderless menu">
<a class="icon item" id="upPage">
<i class="left chevron icon"></i>
</a>
<#list pageDiscussions as page>
<#if page == pageNum && !(username)??>
<a class="item" style=" background-color: #7d827d;" href="/?pageNum=${page}">
${page}
</a>
</#if>
<#if page != pageNum && !(username)??>
<a class="item" href="/?pageNum=${page}">
${page}
</a>
</#if>
<#if page == pageNum && username??>
<a class="item" style=" background-color: #7d827d;" href="/main?pageNum=${page}">
${page}
</a>
</#if>
<#if page != pageNum && username??>
<a class="item" href="/main?pageNum=${page}">
${page}
</a>
</#if>
</#list>
<a class="icon item" id="nextPage"> <i class="right chevron icon"></i>
</a>
</div>
<!--pager-->
<#--<div class="ui borderless menu">
<ul class="pagination">
<#import "./comm/page.ftl" as page />
<@page.fpage page=pageNum pagesize=pageSize totalpages=pageTotalPages totalrecords=pageTotal url="/" />
</ul>
</div>-->
</div>
<div class="mobile only sixteen wide column">
<div class="ui segment">Jiscuss手机可见,内容正在编写中,pc端可正常访问</div>
<div class="ui borderless menu">
<a class="icon item">
<i class="left chevron icon"></i>
</a>
<a class="item">
1
</a>
<a class="item">
2
</a>
<div class="disabled item">
...
</div>
<a class="item">
10
</a>
<a class="item">
11
</a>
<a class="icon item"> <i class="right chevron icon"></i>
</a>
</div>
</div>
</div>
<div class="ui button" data-tooltip="预留" data-position="top center">
预留
</div>
</div>
<#include "comm/footer.ftl"/>
<script type="text/javascript">
$(document).ready(function () {
<#if username??>
setusername('${username}');
console.log('已经登陆:' + username);
</#if>
console.log('pageNum' + '${pageNum}');
console.log('pageNumAll' + '${pageNumAll}');
setpageNum('${pageNum}', '${pageNumAll}');
var token = $("meta[name='_csrf']").attr("content");
if (token == '' && username && username != null) {
console.log('因为默认页没有_csrf_token,跳页');
location.href = "/main";
}
});
</script>
<script type="text/javascript" charset="UTF-8" src="/static/js/user/system.js"></script>
</body>
</html>
+88
View File
@@ -0,0 +1,88 @@
<!DOCTYPE html>
<html>
<title>Jiscuss Demo</title>
<head>
<!-- <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 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>
<style type="text/css">
body {
background-color: #DADADA;
}
body > .grid {
height: 100%;
}
.image {
margin-top: -100px;
}
.column {
max-width: 450px;
}
</style>
</head>
<body>
<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" action="/login" method="post">
<input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/>
<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="field" id="msgId" style="display:none">
<div class="ui pointing red basic label">
${msg}
</div>
</div>
<button class="ui fluid large blue button" type="submit">登录</button>
</div>
<div class="ui error message"></div>
</form>
<div class="ui message">
<a href="/"><——Jiscuss首页</a> 新用户? <a href="login.php#">注册</a>
</div>
</div>
</div>
<script type="text/javascript">
$(document).ready(function () {
<#if msg??>
$('#msgId').show();
</#if>
});
</script>
</body>
</html>
+108
View File
@@ -0,0 +1,108 @@
<!DOCTYPE html>
<html>
<title>Jiscuss Demo</title>
<head>
<!-- <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> -->
<!-- default header name is X-CSRF-TOKEN -->
<meta name="_csrf" content="${_csrf.token}"/>
<meta name="_csrf_header" content="${_csrf.headerName}"/>
<#include "comm/commjs.ftl"/>
</head>
<body>
<div class="ui fixed inverted menu">
<div class="ui container">
<a href="fixed.php#" class="header item">
<img class="logo" src="assets/images/logo.png">
项目名
</a>
<a href="fixed.php#" class="item">主页</a>
<div class="ui simple dropdown item">
Dropdown <i class="dropdown icon"></i>
<div class="menu">
<a class="item" href="fixed.php#">链接选项</a>
<a class="item" href="fixed.php#">链接选项</a>
<div class="divider"></div>
<div class="header">标题项</div>
<div class="item">
<i class="dropdown icon"></i>
子菜单
<div class="menu">
<a class="item" href="fixed.php#">链接选项</a>
<a class="item" href="fixed.php#">链接选项</a>
</div>
</div>
<a class="item" href="fixed.php#">链接选项</a>
</div>
</div>
</div>
</div>
<div class="ui main text container">
<h1 class="ui header">Semantic UI Fixed Template</h1>
<p>This is a basic fixed menu template using fixed size containers.</p>
<p>A text container is used for the main container, which is useful for single column layouts</p>
<img class="wireframe" src="assets/images/wireframe/media-paragraph.png">
<img class="wireframe" src="assets/images/wireframe/paragraph.png">
<img class="wireframe" src="assets/images/wireframe/paragraph.png">
<img class="wireframe" src="assets/images/wireframe/paragraph.png">
<img class="wireframe" src="assets/images/wireframe/paragraph.png">
<img class="wireframe" src="assets/images/wireframe/paragraph.png">
<img class="wireframe" src="assets/images/wireframe/paragraph.png">
</div>
<div class="ui inverted vertical footer segment">
<div class="ui center aligned container">
<div class="ui stackable inverted divided grid">
<div class="three wide column">
<h4 class="ui inverted header">Group 1</h4>
<div class="ui inverted link list">
<a href="fixed.php#" class="item">Link One</a>
<a href="fixed.php#" class="item">Link Two</a>
<a href="fixed.php#" class="item">Link Three</a>
<a href="fixed.php#" class="item">Link Four</a>
</div>
</div>
<div class="three wide column">
<h4 class="ui inverted header">Group 2</h4>
<div class="ui inverted link list">
<a href="fixed.php#" class="item">Link One</a>
<a href="fixed.php#" class="item">Link Two</a>
<a href="fixed.php#" class="item">Link Three</a>
<a href="fixed.php#" class="item">Link Four</a>
</div>
</div>
<div class="three wide column">
<h4 class="ui inverted header">Group 3</h4>
<div class="ui inverted link list">
<a href="fixed.php#" class="item">Link One</a>
<a href="fixed.php#" class="item">Link Two</a>
<a href="fixed.php#" class="item">Link Three</a>
<a href="fixed.php#" class="item">Link Four</a>
</div>
</div>
<div class="seven wide column">
<h4 class="ui inverted header">Footer Header</h4>
<p>Extra space for a call to action inside the footer that could help re-engage users.</p>
</div>
</div>
<div class="ui inverted section divider"></div>
<img src="assets/images/logo.png" class="ui centered mini image">
<div class="ui horizontal inverted small divided link list">
<a class="item" href="fixed.php#">Site Map</a>
<a class="item" href="fixed.php#">Contact Us</a>
<a class="item" href="fixed.php#">Terms and Conditions</a>
<a class="item" href="fixed.php#">Privacy Policy</a>
</div>
</div>
</div>
</body>
</html>
+20
View File
@@ -0,0 +1,20 @@
<!DOCTYPE html>
<head lang="en">
<meta charset="UTF-8"/>
<title></title>
</head>
<body>
<h1>Hello World</h1>
123123123123
123132666
<br/>
<p>
welcome ${data} to freemarker!
</p>
123132666
<p>
welcome ${msg} to freemarker!
</p>
</body>
</html>