模态框跟换为layx,代码优化,新建帖子时可新建标签

This commit is contained in:
yaoyuan2.chu
2020-11-09 23:25:33 +08:00
parent d343255e09
commit 3663f44989
34 changed files with 1274 additions and 555 deletions
@@ -1,32 +0,0 @@
package com.yaoyuan.jiscuss.controller;
import java.util.Map;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class TestController {
/**
* 登录页面跳转
*
* @return
*/
@GetMapping("loginpage")
public String loginpage() {
return "login";
}
@RequestMapping("/world")
public String world(Map<String, Object> model) {
model.put("data", "2019");
// request.setAttribute("name", "xxxxxxxxx");
model.put("msg", "xxxxxxx2222xx");
return "world";
}
}
@@ -0,0 +1,68 @@
package com.yaoyuan.jiscuss.controller;
import com.yaoyuan.jiscuss.entity.Discussion;
import com.yaoyuan.jiscuss.entity.Tag;
import com.yaoyuan.jiscuss.entity.User;
import com.yaoyuan.jiscuss.entity.UserInfo;
import com.yaoyuan.jiscuss.entity.custom.DiscussionCustom;
import com.yaoyuan.jiscuss.entity.custom.TagCustom;
import com.yaoyuan.jiscuss.service.IDiscussionsService;
import com.yaoyuan.jiscuss.service.ITagsService;
import com.yaoyuan.jiscuss.service.IUsersService;
import com.yaoyuan.jiscuss.util.DelTagsUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import javax.servlet.http.HttpServletRequest;
import java.util.*;
/**
* @author yaoyuan2.chu
* @Title:
* @Package com.yaoyuan.jiscuss.controller
* @Description:
* @date
*/
@Controller
public class UserPageController {
private static Logger logger = LoggerFactory.getLogger(UserPageController.class);
@Autowired
private IUsersService usersService;
@Autowired
private IDiscussionsService discussionsService;
@Autowired
private ITagsService tagsService;
/**
* 用户页面
* @return
*/
@RequestMapping("/user")
public String user( @RequestParam(defaultValue = "discussion") String type, ModelMap map) {
if (type.equals("discussion")) {
map.put("discussion", "active");
}
if (type.equals("change")) {
map.put("change", "active");
}
if (type.equals("like")) {
map.put("like", "active");
}
return "user";
}
}
@@ -6,7 +6,6 @@ import javax.servlet.http.HttpServletRequest;
import com.yaoyuan.jiscuss.entity.*;
import com.yaoyuan.jiscuss.entity.custom.DiscussionCustom;
import com.yaoyuan.jiscuss.entity.custom.PostCustom;
import com.yaoyuan.jiscuss.service.*;
import org.json.JSONObject;
import org.slf4j.Logger;
@@ -93,7 +92,7 @@ public class UserPostController extends BaseController {
//新建主题
@PostMapping(value = "/newdiscussions")
@PostMapping(value = "/newDiscussions")
@ResponseBody
public String newDiscussions(@RequestBody DiscussionCustom discussion) {
logger.info(">>> newPost" + discussion);
@@ -143,7 +142,7 @@ public class UserPostController extends BaseController {
//删除主题
//新建评论
@PostMapping(value = "/newpost")
@PostMapping(value = "/newPost")
@ResponseBody
public String newPosts(@RequestBody Post post) {
logger.info(">>> newpost" + post);
@@ -199,4 +198,47 @@ public class UserPostController extends BaseController {
}
//排行榜等
/**
* 新建主题页
* @param request
* @param map
* @return
*/
@RequestMapping({"/newDiscussionsPage"})
public String newdiccuss( HttpServletRequest request, ModelMap map) {
//获取所有标签(以后尝试去缓存中取)
List<Tag> allTags = tagsService.getAllList();
map.put("allTags", allTags);
UserInfo user = getUserInfo(request);
if (user != null) {
map.put("username", user.getUsername());
map.put("data", "Jiscuss 用户:" + user.getUsername());
}
return "newdiccuss";
}
/**
* 新建标签页
* @param request
* @param map
* @return
*/
@RequestMapping({"/newTagPage"})
public String newtag( HttpServletRequest request, ModelMap map) {
//获取所有标签(以后尝试去缓存中取)
List<Tag> allTags = tagsService.getAllList();
map.put("allTags", allTags);
UserInfo user = getUserInfo(request);
if (user != null) {
map.put("username", user.getUsername());
map.put("data", "Jiscuss 用户:" + user.getUsername());
}
return "newtag";
}
}
@@ -5,6 +5,7 @@ import com.yaoyuan.jiscuss.entity.Tag;
import com.yaoyuan.jiscuss.entity.UserInfo;
import com.yaoyuan.jiscuss.entity.User;
import com.yaoyuan.jiscuss.entity.custom.DiscussionCustom;
import com.yaoyuan.jiscuss.entity.custom.TagCustom;
import com.yaoyuan.jiscuss.service.IDiscussionsService;
import com.yaoyuan.jiscuss.service.ITagsService;
import com.yaoyuan.jiscuss.service.IUsersService;
@@ -16,16 +17,13 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.List;
import java.util.*;
/**
* 用户页面系统控制器
* 首页页面系统控制器
*/
@Controller
public class UserSystemController extends BaseController {
@@ -41,28 +39,98 @@ public class UserSystemController extends BaseController {
@Autowired
private ITagsService tagsService;
//首页
/**
* 首页index
* @param tag
* @param type
* @param pageNum
* @param request
* @param map
* @return
*/
@RequestMapping({"/", "/main", "/index"})
public String home(@RequestParam(defaultValue = "all") String tag, @RequestParam(defaultValue = "all") String type, @RequestParam(defaultValue = "1") Integer
pageNum, HttpServletRequest request, ModelMap map) {
logger.info(">>> index");
logger.info(">>> tag:" + tag);
logger.info(">>> pageNum:" + pageNum);
List<User> userall = usersService.getAllList();
logger.info(">>> 第一遍的全部用户:" + userall);
List<User> useral2 = usersService.getAllList();
logger.info(">>> 第二遍的全部用户:" + useral2);
int pageSiz = 10;
int pageNumNew = pageNum - 1;
Discussion discussion = new Discussion();
//分页获取主题帖子
Page<Discussion> allDiscussionsPage = discussionsService.queryAllDiscussionsList(discussion, pageNumNew, pageSiz);
//分页获取主题帖子-默认
Page<Discussion> allDiscussionsPage = discussionsService.queryAllDiscussionsList(discussion, pageNumNew, pageSiz, tag, type);
List<Discussion> allDiscussions = allDiscussionsPage.getContent();
List<DiscussionCustom> newAllD = new ArrayList<>();
setTagAndUserList(newAllD,allDiscussions);
logger.info("全部主题==>{}", allDiscussions);
Long total = allDiscussionsPage.getTotalElements();
//获取主题帖子的分页数据
List<String> pageNumList = getPageNumList(allDiscussionsPage.getTotalPages());
//获取所有标签(以后尝试去缓存中取)
List<Tag> allTags = tagsService.getAllList();
logger.info("全部标签==>{}", allTags);
map.put("data", "Jiscuss 用户");
map.put("allDiscussions", newAllD);
map.put("allUser", usersService.getAllList());
map.put("pageDiscussions", pageNumList);
map.put("allTags", allTags);
map.put("tag", tag);
map.put("type", type);
if (type.equals("all")) {
map.put("typeAll", "active");
}
if (type.equals("hot")) {
map.put("typeHot", "active");
}
if (type.equals("new")) {
map.put("typeNew", "active");
}
map.put("pageSize", pageSiz);
map.put("pageTotal", total);
map.put("pageNum", pageNum);
map.put("pageTotalPages", allDiscussionsPage.getTotalPages());
UserInfo user = getUserInfo(request);
if (user != null) {
map.put("username", user.getUsername());
map.put("data", "Jiscuss 用户:" + user.getUsername());
}
return "index";
}
/**
* 组装DiscussionCustom
* @param newAllD
* @param allDiscussions
*/
private void setTagAndUserList(List<DiscussionCustom> newAllD, List<Discussion> allDiscussions) {
List<Integer> discussionIdLsit = new ArrayList<>();
for (Discussion dd : allDiscussions) {
discussionIdLsit.add(dd.getId());
}
List<TagCustom> TagCustomList = tagsService.findByDiscussionIdlistId(discussionIdLsit);
Map<Integer, List<TagCustom>> tagMap = new HashMap<>();
for (TagCustom tc : TagCustomList) {
List<TagCustom> tagCustomListTemp = new ArrayList<>();
if(tagMap.containsKey(tc.getDiscussionId())){
tagCustomListTemp = tagMap.get(tc.getDiscussionId());
tagCustomListTemp.add(tc);
tagMap.put(tc.getDiscussionId(),tagCustomListTemp);
}else{
tagCustomListTemp.add(tc);
tagMap.put(tc.getDiscussionId(),tagCustomListTemp);
}
}
for (Discussion dd : allDiscussions) {
DiscussionCustom newdd = new DiscussionCustom();
BeanUtils.copyProperties(dd, newdd);
@@ -86,42 +154,17 @@ public class UserSystemController extends BaseController {
newdd.setRealnameLast(lastUser.getRealname());
newdd.setUsernameLast(lastUser.getUsername());
}
//组装tag
newdd.setTagList(tagMap.get(dd.getId()));
newAllD.add(newdd);
}
logger.info("全部主题==>{}", allDiscussions);
Long total = allDiscussionsPage.getTotalElements();
//获取主题帖子的分页数据
List<String> pageNumList = getPageNumList(allDiscussionsPage.getTotalPages());
//获取所有标签(以后尝试去缓存中取)
List<Tag> allTags = tagsService.getAllList();
logger.info("全部标签==>{}", allTags);
System.out.println(userall.toString());
map.put("data", "Jiscuss 用户");
map.put("allDiscussions", newAllD);
map.put("pageDiscussions", pageNumList);
map.put("allTags", allTags);
map.put("tag", tag);
map.put("type", type);
map.put("pageSize", pageSiz);
map.put("pageTotal", total);
map.put("pageNum", pageNum);
map.put("pageTotalPages", allDiscussionsPage.getTotalPages());
UserInfo user = getUserInfo(request);
if (user != null) {
map.put("username", user.getUsername());
map.put("data", "Jiscuss 用户:" + user.getUsername());
}
return "index";
}
/**
* 分页信息
* @param size
* @return
*/
private List<String> getPageNumList(int size) {
List<String> pageNumList = new ArrayList<String>();
for (int i = 0; i < size; i++) {
@@ -130,14 +173,14 @@ public class UserSystemController extends BaseController {
return pageNumList;
}
//登录页
@GetMapping("/test")
public String test() {
return "test";
}
//登录页
/**
* 登录页
* @param error
* @param logout
* @param map
* @return
*/
@GetMapping("/login")
public String login(@RequestParam(value = "error", required = false) String error,
@RequestParam(value = "logout", required = false) String logout, ModelMap map) {
@@ -154,7 +197,44 @@ public class UserSystemController extends BaseController {
}
//注册
/**
* 注册提交
* @param username
* @param email
* @param password
* @param map
* @return
*/
@PostMapping("/registerDo")
public String registerDo(@RequestParam String username, @RequestParam String email,
@RequestParam String password, ModelMap map) {
//验证用户名是否存在
if (null != usersService.getByUsername(username)) {
map.put("msg", "用户已存在,请重试!");
return "register";
} else {
User user = new User();
user.setEmail(email);
user.setPassword(password);
user.setUsername(username);
user.setRealname(username);
user.setJoinTime(new Date());
User userInsert = usersService.insert(user);
map.put("msg", "注册成功,请登陆!");
return "login";
}
}
/**
* 注册页面
* @return
*/
@RequestMapping("/register")
public String register() {
return "register";
}
//获取设置信息
@@ -2,10 +2,7 @@ package com.yaoyuan.jiscuss.entity;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.*;
import lombok.Data;
@Data
@@ -13,8 +10,11 @@ import lombok.Data;
@Table(name="discussiontag")
public class DiscussionTag implements Serializable{
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@Column(name="discussion_id")
private Integer discussionId;
@@ -0,0 +1,62 @@
package com.yaoyuan.jiscuss.entity;
import lombok.Data;
import javax.persistence.*;
import java.io.Serializable;
import java.util.Date;
/**
* @author yaoyuan2.chu
* @Title:
* @Package com.yaoyuan.jiscuss.entity
* @Description:
* @date 2020/10/21 12:00
*/
@Data
@Entity
@Table(name="likecollect")
public class LikeCollect implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@Column(name="discussion_id")
private Integer discussionId;
@Column(name="discussion_name")
private String discussionName;
@Column(name="tag_id")
private Integer tagId;
@Column(name="post_id")
private Integer postId;
@Column(name="post_content")
private String postContent;
@Column(name="user_id")
private Integer userId;
@Column(name="user_name")
private String userName;
@Column(name="type")
private String type;
@Column(name="like_type")
private String likeType;
@Column(name="collect_type")
private String collectType;
@Column(name="create_id")
private Integer createId;
@Column(name="create_time")
private Date createTime;
}
@@ -36,7 +36,7 @@ public class DiscussionCustom extends Discussion {
private String tag;
private List<Tag> tagList;
private List<TagCustom> tagList;
}
@@ -0,0 +1,48 @@
package com.yaoyuan.jiscuss.entity.custom;
import com.yaoyuan.jiscuss.entity.Post;
import com.yaoyuan.jiscuss.entity.Tag;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
/**
* @author yaoyuan2.chu
* @Title:
* @Package com.yaoyuan.jiscuss.entity.custom
* @Description:
* @date 2020/10/21 10:05
*/
@Data
@Setter
@Getter
public class TagCustom {
@Column(name="name")
private String name;
@Column(name="description")
private String description;
@Column(name="color")
private String color;
@Column(name="icon")
private String icon;
@Column(name="discussion_id")
private Integer discussionId;
public TagCustom(String name, String color, String icon, String description, Integer discussionId) {
this.name = name;
this.color = color;
this.icon = icon;
this.description = description;
this.discussionId = discussionId;
}
}
@@ -1,11 +1,24 @@
package com.yaoyuan.jiscuss.repository;
import com.yaoyuan.jiscuss.entity.Discussion;
import com.yaoyuan.jiscuss.entity.User;
import org.springframework.data.domain.Example;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface DiscussionsRepository extends JpaRepository<Discussion,Integer> {
@Query(value = "SELECT * from discussion where id in (\n" +
"SELECT discussion_id from discussiontag where tag_id = ?1 ) ", nativeQuery = true)
Page<Discussion> findByQuery(String tagId, Pageable pageable);
}
@@ -1,6 +1,7 @@
package com.yaoyuan.jiscuss.repository;
import com.yaoyuan.jiscuss.entity.Tag;
import com.yaoyuan.jiscuss.entity.custom.TagCustom;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
@@ -13,4 +14,13 @@ public interface TagsRepository extends JpaRepository<Tag,Integer> {
@Query(value = "FROM Tag a, DiscussionTag b WHERE a.id = b.tagId and b.discussionId = :dId")
List<Tag> findByDId(@Param("dId")Integer dId);
@Query("select new com.yaoyuan.jiscuss.entity.custom.TagCustom(" +
"u.name,u.color,u.icon,u.description, d.discussionId" +
") " +
"from Tag u, DiscussionTag d " +
"where u.id=d.tagId and d.discussionId in (:discussionIdlist)")
List<TagCustom> findByDiscussionIdlistId(@Param(value = "discussionIdlist") List<Integer> discussionIdlist);
}
@@ -14,6 +14,5 @@ public interface IDiscussionsService {
Discussion findOne(Integer id);
Page<Discussion> queryAllDiscussionsList(Discussion discussion, int pageNum, int pageSize);
Page<Discussion> queryAllDiscussionsList(Discussion discussion, int pageNumNew, int pageSiz, String tag, String type);
}
@@ -3,6 +3,7 @@ package com.yaoyuan.jiscuss.service;
import java.util.List;
import com.yaoyuan.jiscuss.entity.Tag;
import com.yaoyuan.jiscuss.entity.custom.TagCustom;
public interface ITagsService {
@@ -11,4 +12,6 @@ public interface ITagsService {
Tag insert(Tag tag);
List<Tag> findByDId(Integer id);
List<TagCustom> findByDiscussionIdlistId(List<Integer> discussionIdLsit);
}
@@ -37,13 +37,25 @@ public class DiscussionsServiceImpl implements IDiscussionsService {
}
@Override
public Page<Discussion> queryAllDiscussionsList(Discussion discussion, int pageNum, int pageSize) {
public Page<Discussion> queryAllDiscussionsList(Discussion discussion, int pageNum, int pageSize,String tag,String type) {
Sort sort = new Sort(Sort.Direction.DESC, "id");
if(type.equals("hot")){
sort = new Sort(Sort.Direction.DESC, "likeCount");
}else if(type.equals("new")){
sort = new Sort(Sort.Direction.DESC, "startTime");
}
@SuppressWarnings("deprecation")
Pageable pageable = new PageRequest(pageNum, pageSize, sort);
//将匹配对象封装成Example对象
Example<Discussion> example = Example.of(discussion);
if(null!=tag && !"all".equals(tag)){
Page<Discussion> pageList= discussionsRepository.findByQuery(tag, pageable);
return pageList;
}else{
Page<Discussion> pageList= discussionsRepository.findAll(example, pageable);
return pageList;
}
return discussionsRepository.findAll(example, pageable);
}
}
@@ -4,6 +4,7 @@ import java.util.List;
import javax.transaction.Transactional;
import com.yaoyuan.jiscuss.entity.custom.TagCustom;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -31,6 +32,11 @@ public class TagsServiceImpl implements ITagsService {
public List<Tag> findByDId(Integer id) {
return tagsRepository.findByDId(id);
}
@Override
public List<TagCustom> findByDiscussionIdlistId(List<Integer> discussionIdLsit) {
return tagsRepository.findByDiscussionIdlistId(discussionIdLsit);
}
}
+20 -1
View File
@@ -42,6 +42,7 @@ create_time datetime
-- 主题标签关联表3
drop table if exists discussiontag;
CREATE TABLE discussiontag(
id INTEGER not null primary key auto_increment,
discussion_id INTEGER not null ,
tag_id INTEGER
);
@@ -86,4 +87,22 @@ last_time datetime,
last_discussion_id INTEGER,
create_id INTEGER,
create_time datetime
);
);
-- 喜欢收藏表7
drop table if exists likecollect;
CREATE TABLE likecollect(
id INTEGER not null primary key auto_increment,
discussion_id INTEGER ,
discussion_name varchar(200),
tag_id INTEGER ,
post_id INTEGER ,
post_content text,
user_id INTEGER ,
user_name varchar(200),
type varchar(20),
like_type varchar(20),
collect_type varchar(20),
create_id INTEGER,
create_time datetime
);
@@ -0,0 +1,3 @@
function massage(msg,type,title){
layx.msg(msg,{dialogIcon:type});
}
@@ -20,7 +20,7 @@ $("#addPost").click(function () {
console.log(content);
$.ajax({
type: "POST",
url: "/newpost",
url: "/newPost",
data: JSON.stringify({
content: content,
discussionId: discussionsId,
@@ -34,17 +34,17 @@ $("#addPost").click(function () {
success: function (data) {
console.log(data);
if(data.flag){
massage(content+',添加成功!','');
massage(content+',添加成功!','success','');
location.reload();
massage('评论添加成功!','');
massage('评论添加成功!','success','');
}else{
massage(data.msg,'');
massage(data.msg,'error','');
return false;
}
}
});
}else{
massage('您未登录,请先登录!','');
massage('您未登录,请先登录!','error','');
}
});
@@ -0,0 +1,110 @@
let pageNum = null;
let pageAll = null;
let pageUrl = '/';
$("#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();
var tag = $("#selectTag").val();
// $("#discussionscontent").val();
console.log(tinyMCE.editors[0].getContent());
var content = tinyMCE.editors[0].getContent();
console.log(title);
console.log(content);
$.ajax({
type: "POST",
url: "/newdiscussions",
data: JSON.stringify({
title: title,
content: content
}),
contentType: 'application/json',
beforeSend: function (request) {
request.setRequestHeader(header, token); // 添加 CSRF Token
},
dataType: "JSON",
success: function (data) {
console.log(data);
if (data.flag) {
massage(title + ',添加成功!','success', '');
$('.ui.modal.createNewDiccuss').modal('hide');
location.reload();
} else {
massage(data.msg,'error', '');
return false;
}
}
});
});
$("#cancelnewtags").click(function () {
$('#createNewtagsDiv').hide();
$('#tagDescriptionDiv').hide();
$('#parentTagDiv').hide();
$('#colorIconDiv').hide();
});
$("#newtags").click(function () {
debugger
$('#createNewtagsDiv').show();
$('#tagDescriptionDiv').show();
$('#colorIconDiv').show();
});
$("#commitnewtags").click(function () {
var header = $("meta[name='_csrf_header']").attr("content");
var token = $("meta[name='_csrf']").attr("content");
var name = $("#tagsname").val();
var tagColor = $("#tagColor").val();
var tagIcon = $("#tagIcon").val();
var parentTag = $("#parentTag").val();
let coloricon = tagColor + ',' + tagIcon
var tagdescription = $("#tagdescription").val();
console.log(tagColor);
console.log(tagIcon);
console.log(parentTag);
console.log(tagdescription);
console.log(name);
$.ajax({
type: "POST",
url: "/newtags",
data: JSON.stringify({
name: name,
color: coloricon,
description: tagdescription,
parentId: parentTag
}),
contentType: 'application/json',
beforeSend: function (xhr) {
xhr.setRequestHeader(header, token);
},
dataType: "JSON",
success: function (data) {
console.log(data);
if (data.flag) {
massage(name + ',添加成功!', 'success','');
$("#selectTag").html("");
} else {
massage(name + ',添加失败!', 'error','');
}
}
});
});
+28 -109
View File
@@ -20,7 +20,7 @@ $("#upPage").click(function () {
let page = pageNum - 1
window.location.href = pageUrl + "?pageNum=" + page;
} else {
massage('已经是首页!', '');
massage('已经是首页!','warn', '');
}
});
@@ -32,133 +32,52 @@ $("#nextPage").click(function () {
let page = pageNum + 1
window.location.href = pageUrl + "?pageNum=" + page;
} else {
massage('已经是尾页!', '');
massage('已经是尾页!','warn', '');
}
});
$("#createNewDiccuss").click(function () {
console.log("点击 createNewDiccuss");
$("#createNewDiccuss2").click(function () {
console.log("点击 createNewDiccuss2");
console.log(username);
if (username && username != null) {
$('.ui.modal.createNewDiccuss')
.modal('show')
;
tinymce.init({
selector: '#discussionscontent',
layx.iframe('createNewDiccussContent','新建主题','./newDiscussionsPage',{
shadable:0.8,
event: {
ondestroy: {
before: function (layxWindow, winform, inside, escKey) {
massage('操作成功!','success', '')
console.log(new Date() + "关闭之前~")
console.log(winform);
console.log("=============分割线===============")
},
after: function () {
location.reload();
console.log(new Date() + "关闭之后~")
massage('操作成功!','success', '')
console.log("=============分割线===============")
}
}
}
});
} else {
massage('您未登录,请先登录!', '');
massage('您未登录,请先登录!','error', '');
}
});
$("#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();
var tag = $("#selectTag").val();
// $("#discussionscontent").val();
console.log(tinyMCE.editors[0].getContent());
var content = tinyMCE.editors[0].getContent();
console.log(title);
console.log(content);
$.ajax({
type: "POST",
url: "/newdiscussions",
data: JSON.stringify({
title: title,
content: content
}),
contentType: 'application/json',
beforeSend: function (request) {
request.setRequestHeader(header, token); // 添加 CSRF Token
},
dataType: "JSON",
success: function (data) {
console.log(data);
if (data.flag) {
massage(title + ',添加成功!', '');
$('.ui.modal.createNewDiccuss').modal('hide');
location.reload();
} else {
massage(data.msg, '');
return false;
}
}
});
});
$("#cancelnewtags").click(function () {
$('#createNewtagsDiv').hide();
$('#tagDescriptionDiv').hide();
$('#parentTagDiv').hide();
$('#colorIconDiv').hide();
});
$("#newtags").click(function () {
$('#createNewtagsDiv').show();
$('#tagDescriptionDiv').show();
$('#parentTagDiv').show();
$('#colorIconDiv').show();
});
function onTags(data) {
console.log('123');
console.log(data);
}
$("#commitnewtags").click(function () {
var header = $("meta[name='_csrf_header']").attr("content");
var token = $("meta[name='_csrf']").attr("content");
var name = $("#tagsname").val();
var tagColor = $("#tagColor").val();
var tagIcon = $("#tagIcon").val();
var parentTag = $("#parentTag").val();
let coloricon = tagColor + ',' + tagIcon
var tagdescription = $("#tagdescription").val();
console.log(tagColor);
console.log(tagIcon);
console.log(parentTag);
console.log(tagdescription);
console.log(name);
$.ajax({
type: "POST",
url: "/newtags",
data: JSON.stringify({
name: name,
color: coloricon,
description: tagdescription,
parentId: parentTag
}),
contentType: 'application/json',
beforeSend: function (xhr) {
xhr.setRequestHeader(header, token);
},
dataType: "JSON",
success: function (data) {
console.log(data);
if (data.flag) {
massage(name + ',添加成功!', '');
$("#selectTag").html("");
} else {
massage(name + ',添加失败!', '');
}
}
});
});
$('#menu')
@@ -0,0 +1,9 @@
$("#userButton").click(function () {
console.log("点击 userButton");
$('#userButtonsidebar')
.sidebar({
transition:'scale down' //默认uncover,可以取值push\overlay\slide along\slide out\scale down
})
.sidebar('toggle')
;
});
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+12 -4
View File
@@ -14,10 +14,18 @@
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">
<#--<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>-->
<#--layx-->
<link href="static/layx/layx.min.css?b14794a8a3baf3e8b58e" rel="stylesheet">
<script type="text/javascript" src="static/layx/layx.min.js?b14794a8a3baf3e8b58e"></script>
<script type="text/javascript" charset="UTF-8" src="/static/js/comm/util.js"></script>
<script crossorigin="anonymous" integrity="sha384-VDls8ImYGI8SwVxpmjX2Bn27U2TcNodzTNROTusVEWO55+lmL+H9NczoQJk6mwZR"
src="https://lib.baomitu.com/toastr.js/2.1.4/toastr.min.js"></script>
@@ -45,10 +45,4 @@
</div>
</div>
</div>
<script type="text/javascript">
function massage(msg,type){
// window.alert(msg);
toastr.info(msg)
}
</script>
+1 -1
View File
@@ -1,4 +1,4 @@
<div class="ui main menu" id="menu">
<div class="ui main menu" >
<div class="ui container">
<div href="/" class="header borderless item">
<img class="logo" src="static/assets/images/logo.png">
@@ -38,7 +38,6 @@
<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>
+158 -189
View File
@@ -19,7 +19,7 @@
<div class="ui container" id="container">
<div class="ui info message">
<i class="close icon"></i>
<div class="header">欢迎来到这里,${data},当前页主题数: ${allDiscussions?size} ,主题页数:${pageDiscussions?size}
<div class="header">欢迎来到这里,${data} 当前页主题数: ${allDiscussions?size} ,主题页数:${pageDiscussions?size}
,标签数 ${allTags?size} </div>
<ul class="list">
<li>JAVA + DISCUSS = JISCUSS 。</li>
@@ -30,10 +30,9 @@
<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="widescreen large screen computer tablet only four wide column">
<div class="fluid ui animated fade primary button" tabindex="0" id='createNewDiccuss'>
<div class="fluid ui animated fade primary button" tabindex="0" id="createNewDiccuss2" style=" margin-bottom: 20px;">
<div class="visible content">
<i class="pen square icon"></i>创建新帖
</div>
@@ -42,12 +41,12 @@
</div>
</div>
<div class="ui modal createNewDiccuss">
<div class="ui modal createNewDiccuss" id = "createNewDiccussContent">
<i class="close icon"></i>
<div class="header">
创建新帖
</div>
<div class=" content">
<div class=" content" >
<form class="ui form">
<div class="field">
@@ -65,26 +64,28 @@
</div>
<div class="field">
<button class="ui teal button" id="newtags">新增标签</button>
<#-- <button class="ui teal button" id="newtags">新增标签</button>-->
<#-- <a href="/login" id="loginmodel">登录&nbsp;&nbsp;&&nbsp;&nbsp;注册</a>-->
&nbsp;<a onclick="onNewtags()">新增标签</a>
</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 class="two fields" id="tagDescriptionDiv" style="display:none">
<div class="field" >
<label>描述</label>
<input type="text" placeholder="描述" id="tagdescription">
</div>
<div class="field" >
<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">
@@ -144,7 +145,7 @@
</div>
</div>
<div class="ui section divider"></div>
<#-- <div class="ui section divider"></div>-->
<div class="ui card red ">
<div class="content">
@@ -155,74 +156,19 @@
<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="header">test</div>
<div class="description">test files for test</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 class="header">test2</div>
<div class="description">Test2 site's test</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>
@@ -281,13 +227,13 @@
<div class="ui two buttons">
<div class="ui basic red button">
<div class="ui mini statistic">
<div class="value">1</div>
<div class="value"> ${allUser?size}</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="value"> ${allDiscussions?size}</div>
<div class="label">发帖数</div>
</div>
</div>
@@ -297,20 +243,31 @@
</div>
</div>
<div
class="widescreen large screen computer tablet only twelve wide column">
<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">
<#if username??>
<a class="item ${typeAll}" href="/main?type=all">
<i class="icon mail"></i>
最新回复
<div class="floating ui red label">1</div>
</a>
<a class="item ${typeHot}" href="/main?type=hot">热门</a>
<a class="item ${typeNew}" href="/main?type=new">新帖</a>
<#else>
<a class="item ${typeAll}" href="/?type=all" > <i class="icon mail"></i>
最新回复
<div class="floating ui red label">1</div>
</a>
<a class="item ${typeHot}" href="/?type=hot">热门</a>
<a class="item ${typeNew}" href="/?type=new">新帖</a>
</#if>
</div>
<div class="ui ${typeAll} tab segment" data-tab="fourth">
<div class="ui large feed">
<#list allDiscussions as discussions>
<div class="event">
<div class="label">
@@ -323,15 +280,14 @@
</a>
<div class="date">
3 days ago
${discussions.startTime}
</div>
<div class="nullright">
<a class="ui teal label">
标签1
</a>
<a class="ui purple label">
标签2
</a>
<#list discussions.tagList as tags>
<a class="ui ${tags.color} label">
${tags.name}
</a>
</#list>
</div>
</div>
<div class="extra text"
@@ -339,109 +295,122 @@
${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 class=" description "><i class="edit icon"></i> <a><b>${discussions.username}</b></a>&nbsp;&nbsp;•&nbsp;&nbsp;
<i class="reply icon"></i>最后由 <a><b>${discussions.usernameLast}</b></a>
回复于${discussions.lastTime}.
</div>
</div>
<div class="nullright meta">
<a class="like ">
<i class="like icon"></i> 11 喜欢
<i class="like icon"></i> ${discussions.likeCount} 喜欢
</a>
<a class="comment ">
<i class="comment icon"></i> 22 回复
<i class="comment icon"></i> ${discussions.commentsCount} 回复
</a>
</div>
</div>
</div>
<div class="ui fitted divider"></div>
</#list>
</div>
</div>
<div class="ui ${typeHot} tab segment" data-tab="fifth">
<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">
${discussions.startTime}
</div>
<div class="nullright">
<#list discussions.tagList as tags>
<a class="ui ${tags.color} label">
${tags.name}
</a>
</#list>
</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>${discussions.username}</b></a>&nbsp;&nbsp;•&nbsp;&nbsp;
<i class="reply icon"></i>最后由 <a><b>${discussions.usernameLast}</b></a>
回复于${discussions.lastTime}.
</div>
</div>
<div class="nullright meta">
<a class="like ">
<i class="like icon"></i> ${discussions.likeCount} 喜欢
</a>
<a class="comment ">
<i class="comment icon"></i> ${discussions.commentsCount} 回复
</a>
</div>
</div>
</div>
<div class="ui fitted divider"></div>
</#list>
</div>
</div>
<div class="ui ${typeNew} tab segment" data-tab="sixth">
<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">
${discussions.startTime}
</div>
<div class="nullright">
<#list discussions.tagList as tags>
<a class="ui ${tags.color} label">
${tags.name}
</a>
</#list>
</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>${discussions.username}</b></a>&nbsp;&nbsp;•&nbsp;&nbsp;
<i class="reply icon"></i>最后由 <a><b>${discussions.usernameLast}</b></a>
回复于${discussions.lastTime}.
</div>
</div>
<div class="nullright meta">
<a class="like ">
<i class="like icon"></i> ${discussions.likeCount} 喜欢
</a>
<a class="comment ">
<i class="comment icon"></i> ${discussions.commentsCount} 回复
</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>
@@ -512,12 +481,12 @@
</div>
<br>
<div class="ui button" data-tooltip="预留" data-position="top center">
预留
</div>
</div>
<#include "comm/footer.ftl"/>
<script type="text/javascript">
+2 -11
View File
@@ -2,16 +2,7 @@
<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>
<#include "comm/commjs.ftl"/>
<style type="text/css">
body {
@@ -69,7 +60,7 @@
</form>
<div class="ui message">
<a href="/"><——Jiscuss首页</a> 新用户? <a href="login.php#">注册</a>
<a href="/"><——Jiscuss首页</a> 新用户? <a href="/register">注册</a>
</div>
</div>
</div>
+122
View File
@@ -0,0 +1,122 @@
<!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>
<div class="ui container" id="container">
<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 fluid dropdown" id="selectTag">
<option value="">选择标签</option>
<#list allTags as tag>
<option value="${tag.id}">${tag.name}</option>
</#list>
</select>
</div>
<div class="field">
&nbsp;<button class="ui teal button" onclick="onNewtags()">新增标签</button>
</div>
<div class="field">
<label>内容</label>
<textarea id="discussionsContent"></textarea>
</div>
<div class="ui fluid large blue button" id="newDiscussions">提交内容</div>
</form>
</div>
</div>
<script type="text/javascript" charset="UTF-8" src="/static/js/comm/util.js"></script>
<script type="text/javascript">
$('.ui.dropdown')
.dropdown()
;
$(document).ready(function () {
tinymce.init({
selector: '#discussionsContent',
});
});
function onNewtags() {
parent.layx.iframe('createNewTagContent','新建标签','./newTagPage',{
alwaysOnTop:true,
shadable:true,
width:380,
height:500
});
}
$("#newDiscussions").click(function () {
var token = $("meta[name='_csrf']").attr("content");
var header = $("meta[name='_csrf_header']").attr("content");
console.warn(header)
console.warn(token)
debugger
var title = $("#discussionstitle").val();
var tag = $("#selectTag").val();
console.warn(tag)
let tagStr = tag.join(",")
console.log(tagStr)
console.log(tinyMCE.editors[0].getContent());
var content = tinyMCE.editors[0].getContent();
console.log(title);
console.log(content);
$.ajax({
type: "POST",
url: "/newDiscussions",
data: JSON.stringify({
title: title,
content: content,
tag: tagStr
}),
contentType: 'application/json',
beforeSend: function (request) {
request.setRequestHeader(header, token); // 添加 CSRF Token
},
dataType: "JSON",
success: function (data) {
debugger
console.log(data);
if (data.flag) {
top.layx.destroy('createNewDiccussContent');
// parent.layx.destroy('createNewTagContent'); // 方法一(推荐)
// location.reload();
} else {
massage(data.msg,'error', '');
return false;
}
}
});
});
</script>
</body>
</html>
+161
View File
@@ -0,0 +1,161 @@
<!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>
<div class="ui container" id="container">
<div class=" content" >
<form class="ui form">
<div class="field" >
<label>标签名</label>
<input type="text" placeholder="标签名" id="tagsname">
</div>
<div class="two fields" >
<div class="field" >
<label>描述</label>
<input type="text" placeholder="描述" id="tagdescription">
</div>
<div class="field" >
<label>父标签</label>
<select class="ui fluid dropdown" id="parentTag">
<option value="">选择父标签</option>
<#list allTags as tag>
<option value="${tag.id}">${tag.name}</option>
</#list>
</select>
</div>
</div>
<div class="two fields" >
<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" >
<a class="ui teal button" id="commitnewtags">保存</a>
<a class="ui grey button" id="cancelnewtags">取消</a>
</div>
</form>
</div>
</div>
<script type="text/javascript" charset="UTF-8" src="/static/js/comm/util.js"></script>
<script type="text/javascript">
$('.ui.dropdown')
.dropdown()
;
$(document).ready(function () {
});
$("#commitnewtags").click(function () {
var header = $("meta[name='_csrf_header']").attr("content");
var token = $("meta[name='_csrf']").attr("content");
var name = $("#tagsname").val();
var tagColor = $("#tagColor").val();
var tagIcon = $("#tagIcon").val();
var parentTag = $("#parentTag").val();
var tagdescription = $("#tagdescription").val();
console.log(tagColor);
console.log(tagIcon);
console.log(parentTag);
console.log(tagdescription);
console.log(name);
$.ajax({
type: "POST",
url: "/newtags",
data: JSON.stringify({
name: name,
color: tagColor,
icon: tagIcon,
description: tagdescription,
parentId: parentTag
}),
contentType: 'application/json',
beforeSend: function (xhr) {
xhr.setRequestHeader(header, token);
},
dataType: "JSON",
success: function (data) {
console.log(data);
if (data.flag) {
parent.layx.reloadFrame('createNewDiccussContent');
massage(name + ',添加成功!', 'success','');
top.layx.destroy('createNewTagContent'); // 方法二
} else {
massage(name + ',添加失败!', 'error','');
}
}
});
});
$("#cancelnewtags").click(function () {
// layx.destroy(id);
// parent.layx.destroy('createNewTagContent'); // 方法一(推荐)
top.layx.destroy('createNewTagContent'); // 方法二
});
</script>
</body>
</html>
+94
View File
@@ -0,0 +1,94 @@
<!DOCTYPE html>
<html>
<title>Jiscuss Demo</title>
<head>
<#include "comm/commjs.ftl"/>
<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="/registerDo" method="post">
<input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/>
<div class="ui stacked segment">
<div class="required field">
<label>用户名</label>
<input type="text" name="username" placeholder="用户名">
</div>
<div class="required field">
<label>邮箱地址</label>
<input type="text" name="email" placeholder="邮箱地址">
</div>
<div class="required field">
<label>密码</label>
<input type="text" name="password" placeholder="密码">
</div>
<div class="required field">
<label>确认密码</label>
<input type="text" name="password2" placeholder="确认密码">
</div>
<div class="required inline field">
<div class="ui checkbox">
<input type="checkbox" tabindex="0" class="hidden">
<label>我同意Jiscuss条款</label>
</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">登陆</a>
</div>
</div>
</div>
<script type="text/javascript">
$('.ui.checkbox')
.checkbox()
;
$(document).ready(function () {
<#if msg??>
$('#msgId').show();
</#if>
});
</script>
</body>
</html>
-108
View File
@@ -1,108 +0,0 @@
<!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>
+118
View File
@@ -0,0 +1,118 @@
<!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> -->
<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">
<h1>用户1的个人主页</h1>
<h2 class="ui dividing header">详情</h2>
<div class="ui vertical stripe segment">
<#-- <div class="ui middle aligned stackable grid container">-->
<div class="ui internally celled grid">
<div class="row">
<div class="eight wide column">
<div class="ui secondary menu">
<a class="item ${discussion}" href="/user?type=discussion">主题</a>
<a class="item ${change}" href="/user?type=change">动态</a>
<a class="item ${like}" href="/user?type=like">喜欢收藏</a>
</div>
<div class="ui bottom attached tab segment ${discussion}" >
主题...
</div>
<div class="ui bottom attached tab segment ${change}" >
动态...
</div>
<div class="ui bottom attached tab segment ${like}" >
喜欢收藏...
</div>
</div>
<div class="six wide right floated column">
<div class="ui link cards">
<div class="card">
<div class="image">
<img src="static/assets/images/logo.png">
</div>
<div class="content">
<div class="header">Matt Giampietro</div>
<div class="meta">
<a>Friends</a>
</div>
<div class="description">
Matthew is an interior designer living in New York.
</div>
</div>
<div class="extra content">
<span class="right floated">
Joined in 2013
</span>
<span>
<i class="user icon"></i>
75 Friends
</span>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="center aligned column">
<button class="ui basic button" id="userButton">
<i class="icon user"></i>
小按钮·点下试试
</button>
</div>
</div>
</div>
</div>
</div>
<#include "comm/footer.ftl"/>
<#-- <div class="ui bottom vertical inverted sidebar labeled icon menu" id="userButtonsidebar">-->
<div class="ui bottom item three labeled icon sidebar menu scale down" id="userButtonsidebar">
<#-- <div class="ui bottom demo inverted nine item labeled icon sidebar menu scale down visible" style="">-->
<a class="item">
<i class="home icon"></i>
主题
</a>
<a class="item">
<i class="block layout icon"></i>
动态
</a>
<a class="item">
<i class="smile icon"></i>
喜欢收藏
</a>
</div>
<script type="text/javascript">
$(document).ready(function () {
<#if username??>
setusername('${username}');
console.log('已经登陆:' + username);
</#if>
<#--setDiscussionsId('${discussions.id}');-->
$('#userTab')
.tab()
;
});
</script>
<script type="text/javascript" charset="UTF-8" src="/static/js/user/user.js"></script>
</body>
</html>
-20
View File
@@ -1,20 +0,0 @@
<!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>