Skip to content

Commit f77ddf9

Browse files
committed
question
1 parent 5ec8412 commit f77ddf9

File tree

12 files changed

+354
-44
lines changed

12 files changed

+354
-44
lines changed

app.js

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ app.configure(function(){
1818
app.set('views', __dirname + '/views');
1919
app.set('view engine', 'jade');
2020
app.use(express.favicon());
21-
app.use(express.logger('dev'));
21+
// app.use(express.logger('dev'));
2222
app.use(express.bodyParser());
2323
app.use(express.methodOverride());
2424
app.use(express.cookieParser());
@@ -36,6 +36,14 @@ app.configure('development', function(){
3636
app.use(express.errorHandler());
3737
});
3838

39+
//生产环境
40+
app.configure('production',function(){
41+
var maxAge = 3600000 * 24 * 30;
42+
app.use(express.static(path.join(__dirname,'public'),{maxAge:maxAge}));
43+
app.use(express.errorHandler());
44+
app.set('view cache', true);
45+
});
46+
3947
routes(app);
4048

4149
http.createServer(app).listen(app.get('port'), function(){

public/js/index.js

Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,21 +6,35 @@ define(function(require){
66
window.$ = $;
77
var ajax = require('./models/ajax');
88
$('.ajax-form').on('submit',ajax.ajaxForm);
9-
require('./lib/kalendae');
10-
new Kalendae.Input('date', {
9+
10+
//日期
11+
if(location.href.indexOf('notice')!==-1){
12+
require('./lib/kalendae');
13+
new Kalendae.Input('date', {
1114
months:1
12-
,direction:'future'
1315
,format : 'YYYY-MM-DD'
14-
});
16+
});
17+
}
18+
1519
//删除
20+
var popbox = require('./models/popbox');
1621
$('.btn-del').on('click',function(){
22+
if(!confirm('确定删除吗?'))return false;
1723
var url = $(this).attr('href');
18-
$.get(url,function(res){
19-
if(res.flg ===1){
20-
window.location.reload();
21-
}else{
22-
23-
}
24+
var tips = new popbox.tinyTips();
25+
$.post(url,{},function(res){
26+
if(res.flg === 1){
27+
$('.tiny-tips').html('<span class="tiny-right"></span>'+res.msg+'<span class="tiny-end"></span>');
28+
setTimeout(function(){
29+
if(res.redirect)
30+
window.location.href = res.redirect;
31+
else
32+
window.location.reload();
33+
},2000);
34+
}else{
35+
tips.close();
36+
new popbox.tinyTips('error',res.msg);
37+
}
2438
});
2539
return false;
2640
});

routes.js

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ var login = require('./routes/login')
88
var admin = require('./routes/admin/index')
99
,adminUser = require('./routes/admin/user')
1010
,adminNotice = require('./routes/admin/notice')
11+
,adminQuestion = require('./routes/admin/question')
1112

1213
module.exports = function(app){
1314
/*===================
@@ -52,14 +53,18 @@ module.exports = function(app){
5253
app.get('/admin/notice',adminNotice.index);
5354
app.post('/admin/notice',adminNotice.index);
5455
//------------------
56+
// 问题管理
57+
//------------------
58+
app.get('/admin/question',adminQuestion.index);
59+
app.post('/admin/question',adminQuestion.index);
60+
//分类&章节&专题
61+
app.get('/admin/question/cat',adminQuestion.cat);
62+
app.post('/admin/question/cat',adminQuestion.cat);
63+
//------------------
5564
// 友情链接
5665
//------------------
5766
app.get('/admin/link',adminNotice.link);
5867
app.post('/admin/link',adminNotice.link);
59-
60-
61-
62-
6368
//-----------------
6469
// 退出
6570
//-----------------

routes/admin/notice.js

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,18 @@ exports.index = function(req,res){
99
if(req.method == 'GET'){
1010
var condition = {};
1111
condition.query = {
12+
release_time :{
13+
'$lte' : new Date()*1
14+
},
1215
last_time : {
1316
'$gte' : new Date()*1
1417
}
1518
}
1619
condition.sort = {
17-
release_time : 1
20+
release_time : -1
1821
}
1922
jixiang.get(condition,'notice',function(err,doc){
20-
if(err)console.log(err);
21-
console.log(doc)
23+
if(err)doc=[];
2224
if(doc.length){
2325
doc[0].release_time = dataFormat.call(new Date(doc[0].release_time),'yyyy-MM-dd hh:mm:ss')
2426
}
@@ -39,7 +41,7 @@ exports.index = function(req,res){
3941
,content = req.body.content;
4042
var data = {
4143
release_time : time
42-
,last_time : time + 3600000 * 24 * last
44+
,last_time : last ? (time + 3600000 * 24 * last) : time*2
4345
,content : content
4446
,author : req.session.user.username
4547
}
@@ -66,15 +68,14 @@ exports.index = function(req,res){
6668
}else if(modify !==0){//修改链接
6769
cat = 3;
6870
jixiang.getOne({_id:id},'links',function(err,doc){
69-
if(err)consloe.log(err);
71+
if(err)doc=[];
7072
result.linkdetail = doc;
7173
render();
7274
});
7375

7476
}else{
7577
jixiang.count({},'links',function(err,count){
7678
if(err)return res.json({flg:0,msg:err});
77-
console.log(count)
7879
// 分页
7980
var pages = parseInt(req.query.page,10) || 1;
8081
var condition = {
@@ -92,17 +93,22 @@ exports.index = function(req,res){
9293
jixiang.get(condition,'links',function(err,doc){
9394
if(err)doc=[];
9495
result.link = doc;
95-
render();
96+
render(pageNum);
9697
});
9798
});
9899
}
99100
function render(){
100-
res.render('./admin/link',{
101+
var renderData = {
101102
title : config.name+'友情链接'
102103
,user : req.session.user
103104
,cat : cat
104105
,result : result
105-
});
106+
}
107+
if(arguments.length){
108+
renderData.pages = arguments[0];
109+
renderData.pagenav = '/admin/link?';
110+
}
111+
res.render('./admin/link',renderData);
106112
}
107113
}else if(req.method == 'POST'){
108114
var website = {
@@ -131,8 +137,8 @@ exports.index = function(req,res){
131137
var del = parseInt(req.query.del,10) || 0;
132138
if(del===0)return;
133139
jixiang.delById(id,'links',function(err){
134-
if(err)return json({flg:0,msg:err});
135-
return json({flg:1,msg:'删除成功!'});
140+
if(err)return res.json({flg:0,msg:err});
141+
return res.json({flg:1,msg:'删除成功!'});
136142
});
137143
}
138144

routes/admin/question.js

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
/**
2+
* 问题列表
3+
*/
4+
var config = require('../../config')
5+
,Utils = require('../../models/utils')
6+
,jixiang = require('../../models/base');
7+
8+
exports.index = function(req,res){
9+
var add = parseInt(req.query.add,10) || 0
10+
,info = parseInt(req.query.info,10) || 0;
11+
12+
if(req.method == 'GET'){
13+
var template = 1;
14+
var result = {};
15+
if(add !==0){ //添加问题
16+
template = 2;
17+
}else if(info !== 0){//查看&修改问题
18+
template = 3;
19+
}
20+
res.render('./admin/question',{
21+
title : config.name + '问题管理'
22+
,user : req.session.user
23+
,template : template
24+
});
25+
}if(req.method == 'POST'){
26+
27+
}
28+
}
29+
30+
exports.cat = function(req,res){
31+
var cat = parseInt(req.query.cat,10) || 1
32+
,add = parseInt(req.query.add,10) || 0
33+
,modify = parseInt(req.query.modify,10) || 0
34+
,catArray = ['','分类','章节','专题'];
35+
36+
if(req.method == 'GET'){
37+
var template = 1;
38+
if(add !==0){//增加
39+
template = 2;
40+
render();
41+
}else if(modify !== 0){//修改
42+
template = 3;
43+
var id = parseInt(req.query.id,10) || 0;
44+
if(!id)return;
45+
jixiang.getOne({_id:id},'qcat',function(err,doc){
46+
if(err)doc=[];
47+
console.log(doc)
48+
render(doc);
49+
});
50+
return;
51+
}
52+
//问题列表
53+
jixiang.get({
54+
query :{
55+
cat : cat
56+
}
57+
},'qcat',function(err,doc){
58+
if(err)doc=[];
59+
render(doc);
60+
});
61+
function render(){
62+
var renderData = {
63+
title : config.name + '问题管理'
64+
,user : req.session.user
65+
,template : template
66+
,cat : cat
67+
,catName : catArray[cat]
68+
}
69+
if(arguments.length)renderData.doc = arguments[0];
70+
res.render('./admin/qcat',renderData);
71+
}
72+
73+
}else if(req.method =='POST'){
74+
var catData = {
75+
cat : cat
76+
,name : req.body.catname.trim()
77+
,description : req.body.description.trim()
78+
}
79+
if(add !==0){//增加类别
80+
jixiang.save(catData,'qcat',function(err,doc){
81+
if(err)return res.json({flg:0,msg:err});
82+
return res.json({flg:1,msg:'新增成功!',redirect:'/admin/question/cat?cat='+cat});
83+
});
84+
}else if(modify !==0){//修改
85+
var id = parseInt(req.query.id,10) || 0;
86+
if(!id)return;
87+
jixiang.update({
88+
query : {
89+
_id : id
90+
},
91+
modify : catData
92+
},'qcat',function(err){
93+
if(err)return res.json({flg:0,msg:err});
94+
return res.json({flg:1,msg:'修改成功'});
95+
});
96+
}else{
97+
var del = parseInt(req.query.del,10) || 0;
98+
if(del===0)return;
99+
jixiang.delById(id,'qcat',function(err){
100+
if(err)return res.json({flg:0,msg:err});
101+
return res.json({flg:1,msg:'删除成功!'});
102+
});
103+
}
104+
}
105+
}

routes/admin/user.js

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,7 @@ exports.index = function(req,res){
1010
var cat = parseInt(req.query.cat,10) || 1;
1111
if(req.method == 'GET'){
1212
jixiang.count({cat:cat},'users',function(err,count){
13-
if(err){
14-
console.log(err)
15-
return res.json({flg:0,msg:err});
16-
}
13+
if(err)return res.json({flg:0,msg:err});
1714
// 分页
1815
var pages = parseInt(req.query.page,10) || 1;
1916
var condition = {

routes/login.js

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,31 @@ var crypto = require('crypto')
88

99
var index = function(req,res){
1010
if(req.method == 'GET'){
11-
var n = 1;
11+
var n = 2;
1212
var result = {};
1313
//公告
14-
jixiang.get({sort:{release_time:-1},query:{last_time:{'$gte':new Date()*1}}},'notice',function(err,doc){
15-
if(err)console.log(err);
14+
jixiang.get({
15+
sort:{release_time:-1}
16+
,query:{
17+
release_time :{
18+
'$lte' : new Date()*1
19+
},
20+
last_time : {
21+
'$gte' : new Date()*1
22+
}
23+
}
24+
},'notice',function(err,doc){
25+
if(err)doc=[];
1626
if(doc.length)result.notice = doc[0].content;
1727
--n || render();
1828
});
29+
//友情链接
30+
jixiang.get({},'links',function(err,doc){
31+
if(err)doc=[];
32+
result.links = doc;
33+
--n || render();
34+
});
35+
1936
function render(){
2037
res.render('./index/index',
2138
{

views/admin/layout/sidebar.jade

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
div.category-item
66
.category.clearfix
77
.name
8-
a 用户管理
8+
a(href="/admin/user") 用户管理
99
.plus
1010
ul
1111
li
@@ -15,9 +15,19 @@
1515
li
1616
a.item(href="/admin/user?cat=3") 管理员
1717
div.category-item
18-
.name
19-
a 问题管理
20-
.plus
18+
.category.clearfix
19+
.name
20+
a(href="/admin/question") 问题管理
21+
.plus
22+
ul
23+
li
24+
a.item(href="/admin/question") 问题列表
25+
li
26+
a.item(href="/admin/question/cat?cat=1") 分类列表
27+
li
28+
a.item(href="/admin/question/cat?cat=2") 章节列表
29+
li
30+
a.item(href="/admin/question/cat?cat=3") 专题列表
2131
div.category-item
2232
.name
2333
a 帮助信息

views/admin/link.jade

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,11 @@ block content
2727
td
2828
a.btn-reply(href="/admin/link?modify=1&id=#{item._id}") 修改
2929
a.btn-reply.btn-del(href="/admin/link?del=1&id=#{item._id}") 删除
30+
else
31+
tr
32+
td(colspan="4") 还没有友情链接,
33+
a(href="/admin/link?add=1") 点击添加
34+
include ../layout/pagenav
3035
if cat == 2
3136
form.form-inline.ajax-form(action="/admin/link?add=1",method="post")
3237
table.table.order-table

0 commit comments

Comments
 (0)