From 00b5556c182fa70dfca17c517488b8afae6257c9 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Thu, 22 Feb 2018 10:22:53 +0100 Subject: Add ability to add custom css/javascript --- server/controllers/api/config.ts | 12 ++++++++++-- server/initializers/constants.ts | 6 +++++- server/tests/api/check-params/config.ts | 6 +++++- server/tests/api/server/config.ts | 20 ++++++++++++++++++-- 4 files changed, 38 insertions(+), 6 deletions(-) (limited to 'server') diff --git a/server/controllers/api/config.ts b/server/controllers/api/config.ts index 532afb8c0..8cfaf3e29 100644 --- a/server/controllers/api/config.ts +++ b/server/controllers/api/config.ts @@ -43,7 +43,11 @@ async function getConfig (req: express.Request, res: express.Response, next: exp const json: ServerConfig = { instance: { - name: CONFIG.INSTANCE.NAME + name: CONFIG.INSTANCE.NAME, + customizations: { + javascript: CONFIG.INSTANCE.CUSTOMIZATIONS.JAVASCRIPT, + css: CONFIG.INSTANCE.CUSTOMIZATIONS.CSS + } }, serverVersion: packageJSON.version, signup: { @@ -132,7 +136,11 @@ function customConfig (): CustomConfig { instance: { name: CONFIG.INSTANCE.NAME, description: CONFIG.INSTANCE.DESCRIPTION, - terms: CONFIG.INSTANCE.TERMS + terms: CONFIG.INSTANCE.TERMS, + customizations: { + css: CONFIG.INSTANCE.CUSTOMIZATIONS.CSS, + javascript: CONFIG.INSTANCE.CUSTOMIZATIONS.JAVASCRIPT + } }, cache: { previews: { diff --git a/server/initializers/constants.ts b/server/initializers/constants.ts index ac001bbc7..328a3e70a 100644 --- a/server/initializers/constants.ts +++ b/server/initializers/constants.ts @@ -158,7 +158,11 @@ const CONFIG = { INSTANCE: { get NAME () { return config.get('instance.name') }, get DESCRIPTION () { return config.get('instance.description') }, - get TERMS () { return config.get('instance.terms') } + get TERMS () { return config.get('instance.terms') }, + CUSTOMIZATIONS: { + get JAVASCRIPT () { return config.get('instance.customizations.javascript') }, + get CSS () { return config.get('instance.customizations.css') } + } } } diff --git a/server/tests/api/check-params/config.ts b/server/tests/api/check-params/config.ts index efc1e4e09..c1c0a3f59 100644 --- a/server/tests/api/check-params/config.ts +++ b/server/tests/api/check-params/config.ts @@ -17,7 +17,11 @@ describe('Test config API validators', function () { instance: { name: 'PeerTube updated', description: 'my super description', - terms: 'my super terms' + terms: 'my super terms', + customizations: { + javascript: 'alert("coucou")', + css: 'body { background-color: red; }' + } }, cache: { previews: { diff --git a/server/tests/api/server/config.ts b/server/tests/api/server/config.ts index f1f7afef9..048135a34 100644 --- a/server/tests/api/server/config.ts +++ b/server/tests/api/server/config.ts @@ -3,6 +3,7 @@ import 'mocha' import * as chai from 'chai' import { About } from '../../../../shared/models/config/about.model' +import { CustomConfig } from '../../../../shared/models/config/custom-config.model' import { deleteCustomConfig, getAbout, killallServers, reRunServer } from '../../utils' const expect = chai.expect @@ -48,11 +49,13 @@ describe('Test config', function () { it('Should get the customized configuration', async function () { const res = await getCustomConfig(server.url, server.accessToken) - const data = res.body + const data = res.body as CustomConfig expect(data.instance.name).to.equal('PeerTube') expect(data.instance.description).to.equal('Welcome to this PeerTube instance!') expect(data.instance.terms).to.equal('No terms for now.') + expect(data.instance.customizations.css).to.be.empty + expect(data.instance.customizations.javascript).to.be.empty expect(data.cache.previews.size).to.equal(1) expect(data.signup.enabled).to.be.true expect(data.signup.limit).to.equal(4) @@ -72,7 +75,11 @@ describe('Test config', function () { instance: { name: 'PeerTube updated', description: 'my super description', - terms: 'my super terms' + terms: 'my super terms', + customizations: { + javascript: 'alert("coucou")', + css: 'body { background-color: red; }' + } }, cache: { previews: { @@ -109,6 +116,8 @@ describe('Test config', function () { expect(data.instance.name).to.equal('PeerTube updated') expect(data.instance.description).to.equal('my super description') expect(data.instance.terms).to.equal('my super terms') + expect(data.instance.customizations.javascript).to.equal('alert("coucou")') + expect(data.instance.customizations.css).to.equal('body { background-color: red; }') expect(data.cache.previews.size).to.equal(2) expect(data.signup.enabled).to.be.false expect(data.signup.limit).to.equal(5) @@ -136,6 +145,8 @@ describe('Test config', function () { expect(data.instance.name).to.equal('PeerTube updated') expect(data.instance.description).to.equal('my super description') expect(data.instance.terms).to.equal('my super terms') + expect(data.instance.customizations.javascript).to.equal('alert("coucou")') + expect(data.instance.customizations.css).to.equal('body { background-color: red; }') expect(data.cache.previews.size).to.equal(2) expect(data.signup.enabled).to.be.false expect(data.signup.limit).to.equal(5) @@ -167,6 +178,11 @@ describe('Test config', function () { const res = await getCustomConfig(server.url, server.accessToken) const data = res.body + expect(data.instance.name).to.equal('PeerTube') + expect(data.instance.description).to.equal('Welcome to this PeerTube instance!') + expect(data.instance.terms).to.equal('No terms for now.') + expect(data.instance.customizations.css).to.be.empty + expect(data.instance.customizations.javascript).to.be.empty expect(data.cache.previews.size).to.equal(1) expect(data.signup.enabled).to.be.true expect(data.signup.limit).to.equal(4) -- cgit v1.2.3