diff --git a/training-portal/src/project/apps/workshops/contexts.py b/training-portal/src/project/apps/workshops/contexts.py index 74f6714b9..80c524c8c 100644 --- a/training-portal/src/project/apps/workshops/contexts.py +++ b/training-portal/src/project/apps/workshops/contexts.py @@ -11,6 +11,7 @@ def portal(request): context = {} context["portal_title"] = settings.PORTAL_TITLE context["portal_logo"] = settings.PORTAL_LOGO + context["portal_favicon"] = settings.PORTAL_FAVICON context["google_tracking_id"] = settings.GOOGLE_TRACKING_ID context["clarity_tracking_id"] = settings.CLARITY_TRACKING_ID context["amplitude_tracking_id"] = settings.AMPLITUDE_TRACKING_ID diff --git a/training-portal/src/project/apps/workshops/templates/workshops/session.html b/training-portal/src/project/apps/workshops/templates/workshops/session.html index 1638f7076..f0799a88d 100644 --- a/training-portal/src/project/apps/workshops/templates/workshops/session.html +++ b/training-portal/src/project/apps/workshops/templates/workshops/session.html @@ -9,7 +9,11 @@ + {% if portal_favicon %} + + {% else %} + {% endif %} {% if google_tracking_id %} diff --git a/training-portal/src/project/settings.py b/training-portal/src/project/settings.py index eae9457c5..4babc4f4b 100644 --- a/training-portal/src/project/settings.py +++ b/training-portal/src/project/settings.py @@ -179,6 +179,11 @@ with open(portal_log_path) as fp: PORTAL_LOGO = fp.read() +PORTAL_FAVICON = None + +if os.path.exists("/opt/app-root/static/theme/favicon.ico"): + PORTAL_FAVICON = "/static/workshops/theme/favicon.ico" + GOOGLE_TRACKING_ID = os.environ.get("GOOGLE_TRACKING_ID", "") CLARITY_TRACKING_ID = os.environ.get("CLARITY_TRACKING_ID", "") AMPLITUDE_TRACKING_ID = os.environ.get("AMPLITUDE_TRACKING_ID", "") diff --git a/training-portal/src/project/templates/project-base.html b/training-portal/src/project/templates/project-base.html index 23b3ed275..fa8911dc9 100644 --- a/training-portal/src/project/templates/project-base.html +++ b/training-portal/src/project/templates/project-base.html @@ -9,7 +9,11 @@ {% endblock %} + {% if portal_favicon %} + + {% else %} + {% endif %} {{ portal_title | escape }} {% block head_styles %} {% endblock %} diff --git a/workshop-images/base-environment/opt/gateway/src/backend/modules/dashboard.ts b/workshop-images/base-environment/opt/gateway/src/backend/modules/dashboard.ts index 6c8aeb59b..a635dff4b 100644 --- a/workshop-images/base-environment/opt/gateway/src/backend/modules/dashboard.ts +++ b/workshop-images/base-environment/opt/gateway/src/backend/modules/dashboard.ts @@ -35,6 +35,10 @@ function load_finished_html() { return fs.readFileSync(html_pathname, "utf8") } +const favicon_url = fs.existsSync("/opt/eduk8s/theme/favicon.ico") + ? "/static/theme/favicon.ico" + : "/static/images/favicon.ico" + export function setup_dashboard(app: express.Application, oauth2_client: any) { if (!config.enable_dashboard) return @@ -91,6 +95,7 @@ export function setup_dashboard(app: express.Application, oauth2_client: any) { locals["workshop_head_html"] = load_head_html() locals["workshop_started_html"] = load_started_html() locals["workshop_finished_html"] = load_finished_html() + locals["favicon_url"] = favicon_url res.render("dashboard-page", locals) }) diff --git a/workshop-images/base-environment/opt/gateway/src/backend/modules/terminals.ts b/workshop-images/base-environment/opt/gateway/src/backend/modules/terminals.ts index c05ee158b..ca95389fd 100644 --- a/workshop-images/base-environment/opt/gateway/src/backend/modules/terminals.ts +++ b/workshop-images/base-environment/opt/gateway/src/backend/modules/terminals.ts @@ -1,4 +1,5 @@ import * as express from "express" +import * as fs from "fs" import * as http from "http" import * as path from "path" import * as WebSocket from "ws" @@ -10,6 +11,10 @@ import { IPty } from "node-pty" const BASEDIR = path.dirname(path.dirname(path.dirname(__dirname))) +const favicon_url = fs.existsSync("/opt/eduk8s/theme/favicon.ico") + ? "/static/theme/favicon.ico" + : "/static/images/favicon.ico" + enum TerminalsPacketType { HELLO, PING, @@ -387,6 +392,6 @@ export function setup_terminals(app: express.Application, server: http.Server) { app.get("/terminal/session/:session_id", (req, res) => { let session_id = req.params.session_id || "1" - res.render("terminal-page", { session_id: session_id }) + res.render("terminal-page", { session_id: session_id, favicon_url: favicon_url }) }) } diff --git a/workshop-images/base-environment/opt/gateway/src/backend/views/dashboard-page.pug b/workshop-images/base-environment/opt/gateway/src/backend/views/dashboard-page.pug index 95289f87c..7c78c86ca 100644 --- a/workshop-images/base-environment/opt/gateway/src/backend/views/dashboard-page.pug +++ b/workshop-images/base-environment/opt/gateway/src/backend/views/dashboard-page.pug @@ -6,7 +6,7 @@ html.no-scrolling link(rel="stylesheet", href="/static/fontawesome/css/all.min.css") link(rel="stylesheet", href="/static/styles/educates.css") link(rel="stylesheet", href="/static/theme/workshop-dashboard.css") - link(rel="shortcut icon", href="/static/images/favicon.ico") + link(rel="shortcut icon", href=favicon_url) if workshop_head_html != workshop_head_html diff --git a/workshop-images/base-environment/opt/gateway/src/backend/views/terminal-page.pug b/workshop-images/base-environment/opt/gateway/src/backend/views/terminal-page.pug index 7a573ed9e..390fee792 100644 --- a/workshop-images/base-environment/opt/gateway/src/backend/views/terminal-page.pug +++ b/workshop-images/base-environment/opt/gateway/src/backend/views/terminal-page.pug @@ -3,7 +3,7 @@ html link(rel="stylesheet", href="/static/xterm/css/xterm.css") link(rel="stylesheet", href="/static/bootstrap/css/bootstrap.css") link(rel="stylesheet", href="/static/styles/educates.css") - link(rel="shortcut icon", href="/static/images/favicon.ico") + link(rel="shortcut icon", href=favicon_url) body div.terminal(data-endpoint-id=`${endpoint_id}` data-session-id=`${session_id}` data-default-terminal="true") diff --git a/workshop-images/base-environment/opt/renderer/src/backend/modules/routes.ts b/workshop-images/base-environment/opt/renderer/src/backend/modules/routes.ts index 8ab9c0184..458e8c861 100644 --- a/workshop-images/base-environment/opt/renderer/src/backend/modules/routes.ts +++ b/workshop-images/base-environment/opt/renderer/src/backend/modules/routes.ts @@ -64,6 +64,10 @@ function load_head_html() { return fs.readFileSync(html_pathname, "utf8") } +const favicon_url = fs.existsSync("/opt/eduk8s/theme/favicon.ico") + ? "/workshop/static/theme/favicon.ico" + : "/workshop/static/images/favicon.ico" + router.get("/workshop/content/:pathname(*)", async function (req, res, next) { // Only allow a .html extension if an extension is supplied with the // request path. This is for compatability with previous rendering system. @@ -97,6 +101,7 @@ router.get("/workshop/content/:pathname(*)", async function (req, res, next) { module: module, modules: modules, workshop_head_html: load_head_html(), + favicon_url: favicon_url, } return res.render("content-page", options) diff --git a/workshop-images/base-environment/opt/renderer/src/backend/views/content-page.pug b/workshop-images/base-environment/opt/renderer/src/backend/views/content-page.pug index 283404e25..bc49dc58f 100644 --- a/workshop-images/base-environment/opt/renderer/src/backend/views/content-page.pug +++ b/workshop-images/base-environment/opt/renderer/src/backend/views/content-page.pug @@ -14,7 +14,7 @@ html link(rel="stylesheet", href=`/workshop/static/styles/educates-${module.format}.css`) link(rel="stylesheet", href="/workshop/static/theme/workshop-instructions.css") - link(rel="shortcut icon", href="/workshop/static/images/favicon.ico") + link(rel="shortcut icon", href=favicon_url) if workshop_head_html != workshop_head_html