Compare commits

..

11 Commits

Author SHA1 Message Date
7cc7d8b541 v3.4.0发布 2021-01-04 10:28:01 +08:00
e4822979e2 elasticsearch升级到7.x,集成RestHighLevelClient客户端 2021-01-03 13:42:40 +08:00
ab741ec6bf v3.3.0发布 2020-12-28 12:06:19 +08:00
057c0646cd v3.3.0发布 2020-12-28 12:02:34 +08:00
57a9cd09ef v3.3.0发布 2020-12-28 11:06:27 +08:00
1a49e2a340 增加外部配置文件来配置网站信息 2020-12-28 10:58:38 +08:00
f8411c2337 v3.3.0发布 2020-12-28 09:34:22 +08:00
343a741c21 更新展示图片 2020-12-27 15:54:50 +08:00
f1a5fb4813 更新展示图片 2020-12-27 15:34:23 +08:00
0428356bd4 新增蓝色主题模版 2020-12-27 09:43:45 +08:00
c01097cd5f 更新v3.3.0的安装文档 2020-12-26 23:53:05 +08:00
259 changed files with 6341 additions and 203 deletions

View File

@ -87,7 +87,7 @@ novel-plus -- 父工程
1. 首页
![img](https://oscimg.oschina.net/oscnet/up-bbb1c7f72e183327bff754a9fa8bb75223e.png)
![img](https://s3.ax1x.com/2020/12/27/r5400A.png)
2. 分类索引页
@ -95,7 +95,7 @@ novel-plus -- 父工程
3. 搜索页
![img](https://gitee.com/xiongxyang/novel-plus/raw/release_v2.1.0/assets/QQ20200520-215756.png)
![img](https://s3.ax1x.com/2020/12/27/r5TO8x.png)
![img](https://oscimg.oschina.net/oscnet/up-ed5f689557718924acac76bc3ebca36afcb.png)
@ -141,19 +141,19 @@ novel-plus -- 父工程
1. 首页
<img src="https://s3.ax1x.com/2020/12/04/DbsSoj.jpg" alt="index" style="zoom:33%;" />
<img src="https://s3.ax1x.com/2020/12/27/r5447n.jpg" alt="index" width="300" />
2. 小说列表页
<img src="https://s3.ax1x.com/2020/12/04/DbrfsO.jpg" alt="微信图片_20190904181558" style="zoom: 33%;" />
<img src="https://s3.ax1x.com/2020/12/27/r55xKg.jpg" alt="微信图片_20190904181558" width="300" />
3. 小说详情页
<img src="https://s3.ax1x.com/2020/12/04/DbsklV.jpg" alt="QQ图片20191018161901" style="zoom:33%;" />
<img src="https://s3.ax1x.com/2020/12/28/roZWOf.jpg" alt="QQ图片20191018161901" width="300" />
4. 小说阅读页
<img src="https://s3.ax1x.com/2020/12/04/Dbsew4.jpg" alt="QQ图片20191018161901" style="zoom:33%;" />
<img src="https://s3.ax1x.com/2020/12/27/r55Stx.jpg" alt="QQ图片20191018161901" width="300" />
##### 爬虫管理系统截图
@ -195,6 +195,12 @@ novel-plus -- 父工程
![QQ图片20191018161901](https://static.oschina.net/uploads/img/202006/24151813_fDgT.png)
#### 蓝色主题模版截图更新中
![QQ图片20191018161901](https://s3.ax1x.com/2020/12/27/r5Fe0A.png)
#### 安装步骤
##### 数据库安装
@ -214,20 +220,28 @@ novel-plus -- 父工程
##### 前台小说门户安装jar包形式部署时需要复制templates文件夹到jar文件的相同目录下
1. 修改novel-common模块下application-common-dev.yml配置文件中的数据库配置
2. 修改novel-front模块下application.yml配置文件中的模版名为你需要使用的模版名templates文件夹下的模版文件夹名内置orange和dark两套模版
2. 修改novel-front模块下application-website配置文件中的网站信息
![mini-code](https://s3.ax1x.com/2020/12/28/royaex.png)
3. 修改novel-front模块下application.yml配置文件中的模版名为你需要使用的模版名templates文件夹下的模版文件夹名内置orange和dark两套模版
![mini-code](https://s3.ax1x.com/2020/12/26/r4uGM6.png)
3. 启动程序打开浏览器默认8080端口访问
4. 启动程序打开浏览器默认8080端口访问
**喜欢此项目的可以给我的GitHub和Gitee加个Star支持一下 **
#### 其他安装教程
##### version<3.3.0版本
包安装教程[点击前往](https://my.oschina.net/java2nb/blog/4272630)
宝塔安装教程非官方[点击前往](https://www.daniao.org/9166.html)
docker安装教程[点击前往](https://my.oschina.net/java2nb/blog/4271989)
##### version>=3.3.0版本
包安装教程[点击前往](https://my.oschina.net/java2nb/blog/4842472)
#### 代码仓库
GitHub仓库地址 https://github.com/201206030/novel-plus

View File

@ -5,7 +5,7 @@
<parent>
<artifactId>novel</artifactId>
<groupId>com.java2nb</groupId>
<version>3.3.0</version>
<version>3.4.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -5,7 +5,7 @@
<parent>
<artifactId>novel</artifactId>
<groupId>com.java2nb</groupId>
<version>3.3.0</version>
<version>3.4.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -5,7 +5,7 @@
<parent>
<artifactId>novel</artifactId>
<groupId>com.java2nb</groupId>
<version>3.3.0</version>
<version>3.4.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
@ -39,6 +39,12 @@
<version>${jest.version}</version>
</dependency>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>${elasticsearch.version}</version>
</dependency>
<!--aliyunOSS-->
<dependency>
<groupId>com.aliyun.oss</groupId>

View File

@ -5,6 +5,7 @@ import io.shardingsphere.shardingjdbc.spring.boot.SpringBootConfiguration;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Import;
@ -20,6 +21,7 @@ import org.springframework.transaction.annotation.EnableTransactionManagement;
@EnableTransactionManagement
@EnableScheduling
@EnableCaching
@ServletComponentScan
@MapperScan(basePackages = {"com.java2nb.novel.mapper"})
@Import(FdfsClientConfig.class)
public class FrontNovelApplication {

View File

@ -0,0 +1,41 @@
package com.java2nb.novel.core.config;
import org.apache.http.HttpHost;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* elasticsearch搜索引擎配置
* @author xiongxiaoyang
*/
@Configuration
@ConditionalOnProperty(prefix = "spring.elasticsearch", name = "enable", havingValue = "1")
public class EsConfig {
@Value("${spring.elasticsearch.jest.uris}")
private String esUris;
@Bean
public RestHighLevelClient esClient(){
String[] uris = esUris.split(",");
HttpHost[] hosts = new HttpHost[uris.length];
for(int i = 0 ; i < uris.length ; i++){
String uri = uris[i];
String scheme = uri.substring(0,uri.indexOf(":")).trim();
String hostname = uri.substring(uri.indexOf("://")+3,uri.lastIndexOf(":")).trim();
Integer port = Integer.parseInt(uri.substring(uri.lastIndexOf(":")+1).trim());
hosts[i] = new HttpHost(hostname,port,scheme);
}
return new RestHighLevelClient(
RestClient.builder(hosts));
}
}

View File

@ -0,0 +1,20 @@
package com.java2nb.novel.core.config;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
/**
* @author 11797
*/
@Data
@Component
@ConfigurationProperties(prefix="website")
public class WebsiteConfig {
private String name;
private String domain;
private String keyword;
private String description;
private String qq;
}

View File

@ -0,0 +1,28 @@
package com.java2nb.novel.core.listener;
import com.java2nb.novel.core.config.WebsiteConfig;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
/**
* 启动监听器
* @author xiongxiaoyang
*/
@WebListener
@Slf4j
@RequiredArgsConstructor
public class StarterListener implements ServletContextListener {
private final WebsiteConfig websiteConfig;
@Override
public void contextInitialized(ServletContextEvent sce) {
sce.getServletContext().setAttribute("website",websiteConfig);
}
}

View File

@ -2,19 +2,11 @@ package com.java2nb.novel.core.schedule;
import com.java2nb.novel.core.cache.CacheKey;
import com.java2nb.novel.core.cache.CacheService;
import com.java2nb.novel.core.utils.BeanUtil;
import com.java2nb.novel.entity.Book;
import com.java2nb.novel.service.BookService;
import com.java2nb.novel.service.SearchService;
import com.java2nb.novel.vo.EsBookVO;
import io.searchbox.client.JestClient;
import io.searchbox.core.DocumentResult;
import io.searchbox.core.Index;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
@ -68,8 +60,6 @@ public class BookToEsSchedule {
}
cacheService.setObject(CacheKey.ES_LAST_UPDATE_TIME, lastDate);
} catch (Exception e) {

View File

@ -600,6 +600,7 @@ public class BookServiceImpl implements BookService {
return bookMapper.selectMany(select(book.allColumns())
.from(book)
.where(updateTime, isGreaterThan(startDate))
.and(lastIndexId,isNotNull())
.orderBy(updateTime)
.limit(limit)
.build()

View File

@ -35,7 +35,7 @@ public class NewsServiceImpl implements NewsService {
public List<News> listIndexNews() {
List<News> result = (List<News>) cacheService.getObject(CacheKey.INDEX_NEWS_KEY);
if(result == null || result.size() == 0) {
SelectStatementProvider selectStatement = select(id, catName, catId, title)
SelectStatementProvider selectStatement = select(id, catName, catId, title,createTime)
.from(news)
.orderBy(createTime.descending())
.limit(2)

View File

@ -11,11 +11,19 @@ import com.java2nb.novel.search.BookSP;
import com.java2nb.novel.service.SearchService;
import com.java2nb.novel.vo.EsBookVO;
import io.searchbox.client.JestClient;
import io.searchbox.core.*;
import io.searchbox.core.Count;
import io.searchbox.core.CountResult;
import io.searchbox.core.Search;
import io.searchbox.core.SearchResult;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.elasticsearch.action.index.IndexRequest;
import org.elasticsearch.action.index.IndexResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.common.xcontent.XContentType;
import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.builder.SearchSourceBuilder;
@ -37,12 +45,12 @@ import java.util.Map;
@Slf4j
public class SearchServiceImpl implements SearchService {
private final String INDEX = "novel";
private final String TYPE = "book";
private final JestClient jestClient;
private final RestHighLevelClient restHighLevelClient;
private final String INDEX = "novel";
@Override
@SneakyThrows
@ -51,10 +59,13 @@ public class SearchServiceImpl implements SearchService {
EsBookVO esBookVO = new EsBookVO();
BeanUtils.copyProperties(book, esBookVO, "lastIndexUpdateTime");
esBookVO.setLastIndexUpdateTime(new SimpleDateFormat("yyyy/MM/dd HH:mm").format(book.getLastIndexUpdateTime()));
Index action = new Index.Builder(esBookVO).index(INDEX).type(TYPE).id(book.getId().toString()).build();
jestClient.execute(action);
IndexRequest request = new IndexRequest(INDEX);
request.id(book.getId()+"");
request.source(new ObjectMapper().writeValueAsString(esBookVO), XContentType.JSON);
IndexResponse index = restHighLevelClient.index(request, RequestOptions.DEFAULT);
log.debug(index.getResult().toString());
}
@ -102,7 +113,7 @@ public class SearchServiceImpl implements SearchService {
searchSourceBuilder.query(boolQueryBuilder);
Count count = new Count.Builder().addIndex(INDEX).addType(TYPE)
Count count = new Count.Builder().addIndex(INDEX)
.query(searchSourceBuilder.toString()).build();
CountResult results = jestClient.execute(count);
Double total = results.getCount();
@ -130,7 +141,7 @@ public class SearchServiceImpl implements SearchService {
searchSourceBuilder.size(pageSize);
// 构建Search对象
Search search = new Search.Builder(searchSourceBuilder.toString()).addIndex(INDEX).addType(TYPE).build();
Search search = new Search.Builder(searchSourceBuilder.toString()).addIndex(INDEX).build();
log.debug(search.toString());
SearchResult result;
result = jestClient.execute(search);

View File

@ -21,6 +21,12 @@ public class BookSettingVO extends BookSetting implements Serializable {
private Float score;
private Integer catId;
private String catName;
private Byte bookStatus;
@Override
public String toString() {

View File

@ -0,0 +1,12 @@
#网站配置
website:
#网站名
name: 小说精品屋
#域名
domain: xiongxyang.gitee.io/home
#SEO关键词
keyword: ${website.name},小说,小说CMS,原创文学系统,开源小说系统,免费小说建站程序
#SEO描述
description: ${website.name}是一个多端PCWAP阅读功能完善的原创文学CMS系统由前台门户系统作家后台管理系统平台后台管理系统爬虫管理系统等多个子系统构成支持会员充值订阅模式新闻发布和实时统计报表等功能新书自动入库老书自动更新
#联系QQ
qq: 1179705413

View File

@ -4,7 +4,7 @@ server:
spring:
profiles:
active: dev
include: alipay,oss,fastdfs
include: website,alipay,oss,fastdfs
rabbitmq:
@ -23,7 +23,7 @@ spring:
#是否开启搜索引擎1开启0不开启
enable: 0
jest:
uris: http://127.0.0.1:9200
uris: http://192.168.0.105:9200
#thymeleaf模版路径配置
thymeleaf:

View File

@ -1,5 +0,0 @@
#网站配置
#网站名
website.name=小说精品屋
#PC站网站域名
website.domain=www.java2nb.com

View File

@ -4,7 +4,7 @@
<mapper namespace="com.java2nb.novel.mapper.FrontBookSettingMapper">
<select id="listVO" resultType="com.java2nb.novel.vo.BookSettingVO">
select t1.book_id,t1.type,t1.sort,t2.book_name,t2.author_name,t2.pic_url,t2.book_desc,t2.score
select t1.book_id,t1.type,t1.sort,t2.book_name,t2.author_name,t2.pic_url,t2.book_desc,t2.score,t2.cat_id,t2.cat_name,t2.book_status
from book_setting t1 inner join book t2
on t1.book_id = t2.id
order by t1.sort

View File

@ -3,9 +3,9 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head th:replace="common/header :: common_head(~{::title},~{::meta},~{::link},~{})">
<title th:text="'联系我们_'+#{website.name}"></title>
<title th:text="'联系我们_'+${application.website.name}"></title>
<meta name="keywords" content="联系我们,小说,小说网,言情小说,都市小说,玄幻小说,穿越小说,青春小说,总裁豪门小说,网络小说,免费小说,全本小说,原创网络文学" />
<meta name="description" th:content="#{website.name}+'小说每日更新小说连载,小说排行榜,提供言情小说,都市小说,玄幻小说,穿越小说,青春小说,总裁豪门小说,网络小说,免费小说,全本小说,首发小说,最新章节免费小说阅读,精彩尽在'+#{website.name}+'小说!'" />
<meta name="description" th:content="${application.website.name}+'小说每日更新小说连载,小说排行榜,提供言情小说,都市小说,玄幻小说,穿越小说,青春小说,总裁豪门小说,网络小说,免费小说,全本小说,首发小说,最新章节免费小说阅读,精彩尽在'+${application.website.name}+'小说!'" />
<link rel="stylesheet" href="/css/about.css"/>
</head>
<body class="body">
@ -30,8 +30,8 @@
<div class="aboutBox">
<h2>联系我们</h2>
<div class="about_info">
<A href="tencent://message/?uin=1179705413&amp;Site=作家申请,商务合作&amp;Menu=yes">
<img style="border:0px;" src=http://wpa.qq.com/pa?p=1:1179705413:6></a>
<A th:href="'tencent://message/?uin='+${application.website.qq}+'&amp;Site=作家申请,商务合作&amp;Menu=yes'">
<img style="border:0px;" th:src="'http://wpa.qq.com/pa?p=1:'+${application.website.qq}+':6'"></a>
<p>&nbsp;</p>
<p>&nbsp;</p>
</div>

View File

@ -3,9 +3,9 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head th:replace="common/header :: common_head(~{::title},~{::meta},~{::link},~{})">
<title th:text="'版权声明_'+#{website.name}"></title>
<title th:text="'版权声明_'+${application.website.name}"></title>
<meta name="keywords" content="版权声明,小说,小说网,言情小说,都市小说,玄幻小说,穿越小说,青春小说,总裁豪门小说,网络小说,免费小说,全本小说,原创网络文学" />
<meta name="description" th:content="#{website.name}+'小说每日更新小说连载,小说排行榜,提供言情小说,都市小说,玄幻小说,穿越小说,青春小说,总裁豪门小说,网络小说,免费小说,全本小说,首发小说,最新章节免费小说阅读,精彩尽在'+#{website.name}+'小说!'" />
<meta name="description" th:content="${application.website.name}+'小说每日更新小说连载,小说排行榜,提供言情小说,都市小说,玄幻小说,穿越小说,青春小说,总裁豪门小说,网络小说,免费小说,全本小说,首发小说,最新章节免费小说阅读,精彩尽在'+${application.website.name}+'小说!'" />
<link rel="stylesheet" href="/css/about.css"/>
</head>
<body class="body">

View File

@ -1,9 +1,9 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head th:replace="common/header :: common_head(~{::title},~{::meta},~{::link},~{})">
<title th:text="'关于我们_'+#{website.name}"></title>
<title th:text="'关于我们_'+${application.website.name}"></title>
<meta name="keywords" content="关于我们,小说,小说网,言情小说,都市小说,玄幻小说,穿越小说,青春小说,总裁豪门小说,网络小说,免费小说,全本小说,原创网络文学" />
<meta name="description" th:content="#{website.name}+'每日更新小说连载,小说排行榜,提供言情小说,都市小说,玄幻小说,穿越小说,青春小说,总裁豪门小说,网络小说,免费小说,全本小说,首发小说,最新章节免费小说阅读,精彩尽在'+#{website.name}+'小说!'" />
<meta name="description" th:content="${application.website.name}+'每日更新小说连载,小说排行榜,提供言情小说,都市小说,玄幻小说,穿越小说,青春小说,总裁豪门小说,网络小说,免费小说,全本小说,首发小说,最新章节免费小说阅读,精彩尽在'+${application.website.name}+'小说!'" />
<link rel="stylesheet" href="/css/about.css"/>
</head>
<body class="body">
@ -27,7 +27,7 @@
<div class="aboutBox">
<h2>关于我们</h2>
<div class="about_info">
<p th:text="#{website.name}+'创建于2019年是集创作阅读作品加工IP运营为一体的中文小说阅读综合平台'"></p>
<p th:text="${application.website.name}+'创建于2019年是集创作阅读作品加工IP运营为一体的中文小说阅读综合平台'"></p>
<p></p>
</div>
</div>

View File

@ -2,10 +2,10 @@
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head th:replace="common/header :: common_head(~{::title},~{::meta},~{::link},~{})">
<title th:text="'新闻公共_'+#{website.name}"></title>
<title th:text="'新闻公共_'+${application.website.name}"></title>
<meta name="keywords" content="新闻公告,小说,小说网,言情小说,都市小说,玄幻小说,穿越小说,青春小说,总裁豪门小说,网络小说,免费小说,全本小说,原创网络文学"/>
<meta name="description"
th:content="#{website.name}+'小说每日更新小说连载,小说排行榜,提供言情小说,都市小说,玄幻小说,穿越小说,青春小说,总裁豪门小说,网络小说,免费小说,全本小说,首发小说,最新章节免费小说阅读,精彩尽在'+#{website.name}+'小说!'"/>
th:content="${application.website.name}+'小说每日更新小说连载,小说排行榜,提供言情小说,都市小说,玄幻小说,穿越小说,青春小说,总裁豪门小说,网络小说,免费小说,全本小说,首发小说,最新章节免费小说阅读,精彩尽在'+${application.website.name}+'小说!'"/>
<link rel="stylesheet" href="/css/about.css"/>
</head>
<body class="body">

View File

@ -1,9 +1,9 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head th:replace="common/header :: common_head(~{::title},~{::meta},~{::link},~{})">
<title th:text="'新闻公告_'+#{website.name}"></title>
<title th:text="'新闻公告_'+${application.website.name}"></title>
<meta name="keywords" content="新闻公告,小说,小说网,言情小说,都市小说,玄幻小说,穿越小说,青春小说,总裁豪门小说,网络小说,免费小说,全本小说,原创网络文学"/>
<meta name="description" th:content="#{website.name}+'小说每日更新小说连载,小说排行榜,提供言情小说,都市小说,玄幻小说,穿越小说,青春小说,总裁豪门小说,网络小说,免费小说,全本小说,首发小说,最新章节免费小说阅读,精彩尽在'+#{website.name}+'小说!'" />
<meta name="description" th:content="${application.website.name}+'小说每日更新小说连载,小说排行榜,提供言情小说,都市小说,玄幻小说,穿越小说,青春小说,总裁豪门小说,网络小说,免费小说,全本小说,首发小说,最新章节免费小说阅读,精彩尽在'+${application.website.name}+'小说!'" />
<link rel="stylesheet" href="/css/about.css" />
</head>
<body class="body">

View File

@ -3,9 +3,9 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head th:replace="common/header :: common_head(~{::title},~{::meta},~{::link},~{})">
<title th:text="'投稿说明_'+#{website.name}"></title>
<title th:text="'投稿说明_'+${application.website.name}"></title>
<meta name="keywords" content="投稿说明,小说,小说网,言情小说,都市小说,玄幻小说,穿越小说,青春小说,总裁豪门小说,网络小说,免费小说,全本小说,原创网络文学" />
<meta name="description" th:content="#{website.name}+'小说每日更新小说连载,小说排行榜,提供言情小说,都市小说,玄幻小说,穿越小说,青春小说,总裁豪门小说,网络小说,免费小说,全本小说,首发小说,最新章节免费小说阅读,精彩尽在'+#{website.name}+'小说!'" />
<meta name="description" th:content="${application.website.name}+'小说每日更新小说连载,小说排行榜,提供言情小说,都市小说,玄幻小说,穿越小说,青春小说,总裁豪门小说,网络小说,免费小说,全本小说,首发小说,最新章节免费小说阅读,精彩尽在'+${application.website.name}+'小说!'" />
<link rel="stylesheet" href="/css/about.css"/>
</head>
<body class="body">

View File

@ -3,9 +3,9 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head th:replace="common/header :: common_head(~{::title},~{::meta},~{::link},~{})">
<title th:text="'用户协议_'+#{website.name}"></title>
<title th:text="'用户协议_'+${application.website.name}"></title>
<meta name="keywords" content="用户协议,小说,小说网,言情小说,都市小说,玄幻小说,穿越小说,青春小说,总裁豪门小说,网络小说,免费小说,全本小说,原创网络文学" />
<meta name="description" th:content="#{website.name}+'小说每日更新小说连载,小说排行榜,提供言情小说,都市小说,玄幻小说,穿越小说,青春小说,总裁豪门小说,网络小说,免费小说,全本小说,首发小说,最新章节免费小说阅读,精彩尽在'+#{website.name}+'小说!'" />
<meta name="description" th:content="${application.website.name}+'小说每日更新小说连载,小说排行榜,提供言情小说,都市小说,玄幻小说,穿越小说,青春小说,总裁豪门小说,网络小说,免费小说,全本小说,首发小说,最新章节免费小说阅读,精彩尽在'+${application.website.name}+'小说!'" />
<link rel="stylesheet" href="/css/about.css"/>
</head>
<body class="body">

View File

@ -3,9 +3,9 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head th:replace="common/header :: common_head(~{::title},~{::meta},~{::link},~{})">
<title th:text="${book.bookName}+'作品评论区_'+#{website.name}"></title>
<title th:text="${book.bookName}+'作品评论区_'+${application.website.name}"></title>
<meta name="keywords" th:content="${book.bookName}+'官方首发,'+${book.bookName}+'小说,'+${book.bookName}+'最新章节,'+${book.bookName}+'txt下载,'+${book.bookName}+'无弹窗,'+${book.bookName}+'吧,'+${book.bookName}+'离线完本'" />
<meta name="description" th:content="${book.bookName}+','+${book.bookName}+'小说阅读,'+#{website.name}+'提供'+${book.bookName}+'首发最新章节及txt下载,'+${book.bookName}+'最新更新章节,精彩尽在'+#{website.name}+'。'" />
<meta name="description" th:content="${book.bookName}+','+${book.bookName}+'小说阅读,'+${application.website.name}+'提供'+${book.bookName}+'首发最新章节及txt下载,'+${book.bookName}+'最新更新章节,精彩尽在'+${application.website.name}+'。'" />
<link href="/css/main.css" rel="stylesheet" />
<link href="/css/book.css" rel="stylesheet" />
</head>

View File

@ -2,9 +2,9 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.w3.org/1999/xhtml">
<head th:replace="common/header :: common_head(~{::title},~{::meta},~{::link},~{})">
<title th:utext="${book.bookName}+'_'+${bookIndex.indexName}+'_'+#{website.name}"></title>
<title th:utext="${book.bookName}+'_'+${bookIndex.indexName}+'_'+${application.website.name}"></title>
<meta name="keywords" th:content="${book.bookName}+'官方首发,'+${book.bookName}+'小说,'+${book.bookName}+'最新章节,'+${book.bookName}+'txt下载,'+${book.bookName}+'无弹窗,'+${book.bookName}+'吧,'+${book.bookName}+'离线完本'" />
<meta name="description" th:content="${book.bookName}+','+${book.bookName}+'小说阅读,'+#{website.name}+'提供'+${book.bookName}+'首发最新章节及txt下载,'+${book.bookName}+'最新更新章节,精彩尽在'+#{website.name}+'。'" />
<meta name="description" th:content="${book.bookName}+','+${book.bookName}+'小说阅读,'+${application.website.name}+'提供'+${book.bookName}+'首发最新章节及txt下载,'+${book.bookName}+'最新更新章节,精彩尽在'+${application.website.name}+'。'" />
<link rel="stylesheet" href="/css/read.css" />
<link href="/css/book.css" rel="stylesheet" />

View File

@ -2,11 +2,11 @@
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head th:replace="common/header :: common_head(~{::title},~{::meta},~{::link},~{})">
<title th:utext="${book.bookName}+'_'+${book.authorName}+'_'+${book.bookName}+'txt下载'+'_'+${book.bookName}+'无弹窗_'+#{website.name}"></title>
<title th:utext="${book.bookName}+'_'+${book.authorName}+'_'+${book.bookName}+'txt下载'+'_'+${book.bookName}+'无弹窗_'+${application.website.name}"></title>
<meta name="keywords"
th:content="${book.bookName}+'官方首发,'+${book.bookName}+'小说,'+${book.bookName}+'最新章节'+${book.bookName}+'txt下载,'+${book.bookName}+'无弹窗,'+${book.bookName}+'吧,'+${book.bookName}+'离线完本'"/>
<meta name="description"
th:content="${book.bookName}+','+${book.bookName}+'小说阅读,'+${book.bookName}+'由作家'+${book.authorName}+'创作,'+#{website.name}+'提供'+${book.bookName}+'首发最新章节及txt下载,'+${book.bookName}+'最新更新章节,精彩尽在'+#{website.name}+'。'"/>
th:content="${book.bookName}+','+${book.bookName}+'小说阅读,'+${book.bookName}+'由作家'+${book.authorName}+'创作,'+${application.website.name}+'提供'+${book.bookName}+'首发最新章节及txt下载,'+${book.bookName}+'最新更新章节,精彩尽在'+${application.website.name}+'。'"/>
<link rel="stylesheet" href="/css/main.css"/>
<link href="/css/book.css?v=2019" rel="stylesheet"/>
</head>
@ -22,7 +22,7 @@
<div class="main box_center cf mb50">
<div class="nav_sub">
<a href="/" th:text="#{website.name}"></a>&gt;<a th:href="'/book/bookclass.html?c='+${book.catId}" th:text="${book.catName}"></a>&gt;<a
<a href="/" th:text="${application.website.name}"></a>&gt;<a th:href="'/book/bookclass.html?c='+${book.catId}" th:text="${book.catName}"></a>&gt;<a
th:href="'/book/'+${book.id}+'.html'" th:utext="${book.bookName}"></a>
</div>
<div class="channelWrap channelBookInfo cf">

View File

@ -2,10 +2,10 @@
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head th:replace="common/header :: common_head(~{::title},~{::meta},~{::link},~{})">
<title th:utext="${book.bookName}+'目录,'+${book.bookName}+'最新章节列表_'+#{website.name}"></title>
<title th:utext="${book.bookName}+'目录,'+${book.bookName}+'最新章节列表_'+${application.website.name}"></title>
<meta name="keywords" th:content="${book.bookName}+','+${book.bookName}+'目录,'+${book.bookName}+'最新章节列表'"/>
<meta name="description"
th:content="#{website.name}+'小说为您提供'+${book.bookName}+'目录,'+${book.bookName}+'最新章节列表,'+${book.bookName}+'全文阅读,'+${book.bookName}+'免费阅读,'+${book.bookName}+'下载'"/>
th:content="${application.website.name}+'小说为您提供'+${book.bookName}+'目录,'+${book.bookName}+'最新章节列表,'+${book.bookName}+'全文阅读,'+${book.bookName}+'免费阅读,'+${book.bookName}+'下载'"/>
<link rel="stylesheet" href="/css/main.css"/>
<link rel="stylesheet" href="/css/book.css"/>
</head>
@ -16,7 +16,7 @@
<div class="main box_center cf">
<div class="nav_sub">
<a href="/" th:text="#{website.name}"></a>&gt;<a th:href="'/book/bookclass.html?c='+${book.catId}" th:text="${book.catName}"></a>&gt;<a
<a href="/" th:text="${application.website.name}"></a>&gt;<a th:href="'/book/bookclass.html?c='+${book.catId}" th:text="${book.catName}"></a>&gt;<a
th:href="'/book/'+${book.id}+'.html'" th:utext="${book.bookName}"></a>&gt;<a
th:href="'/book/indexList-'+${book.id}+'.html'">作品目录</a>
</div>

View File

@ -3,9 +3,9 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head th:replace="common/header :: common_head(~{::title},~{::meta},~{::link},~{})">
<title th:text="'小说排行榜_'+#{website.name}"></title>
<title th:text="'小说排行榜_'+${application.website.name}"></title>
<meta name="keywords" content="小说排行榜,热门小说榜,小说排行榜完结版,完结小说排行榜,完本小说排行榜,最新小说排行榜,网络小说排行榜,排行榜,点击榜,新书榜,推荐榜" />
<meta name="description" th:content="'最新热门网络小说排行榜,包含各类热门小说榜,小说排行榜上都是受用户喜爱的小说作品,精彩尽在'+#{website.name}+'。'" />
<meta name="description" th:content="'最新热门网络小说排行榜,包含各类热门小说榜,小说排行榜上都是受用户喜爱的小说作品,精彩尽在'+${application.website.name}+'。'" />
<link rel="stylesheet" href="/css/main.css" />
<link rel="stylesheet" href="/css/book.css" />
</head>

View File

@ -2,10 +2,10 @@
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head th:replace="common/header :: common_head(~{::title},~{::meta},~{::link},~{})">
<title th:text="'全部作品_'+#{website.name}"></title>
<meta name="keywords" th:content="#{website.name}+',小说,小说网,言情小说,都市小说,玄幻小说,穿越小说,青春小说,总裁豪门小说,网络小说,免费小说,全本小说,原创网络文学'"/>
<title th:text="'全部作品_'+${application.website.name}"></title>
<meta name="keywords" th:content="${application.website.name}+',小说,小说网,言情小说,都市小说,玄幻小说,穿越小说,青春小说,总裁豪门小说,网络小说,免费小说,全本小说,原创网络文学'"/>
<meta name="description"
th:content="#{website.name}+'每日更新小说连载,小说排行榜,提供言情小说,都市小说,玄幻小说,穿越小说,青春小说,总裁豪门小说,网络小说,免费小说,全本小说,首发小说,最新章节免费小说阅读,精彩尽在'+#{website.name}+'。'"/>
th:content="${application.website.name}+'每日更新小说连载,小说排行榜,提供言情小说,都市小说,玄幻小说,穿越小说,青春小说,总裁豪门小说,网络小说,免费小说,全本小说,首发小说,最新章节免费小说阅读,精彩尽在'+${application.website.name}+'。'"/>
<link href="favicon.ico" type="image/x-icon" rel="shortcut icon"/>
<link href="favicon.ico" type="image/x-icon" rel="Bookmark"/>
<link rel="stylesheet" href="/css/main.css"/>

View File

@ -3,7 +3,7 @@
<div class="copyright">
<ul >
<li class="menu"><a href="/?to=mobile">手机站</a><i class="line">|</i><a href="/">网站首页</a><i class="line">|</i><a href="/about/default.html" >关于我们</a><i class="line">|</i><a href="/about/contact.html" >联系我们</a><i class="line">|</i><a href="/user/feedback.html" >反馈留言</a><i class="line">|</i><a href="/author/index.html" >作家专区</a><i class="line">|</i><a href="/mobile/fiction_house.apk" >客户端</a></li>
<li th:text="'Copyright (C) '+#{website.domain}+' All rights reserved&nbsp;&nbsp;'+#{website.name}+'版权所有'"></li>
<li th:text="'Copyright (C) '+${application.website.domain}+' All rights reserved&nbsp;&nbsp;'+${application.website.name}+'版权所有'"></li>
</ul>
</div>

View File

@ -2,7 +2,7 @@
<div class="topBar" style="display: none">
<div class="box_center cf">
<div class="top_l">
<a href="/" class="on" th:text="#{website.name}"></a><i class="line">|</i><a
<a href="/" class="on" th:text="${application.website.name}"></a><i class="line">|</i><a
href="/?m=2">手机女生版</a><i class="line">|</i><a
href="/?m=1">手机男生版</a><i class="line">|</i><a
href="/">客户端下载</a>
@ -21,7 +21,7 @@
</div>
<div class="topMain">
<div class="box_center cf">
<a href="/?m=2" class="logo fl"><img src="/images/logo.png" th:alt="#{website.name}"/></a>
<a href="/?m=2" class="logo fl"><img src="/images/logo.png" th:alt="${application.website.name}"/></a>
<div class="searchBar fl">
<div class="search cf">
<input type="text" placeholder="书名作者关键字" class="s_int" name="searchKey" id="searchKey"/>

View File

@ -3,10 +3,10 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head th:replace="common/header :: common_head(~{::title},~{::meta},~{::link},~{})">
<title th:text="#{website.name}+'_原创小说网站'"></title>
<meta name="keywords" th:content="#{website.name}+',小说,小说网,言情小说,都市小说,玄幻小说,穿越小说,青春小说,总裁豪门小说,网络小说,免费小说,全本小说,原创网络文学'"/>
<title th:text="${application.website.name}+'_原创小说网站'"></title>
<meta name="keywords" th:content="${application.website.name}+',小说,小说网,言情小说,都市小说,玄幻小说,穿越小说,青春小说,总裁豪门小说,网络小说,免费小说,全本小说,原创网络文学'"/>
<meta name="description"
th:content="#{website.name}+'每日更新小说连载,小说排行榜,提供言情小说,都市小说,玄幻小说,穿越小说,青春小说,总裁豪门小说,网络小说,免费小说,全本小说,首发小说,最新章节免费小说阅读,精彩尽在'+#{website.name}+'。'"/>
th:content="${application.website.name}+'每日更新小说连载,小说排行榜,提供言情小说,都市小说,玄幻小说,穿越小说,青春小说,总裁豪门小说,网络小说,免费小说,全本小说,首发小说,最新章节免费小说阅读,精彩尽在'+${application.website.name}+'。'"/>
<link href="favicon.ico" type="image/x-icon" rel="shortcut icon"/>
<link href="favicon.ico" type="image/x-icon" rel="Bookmark"/>
<link rel="stylesheet" href="/css/main.css"/>

View File

@ -5,13 +5,13 @@
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<title th:text="#{website.name}+'列表'"></title>
<title th:text="${application.website.name}+'列表'"></title>
<meta name="keywords"
th:content="#{website.name}+',精品小说,弹幕网站,弹幕,弹幕小说网站,免费小说,小说阅读,小说排行,轻小说,txt小说下载,电子书下载,动漫轻小说,日本轻小说'">
th:content="${application.website.name}+',精品小说,弹幕网站,弹幕,弹幕小说网站,免费小说,小说阅读,小说排行,轻小说,txt小说下载,电子书下载,动漫轻小说,日本轻小说'">
<meta name="description"
th:content="#{website.name}+'是国内优秀的小说弹幕网站,'+#{website.name}+'提供海量热门网络小说,日本轻小说,国产轻小说,动漫小说,轻小说在线阅读和TXT小说下载,致力于网络精品小说的收集,智能计算小说评分,打造小说精品排行榜,致力于无广告无弹窗的小说阅读环境。'">
th:content="${application.website.name}+'是国内优秀的小说弹幕网站,'+${application.website.name}+'提供海量热门网络小说,日本轻小说,国产轻小说,动漫小说,轻小说在线阅读和TXT小说下载,致力于网络精品小说的收集,智能计算小说评分,打造小说精品排行榜,致力于无广告无弹窗的小说阅读环境。'">
<div th:include="mobile/common/css :: css"></div>

View File

@ -6,17 +6,17 @@
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<title th:text="#{website.name}"></title>
<title th:text="${application.website.name}"></title>
<meta name="keywords" th:content="#{website.name}+',精品小说,弹幕网站,弹幕,弹幕小说网站,免费小说,小说阅读,小说排行,轻小说,txt小说下载,电子书下载,动漫轻小说,日本轻小说'">
<meta name="keywords" th:content="${application.website.name}+',精品小说,弹幕网站,弹幕,弹幕小说网站,免费小说,小说阅读,小说排行,轻小说,txt小说下载,电子书下载,动漫轻小说,日本轻小说'">
<meta name="description"
th:content="#{website.name}+'是国内优秀的小说弹幕网站,'+#{website.name}+'提供海量热门网络小说,日本轻小说,国产轻小说,动漫小说,轻小说在线阅读和TXT小说下载,致力于网络精品小说的收集,智能计算小说评分,打造小说精品排行榜,致力于无广告无弹窗的小说阅读环境。'">
th:content="${application.website.name}+'是国内优秀的小说弹幕网站,'+${application.website.name}+'提供海量热门网络小说,日本轻小说,国产轻小说,动漫小说,轻小说在线阅读和TXT小说下载,致力于网络精品小说的收集,智能计算小说评分,打造小说精品排行榜,致力于无广告无弹窗的小说阅读环境。'">
<meta property="og:type" content="novel_index"/>
<meta property="og:title" th:content="#{website.name}"/>
<meta property="og:title" th:content="${application.website.name}"/>
<meta property="og:description"
th:content="#{website.name}+'是国内优秀的小说弹幕网站,'+#{website.name}+'提供海量热门网络小说,日本轻小说,国产轻小说,动漫小说,轻小说在线阅读和TXT小说下载,致力于网络精品小说的收集,智能计算小说评分,打造小说精品排行榜,致力于无广告无弹窗的小说阅读环境。'"/>
th:content="${application.website.name}+'是国内优秀的小说弹幕网站,'+${application.website.name}+'提供海量热门网络小说,日本轻小说,国产轻小说,动漫小说,轻小说在线阅读和TXT小说下载,致力于网络精品小说的收集,智能计算小说评分,打造小说精品排行榜,致力于无广告无弹窗的小说阅读环境。'"/>
<div th:include="mobile/common/css :: css"></div>

View File

@ -3,7 +3,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head th:replace="common/header :: common_head(~{::title},~{},~{::link},~{})">
<title th:text="'充值_'+#{website.name}"></title>
<title th:text="'充值_'+${application.website.name}"></title>
<link rel="stylesheet" href="/css/base.css"/>
<link rel="stylesheet" href="/css/main.css"/>
</head>

View File

@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head th:replace="common/header :: common_head(~{::title},~{},~{::link},~{})">
<title th:text="'我的书评_'+#{website.name}"></title>
<title th:text="'我的书评_'+${application.website.name}"></title>
<link rel="stylesheet" href="/css/user.css"/>
</head>
<body class="">

View File

@ -2,9 +2,9 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<head th:replace="common/header :: common_head(~{::title},~{::meta},~{::link},~{})">
<title th:text="'我的书架_'+#{website.name}"></title>
<meta name="keywords" th:content="'我的书架,个人中心,'+#{website.name}+'小说,'+#{website.name}" />
<meta name="description" th:content="#{website.name}+'小说每日更新小说连载,小说排行榜,提供言情小说,都市小说,玄幻小说,穿越小说,青春小说,总裁豪门小说,网络小说,免费小说,全本小说,首发小说,最新章节免费小说阅读,精彩尽在'+#{website.name}+'小说!'" />
<title th:text="'我的书架_'+${application.website.name}"></title>
<meta name="keywords" th:content="'我的书架,个人中心,'+${application.website.name}+'小说,'+${application.website.name}" />
<meta name="description" th:content="${application.website.name}+'小说每日更新小说连载,小说排行榜,提供言情小说,都市小说,玄幻小说,穿越小说,青春小说,总裁豪门小说,网络小说,免费小说,全本小说,首发小说,最新章节免费小说阅读,精彩尽在'+${application.website.name}+'小说!'" />
<link rel="stylesheet" href="/css/user.css" />
</head>
</head>

View File

@ -2,7 +2,7 @@
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head th:replace="common/header :: common_head(~{::title},~{},~{::link},~{})">
<title th:text="'反馈留言_'+#{website.name}"></title>
<title th:text="'反馈留言_'+${application.website.name}"></title>
<link rel="stylesheet" href="/css/user.css"/>
</head>
<body class="">

View File

@ -3,7 +3,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head th:replace="common/header :: common_head(~{::title},~{},~{::link},~{})">
<title th:text="'我的反馈_'+#{website.name}"></title>
<title th:text="'我的反馈_'+${application.website.name}"></title>
<link rel="stylesheet" href="/css/user.css"/>
</head>
<body class="">

View File

@ -3,9 +3,9 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head th:replace="common/header :: common_head(~{::title},~{::meta},~{::link},~{})">
<title th:text="'会员登录_'+#{website.name}"></title>
<meta name="keywords" th:content="'会员登录,个人中心,'+#{website.name}+'小说,'+#{website.name}" />
<meta name="description" th:content="#{website.name}+'小说每日更新小说连载,小说排行榜,提供言情小说,都市小说,玄幻小说,穿越小说,青春小说,总裁豪门小说,网络小说,免费小说,全本小说,首发小说,最新章节免费小说阅读,精彩尽在'+#{website.name}+'小说!'" />
<title th:text="'会员登录_'+${application.website.name}"></title>
<meta name="keywords" th:content="'会员登录,个人中心,'+${application.website.name}+'小说,'+${application.website.name}" />
<meta name="description" th:content="${application.website.name}+'小说每日更新小说连载,小说排行榜,提供言情小说,都市小说,玄幻小说,穿越小说,青春小说,总裁豪门小说,网络小说,免费小说,全本小说,首发小说,最新章节免费小说阅读,精彩尽在'+${application.website.name}+'小说!'" />
<link rel="stylesheet" href="/css/user.css" />
</head>
<body class="">
@ -26,7 +26,7 @@
<input type="hidden" name="__VIEWSTATEGENERATOR" id="__VIEWSTATEGENERATOR" value="C93BE1AE" />
<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEdAAXkRxK+hbBn9D6bVAXo8t/4qKSXUE1UN51mNFrIuw38c3Y2+Mc6SrnAqio3oCKbxYainihG6d/Xh3PZm3b5AoMQ2xnvcKe7Apj/DdmzfeCXoTjAjITeRewsBR3AmjdQ75+yP5bUUcdUUiZlMKONJDef" />
</div>
<h3 th:text="'登陆'+#{website.name}"></h3>
<h3 th:text="'登陆'+${application.website.name}"></h3>
<ul class="log_list">
<li><span id="LabErr"></span></li>
<li><input name="txtUName" type="text" id="txtUName" placeholder="手机号码" class="s_input icon_name" /></li>

View File

@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head th:replace="common/header :: common_head(~{::title},~{},~{::link},~{})">
<title th:text="'最近阅读_'+#{website.name}"></title>
<title th:text="'最近阅读_'+${application.website.name}"></title>
<link rel="stylesheet" href="/css/user.css"/>
</head>
<body class="">

View File

@ -2,10 +2,10 @@
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head th:replace="common/header :: common_head(~{::title},~{::meta},~{::link},~{})">
<title th:text="'会员注册_'+#{website.name}"></title>
<meta name="keywords" th:content="'会员注册,个人中心,'+#{website.name}+'小说,'+#{website.name}"/>
<title th:text="'会员注册_'+${application.website.name}"></title>
<meta name="keywords" th:content="'会员注册,个人中心,'+${application.website.name}+'小说,'+${application.website.name}"/>
<meta name="description"
th:content="#{website.name}+'小说每日更新小说连载,小说排行榜,提供言情小说,都市小说,玄幻小说,穿越小说,青春小说,总裁豪门小说,网络小说,免费小说,全本小说,首发小说,最新章节免费小说阅读,精彩尽在'+#{website.name}+'小说!'"/>
th:content="${application.website.name}+'小说每日更新小说连载,小说排行榜,提供言情小说,都市小说,玄幻小说,穿越小说,青春小说,总裁豪门小说,网络小说,免费小说,全本小说,首发小说,最新章节免费小说阅读,精彩尽在'+${application.website.name}+'小说!'"/>
<link rel="stylesheet" href="/css/user.css" />
</head>
<body class="">
@ -28,7 +28,7 @@
value="/wEdAAVece19BIZ9HiByRfHz3pfnqKSXUE1UN51mNFrIuw38c3Y2+Mc6SrnAqio3oCKbxYZZ1lS+gZUZKpbsAea8j7ASAv40DHFcQ/NE7tJUnABeyQ3d9sFDIcFCYNqlVtprfLoh4JFy0U+R/CcMuyAiWTz7"/>
</div>
<div class="user_l">
<h3 th:text="'注册'+#{website.name}+'小说账号'"></h3>
<h3 th:text="'注册'+${application.website.name}+'小说账号'"></h3>
<ul class="log_list">
<li><span id="LabErr"></span></li>
<li><input name="txtUName" type="text" id="txtUName" class="s_input icon_name"

View File

@ -2,7 +2,7 @@
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head th:replace="common/header :: common_head(~{::title},~{},~{::link},~{})">
<title th:text="'修改昵称_'+#{website.name}"></title>
<title th:text="'修改昵称_'+${application.website.name}"></title>
<link rel="stylesheet" href="/css/user.css"/>
</head>
<body class="">

View File

@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head th:replace="common/header :: common_head(~{::title},~{},~{::link},~{})">
<title th:text="'修改密码_'+#{website.name}"></title>
<title th:text="'修改密码_'+${application.website.name}"></title>
<link rel="stylesheet" href="/css/user.css"/>
</head>
<body class="">

View File

@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head th:replace="common/header :: common_head(~{::title},~{},~{::link},~{})">
<title th:text="'修改性别_'+#{website.name}"></title>
<title th:text="'修改性别_'+${application.website.name}"></title>
<link rel="stylesheet" href="/css/user.css"/>
</head>
<body class="">

View File

@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head th:replace="common/header :: common_head(~{::title},~{},~{::link},~{})">
<title th:text="'账号设置_'+#{website.name}"></title>
<title th:text="'账号设置_'+${application.website.name}"></title>
<link rel="stylesheet" href="/css/user.css"/>
</head>
<body class="">

View File

@ -3,7 +3,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head th:replace="common/header :: common_head(~{::title},~{},~{::link},~{})">
<title th:text="'个人中心_'+#{website.name}"></title>
<title th:text="'个人中心_'+${application.website.name}"></title>
<link rel="stylesheet" href="/css/user.css"/>
</head>
<body class="">

View File

@ -5,7 +5,7 @@
<groupId>com.java2nb</groupId>
<artifactId>novel</artifactId>
<version>3.3.0</version>
<version>3.4.0</version>
<modules>
<module>novel-common</module>
<module>novel-front</module>
@ -37,7 +37,7 @@
<orderbyhelper.version>1.0.2</orderbyhelper.version>
<commons-lang3.version>3.4</commons-lang3.version>
<jjwt.version>0.9.0</jjwt.version>
<elasticsearch.version>6.2.2</elasticsearch.version>
<elasticsearch.version>7.9.3</elasticsearch.version>
<jest.version>6.3.1</jest.version>
<redis.version>1.4.1.RELEASE</redis.version>
<redisson.version>3.12.5</redisson.version>

View File

@ -0,0 +1,17 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Page Not Found</title>
<script>
setTimeout(function () {
location.href = '/';
},3000)
</script>
</head>
<body style="background: url(/images/404.jpeg) no-repeat;" >
</body>
</html>

View File

@ -0,0 +1,5 @@
<div th:fragment="footer" class="footer">
<div style="display: none"></div>
<p><a href="/" rel="index">小说精品屋</a>所有内容使用搜索引擎转码技术抓取自网络,如有侵犯版权,请来信告知,本站立即处理。</p>
<p>Copyright © 2019-2020 http://www.java2nb.com All rights reserved.</p>
</div>

View File

@ -0,0 +1,25 @@
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head th:fragment="common_head(title,meta,links,script)">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
<title th:replace="${title}">小说精品屋</title>
<link rel="stylesheet" href="/css/base.css?v=1"/>
<th:block th:replace="${meta}"/>
<th:block th:replace="${links}"/>
<th:block th:replace="${script}"/>
<script>
var _hmt = _hmt || [];
(function() {
var hm = document.createElement("script");
hm.src = "https://hm.baidu.com/hm.js?ecc8b50a3122e6d5e09be7a9e5383e07";
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(hm, s);
})();
</script>
</head>
<body>
</body>
</html>

View File

@ -0,0 +1,4 @@
<script th:fragment="js" src="/javascript/jquery-1.8.0.min.js" type="text/javascript"></script>
<script th:fragment="js" src="/layui/layui.all.js" type="text/javascript"></script>
<script th:fragment="js" src="/javascript/header.js" type="text/javascript"></script>
<script th:fragment="js" src="/javascript/common.js" type="text/javascript"></script>

View File

@ -0,0 +1,28 @@
<div th:fragment="top(navType)" class="header">
<div class="inner">
<div class="logo"><a href="/"><img src="/images/logo.png" alt="小说精品屋"></a></div>
<div class="nav">
<ul class="clearfix">
<li class="on">
<a href="/">首页</a>
</li>
<li>
<a href="/#">书库</a>
</li>
<li>
<a href="/#">排行</a>
</li>
</ul>
</div>
<div class="search">
<form method="get" name="search" action="/#" target="_blank">
<input type="text" name="keyword" id="q" placeholder="请输入书名·作者" class="search-key">
<button type="submit" class="search-btn" id="search-btn">搜索</button>
</form>
</div>
<div class="other">
<a class="link-wap" href="/">手机版</a>
</div>
</div>
</div>

View File

@ -0,0 +1,293 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>小说精品屋无弹窗广告小说免费阅读,值得收藏的小说阅读网 - 小说精品屋</title>
<meta name="keywords" content="小说精品屋">
<meta name="description"
content="小说精品屋致力于提供无弹窗广告小说在线免费阅读,一个值得收藏的小说阅读网。小说精品屋收录了当前最火热的网络小说,免费提供高质量的小说最新章节,小说TXT全文,小说爱好者必备。">
<link href="/favicon.ico" rel="shortcut icon">
<link href="/css/base.css" rel="stylesheet" type="text/css">
<link href="/css/hs13.css" rel="stylesheet" type="text/css">
<link href="/layui/css/layui.css" rel="stylesheet" type="text/css">
<script src="/javascript/jquery-1.7.2.min.js"></script>
<script src="/javascript/function.js"></script>
</head>
<body>
<!--header-->
<div th:replace="common/top :: top('0')">
</div>
<!--/header-->
<!--container-->
<div class="container clearfix">
<div class="wrap box3 clearfix">
<div class="rec-book">
<h3>精品推荐</h3>
<div id="classicBook" class="carousel">
</div>
<div class="rec-list">
<ul id="classicBooks">
</ul>
</div>
</div>
<div class="latest-news">
<!--category-->
<div class="category">
<ul class="clearfix">
<li><a href="#" target="_self">玄幻奇幻</a></li>
<li><a href="#" target="_self">武侠仙侠</a></li>
<li><a href="#" target="_self">都市言情</a></li>
<li><a href="#" target="_self">历史军事</a></li>
<li><a href="#" target="_self">科幻灵异</a></li>
<li><a href="#" target="_self">网游竞技</a></li>
<li><a href="#" target="_self">女生频道</a></li>
</ul>
</div>
</div>
<div class="wrap box3 clearfix">
<div class="rec-book">
<h3>热门推荐</h3>
<div id="hotRecBook" class="carousel">
</div>
<div class="rec-list">
<ul class="clearfix" id="hotRecBooks">
</ul>
</div>
</div>
<div class="latest-news">
<h3>最新新闻</h3>
<ul id="indexNews">
</ul>
</div>
</div>
<!--/box3-->
<!--box4-->
<div class="wrap box4 clearfix">
<div class="new-book">
<h3>最近更新</h3>
<!--tab1-->
<ul class="clearfix home_cid_list" id="updateRankBooks">
</ul>
</div>
</div>
<!--/box4-->
<!--box5-->
<!--/box5-->
<!--friend-link-->
<div class="wrap clearfix">
<div class="friend-link">
<h5>友情链接</h5>
<ul class="clearfix" id="friendLink" style="padding: 10px">
</ul>
</div>
</div>
<!--/friend-link-->
</div>
<script src="/javascript/focus.js"></script>
<!--/container-->
<!--footer-->
<div th:replace="common/footer :: footer">
</div>
<!--/footer-->
<script type="text/javascript" src="/layui/layui.js"></script>
<script type="text/javascript" src="/javascript/bookcase.js"></script>
<script type="text/javascript">
//搜索输入字符串合法性验证
$("#search-btn").on("click", function () {
var str = $("#q").val();
var ret = /[^\w\u4e00-\u9fa5]/;
if (ret.test(str)) {
alert("搜索内容不合法");
return false;
} else if (str === null || str === undefined || str === '') {
alert("搜索内容不能为空");
return false;
} else {
return ture;
}
});
$(function () {
//加载首页书籍设置数据
$.ajax({
type: "get",
url: "/book/listBookSetting",
data: {},
dataType: "json",
success: function (data) {
if (data.code == 200) {
//热门推荐
var hotRecBooks = data.data[3];
var hotRecBooksHtml = "";
for (var i = 0; i < hotRecBooks.length; i++) {
var hotRecBook = hotRecBooks[i];
if(i == 0){
$("#hotRecBook").html("<div class=\"carousel-img\">\n" +
" <a href=\"/book/"+hotRecBook.bookId+".html\" target=\"_blank\" title=\""+hotRecBook.bookName+"\"><img class=\"lazy\"\n" +
" src=\""+hotRecBook.picUrl+"\"\n" +
" alt=\""+hotRecBook.bookName+"\"></a>\n" +
" </div>\n" +
" <ul class=\"carousel-nav\">\n" +
" <li >\n" +
" <h4><a href=\"#\" target=\"_blank\">"+hotRecBook.bookName+"</a></h4>\n" +
" <p class=\"author\">"+hotRecBook.authorName+"</p>\n" +
" <p class=\"info\"><span class=\"type\">"+hotRecBook.catName+"</span><span class=\"serial\">连载中</span></p>\n" +
" <p class=\"intro\">"+hotRecBook.bookDesc+"</p>\n" +
" <a class=\"view\" href=\"#\" target=\"_blank\">小说详情</a>\n" +
" </li>\n" +
" </ul>");
}else{
hotRecBooksHtml += ("<li>\n" +
" <a class=\"pic\" href=\"#\" target=\"_blank\"><img class=\"lazy\"\n" +
" src=\""+hotRecBook.picUrl+"\"\n" +
" alt=\""+hotRecBook.bookName+"\"></a>\n" +
" <h5 class=\"tit\"><a href=\"#\" target=\"_blank\">"+hotRecBook.bookName+"</a>\n" +
" </h5>\n" +
" <p class=\"intro\">"+hotRecBook.bookDesc+"</p>\n" +
" <p class=\"info\">作者:<span>"+hotRecBook.authorName+"</span><em>"+hotRecBook.catName+"</em></p>\n" +
" </li>");
}
}
$("#hotRecBooks").html(hotRecBooksHtml);
//精品推荐
var classicBooks = data.data[4];
var classicBooksHtml = "";
for (var i = 0; i < classicBooks.length; i++) {
var classicBook = classicBooks[i];
if(i == 0) {
$("#classicBook").html("<div class=\"carousel-img\">\n" +
" <a href=\"/book/"+classicBook.bookId+".html\" target=\"_blank\" title=\""+classicBook.bookName+"\"><img class=\"lazy\"\n" +
" src=\""+classicBook.picUrl+"\"\n" +
" alt=\""+classicBook.bookName+"\"></a>\n" +
" </div>\n" +
" <ul class=\"carousel-nav\">\n" +
" <li >\n" +
" <h4><a href=\"#\" target=\"_blank\">"+classicBook.bookName+"</a></h4>\n" +
" <p class=\"author\">"+classicBook.authorName+"</p>\n" +
" <p class=\"info\"><span class=\"type\">"+classicBook.catName+"</span><span class=\"serial\">连载中</span></p>\n" +
" <p class=\"intro\">"+classicBook.bookDesc+"</p>\n" +
" <a class=\"view\" href=\"#\" target=\"_blank\">小说详情</a>\n" +
" </li>\n" +
" </ul>");
}else{
classicBooksHtml += ("<li>\n" +
" <a class=\"pic\" href=\"#\" target=\"_blank\"><img class=\"lazy\"\n" +
" src=\""+classicBook.picUrl+"\"\n" +
" alt=\""+classicBook.bookName+"\"></a>\n" +
" <h5 class=\"tit\"><a href=\"#\" target=\"_blank\">"+classicBook.bookName+"</a>\n" +
" </h5>\n" +
" <p class=\"intro\">"+classicBook.bookDesc+"</p>\n" +
" <p class=\"info\">作者:<span>"+classicBook.authorName+"</span><em>"+classicBook.catName+"</em></p>\n" +
" </li>");
}
}
$("#classicBooks").html(classicBooksHtml);
} else {
layer.alert(data.msg);
}
},
error: function () {
layer.alert('网络异常');
}
})
//首页新闻查询
$.ajax({
type: "get",
url: "/news/listByPage",
data: {'curr':1,'limit':12},
dataType: "json",
success: function (data) {
if (data.code == 200) {
var indexNewsList = data.data.list;
var indexNewsHtml = "";
for (var i = 0; i < indexNewsList.length; i++) {
var indexNews = indexNewsList[i];
indexNewsHtml += ("<li><em>"+indexNews.createTime.substring(5,10)+"</em><a href=\"#\"\n" +
" target=\"_blank\">"+indexNews.title+"</a></li>");
}
$("#indexNews").html(indexNewsHtml);
} else {
layer.alert(data.msg);
}
},
error: function () {
layer.alert('网络异常');
}
})
//更新榜单查询
$.ajax({
type: "get",
url: "/book/listUpdateRank",
data: {},
dataType: "json",
success: function (data) {
if (data.code == 200) {
var updateRankBooks = data.data;
var updateRankBookHtml = "";
for (var i = 0; i < updateRankBooks.length; i++) {
var updateRankBook = updateRankBooks[i];
updateRankBookHtml += ("<li>\n" +
" <a href=\"#\" target=\"_blank\"><img class=\"lazy\"\n" +
" src=\""+updateRankBook.picUrl+"\"\n" +
" alt=\""+updateRankBook.bookName+"\"><span>"+updateRankBook.bookName+"</span></a>\n" +
" \n" +
" </li>");
}
$("#updateRankBooks").html(updateRankBookHtml);
} else {
layer.alert(data.msg);
}
}
,
error: function () {
layer.alert('网络异常');
}
})
//友情链接查询
$.ajax({
type: "get",
url: "/friendLink/listIndexLink",
data: {},
dataType: "json",
success: function (data) {
if (data.code == 200) {
var friendLinkList = data.data;
var friendLinkHtml = "";
for (var i = 0; i < friendLinkList.length; i++) {
var friendLink = friendLinkList[i];
friendLinkHtml += ("<li><a target='_blank' href=\""+friendLink.linkUrl+"\">"+friendLink.linkName+"</a></li>");
}
$("#friendLink").append(friendLinkHtml);
} else {
layer.alert(data.msg);
}
},
error: function () {
layer.alert('网络异常');
}
})
});
</script>
<script src="/layui/lay/modules/layer.js"></script>
</div>
</body>
</html>

View File

@ -0,0 +1,361 @@
body,dl,dd,dt,p,ol,ul,li,h1,h2,h3,h4,h5,h6,b,strong,em,input,textarea,button,select {
margin: 0;
padding: 0;
}
html,body {
height: 100%;
}
body {
color: #484848;
font: 14px/1 "microsoft yahei";
background: #fff;
}
i,s,u,em {
font-style: normal;
text-decoration: none;
}
h1,h2,h3,h4,h5,h6,b {
font-weight: normal;
}
input,textarea,button,select {
font-size: 14px;
font-family: "microsoft yahei";
outline: 0 none;
}
li {
list-style: none;
}
img {
border: none;
vertical-align: top;
}
a {
color: #484848;
text-decoration: none;
transition: color .1s,background-color .1s,border .1s;
}
a:hover {
color: #ff6939;
}
input::input-placeholder {
color: #80b0c8!important;
}
::-webkit-input-placeholder {
color: #80b0c8!important;
}
:-moz-placeholder {
color: #80b0c8!important;
}
::-moz-placeholder {
color: #80b0c8!important;
}
:-ms-input-placeholder {
color: #80b0c8!important;
}
.clearfix:before,
.clearfix:after {
clear: both;
display: block;
visibility: hidden;
overflow: hidden;
height: 0;
content: " ";
}
.lf {
float: left;
}
.rf {
float: right;
}
.tips {
position: absolute;
z-index: 2000;
display: none;
height: 54px;
line-height: 54px;
background: rgba(0, 0, 0, 0.7);
border-radius: 5px;
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
-ms-border-radius: 5px;
color: #fff;
font-size: 16px;
}
.tips i {
width: 0;
height: 0;
}
.tips span {
padding: 0 25px;
width:auto;
height:54px;
}
/*header*/
.header {
width: 100%;
background: #0189d0;
}
.header .inner {
margin: 0 auto;
height: 70px;
width: 1200px;
}
.header .logo {
float: left;
margin-top: 15px;
width: 150px;
height: 40px;
overflow: height;
}
.header .logo img {
width: 100%;
height: 100%;
}
.header .nav {
float: left;
margin-left: 40px;
margin-top: 15px;
}
.header .nav ul {
height: 40px;
}
.header .nav ul li {
float: left;
}
.header .nav ul li a {
display: inline-block;
margin: 2px 0;
padding: 0 24px;
height: 36px;
line-height: 36px;
font-size: 18px;
color: #fff;
background: transparent;
border-radius: 100px;
}
.header .nav ul li.on a {
background: #279bd7;
}
.header .search {
float: left;
margin-left: 340px;
margin-top: 17px;
width: 260px;
height: 36px;
background: #016ea6;
border-radius: 18px;
}
.header .search .search-key {
float: left;
margin-left: 20px;
width: 200px;
height: 36px;
color: #d4dee7;
background: none;
border: none;
}
.header .search .search-btn {
float: right;
width: 40px;
height: 36px;
text-indent: -999px;
background: url(../images/icon-search.png) no-repeat 50% 50%;
border: none;
overflow: hidden;
cursor: pointer;
}
.header .other {
float: left;
margin-left: 30px;
margin-top: 17px;
}
.header .other .link-wap {
display: inline-block;
padding-left: 22px;
line-height: 36px;
font-size: 18px;
color: #fff;
background: url(/images/icon-mobile.png) no-repeat 0 50%;
}
.header .other .link-bookshelf {
margin-left: 15px;
display: inline-block;
line-height: 36px;
padding-left: 20px;
font-size: 18px;
color: #fff;
background: url(../images/icon-bookshelf.png) no-repeat 0 50%;
}
.header .other .link-hs13 {
margin-left: 15px;
display: inline-block;
line-height: 36px;
font-size: 18px;
color: #fff;
}
/*footer*/
.footer {
padding: 20px 0;
width: 100%;
background: #fff;
border-top: 2px solid #0189d0;
overflow: hidden;
}
.footer p {
line-height: 2;
font-size: 18px;
color: #999;
text-align: center;
}
.footer p a {
color: #999;
}
.footer p a:hover {
color: #fc6e38;
}
/*bookshelf*/
.bookshelf-mask {
display: block;
width: 100%;
height: 100%;
background: #000;
opacity: 0.5;
position: fixed;
left: 0;
top: 0;
z-index: 10000;
_position: absolute;
_top:expression(eval(document.documentElement.scrollTop));
}
.bookshelf-panel {
display: block;
margin-left: -320px;
margin-top: -240px;
width: 640px;
height: 480px;
background: #fff;
box-shadow: 0 0 10px rgba(0,0,0,0.5);
position: fixed;
top: 50%;
left: 50%;
z-index: 10001;
_position: absolute;
_left:expression(eval(document.body.clientWidth-this.offsetWidth)/2);
_top:expression(eval(document.body.clientHeight-this.offsetHeight)/2);
}
.bookshelf-head {
height: 49px;
border-bottom: 1px solid #ebebeb;
}
.bookshelf-head h4 {
float: left;
margin-left: 20px;
line-height: 49px;
font-size: 18px;
font-weight: bold;
color: #333;
}
.bookshelf-head a {
float: right;
margin-top: 18px;
margin-right: 15px;
cursor: pointer;
}
.bookshelf-head a:hover {
background-position: 0 -24px;
}
.bookshelf-list {
height: 430px;
position: relative;
overflow-y: auto;
}
.bookshelf-list ul li {
position: relative;
padding: 15px 15px;
height: 107px;
border-bottom: 1px dashed #ebebeb;
}
.bookshelf-list ul li:hover {
background: #fffbf2;
}
.bookshelf-list ul li .pic {
position: relative;
float: left;
margin-right: 15px;
width: 80px;
height: 107px;
}
.bookshelf-list ul li .pic img {
width: 100%;
height: 100%;
vertical-align: top;
}
.bookshelf-list ul li .pic i {
position: absolute;
left: 0;
bottom: 0;
display: block;
width: 100%;
height: 20px;
line-height: 20px;
text-align: center;
}
.bookshelf-list ul li .pic i.serial {
background: #489738;
background: rgba(72,151,56,.9);
color: #fff;
}
.bookshelf-list ul li .pic i.finish {
background: #c9142a;
background: rgba(201,20,42,.9);
color: #fff;
}
.bookshelf-list ul li .tit {
display: block;
margin-bottom: 10px;
line-height: 24px;
font-size: 18px;
}
.bookshelf-list ul li .update {
display: block;
margin-bottom: 19px;
line-height: 24px;
}
.bookshelf-list ul li .update a {
color: #0189d0;
}
.bookshelf-list ul li .read {
display: block;
}
.bookshelf-list ul li .read a {
display: inline-block;
width: 90px;
height: 28px;
line-height: 28px;
color: #ff6939;
text-align: center;
border: 1px solid #ff6939;
border-radius: 100px;
}
.bookshelf-list ul li .del {
position: absolute;
right: 15px;
top: 15px;
width: 24px;
height: 24px;
cursor: pointer;
background: url(../images/close.png) no-repeat 0 0;
}
.bookshelf-list ul li .del:hover {
background-position: 0 -24px;
}
.newChapter {
width: 30px;
height: 15px;
display: inline-block;
vertical-align: middle;
margin-top: -4px;
background: url(../images/new.png) no-repeat;
}

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 414 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 414 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 545 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 130 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 270 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 472 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 985 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 283 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 456 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 287 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 159 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 246 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 97 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 380 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 394 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 133 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 197 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 188 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 109 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 426 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 221 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 166 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 222 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 220 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 150 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 449 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 374 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Some files were not shown because too many files have changed in this diff Show More