完成cms前台

This commit is contained in:
shuzheng 2017-03-26 02:01:45 +08:00
parent dd92445bdb
commit c4c668042d
26 changed files with 1648 additions and 252 deletions

View File

@ -0,0 +1,35 @@
package com.zheng.cms.web.controller;
import com.zheng.cms.dao.model.CmsArticle;
import com.zheng.cms.rpc.api.CmsArticleService;
import com.zheng.common.base.BaseController;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
/**
* 文章控制器
* Created by shuzheng on 2017/3/26.
*/
@Controller
@RequestMapping(value = "/article")
public class ArticleController extends BaseController {
private static Logger _log = LoggerFactory.getLogger(ArticleController.class);
@Autowired
private CmsArticleService cmsArticleService;
@RequestMapping(value = "/{articleId}", method = RequestMethod.GET)
public String index(@PathVariable("articleId") int articleId, Model model) {
CmsArticle article = cmsArticleService.selectByPrimaryKey(articleId);
model.addAttribute("article", article);
return thymeleaf("/article/index");
}
}

View File

@ -0,0 +1,26 @@
package com.zheng.cms.web.controller;
import com.zheng.common.base.BaseController;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
/**
* 博客首页控制器
* Created by shuzheng on 2017/3/26.
*/
@Controller
@RequestMapping(value = "/blog")
public class BlogController extends BaseController {
private static Logger _log = LoggerFactory.getLogger(BlogController.class);
@RequestMapping(value = "", method = RequestMethod.GET)
public String index(Model model) {
return thymeleaf("/blog/index");
}
}

View File

@ -0,0 +1,70 @@
package com.zheng.cms.web.controller;
import com.zheng.cms.dao.model.*;
import com.zheng.cms.rpc.api.*;
import com.zheng.common.base.BaseController;
import com.zheng.common.util.Paginator;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
/**
* 类目控制器
* Created by shuzheng on 2017/3/26.
*/
@Controller
@RequestMapping(value = "/category")
public class CategoryController extends BaseController {
private static Logger _log = LoggerFactory.getLogger(CategoryController.class);
@Autowired
private CmsCategoryService cmsCategoryService;
@Autowired
private CmsArticleService cmsArticleService;
@RequestMapping(value = "/{alias}", method = RequestMethod.GET)
public String index(@PathVariable("alias") String alias,
@RequestParam(required = false, defaultValue = "1", value = "page") int page,
@RequestParam(required = false, defaultValue = "orders", value = "sort") String sort,
@RequestParam(required = false, defaultValue = "desc", value = "order") String order,
HttpServletRequest request,
Model model) {
// 当前类目
CmsCategoryExample cmsCategoryExample = new CmsCategoryExample();
cmsCategoryExample.createCriteria()
.andAliasEqualTo(alias);
CmsCategory category = cmsCategoryService.selectFirstByExample(cmsCategoryExample);
model.addAttribute("category", category);
// 该类目文章列表
int rows = 10;
CmsArticleExample cmsArticleExample = new CmsArticleExample();
cmsArticleExample.createCriteria()
.andStatusEqualTo((byte) 1);
cmsArticleExample.setOffset((page - 1) * rows);
cmsArticleExample.setLimit(rows);
if (!StringUtils.isBlank(sort) && !StringUtils.isBlank(order)) {
cmsArticleExample.setOrderByClause(sort + " " + order);
}
List<CmsArticle> articles = cmsArticleService.selectByExample(cmsArticleExample);
model.addAttribute("articles", articles);
// 文章总数
long total = cmsArticleService.countByExample(cmsArticleExample);
// 分页
Paginator paginator = new Paginator(total, page, rows, request);
model.addAttribute("paginator", paginator);
return thymeleaf("/category/index");
}
}

View File

@ -1,9 +1,7 @@
package com.zheng.cms.web.controller; package com.zheng.cms.web.controller;
import com.zheng.cms.dao.model.*; import com.zheng.cms.dao.model.*;
import com.zheng.cms.rpc.api.CmsCategoryService; import com.zheng.cms.rpc.api.*;
import com.zheng.cms.rpc.api.CmsMenuService;
import com.zheng.cms.rpc.api.CmsTagService;
import com.zheng.common.base.BaseController; import com.zheng.common.base.BaseController;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -22,35 +20,57 @@ import java.util.List;
@Controller @Controller
public class IndexController extends BaseController { public class IndexController extends BaseController {
private static Logger _log = LoggerFactory.getLogger(IndexController.class); private static Logger _log = LoggerFactory.getLogger(IndexController.class);
@Autowired @Autowired
private CmsMenuService cmsMenuService; private CmsMenuService cmsMenuService;
@Autowired @Autowired
private CmsCategoryService cmsCategoryService; private CmsCategoryService cmsCategoryService;
@Autowired @Autowired
private CmsTagService cmsTagService; private CmsTagService cmsTagService;
@RequestMapping(value = "", method = RequestMethod.GET) @Autowired
public String index(Model model) { private CmsTopicService cmsTopicService;
// 菜单
CmsMenuExample cmsMenuExample = new CmsMenuExample(); @Autowired
cmsMenuExample.setOrderByClause("orders asc"); private CmsArticleService cmsArticleService;
List<CmsMenu> menus = cmsMenuService.selectByExample(cmsMenuExample);
model.addAttribute("menus", menus); @RequestMapping(value = "", method = RequestMethod.GET)
// 所有分类 public String index(Model model) {
CmsCategoryExample cmsCategoryExample = new CmsCategoryExample(); // 菜单
cmsCategoryExample.setOrderByClause("orders asc"); CmsMenuExample cmsMenuExample = new CmsMenuExample();
List<CmsCategory> categories = cmsCategoryService.selectByExample(cmsCategoryExample); cmsMenuExample.setOrderByClause("orders asc");
model.addAttribute("categories", categories); List<CmsMenu> menus = cmsMenuService.selectByExample(cmsMenuExample);
// 所有标签 model.addAttribute("menus", menus);
CmsTagExample cmsTagExample = new CmsTagExample(); // 所有类目
cmsTagExample.setOrderByClause("orders asc"); CmsCategoryExample cmsCategoryExample = new CmsCategoryExample();
List<CmsTag> tags = cmsTagService.selectByExample(cmsTagExample); cmsCategoryExample.setOrderByClause("orders asc");
model.addAttribute("tags", tags); List<CmsCategory> categories = cmsCategoryService.selectByExample(cmsCategoryExample);
return thymeleaf("/index"); model.addAttribute("categories", categories);
} // 所有标签
CmsTagExample cmsTagExample = new CmsTagExample();
cmsTagExample.setOrderByClause("orders asc");
List<CmsTag> tags = cmsTagService.selectByExample(cmsTagExample);
model.addAttribute("tags", tags);
// 最新5个专题
CmsTopicExample cmsTopicExample = new CmsTopicExample();
cmsTopicExample.setOrderByClause("ctime desc");
List<CmsTopic> topics = cmsTopicService.selectByExample(cmsTopicExample);
model.addAttribute("topics", topics);
// 最新5条文章
CmsArticleExample cmsArticleExample = new CmsArticleExample();
cmsArticleExample.createCriteria()
.andStatusEqualTo((byte) 1);
cmsArticleExample.setOrderByClause("orders desc");
List<CmsArticle> newArticles = cmsArticleService.selectByExample(cmsArticleExample);
model.addAttribute("newArticles", newArticles);
// 最火5条文章
cmsArticleExample.setOrderByClause("readnumber desc");
List<CmsArticle> hotArticles = cmsArticleService.selectByExample(cmsArticleExample);
model.addAttribute("hotArticles", hotArticles);
return thymeleaf("/index");
}
} }

View File

@ -0,0 +1,26 @@
package com.zheng.cms.web.controller;
import com.zheng.common.base.BaseController;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
/**
* 资讯首页控制器
* Created by shuzheng on 2017/3/26.
*/
@Controller
@RequestMapping(value = "/news")
public class NewsController extends BaseController {
private static Logger _log = LoggerFactory.getLogger(NewsController.class);
@RequestMapping(value = "", method = RequestMethod.GET)
public String index(Model model) {
return thymeleaf("/news/index");
}
}

View File

@ -0,0 +1,39 @@
package com.zheng.cms.web.controller;
import com.zheng.cms.dao.model.CmsPage;
import com.zheng.cms.dao.model.CmsPageExample;
import com.zheng.cms.rpc.api.CmsPageService;
import com.zheng.common.base.BaseController;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
/**
* 单页控制器
* Created by shuzheng on 2017/3/26.
*/
@Controller
@RequestMapping(value = "/page")
public class PageController extends BaseController {
private static Logger _log = LoggerFactory.getLogger(PageController.class);
@Autowired
private CmsPageService cmsPageService;
@RequestMapping(value = "/{alias}", method = RequestMethod.GET)
public String index(@PathVariable("alias") String alias, Model model) {
CmsPageExample cmsPageExample = new CmsPageExample();
cmsPageExample.createCriteria()
.andAliasEqualTo(alias);
CmsPage page = cmsPageService.selectFirstByExampleWithBLOBs(cmsPageExample);
model.addAttribute("page", page);
return thymeleaf("/page/index");
}
}

View File

@ -0,0 +1,26 @@
package com.zheng.cms.web.controller;
import com.zheng.common.base.BaseController;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
/**
* 问答首页控制器
* Created by shuzheng on 2017/3/26.
*/
@Controller
@RequestMapping(value = "/qa")
public class QaController extends BaseController {
private static Logger _log = LoggerFactory.getLogger(QaController.class);
@RequestMapping(value = "", method = RequestMethod.GET)
public String index(Model model) {
return thymeleaf("/qa/index");
}
}

View File

@ -0,0 +1,66 @@
package com.zheng.cms.web.controller;
import com.zheng.cms.dao.model.CmsArticle;
import com.zheng.cms.dao.model.CmsArticleExample;
import com.zheng.cms.dao.model.CmsTag;
import com.zheng.cms.dao.model.CmsTagExample;
import com.zheng.cms.rpc.api.CmsArticleService;
import com.zheng.cms.rpc.api.CmsTagService;
import com.zheng.common.base.BaseController;
import com.zheng.common.util.Paginator;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
/**
* 搜索控制器
* Created by shuzheng on 2017/3/26.
*/
@Controller
@RequestMapping(value = "/search")
public class SearchController extends BaseController {
private static Logger _log = LoggerFactory.getLogger(SearchController.class);
@Autowired
private CmsArticleService cmsArticleService;
@RequestMapping(value = "/{keyword}", method = RequestMethod.GET)
public String index(@PathVariable("keyword") String keyword,
@RequestParam(required = false, defaultValue = "1", value = "page") int page,
@RequestParam(required = false, defaultValue = "orders", value = "sort") String sort,
@RequestParam(required = false, defaultValue = "desc", value = "order") String order,
HttpServletRequest request,
Model model) {
// 该关键字文章列表
int rows = 10;
CmsArticleExample cmsArticleExample = new CmsArticleExample();
cmsArticleExample.createCriteria()
.andStatusEqualTo((byte) 1)
.andTitleLike(keyword);
cmsArticleExample.setOffset((page - 1) * rows);
cmsArticleExample.setLimit(rows);
if (!StringUtils.isBlank(sort) && !StringUtils.isBlank(order)) {
cmsArticleExample.setOrderByClause(sort + " " + order);
}
List<CmsArticle> articles = cmsArticleService.selectByExample(cmsArticleExample);
model.addAttribute("articles", articles);
// 文章总数
long total = cmsArticleService.countByExample(cmsArticleExample);
// 分页
Paginator paginator = new Paginator(total, page, rows, request);
model.addAttribute("paginator", paginator);
return thymeleaf("/search/index");
}
}

View File

@ -0,0 +1,73 @@
package com.zheng.cms.web.controller;
import com.zheng.cms.dao.model.*;
import com.zheng.cms.rpc.api.CmsArticleService;
import com.zheng.cms.rpc.api.CmsCategoryService;
import com.zheng.cms.rpc.api.CmsTagService;
import com.zheng.cms.rpc.api.CmsTopicService;
import com.zheng.common.base.BaseController;
import com.zheng.common.util.Paginator;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
/**
* 标签控制器
* Created by shuzheng on 2017/3/26.
*/
@Controller
@RequestMapping(value = "/tag")
public class TagController extends BaseController {
private static Logger _log = LoggerFactory.getLogger(TagController.class);
@Autowired
private CmsTagService cmsTagService;
@Autowired
private CmsArticleService cmsArticleService;
@RequestMapping(value = "/{alias}", method = RequestMethod.GET)
public String index(@PathVariable("alias") String alias,
@RequestParam(required = false, defaultValue = "1", value = "page") int page,
@RequestParam(required = false, defaultValue = "orders", value = "sort") String sort,
@RequestParam(required = false, defaultValue = "desc", value = "order") String order,
HttpServletRequest request,
Model model) {
// 当前标签
CmsTagExample cmsTagExample = new CmsTagExample();
cmsTagExample.createCriteria()
.andAliasEqualTo(alias);
CmsTag tag = cmsTagService.selectFirstByExample(cmsTagExample);
model.addAttribute("tag", tag);
// 该标签文章列表
int rows = 10;
CmsArticleExample cmsArticleExample = new CmsArticleExample();
cmsArticleExample.createCriteria()
.andStatusEqualTo((byte) 1);
cmsArticleExample.setOffset((page - 1) * rows);
cmsArticleExample.setLimit(rows);
if (!StringUtils.isBlank(sort) && !StringUtils.isBlank(order)) {
cmsArticleExample.setOrderByClause(sort + " " + order);
}
List<CmsArticle> articles = cmsArticleService.selectByExample(cmsArticleExample);
model.addAttribute("articles", articles);
// 文章总数
long total = cmsArticleService.countByExample(cmsArticleExample);
// 分页
Paginator paginator = new Paginator(total, page, rows, request);
model.addAttribute("paginator", paginator);
return thymeleaf("/tag/index");
}
}

View File

@ -0,0 +1,61 @@
package com.zheng.cms.web.controller;
import com.zheng.cms.dao.model.CmsTopic;
import com.zheng.cms.dao.model.CmsTopicExample;
import com.zheng.cms.rpc.api.CmsTopicService;
import com.zheng.common.base.BaseController;
import com.zheng.common.util.Paginator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
/**
* 专题首页控制器
* Created by shuzheng on 2017/3/26.
*/
@Controller
@RequestMapping(value = "/topic")
public class TopicController extends BaseController {
private static Logger _log = LoggerFactory.getLogger(TopicController.class);
@Autowired
private CmsTopicService cmsTopicService;
@RequestMapping(value = "/list", method = RequestMethod.GET)
public String list(
@RequestParam(required = false, defaultValue = "1", value = "page") int page,
HttpServletRequest request,
Model model) {
// 专题列表
int rows = 10;
CmsTopicExample cmsTopicExample = new CmsTopicExample();
cmsTopicExample.setOffset((page - 1) * rows);
cmsTopicExample.setLimit(rows);
List<CmsTopic> topics = cmsTopicService.selectByExample(cmsTopicExample);
model.addAttribute("topics", topics);
// 文章总数
long total = cmsTopicService.countByExample(cmsTopicExample);
// 分页
Paginator paginator = new Paginator(total, page, rows, request);
model.addAttribute("paginator", paginator);
return thymeleaf("/topic/list");
}
@RequestMapping(value = "{topicId}", method = RequestMethod.GET)
public String index(@PathVariable("topicId") int topicId, Model model) {
CmsTopic topic = cmsTopicService.selectByPrimaryKey(topicId);
model.addAttribute("topic", topic);
return thymeleaf("/topic/index");
}
}

View File

@ -0,0 +1,62 @@
package com.zheng.cms.web.interceptor;
import com.zheng.cms.dao.model.CmsMenu;
import com.zheng.cms.dao.model.CmsMenuExample;
import com.zheng.cms.rpc.api.CmsMenuService;
import com.zheng.common.util.PropertiesFileUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
* 公共拦截器
* Created by shuzheng on 2017/3/25.
*/
public class CmsWebInterceptor extends HandlerInterceptorAdapter {
private static Logger _log = LoggerFactory.getLogger(CmsWebInterceptor.class);
@Autowired
private CmsMenuService cmsMenuService;
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// 过滤ajax
if (null != request.getHeader("X-Requested-With") && request.getHeader("X-Requested-With").equalsIgnoreCase("XMLHttpRequest")) {
return true;
}
// zheng-ui静态资源配置信息
String appName = PropertiesFileUtil.getInstance().get("app.name");
String uiPath = PropertiesFileUtil.getInstance().get("zheng-ui.path");
request.setAttribute("appName", appName);
request.setAttribute("uiPath", uiPath);
// 菜单
CmsMenuExample cmsMenuExample = new CmsMenuExample();
cmsMenuExample.setOrderByClause("orders asc");
List<CmsMenu> menus = cmsMenuService.selectByExample(cmsMenuExample);
request.setAttribute("menus", menus);
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
super.postHandle(request, response, handler, modelAndView);
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
super.afterCompletion(request, response, handler, ex);
}
@Override
public void afterConcurrentHandlingStarted(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
super.afterConcurrentHandlingStarted(request, response, handler);
}
}

View File

@ -11,6 +11,15 @@
<!-- 根目录'/'对应页面 --> <!-- 根目录'/'对应页面 -->
<mvc:view-controller path="/" view-name="/index.jsp"/> <mvc:view-controller path="/" view-name="/index.jsp"/>
<!-- 拦截器 -->
<mvc:interceptors>
<!-- 公共拦截器 -->
<mvc:interceptor>
<mvc:mapping path="/**"/>
<bean class="com.zheng.cms.web.interceptor.CmsWebInterceptor"></bean>
</mvc:interceptor>
</mvc:interceptors>
<context:property-placeholder location="classpath:config.properties"/> <context:property-placeholder location="classpath:config.properties"/>
<!-- 使用thymeleaf视图 --> <!-- 使用thymeleaf视图 -->

View File

@ -1,151 +0,0 @@
<%@ page contentType="text/html; charset=utf-8"%>
<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
<%@ taglib uri="http://www.springframework.org/tags" prefix="spring"%>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<c:set var="basePath" value="${pageContext.request.contextPath}"/>
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8"/>
<title>首页 - ZhengCms</title>
<meta name="keywords" content=""/>
<meta name="description" content=""/>
<meta name="renderer" content="webkit"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<link rel="shortcut icon" href="${basePath}/resources/favicon.ico"/>
<link rel="stylesheet" href="${basePath}/resources/css/bootstrap.min.css"/>
<!--[if lt IE 9]>
<script src="${basePath}/resources/js/vendor/html5shiv.js"></script>
<script src="${basePath}/resources/js/vendor/respond.min.js"></script>
<![endif]-->
<script type="text/javascript">
if (/msie [6|7|8]/i.test(navigator.userAgent)) {};
</script>
<link rel="stylesheet" href="${basePath}/resources/css/main.css"/>
</head>
<body>
<!-- .navbar -->
<nav class="navbar navbar-inverse navbar-fixed-top"><!--navbar-inverse-->
<div class="container">
<!-- navbar-header -->
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#nav-menu">
<span class="sr-only">切换菜单</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="${basePath}/" title="zhengCMS"><span id="logo-text-left">zheng</span><span id="logo-text-right">CMS</span></a>
<p class="navbar-text hidden-sm">最简约的内容管理系统</p>
</div>
<!-- /.navbar-header -->
<!-- navbar-collapse -->
<div class="collapse navbar-collapse" id="nav-menu">
<ul class="nav navbar-nav">
<li class="active"><a href="${basePath}/">首页</a>
<c:forEach var="menu" items="${menus}">
<c:if test="${menu.pid==null}">
<li><a href="<c:url value="${menu.url}"/>" target="${menu.target}" class="dropdown-toggle" data-toggle="dropdown">${menu.name}</a>
<ul class="dropdown-menu" role="menu">
<c:forEach var="subMenu" items="${menus}">
<c:if test="${menu.menuId==subMenu.pid}">
<li><a href="<c:url value="${subMenu.url}"/>" target="${subMenu.target}">${subMenu.name}</a></li>
</c:if>
</c:forEach>
</ul>
</li>
</c:if>
</c:forEach>
</ul>
<ul class="nav navbar-right navbar-nav">
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><span class="glyphicon glyphicon-search"></span></a>
<ul class="dropdown-menu">
<form id="search-form" class="form-inline">
<div class="input-group">
<input id="keywords" type="text" name="keywords" class="form-control" placeholder="搜索"/>
<div class="input-group-btn">
<button type="submit" class="btn btn-default"><span class="glyphicon glyphicon-search"></span></button>
</div>
</div>
</form>
</ul>
</li>
<!--<li><a href="#">登录</a></li>
<li><a href="#">注册</a></li>-->
<li id="messages" class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
<span class="glyphicon glyphicon-bell"></span>
<span class="badge bg-important">5</span>
</a>
<ul class="dropdown-menu">
<li><a href="#"><span class="glyphicon glyphicon-envelope"></span> 我的私信(<span class="msg-txt">1</span>)</a></li>
<li><a href="#"><span class="glyphicon glyphicon-volume-up"></span> 系统消息(<span class="msg-txt">4</span>)</a></li>
</ul>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
<span class="glyphicon glyphicon-user"></span>
<span class="caret"></span>
</a>
<ul class="dropdown-menu">
<li><a href="#"><span class="glyphicon glyphicon-home"></span> 个人博客</a></li>
<li><a href="#"><span class="glyphicon glyphicon-question-sign"></span> 我的提问</a></li>
<li><a href="#"><span class="glyphicon glyphicon-ok-sign"></span> 我的回答</a></li>
<li><a href="#"><span class="glyphicon glyphicon-star"></span> 我的收藏</a></li>
<li class="divider"></li>
<li><a href="#"><span class="glyphicon glyphicon-cog"></span> 修改资料</a></li>
<li><a href="#"><span class="glyphicon glyphicon-lock"></span> 密码安全</a></li>
<li><a href="#"><span class="glyphicon glyphicon-log-out"></span> 安全退出</a></li>
</ul>
</li>
</ul>
</div>
<!-- /.navbar-collapse -->
</div>
</nav>
<!-- /.navbar -->
<!-- .container -->
<div class="container" style="min-height: 900px;">
<dl>
<dt>所有类目</dt>
<c:forEach var="category" items="${categories}">
<dd><a href="${basePath}/category-${category.alias}">${category.name}</a></dd>
</c:forEach>
</dl>
<dl>
<dt>所有标签</dt>
<c:forEach var="tag" items="${tags}">
<dd><a href="${basePath}/tag-${tag.alias}">${tag.name}</a></dd>
</c:forEach>
</dl>
</div>
<!-- /.container -->
<!-- footer -->
<footer class="container-fuild" style="background:#222;padding-top:20px;min-height:100px;">
<div class="container">
<div class="row">
<div class="col-xs-12 col-sm-6 col-md-4 col-lg-3">
</div>
<div class="col-xs-12 col-sm-6 col-md-4 col-lg-3">
</div>
<div class="col-xs-12 col-sm-6 col-md-4 col-lg-3">
</div>
<div class="col-xs-12 col-sm-6 col-md-4 col-lg-3 hidden-md">
</div>
</div>
</div>
</footer>
<!-- /footer -->
<script src="${basePath}/resources/js/jquery-1.11.2.min.js"></script>
<script src="${basePath}/resources/js/bootstrap.min.js"></script>
<script src="${basePath}/resources/js/main.js"></script>
</body>
</html>

View File

@ -0,0 +1,106 @@
<!DOCTYPE html>
<html lang="zh-CN" xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3">
<head>
<meta charset="utf-8"/>
<title th:text="${article.title} + ' - ZhengCms'">标题 - ZhengCms</title>
<meta name="keywords" content=""/>
<meta name="description" content=""/>
<meta name="renderer" content="webkit"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<link rel="shortcut icon" href="../favicon.ico" th:href="@{${uiPath} + ${appName} + '/favicon.ico'}"/>
<link rel="stylesheet" href="../css/bootstrap.min.css" th:href="@{${uiPath} + ${appName} + '/css/bootstrap.min.css'}"/>
<!--[if lt IE 9]>
<script src="../js/vendor/html5shiv.js" th:src="@{${uiPath} + ${appName} + '/js/vendor/html5shiv.js'}"></script>
<script src="../js/vendor/respond.min.js" th:src="@{${uiPath} + ${appName} + '/js/vendor/respond.min.js'}"></script>
<![endif]-->
<script type="text/javascript">
if (/msie [6|7|8]/i.test(navigator.userAgent)) {};
</script>
<link rel="stylesheet" href="../css/main.css" th:href="@{${uiPath} + ${appName} + '/css/main.css'}"/>
</head>
<body>
<!-- .navbar -->
<nav class="navbar navbar-inverse navbar-fixed-top"><!--navbar-inverse-->
<div class="container">
<!-- navbar-header -->
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#nav-menu">
<span class="sr-only">切换菜单</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="../index.html" th:href="@{/}" title="zhengCMS"><span id="logo-text-left">zheng</span><span id="logo-text-right">CMS</span></a>
<p class="navbar-text hidden-sm">最简约的内容管理系统</p>
</div>
<!-- /.navbar-header -->
<!-- navbar-collapse -->
<div class="collapse navbar-collapse" id="nav-menu">
<ul class="nav navbar-nav">
<li th:each="menu : ${menus}" th:if="${menu.pid} == null"><a th:href="@{${menu.url}}" th:target="${menu.target}" th:text="${menu.name}">菜单</a></li>
</ul>
<ul class="nav navbar-right navbar-nav">
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><span class="glyphicon glyphicon-search"></span></a>
<ul class="dropdown-menu">
<form id="search-form" class="form-inline">
<div class="input-group">
<input id="keywords" type="text" name="keywords" class="form-control" placeholder="搜索"/>
<div class="input-group-btn">
<button type="submit" class="btn btn-default"><span class="glyphicon glyphicon-search"></span></button>
</div>
</div>
</form>
</ul>
</li>
<li><a href="login.html">登录</a></li>
<li><a href="reg.html">注册</a></li>
<li id="messages" class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
<span class="glyphicon glyphicon-bell"></span>
<span class="badge bg-important">5</span>
</a>
<ul class="dropdown-menu">
<li><a href="home/letter.html"><span class="glyphicon glyphicon-envelope"></span> 我的私信(<span class="msg-txt">1</span>)</a></li>
<li><a href="home/message.html"><span class="glyphicon glyphicon-volume-up"></span> 系统消息(<span class="msg-txt">4</span>)</a></li>
</ul>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
<span class="glyphicon glyphicon-user"></span>
<span class="caret"></span>
</a>
<ul class="dropdown-menu">
<li><a href="home/index.html"><span class="glyphicon glyphicon-home"></span> 个人博客</a></li>
<li><a href="home/question.html"><span class="glyphicon glyphicon-question-sign"></span> 我的提问</a></li>
<li><a href="home/answer.html"><span class="glyphicon glyphicon-ok-sign"></span> 我的回答</a></li>
<li><a href="home/collection.html"><span class="glyphicon glyphicon-star"></span> 我的收藏</a></li>
<li class="divider"></li>
<li><a href="setting/info.html"><span class="glyphicon glyphicon-cog"></span> 修改资料</a></li>
<li><a href="setting/password.html"><span class="glyphicon glyphicon-lock"></span> 密码安全</a></li>
<li><a href="logout.html"><span class="glyphicon glyphicon-log-out"></span> 安全退出</a></li>
</ul>
</li>
</ul>
</div>
<!-- /.navbar-collapse -->
</div>
</nav>
<!-- /.navbar -->
<!-- .container -->
<div class="container" style="padding-bottom:80px;">
<h3 th:text="${article.title}">标题</h3>
<div th:utext="${article.content}">内容</div>
</div>
<!-- /.container -->
<!-- footer -->
<footer class="container-fuild text-center" style="position:fixed;bottom:0;width:100%;background:#eee;padding:20px 0;">
Copyright &copy; 2017 ZhangShuzheng All Rights Reserved
</footer>
<!-- /footer -->
<script src="../js/jquery-1.11.2.min.js" th:src="@{${uiPath} + ${appName} + '/js/jquery-1.11.2.min.js'}"></script>
<script src="../js/bootstrap.min.js" th:src="@{${uiPath} + ${appName} + '/js/bootstrap.min.js'}"></script>
<script src="../js/main.js" th:src="@{${uiPath} + ${appName} + '/js/main.js'}"></script>
</body>
</html>

View File

@ -0,0 +1,105 @@
<!DOCTYPE html>
<html lang="zh-CN" xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3">
<head>
<meta charset="utf-8"/>
<title>博客首页 - ZhengCms</title>
<meta name="keywords" content=""/>
<meta name="description" content=""/>
<meta name="renderer" content="webkit"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<link rel="shortcut icon" href="../favicon.ico" th:href="@{${uiPath} + ${appName} + '/favicon.ico'}"/>
<link rel="stylesheet" href="../css/bootstrap.min.css" th:href="@{${uiPath} + ${appName} + '/css/bootstrap.min.css'}"/>
<!--[if lt IE 9]>
<script src="../js/vendor/html5shiv.js" th:src="@{${uiPath} + ${appName} + '/js/vendor/html5shiv.js'}"></script>
<script src="../js/vendor/respond.min.js" th:src="@{${uiPath} + ${appName} + '/js/vendor/respond.min.js'}"></script>
<![endif]-->
<script type="text/javascript">
if (/msie [6|7|8]/i.test(navigator.userAgent)) {};
</script>
<link rel="stylesheet" href="../css/main.css" th:href="@{${uiPath} + ${appName} + '/css/main.css'}"/>
</head>
<body>
<!-- .navbar -->
<nav class="navbar navbar-inverse navbar-fixed-top"><!--navbar-inverse-->
<div class="container">
<!-- navbar-header -->
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#nav-menu">
<span class="sr-only">切换菜单</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="../index.html" th:href="@{/}" title="zhengCMS"><span id="logo-text-left">zheng</span><span id="logo-text-right">CMS</span></a>
<p class="navbar-text hidden-sm">最简约的内容管理系统</p>
</div>
<!-- /.navbar-header -->
<!-- navbar-collapse -->
<div class="collapse navbar-collapse" id="nav-menu">
<ul class="nav navbar-nav">
<li th:each="menu : ${menus}" th:if="${menu.pid} == null"><a th:href="@{${menu.url}}" th:target="${menu.target}" th:text="${menu.name}">菜单</a></li>
</ul>
<ul class="nav navbar-right navbar-nav">
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><span class="glyphicon glyphicon-search"></span></a>
<ul class="dropdown-menu">
<form id="search-form" class="form-inline">
<div class="input-group">
<input id="keywords" type="text" name="keywords" class="form-control" placeholder="搜索"/>
<div class="input-group-btn">
<button type="submit" class="btn btn-default"><span class="glyphicon glyphicon-search"></span></button>
</div>
</div>
</form>
</ul>
</li>
<li><a href="login.html">登录</a></li>
<li><a href="reg.html">注册</a></li>
<li id="messages" class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
<span class="glyphicon glyphicon-bell"></span>
<span class="badge bg-important">5</span>
</a>
<ul class="dropdown-menu">
<li><a href="home/letter.html"><span class="glyphicon glyphicon-envelope"></span> 我的私信(<span class="msg-txt">1</span>)</a></li>
<li><a href="home/message.html"><span class="glyphicon glyphicon-volume-up"></span> 系统消息(<span class="msg-txt">4</span>)</a></li>
</ul>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
<span class="glyphicon glyphicon-user"></span>
<span class="caret"></span>
</a>
<ul class="dropdown-menu">
<li><a href="home/index.html"><span class="glyphicon glyphicon-home"></span> 个人博客</a></li>
<li><a href="home/question.html"><span class="glyphicon glyphicon-question-sign"></span> 我的提问</a></li>
<li><a href="home/answer.html"><span class="glyphicon glyphicon-ok-sign"></span> 我的回答</a></li>
<li><a href="home/collection.html"><span class="glyphicon glyphicon-star"></span> 我的收藏</a></li>
<li class="divider"></li>
<li><a href="setting/info.html"><span class="glyphicon glyphicon-cog"></span> 修改资料</a></li>
<li><a href="setting/password.html"><span class="glyphicon glyphicon-lock"></span> 密码安全</a></li>
<li><a href="logout.html"><span class="glyphicon glyphicon-log-out"></span> 安全退出</a></li>
</ul>
</li>
</ul>
</div>
<!-- /.navbar-collapse -->
</div>
</nav>
<!-- /.navbar -->
<!-- .container -->
<div class="container" style="padding-bottom:80px;">
博客首页
</div>
<!-- /.container -->
<!-- footer -->
<footer class="container-fuild text-center" style="position:fixed;bottom:0;width:100%;background:#eee;padding:20px 0;">
Copyright &copy; 2017 ZhangShuzheng All Rights Reserved
</footer>
<!-- /footer -->
<script src="../js/jquery-1.11.2.min.js" th:src="@{${uiPath} + ${appName} + '/js/jquery-1.11.2.min.js'}"></script>
<script src="../js/bootstrap.min.js" th:src="@{${uiPath} + ${appName} + '/js/bootstrap.min.js'}"></script>
<script src="../js/main.js" th:src="@{${uiPath} + ${appName} + '/js/main.js'}"></script>
</body>
</html>

View File

@ -0,0 +1,109 @@
<!DOCTYPE html>
<html lang="zh-CN" xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3">
<head>
<meta charset="utf-8"/>
<title th:text="${category.name} + ' - ZhengCms'">类目 - ZhengCms</title>
<meta name="keywords" content=""/>
<meta name="description" content=""/>
<meta name="renderer" content="webkit"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<link rel="shortcut icon" href="../favicon.ico" th:href="@{${uiPath} + ${appName} + '/favicon.ico'}"/>
<link rel="stylesheet" href="../css/bootstrap.min.css" th:href="@{${uiPath} + ${appName} + '/css/bootstrap.min.css'}"/>
<!--[if lt IE 9]>
<script src="../js/vendor/html5shiv.js" th:src="@{${uiPath} + ${appName} + '/js/vendor/html5shiv.js'}"></script>
<script src="../js/vendor/respond.min.js" th:src="@{${uiPath} + ${appName} + '/js/vendor/respond.min.js'}"></script>
<![endif]-->
<script type="text/javascript">
if (/msie [6|7|8]/i.test(navigator.userAgent)) {};
</script>
<link rel="stylesheet" href="../css/main.css" th:href="@{${uiPath} + ${appName} + '/css/main.css'}"/>
</head>
<body>
<!-- .navbar -->
<nav class="navbar navbar-inverse navbar-fixed-top"><!--navbar-inverse-->
<div class="container">
<!-- navbar-header -->
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#nav-menu">
<span class="sr-only">切换菜单</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="../index.html" th:href="@{/}" title="zhengCMS"><span id="logo-text-left">zheng</span><span id="logo-text-right">CMS</span></a>
<p class="navbar-text hidden-sm">最简约的内容管理系统</p>
</div>
<!-- /.navbar-header -->
<!-- navbar-collapse -->
<div class="collapse navbar-collapse" id="nav-menu">
<ul class="nav navbar-nav">
<li th:each="menu : ${menus}" th:if="${menu.pid} == null"><a th:href="@{${menu.url}}" th:target="${menu.target}" th:text="${menu.name}">菜单</a></li>
</ul>
<ul class="nav navbar-right navbar-nav">
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><span class="glyphicon glyphicon-search"></span></a>
<ul class="dropdown-menu">
<form id="search-form" class="form-inline">
<div class="input-group">
<input id="keywords" type="text" name="keywords" class="form-control" placeholder="搜索"/>
<div class="input-group-btn">
<button type="submit" class="btn btn-default"><span class="glyphicon glyphicon-search"></span></button>
</div>
</div>
</form>
</ul>
</li>
<li><a href="login.html">登录</a></li>
<li><a href="reg.html">注册</a></li>
<li id="messages" class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
<span class="glyphicon glyphicon-bell"></span>
<span class="badge bg-important">5</span>
</a>
<ul class="dropdown-menu">
<li><a href="home/letter.html"><span class="glyphicon glyphicon-envelope"></span> 我的私信(<span class="msg-txt">1</span>)</a></li>
<li><a href="home/message.html"><span class="glyphicon glyphicon-volume-up"></span> 系统消息(<span class="msg-txt">4</span>)</a></li>
</ul>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
<span class="glyphicon glyphicon-user"></span>
<span class="caret"></span>
</a>
<ul class="dropdown-menu">
<li><a href="home/index.html"><span class="glyphicon glyphicon-home"></span> 个人博客</a></li>
<li><a href="home/question.html"><span class="glyphicon glyphicon-question-sign"></span> 我的提问</a></li>
<li><a href="home/answer.html"><span class="glyphicon glyphicon-ok-sign"></span> 我的回答</a></li>
<li><a href="home/collection.html"><span class="glyphicon glyphicon-star"></span> 我的收藏</a></li>
<li class="divider"></li>
<li><a href="setting/info.html"><span class="glyphicon glyphicon-cog"></span> 修改资料</a></li>
<li><a href="setting/password.html"><span class="glyphicon glyphicon-lock"></span> 密码安全</a></li>
<li><a href="logout.html"><span class="glyphicon glyphicon-log-out"></span> 安全退出</a></li>
</ul>
</li>
</ul>
</div>
<!-- /.navbar-collapse -->
</div>
</nav>
<!-- /.navbar -->
<!-- .container -->
<div class="container" style="padding-bottom:80px;">
<dl>
<dt><span th:text="${category.name}">类目</span>文章列表</dt>
<dd th:each="article : ${articles}"><a href="../article/index.html" th:href="@{'/article/' + ${article.articleId}}" th:text="${article.title}">文章标题</a></dd>
</dl>
<div th:utext="${paginator.html}"></div>
</div>
<!-- /.container -->
<!-- footer -->
<footer class="container-fuild text-center" style="position:fixed;bottom:0;width:100%;background:#eee;padding:20px 0;">
Copyright &copy; 2017 ZhangShuzheng All Rights Reserved
</footer>
<!-- /footer -->
<script src="../js/jquery-1.11.2.min.js" th:src="@{${uiPath} + ${appName} + '/js/jquery-1.11.2.min.js'}"></script>
<script src="../js/bootstrap.min.js" th:src="@{${uiPath} + ${appName} + '/js/bootstrap.min.js'}"></script>
<script src="../js/main.js" th:src="@{${uiPath} + ${appName} + '/js/main.js'}"></script>
</body>
</html>

View File

@ -1,8 +0,0 @@
<%@ page contentType="text/html; charset=utf-8"%>
<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
<%@ taglib uri="http://www.springframework.org/tags" prefix="spring"%>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<c:set var="basePath" value="${pageContext.request.contextPath}"/>
<script>var BASE_PATH = '${basePath}';</script>

View File

@ -1,7 +0,0 @@
<%@ page contentType="text/html; charset=utf-8"%>
<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
<%@ taglib uri="http://www.springframework.org/tags" prefix="spring"%>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<c:set var="basePath" value="${pageContext.request.contextPath}"/>

View File

@ -8,16 +8,16 @@
<meta name="renderer" content="webkit"/> <meta name="renderer" content="webkit"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge"/> <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/> <meta name="viewport" content="width=device-width, initial-scale=1"/>
<link rel="shortcut icon" href="http://ui.zhangshuzheng.cn:1000/zheng-cms-web/favicon.ico"/> <link rel="shortcut icon" href="favicon.ico" th:href="@{${uiPath} + ${appName} + '/favicon.ico'}"/>
<link rel="stylesheet" href="http://ui.zhangshuzheng.cn:1000/zheng-cms-web/css/bootstrap.min.css"/> <link rel="stylesheet" href="css/bootstrap.min.css" th:href="@{${uiPath} + ${appName} + '/css/bootstrap.min.css'}"/>
<!--[if lt IE 9]> <!--[if lt IE 9]>
<script src="http://ui.zhangshuzheng.cn:1000/zheng-cms-web/js/vendor/html5shiv.js"></script> <script src="js/vendor/html5shiv.js" th:src="@{${uiPath} + ${appName} + '/js/vendor/html5shiv.js'}"></script>
<script src="http://ui.zhangshuzheng.cn:1000/zheng-cms-web/js/vendor/respond.min.js"></script> <script src="js/vendor/respond.min.js" th:src="@{${uiPath} + ${appName} + '/js/vendor/respond.min.js'}"></script>
<![endif]--> <![endif]-->
<script type="text/javascript"> <script type="text/javascript">
if (/msie [6|7|8]/i.test(navigator.userAgent)) {}; if (/msie [6|7|8]/i.test(navigator.userAgent)) {};
</script> </script>
<link rel="stylesheet" href="http://ui.zhangshuzheng.cn:1000/zheng-cms-web/css/main.css"/> <link rel="stylesheet" href="css/main.css" th:href="@{${uiPath} + ${appName} + '/css/main.css'}"/>
</head> </head>
<body> <body>
<!-- .navbar --> <!-- .navbar -->
@ -38,20 +38,7 @@
<!-- navbar-collapse --> <!-- navbar-collapse -->
<div class="collapse navbar-collapse" id="nav-menu"> <div class="collapse navbar-collapse" id="nav-menu">
<ul class="nav navbar-nav"> <ul class="nav navbar-nav">
<li class="active"><a href="index.html" th:href="@{/}">首页13</a> <li th:each="menu : ${menus}" th:if="${menu.pid} == null"><a th:href="@{${menu.url}}" th:target="${menu.target}" th:text="${menu.name}">菜单</a></li>
<c:forEach var="menu" items="${menus}">
<c:if test="${menu.pid==null}">
<li><a href="<c:url value="${menu.url}"/>" target="${menu.target}" class="dropdown-toggle" data-toggle="dropdown">${menu.name}</a>
<ul class="dropdown-menu" role="menu">
<c:forEach var="subMenu" items="${menus}">
<c:if test="${menu.menuId==subMenu.pid}">
<li><a href="<c:url value="${subMenu.url}"/>" target="${subMenu.target}">${subMenu.name}</a></li>
</c:if>
</c:forEach>
</ul>
</li>
</c:if>
</c:forEach>
</ul> </ul>
<ul class="nav navbar-right navbar-nav"> <ul class="nav navbar-right navbar-nav">
<li class="dropdown"> <li class="dropdown">
@ -67,16 +54,16 @@
</form> </form>
</ul> </ul>
</li> </li>
<!--<li><a href="#">登录</a></li> <li><a href="login.html">登录</a></li>
<li><a href="#">注册</a></li>--> <li><a href="reg.html">注册</a></li>
<li id="messages" class="dropdown"> <li id="messages" class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown"> <a href="#" class="dropdown-toggle" data-toggle="dropdown">
<span class="glyphicon glyphicon-bell"></span> <span class="glyphicon glyphicon-bell"></span>
<span class="badge bg-important">5</span> <span class="badge bg-important">5</span>
</a> </a>
<ul class="dropdown-menu"> <ul class="dropdown-menu">
<li><a href="#"><span class="glyphicon glyphicon-envelope"></span> 我的私信(<span class="msg-txt">1</span>)</a></li> <li><a href="home/letter.html"><span class="glyphicon glyphicon-envelope"></span> 我的私信(<span class="msg-txt">1</span>)</a></li>
<li><a href="#"><span class="glyphicon glyphicon-volume-up"></span> 系统消息(<span class="msg-txt">4</span>)</a></li> <li><a href="home/message.html"><span class="glyphicon glyphicon-volume-up"></span> 系统消息(<span class="msg-txt">4</span>)</a></li>
</ul> </ul>
</li> </li>
<li class="dropdown"> <li class="dropdown">
@ -85,14 +72,14 @@
<span class="caret"></span> <span class="caret"></span>
</a> </a>
<ul class="dropdown-menu"> <ul class="dropdown-menu">
<li><a href="#"><span class="glyphicon glyphicon-home"></span> 个人博客</a></li> <li><a href="home/index.html"><span class="glyphicon glyphicon-home"></span> 个人博客</a></li>
<li><a href="#"><span class="glyphicon glyphicon-question-sign"></span> 我的提问</a></li> <li><a href="home/question.html"><span class="glyphicon glyphicon-question-sign"></span> 我的提问</a></li>
<li><a href="#"><span class="glyphicon glyphicon-ok-sign"></span> 我的回答</a></li> <li><a href="home/answer.html"><span class="glyphicon glyphicon-ok-sign"></span> 我的回答</a></li>
<li><a href="#"><span class="glyphicon glyphicon-star"></span> 我的收藏</a></li> <li><a href="home/collection.html"><span class="glyphicon glyphicon-star"></span> 我的收藏</a></li>
<li class="divider"></li> <li class="divider"></li>
<li><a href="#"><span class="glyphicon glyphicon-cog"></span> 修改资料</a></li> <li><a href="setting/info.html"><span class="glyphicon glyphicon-cog"></span> 修改资料</a></li>
<li><a href="#"><span class="glyphicon glyphicon-lock"></span> 密码安全</a></li> <li><a href="setting/password.html"><span class="glyphicon glyphicon-lock"></span> 密码安全</a></li>
<li><a href="#"><span class="glyphicon glyphicon-log-out"></span> 安全退出</a></li> <li><a href="logout.html"><span class="glyphicon glyphicon-log-out"></span> 安全退出</a></li>
</ul> </ul>
</li> </li>
</ul> </ul>
@ -102,43 +89,36 @@
</nav> </nav>
<!-- /.navbar --> <!-- /.navbar -->
<!-- .container --> <!-- .container -->
<div class="container" style="min-height: 900px;"> <div class="container" style="padding-bottom:80px;">
<dl> <dl>
<dt>所有类目</dt> <dt>所有类目</dt>
<c:forEach var="category" items="${categories}"> <dd th:each="category : ${categories}"><a href="category/index.html" th:href="@{'/category/' + ${category.alias}}" th:text="${category.name}">类目</a></dd>
<dd><a href="category.html" th:href="@{/}">${category.name}</a></dd>
</c:forEach>
</dl> </dl>
<dl> <dl>
<dt>所有标签</dt> <dt>所有标签</dt>
<c:forEach var="tag" items="${tags}"> <dd th:each="tag : ${tags}"><a href="tag/index.html" th:href="@{'/tag/' + ${tag.alias}}" th:text="${tag.name}">标签</a></dd>
<dd><a href="${basePath}/tag-${tag.alias}">${tag.name}</a></dd> </dl>
</c:forEach> <dl>
<dt>最新5个专题</dt>
<dd th:each="topic : ${topics}"><a href="topic/index.html" th:href="@{${topic.url}}" th:text="${topic.title}">专题</a></dd>
</dl>
<dl>
<dt>最新5条文章</dt>
<dd th:each="newArticle : ${newArticles}"><a href="article/index.html" th:href="@{'/article/' + ${newArticle.articleId}}" th:text="${newArticle.title}">文章标题</a></dd>
</dl>
<dl>
<dt>最热5个文章</dt>
<dd th:each="hotArticle : ${hotArticles}"><a href="article/index.html" th:href="@{'/article/' + ${hotArticle.articleId}}" th:text="${hotArticle.title}">文章标题</a></dd>
</dl> </dl>
</div> </div>
<!-- /.container --> <!-- /.container -->
<!-- footer --> <!-- footer -->
<footer class="container-fuild" style="background:#222;padding-top:20px;min-height:100px;"> <footer class="container-fuild text-center" style="position:fixed;bottom:0;width:100%;background:#eee;padding:20px 0;">
<div class="container"> Copyright &copy; 2017 ZhangShuzheng All Rights Reserved
<div class="row">
<div class="col-xs-12 col-sm-6 col-md-4 col-lg-3">
</div>
<div class="col-xs-12 col-sm-6 col-md-4 col-lg-3">
</div>
<div class="col-xs-12 col-sm-6 col-md-4 col-lg-3">
</div>
<div class="col-xs-12 col-sm-6 col-md-4 col-lg-3 hidden-md">
</div>
</div>
</div>
</footer> </footer>
<!-- /footer --> <!-- /footer -->
<script src="http://ui.zhangshuzheng.cn:1000/zheng-cms-web/js/jquery-1.11.2.min.js"></script> <script src="js/jquery-1.11.2.min.js" th:src="@{${uiPath} + ${appName} + '/js/jquery-1.11.2.min.js'}"></script>
<script src="http://ui.zhangshuzheng.cn:1000/zheng-cms-web/js/bootstrap.min.js"></script> <script src="js/bootstrap.min.js" th:src="@{${uiPath} + ${appName} + '/js/bootstrap.min.js'}"></script>
<script src="http://ui.zhangshuzheng.cn:1000/zheng-cms-web/js/main.js"></script> <script src="js/main.js" th:src="@{${uiPath} + ${appName} + '/js/main.js'}"></script>
</body> </body>
</html> </html>

View File

@ -0,0 +1,105 @@
<!DOCTYPE html>
<html lang="zh-CN" xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3">
<head>
<meta charset="utf-8"/>
<title>资讯首页 - ZhengCms</title>
<meta name="keywords" content=""/>
<meta name="description" content=""/>
<meta name="renderer" content="webkit"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<link rel="shortcut icon" href="../favicon.ico" th:href="@{${uiPath} + ${appName} + '/favicon.ico'}"/>
<link rel="stylesheet" href="../css/bootstrap.min.css" th:href="@{${uiPath} + ${appName} + '/css/bootstrap.min.css'}"/>
<!--[if lt IE 9]>
<script src="../js/vendor/html5shiv.js" th:src="@{${uiPath} + ${appName} + '/js/vendor/html5shiv.js'}"></script>
<script src="../js/vendor/respond.min.js" th:src="@{${uiPath} + ${appName} + '/js/vendor/respond.min.js'}"></script>
<![endif]-->
<script type="text/javascript">
if (/msie [6|7|8]/i.test(navigator.userAgent)) {};
</script>
<link rel="stylesheet" href="../css/main.css" th:href="@{${uiPath} + ${appName} + '/css/main.css'}"/>
</head>
<body>
<!-- .navbar -->
<nav class="navbar navbar-inverse navbar-fixed-top"><!--navbar-inverse-->
<div class="container">
<!-- navbar-header -->
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#nav-menu">
<span class="sr-only">切换菜单</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="../index.html" th:href="@{/}" title="zhengCMS"><span id="logo-text-left">zheng</span><span id="logo-text-right">CMS</span></a>
<p class="navbar-text hidden-sm">最简约的内容管理系统</p>
</div>
<!-- /.navbar-header -->
<!-- navbar-collapse -->
<div class="collapse navbar-collapse" id="nav-menu">
<ul class="nav navbar-nav">
<li th:each="menu : ${menus}" th:if="${menu.pid} == null"><a th:href="@{${menu.url}}" th:target="${menu.target}" th:text="${menu.name}">菜单</a></li>
</ul>
<ul class="nav navbar-right navbar-nav">
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><span class="glyphicon glyphicon-search"></span></a>
<ul class="dropdown-menu">
<form id="search-form" class="form-inline">
<div class="input-group">
<input id="keywords" type="text" name="keywords" class="form-control" placeholder="搜索"/>
<div class="input-group-btn">
<button type="submit" class="btn btn-default"><span class="glyphicon glyphicon-search"></span></button>
</div>
</div>
</form>
</ul>
</li>
<li><a href="login.html">登录</a></li>
<li><a href="reg.html">注册</a></li>
<li id="messages" class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
<span class="glyphicon glyphicon-bell"></span>
<span class="badge bg-important">5</span>
</a>
<ul class="dropdown-menu">
<li><a href="home/letter.html"><span class="glyphicon glyphicon-envelope"></span> 我的私信(<span class="msg-txt">1</span>)</a></li>
<li><a href="home/message.html"><span class="glyphicon glyphicon-volume-up"></span> 系统消息(<span class="msg-txt">4</span>)</a></li>
</ul>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
<span class="glyphicon glyphicon-user"></span>
<span class="caret"></span>
</a>
<ul class="dropdown-menu">
<li><a href="home/index.html"><span class="glyphicon glyphicon-home"></span> 个人博客</a></li>
<li><a href="home/question.html"><span class="glyphicon glyphicon-question-sign"></span> 我的提问</a></li>
<li><a href="home/answer.html"><span class="glyphicon glyphicon-ok-sign"></span> 我的回答</a></li>
<li><a href="home/collection.html"><span class="glyphicon glyphicon-star"></span> 我的收藏</a></li>
<li class="divider"></li>
<li><a href="setting/info.html"><span class="glyphicon glyphicon-cog"></span> 修改资料</a></li>
<li><a href="setting/password.html"><span class="glyphicon glyphicon-lock"></span> 密码安全</a></li>
<li><a href="logout.html"><span class="glyphicon glyphicon-log-out"></span> 安全退出</a></li>
</ul>
</li>
</ul>
</div>
<!-- /.navbar-collapse -->
</div>
</nav>
<!-- /.navbar -->
<!-- .container -->
<div class="container" style="padding-bottom:80px;">
资讯首页
</div>
<!-- /.container -->
<!-- footer -->
<footer class="container-fuild text-center" style="position:fixed;bottom:0;width:100%;background:#eee;padding:20px 0;">
Copyright &copy; 2017 ZhangShuzheng All Rights Reserved
</footer>
<!-- /footer -->
<script src="../js/jquery-1.11.2.min.js" th:src="@{${uiPath} + ${appName} + '/js/jquery-1.11.2.min.js'}"></script>
<script src="../js/bootstrap.min.js" th:src="@{${uiPath} + ${appName} + '/js/bootstrap.min.js'}"></script>
<script src="../js/main.js" th:src="@{${uiPath} + ${appName} + '/js/main.js'}"></script>
</body>
</html>

View File

@ -0,0 +1,106 @@
<!DOCTYPE html>
<html lang="zh-CN" xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3">
<head>
<meta charset="utf-8"/>
<title th:text="${page.title} + ' - ZhengCms'">标题 - ZhengCms</title>
<meta name="keywords" content="关键字" th:content="${page.keywords}"/>
<meta name="description" content="描述" th:content="${page.description}"/>
<meta name="renderer" content="webkit"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<link rel="shortcut icon" href="../favicon.ico" th:href="@{${uiPath} + ${appName} + '/favicon.ico'}"/>
<link rel="stylesheet" href="../css/bootstrap.min.css" th:href="@{${uiPath} + ${appName} + '/css/bootstrap.min.css'}"/>
<!--[if lt IE 9]>
<script src="../js/vendor/html5shiv.js" th:src="@{${uiPath} + ${appName} + '/js/vendor/html5shiv.js'}"></script>
<script src="../js/vendor/respond.min.js" th:src="@{${uiPath} + ${appName} + '/js/vendor/respond.min.js'}"></script>
<![endif]-->
<script type="text/javascript">
if (/msie [6|7|8]/i.test(navigator.userAgent)) {};
</script>
<link rel="stylesheet" href="../css/main.css" th:href="@{${uiPath} + ${appName} + '/css/main.css'}"/>
</head>
<body>
<!-- .navbar -->
<nav class="navbar navbar-inverse navbar-fixed-top"><!--navbar-inverse-->
<div class="container">
<!-- navbar-header -->
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#nav-menu">
<span class="sr-only">切换菜单</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="../index.html" th:href="@{/}" title="zhengCMS"><span id="logo-text-left">zheng</span><span id="logo-text-right">CMS</span></a>
<p class="navbar-text hidden-sm">最简约的内容管理系统</p>
</div>
<!-- /.navbar-header -->
<!-- navbar-collapse -->
<div class="collapse navbar-collapse" id="nav-menu">
<ul class="nav navbar-nav">
<li th:each="menu : ${menus}" th:if="${menu.pid} == null"><a th:href="@{${menu.url}}" th:target="${menu.target}" th:text="${menu.name}">菜单</a></li>
</ul>
<ul class="nav navbar-right navbar-nav">
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><span class="glyphicon glyphicon-search"></span></a>
<ul class="dropdown-menu">
<form id="search-form" class="form-inline">
<div class="input-group">
<input id="keywords" type="text" name="keywords" class="form-control" placeholder="搜索"/>
<div class="input-group-btn">
<button type="submit" class="btn btn-default"><span class="glyphicon glyphicon-search"></span></button>
</div>
</div>
</form>
</ul>
</li>
<li><a href="login.html">登录</a></li>
<li><a href="reg.html">注册</a></li>
<li id="messages" class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
<span class="glyphicon glyphicon-bell"></span>
<span class="badge bg-important">5</span>
</a>
<ul class="dropdown-menu">
<li><a href="home/letter.html"><span class="glyphicon glyphicon-envelope"></span> 我的私信(<span class="msg-txt">1</span>)</a></li>
<li><a href="home/message.html"><span class="glyphicon glyphicon-volume-up"></span> 系统消息(<span class="msg-txt">4</span>)</a></li>
</ul>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
<span class="glyphicon glyphicon-user"></span>
<span class="caret"></span>
</a>
<ul class="dropdown-menu">
<li><a href="home/index.html"><span class="glyphicon glyphicon-home"></span> 个人博客</a></li>
<li><a href="home/question.html"><span class="glyphicon glyphicon-question-sign"></span> 我的提问</a></li>
<li><a href="home/answer.html"><span class="glyphicon glyphicon-ok-sign"></span> 我的回答</a></li>
<li><a href="home/collection.html"><span class="glyphicon glyphicon-star"></span> 我的收藏</a></li>
<li class="divider"></li>
<li><a href="setting/info.html"><span class="glyphicon glyphicon-cog"></span> 修改资料</a></li>
<li><a href="setting/password.html"><span class="glyphicon glyphicon-lock"></span> 密码安全</a></li>
<li><a href="logout.html"><span class="glyphicon glyphicon-log-out"></span> 安全退出</a></li>
</ul>
</li>
</ul>
</div>
<!-- /.navbar-collapse -->
</div>
</nav>
<!-- /.navbar -->
<!-- .container -->
<div class="container" style="padding-bottom:80px;">
<h3 th:text="${page.title}">标题</h3>
<div th:utext="${page.content}">内容</div>
</div>
<!-- /.container -->
<!-- footer -->
<footer class="container-fuild text-center" style="position:fixed;bottom:0;width:100%;background:#eee;padding:20px 0;">
Copyright &copy; 2017 ZhangShuzheng All Rights Reserved
</footer>
<!-- /footer -->
<script src="../js/jquery-1.11.2.min.js" th:src="@{${uiPath} + ${appName} + '/js/jquery-1.11.2.min.js'}"></script>
<script src="../js/bootstrap.min.js" th:src="@{${uiPath} + ${appName} + '/js/bootstrap.min.js'}"></script>
<script src="../js/main.js" th:src="@{${uiPath} + ${appName} + '/js/main.js'}"></script>
</body>
</html>

View File

@ -0,0 +1,105 @@
<!DOCTYPE html>
<html lang="zh-CN" xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3">
<head>
<meta charset="utf-8"/>
<title>问答首页 - ZhengCms</title>
<meta name="keywords" content=""/>
<meta name="description" content=""/>
<meta name="renderer" content="webkit"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<link rel="shortcut icon" href="../favicon.ico" th:href="@{${uiPath} + ${appName} + '/favicon.ico'}"/>
<link rel="stylesheet" href="../css/bootstrap.min.css" th:href="@{${uiPath} + ${appName} + '/css/bootstrap.min.css'}"/>
<!--[if lt IE 9]>
<script src="../js/vendor/html5shiv.js" th:src="@{${uiPath} + ${appName} + '/js/vendor/html5shiv.js'}"></script>
<script src="../js/vendor/respond.min.js" th:src="@{${uiPath} + ${appName} + '/js/vendor/respond.min.js'}"></script>
<![endif]-->
<script type="text/javascript">
if (/msie [6|7|8]/i.test(navigator.userAgent)) {};
</script>
<link rel="stylesheet" href="../css/main.css" th:href="@{${uiPath} + ${appName} + '/css/main.css'}"/>
</head>
<body>
<!-- .navbar -->
<nav class="navbar navbar-inverse navbar-fixed-top"><!--navbar-inverse-->
<div class="container">
<!-- navbar-header -->
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#nav-menu">
<span class="sr-only">切换菜单</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="../index.html" th:href="@{/}" title="zhengCMS"><span id="logo-text-left">zheng</span><span id="logo-text-right">CMS</span></a>
<p class="navbar-text hidden-sm">最简约的内容管理系统</p>
</div>
<!-- /.navbar-header -->
<!-- navbar-collapse -->
<div class="collapse navbar-collapse" id="nav-menu">
<ul class="nav navbar-nav">
<li th:each="menu : ${menus}" th:if="${menu.pid} == null"><a th:href="@{${menu.url}}" th:target="${menu.target}" th:text="${menu.name}">菜单</a></li>
</ul>
<ul class="nav navbar-right navbar-nav">
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><span class="glyphicon glyphicon-search"></span></a>
<ul class="dropdown-menu">
<form id="search-form" class="form-inline">
<div class="input-group">
<input id="keywords" type="text" name="keywords" class="form-control" placeholder="搜索"/>
<div class="input-group-btn">
<button type="submit" class="btn btn-default"><span class="glyphicon glyphicon-search"></span></button>
</div>
</div>
</form>
</ul>
</li>
<li><a href="login.html">登录</a></li>
<li><a href="reg.html">注册</a></li>
<li id="messages" class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
<span class="glyphicon glyphicon-bell"></span>
<span class="badge bg-important">5</span>
</a>
<ul class="dropdown-menu">
<li><a href="home/letter.html"><span class="glyphicon glyphicon-envelope"></span> 我的私信(<span class="msg-txt">1</span>)</a></li>
<li><a href="home/message.html"><span class="glyphicon glyphicon-volume-up"></span> 系统消息(<span class="msg-txt">4</span>)</a></li>
</ul>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
<span class="glyphicon glyphicon-user"></span>
<span class="caret"></span>
</a>
<ul class="dropdown-menu">
<li><a href="home/index.html"><span class="glyphicon glyphicon-home"></span> 个人博客</a></li>
<li><a href="home/question.html"><span class="glyphicon glyphicon-question-sign"></span> 我的提问</a></li>
<li><a href="home/answer.html"><span class="glyphicon glyphicon-ok-sign"></span> 我的回答</a></li>
<li><a href="home/collection.html"><span class="glyphicon glyphicon-star"></span> 我的收藏</a></li>
<li class="divider"></li>
<li><a href="setting/info.html"><span class="glyphicon glyphicon-cog"></span> 修改资料</a></li>
<li><a href="setting/password.html"><span class="glyphicon glyphicon-lock"></span> 密码安全</a></li>
<li><a href="logout.html"><span class="glyphicon glyphicon-log-out"></span> 安全退出</a></li>
</ul>
</li>
</ul>
</div>
<!-- /.navbar-collapse -->
</div>
</nav>
<!-- /.navbar -->
<!-- .container -->
<div class="container" style="padding-bottom:80px;">
问答首页
</div>
<!-- /.container -->
<!-- footer -->
<footer class="container-fuild text-center" style="position:fixed;bottom:0;width:100%;background:#eee;padding:20px 0;">
Copyright &copy; 2017 ZhangShuzheng All Rights Reserved
</footer>
<!-- /footer -->
<script src="../js/jquery-1.11.2.min.js" th:src="@{${uiPath} + ${appName} + '/js/jquery-1.11.2.min.js'}"></script>
<script src="../js/bootstrap.min.js" th:src="@{${uiPath} + ${appName} + '/js/bootstrap.min.js'}"></script>
<script src="../js/main.js" th:src="@{${uiPath} + ${appName} + '/js/main.js'}"></script>
</body>
</html>

View File

@ -0,0 +1,109 @@
<!DOCTYPE html>
<html lang="zh-CN" xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3">
<head>
<meta charset="utf-8"/>
<title>搜索结果 - ZhengCms</title>
<meta name="keywords" content=""/>
<meta name="description" content=""/>
<meta name="renderer" content="webkit"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<link rel="shortcut icon" href="../favicon.ico" th:href="@{${uiPath} + ${appName} + '/favicon.ico'}"/>
<link rel="stylesheet" href="../css/bootstrap.min.css" th:href="@{${uiPath} + ${appName} + '/css/bootstrap.min.css'}"/>
<!--[if lt IE 9]>
<script src="../js/vendor/html5shiv.js" th:src="@{${uiPath} + ${appName} + '/js/vendor/html5shiv.js'}"></script>
<script src="../js/vendor/respond.min.js" th:src="@{${uiPath} + ${appName} + '/js/vendor/respond.min.js'}"></script>
<![endif]-->
<script type="text/javascript">
if (/msie [6|7|8]/i.test(navigator.userAgent)) {};
</script>
<link rel="stylesheet" href="../css/main.css" th:href="@{${uiPath} + ${appName} + '/css/main.css'}"/>
</head>
<body>
<!-- .navbar -->
<nav class="navbar navbar-inverse navbar-fixed-top"><!--navbar-inverse-->
<div class="container">
<!-- navbar-header -->
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#nav-menu">
<span class="sr-only">切换菜单</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="../index.html" th:href="@{/}" title="zhengCMS"><span id="logo-text-left">zheng</span><span id="logo-text-right">CMS</span></a>
<p class="navbar-text hidden-sm">最简约的内容管理系统</p>
</div>
<!-- /.navbar-header -->
<!-- navbar-collapse -->
<div class="collapse navbar-collapse" id="nav-menu">
<ul class="nav navbar-nav">
<li th:each="menu : ${menus}" th:if="${menu.pid} == null"><a th:href="@{${menu.url}}" th:target="${menu.target}" th:text="${menu.name}">菜单</a></li>
</ul>
<ul class="nav navbar-right navbar-nav">
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><span class="glyphicon glyphicon-search"></span></a>
<ul class="dropdown-menu">
<form id="search-form" class="form-inline">
<div class="input-group">
<input id="keywords" type="text" name="keywords" class="form-control" placeholder="搜索"/>
<div class="input-group-btn">
<button type="submit" class="btn btn-default"><span class="glyphicon glyphicon-search"></span></button>
</div>
</div>
</form>
</ul>
</li>
<li><a href="login.html">登录</a></li>
<li><a href="reg.html">注册</a></li>
<li id="messages" class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
<span class="glyphicon glyphicon-bell"></span>
<span class="badge bg-important">5</span>
</a>
<ul class="dropdown-menu">
<li><a href="home/letter.html"><span class="glyphicon glyphicon-envelope"></span> 我的私信(<span class="msg-txt">1</span>)</a></li>
<li><a href="home/message.html"><span class="glyphicon glyphicon-volume-up"></span> 系统消息(<span class="msg-txt">4</span>)</a></li>
</ul>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
<span class="glyphicon glyphicon-user"></span>
<span class="caret"></span>
</a>
<ul class="dropdown-menu">
<li><a href="home/index.html"><span class="glyphicon glyphicon-home"></span> 个人博客</a></li>
<li><a href="home/question.html"><span class="glyphicon glyphicon-question-sign"></span> 我的提问</a></li>
<li><a href="home/answer.html"><span class="glyphicon glyphicon-ok-sign"></span> 我的回答</a></li>
<li><a href="home/collection.html"><span class="glyphicon glyphicon-star"></span> 我的收藏</a></li>
<li class="divider"></li>
<li><a href="setting/info.html"><span class="glyphicon glyphicon-cog"></span> 修改资料</a></li>
<li><a href="setting/password.html"><span class="glyphicon glyphicon-lock"></span> 密码安全</a></li>
<li><a href="logout.html"><span class="glyphicon glyphicon-log-out"></span> 安全退出</a></li>
</ul>
</li>
</ul>
</div>
<!-- /.navbar-collapse -->
</div>
</nav>
<!-- /.navbar -->
<!-- .container -->
<div class="container" style="padding-bottom:80px;">
<dl>
<dt>搜索结果</dt>
<dd th:each="article : ${articles}"><a href="../article/index.html" th:href="@{'/article/' + ${article.articleId}}" th:text="${article.title}">文章标题</a></dd>
</dl>
<div th:utext="${paginator.html}"></div>
</div>
<!-- /.container -->
<!-- footer -->
<footer class="container-fuild text-center" style="position:fixed;bottom:0;width:100%;background:#eee;padding:20px 0;">
Copyright &copy; 2017 ZhangShuzheng All Rights Reserved
</footer>
<!-- /footer -->
<script src="../js/jquery-1.11.2.min.js" th:src="@{${uiPath} + ${appName} + '/js/jquery-1.11.2.min.js'}"></script>
<script src="../js/bootstrap.min.js" th:src="@{${uiPath} + ${appName} + '/js/bootstrap.min.js'}"></script>
<script src="../js/main.js" th:src="@{${uiPath} + ${appName} + '/js/main.js'}"></script>
</body>
</html>

View File

@ -0,0 +1,109 @@
<!DOCTYPE html>
<html lang="zh-CN" xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3">
<head>
<meta charset="utf-8"/>
<title th:text="${tag.name} + ' - ZhengCms'">标签 - ZhengCms</title>
<meta name="keywords" content=""/>
<meta name="description" content=""/>
<meta name="renderer" content="webkit"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<link rel="shortcut icon" href="../favicon.ico" th:href="@{${uiPath} + ${appName} + '/favicon.ico'}"/>
<link rel="stylesheet" href="../css/bootstrap.min.css" th:href="@{${uiPath} + ${appName} + '/css/bootstrap.min.css'}"/>
<!--[if lt IE 9]>
<script src="../js/vendor/html5shiv.js" th:src="@{${uiPath} + ${appName} + '/js/vendor/html5shiv.js'}"></script>
<script src="../js/vendor/respond.min.js" th:src="@{${uiPath} + ${appName} + '/js/vendor/respond.min.js'}"></script>
<![endif]-->
<script type="text/javascript">
if (/msie [6|7|8]/i.test(navigator.userAgent)) {};
</script>
<link rel="stylesheet" href="../css/main.css" th:href="@{${uiPath} + ${appName} + '/css/main.css'}"/>
</head>
<body>
<!-- .navbar -->
<nav class="navbar navbar-inverse navbar-fixed-top"><!--navbar-inverse-->
<div class="container">
<!-- navbar-header -->
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#nav-menu">
<span class="sr-only">切换菜单</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="../index.html" th:href="@{/}" title="zhengCMS"><span id="logo-text-left">zheng</span><span id="logo-text-right">CMS</span></a>
<p class="navbar-text hidden-sm">最简约的内容管理系统</p>
</div>
<!-- /.navbar-header -->
<!-- navbar-collapse -->
<div class="collapse navbar-collapse" id="nav-menu">
<ul class="nav navbar-nav">
<li th:each="menu : ${menus}" th:if="${menu.pid} == null"><a th:href="@{${menu.url}}" th:target="${menu.target}" th:text="${menu.name}">菜单</a></li>
</ul>
<ul class="nav navbar-right navbar-nav">
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><span class="glyphicon glyphicon-search"></span></a>
<ul class="dropdown-menu">
<form id="search-form" class="form-inline">
<div class="input-group">
<input id="keywords" type="text" name="keywords" class="form-control" placeholder="搜索"/>
<div class="input-group-btn">
<button type="submit" class="btn btn-default"><span class="glyphicon glyphicon-search"></span></button>
</div>
</div>
</form>
</ul>
</li>
<li><a href="login.html">登录</a></li>
<li><a href="reg.html">注册</a></li>
<li id="messages" class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
<span class="glyphicon glyphicon-bell"></span>
<span class="badge bg-important">5</span>
</a>
<ul class="dropdown-menu">
<li><a href="home/letter.html"><span class="glyphicon glyphicon-envelope"></span> 我的私信(<span class="msg-txt">1</span>)</a></li>
<li><a href="home/message.html"><span class="glyphicon glyphicon-volume-up"></span> 系统消息(<span class="msg-txt">4</span>)</a></li>
</ul>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
<span class="glyphicon glyphicon-user"></span>
<span class="caret"></span>
</a>
<ul class="dropdown-menu">
<li><a href="home/index.html"><span class="glyphicon glyphicon-home"></span> 个人博客</a></li>
<li><a href="home/question.html"><span class="glyphicon glyphicon-question-sign"></span> 我的提问</a></li>
<li><a href="home/answer.html"><span class="glyphicon glyphicon-ok-sign"></span> 我的回答</a></li>
<li><a href="home/collection.html"><span class="glyphicon glyphicon-star"></span> 我的收藏</a></li>
<li class="divider"></li>
<li><a href="setting/info.html"><span class="glyphicon glyphicon-cog"></span> 修改资料</a></li>
<li><a href="setting/password.html"><span class="glyphicon glyphicon-lock"></span> 密码安全</a></li>
<li><a href="logout.html"><span class="glyphicon glyphicon-log-out"></span> 安全退出</a></li>
</ul>
</li>
</ul>
</div>
<!-- /.navbar-collapse -->
</div>
</nav>
<!-- /.navbar -->
<!-- .container -->
<div class="container" style="padding-bottom:80px;">
<dl>
<dt><span th:text="${tag.name}">标签</span>文章列表</dt>
<dd th:each="article : ${articles}"><a href="../article/index.html" th:href="@{'/article/' + ${article.articleId}}" th:text="${article.title}">文章标题</a></dd>
</dl>
<div th:utext="${paginator.html}"></div>
</div>
<!-- /.container -->
<!-- footer -->
<footer class="container-fuild text-center" style="position:fixed;bottom:0;width:100%;background:#eee;padding:20px 0;">
Copyright &copy; 2017 ZhangShuzheng All Rights Reserved
</footer>
<!-- /footer -->
<script src="../js/jquery-1.11.2.min.js" th:src="@{${uiPath} + ${appName} + '/js/jquery-1.11.2.min.js'}"></script>
<script src="../js/bootstrap.min.js" th:src="@{${uiPath} + ${appName} + '/js/bootstrap.min.js'}"></script>
<script src="../js/main.js" th:src="@{${uiPath} + ${appName} + '/js/main.js'}"></script>
</body>
</html>

View File

@ -0,0 +1,106 @@
<!DOCTYPE html>
<html lang="zh-CN" xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3">
<head>
<meta charset="utf-8"/>
<title th:text="${topic.title} + ' - ZhengCms'">标题 - ZhengCms</title>
<meta name="keywords" content=""/>
<meta name="description" content=""/>
<meta name="renderer" content="webkit"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<link rel="shortcut icon" href="favicon.ico" th:href="@{${uiPath} + ${appName} + '/favicon.ico'}"/>
<link rel="stylesheet" href="css/bootstrap.min.css" th:href="@{${uiPath} + ${appName} + '/css/bootstrap.min.css'}"/>
<!--[if lt IE 9]>
<script src="js/vendor/html5shiv.js" th:src="@{${uiPath} + ${appName} + '/js/vendor/html5shiv.js'}"></script>
<script src="js/vendor/respond.min.js" th:src="@{${uiPath} + ${appName} + '/js/vendor/respond.min.js'}"></script>
<![endif]-->
<script type="text/javascript">
if (/msie [6|7|8]/i.test(navigator.userAgent)) {};
</script>
<link rel="stylesheet" href="css/main.css" th:href="@{${uiPath} + ${appName} + '/css/main.css'}"/>
</head>
<body>
<!-- .navbar -->
<nav class="navbar navbar-inverse navbar-fixed-top"><!--navbar-inverse-->
<div class="container">
<!-- navbar-header -->
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#nav-menu">
<span class="sr-only">切换菜单</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="index.html" th:href="@{/}" title="zhengCMS"><span id="logo-text-left">zheng</span><span id="logo-text-right">CMS</span></a>
<p class="navbar-text hidden-sm">最简约的内容管理系统</p>
</div>
<!-- /.navbar-header -->
<!-- navbar-collapse -->
<div class="collapse navbar-collapse" id="nav-menu">
<ul class="nav navbar-nav">
<li th:each="menu : ${menus}" th:if="${menu.pid} == null"><a th:href="@{${menu.url}}" th:target="${menu.target}" th:text="${menu.name}">菜单</a></li>
</ul>
<ul class="nav navbar-right navbar-nav">
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><span class="glyphicon glyphicon-search"></span></a>
<ul class="dropdown-menu">
<form id="search-form" class="form-inline">
<div class="input-group">
<input id="keywords" type="text" name="keywords" class="form-control" placeholder="搜索"/>
<div class="input-group-btn">
<button type="submit" class="btn btn-default"><span class="glyphicon glyphicon-search"></span></button>
</div>
</div>
</form>
</ul>
</li>
<li><a href="login.html">登录</a></li>
<li><a href="reg.html">注册</a></li>
<li id="messages" class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
<span class="glyphicon glyphicon-bell"></span>
<span class="badge bg-important">5</span>
</a>
<ul class="dropdown-menu">
<li><a href="home/letter.html"><span class="glyphicon glyphicon-envelope"></span> 我的私信(<span class="msg-txt">1</span>)</a></li>
<li><a href="home/message.html"><span class="glyphicon glyphicon-volume-up"></span> 系统消息(<span class="msg-txt">4</span>)</a></li>
</ul>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
<span class="glyphicon glyphicon-user"></span>
<span class="caret"></span>
</a>
<ul class="dropdown-menu">
<li><a href="home/index.html"><span class="glyphicon glyphicon-home"></span> 个人博客</a></li>
<li><a href="home/question.html"><span class="glyphicon glyphicon-question-sign"></span> 我的提问</a></li>
<li><a href="home/answer.html"><span class="glyphicon glyphicon-ok-sign"></span> 我的回答</a></li>
<li><a href="home/collection.html"><span class="glyphicon glyphicon-star"></span> 我的收藏</a></li>
<li class="divider"></li>
<li><a href="setting/info.html"><span class="glyphicon glyphicon-cog"></span> 修改资料</a></li>
<li><a href="setting/password.html"><span class="glyphicon glyphicon-lock"></span> 密码安全</a></li>
<li><a href="logout.html"><span class="glyphicon glyphicon-log-out"></span> 安全退出</a></li>
</ul>
</li>
</ul>
</div>
<!-- /.navbar-collapse -->
</div>
</nav>
<!-- /.navbar -->
<!-- .container -->
<div class="container" style="padding-bottom:80px;">
<h3 th:text="${topic.title}">标题</h3>
<div th:utext="${topic.description}">描述</div>
</div>
<!-- /.container -->
<!-- footer -->
<footer class="container-fuild text-center" style="position:fixed;bottom:0;width:100%;background:#eee;padding:20px 0;">
Copyright &copy; 2017 ZhangShuzheng All Rights Reserved
</footer>
<!-- /footer -->
<script src="js/jquery-1.11.2.min.js" th:src="@{${uiPath} + ${appName} + '/js/jquery-1.11.2.min.js'}"></script>
<script src="js/bootstrap.min.js" th:src="@{${uiPath} + ${appName} + '/js/bootstrap.min.js'}"></script>
<script src="js/main.js" th:src="@{${uiPath} + ${appName} + '/js/main.js'}"></script>
</body>
</html>

View File

@ -0,0 +1,109 @@
<!DOCTYPE html>
<html lang="zh-CN" xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3">
<head>
<meta charset="utf-8"/>
<title>专题列表 - ZhengCms</title>
<meta name="keywords" content=""/>
<meta name="description" content=""/>
<meta name="renderer" content="webkit"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<link rel="shortcut icon" href="favicon.ico" th:href="@{${uiPath} + ${appName} + '/favicon.ico'}"/>
<link rel="stylesheet" href="css/bootstrap.min.css" th:href="@{${uiPath} + ${appName} + '/css/bootstrap.min.css'}"/>
<!--[if lt IE 9]>
<script src="js/vendor/html5shiv.js" th:src="@{${uiPath} + ${appName} + '/js/vendor/html5shiv.js'}"></script>
<script src="js/vendor/respond.min.js" th:src="@{${uiPath} + ${appName} + '/js/vendor/respond.min.js'}"></script>
<![endif]-->
<script type="text/javascript">
if (/msie [6|7|8]/i.test(navigator.userAgent)) {};
</script>
<link rel="stylesheet" href="css/main.css" th:href="@{${uiPath} + ${appName} + '/css/main.css'}"/>
</head>
<body>
<!-- .navbar -->
<nav class="navbar navbar-inverse navbar-fixed-top"><!--navbar-inverse-->
<div class="container">
<!-- navbar-header -->
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#nav-menu">
<span class="sr-only">切换菜单</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="index.html" th:href="@{/}" title="zhengCMS"><span id="logo-text-left">zheng</span><span id="logo-text-right">CMS</span></a>
<p class="navbar-text hidden-sm">最简约的内容管理系统</p>
</div>
<!-- /.navbar-header -->
<!-- navbar-collapse -->
<div class="collapse navbar-collapse" id="nav-menu">
<ul class="nav navbar-nav">
<li th:each="menu : ${menus}" th:if="${menu.pid} == null"><a th:href="@{${menu.url}}" th:target="${menu.target}" th:text="${menu.name}">菜单</a></li>
</ul>
<ul class="nav navbar-right navbar-nav">
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><span class="glyphicon glyphicon-search"></span></a>
<ul class="dropdown-menu">
<form id="search-form" class="form-inline">
<div class="input-group">
<input id="keywords" type="text" name="keywords" class="form-control" placeholder="搜索"/>
<div class="input-group-btn">
<button type="submit" class="btn btn-default"><span class="glyphicon glyphicon-search"></span></button>
</div>
</div>
</form>
</ul>
</li>
<li><a href="login.html">登录</a></li>
<li><a href="reg.html">注册</a></li>
<li id="messages" class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
<span class="glyphicon glyphicon-bell"></span>
<span class="badge bg-important">5</span>
</a>
<ul class="dropdown-menu">
<li><a href="home/letter.html"><span class="glyphicon glyphicon-envelope"></span> 我的私信(<span class="msg-txt">1</span>)</a></li>
<li><a href="home/message.html"><span class="glyphicon glyphicon-volume-up"></span> 系统消息(<span class="msg-txt">4</span>)</a></li>
</ul>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
<span class="glyphicon glyphicon-user"></span>
<span class="caret"></span>
</a>
<ul class="dropdown-menu">
<li><a href="home/index.html"><span class="glyphicon glyphicon-home"></span> 个人博客</a></li>
<li><a href="home/question.html"><span class="glyphicon glyphicon-question-sign"></span> 我的提问</a></li>
<li><a href="home/answer.html"><span class="glyphicon glyphicon-ok-sign"></span> 我的回答</a></li>
<li><a href="home/collection.html"><span class="glyphicon glyphicon-star"></span> 我的收藏</a></li>
<li class="divider"></li>
<li><a href="setting/info.html"><span class="glyphicon glyphicon-cog"></span> 修改资料</a></li>
<li><a href="setting/password.html"><span class="glyphicon glyphicon-lock"></span> 密码安全</a></li>
<li><a href="logout.html"><span class="glyphicon glyphicon-log-out"></span> 安全退出</a></li>
</ul>
</li>
</ul>
</div>
<!-- /.navbar-collapse -->
</div>
</nav>
<!-- /.navbar -->
<!-- .container -->
<div class="container" style="padding-bottom:80px;">
<dl>
<dt>专题列表</dt>
<dd th:each="topic : ${topics}"><a href="topic/index.html" th:href="@{'/topic/' + ${topic.topicId}}" th:text="${topic.title}">专题标题</a></dd>
</dl>
<div th:utext="${paginator.html}"></div>
</div>
<!-- /.container -->
<!-- footer -->
<footer class="container-fuild text-center" style="position:fixed;bottom:0;width:100%;background:#eee;padding:20px 0;">
Copyright &copy; 2017 ZhangShuzheng All Rights Reserved
</footer>
<!-- /footer -->
<script src="js/jquery-1.11.2.min.js" th:src="@{${uiPath} + ${appName} + '/js/jquery-1.11.2.min.js'}"></script>
<script src="js/bootstrap.min.js" th:src="@{${uiPath} + ${appName} + '/js/bootstrap.min.js'}"></script>
<script src="js/main.js" th:src="@{${uiPath} + ${appName} + '/js/main.js'}"></script>
</body>
</html>