From ac538dda97e286829f30b86b0f8953813d3e4982 Mon Sep 17 00:00:00 2001 From: Saravjeet 'Aman' Singh Date: Sat, 24 Dec 2016 00:33:30 +0530 Subject: [PATCH 1/3] add views plugin --- config/manifest.js | 33 ++++++++++++++------------------- lib/views.js | 41 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+), 19 deletions(-) create mode 100644 lib/views.js diff --git a/config/manifest.js b/config/manifest.js index 7ff31be..b892087 100644 --- a/config/manifest.js +++ b/config/manifest.js @@ -57,19 +57,24 @@ internals.manifest = { plugin: 'vision' }, - // Views loader + // views and default context { plugin: { - register: 'visionary', + register: './lib/views', options: { - engines: { - hbs: 'handlebars' + views:{ + engines: { + hbs: 'handlebars' + }, + path: './app/templates', + layoutPath: './app/templates/layouts', + helpersPath: './app/templates/helpers', + partialsPath: './app/templates/partials', + layout: 'default' }, - path: './app/templates', - layoutPath: './app/templates/layouts', - helpersPath: './app/templates/helpers', - partialsPath: './app/templates/partials', - layout: 'default' + misc: { + meta: Meta.get('/'), + } } } }, @@ -105,16 +110,6 @@ internals.manifest = { } }, - // App context decorator - { - plugin: { - register: './lib/context', - options: { - meta: Meta.get('/') - } - } - }, - // Core routes { plugin: './app/routes/core.js' diff --git a/lib/views.js b/lib/views.js new file mode 100644 index 0000000..14fa4cb --- /dev/null +++ b/lib/views.js @@ -0,0 +1,41 @@ +'use strict'; + +const Hoek = require('hoek'); +const internals = {}; + +internals.prepare = function(config) { + + const engines = config.engines; + Object.keys(engines).forEach((engine) => { + engines[engine] = require(engines[engine]); + }); + return config; +}; + +exports.register = function(plugin, options, next) { + + const ext = { + context: function(request) { + + const ctx = { + devEnv: (process.env.NODE_ENV === 'development'), + meta: options.misc.meta, + credentials: request.auth.isAuthenticated?request.auth.credentials:null + }; + + return ctx; + } + }; + + let viewOpts = options.views; + viewOpts = Hoek.merge(viewOpts, ext); + viewOpts = internals.prepare(viewOpts); + plugin.views(viewOpts); + return next(); +}; + +exports.register.attributes = { + name: 'template plugin', + version: require('../package.json').version, + depedencies: ['vision'] +}; From 4de015bab41657b82012d3a60a7ee6478551ddaf Mon Sep 17 00:00:00 2001 From: Saravjeet 'Aman' Singh Date: Sat, 24 Dec 2016 02:11:23 +0530 Subject: [PATCH 2/3] update server should throw errors now --- server.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/server.js b/server.js index eb6c48c..8a0ab47 100644 --- a/server.js +++ b/server.js @@ -6,7 +6,12 @@ const Hoek = require('hoek'); Composer(function(err, server) { Hoek.assert(!err, err); - server.start(function() { + server.start(function(err) { + + if ( err ) { + throw err; + } + console.log('Server started @ ' + server.info.uri); }); From 0a40ca16bb6686d23ba5c09ddbc0ad5c76d85021 Mon Sep 17 00:00:00 2001 From: Saravjeet 'Aman' Singh Date: Sat, 24 Dec 2016 02:12:01 +0530 Subject: [PATCH 3/3] merge flash plugin into view --- config/manifest.js | 7 ------- lib/auth.js | 2 +- lib/context.js | 29 ----------------------------- lib/flash.js | 30 ------------------------------ lib/views.js | 12 +++++++++--- 5 files changed, 10 insertions(+), 70 deletions(-) delete mode 100644 lib/context.js delete mode 100644 lib/flash.js diff --git a/config/manifest.js b/config/manifest.js index b892087..95e14e0 100644 --- a/config/manifest.js +++ b/config/manifest.js @@ -87,13 +87,6 @@ internals.manifest = { } }, - // Flash Plugin - { - plugin: { - register: './lib/flash' - } - }, - // Hapi cookie jar { plugin: { diff --git a/lib/auth.js b/lib/auth.js index 1edb1d9..127387a 100644 --- a/lib/auth.js +++ b/lib/auth.js @@ -22,5 +22,5 @@ exports.register = function(server, options, next) { exports.register.attributes = { name: 'auth', - dependencies: ['context', 'hapi-auth-cookie', 'mongoose'] + dependencies: ['views', 'hapi-auth-cookie', 'mongoose'] }; diff --git a/lib/context.js b/lib/context.js deleted file mode 100644 index 285acca..0000000 --- a/lib/context.js +++ /dev/null @@ -1,29 +0,0 @@ -'use strict'; - -const Hoek = require('hoek'); - -exports.register = function(plugin, options, next) { - - plugin.ext('onPreResponse', function(request, reply) { - var internals = { - devEnv: (process.env.NODE_ENV === 'development'), - meta: options.meta, - credentials: request.auth.isAuthenticated ? request.auth.credentials : null - }; - - var response = request.response; - if (response.variety && response.variety === 'view') { - response.source.context = Hoek.merge(internals, request.response.source.context); - - } - return reply.continue(); - }); - - next(); -}; - - -exports.register.attributes = { - name: 'context', - version: require('../package.json').version -}; diff --git a/lib/flash.js b/lib/flash.js deleted file mode 100644 index 11820a1..0000000 --- a/lib/flash.js +++ /dev/null @@ -1,30 +0,0 @@ -'use strict'; - -// This plugin should be loaded after vision - -const Hoek = require('hoek'); - -exports.register = function(plugin, options, next) { - - // To Do : Raise an eror if yar plugin is already loaded - // To Do : Raise an error if vision is not loaded - - plugin.ext('onPreResponse', function(request, reply) { - - if (request.yar && request.yar.flash && request.response.variety === 'view') { - - var flash = request.yar.flash(); - request.response.source.context = Hoek.applyToDefaults({ - flash: flash - }, request.response.source.context); - } - return reply.continue(); - }); - - next(); -}; - -exports.register.attributes = { - name: 'flash', - dependencies: ['vision'] -}; diff --git a/lib/views.js b/lib/views.js index 14fa4cb..149a79f 100644 --- a/lib/views.js +++ b/lib/views.js @@ -7,7 +7,9 @@ internals.prepare = function(config) { const engines = config.engines; Object.keys(engines).forEach((engine) => { - engines[engine] = require(engines[engine]); + if ( typeof engines[engine] === 'string' ) { + engines[engine] = require(engines[engine]); + } }); return config; }; @@ -23,6 +25,10 @@ exports.register = function(plugin, options, next) { credentials: request.auth.isAuthenticated?request.auth.credentials:null }; + if ( request.yar && request.yar.flash ) { + ctx.flash = request.yar.flash(); + } + return ctx; } }; @@ -30,12 +36,12 @@ exports.register = function(plugin, options, next) { let viewOpts = options.views; viewOpts = Hoek.merge(viewOpts, ext); viewOpts = internals.prepare(viewOpts); - plugin.views(viewOpts); + plugin.root.views(viewOpts); return next(); }; exports.register.attributes = { - name: 'template plugin', + name: 'views', version: require('../package.json').version, depedencies: ['vision'] };