From cc1cc7cae4b07089cb7b5d490952f89278061537 Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Tue, 23 Jul 2013 17:21:44 -0400 Subject: [PATCH] first pass at meta tag construction abstraction (issue #116). Also addressed issue #118 --- public/src/utils.js | 17 +++++++++++++++++ public/templates/header.tpl | 7 +------ src/categories.js | 4 +++- src/webserver.js | 21 ++++++++++++++------- 4 files changed, 35 insertions(+), 14 deletions(-) diff --git a/public/src/utils.js b/public/src/utils.js index cc94905bd8..6f27bd7bce 100644 --- a/public/src/utils.js +++ b/public/src/utils.js @@ -107,6 +107,23 @@ return input.replace(commentsAndPhpTags, '').replace(tags, function ($0, $1) { return allowed.indexOf('<' + $1.toLowerCase() + '>') > -1 ? $0 : ''; }); + }, + + buildMetaTags: function(tagsArr) { + var tags = '', + tag; + for(var x=0,numTags=tagsArr.length;x 0) tags += "\n\t"; + tag = ' {title} - - - - - - + {meta_tags} diff --git a/src/categories.js b/src/categories.js index 4bd644bf24..ea4b4ec01d 100644 --- a/src/categories.js +++ b/src/categories.js @@ -13,7 +13,8 @@ var RDB = require('./redis.js'), if (err) return callback(err); var category_name = categoryData.name, - category_slug = categoryData.slug; + category_slug = categoryData.slug, + category_description = categoryData.description; function getTopicIds(next) { Categories.getTopicIds(category_id, next); @@ -28,6 +29,7 @@ var RDB = require('./redis.js'), var categoryData = { 'category_name' : category_name, + 'category_description': category_description, 'show_sidebar' : 'show', 'show_topic_button': 'inline-block', 'no_topics_message': 'hidden', diff --git a/src/webserver.js b/src/webserver.js index 3065d71b99..c2555b1400 100644 --- a/src/webserver.js +++ b/src/webserver.js @@ -26,15 +26,20 @@ var express = require('express'), (function(app) { var templates = null; - app.build_header = function(res) { + app.build_header = function(res, metaTags) { + var defaultMetaTags = [ + { name: 'viewport', content: 'width=device-width, initial-scale=1.0' }, + { name: 'content-type', content: 'text/html; charset=UTF-8' }, + { name: 'apple-mobile-web-app-capable', content: 'yes' } + ], + metaString = utils.buildMetaTags(defaultMetaTags.concat(metaTags || [])); + return templates['header'].parse({ cssSrc: global.config['theme:src'] || global.nconf.get('relative_path') + '/vendor/bootstrap/css/bootstrap.min.css', title: global.config['title'] || 'NodeBB', csrf:res.locals.csrf_token, relative_path: global.nconf.get('relative_path'), - meta: { - description: 'test' - } + meta_tags: metaString }); }; @@ -157,7 +162,6 @@ var express = require('express'), app.get('/', function(req, res) { - categories.getAllCategories(function(returnData) { res.send( app.build_header(res) + @@ -214,9 +218,12 @@ var express = require('express'), var category_url = cid + (req.params.slug ? '/' + req.params.slug : ''); categories.getCategoryById(cid, 0, function(err, returnData) { if(err) return res.redirect('404'); - + res.send( - app.build_header(res) + + app.build_header(res, [ + { name: 'title', content: returnData.category_name }, + { name: 'description', content: returnData.category_description } + ]) + '\n\t' + '\n\t' + templates['footer']