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<numTags;x++) { + if (tags.length > 0) tags += "\n\t"; + tag = '<meta'; + for(y in tagsArr[x]) { + tag += ' ' + y + '="' + tagsArr[x][y] + '"'; + } + tag += ' />'; + + tags += tag; + } + + return tags; } } diff --git a/public/templates/header.tpl b/public/templates/header.tpl index 2215f0b742..f960144fdf 100644 --- a/public/templates/header.tpl +++ b/public/templates/header.tpl @@ -2,12 +2,7 @@ <html> <head> <title>{title}</title> - <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta name="title" CONTENT="NodeBB"> - <meta name="keywords" content="" /> - <meta name="description" content="{meta.description}" /> - <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> - <meta name="apple-mobile-web-app-capable" content="yes" /> + {meta_tags} <link href="{cssSrc}" rel="stylesheet" media="screen"> <link href="{relative_path}/vendor/bootstrap/css/bootstrap-responsive.min.css" rel="stylesheet" media="screen"> <link rel="stylesheet" href="{relative_path}/vendor/fontawesome/css/font-awesome.min.css"> 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<noscript>\n' + templates['noscript/header'] + templates['noscript/category'].parse(returnData) + '\n\t</noscript>' + '\n\t<script>templates.ready(function(){ajaxify.go("category/' + category_url + '");});</script>' + templates['footer']