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