Optimized for portfolio, presentation and docs

This commit is contained in:
2025-04-10 17:49:47 +02:00
parent 33a8d8b579
commit 2183038240
32 changed files with 346 additions and 155 deletions

View File

@@ -1,4 +1,4 @@
# Portfolio 🚀
# Portfolio
## Description

View File

@@ -10,11 +10,11 @@ class LookupModule(LookupBase):
Group the given cards into categorized and uncategorized lists
based on the tags from menu_categories.
"""
if len(terms) < 1:
raise AnsibleError("Missing required argument: cards")
if len(terms) < 2:
raise AnsibleError("Missing required arguments")
cards = terms[0]
menu_categories = variables.get("menu_categories", {})
menu_categories = terms[1]
categorized = {}
uncategorized = []

View File

@@ -21,22 +21,26 @@
become: false
register: config_file
- name: Load menu categories
include_vars:
file: "menu_categories.yml"
- name: Load docker cards
set_fact:
portfolio_cards: "{{ lookup('docker_cards', 'roles') }}"
- name: Group docker cards
set_fact:
portfolio_menu_data: "{{ lookup('docker_cards_grouped', portfolio_cards) }}"
portfolio_menu_data: "{{ lookup('docker_cards_grouped', portfolio_cards, portfolio_menu_categories) }}"
- name: Debug portfolio data
debug:
msg:
cards: "{{ portfolio_cards }}"
menu_data: "{{ portfolio_menu_data }}"
portfolio_cards: "{{ portfolio_cards }}"
portfolio_menu_categories: "{{ portfolio_menu_categories}}"
portfolio_menu_data: "{{ portfolio_menu_data }}"
when: enable_debug | bool
- name: Copy host-specific config.yaml if it exists
template:
src: "{{ config_inventory_path }}"

View File

@@ -163,68 +163,4 @@ navigation:
{% endif %}
footer:
children:
- link: accounts
- name: Solution Hub
description: Curated collection of self hosted tools
icon:
class: fa-solid fa-network-wired
children:
{% include 'footer_menu.yaml.j2' %}
- name: Support Us
description: "Discover all the ways you can support our work."
icon:
class: fa-solid fa-hands-helping
children:
- name: Buy me a Coffee
description: "Support our work with a coffee every cup helps!"
icon:
class: fa-solid fa-mug-hot
url: https://s.veen.world/buymeacoffee
- name: Patreon
description: "Become a member and support me monthly with exclusive content."
icon:
class: fa-brands fa-patreon
url: https://s.veen.world/patreon
- name: PayPal
description: "Donate to our open source projects with a one-time or monthly PayPal contribution."
icon:
class: fa-brands fa-paypal
url: https://s.veen.world/paypaldonate
- name: GitHub Sponsors
description: "Directly support our projects through GitHub Sponsors."
icon:
class: fa-brands fa-github
url: https://s.veen.world/githubsponsors
{% if "sphinx" in group_names %}
- name: Documentation
description: Access our comprehensive documentation and support resources to help you get the most out of the software.
icon:
class: fas fa-book
url: https://{{domains.sphinx}}
iframe: {{ applications | get_landingpage_iframe_enabled('sphinx') }}
{% endif %}
{% if "presentation" in group_names %}
- name: Slides
description: Access our comprehensive documentation and support resources to help you get the most out of the software.
icon:
class: fas fa-book
url: https://{{domains.sphinx}}
iframe: {{ applications | get_landingpage_iframe_enabled('sphinx') }}
{% endif %}
- name: Imprint
description: Check out the imprint information
icon:
class: fa-solid fa-scale-balanced
url: "{{service_provider.legal.imprint}}"
iframe: true
{% include 'footer_menu.yaml.j2' %}

View File

@@ -1,52 +1,136 @@
{# Render all categories #}
{% for category, apps in portfolio_menu_data.categorized %}
- name: {{ category }}
description: {{ category_data.menu_categories[category].description }}
footer:
children:
- link: accounts
{% if (portfolio_menu_data.categorized is mapping and portfolio_menu_data.categorized | length > 0)
or (portfolio_menu_data.uncategorized is sequence and portfolio_menu_data.uncategorized | length > 0) %}
- name: Solution Hub
description: Curated collection of self hosted tools
icon:
class: {{ category_data.menu_categories[category].icon }}
class: fa-solid fa-network-wired
children:
{% for app in apps %}
{# Render all categories #}
{% for category, apps in portfolio_menu_data.categorized.items() %}
- name: {{ category }}
description: {{ portfolio_menu_categories[category].description }}
icon:
class: {{ portfolio_menu_categories[category].icon }}
children:
{% for app in apps %}
- name: {{ app.title }}
description: {{ app.text }}
icon: {{ app.icon }}
url: {{ app.url }}
iframe: {{ app.iframe }}
{% if app.title == 'Keycloak' %}
children:
- name: Administration
description: Access the central admin console
icon:
class: fa-solid fa-shield-halved
url: https://{{domains.keycloak}}/admin
iframe: {{ applications | get_landingpage_iframe_enabled('keycloak') }}
- name: Profile
description: Update your personal admin settings
icon:
class: fa-solid fa-user-gear
url: https://{{ domains.keycloak }}/realms/{{oidc.client.id}}/account
iframe: {{ applications | get_landingpage_iframe_enabled('keycloak') }}
- name: Logout
description: End your admin session securely
icon:
class: fa-solid fa-right-from-bracket
url: https://{{ domains.keycloak }}/realms/{{oidc.client.id}}/protocol/openid-connect/logout
iframe: false
{% endif %}
{% endfor %}
{% endfor %}
{# Render Uncategorized #}
{% if portfolio_menu_data.uncategorized %}
- name: Uncategorized
description: Tools without a defined category
icon:
class: fa-solid fa-question
children:
{% for app in portfolio_menu_data.uncategorized %}
- name: {{ app.title }}
description: {{ app.text }}
icon: {{ app.icon }}
url: {{ app.url }}
iframe: {{ app.iframe }}
{% if app.title == 'Keycloak' %}
children:
- name: Administration
description: Access the central admin console
icon:
class: fa-solid fa-shield-halved
url: https://{{domains.keycloak}}/admin
iframe: {{ applications | get_landingpage_iframe_enabled('keycloak') }}
- name: Profile
description: Update your personal admin settings
icon:
class: fa-solid fa-user-gear
url: https://{{ domains.keycloak }}/realms/{{oidc.client.id}}/account
iframe: {{ applications | get_landingpage_iframe_enabled('keycloak') }}
- name: Logout
description: End your admin session securely
icon:
class: fa-solid fa-right-from-bracket
url: https://{{ domains.keycloak }}/realms/{{oidc.client.id}}/protocol/openid-connect/logout
iframe: false
{% endif %}
{% endfor %}
{% endfor %}
{# Render Uncategorized
{% if portfolio_menu_data.uncategorized %}
- name: Uncategorized
description: Tools without a defined category
{% endif %}
{% endif %}
- name: Support Us
description: "Discover all the ways you can support our work."
icon:
class: fa-solid fa-question
class: fa-solid fa-hands-helping
children:
{% for app in portfolio_menu_data.uncategorized %}
- name: {{ app.title }}
description: {{ app.text }}
icon: {{ app.icon }}
url: {{ app.url }}
iframe: {{ app.iframe }}
{% endfor %}
{% endif %} #}
- name: Buy me a Coffee
description: "Support our work with a coffee every cup helps!"
icon:
class: fa-solid fa-mug-hot
url: https://s.veen.world/buymeacoffee
- name: Patreon
description: "Become a member and support me monthly with exclusive content."
icon:
class: fa-brands fa-patreon
url: https://s.veen.world/patreon
- name: PayPal
description: "Donate to our open source projects with a one-time or monthly PayPal contribution."
icon:
class: fa-brands fa-paypal
url: https://s.veen.world/paypaldonate
- name: GitHub Sponsors
description: "Directly support our projects through GitHub Sponsors."
icon:
class: fa-brands fa-github
url: https://s.veen.world/githubsponsors
{% if "sphinx" in group_names %}
- name: Documentation
description: Access our comprehensive documentation and support resources to help you get the most out of the software.
icon:
class: fas fa-book
url: https://{{domains.sphinx}}
iframe: {{ applications | get_landingpage_iframe_enabled('sphinx') }}
{% endif %}
{% if "presentation" in group_names %}
- name: Slides
description: Access our comprehensive documentation and support resources to help you get the most out of the software.
icon:
class: fas fa-book
url: https://{{domains.sphinx}}
iframe: {{ applications | get_landingpage_iframe_enabled('sphinx') }}
{% endif %}
- name: Imprint
description: Check out the imprint information
icon:
class: fa-solid fa-scale-balanced
url: "{{service_provider.legal.imprint}}"
iframe: true

View File

@@ -1,4 +1,5 @@
menu_categories:
portfolio_menu_categories:
Community:
description: Tools to manage the community
icon: fa-solid fa-users
@@ -15,6 +16,18 @@ menu_categories:
- project
- kanban
- management
Social Media:
description: Social Media Tools
icon: fa-solid fa-share-nodes
tags:
- microblog
- blog
- video platform
- streaming platform
- music platform
- social network
- portfolio
Communication:
description: Tools for communication
@@ -24,6 +37,7 @@ menu_categories:
- communication
- video
- mail
- email
Administration:
description: Administration Tools