From cc85b2143c197ea033d4c5ff9ac409c5584cadc5 Mon Sep 17 00:00:00 2001 From: Alistair McKinlay Date: Thu, 20 Apr 2017 11:17:25 +0100 Subject: [PATCH 1/2] Change index.html to be rendered using handlebars --- client/index.html | 68 +++++++++++-------- .../libs/handlebars/firstLetterUppercase.js | 5 ++ client/js/libs/handlebars/index.js | 18 +++++ client/js/libs/handlebars/ternary.js | 5 ++ package.json | 1 + src/server.js | 40 +++++------ 6 files changed, 85 insertions(+), 52 deletions(-) create mode 100644 client/js/libs/handlebars/firstLetterUppercase.js create mode 100644 client/js/libs/handlebars/index.js create mode 100644 client/js/libs/handlebars/ternary.js diff --git a/client/index.html b/client/index.html index 83ac96ad..0bd055f5 100644 --- a/client/index.html +++ b/client/index.html @@ -9,7 +9,7 @@ - + The Lounge @@ -25,7 +25,7 @@ - "> +
@@ -122,12 +122,17 @@

- <%= public ? "The Lounge - " : "" %> + {{ternary public "The Lounge " " " }} Connect - <%= !displayNetwork && lockNetwork ? "to " + defaults.name : "" %> + {{#unless displayNetwork}} + {{#if lockNetwork}} + to {{defaults.name}} + {{/if}} + {{/unless}}

-
> + {{#unless displayNetwork}} +

Network settings

@@ -135,17 +140,17 @@
- +
- > +
- > +
@@ -153,16 +158,17 @@
- +
+ {{/unless}}

User preferences

@@ -170,27 +176,27 @@
- +
- <% if (!useHexIp) { %> + {{#unless useHexIp}}
- +
- <% } %> + {{/unless}}
- +
- +
@@ -261,14 +267,14 @@
- <% if (typeof prefetch === "undefined" || prefetch !== false) { %> + {{#unless prefetch}}

Links and URLs

@@ -284,7 +290,7 @@ Auto-expand links
- <% } %> + {{/unless}}

Notifications

@@ -328,7 +334,8 @@
- <% if (!public && !ldap.enable) { %> + {{#unless public}} + {{#unless ldap.enable}}
@@ -352,7 +359,8 @@
- <% } %> + {{/unless}} + {{/unless}}

Custom Stylesheet

@@ -809,13 +817,13 @@

About The Lounge

- <% if (gitCommit) { %> + {{#if gitCommit}} The Lounge is running from source - (<%= gitCommit %>).
- <% } else { %> - The Lounge is in version <%= version %> - (See release notes).
- <% } %> + ({{ gitCommit }}).
+ {{else}} + The Lounge is in version {{version}} + (See release notes).
+ {{/if}} Website
Documentation
diff --git a/client/js/libs/handlebars/firstLetterUppercase.js b/client/js/libs/handlebars/firstLetterUppercase.js new file mode 100644 index 00000000..d36bff54 --- /dev/null +++ b/client/js/libs/handlebars/firstLetterUppercase.js @@ -0,0 +1,5 @@ +"use strict"; + +module.exports = function(string) { + return string.charAt(0).toUpperCase() + string.slice(1); +}; diff --git a/client/js/libs/handlebars/index.js b/client/js/libs/handlebars/index.js new file mode 100644 index 00000000..fe485b47 --- /dev/null +++ b/client/js/libs/handlebars/index.js @@ -0,0 +1,18 @@ +"use strict"; + +module.exports = { + colorClass: require("./colorClass"), + diff: require("./diff"), + equal: require("./equal"), + firstLetterUppercase: require("./firstLetterUppercase"), + localedate: require("./localedate"), + localetime: require("./localetime"), + modes: require("./modes"), + parse: require("./parse"), + roundBadgeNumber: require("./roundBadgeNumber"), + slugify: require("./slugify"), + ternary: require("./ternary"), + tojson: require("./tojson"), + tz: require("./tz"), + users: require("./users"), +}; diff --git a/client/js/libs/handlebars/ternary.js b/client/js/libs/handlebars/ternary.js new file mode 100644 index 00000000..4dfa2995 --- /dev/null +++ b/client/js/libs/handlebars/ternary.js @@ -0,0 +1,5 @@ +"use strict"; + +module.exports = function(test, yes, no) { + return test ? yes : no; +}; diff --git a/package.json b/package.json index 30154e29..3628e2b3 100644 --- a/package.json +++ b/package.json @@ -46,6 +46,7 @@ "commander": "2.9.0", "event-stream": "3.3.4", "express": "4.15.2", + "express-handlebars": "^3.0.0", "fs-extra": "2.1.2", "irc-framework": "2.6.1", "ldapjs": "1.0.1", diff --git a/src/server.js b/src/server.js index 0ff97b76..082ef98f 100644 --- a/src/server.js +++ b/src/server.js @@ -5,7 +5,9 @@ var pkg = require("../package.json"); var Client = require("./client"); var ClientManager = require("./clientManager"); var express = require("express"); +var expressHandlebars = require("express-handlebars"); var fs = require("fs"); +var path = require("path"); var io = require("socket.io"); var dns = require("dns"); var Helper = require("./helper"); @@ -29,7 +31,10 @@ module.exports = function() { var app = express() .use(allRequests) .use(index) - .use(express.static("client")); + .use(express.static("client")) + .engine("html", expressHandlebars({extname: ".html", helpers: require("../client/js/libs/handlebars")})) + .set("view engine", "html") + .set("views", path.join(__dirname, "..", "client")); var config = Helper.config; var server = null; @@ -125,28 +130,19 @@ function index(req, res, next) { return next(); } - return fs.readFile("client/index.html", "utf-8", function(err, file) { - if (err) { - throw err; - } - - var data = _.merge( - pkg, - Helper.config - ); - data.gitCommit = Helper.getGitCommit(); - data.themes = fs.readdirSync("client/themes/").filter(function(themeFile) { - return themeFile.endsWith(".css"); - }).map(function(css) { - return css.slice(0, -4); - }); - var template = _.template(file); - res.setHeader("Content-Security-Policy", "default-src *; connect-src 'self' ws: wss:; style-src * 'unsafe-inline'; script-src 'self'; child-src 'self'; object-src 'none'; form-action 'none';"); - res.setHeader("Referrer-Policy", "no-referrer"); - res.setHeader("Content-Type", "text/html"); - res.writeHead(200); - res.end(template(data)); + var data = _.merge( + pkg, + Helper.config + ); + data.gitCommit = Helper.getGitCommit(); + data.themes = fs.readdirSync("client/themes/").filter(function(themeFile) { + return themeFile.endsWith(".css"); + }).map(function(css) { + return css.slice(0, -4); }); + res.setHeader("Content-Security-Policy", "default-src *; connect-src 'self' ws: wss:; style-src * 'unsafe-inline'; script-src 'self'; child-src 'self'; object-src 'none'; form-action 'none';"); + res.setHeader("Referrer-Policy", "no-referrer"); + res.render("index", data); } function init(socket, client) { From b4310dbc03734fd23f3d6ae72adee33d85949939 Mon Sep 17 00:00:00 2001 From: Alistair McKinlay Date: Fri, 21 Apr 2017 09:26:02 +0100 Subject: [PATCH 2/2] Review changes (Should be squashed before merge) --- client/index.html | 14 +++++++------- .../js/libs/handlebars/firstLetterUppercase.js | 5 ----- client/js/libs/handlebars/index.js | 18 ------------------ client/js/libs/handlebars/ternary.js | 5 ----- package.json | 2 +- src/server.js | 8 ++++++-- 6 files changed, 14 insertions(+), 38 deletions(-) delete mode 100644 client/js/libs/handlebars/firstLetterUppercase.js delete mode 100644 client/js/libs/handlebars/index.js delete mode 100644 client/js/libs/handlebars/ternary.js diff --git a/client/index.html b/client/index.html index 0bd055f5..7d751664 100644 --- a/client/index.html +++ b/client/index.html @@ -25,7 +25,7 @@ - +

@@ -122,7 +122,7 @@

- {{ternary public "The Lounge " " " }} + {{#if public}}The Lounge - {{/if}} Connect {{#unless displayNetwork}} {{#if lockNetwork}} @@ -146,11 +146,11 @@

- +
- +
@@ -162,7 +162,7 @@
@@ -268,8 +268,8 @@ diff --git a/client/js/libs/handlebars/firstLetterUppercase.js b/client/js/libs/handlebars/firstLetterUppercase.js deleted file mode 100644 index d36bff54..00000000 --- a/client/js/libs/handlebars/firstLetterUppercase.js +++ /dev/null @@ -1,5 +0,0 @@ -"use strict"; - -module.exports = function(string) { - return string.charAt(0).toUpperCase() + string.slice(1); -}; diff --git a/client/js/libs/handlebars/index.js b/client/js/libs/handlebars/index.js deleted file mode 100644 index fe485b47..00000000 --- a/client/js/libs/handlebars/index.js +++ /dev/null @@ -1,18 +0,0 @@ -"use strict"; - -module.exports = { - colorClass: require("./colorClass"), - diff: require("./diff"), - equal: require("./equal"), - firstLetterUppercase: require("./firstLetterUppercase"), - localedate: require("./localedate"), - localetime: require("./localetime"), - modes: require("./modes"), - parse: require("./parse"), - roundBadgeNumber: require("./roundBadgeNumber"), - slugify: require("./slugify"), - ternary: require("./ternary"), - tojson: require("./tojson"), - tz: require("./tz"), - users: require("./users"), -}; diff --git a/client/js/libs/handlebars/ternary.js b/client/js/libs/handlebars/ternary.js deleted file mode 100644 index 4dfa2995..00000000 --- a/client/js/libs/handlebars/ternary.js +++ /dev/null @@ -1,5 +0,0 @@ -"use strict"; - -module.exports = function(test, yes, no) { - return test ? yes : no; -}; diff --git a/package.json b/package.json index 3628e2b3..98754da7 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,7 @@ "commander": "2.9.0", "event-stream": "3.3.4", "express": "4.15.2", - "express-handlebars": "^3.0.0", + "express-handlebars": "3.0.0", "fs-extra": "2.1.2", "irc-framework": "2.6.1", "ldapjs": "1.0.1", diff --git a/src/server.js b/src/server.js index 082ef98f..db92efe7 100644 --- a/src/server.js +++ b/src/server.js @@ -32,7 +32,7 @@ module.exports = function() { .use(allRequests) .use(index) .use(express.static("client")) - .engine("html", expressHandlebars({extname: ".html", helpers: require("../client/js/libs/handlebars")})) + .engine("html", expressHandlebars({extname: ".html"})) .set("view engine", "html") .set("views", path.join(__dirname, "..", "client")); @@ -138,7 +138,11 @@ function index(req, res, next) { data.themes = fs.readdirSync("client/themes/").filter(function(themeFile) { return themeFile.endsWith(".css"); }).map(function(css) { - return css.slice(0, -4); + const filename = css.slice(0, -4); + return { + name: filename.charAt(0).toUpperCase() + filename.slice(1), + filename: filename + }; }); res.setHeader("Content-Security-Policy", "default-src *; connect-src 'self' ws: wss:; style-src * 'unsafe-inline'; script-src 'self'; child-src 'self'; object-src 'none'; form-action 'none';"); res.setHeader("Referrer-Policy", "no-referrer");