'$': function (partial) {
        var values, opts, done, value, context;
        if (!partial) {
            console.error('No partial name given.');
        }
        values = Array.prototype.slice.call(arguments, 1);
        opts = values.pop();
        while (!done) {
            value = values.pop();
            if (value) {
                partial = partial.replace(/:[^\.]+/, value);
            }
            else {
                done = true;
            }
        }
        partial = hbs.handlebars.partials[partial];
        if (!partial) {
            return '';
        }
        if (typeof partial === 'string') {
            partial = hbs.handlebars.compile(partial);
        }

        context = _.extend({}, opts.hash || this, _.omit(opts, 'data', 'context', 'fn', 'inverse'));
        return new hbs.handlebars.SafeString(partial(context));
    },
function renderPage(page_path, data) {
  let template = handlebars.compile(fs.readFileSync(page_path, 'utf8'));
  data.filename = page_path;
  data.alltags = alltags;
  let html = template(data);
  return html;
}
Exemple #3
0
exports.addQuestPage = (req, res) => {
    var template = handlebars.compile(fs.readFileSync('./views/quest/addQuest.hbs', 'utf8'));
    res.send(template(Object.assign({
        btnOk: 'Создать квест',
        title: 'Создание квеста'
    }, req.commonData)));
};
Exemple #4
0
 (result, done) => {
     var isCurrent = req.user === result.id ? {isCurrentUser: true} : {isCurrentUser: false};
     result = Object.assign(result, isCurrent);
     var templ = handlebars.compile(fs.readFileSync('./views/profile/profile.hbs', 'utf8'));
     res.send(templ(Object.assign(result, req.commonData)));
     done(null);
 }
Exemple #5
0
function subscribe (data) {
  let template = hbs.handlebars.compile(subscribeTmpl);

  return mailGun.subscribe({
    to: data.to,
    subject: 'Confirm Subscription',
    body: template(data)
  });
}
Exemple #6
0
function passwordChanged (data) {
  let template = hbs.handlebars.compile(passwordChangedTmpl);

  return mailGun.sendEmail({
    to: data.to.email,
    subject: 'Your NodeZA password has been changed',
    body: template(data)
  });
}
Exemple #7
0
function resetPassword (data) {
  let template = hbs.handlebars.compile(resetPasswordTmpl);

  return mailGun.sendEmail({
    to: data.to.email,
    subject: 'Reset your password on NodeZA',
    body: template(data)
  });
}
Exemple #8
0
function newRegistration (data) {
  let template = hbs.handlebars.compile(newRegistrationTmpl);

  return mailGun.sendEmail({
    to: data.to.email,
    subject: 'Welcome to NodeZA',
    body: template(data)
  });
}
Exemple #9
0
 validate: function (data) {
   try {
     return hbs.handlebars.compile(data)();
   } catch (e) {
     if (e && e.name === 'Error') {
       throw e;
     }
   }
 }
Exemple #10
0
function sendMessage(data) {
  let template = hbs.handlebars.compile(newMessageTmpl);

  return mailGun.sendEmail({
    to: data.to.email,
    from: data.from.email,
    subject: `${data.from.name} has sent you a message on NodeZA`,
    body: template(data)
  });
}
Exemple #11
0
exports.index = (req, res) => {
    var template = handlebars.compile(fs.readFileSync('./views/main.hbs', 'utf8'));
    res.send(template(Object.assign({
        title: 'Layout Test',
        items: [
            'apple',
            'orange',
            'banana'
        ],
        currentUserID: req.user
    }, req.commonData)));
};
			.pipe(plugins.change(function (content) {
				var compilePattern = /{{(component)\s[^}]*}}/gi;
				var matches = content.match(compilePattern);
				for (var index in matches) {
					if(matches.hasOwnProperty(index)) {
						var compiled = new hbs.handlebars.SafeString(
							hbs.handlebars.compile(matches[index], {compat: true})()
						);
						content = content.replace(matches[index], compiled);
					}
				}
				return content;
			}))
module.exports = function () {

	try {
		var context = arguments[arguments.length - 1];
		var contextDataRoot = context.data && context.data.root ? context.data.root : {};
		var name = 'string' === typeof arguments[0] ? arguments[0] : context.hash.name;
		var templateFile = 'string' === typeof arguments[1] ? arguments[1] : context.hash.template;
		var placeholderData = {};

		// validate
		if(!name) {
			throw new Error('Placeholder name parameter not set');
		}

		if(!templateFile) {
			throw new Error('Placeholder template parameter not set');
		}

		// data
		if (contextDataRoot._locals) {
			extend(true, placeholderData, contextDataRoot._locals);
		}

		if (contextDataRoot._query) {
			extend(true, placeholderData, contextDataRoot._query);
		}

		templateFile += '.' + cfg.nitro.view_file_extension;

		var templatePath = path.join(
			cfg.nitro.base_path,
			cfg.nitro.placeholders_directory,
			name,
			templateFile);

		if (utils.fileExistsSync(templatePath)) {
			return new hbs.handlebars.SafeString(
				hbs.handlebars.compile(
					fs.readFileSync(templatePath, 'utf8')
				)(placeholderData, context)
			);
		}

		throw new Error('Placeholder ' + templatePath + ' not found.');

	}
	catch (e) {
		return utils.logAndRenderError(e);
	}
};
Exemple #14
0
exports.addQuest = (req, res) => {
    var template = handlebars.compile(fs.readFileSync('./views/quest/addQuest.hbs', 'utf8'));
    res.send(template(Object.assign({
        title: 'Создание квеста',
        navbarTitle: 'Создание квеста',
        photo: [
            'http://www.segodnya.ua/img/article/6329/13_main.jpg',
            'http://cs418817.vk.me/v418817982/5866/JIvIF7yMjcs.jpg',
            'http://fonday.ru/images/tmp/16/7/original/16710fBjLzqnJlMXhoFHAG.jpg',
            'http://byaki.net/uploads/posts/2008-10/1225141003_1-21.jpg',
            'http://fishki.net/picsw/042010/27/bonus/kotiki/042.jpg'
        ]
    }, req.commonData)));
};
Exemple #15
0
     function(err, data){
     var template,
         rendered;
     if(files[name].indexOf(".hbs") !== -1){
         template = hbs.handlebars.compile(data);
         rendered = template(details);
     }
     else {
         rendered = data;
     }
     fs.writeFile(path + "/" + name, rendered, function(){
         p.resolve(true);
     });
 });
Exemple #16
0
 (quest, done) => {
     if (quest.author === req.user) {
         const data = Object.assign({
             name: quest.displayName,
             city: quest.cityName,
             preview: quest.titleImage,
             description: quest.description,
             tags: quest.tags,
             duration: quest.duration,
             photos: quest.photos,
             btnOk: 'Редактировать квест',
             btnDel: 'Удалить квест',
             slug
         }, req.commonData);
         var template = handlebars.compile(fs.readFileSync('./views/quest/addQuest.hbs',
             'utf8'));
         res.send(template(data));
         done(null);
     } else {
         res.redirect('/');
         done(null);
     }
 }
Exemple #17
0
        (user, quest, done) => {
            var btnData = {classStyle: 'btn-success'};
            if (user && user.myQuests && user.myQuests.indexOf(slug) !== -1) {
                btnData.phrase = 'Редактировать';
            } else {
                btnData.phrase = 'Хочу пройти';
                if (user && user.wishList && user.wishList.indexOf(slug) !== -1) {
                    btnData.phrase = 'Не хочу проходить';
                    btnData.classStyle = 'btn-danger';
                }
            }
            quest = Object.assign(btnData, quest);

            if (user) {
                quest.passedPhotos = user.activeQuests[quest.slug] || [];
            }

            quest.currentUserID = req.user;
            quest = checkLikes(quest, req.user);
            var templ = handlebars.compile(fs.readFileSync('./views/quest/questPage.hbs', 'utf8'));
            res.send(templ(Object.assign(quest, req.commonData)));
            done(null);
        }
Exemple #18
0
var fs = require('fs');
var path = require('path');

var hbs = require('hbs');

var Users = require('../../models/Users');
var Questions = require('../../models/Questions');

var emailClient = require('../../lib/emailClient');

var emailDir = path.join(__dirname + '/../../views/emails');

var questionEmailTemplate = hbs.handlebars.compile(fs.readFileSync(emailDir + '/email-question.hbs').toString());
var replyEmailTemplate = hbs.handlebars.compile(fs.readFileSync(emailDir + '/email-reply.hbs').toString());

module.exports = function (app) {

  var email = {
    sendQuestion: function (options) {
      options.settings = app.settings;
      var content = questionEmailTemplate(options);
      emailClient.send({
        to: options.user.email,
        from: '*****@*****.**',
        subject: 'Your mentoring skills are required',
        text: content
      });
    },
    sendReply: function (options) {
      options.settings = app.settings;
      var content = replyEmailTemplate(options);
const fs = require('fs');
const path = require('path');
const { exec } = require('child_process');
const mkpath = require('mkpath');
const { handlebars } = require('hbs');
const moment = require('moment');
const _ = require('underscore');
const RSS = require('rss');
const getAnalytics = require('./analytics');
const pkg = require('./package.json');

const page_dir = './templates/pages/';
const post_dir = './templates/posts/';
const tag_dir = './tag/';
const header_template = handlebars.compile(
  fs.readFileSync('templates/includes/header.hbs', 'utf8')
);
const footer_template = handlebars.compile(
  fs.readFileSync('templates/includes/footer.hbs', 'utf8')
);
const tag_template = handlebars.compile(
  fs.readFileSync('templates/includes/tag.hbs', 'utf8')
);

let tags = [];
let alltags = [];

handlebars.registerHelper('version', block => {
  return pkg.version;
});
Exemple #20
0
const fs = require('fs');
const handlebars = require('hbs').handlebars;
const layouts = require('handlebars-layouts');
const questModel = require('../models/quest');
const userModel = require('../models/user');
const CommentsModel = require('../models/comments');
const async = require('async');
const requestToDB = require('../lib/auth/requestToDB');
const geolib = require('geolib');

handlebars.registerHelper('ifIn', function (elem, list, options) {
    if (!list) {
        return "";
    }

    if (list.indexOf(elem.toString()) > -1) {
        return options.fn(this);
    }
    return options.inverse(this);
});

handlebars.registerHelper('ifNotIn', function (elem, list, options) {
    if (!list) {
        return options.fn(this);
    }
    // console.log(elem, list);
    if (list.indexOf(elem.toString()) === -1) {
        return options.fn(this);
    }
    return options.inverse(this);
});
Exemple #21
0
 messages[key].forEach(message => {
     rows.push(hbs.handlebars.escapeExpression(message));
 });
Exemple #22
0
'use strict';

var send            =  require('../send')
  , log             =  require('npmlog')
  , handlebars      =  require('hbs').handlebars
  , getRepos        =  require('../github/get-repos')
  , projectsSidebar =  require('./projects-sidebar')
  , blogSidebar     =  require('./blog-sidebar')
  , blog            =  require('../blog/provider')
  , fs              =  require('fs')
  , path            =  require('path');

var urls      =  projectsSidebar(null).map(function (x) { return x.url; })
  , tmpl      =  fs.readFileSync(path.join(__dirname, '..', 'views', 'sitemap.hbs'), 'utf-8')
  , sitemapFn =  handlebars.compile(tmpl);

module.exports = function (app) {
  app
    .get('/sitemap.xml', function (req, res) {
      blog.getMetadata(function (err, metadata) {
        var blogposts;
        if (err) {
          log.error('blog', 'error getting blog metadata, returning empty in sitemap', err);
          blogposts = [];
        } else {
          blogposts = blogSidebar(metadata, null);
        }
        var xml = sitemapFn({ projects: urls, blogposts: blogposts });

        res.set('Content-Type', 'text/xml');
        res.send(200, xml);
					matches.forEach((match) => {
						const compiled = new hbs.handlebars.SafeString(
							hbs.handlebars.compile(match, { compat: true })()
						);
						content = content.replace(match, compiled);
					});
Exemple #24
0
 (user, done) => {
     var file = fs.readFileSync('./views/profile/editProfile.hbs', 'utf8');
     var templ = handlebars.compile(file);
     res.send(templ(Object.assign(user, req.commonData)));
     done(null);
 }
Exemple #25
0
'use strict';

const async = require('async');

const userModel = require('../models/user');
const questModel = require('../models/quest');

const fs = require('fs');
const handlebars = require('hbs').handlebars;
const layouts = require('handlebars-layouts');
handlebars.registerHelper(layouts(handlebars));
handlebars.registerPartial('base', fs.readFileSync('./views/base.hbs', 'utf8'));

exports.getProfile = (req, res, next) => {
    var userID = req.params.id;
    async.waterfall([
        done => {
            userModel
                .findUser(JSON.stringify({_id: {$oid: userID}}))
                .then(result => {
                    if (result.message.length) {
                        res.redirect('');
                        return;
                    }
                    done(null, result.user);
                })
                .catch(err => {
                    done(err);
                });
        },
        (user, done) => {
Exemple #26
0
/**
 * Created by Falost on 2017/4/9.
 */
'use strict';

const hbs = require('hbs');
const fs = require('fs');
const layouts = require('handlebars-layouts');
const httpResponse = require('../http/http_response');

hbs.handlebars.registerHelper(layouts(hbs.handlebars));

class Hbs {
  constructor(args) {
    this.proto = args;
  }
  use(obj){
    let self = this.proto;
    let _obj = obj || {};
    let viewPath = _obj.viewPath || '';
    let adminViewPath = _obj.adminViewPath || '';

    if(viewPath !=='')
    hbs.registerPartials(viewPath);//注册前台后台视图路径
    if(adminViewPath !== '')
    hbs.registerPartials(adminViewPath);//注册后台模版路径

    //console.log(_obj.exname)
    self.exname = _obj.exname || '.hbs'; //设置模版文件后缀
    //self.viewPath = viewPath;
    //self.adminViewPath = adminViewPath;
Exemple #27
0
self._getOauth2FeedUrl = function(template, data) {
    // use handlebars to inject the email address into the URL specified in the config
    // eg "https://mail.google.com/mail/feed/atom/?xoauth_requestor_id={{email}}"
    var compiledTemplates = {}
      , compiledTemplate = compiledTemplates[template] || (compiledTemplates[template] = hbs.handlebars.compile(template))
      , escapedData = {}
      , keys = Object.keys(data);

    keys.forEach(function(key) {
        escapedData[key] = data[key];
    });

    return compiledTemplate(escapedData);
};