/* jshint node: true */ var User = require('../schemas/User'), Project = require('../schemas/Project'), Documentation = require('../schemas/Documentation'), Collaborator = require('../schemas/Collaborator'), Plan = require('../schemas/Plan'), 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 = module.exports = { staff: require('./staff'), editor_new: function (req, res) { if (! req.user) { res.redirect('/') } else { res.locals.opt.editing = true res.render('editor') } }, editor: function (req, res) { if (! req.project) { res.redirect('/') } else if (req.user && (req.isOwner || req.isCollaborator || req.isStaff)) { res.locals.opt.editing = true res.render('editor', { ogUrl: "http://vvalls.com/project/" + req.project.slug + "/", }) } else { res.redirect("/project/" + req.project.slug + "/") } }, reader: function (req, res) { if (! req.project) { res.redirect('/') return } User.findOne({ _id: req.project.user_id }, function(err, user) { if (err || ! user) { console.error(err) res.redirect('/') return } var ogImage if (req.project.media.length && req.project.media[0].media.type == "image") { ogImage = req.project.media[0].media.url } 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, authorpic: user.photo, canEdit: req.isOwner || req.isCollaborator, editlink: "/project/" + req.project.slug + "/edit", noui: !! (req.query.noui === '1'), ogTitle: req.project.name, ogUrl: "http://vvalls.com/project/" + req.project.slug + "/", ogImage: ogImage, }) }) }, builder: function (req, res) { res.render('builder') }, modal: function (req, res) { res.render('modal'); }, home: function (req, res) { views_middleware.fetchProjects({ featured: true }, null, null, function(err, projects){ res.render('home', { projects: projects || [] }) }) }, demoHome: function (req, res) { views_middleware.fetchProjects({ featured: true }, null, null, function(err, projects){ res.render('home', { projects: projects || [] }) }) }, partials: { plans: function (req, res){ views_middleware.ensurePlans(req, res, function(){ console.log("<<<< 238) { project.color = [238,238,238] } else { project.color = project.colors.wall } return project }) next(err, projects) }) }, fetchUserProjectCount: function(criteria, next){ Project.count(criteria, function(err, count){ next(count || 0) }) }, }