/* jshint node: true */ var User = require('./schemas/User'), Project = require('./schemas/Project'), Documentation = require('./schemas/Documentation'), config = require('../../config'), marked = require('marked'), util = require('./util'), _ = require('lodash'), moment = require('moment'); marked.setOptions({ renderer: new marked.Renderer(), gfm: true, sanitize: true, smartLists: true, smartypants: true, }); var views = {} views.editor = function (req, res) { if (! req.user && ! req.project) { res.redirect('/') } else if (! req.user || (req.project && String(req.user._id) !== String(req.project.user_id))) { User.findOne({ _id: req.project.user_id }, function(err, user) { if (err || ! user) { console.error(err) res.redirect('/') return } res.render('reader', { name: util.sanitize(req.project.name), description: util.sanitize(req.project.description), date: moment(req.project.updated_at).format("M/DD/YYYY"), author: user.displayName, authorlink: "/profile/" + user.username, }) }) } else { res.render('editor') } } views.builder = function (req, res) { res.render('builder') } views.modal = function (req, res) { res.render('modal'); }; views.home = function (req, res) { if (req.user) { res.render('home', {}) } else { res.send("") } } views.docs = function (req, res){ var name = req.params.name || "index" if (name === "new") { res.render('docs', { doc: { name: "new" }, content: null, isNew: true }) return } Documentation.findOne({ name: name }, function(err, doc) { if (err || ! doc) { return res.render('docs', { doc: { name: util.sanitize(name) }, content: null, isNew: true }) } res.render('docs', { doc: doc, content: marked(doc.body), isNew: false }) }) } views.profile = function (req, res) { var username = req.params[0] || (req.user && req.user.username) if (username) { User.findOne({ username: username }, function (err, user) { user ? next(user) : done(err, {}, []) }) } else { done() } function next(user){ Project.find({ user_id: user._id }, function(err, projects){ done(err, user, projects) }) } function done(err, user, projects){ if (! user) { return res.redirect('/') } res.render('profile', { profile: user, projects: projects || [], }) } } views.staff = { index: function(req, res){ res.render('staff') }, bless: function(req, res){ req.user.isStaff = true req.user.save(function(){ res.redirect("/staff") }) }, } module.exports = views