Skip to content

Commit e9ac3c2

Browse files
author
Hüseyin BABAL
committed
development completed
1 parent 75768c9 commit e9ac3c2

File tree

874 files changed

+639890
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

874 files changed

+639890
-0
lines changed

.idea/.name

+1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/encodings.xml

+5
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/expressSimpleBlog.iml

+9
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/misc.xml

+8
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/modules.xml

+9
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/scopes/scope_settings.xml

+5
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/vcs.xml

+7
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/workspace.xml

+518
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app.js

+71
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
/**
2+
* Module dependencies.
3+
*/
4+
5+
// Module initializations
6+
var express = require('express')
7+
, http = require('http')
8+
, path = require('path')
9+
, mongoose = require('mongoose')
10+
, mongoStore = require('connect-mongo')(express)
11+
, config = require('config')
12+
, utils = require('./lib/utils')
13+
, ENV = process.env.NODE_ENV || 'development';
14+
15+
var app = express();
16+
17+
//connection url for future use
18+
mongoose = utils.connectToDatabase(mongoose, config.db);
19+
20+
// Application setups
21+
app.configure('all', function () {
22+
app.set('port', process.env.PORT || 3000);
23+
app.set('views', __dirname + '/views');
24+
app.set('view engine', 'jade');
25+
app.set('view options', { layout: true });
26+
app.use(express.favicon());
27+
app.use(express.logger('dev'));
28+
app.use(express.cookieParser());
29+
app.use(express.session({
30+
secret: "golb",
31+
cookie: { maxAge: 24 * 60 * 60 * 1000 },
32+
store: new mongoStore({
33+
url: utils.dbConnectionUrl(config.db)
34+
})
35+
}));
36+
app.use(express.bodyParser());
37+
app.use(express.methodOverride());
38+
app.use(express.static(path.join(__dirname, 'public')));
39+
app.use(express.csrf());
40+
app.use(function(req, res, next) {
41+
res.locals.token = req.session._csrf;
42+
next();
43+
});
44+
app.use(function(req, res, next) {
45+
res.locals.session = req.session;
46+
next();
47+
});
48+
});
49+
50+
// Error handling setup
51+
app.configure('development', function () {
52+
app.use(express.errorHandler());
53+
});
54+
55+
// Register models
56+
require('./models/Blog')(mongoose);
57+
require('./models/User')(mongoose);
58+
59+
// Register Controllers
60+
['Blog', 'Site', 'User'].forEach(function (controller) {
61+
require('./controllers/' + controller + 'Controller')(app, mongoose, config);
62+
});
63+
64+
process.on('uncaughtException', function(err) {
65+
console.log(err);
66+
});
67+
68+
// Create server and listen application port specified above
69+
http.createServer(app).listen(app.get('port'), function () {
70+
console.log("Express server listening on port " + app.get('port'));
71+
});

config/development.json

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"db": {
3+
"USER": "test",
4+
"PASS": "123456",
5+
"HOST": "localhost",
6+
"PORT": "",
7+
"DATABASE": "blog"
8+
}
9+
}

config/production.json

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"db": {
3+
"USER": "test",
4+
"PASS": "test",
5+
"HOST": "localhost",
6+
"PORT": "",
7+
"DATABASE": "blog"
8+
}
9+
}

config/runtime.json

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"db": {
3+
"USER": "test",
4+
"PASS": "test",
5+
"HOST": "localhost",
6+
"PORT": "",
7+
"DATABASE": "blog"
8+
}
9+
}

config/staging.json

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"db": {
3+
"USER": "test",
4+
"PASS": "test",
5+
"HOST": "localhost",
6+
"PORT": "",
7+
"DATABASE": "blog"
8+
}
9+
}

controllers/BlogController.js

+99
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
var util = require('util');
2+
var Logger = require('devnull');
3+
var logger = new Logger({namespacing : 0});
4+
var Blog = require('../models/Blog');
5+
6+
BlogController = function (app, mongoose, config) {
7+
var Blog = mongoose.model('Blog');
8+
9+
/**
10+
* List recent blog posts
11+
*/
12+
app.get('/blog/list/?', function(req, res, next) {
13+
util.log(req.method + " request to url : " + req.route.path);
14+
var query = Blog.find({}).sort({'createDate': -1});
15+
query.execFind(function(err, blogPosts) {
16+
if (!err) {
17+
res.render('blog-list', {
18+
title: "Recent blog posts",
19+
blogPosts: blogPosts
20+
});
21+
} else {
22+
res.status(500);
23+
res.render('500', {
24+
err: err,
25+
url: req.url
26+
});
27+
}
28+
});
29+
});
30+
31+
app.get('/blog/new/?', function(req, res, next) {
32+
util.log(req.method + " request to url : " + req.route.path);
33+
res.render('blog-new', {
34+
title: "Create new blog post",
35+
error: false
36+
});
37+
});
38+
39+
/**
40+
*
41+
*/
42+
app.post('/blog/create/?', function(req, res, next) {
43+
util.log(req.method + " request to url : " + req.route.path);
44+
var title = req.body.title;
45+
var text = req.body.text;
46+
var blogModel = new Blog();
47+
blogModel.title = title;
48+
blogModel.text = text;
49+
blogModel.author = req.session.user.username;
50+
blogModel.save(function(err) {
51+
if (err) {
52+
res.status(500);
53+
res.render('blog-new', {
54+
title: "Create new blog post",
55+
error: "Blog creation failed : " + util.inspect(err)
56+
});
57+
} else {
58+
res.redirect('/blog/list/');
59+
}
60+
});
61+
});
62+
63+
app.get('/blog/:blogID/view/?', function(req, res, next) {
64+
util.log(req.method + " request to url : " + req.route.path);
65+
Blog.findOne({_id: req.params.blogID}, function(err, blogInfo) {
66+
if (blogInfo) {
67+
res.render('blog-detail', {
68+
title: blogInfo.title,
69+
blogInfo: blogInfo
70+
});
71+
} else {
72+
res.status(404);
73+
res.render('404', {
74+
title: "Blogpost not fount",
75+
err: "Blog post not found",
76+
err: req.url
77+
})
78+
}
79+
});
80+
});
81+
82+
app.post('/blog/comment/?', function(req, res, next) {
83+
util.log(req.method + " request to url : " + req.route.path);
84+
var text = req.body.text;
85+
var blogID = req.body.blogID;
86+
Blog.postComment(blogID, text, req.session.user.username, function(data) {
87+
if (data.retStatus == "failure") {
88+
res.render('blog-detail', {
89+
title: "Comment post error",
90+
error: data.message
91+
})
92+
} else {
93+
res.redirect('/blog/' + blogID + '/view/');
94+
}
95+
});
96+
});
97+
}
98+
99+
module.exports = BlogController;

controllers/SiteController.js

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
var util = require('util');
2+
var Logger = require('devnull');
3+
var logger = new Logger({namespacing : 0});
4+
5+
SiteController = function (app, mongoose, config) {
6+
app.get('/?', function(req, res, next) {
7+
res.render('index', {
8+
title: "Simple Blog Example With Express, Jade, Mongoose"
9+
});
10+
});
11+
12+
app.get('/404/?', function(req, res, next) {
13+
next();
14+
});
15+
16+
app.get('/403/?', function(req, res, next){
17+
var err = new Error('not allowed!');
18+
err.status = 403;
19+
next(err);
20+
});
21+
22+
app.get('/500/?', function(req, res, next) {
23+
next(new Error('Technical error occured'));
24+
});
25+
}
26+
27+
module.exports = SiteController;

controllers/UserController.js

+78
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
var util = require('util');
2+
var Logger = require('devnull');
3+
var logger = new Logger({namespacing : 0});
4+
var User = require('../models/User');
5+
var crypto = require('crypto');
6+
7+
UserController = function (app, mongoose, config) {
8+
var User = mongoose.model('User');
9+
10+
app.post('/user/login/?', function(req, res, next) {
11+
util.log(req.method + " request to url : " + req.route.path);
12+
var email = req.body.email;
13+
var password = req.body.password;
14+
var password = crypto.createHash('md5').update(password).digest("hex");
15+
User.findOne({email: email, password: password}, function(err, userInfo) {
16+
if (err) {
17+
res.status(500);
18+
res.render('500', {
19+
err: err,
20+
url: req.url
21+
});
22+
} else {
23+
if (userInfo) {
24+
req.session.user = userInfo;
25+
res.redirect('/');
26+
} else {
27+
res.render('login', {
28+
title: 'Login failed',
29+
error: 'Incorrect username/passord'
30+
});
31+
}
32+
}
33+
});
34+
});
35+
36+
app.post('/user/register/?', function(req, res, next) {
37+
util.log(req.method + " request to url : " + req.route.path);
38+
var email = req.body.email;
39+
var password = req.body.password;
40+
var username = email.split("@");
41+
username = username[0];
42+
var userModel = new User();
43+
userModel.email = email;
44+
userModel.password = crypto.createHash('md5').update(password).digest("hex");
45+
userModel.username = username;
46+
userModel.save(function(err) {
47+
if (err) {
48+
res.json('register', {
49+
title: 'Register Failed',
50+
error: 'Technical error occured' + util.inspect(err)
51+
});
52+
} else {
53+
res.render('register', {
54+
title: 'Register successful',
55+
error: false
56+
});
57+
}
58+
});
59+
});
60+
61+
app.get('/user/new', function(req, res, next) {
62+
util.log(req.method + " request to url : " + req.route.path);
63+
res.render('register', {
64+
title: "Register",
65+
error: false
66+
});
67+
});
68+
69+
app.get('/user/logout/?', function(req, res, next) {
70+
if (req.session) {
71+
req.session.user = undefined;
72+
req.session.destroy(function(){});
73+
}
74+
res.redirect('/');
75+
});
76+
}
77+
78+
module.exports = UserController;

0 commit comments

Comments
 (0)