added post view to admin panel. added rebuilding of the static folder.
This commit is contained in:
parent
2be6c664e6
commit
d7b49a37f5
9 changed files with 132 additions and 10 deletions
54
app.js
54
app.js
|
@ -6,6 +6,7 @@ var Strategy = require('passport-local').Strategy;
|
|||
var async = require('async');
|
||||
var multer = require('multer');
|
||||
var fs = require('fs');
|
||||
var markdown = require( "markdown" ).markdown;
|
||||
|
||||
var helper = require('./helper.js');
|
||||
var db = require('./db.js');
|
||||
|
@ -97,6 +98,26 @@ app.get('/admin/post/list/:start?',
|
|||
});
|
||||
});
|
||||
|
||||
app.get('/admin/post/view/:id?',
|
||||
function (req, res, next) {
|
||||
if (req.params.id) {
|
||||
db.getPostById(req.params.id, function(row) {
|
||||
res.render('admin-post-view', {
|
||||
successNotice: req.flash('successNotice'),
|
||||
failureNotice: req.flash('failureNotice'),
|
||||
date: helper.epochToShortDateString(row.postDate),
|
||||
post: row,
|
||||
content: markdown.toHTML(row.markdown),
|
||||
user: req.user
|
||||
})
|
||||
})
|
||||
}
|
||||
else {
|
||||
res.redirect('/admin/post/list');
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
app.get('/admin/post/new',
|
||||
function(req, res, next) {
|
||||
db.listCategories(function(rows){
|
||||
|
@ -198,14 +219,15 @@ app.post('/admin/post/edit/:id',
|
|||
app.get('/admin/post/rebuild/:id?',
|
||||
function(req, res, next) {
|
||||
if (req.params.id) {
|
||||
build.buildStatic(function(err){ if (err) console.log(err) });
|
||||
build.buildPost(req.params.id, function(err) {
|
||||
if (!err) {
|
||||
req.flash('successNotice', 'Post rebuilt successfully.');
|
||||
res.redirect('/admin/post/edit/'+req.params.id);
|
||||
res.redirect('/admin/post/view/'+req.params.id);
|
||||
}
|
||||
else {
|
||||
req.flash('failureNotice', 'Post rebuild failed, check logs.');
|
||||
res.redirect('/admin/post/edit/'+req.params.id);
|
||||
res.redirect('/admin/post/view/'+req.params.id);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
@ -489,6 +511,34 @@ app.get('/galleries/*',
|
|||
}
|
||||
);
|
||||
|
||||
app.get('/static/*',
|
||||
require('connect-ensure-login').ensureLoggedIn(),
|
||||
function(req, res, next) {
|
||||
if (req.params[0] != '') {
|
||||
var path = __dirname + '/build/static/' + req.params[0];
|
||||
console.log('Trying to serve: ' + path);
|
||||
fs.exists(path, function(exists) {
|
||||
if (exists) {
|
||||
console.log(path + ' exists serving...');
|
||||
res.sendFile(path);
|
||||
}
|
||||
else {
|
||||
console.log(path + ' does not exist...');
|
||||
if (path.slice(-1) != '/') path += '/';
|
||||
path += 'index.html'
|
||||
console.log('Trying to serve: ' + path);
|
||||
fs.exists(path, function(exists) {
|
||||
if (exists) {
|
||||
console.log(path + ' exists serving...');
|
||||
res.sendFile(path);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
app.get('/data/*',
|
||||
require('connect-ensure-login').ensureLoggedIn(),
|
||||
function(req, res, next) {
|
||||
|
|
49
build.js
49
build.js
|
@ -3,6 +3,7 @@ var mkdirp = require('mkdirp');
|
|||
var jade = require('jade');
|
||||
var markdown = require( "markdown" ).markdown;
|
||||
var async = require('async');
|
||||
var ncp = require('ncp').ncp;
|
||||
|
||||
var helper = require('./helper.js');
|
||||
var db = require('./db.js');
|
||||
|
@ -99,8 +100,6 @@ var buildPost = function (id, cb) {
|
|||
else {
|
||||
console.log('Writing to file: '+filename);
|
||||
|
||||
//console.log(jadeOut);
|
||||
|
||||
fs.writeFile(filename, jadeOut, 'utf-8', function(err) {
|
||||
if (err) console.log(err);
|
||||
cb(err);
|
||||
|
@ -111,3 +110,49 @@ var buildPost = function (id, cb) {
|
|||
}
|
||||
|
||||
exports.buildPost = buildPost;
|
||||
|
||||
// Function to build copy over the static folder to build directory if
|
||||
// it has a earlier modified time.
|
||||
var buildStatic = function(cb) {
|
||||
var sourceFolder = 'data/static';
|
||||
var destFolder = 'build/static';
|
||||
async.parallel({
|
||||
sourceMtime: function(cb) {
|
||||
console.log('Getting stats for '+sourceFolder);
|
||||
fs.stat(sourceFolder, function(err, sstats) {
|
||||
if (err) console.log(err);
|
||||
console.log(sourceFolder+' mtime: '+sstats.mtime);
|
||||
cb(null, sstats.mtime);
|
||||
});
|
||||
},
|
||||
destMtime: function(cb) {
|
||||
console.log('Getting stats for '+destFolder);
|
||||
fs.stat(destFolder, function(err, dstats) {
|
||||
if (err) console.log(err);
|
||||
console.log(destFolder+' mtime: '+dstats.mtime);
|
||||
cb(null, dstats.mtime);
|
||||
});
|
||||
}
|
||||
}, function(err, results) {
|
||||
if (results.sourceMtime > results.destMtime) {
|
||||
console.log(destFolder+' is older than '+sourceFolder);
|
||||
fs.unlink(destFolder, function(err) {
|
||||
console.log(destFolder+' deleted.');
|
||||
ncp(sourceFolder, destFolder, function(err) {
|
||||
if (!err) {
|
||||
console.log(sourceFolder+' copied to '+destFolder);
|
||||
cb(null);
|
||||
}
|
||||
else {
|
||||
cb(err);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
else {
|
||||
console.log(destFolder+' is not older than '+sourceFolder+' ignoring...');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
exports.buildStatic = buildStatic;
|
||||
|
|
Before Width: | Height: | Size: 96 KiB After Width: | Height: | Size: 96 KiB |
|
@ -15,6 +15,7 @@
|
|||
"markdown": "~0.5.0",
|
||||
"morgan": "~1.6.1",
|
||||
"multer": "~1.1.0",
|
||||
"ncp": "^2.0.0",
|
||||
"passport": "~0.3.0",
|
||||
"passport-local": "~1.0.0",
|
||||
"serve-favicon": "~2.3.0",
|
||||
|
|
|
@ -13,7 +13,7 @@ block content
|
|||
each photo in photos
|
||||
tr
|
||||
td #{photo.id}
|
||||
td #{photo.title}
|
||||
td: a(href="/admin/photo/view/#{photo.id}") #{photo.title}
|
||||
td #{photo.dateString}
|
||||
td
|
||||
a(href="/admin/photo/edit/#{photo.id}") Edit
|
||||
|
|
|
@ -13,7 +13,7 @@ block content
|
|||
each post in posts
|
||||
tr
|
||||
td #{post.id}
|
||||
td #{post.title}
|
||||
td: a(href="/admin/post/view/#{post.id}") #{post.title}
|
||||
td #{post.dateString}
|
||||
td
|
||||
a(href="/admin/post/edit/#{post.id}") Edit
|
||||
|
|
20
views/admin-post-view.jade
Normal file
20
views/admin-post-view.jade
Normal file
|
@ -0,0 +1,20 @@
|
|||
extends admin-layout
|
||||
|
||||
block content
|
||||
div(class="row")
|
||||
include ./admin-sidebar.jade
|
||||
|
||||
div(class="col-sm-10 col-sm-offset-2 main")
|
||||
|
||||
include ./admin-messages.jade
|
||||
|
||||
div(class='page-header row')
|
||||
h3 #{post.title}
|
||||
|
||||
div(class='row')
|
||||
| #{date} --
|
||||
a(href="/admin/post/edit/#{post.id}") Edit
|
||||
| -
|
||||
a(href="/admin/post/rebuild/#{post.id}") Rebuild
|
||||
|
||||
div(class='row') !{content}
|
|
@ -10,4 +10,8 @@ html
|
|||
block head-addition
|
||||
body(role="document")
|
||||
div(class="container-fluid", role="main")
|
||||
block content
|
||||
div(class="row")
|
||||
div(class="col-sm-3")
|
||||
img(class="img-responsive", src="/static/logo.png")
|
||||
div(class="col-sm-8 col-sm-offset-4")
|
||||
block content
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
extends render-layout
|
||||
|
||||
block content
|
||||
h3: a(href="#{url}") #{title}
|
||||
p #{postDate}
|
||||
div !{content}
|
||||
div(class="col-sm-8 col-sm-offset-2")
|
||||
div(class="col-sm-10 col-sm-offset-1")
|
||||
h3: a(href="#{url}") #{title}
|
||||
p #{postDate}
|
||||
div !{content}
|
||||
|
|
Loading…
Reference in a new issue