diff --git a/docs/theming.md b/docs/theming.md
index 088c855b..f39af540 100644
--- a/docs/theming.md
+++ b/docs/theming.md
@@ -20,6 +20,11 @@ Please review the default configuration that is applied to understand your custo
You can just update the files in [helmfile/files/theme](../helmfile/files/theme) to change logos, favicons etc. Note that the `.svg` versions of the favicons are also used for the portal tiles.
+> **Note**
+> Theming focusses on colors, iconography and imagery. If you like to adapt the default links in the portal pointing to external
+> resources (like "Support", "Legal Notice") please check the `functional.portal` section
+> in [`functional.yaml.gotmpl`](../helmfile/environments/default/functional.yaml.gotmpl)
+
# Known limitations
- Portal and Keycloak screen styles, especially colors, must be applied in the [`portalStylesheets.css`](../helmfile/files/theme/portalStylesheet.css),
diff --git a/helmfile/apps/nubus/values-nubus.yaml.gotmpl b/helmfile/apps/nubus/values-nubus.yaml.gotmpl
index cc135925..7e82bda5 100644
--- a/helmfile/apps/nubus/values-nubus.yaml.gotmpl
+++ b/helmfile/apps/nubus/values-nubus.yaml.gotmpl
@@ -409,8 +409,12 @@ nubusPortalFrontend:
portalFrontend:
branding:
css: {{ .Values.theme.styles.portal.main | toJson }}
- # Requires .ico, .svg does not work.
favicon: {{ .Values.theme.imagery.portal.faviconIco | toJson }}
+ faviconSvg: {{ .Values.theme.imagery.portal.faviconSvg | toJson }}
+ favicon96Png: {{ .Values.theme.imagery.portal.favicon96Png | toJson }}
+ appleTouchIcon: {{ .Values.theme.imagery.portal.appleTouchIcon | toJson }}
+ webManifestIcon192: {{ .Values.theme.imagery.portal.webManifestIcon192 | toJson }}
+ webManifestIcon512: {{ .Values.theme.imagery.portal.webManifestIcon512 | toJson }}
# The actual `logo` is set in customizing image, the logo down here is for waiting spinner.
logo: {{ .Values.theme.imagery.portal.waitingSpinnerSvg | toJson }}
backgroundImage: {{ .Values.theme.imagery.portal.backgroundSvg | toJson }}
@@ -680,7 +684,6 @@ nubusPortalServer:
{{- with .Values.annotations.nubusPortalServer.ingress }}
{{ . | toYaml | nindent 8 }}
{{- end }}
-
certManager:
enabled: false
tls:
@@ -704,6 +707,25 @@ nubusPortalServer:
sharedSecret: {{ .Values.secrets.centralnavigation.apiKey | quote }}
featureToggles:
notifications_api: false
+ centered_layout: true
+ newsfeed: {{ .Values.apps.xwiki.enabled }}
+ umc_session_refresh: true
+ welcome_message: true
+ newsfeed:
+ feedType: "xwiki"
+ feedUrl:
+ en_US: {{ printf "https://%s.%s/wiki/bin/get/Blog/BlogRss?xpage=plain&blog=openDesk.Newsfeed.WebHome" .Values.global.hosts.intercomService .Values.global.domain }}
+ de_DE: {{ printf "https://%s.%s/wiki/bin/get/Blog/BlogRss?xpage=plain&blog=openDesk.Newsfeed.WebHome" .Values.global.hosts.intercomService .Values.global.domain }}
+ homeUrl:
+ en_US: {{ printf "https://%s.%s/bin/view/openDesk/Newsfeed/" .Values.global.hosts.xwiki .Values.global.domain }}
+ de_DE: {{ printf "https://%s.%s/bin/view/openDesk/Newsfeed/" .Values.global.hosts.xwiki .Values.global.domain }}
+ icsSilentLoginUrl: {{ printf "https://%s.%s/silent" .Values.global.hosts.intercomService .Values.global.domain }}
+ objectStorageEndpoint: {{ printf "https://%s" (.Values.objectstores.nubus.endpoint | default (printf "%s.%s" .Values.global.hosts.minioApi .Values.global.domain)) | quote }}
+ objectStorageBucket: {{ .Values.objectstores.nubus.bucket | quote }}
+ objectStorageCredentialSecret:
+ name: "ums-portal-server-minio-opendesk-credentials"
+ accessKeyKey: "access-key-id"
+ secretKeyKey: "secret-key-id"
replicaCount: {{ .Values.replicas.umsPortalServer }}
resources:
{{ .Values.resources.umsPortalServer | toYaml | nindent 4 }}
diff --git a/helmfile/environments/default/images.yaml.gotmpl b/helmfile/environments/default/images.yaml.gotmpl
index c015d6f6..e816b61a 100644
--- a/helmfile/environments/default/images.yaml.gotmpl
+++ b/helmfile/environments/default/images.yaml.gotmpl
@@ -550,7 +550,7 @@ images:
# upstreamRepository: "bmi/opendesk/components/platform-development/images/opendesk-nubus"
registry: "registry.opencode.de"
repository: "bmi/opendesk/components/platform-development/images/opendesk-nubus"
- tag: "1.14.4@sha256:cf0e22c1eef138a413a90a60c5405126dc769195dd4dd37229a27afaa82ef3b3"
+ tag: "1.14.7@sha256:e00b6829b765dc1319593c1a1f8369950fc179308d65b79838539ca2967eb5ac"
nubusOpendeskExtensionA2gMapper:
# providerCategory: "Platform"
# providerResponsible: "openDesk"
@@ -604,9 +604,11 @@ images:
# providerResponsible: "Univention"
# upstreamRegistry: "https://artifacts.software-univention.de"
# upstreamRepository: "nubus/images/portal-frontend"
+ # upstreamMirrorTagFilterRegEx: '^(\d+)\.(\d+)\.(\d+)$'
+ # upstreamMirrorStartFrom: ["0", "67", "0"]
registry: "registry.opencode.de"
- repository: "bmi/opendesk/components/platform-development/images/opendesk-nubus-portal-update"
- tag: "1.10.14@sha256:fbdec057958fd7e728431cf96896b8453c2f5b390ce3d2f169a7766f49926b1b"
+ repository: "bmi/opendesk/components/supplier/univention/images-mirror/portal-frontend"
+ tag: "0.70.0@sha256:9e0826c954e99b36b3c7b9ce6dfa1f567a3432158fb78af13337760197f94997"
nubusPortalServer:
# providerCategory: "Supplier"
# providerResponsible: "Univention"
diff --git a/helmfile/environments/default/theme.yaml.gotmpl b/helmfile/environments/default/theme.yaml.gotmpl
index 3c53520a..55e0a52a 100644
--- a/helmfile/environments/default/theme.yaml.gotmpl
+++ b/helmfile/environments/default/theme.yaml.gotmpl
@@ -66,7 +66,13 @@ theme:
faviconIco: {{ readFile "./../../files/theme/notes/favicon.ico" | b64enc | quote }}
portal:
- faviconIco: {{ readFile "./../../files/theme/portal/favicon.ico" | b64enc | quote }}
+ faviconIco: {{ readFile "./../../files/theme/portal/favicon/favicon.ico" | b64enc | quote }}
+ faviconSvg: {{ readFile "./../../files/theme/portal/favicon/favicon.svg" | b64enc | quote }}
+ favicon96Png: {{ readFile "./../../files/theme/portal/favicon/favicon-96x96.png" | b64enc | quote }}
+ appleTouchIcon: {{ readFile "./../../files/theme/portal/favicon/apple-touch-icon.png" | b64enc | quote }}
+ webManifestIcon192: {{ readFile "./../../files/theme/portal/favicon/web-app-manifest-192x192.png" | b64enc | quote }}
+ webManifestIcon512: {{ readFile "./../../files/theme/portal/favicon/web-app-manifest-512x512.png" | b64enc | quote }}
+
waitingSpinnerSvg: {{ readFile "./../../files/theme/portal/waiting-spinner.svg" | b64enc }}
backgroundSvg: {{ readFile "./../../files/theme/portal/background.svg" | b64enc | quote }}
portalTiles:
@@ -89,6 +95,10 @@ theme:
notes: {{ readFile "./../../files/theme/notes/favicon.svg" | b64enc | quote }}
realtimeCollaboration: {{ readFile "./../../files/theme/chat/favicon.svg" | b64enc | quote }}
realtimeVideoconference: {{ readFile "./../../files/theme/videoconference/favicon.svg" | b64enc | quote }}
+ # links
+ documentation: {{ readFile "./../../files/theme/link_documentation/favicon.svg" | b64enc | quote }}
+ feedback: {{ readFile "./../../files/theme/link_feedback/favicon.svg" | b64enc | quote }}
+ support: {{ readFile "./../../files/theme/link_support/favicon.svg" | b64enc | quote }}
# empty.svg
empty: {{ readFile "./../../files/theme/_dev/empty.svg" | b64enc | quote }}
fileshareActivity: {{ readFile "./../../files/theme/_dev/empty.svg" | b64enc | quote }}
diff --git a/helmfile/files/theme/link_documentation/favicon.svg b/helmfile/files/theme/link_documentation/favicon.svg
new file mode 100644
index 00000000..2f5af092
--- /dev/null
+++ b/helmfile/files/theme/link_documentation/favicon.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/helmfile/files/theme/link_feedback/favicon.svg b/helmfile/files/theme/link_feedback/favicon.svg
new file mode 100644
index 00000000..70242620
--- /dev/null
+++ b/helmfile/files/theme/link_feedback/favicon.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/helmfile/files/theme/link_support/favicon.svg b/helmfile/files/theme/link_support/favicon.svg
new file mode 100644
index 00000000..5992ecbd
--- /dev/null
+++ b/helmfile/files/theme/link_support/favicon.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/helmfile/files/theme/portal/favicon.ico b/helmfile/files/theme/portal/favicon.ico
deleted file mode 100644
index 90f0b212..00000000
Binary files a/helmfile/files/theme/portal/favicon.ico and /dev/null differ
diff --git a/helmfile/files/theme/portal/favicon.png b/helmfile/files/theme/portal/favicon.png
deleted file mode 100644
index bf4be257..00000000
Binary files a/helmfile/files/theme/portal/favicon.png and /dev/null differ
diff --git a/helmfile/files/theme/portal/favicon.svg b/helmfile/files/theme/portal/favicon.svg
deleted file mode 100644
index fabe610b..00000000
--- a/helmfile/files/theme/portal/favicon.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
diff --git a/helmfile/files/theme/portal/favicon/apple-touch-icon.png b/helmfile/files/theme/portal/favicon/apple-touch-icon.png
new file mode 100644
index 00000000..a3a11701
Binary files /dev/null and b/helmfile/files/theme/portal/favicon/apple-touch-icon.png differ
diff --git a/helmfile/files/theme/portal/favicon/favicon-96x96.png b/helmfile/files/theme/portal/favicon/favicon-96x96.png
new file mode 100644
index 00000000..1a1d5860
Binary files /dev/null and b/helmfile/files/theme/portal/favicon/favicon-96x96.png differ
diff --git a/helmfile/files/theme/portal/favicon/favicon.ico b/helmfile/files/theme/portal/favicon/favicon.ico
new file mode 100644
index 00000000..182400de
Binary files /dev/null and b/helmfile/files/theme/portal/favicon/favicon.ico differ
diff --git a/helmfile/files/theme/portal/favicon/favicon.svg b/helmfile/files/theme/portal/favicon/favicon.svg
new file mode 100644
index 00000000..20af59cf
--- /dev/null
+++ b/helmfile/files/theme/portal/favicon/favicon.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/helmfile/files/theme/portal/favicon/web-app-manifest-192x192.png b/helmfile/files/theme/portal/favicon/web-app-manifest-192x192.png
new file mode 100644
index 00000000..7a190519
Binary files /dev/null and b/helmfile/files/theme/portal/favicon/web-app-manifest-192x192.png differ
diff --git a/helmfile/files/theme/portal/favicon/web-app-manifest-512x512.png b/helmfile/files/theme/portal/favicon/web-app-manifest-512x512.png
new file mode 100644
index 00000000..51e11b5d
Binary files /dev/null and b/helmfile/files/theme/portal/favicon/web-app-manifest-512x512.png differ
diff --git a/helmfile/files/theme/portal/stylesheet.css b/helmfile/files/theme/portal/stylesheet.css
index 9438e4e7..d326dd7d 100644
--- a/helmfile/files/theme/portal/stylesheet.css
+++ b/helmfile/files/theme/portal/stylesheet.css
@@ -97,6 +97,11 @@
--login-logo: url("/static-files/login/logo.svg") no-repeat center;
}
+/* Speed of flyout mennu */
+.flyout-wrapper, .flyout-wrapper--isVisible {
+ transition: transform .5s cubic-bezier(0,0,.2,1);
+}
+
/* Keycloak user screens begin */
#kc-login,
#kc-logout,
@@ -492,4 +497,174 @@ textarea {
overflow: hidden;
clip: rect(0, 0, 0, 0);
border: 0;
+}
+
+/* openDesk customization for nubus-frontend below */
+
+.portal-quick-draft {
+ background-color: var(--color-accent);
+ color: #fff;
+ border: 1px solid #d3d7de;
+}
+
+.portal-quick-draft__img {
+ filter: grayscale(1) invert(1);
+}
+
+.portal-quick-draft:hover,
+.portal-quick-draft__toggle:hover {
+ background-color: #4519c2;
+}
+
+.portal-quick-draft:focus-within {
+ box-shadow: 0px 0px 0px 3px #c8b9fd;
+}
+
+.portal-quick-draft--open:focus-within {
+ box-shadow: unset;
+}
+
+.portal-quick-draft__toggle:focus {
+ border-color: var(--color-focus);
+}
+
+.portal-quick-draft--open,
+.portal-quick-draft--open:hover,
+.portal-quick-draft--open .portal-quick-draft__toggle:hover {
+ background-color: #341291;
+}
+
+.portal-quick-draft__item {
+ color: #fff;
+}
+
+.portal-quick-draft__item:hover,
+.portal-quick-draft__item:focus-visible {
+ color: hsla(0,0%,100%,.7);
+}
+
+.portal-category__title {
+ margin-bottom: calc(var(--layout-spacing-unit) * 2);
+ font-size: var(--font-size-3);
+ font-weight: 700;
+}
+
+.portal-category .portal-category__tiles {
+ --app-tile-side-length: 5.5rem;
+ --border-radius-apptile: var(--layout-spacing-unit);
+ grid-gap: calc(var(--layout-spacing-unit) * 2.5) calc(var(--layout-spacing-unit) * 4.5);
+}
+
+.portal-tile__box {
+ box-shadow: none;
+ border: 1px solid #d9d9d9;
+ margin-bottom: calc(var(--layout-spacing-unit) * 1);
+}
+
+.portal-tile__box--with-scaling-hover:hover {
+ scale: 1;
+}
+
+.portal-tile:hover .portal-tile__box {
+ border-color: #99a1b2;
+}
+
+.portal-tile:focus .portal-tile__box {
+ border-color: #99a1b2;
+ box-shadow: 0 0 0 3px #c8b9fd;
+}
+
+.portal-corner__inner {
+ background-color: #203257;
+}
+
+.portal-corner__link {
+ color: #fff;
+}
+
+.portal-corner__link:focus-visible,
+.portal-corner__link:hover {
+ color: hsla(0, 0%, 100%, .7);
+ outline: none;
+ outline-offset: none;
+}
+
+.portal-corner__item:after {
+ color: hsla(0,0%,100%,.5);
+}
+
+.newsfeed-meta__btn {
+ border: 1px solid var(--bgc-announcements-info);
+ color: var(--color-accent);
+ background-color: var(--color-opendesk-white);
+}
+
+.newsfeed-meta__btn:focus,
+.newsfeed-meta__btn:hover {
+ border-color: var(--newsfeed-link-hover-color);
+}
+
+#header-button-menu {
+ width: auto;
+}
+
+.portal-header__right .header-button[data-test=searchbutton] {
+ display: none;
+}
+
+.portal-sidebar__flyout {
+ border-radius: 0;
+}
+
+.portal-sidenavigation__login-header {
+ order: 1;
+}
+
+.portal-sidenavigation__login-header + .divider {
+ display: none;
+}
+
+.portal-sidenavigation__user-row {
+ display: block;
+ height: auto;
+}
+
+.portal-sidenavigation__user-text-content {
+ display: block;
+ padding: 0;
+}
+
+.portal-sidenavigation--username {
+ display: none;
+}
+
+.portal-sidenavigation__logout-link {
+ padding: 1em 0 1em 20px;
+ cursor: pointer;
+ height: auto;
+ width: 100%;
+ text-align: left;
+ font-size: var(--font-size-4);
+ color: var(--font-color-contrast-high);
+ font-weight: 600;
+ text-transform: uppercase;
+ background-color: transparent;
+ border: none;
+ margin: 0;
+ scale: 1;
+ display: block;
+ border-radius: 0;
+}
+
+.portal-sidenavigation__logout-link:hover {
+ background-color: #f5f5f5;
+ transition: all var(--portal-transition-duration);
+}
+
+.portal-category__title::before {
+ display: block;
+ content: "";
+ width: 20px;
+ height: 20px;
+ background: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgZmlsbD0ibm9uZSIgeG1sbnM6dj0iaHR0cHM6Ly92ZWN0YS5pby9uYW5vIj48cGF0aCBkPSJNNS45MzggNC42ODhhMS4yNSAxLjI1IDAgMCAxLS43NzIgMS4xNTUgMS4yNSAxLjI1IDAgMCAxLTEuMzYyLS4yNzEgMS4yNSAxLjI1IDAgMCAxLS4yNzEtMS4zNjIgMS4yNSAxLjI1IDAgMCAxIDEuMTU1LS43NzIgMS4yNSAxLjI1IDAgMCAxIDEuMjUgMS4yNXpNMTAgMy40MzhhMS4yNSAxLjI1IDAgMCAwLTEuMTU1Ljc3MiAxLjI1IDEuMjUgMCAwIDAgLjI3MSAxLjM2MiAxLjI1IDEuMjUgMCAwIDAgMS4zNjIuMjcxIDEuMjUgMS4yNSAwIDAgMCAuNzcyLTEuMTU1QTEuMjUgMS4yNSAwIDAgMCAxMCAzLjQzOHptNS4zMTMgMi41YTEuMjUgMS4yNSAwIDAgMCAxLjE1NS0uNzcyIDEuMjUgMS4yNSAwIDAgMC0uMjcxLTEuMzYyIDEuMjUgMS4yNSAwIDAgMC0xLjM2Mi0uMjcxIDEuMjUgMS4yNSAwIDAgMC0uNzcyIDEuMTU1IDEuMjUgMS4yNSAwIDAgMCAxLjI1IDEuMjV6TTQuNjg4IDguNzVhMS4yNSAxLjI1IDAgMCAwLTEuMTU1Ljc3MiAxLjI1IDEuMjUgMCAwIDAgLjI3MSAxLjM2MiAxLjI1IDEuMjUgMCAwIDAgMS4zNjIuMjcxQTEuMjUgMS4yNSAwIDAgMCA1LjkzOCAxMGExLjI1IDEuMjUgMCAwIDAtMS4yNS0xLjI1em01LjMxMyAwYTEuMjUgMS4yNSAwIDAgMC0xLjE1NS43NzIgMS4yNSAxLjI1IDAgMCAwIC4yNzEgMS4zNjIgMS4yNSAxLjI1IDAgMCAwIDEuMzYyLjI3MUExLjI1IDEuMjUgMCAwIDAgMTEuMjUgMTAgMS4yNSAxLjI1IDAgMCAwIDEwIDguNzV6bTUuMzEzIDBhMS4yNSAxLjI1IDAgMCAwLTEuMTU1Ljc3MiAxLjI1IDEuMjUgMCAwIDAgLjI3MSAxLjM2MiAxLjI1IDEuMjUgMCAwIDAgMS4zNjIuMjcxQTEuMjUgMS4yNSAwIDAgMCAxNi41NjMgMTBhMS4yNSAxLjI1IDAgMCAwLTEuMjUtMS4yNXpNNC42ODggMTQuMDYzYTEuMjUgMS4yNSAwIDAgMC0xLjE1NS43NzIgMS4yNSAxLjI1IDAgMCAwIC4yNzEgMS4zNjIgMS4yNSAxLjI1IDAgMCAwIDEuMzYyLjI3MSAxLjI1IDEuMjUgMCAwIDAgLjc3Mi0xLjE1NSAxLjI1IDEuMjUgMCAwIDAtMS4yNS0xLjI1em01LjMxMyAwYTEuMjUgMS4yNSAwIDAgMC0xLjE1NS43NzIgMS4yNSAxLjI1IDAgMCAwIC4yNzEgMS4zNjIgMS4yNSAxLjI1IDAgMCAwIDEuMzYyLjI3MSAxLjI1IDEuMjUgMCAwIDAgLjc3Mi0xLjE1NSAxLjI1IDEuMjUgMCAwIDAtMS4yNS0xLjI1em01LjMxMyAwYTEuMjUgMS4yNSAwIDAgMC0xLjE1NS43NzIgMS4yNSAxLjI1IDAgMCAwIC4yNzEgMS4zNjIgMS4yNSAxLjI1IDAgMCAwIDEuMzYyLjI3MSAxLjI1IDEuMjUgMCAwIDAgLjc3Mi0xLjE1NSAxLjI1IDEuMjUgMCAwIDAtMS4yNS0xLjI1eiIgZmlsbD0iIzAwMCIvPjwvc3ZnPg==');
}
\ No newline at end of file