Permalink
Browse files

添加最新文章列表功能

  • Loading branch information...
1 parent 52e3d8c commit cd13c6e1332b9da6cb3971e5599d74d3232bd7e9 @newghost committed Nov 24, 2015
Showing with 47 additions and 15 deletions.
  1. +11 −0 README.md
  2. +1 −1 schema/article.json
  3. +23 −7 svr/article.js
  4. +2 −2 svr/root.js
  5. +2 −1 web/header.part
  6. +8 −0 web/home.tmpl
  7. +0 −4 web/user.tmpl
View
@@ -37,6 +37,11 @@ OurJS 基于Node.JS和Redis的开源的高性能博客引擎,网站模板,
管理员用户: 首次使用,你需要指定一个管理员用户,你需要使用redis-cli或RedisDesktopManager为你注册的新用户添加isAdmin属性,值设为1,然后重新登录即可。
+如你注册了一个新的用户ourjs,则可通过redis-cli用以下命令将其设置为管理员(ourjs默认使用第7个数据库),运行命令后需要重新登录。
+
+ select 7
+ hset user:ourjs isAdmin 1
+
ourjs 0.1.x 基于哪些框架
----
@@ -46,6 +51,12 @@ ourjs 0.1.x 基于哪些框架
3. 模板引擎采用了性价比较高的 [doT](http://olado.github.io/doT/), 十分钟即可上手。
+为什么新发布的文章无法在首页显示
+----
+
+只有发布后(article中的isPublic=1,并且在"public:1"有序集合中)的文章才可以在首页显示,未发布的文章都在“最新文章”中列出,你需要指定一名管理员用户,然后单击发布或取消发布即可。
+
+
为什么要保留node_modules文件夹
----
View
@@ -5,7 +5,7 @@
, "content" : ""
, "keyword" : "keywords('key', return this.pubTime || +new Date())"
, "poster" : "index('user_article', return this.pubTime || +new Date())"
- , "isPublic" : "index('public', return this.pubTime)"
+ , "isPublic" : "index('public', return this.pubTime || +new Date())"
, "pubTime" : "int"
, "visitNum" : "int"
, "postTime" : "int"
View
@@ -52,8 +52,8 @@ var getPagination = function(config, pagerFormat) {
//handle: /templatename/category/pagenumber, etc: /home/all/0, /home, /json/all/0
var showListHandler = function(req, res, url) {
- var params = app.parseUrl('/:template/:keyword/:pagerNumber', url || req.url)
- , template = params.template || 'home'
+ var params = app.parseUrl('/:tmpl/:keyword/:pagerNumber', url || req.url)
+ , tmpl = params.tmpl || 'home'
, keyword = params.keyword || ''
, pageNumber = parseInt(params.pagerNumber) || 0
, pageSize = 20
@@ -62,6 +62,18 @@ var showListHandler = function(req, res, url) {
var where = { isPublic: 1 }
+ /*
+ 显示最新未审核的文章: isPublic = 0
+ 根据schema "isPublic" : "index('public', return this.pubTime)"
+ 会自动在redis中执行 zadd isPublic:0 [时间权重如:1448377366038] [article ID]
+ */
+ if (tmpl == 'new') {
+ where.isPublic = 0
+ }
+
+ /*
+ 有keyword同样放到where语句中
+ */
keyword && (where.keyword = keyword)
redblade.select('article', where, function(err, articles, count) {
@@ -70,16 +82,20 @@ var showListHandler = function(req, res, url) {
return
}
- template.indexOf('rss') > -1 && res.type('xml')
- res.render(template + ".tmpl", {
+ tmpl.indexOf('rss') > -1 && res.type('xml')
+
+ //new和home使用同一个view
+ var tmplate == 'new' ? 'home' : tmpl
+
+ res.render(tmplate + ".tmpl", {
articles : articles
, keyword : keyword
- , nextPage : '/' + template + '/' + keyword + '/' + (pageNumber + 1)
+ , nextPage : '/' + tmpl + '/' + keyword + '/' + (pageNumber + 1)
, pagination : getPagination({
pageSize : pageSize
, pager : pageNumber
, count : count
- }, '<li {1}><a href="/home/' + keyword + '/{0}">{2}</a></li>')
+ }, '<li {1}><a href="/' + tmpl + '/' + keyword + '/{0}">{2}</a></li>')
})
}, { from: pageNumber * pageSize, to: (pageNumber + 1) * pageSize, desc: true })
@@ -127,7 +143,7 @@ var showDetailHandler = function(req, res) {
}
//127.0.0.1/ or 127.0.0.1/home/category/pagernumber
-app.get(['/home', '/rss'], showListHandler)
+app.get(['/home', '/rss', '/new'], showListHandler)
//redirect访问量+1,防止直接跳转无法计数
app.get(['/article/:id', '/redirect/:id'], showDetailHandler)
View
@@ -75,8 +75,8 @@ app.post("/root/edit.post", function(req, res) {
if (article.title
&& (!article.poster || article.poster === user.username || user.isAdmin)) {
- //只有管理员可设此值
- delete article.isPublic
+ //修改或新增的文章都需要管理员重新审核
+ article.isPublic = 0
/*
此前端会发过来的关键字是这样的,需要整理一下;
keyword[]:java keyword[]:c#
View
@@ -23,7 +23,8 @@
<ul class="dropdown-menu">
<li class="nav-header">文章分类</li>
<li class="divider"></li>
- <li><a href="/home//">所有文章</a></li>
+ <li><a href="/home">所有文章</a></li>
+ <li><a href="/new">最新文章</a></li>
<li class="divider"></li>
<li><a href="/rss" target="_blank">RSS订阅</a></li>
<li><a href="#top" id="aboutlink">关于我们</a></li>
View
@@ -50,6 +50,14 @@
{{?article.keyword}} • {{=article.keyword}} {{?}}
• <a href="/article/{{=article.id}}#comments" target="_blank">发表评论</a>
{{?article.url}}• <a href="{{=article.url}}" target="_blank">原文地址</a>{{?}}
+
+ {{?it.user.isAdmin}}
+ {{?article.isPublic == 1}}
+ • <a href="/root/publish/{{=article.id}}/0" target="_blank"> 取消发布 </a>
+ {{??}}
+ • <a href="/root/publish/{{=article.id}}/1" target="_blank"> 发布 </a>
+ {{?}}
+ {{?}}
</div>
</li>
{{~}}
View
@@ -35,11 +35,7 @@
{{~ it.articles :article:index }}
<div class="article">
<h2 class="title">
- {{?article.content}}
<a href="/article/{{=article.id}}" target="_blank">{{=article.title || ''}}</a>
- {{??}}
- <a href="{{=article.url}}" target="_blank">{{=article.title || ''}}</a>
- {{?}}
</h2>
<div class="note">
by <a class="author" href="/user/{{=article.poster}}" target="_blank">{{=article.poster}}</a>

0 comments on commit cd13c6e

Please sign in to comment.