Optimized modals

This commit is contained in:
Kevin Veen-Birkenbach 2025-01-09 14:59:30 +01:00
parent d59cc73470
commit 9455f40079
4 changed files with 65 additions and 61 deletions

View File

@ -122,25 +122,25 @@ navigation:
description: Read my microblogs description: Read my microblogs
icon: icon:
class: fa-brands fa-mastodon class: fa-brands fa-mastodon
href: https://microblog.veen.world/@kevinveenbirkenbach url: https://microblog.veen.world/@kevinveenbirkenbach
subitems: [] subitems: []
- name: Pictures - name: Pictures
description: View my photo gallery description: View my photo gallery
icon: icon:
class: fa-solid fa-camera class: fa-solid fa-camera
href: https://picture.veen.world/kevinveenbirkenbach url: https://picture.veen.world/kevinveenbirkenbach
subitems: [] subitems: []
- name: Videos - name: Videos
description: Watch my videos description: Watch my videos
icon: icon:
class: fa-solid fa-video class: fa-solid fa-video
href: https://video.veen.world/a/kevinveenbirkenbach url: https://video.veen.world/a/kevinveenbirkenbach
subitems: [] subitems: []
- name: Blog - name: Blog
description: Read my blog description: Read my blog
icon: icon:
class: fa-solid fa-blog class: fa-solid fa-blog
href: https://blog.veen.world url: https://blog.veen.world
subitems: [] subitems: []
- name: Code - name: Code
icon: icon:
@ -151,64 +151,68 @@ navigation:
description: View my GitHub profile description: View my GitHub profile
icon: icon:
class: bi bi-github class: bi bi-github
href: https://github.com/kevinveenbirkenbach url: https://github.com/kevinveenbirkenbach
subitems: [] subitems: []
- name: Gitea - name: Gitea
description: Explore my code repositories description: Explore my code repositories
icon: icon:
class: fa-solid fa-code class: fa-solid fa-code
href: https://git.veen.world/kevinveenbirkenbach url: https://git.veen.world/kevinveenbirkenbach
subitems: [] subitems: []
- name: Contact - name: Contact
description: Get in touch description: Get in touch
icon: icon:
class: fa-solid fa-envelope class: fa-solid fa-envelope
href:
subitems: subitems:
- name: Email - name: Email
description: Send me an email description: Send me an email
icon: icon:
class: fa-solid fa-envelope class: fa-solid fa-envelope
href: kevin@veen.world url: mailto:kevin@veen.world
href_praefix: mailto identifier: kevin@veen.world
subitems: []
- name: Matrix - name: Matrix
description: Chat with me on Matrix description: Chat with me on Matrix
icon: icon:
class: fa-solid fa-cubes class: fa-solid fa-cubes
popup: true identifier: "@kevinveenbirkenbach:veen.world"
address: "@kevinveenbirkenbach:veen.world"
- name: Mobile - name: Mobile
description: Call me description: Call me
icon: icon:
class: fa-solid fa-phone class: fa-solid fa-phone
href: "+491781798023" url: "tel:+491781798023"
href_praefix: tel identifier: "+491781798023"
subitems: [] - name: Encrypted Email (PGP)
- name: PGP
description: Access my PGP key description: Access my PGP key
icon: icon:
class: fa-solid fa-key class: fa-solid fa-key
href: https://s.veen.world/pgp url: https://s.veen.world/pgp
subitems: []
- name: Signal - name: Signal
description: Message me on Signal description: Message me on Signal
icon: icon:
class: fa-brands fa-signal-messenger class: fa-brands fa-signal-messenger
popup: true identifier: "+491781798023"
href: "+491781798023" warning: Signal is not hosted by me!
subitems: [] alternatives:
link: navigation.header.contact.matrix
- name: Telegram - name: Telegram
description: Message me on Telegram description: Message me on Telegram
icon: icon:
class: fa-brands fa-telegram class: fa-brands fa-telegram
target: _blank target: _blank
href: https://t.me/kevinveenbirkenbach url: https://t.me/kevinveenbirkenbach
identifier: kevinveenbirkenbach
warning: Telegram is not hosted by me!
alternatives:
link: navigation.header.contact.matrix
- name: WhatsApp - name: WhatsApp
description: Chat with me on WhatsApp description: Chat with me on WhatsApp
icon: icon:
class: fa-brands fa-whatsapp class: fa-brands fa-whatsapp
href: https://wa.me/491781798023 url: https://wa.me/491781798023
identifier: "+491781798023"
warning: Whatsapp is not hosted by me!
alternatives:
link: navigation.header.contact.matrix
footer: footer:
- name: External Accounts - name: External Accounts
description: Me on other plattforms description: Me on other plattforms
@ -219,18 +223,18 @@ navigation:
description: Social and developer networks description: Social and developer networks
icon: icon:
class: fa-brands fa-meta class: fa-brands fa-meta
href: url:
subitems: subitems:
- name: Instagram - name: Instagram
description: Follow me on Instagram description: Follow me on Instagram
icon: icon:
class: fa-brands fa-instagram class: fa-brands fa-instagram
href: https://www.instagram.com/kevinveenbirkenbach/ url: https://www.instagram.com/kevinveenbirkenbach/
- name: Facebook - name: Facebook
description: Like my Facebook page description: Like my Facebook page
icon: icon:
class: fa-brands fa-facebook class: fa-brands fa-facebook
href: https://www.facebook.com/kevinveenbirkenbach url: https://www.facebook.com/kevinveenbirkenbach
- name: Communication - name: Communication
description: Social and developer networks description: Social and developer networks
icon: icon:
@ -247,49 +251,49 @@ navigation:
description: Visit my XING profile description: Visit my XING profile
icon: icon:
class: bi bi-building class: bi bi-building
href: https://www.xing.com/profile/Kevin_VeenBirkenbach url: https://www.xing.com/profile/Kevin_VeenBirkenbach
subitems: [] subitems: []
- name: LinkedIn - name: LinkedIn
description: Connect on LinkedIn description: Connect on LinkedIn
icon: icon:
class: bi bi-linkedin class: bi bi-linkedin
href: https://www.linkedin.com/in/kevinveenbirkenbach url: https://www.linkedin.com/in/kevinveenbirkenbach
subitems: [] subitems: []
- name: Sports - name: Sports
description: My sport activities description: My sport activities
icon: icon:
class: fa-solid fa-running class: fa-solid fa-running
href: url:
subitems: subitems:
- name: Garmin - name: Garmin
description: My Garmin activities description: My Garmin activities
icon: icon:
class: fa-solid fa-person-running class: fa-solid fa-person-running
href: https://s.veen.world/garmin url: https://s.veen.world/garmin
subitems: [] subitems: []
- name: Eversports - name: Eversports
description: My Eversports sessions description: My Eversports sessions
icon: icon:
class: fa-solid fa-dumbbell class: fa-solid fa-dumbbell
href: https://s.veen.world/eversports url: https://s.veen.world/eversports
subitems: [] subitems: []
- name: Duolingo - name: Duolingo
description: Learn with me on Duolingo description: Learn with me on Duolingo
icon: icon:
class: fa-solid fa-language class: fa-solid fa-language
href: https://www.duolingo.com/profile/kevinbirkenbach url: https://www.duolingo.com/profile/kevinbirkenbach
subitems: [] subitems: []
- name: Spotify - name: Spotify
description: Listen to my playlists description: Listen to my playlists
icon: icon:
class: fa-brands fa-spotify class: fa-brands fa-spotify
href: https://open.spotify.com/user/31vebfzbjf3p7oualis76qfpr5ty url: https://open.spotify.com/user/31vebfzbjf3p7oualis76qfpr5ty
subitems: [] subitems: []
- name: Patreon - name: Patreon
description: Support me on Patreon description: Support me on Patreon
icon: icon:
class: fa-brands fa-patreon class: fa-brands fa-patreon
href: https://patreon.com/kevinveenbirkenbach url: https://patreon.com/kevinveenbirkenbach
subitems: [] subitems: []
- name: Community - name: Community
description: My presence in the Fediverse description: My presence in the Fediverse
@ -300,123 +304,123 @@ navigation:
description: Join the discussion description: Join the discussion
icon: icon:
class: fa-brands fa-discourse class: fa-brands fa-discourse
href: https://forum.veen.world/u/kevinveenbirkenbach url: https://forum.veen.world/u/kevinveenbirkenbach
subitems: [] subitems: []
- name: Newsletter - name: Newsletter
description: Subscribe to my newsletter description: Subscribe to my newsletter
icon: icon:
class: fa-solid fa-envelope-open-text class: fa-solid fa-envelope-open-text
href: https://newsletter.veen.world/subscription/form url: https://newsletter.veen.world/subscription/form
subitems: [] subitems: []
- name: Work Hub - name: Work Hub
description: Curated collection of self hosted tools for work, organization, and description: Curated collection of self hosted tools for work, organization, and
learning. learning.
icon: icon:
class: fa-solid fa-toolbox class: fa-solid fa-toolbox
href: url:
subitems: subitems:
- name: Open Project - name: Open Project
description: Explore my projects description: Explore my projects
icon: icon:
class: fa-solid fa-chart-line class: fa-solid fa-chart-line
href: https://project.veen.world/ url: https://project.veen.world/
subitems: [] subitems: []
- name: Taiga - name: Taiga
description: View my Kanban board description: View my Kanban board
icon: icon:
class: bi bi-clipboard2-check-fill class: bi bi-clipboard2-check-fill
href: https://kanban.veen.world/ url: https://kanban.veen.world/
subitems: [] subitems: []
- name: Matomo - name: Matomo
description: Analyze with Matomo description: Analyze with Matomo
icon: icon:
class: fa-solid fa-chart-simple class: fa-solid fa-chart-simple
href: https://matomo.veen.world/ url: https://matomo.veen.world/
subitems: [] subitems: []
- name: Baserow - name: Baserow
description: Organize with Baserow description: Organize with Baserow
icon: icon:
class: fa-solid fa-table class: fa-solid fa-table
href: https://baserow.veen.world/ url: https://baserow.veen.world/
subitems: [] subitems: []
- name: Elements - name: Elements
description: Chat with me description: Chat with me
icon: icon:
class: fa-solid fa-comment class: fa-solid fa-comment
href: https://element.veen.world/ url: https://element.veen.world/
subitems: [] subitems: []
- name: Big Blue Button - name: Big Blue Button
description: Join live events description: Join live events
icon: icon:
class: fa-solid fa-video class: fa-solid fa-video
href: https://meet.veen.world/ url: https://meet.veen.world/
subitems: [] subitems: []
- name: Mailu - name: Mailu
description: Send me a mail description: Send me a mail
icon: icon:
class: fa-solid fa-envelope class: fa-solid fa-envelope
href: https://mail.veen.world/ url: https://mail.veen.world/
subitems: [] subitems: []
- name: Moodel - name: Moodel
description: Learn with my academy description: Learn with my academy
icon: icon:
class: fa-solid fa-graduation-cap class: fa-solid fa-graduation-cap
href: https://academy.veen.world/ url: https://academy.veen.world/
subitems: [] subitems: []
- name: Yourls - name: Yourls
description: Find my curated links description: Find my curated links
icon: icon:
class: bi bi-link class: bi bi-link
href: https://s.veen.world/admin/ url: https://s.veen.world/admin/
subitems: [] subitems: []
- name: Nextcloud - name: Nextcloud
description: Access my cloud storage description: Access my cloud storage
icon: icon:
class: fa-solid fa-cloud class: fa-solid fa-cloud
href: https://cloud.veen.world/ url: https://cloud.veen.world/
subitems: [] subitems: []
- name: Logbooks - name: Logbooks
description: My activity logs description: My activity logs
icon: icon:
class: fa-solid fa-book class: fa-solid fa-book
href: url:
subitems: subitems:
- name: Skydiver - name: Skydiver
description: View my skydiving logs description: View my skydiving logs
icon: icon:
class: fa-solid fa-parachute-box class: fa-solid fa-parachute-box
href: https://s.veen.world/skydiverlog url: https://s.veen.world/skydiverlog
subitems: [] subitems: []
- name: Skipper - name: Skipper
description: See my sailing records description: See my sailing records
icon: icon:
class: fa-solid fa-sailboat class: fa-solid fa-sailboat
href: https://s.veen.world/meilenbuch url: https://s.veen.world/meilenbuch
subitems: [] subitems: []
- name: Diver - name: Diver
description: Check my diving logs description: Check my diving logs
icon: icon:
class: fa-solid fa-fish class: fa-solid fa-fish
href: https://s.veen.world/diverlog url: https://s.veen.world/diverlog
subitems: [] subitems: []
- name: Pilot - name: Pilot
description: Review my flight logs description: Review my flight logs
icon: icon:
class: fa-solid fa-plane class: fa-solid fa-plane
href: https://s.veen.world/pilotlog url: https://s.veen.world/pilotlog
subitems: [] subitems: []
- name: Nature - name: Nature
description: Explore my nature logs description: Explore my nature logs
icon: icon:
class: fa-solid fa-tree class: fa-solid fa-tree
href: https://s.veen.world/naturejournal url: https://s.veen.world/naturejournal
- name: Vita - name: Vita
description: View my CV and professional background description: View my CV and professional background
icon: icon:
class: fa-solid fa-file-lines class: fa-solid fa-file-lines
href: https://s.veen.world/lebenslauf url: https://s.veen.world/lebenslauf
subitems: [] subitems: []
- name: Imprint - name: Imprint
icon: icon:
class: fa-solid fa-scale-balanced class: fa-solid fa-scale-balanced
href: https://s.veen.world/imprint url: https://s.veen.world/imprint

View File

@ -2,7 +2,7 @@ function openDynamicPopup(subitem) {
// Set modal title and content // Set modal title and content
document.getElementById('dynamicModalLabel').innerText = subitem.description; document.getElementById('dynamicModalLabel').innerText = subitem.description;
const modalContent = document.getElementById('dynamicModalContent'); const modalContent = document.getElementById('dynamicModalContent');
modalContent.value = subitem.address; modalContent.value = subitem.identifier;
// Add copy functionality // Add copy functionality
document.getElementById('dynamicCopyButton').addEventListener('click', function () { document.getElementById('dynamicCopyButton').addEventListener('click', function () {

View File

@ -38,7 +38,7 @@
</div> </div>
<!-- Include modal --> <!-- Include modal -->
{% include "moduls/modal.html.j2" %} {% include "moduls/modal.html.j2" %}
<script src="{{ url_for('static', filename='js/dynamic-modal.js') }}"></script> <script src="{{ url_for('static', filename='js/modal.js') }}"></script>
<script src="{{ url_for('static', filename='js/submenus.js') }}"></script> <script src="{{ url_for('static', filename='js/submenus.js') }}"></script>
<script src="{{ url_for('static', filename='js/tooltip.js') }}"></script> <script src="{{ url_for('static', filename='js/tooltip.js') }}"></script>
</body> </body>

View File

@ -10,7 +10,7 @@
{{ render_subitems(subitem.subitems) }} {{ render_subitems(subitem.subitems) }}
</ul> </ul>
</li> </li>
{% elif subitem.popup %} {% elif subitem.identifier %}
<li> <li>
<a class="dropdown-item" onclick='openDynamicPopup({{ subitem|tojson|safe }})' data-bs-toggle="tooltip" title="{{ subitem.description }}"> <a class="dropdown-item" onclick='openDynamicPopup({{ subitem|tojson|safe }})' data-bs-toggle="tooltip" title="{{ subitem.description }}">
<i class="{{ subitem.icon.class }}"></i> {{ subitem.name }} <i class="{{ subitem.icon.class }}"></i> {{ subitem.name }}
@ -18,7 +18,7 @@
</li> </li>
{% else %} {% else %}
<li> <li>
<a class="dropdown-item" href="{{ subitem.href }}" target="{{ subitem.target|default('_blank') }}" data-bs-toggle="tooltip" title="{{ subitem.description }}"> <a class="dropdown-item" href="{{ subitem.url }}" target="{{ subitem.target|default('_blank') }}" data-bs-toggle="tooltip" title="{{ subitem.description }}">
{% if subitem.icon is defined and subitem.icon.class is defined %} {% if subitem.icon is defined and subitem.icon.class is defined %}
<i class="{{ subitem.icon.class }}"></i> {{ subitem.name }} <i class="{{ subitem.icon.class }}"></i> {{ subitem.name }}
{% else %} {% else %}
@ -42,10 +42,10 @@
<div class="collapse navbar-collapse" id="navbarNav{{menu_type}}"> <div class="collapse navbar-collapse" id="navbarNav{{menu_type}}">
<ul class="navbar-nav {% if menu_type == 'header' %}ms-auto{% endif %}"> <ul class="navbar-nav {% if menu_type == 'header' %}ms-auto{% endif %}">
{% for item in navigation[menu_type] %} {% for item in navigation[menu_type] %}
{% if item.href %} {% if item.url %}
<!-- Single Item --> <!-- Single Item -->
<li class="nav-item"> <li class="nav-item">
<a class="nav-link" href="{{ item.href }}" target="{{ item.target|default('_blank') }}" data-bs-toggle="tooltip" title="{{ item.description }}"> <a class="nav-link" href="{{ item.url }}" target="{{ item.target|default('_blank') }}" data-bs-toggle="tooltip" title="{{ item.description }}">
<i class="{{ item.icon.class }}"></i> {{ item.name }} <i class="{{ item.icon.class }}"></i> {{ item.name }}
</a> </a>
</li> </li>